def make_table_yaml(): """Make simulation datatable from meta.yaml's. """ return pipe( get_yaml_data(), lambda data: render_yaml(table_yaml(), data=data), yaml.load, write_yaml( filepath=os.path.join(get_path(), '../_data/data_table.yaml')))
def get_yaml_data(): """Read the meta.yaml files Returns: a dictionary with keys as the file paths and values as dictionaries of YAML data """ return pipe(os.path.join(get_path(), 'simulations/*/meta.y*ml'), glob.glob, sorted, map(lambda path_: (path_, read_yaml(path_))))
def code_upload_yaml_path(): """Path to the upload chart j2. """ return os.path.join(get_path(), "charts", "code_upload.yaml.j2")
def table_yaml(): """Path to table YAML. """ return os.path.join(get_path(), "table.yaml.j2")
json_path: the path to write to title: the title of the chart Returns: the chart JSON """ return pipe( gfunc, groupby_count, lambda data: list(data.items()), lambda data: sorted(data, key=lambda item: (-item[1], item[0])), lambda data: j2_to_json(yaml_path, json_path, data=data, title=title), ) if __name__ == "__main__": make_table_yaml() make_upload_chart( lambda item: item["metadata"]["implementation"]["name"], code_upload_yaml_path(), os.path.join(get_path(), "../_data/charts/code_upload.json"), "Uploads per Code", ) make_upload_chart( lambda item: item["benchmark"]["id"], code_upload_yaml_path(), os.path.join(get_path(), "../_data/charts/benchmark_upload.json"), "Uploads per Benchmark", )
title: the title of the chart Returns: the chart JSON """ return pipe( gfunc, groupby_count, lambda data: list(data.items()), lambda data: sorted(data, key=lambda item: (-item[1], item[0])), lambda data: j2_to_json(yaml_path, json_path, data=data, title=title) ) if __name__ == "__main__": make_table_yaml() make_upload_chart(lambda item: item['metadata']['software']['name'], code_upload_yaml_path(), os.path.join(get_path(), '../data/charts/code_upload.json'), 'Uploads per Code') make_upload_chart(lambda item: item['benchmark']['id'], code_upload_yaml_path(), os.path.join(get_path(), '../data/charts/benchmark_upload.json'), 'Uploads per Benchmark')