Source code for engine.load_modes

import os
import json
import numpy as np


[docs]class SetDefaultModes(): """Class to load default instrument mode dicts This class contains functionality for loading observing modes for exoplanet observations This is NOT a complete set of ALL possibleobserving modes. Instead, it offers a starting point for choosing one instrument specification. There is one function for each instrument. For example, It sets slitless mode for MIRI LRS. If users are interested in other specific observation modes they should load in the dictionary and then edit individual keys. Included modes are: - "MIRI LRS" - "NIRISS SOSS" - "NIRSpec G140M" - "NIRSpec G140H" - "NIRSpec G235M" - "NIRSpec G235H" - "NIRSpec G395M" - "NIRSpec G395H" - "NIRSpec Prism" - "NIRCam F322W2" - "NIRCam F444W" - "WFC3 G102" - "WFC3 G141" Parameters ---------- inst : str Allowable strings listed above """ def __init__(self, inst): self.instrument = inst[0:inst.find(' ')].lower() self.config = inst[inst.find(' ')+1:len(inst)].lower()
[docs] def pick(self): """Points to specific instrument based on key choice """ try: return getattr(self, self.instrument)() except: print("INVALID INSTRUMENT NAME") return
[docs] def wfc3(self): """Handles WFC3 template """ #wfc3_input with open(os.path.join(os.path.dirname(__file__), "reference", "wfc3_input.json")) as data_file: pandeia_data = json.load(data_file) pandeia_data["configuration"]["instrument"]["disperser"] = self.config return pandeia_data
[docs] def niriss(self): """Handles NIRISS template """ #need to add in functionality for two orders, right now you only have option to do sub80 with open(os.path.join(os.path.dirname(__file__), "reference", "niriss_input.json")) as data_file: pandeia_data = json.load(data_file) return pandeia_data
[docs] def nirspec(self): """Handles NIRSpec template """ filters = {'g140m':'f100lp','g140h':'f100lp', 'g235m':'f170lp','g235h':'f170lp', 'g395m':'f290lp','g395h':'f290lp', 'prism': 'clear' } with open(os.path.join(os.path.dirname(__file__), "reference", "nirspec_input.json")) as data_file: pandeia_data = json.load(data_file) pandeia_data["configuration"]["instrument"]["disperser"] = self.config pandeia_data["configuration"]["instrument"]["filter"] = filters[self.config] if self.config == 'prism': pandeia_data["configuration"]["detector"]["subarray"] = 'sub512' return pandeia_data
[docs] def nircam(self): """Handles NIRCam template """ with open(os.path.join(os.path.dirname(__file__), "reference", "nircam_input.json")) as data_file: pandeia_data = json.load(data_file) pandeia_data["configuration"]["instrument"]["filter"] = self.config return pandeia_data
[docs] def miri(self): """Handles MIRI template """ #only lrs slit less with open(os.path.join(os.path.dirname(__file__), "reference", "miri_input.json")) as data_file: pandeia_data = json.load(data_file) return pandeia_data