def build_df()

in extra/dashboard/parse_results.py [0:0]


def build_df(model: str, data_files: dict[str, str]) -> pd.DataFrame:
    df = pd.DataFrame()
    # Load the results
    for key, filename in data_files.items():
        with open(filename, 'r') as f:
            data = json.load(f)
            if data['config']['meta'] is None:
                data['config']['meta'] = {}
            for result in data['results']:
                entry = pd.json_normalize(result).to_dict(orient='records')[0]
                if 'engine' in data['config']['meta']:
                    entry['engine'] = data['config']['meta']['engine']
                if 'tp' in data['config']['meta']:
                    entry['tp'] = data['config']['meta']['tp']
                if 'version' in data['config']['meta']:
                    entry['version'] = data['config']['meta']['version']
                if 'device' in data['config']['meta']:
                    entry['device'] = data['config']['meta']['device']
                entry['model'] = data['config']['model_name']
                entry['run_id'] = data['config']['run_id']
                df_tmp = pd.DataFrame(entry, index=[0])
                # rename columns that start with 'config.'
                df_tmp = df_tmp.rename(columns={c: c.split('config.')[-1] for c in df_tmp.columns})
                # replace . with _ in column names
                df_tmp.columns = [c.replace('.', '_') for c in df_tmp.columns]

                df = pd.concat([df, df_tmp])
    return df