Source code for soxspipe.commonutils.detector_lookup
#!/usr/bin/env python
# encoding: utf-8
"""
*return a dictionary of detector characteristics and parameters*
Author
: David Young & Marco Landoni
Date Created
: August 13, 2020
"""
################# GLOBAL IMPORTS ####################
from fundamentals import tools
from builtins import object
import sys
import os
os.environ['TERM'] = 'vt100'
[docs]
class detector_lookup(object):
"""
*return a dictionary of detector characteristics and parameters*
**Key Arguments:**
- ``log`` -- logger
- ``settings`` -- the settings dictionary
**Usage:**
To initiate a detector_lookup object, use the following:
```python
from soxspipe.commonutils import detector_lookup
detector = detector_lookup(
log=log,
settings=settings
).get("NIR")
print(detector["science-pixels"])
```
"""
def __init__(
self,
log,
settings=False,
):
self.log = log
log.debug("instantiating a new 'detector_lookup' object")
self.settings = settings
# SELECT THE INSTRUMENT AND READ THE KEYWORD DICTIONARY IN RESOURCES
# FOLDER
if "instrument" in settings:
self.instrument = settings["instrument"]
else:
self.instrument = "soxs"
self.dectDict = self._select_dictionary()
return None
[docs]
def get(self,
arm):
"""
*return a dictionary of detector characteristics and parameters*
**Key Arguments:**
- ``arm`` -- the detector parameters to return
"""
self.log.debug('starting the ``get`` method')
arm = arm.upper()
if arm not in self.dectDict:
raise LookupError(f"the detector '{arm}' cannot be found in the detector parameters lookup file")
self.log.debug('completed the ``get`` method')
return self.dectDict[arm]
def _select_dictionary(
self):
"""*select the detector parameter dictionary based on the instrument passed via the settings*
**Return:**
- ``dectDict`` -- the python dictionary of detector parameters
**Usage**
```python
from soxspipe.commonutils import detector_lookup
detector = detector_lookup(
log=log,
settings=settings
)
dectDict = detector._select_dictionary()
```
"""
self.log.debug('starting the ``_select_dictionary`` method')
# GENERATE PATH TO YAML DICTIONARY
yamlFilePath = os.path.dirname(os.path.dirname(
__file__)) + "/resources/" + self.instrument + "_detector_parameters.yaml"
# YAML CONTENT TO DICTIONARY
import yaml
with open(yamlFilePath, 'r') as stream:
dectDict = yaml.safe_load(stream)
self.log.debug('completed the ``_select_dictionary`` method')
return dectDict