aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/analyze_path.py
diff options
context:
space:
mode:
authorAaron LI <aaronly.me@outlook.com>2017-02-06 11:12:00 +0800
committerAaron LI <aaronly.me@outlook.com>2017-02-06 11:12:00 +0800
commitde622e5e739d68dbf10691c66f65ef08425de8f1 (patch)
treea93d99fd0576f4549dae443f00e96d47d7957e0a /scripts/analyze_path.py
parent8f87e802197c8f6240002c97873da0a43c7995dc (diff)
downloadchandra-acis-analysis-de622e5e739d68dbf10691c66f65ef08425de8f1.tar.bz2
Replace analyze_path.sh with analyze_path.py
The only support data directory format is "<name>_oi<obsid>".
Diffstat (limited to 'scripts/analyze_path.py')
-rwxr-xr-xscripts/analyze_path.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/scripts/analyze_path.py b/scripts/analyze_path.py
new file mode 100755
index 0000000..06cfcab
--- /dev/null
+++ b/scripts/analyze_path.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python3
+#
+# Copyright (c) 2017 Weitian LI <liweitianux@live.com>
+# MIT license
+#
+# Weitian LI
+# 2017-02-06
+
+"""
+Extract the object name and observation ID from the directory path.
+
+The root directory of the object data has the format:
+ <name>_oi<obsid>
+"""
+
+import os
+import argparse
+import re
+
+
+RE_DATA_DIR = re.compile(r"^.*/(?P<name>[^/_]+)_oi(?P<obsid>\d+).*$")
+
+
+def get_name(path):
+ """
+ Extract the object name from the directory path.
+
+ Parameters
+ ----------
+ path : str
+ Path to the data directory
+
+ Returns
+ -------
+ objname : str
+ The name part of the data directory
+ """
+ return RE_DATA_DIR.match(path).group("name")
+
+
+def get_obsid(path):
+ """
+ Extract the observation ID from the directory path.
+
+ Parameters
+ ----------
+ path : str
+ Path to the data directory
+
+ Returns
+ -------
+ obsid : int
+ The observation ID of the data
+ """
+ return int(RE_DATA_DIR.match(path).group("obsid"))
+
+
+def main():
+ parser = argparse.ArgumentParser(
+ description="Extract object name and ObsID from data directory")
+ parser.add_argument("-b", "--brief", dest="brief",
+ action="store_true", help="Be brief")
+ parser.add_argument("-n", "--name", dest="name",
+ action="store_true", help="Only get object name")
+ parser.add_argument("-i", "--obsid", dest="obsid",
+ action="store_true", help="Only get observation ID")
+ parser.add_argument("path", nargs="?", default=os.getcwd(),
+ help="Path to the data directory " +
+ "(default: current working directory)")
+ args = parser.parse_args()
+
+ b_get_name = False if args.obsid else True
+ b_get_obsid = False if args.name else True
+
+ if b_get_name:
+ if not args.brief:
+ print("Name:", end=" ")
+ print(get_name(args.path))
+ if b_get_obsid:
+ if not args.brief:
+ print("ObsID:", end=" ")
+ print(get_obsid(args.path))
+
+
+if __name__ == "__main__":
+ main()