mirror of https://github.com/openXC7/prjxray.git
72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|
|
|
from timfuz import Benchmark, loadc_Ads_bs, index_names, load_sub, run_sub_json, instances
|
|
|
|
|
|
def gen_group(fnin, sub_json, strict=False, verbose=False):
|
|
print('Loading data')
|
|
Ads, bs = loadc_Ads_bs([fnin])
|
|
|
|
print('Sub: %u rows' % len(Ads))
|
|
iold = instances(Ads)
|
|
names_old = index_names(Ads)
|
|
run_sub_json(Ads, sub_json, strict=strict, verbose=verbose)
|
|
names = index_names(Ads)
|
|
print("Sub: %u => %u names" % (len(names_old), len(names)))
|
|
print('Sub: %u => %u instances' % (iold, instances(Ads)))
|
|
|
|
for row_ds, row_bs in zip(Ads, bs):
|
|
yield row_ds, row_bs
|
|
|
|
|
|
def run(fns_in, fnout, sub_json, strict=False, verbose=False):
|
|
with open(fnout, 'w') as fout:
|
|
fout.write('ico,fast_max fast_min slow_max slow_min,rows...\n')
|
|
for fn_in in fns_in:
|
|
for row_ds, row_bs in gen_group(fn_in, sub_json, strict=strict):
|
|
row_ico = 1
|
|
items = [str(row_ico), ' '.join([str(x) for x in row_bs])]
|
|
for k, v in sorted(row_ds.items()):
|
|
items.append('%u %s' % (v, k))
|
|
fout.write(','.join(items) + '\n')
|
|
|
|
|
|
def main():
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(
|
|
description='Substitute .csv to group correlated variables')
|
|
|
|
parser.add_argument('--verbose', action='store_true', help='')
|
|
parser.add_argument('--strict', action='store_true', help='')
|
|
parser.add_argument('--sub-csv', help='')
|
|
parser.add_argument(
|
|
'--sub-json',
|
|
required=True,
|
|
help='Group substitutions to make fully ranked')
|
|
parser.add_argument('--out', help='Output sub.json substitution result')
|
|
parser.add_argument('fns_in', nargs='+', help='timing4i.csv input files')
|
|
args = parser.parse_args()
|
|
# Store options in dict to ease passing through functions
|
|
bench = Benchmark()
|
|
|
|
fns_in = args.fns_in
|
|
if not fns_in:
|
|
fns_in = glob.glob('specimen_*/timing4i.csv')
|
|
|
|
sub_json = load_sub(args.sub_json)
|
|
|
|
try:
|
|
run(
|
|
fns_in,
|
|
args.out,
|
|
sub_json=sub_json,
|
|
strict=args.strict,
|
|
verbose=args.verbose)
|
|
finally:
|
|
print('Exiting after %s' % bench)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|