Skip to content
Snippets Groups Projects

Add caldb_root as parameter for CalibrationData

Merged Thomas Kluyver requested to merge feat/calcatapi-root-dir into master
2 unresolved threads
"""Interfaces to calibration constant data."""
import re
import socket
from datetime import date, datetime, time, timezone
from functools import lru_cache
from os import getenv
from pathlib import Path
from weakref import WeakKeyDictionary
@@ -367,6 +364,7 @@ class CalibrationData:
calibrations = set()
default_client = None
_default_caldb_root = ...
def __init__(
self,
@@ -375,6 +373,7 @@ class CalibrationData:
client=None,
event_at=None,
module_naming="da",
caldb_root=None,
):
"""Initialize a new CalibrationData object.
@@ -397,6 +396,8 @@ class CalibrationData:
integers in karabo_da.
`qm`: QxMx naming convention is used. Virtual names for
AGIPD, DSSC, and LPD.
caldb_root (str or None): Path to the root directory for caldb
files, finds folder for production caldb by default.
**condition_params: Operating condition parameters defined
on an instance level.
"""
@@ -406,6 +407,10 @@ class CalibrationData:
self.event_at = event_at
self.pdu_snapshot_at = event_at
self.module_naming = module_naming
if caldb_root is None:
self.caldb_root = self._get_default_caldb_root()
else:
self.caldb_root = Path(caldb_root)
if client is None:
@@ -486,29 +491,19 @@ class CalibrationData:
)
return CalibrationData.default_client
@property
def caldb_root(self):
"""Root directory for calibration constant data.
Returns:
(Path or None) Location of caldb store or
None if not available.
"""
if not hasattr(CalibrationData, "_caldb_root"):
if getenv("SASE"):
# ONC
CalibrationData._caldb_root = Path("/common/cal/caldb_store")
elif re.match(r"^max-(.+)\.desy\.de$", socket.getfqdn()):
# Maxwell
CalibrationData._caldb_root = Path(
"/gpfs/exfel/d/cal/caldb_store"
)
@staticmethod
def _get_default_caldb_root():
if CalibrationData._default_caldb_root is ...:
onc_path = Path("/common/cal/caldb_store")
maxwell_path = Path("/gpfs/exfel/d/cal/caldb_store")
if onc_path.is_dir():
CalibrationData._default_caldb_root = onc_path
elif maxwell_path.is_dir():
CalibrationData._default_caldb_root = maxwell_path
else:
# Probably unavailable
CalibrationData._caldb_root = None
CalibrationData._default_caldb_root = None
return CalibrationData._caldb_root
return CalibrationData._default_caldb_root
@property
def client(self):
@@ -947,6 +942,7 @@ class AGIPD_CalibrationData(SplitConditionCalibrationData):
gain_setting=None,
gain_mode=None,
module_naming="da",
caldb_root=None,
integration_time=12,
source_energy=9.2,
pixels_x=512,
@@ -958,6 +954,7 @@ class AGIPD_CalibrationData(SplitConditionCalibrationData):
client,
event_at,
module_naming,
caldb_root,
)
self.sensor_bias_voltage = sensor_bias_voltage
@@ -1021,6 +1018,7 @@ class LPD_CalibrationData(SplitConditionCalibrationData):
client=None,
event_at=None,
module_naming="da",
caldb_root=None,
):
super().__init__(
detector_name,
@@ -1028,6 +1026,7 @@ class LPD_CalibrationData(SplitConditionCalibrationData):
client,
event_at,
module_naming,
caldb_root,
)
self.sensor_bias_voltage = sensor_bias_voltage
@@ -1072,6 +1071,7 @@ class DSSC_CalibrationData(CalibrationData):
client=None,
event_at=None,
module_naming="da",
caldb_root=None,
):
super().__init__(
detector_name,
@@ -1079,6 +1079,7 @@ class DSSC_CalibrationData(CalibrationData):
client,
event_at,
module_naming,
caldb_root,
)
self.sensor_bias_voltage = sensor_bias_voltage
@@ -1126,6 +1127,7 @@ class JUNGFRAU_CalibrationData(CalibrationData):
client=None,
event_at=None,
module_naming="da",
caldb_root=None,
):
super().__init__(
detector_name,
@@ -1133,6 +1135,7 @@ class JUNGFRAU_CalibrationData(CalibrationData):
client,
event_at,
module_naming,
caldb_root,
)
self.sensor_bias_voltage = sensor_bias_voltage
@@ -1193,6 +1196,7 @@ class PNCCD_CalibrationData(SplitConditionCalibrationData):
client=None,
event_at=None,
module_naming="da",
caldb_root=None,
):
# Ignore modules for this detector.
super().__init__(
@@ -1201,6 +1205,7 @@ class PNCCD_CalibrationData(SplitConditionCalibrationData):
client,
event_at,
module_naming,
caldb_root,
)
self.sensor_bias_voltage = sensor_bias_voltage
@@ -1249,6 +1254,7 @@ class EPIX100_CalibrationData(SplitConditionCalibrationData):
client=None,
event_at=None,
module_naming="da",
caldb_root=None,
):
# Ignore modules for this detector.
super().__init__(
@@ -1257,6 +1263,7 @@ class EPIX100_CalibrationData(SplitConditionCalibrationData):
client,
event_at,
module_naming,
caldb_root,
)
self.sensor_bias_voltage = sensor_bias_voltage
@@ -1299,6 +1306,7 @@ class GOTTHARD2_CalibrationData(CalibrationData):
client=None,
event_at=None,
module_naming="da",
caldb_root=None,
):
# Ignore modules for this detector.
super().__init__(
@@ -1307,6 +1315,7 @@ class GOTTHARD2_CalibrationData(CalibrationData):
client,
event_at,
module_naming,
caldb_root,
)
self.sensor_bias_voltage = sensor_bias_voltage
Loading