From ade737bd68170159d6070f6b088db892f3095562 Mon Sep 17 00:00:00 2001 From: Laurent Mercadier <laurent.mercadier@xfel.eu> Date: Wed, 5 May 2021 10:13:25 +0200 Subject: [PATCH] Use extra-data read machinery --- src/toolbox_scs/detectors/dssc_processing.py | 5 +- src/toolbox_scs/load.py | 15 ++--- src/toolbox_scs/util/data_access.py | 65 -------------------- 3 files changed, 11 insertions(+), 74 deletions(-) delete mode 100644 src/toolbox_scs/util/data_access.py diff --git a/src/toolbox_scs/detectors/dssc_processing.py b/src/toolbox_scs/detectors/dssc_processing.py index 62c1e27..2858308 100644 --- a/src/toolbox_scs/detectors/dssc_processing.py +++ b/src/toolbox_scs/detectors/dssc_processing.py @@ -12,7 +12,7 @@ import pandas as pd import extra_data as ed -from ..constants import mnemonics as _mnemonics +from ..mnemonics_machinery import mnemonics_for_run from .dssc_data import save_xarray log = logging.getLogger(__name__) @@ -125,7 +125,8 @@ def _load_chunk_xgm(sel, xgm_mnemonic, stride): ------- xarray.DataArray """ - d = sel.get_array(*_mnemonics[xgm_mnemonic].values()) + mnemonics = mnemonics_for_run(sel) + d = sel.get_array(*mnemonics[xgm_mnemonic].values()) d = d.rename(new_name_or_name_dict={'XGMbunchId': 'pulse'}) frame_coords = np.linspace(0, (d.shape[1]-1)*stride, d.shape[1], dtype=int) d = d.assign_coords({'pulse': frame_coords}) diff --git a/src/toolbox_scs/load.py b/src/toolbox_scs/load.py index 5ebac8b..48360c7 100644 --- a/src/toolbox_scs/load.py +++ b/src/toolbox_scs/load.py @@ -9,15 +9,16 @@ """ import logging +import os import numpy as np import xarray as xr import extra_data as ed +from extra_data.read_machinery import find_proposal from .constants import mnemonics as _mnemonics from .mnemonics_machinery import mnemonics_for_run -from .util.exceptions import ToolBoxValueError, ToolBoxPathError -from .util.data_access import find_run_dir +from .util.exceptions import ToolBoxValueError import toolbox_scs.detectors as tbdet log = logging.getLogger(__name__) @@ -104,11 +105,11 @@ def load(proposalNB=None, runNB=None, >>> run, data = tb.load(2212, 208, ['SCS_SA3', 'MCP2apd', 'nrj']) """ - try: - runFolder = find_run_dir(proposalNB, runNB) - except ToolBoxPathError as err: - log.error(f"{err.message}") - raise + if isinstance(runNB, int): + runNB = 'r{:04d}'.format(runNB) + if isinstance(proposalNB, int): + proposalNB = 'p{:06d}'.format(proposalNB) + runFolder = os.path.join(find_proposal(proposalNB), subFolder, runNB) run = ed.RunDirectory(runFolder).select_trains(subset) if fields is None: return run, xr.Dataset() diff --git a/src/toolbox_scs/util/data_access.py b/src/toolbox_scs/util/data_access.py deleted file mode 100644 index 1fe637f..0000000 --- a/src/toolbox_scs/util/data_access.py +++ /dev/null @@ -1,65 +0,0 @@ -''' -Extensions to the extra_data package. - -contributions should comply with pep8 code structure guidelines. -''' - -import os -import logging - -import extra_data as ed -from extra_data.read_machinery import find_proposal - -from ..util.exceptions import ToolBoxPathError - -log = logging.getLogger(__name__) - -def find_run_dir(proposal, run): - """ - Get run directory for given run. - - This method is an extension to 'find_proposal' in the extra_data - package and should eventually be transferred to the latter. - - Parameters - ---------- - proposal: str, int - Proposal number - run: str, int - Run number - - Returns - ------- - rdir : str - Run directory as a string - - Raises - ------ - ToolBoxPathError: Exception - Error raised if the constructed path does not exist. This may - happen when entering a non-valid run number, or the folder has - been renamed/removed. - - Comment - ------- - The rather unspecified Exeption raised, when entering a invalid proposal - number stems from the ed package -> to be fixed externally. - - """ - rdir = None - - try: - pdir = find_proposal(f'p{proposal:06d}') - rdir = os.path.join(pdir, f'raw/r{run:04d}') - if os.path.isdir(rdir) is False: - log.warning("Invalid directory: raise ToolBoxPathError.") - msg = 'The constructed path does not exist.' - raise ToolBoxPathError(msg, rdir) - - except ToolBoxPathError: - raise - except Exception as err: - log.error("Unexpected error:", exc_info=True) - raise - - return rdir \ No newline at end of file -- GitLab