Source code for darfix.core.data_selection

import os
import urllib.parse
import urllib.request
from typing import Optional
from typing import Union

from esrf_pathlib import ESRFPath
from silx.io.url import DataUrl
from silx.io.utils import get_data

from darfix.core.dataset import Dataset
from darfix.io.progress import OptionalProgressCallback


[docs] def load_process_data( detector_url: Union[str, DataUrl], root_dir: Optional[str] = None, dark_detector_url: Optional[Union[str, DataUrl]] = None, title: str = "", metadata_url=None, progress_callback: OptionalProgressCallback = None, ): """ Loads data from `detector_url`. :param detector_url: detector_url to be loaded. :param metadata_url: path to the scan metadata for HDF5 containing positioner information in order to load metadata for non-edf files """ root_dir_specified = bool(root_dir) if not root_dir_specified: root_dir = _get_root_dir(detector_url) dark_images = None if dark_detector_url: dark_images = get_data(dark_detector_url) dataset = Dataset( _dir=root_dir, detector_url=detector_url, title=title, metadata_url=metadata_url, progress_callback=progress_callback, dark_images=dark_images, ) assert dataset.data is not None and dataset.data.size > 0, "No data was loaded!" return dataset
def _get_root_dir(filename: str) -> str: url = urllib.parse.urlparse(filename, scheme="file") return os.path.dirname(urllib.request.url2pathname(url.path)) def get_default_output_directory(raw_data_file: str) -> str: esrf_raw_data_file = ESRFPath(raw_data_file) try: return str(esrf_raw_data_file.processed_dataset_path) except AttributeError: # Not an ESRF path : Default directory is cwd. return os.getcwd()