aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xscripts/chandra_acis.py35
1 files changed, 31 insertions, 4 deletions
diff --git a/scripts/chandra_acis.py b/scripts/chandra_acis.py
index 2dcc62e..6170b40 100755
--- a/scripts/chandra_acis.py
+++ b/scripts/chandra_acis.py
@@ -8,6 +8,8 @@
"""
Determine the Chandra ACIS type for the given observation.
+
+TODO: move these methods to module `acis.py`
"""
import argparse
@@ -17,15 +19,15 @@ import re
from setup_pfiles import setup_pfiles
-def get_acis_type(infile):
+def get_acis_type(filepath):
"""
Determine the Chandra ACIS type (``I`` or ``S``) according the
active ACIS chips.
Parameters
----------
- infile : str
- Filename of the FITS file
+ filepath : str
+ Path to the input FITS file
Returns
-------
@@ -34,7 +36,7 @@ def get_acis_type(infile):
"""
subprocess.check_call(["punlearn", "dmkeypar"])
detnam = subprocess.check_output([
- "dmkeypar", "infile=%s" % infile, "keyword=DETNAM", "echo=yes"
+ "dmkeypar", "infile=%s" % filepath, "keyword=DETNAM", "echo=yes"
]).decode("utf-8").strip()
if re.match(r"^ACIS-0123", detnam):
return "I"
@@ -44,6 +46,31 @@ def get_acis_type(infile):
raise ValueError("unknown chip combination: %s" % detnam)
+def get_chips(filepath, sep=":"):
+ """
+ Get the corresponding chips of interest according to the active ACIS type.
+
+ Parameters
+ ----------
+ filepath : str
+ Path to the input FITS file
+ sep : str, optional
+ Separator to join the chip ranges, e.g., 0:3, 0-3
+
+ Returns
+ -------
+ chips : str
+ ``0:3`` if ACIS-I, ``7`` if ACIS-S, otherwise, ``ValueError`` raised.
+ """
+ acis_type = get_acis_type(filepath)
+ if acis_type == "I":
+ return sep.join(["0", "3"])
+ elif acis_type == "S":
+ return "7"
+ else:
+ raise ValueError("unknown ACIS type")
+
+
def main():
parser = argparse.ArgumentParser(description="Determine Chandra ACIS type")
parser.add_argument("-b", "--brief", dest="brief",