ZH:matrix: script to collect figures as symlinks

This commit is contained in:
Eric-Teunis de Boone 2023-02-13 10:36:02 +01:00
parent bea540a722
commit 3fdd118073
2 changed files with 67 additions and 0 deletions

View file

@ -0,0 +1,67 @@
#!/usr/bin/env python3
import os
import re
import tempfile
def parse_env_file(fname):
envs = {}
env_reg = re.compile('^(?:\s*export)?\s*(.*)\s*=\s*(.*)\s*$')
with open(fname, 'r') as f:
for line in f:
if '=' not in line:
continue
m = env_reg.match(line)
envs[m.group(1)] = m.group(2)
return envs
def mutilate_figure_name(fig_fname, envs):
return fig_fname
if __name__ == "__main__":
from argparse import ArgumentParser
parser = ArgumentParser()
#parser.add_argument('-f', '--figures', nargs='*')
parser.add_argument("-d", "--directories", nargs='*')
parser.add_argument('out_dir', default='./figures', type=str)
args = parser.parse_args()
os.makedirs(args.out_dir, exist_ok=True)
#with open(args.out_file, 'w') as fp:
if True:
for d in args.directories:
d = os.path.realpath(d)
fig_dir = os.path.join(d, 'figures')
env_fname = os.path.join(d, 'env.sh')
if not os.path.exists(fig_dir):
print(f"Cannot find {fig_dir}")
continue
## parse properties from env.sh
#envs = parse_env_file(env_fname)
#print(envs, fig_dir)
for f in os.listdir(fig_dir):
fname, ext = os.path.splitext(f)
dname = os.path.basename(d)
if ext not in ['.pdf', '.png']:
continue
link_name = fname + "_" + dname + ext
target = os.path.realpath(os.path.join(fig_dir, f))
tmpLink = tempfile.mktemp(dir=args.out_dir)
os.symlink(target, tmpLink)
os.rename(tmpLink, os.path.join(args.out_dir, link_name))

View file

@ -0,0 +1,32 @@
#!/usr/bin/env python3
import os
import os.path as path
from itertools import product
baselines = [ '', 72 ]
noise_sigmas = [ 0, '1e4' ]
clock_devs = [0, 20]
trace_lengths = [ 4096 ]#, 16384 ]
for options in product(baselines, clock_devs, noise_sigmas, trace_lengths):
baseline, clk_dev, noise, trace = options
dirname = f"matrix_c{clk_dev}_b{baseline}_N{trace}_noise{noise}"
print(dirname)
# Make directory
if path.exists(dirname):
print(f"{dirname} already exists! continuing..")
os.makedirs(dirname, exist_ok=True)
# Setup config.mk
with open(path.join(dirname, 'env.sh'), 'w') as fp:
template = f"""
export CLK_DEV={clk_dev}
export REF_ANTS={baseline}
export NOISE_SIGMA={noise}
export TRACE_N={trace}
"""
fp.write(template)