From 9b54f71f4aba12b77f94c12463a8cde57ffcd5f5 Mon Sep 17 00:00:00 2001 From: q-posev Date: Fri, 5 Mar 2021 16:50:44 +0100 Subject: [PATCH] initial generator --- src/generator.py | 76 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/generator.py diff --git a/src/generator.py b/src/generator.py new file mode 100644 index 0000000..1016b90 --- /dev/null +++ b/src/generator.py @@ -0,0 +1,76 @@ +import json + +with open('trex.json', 'r') as f: + config0 = json.load(f) + +print('Metadata I/O currently not supported') +# TODO, for now remove metadata-related stuff +del config0['metadata'] + +config = {} +for k,v in config0.items(): + if k == 'nucleus' or k == 'electron': + config[k] = v + +print(config) + +groups = [group for group in config.keys()] + +dim_variables = {} +dim_list = [] +for k1,v1 in config.items(): + for v2 in v1.values(): + for dim in v2[1]: + if not dim.isdigit(): + tmp = dim.replace('.','_') + dim_variables[tmp] = 0 + if dim not in dim_list: + dim_list.append(dim) + +datasets = {} +numbers = {} +for k1,v1 in config.items(): + for k2,v2 in v1.items(): + if len(v2[1]) > 0: + datasets[f'{k1}_{k2}'] = v2 + else: + var_name = f'{k1}_{k2}' + if var_name not in dim_variables.keys(): + numbers[var_name] = v2[0] + +print('Strings I/O currently not supported') +# TODO, for now remove char-related stuff +datasets_nostr = {} +for k,v in datasets.items(): + if 'char' not in v[0]: + datasets_nostr[k] = v + +#print(datasets_nostr) +print(numbers) + +#print(attributes) +#print(groups) + +file_list = ['temp_trexio_hdf5.c'] +path = 'src/templates' +for fname in file_list: + fname_new = fname.replace('temp_','') + with open(f'{path}/{fname}', 'r') as f_in: + with open(f'{path}/{fname_new}', 'w') as f_out: + isfunc = False + for line in f_in: + if '$group$' in line and 'hdf5' in line: + # probably a good function criterion + isfunc = True + + + if '$group$' in line or '$GROUP$' in line: + for group_name in config.keys(): + templine = line.replace('$group$', f'{group_name}') + newline = templine.replace('$GROUP$', f'{group_name.upper()}') + + f_out.write(newline) + else: + f_out.write(line) + +