diff options
author | Aaron LI <aaronly.me@outlook.com> | 2017-05-25 14:27:24 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@outlook.com> | 2017-05-25 14:27:24 +0800 |
commit | edab67684381c53ddd74748f541dde56f825dbe0 (patch) | |
tree | c5be6a3ded4d10ea075b8c8ab13456840660f503 | |
parent | 18e6b1f1b9a28688c90f101d0c79b61fcf996aa5 (diff) | |
download | chandra-acis-analysis-edab67684381c53ddd74748f541dde56f825dbe0.tar.bz2 |
Add bin/update_manifest.py with support of "repro" products
TODO: support updating other products to manifest.yaml
-rw-r--r-- | acispy/manifest.py | 6 | ||||
-rwxr-xr-x | bin/update_manifest.py | 68 |
2 files changed, 69 insertions, 5 deletions
diff --git a/acispy/manifest.py b/acispy/manifest.py index dc83c76..cce9dd1 100644 --- a/acispy/manifest.py +++ b/acispy/manifest.py @@ -1,8 +1,5 @@ -# Copyright (c) 2017 Weitian LI <liweitianux@live.com> +# Copyright (c) 2017 Weitian LI <weitian@aaronly.me> # MIT license -# -# Weitian LI -# 2017-02-11 """ Manage the observation manifest in YAML format. @@ -17,7 +14,6 @@ and other structures in the YAML file. """ import os -import sys import argparse import logging from collections import OrderedDict diff --git a/bin/update_manifest.py b/bin/update_manifest.py new file mode 100755 index 0000000..ca1cf27 --- /dev/null +++ b/bin/update_manifest.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2017 Weitian LI <weitian@aaronly.me> +# MIT license + +""" +Update the manifest.yaml with generated products. +""" + +import os +import argparse +import logging +from glob import glob +from collections import OrderedDict + +from _context import acispy +from acispy.manifest import get_manifest + + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +def get_path(pglob, pdir=None): + if pdir is not None: + pglob = os.path.join(pdir, pglob) + p = glob(pglob) + if len(p) == 0: + return None + elif len(p) == 1: + return p[0] + else: + return p + + +def add_repro(reprodir, manifest): + """ + Add the generated products by ``chandra_repro`` to the manifest. + """ + logging.info("Adding repro products from: {0}".format(reprodir)) + keyglobs = OrderedDict([ + ("evt2", "acisf*_repro_evt2.fits"), + ("bpix", "acisf*_repro_bpix1.fits"), + ("fov", "acisf*_repro_fov1.fits"), + ("asol", "pcadf*_asol?.fits"), # maybe multiple + ("pbk", "acisf*_pbk0.fits"), + ("msk", "acisf*_msk1.fits"), + ]) + for k, g in keyglobs.items(): + p = get_path(g, pdir=reprodir) + manifest.setpath(k, p) + + +def main(): + parser = argparse.ArgumentParser( + description="Update manifest.yaml with generated products") + parser.add_argument("-r", "--repro", dest="reprodir", default=None, + help="path to the repro directory; add the " + + "reprocessed products to manifest if specified") + args = parser.parse_args() + manifest = get_manifest() + + if args.reprodir: + add_repro(reprodir=args.reprodir, manifest=manifest) + + +if __name__ == "__main__": + main() |