1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import argparse
- import logging
- import os
- import sys
- from .. import io
- LOG = logging.getLogger()
- def run(gathered_fn, scattered_fn):
- thatdir = os.path.dirname(scattered_fn)
- thisdir = os.path.dirname(gathered_fn)
- scattered = io.deserialize(scattered_fn)
- gathered = dict()
- for job in scattered:
- job_output = dict()
- #job_output['wildcards'] = dict()
- fn_dict = dict(job['output'])
- for key in list(fn_dict.keys()):
- # Fix path to be relative to gathered_fn.
- fn = fn_dict[key]
- if not os.path.isabs(fn):
- thatfn = os.path.join(thatdir, fn)
- else:
- thatfn = fn
- thisfn = os.path.relpath(thatfn, thisdir)
- fn_dict[key] = thisfn
- job_output['fns'] = fn_dict
- wildcards = job['wildcards']
- wildkey = ','.join('{}={}'.format(k,v) for k,v in sorted(wildcards.items()))
- gathered[wildkey] = job_output
- io.serialize(gathered_fn, gathered)
- class HelpF(argparse.RawTextHelpFormatter, argparse.ArgumentDefaultsHelpFormatter):
- pass
- def parse_args(argv):
- description = 'Gather generic filenames into ... something. For now, just serialize.'
- epilog = 'We expect the scattered file to have a specific format.'
- parser = argparse.ArgumentParser(
- description=description,
- epilog=epilog,
- formatter_class=HelpF,
- )
- parser.add_argument(
- '--scattered-fn',
- help='Input: result of scattering',
- )
- parser.add_argument(
- '--gathered-fn',
- help='Output: serialized something-or-other',
- )
- args = parser.parse_args(argv[1:])
- return args
- def main(argv=sys.argv):
- args = parse_args(argv)
- logging.basicConfig(level=logging.INFO)
- run(**vars(args))
- if __name__ == '__main__': # pragma: no cover
- main()
|