import argparse import pandas as pd IOU_THRESHOLD = 0.75 USE_METRICS = ['mAP', 'Precision','Recall','F1-Score'] NEW_METRICS = ['mAP\%', 'P\%','R\%','F1\%'] def process_df(df): df = df[df['IoU'] >= IOU_THRESHOLD] df = df[USE_METRICS] df[USE_METRICS] = df[USE_METRICS] * 100 df.columns = NEW_METRICS df = df.transpose() df.columns = [round(x/100, 2) for x in range(int(IOU_THRESHOLD*100), 100, 5)] return df def my_format(x): if x < 0.005: return r'$\approx$0.0' return f'{x:.2f}' def main(args): df_itb_app = pd.read_csv(args.itb_app) df_sem_app = pd.read_csv(args.sem_app) df_itb_genre = pd.read_csv(args.itb_genre) df_sem_genre = pd.read_csv(args.sem_genre) df_itb_app = process_df(df_itb_app) df_sem_app = process_df(df_sem_app) df_itb_genre = process_df(df_itb_genre) df_sem_genre = process_df(df_sem_genre) df = pd.concat([df_itb_app, df_itb_genre, df_sem_app, df_sem_genre], axis=1) df.to_csv(args.output.replace('.tex', '.csv')) df.insert(0, column = 'metric', value = NEW_METRICS) df.insert(0, '', '') df.to_latex(args.output, float_format=my_format, index=False) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-ia', '--itb_app', type=str, required=True) parser.add_argument('-sa', '--sem_app', type=str, required=True) parser.add_argument('-ig', '--itb_genre', type=str, required=True) parser.add_argument('-sg', '--sem_genre', type=str, required=True) parser.add_argument('-o', '--output', type=str, required=True) args = parser.parse_args() main(args)