Source code for HDF5_BLS.load_data

import os
import sys 

###############################################################################
# GENERAL GUIDELINES
    # This file is meant to dispatch the loading of the data to the sub-module load_formats. 
    # This sub-module is classified in types of files and for each file, one or more functions are defined, depending on the user's needs.
    # All the functions return a dictionary with two minimal keys: "Data" and "Attributes". 
    # The "Data" key contains the data and the "Attributes" key contains the attributes of the file.
    # The attributes are stored in a dictionary and their names can be found in the "spreadsheet" folder of the repository
    # Additionally, other keys can be found in the returned dictionary, depending on the technique used.

# GUIDELINES FOR GUI COMPATIBILITY:
    # If you need to load your files with a specific process, please add the parameter "creator" to the function set to None by default. Then if the function is called without any creator, have the function raise a LoadError_creator exception with the list of creators that can be used to load the data (an example is given in load_dat_file).
    # If the data has to be loaded with parameters, define the function with an additional parameter "parameters" set to None by default. Then if the function is called without any parameters, have the function raise a LoadError_parameters exception with the list of parameters that can be used to load the data (an example is found in load_formats/load_dat.py in function load_dat_TimeDomain).
###############################################################################


[docs] def load_dat_file(filepath, creator = None, parameters = None, brillouin_type = None): # Test made for GHOST """Loads DAT files. The DAT files that can be read are obtained from the following configurations: - GHOST software (fixed brillouin type: PSD) - Time Domain measures (fixed brillouin type: Raw_data) Parameters ---------- filepath : str The filepath to the GHOST file creator : str, optional The way this dat file has to be loaded. If None, an error is raised. Possible values are: - "GHOST": the file is assumed to be a GHOST file - "TimeDomain": the file is assumed to be a TimeDomain file brillouin_type : str, optional The brillouin type of the file (not relevant for .dat files) Returns ------- dict The dictionary with the data and the attributes of the file stored respectively in the keys "Data" and "Attributes". For time domain files, the dictionary also contains the time vector in the key "Abscissa_dt". """ from .load_formats.load_dat import load_dat_GHOST, load_dat_TimeDomain from .load_formats.load_errors import LoadError_creator if creator == "GHOST": return load_dat_GHOST(filepath) elif creator == "TimeDomain": return load_dat_TimeDomain(filepath, parameters) else: creator_list = ["GHOST", "TimeDomain"] raise LoadError_creator(f"Unsupported creator {creator}, accepted values are: {', '.join(creator_list)}", creator_list)
[docs] def load_image_file(filepath, parameters = None, brillouin_type = None): # Test made """Loads image files using Pillow Parameters ---------- filepath : str The filepath to the image parameters : dict, optional A dictionary with the parameters to load the data, by default None. Please refer to the Note section of this docstring for more information. brillouin_type : str, optional The brillouin type of the file. Returns ------- dict The dictionary with the data and the attributes of the file stored respectively in the keys "Data" and "Attributes" Note ---- Possible parameters are: grayscale: bool, optional If True, the image is converted to grayscale, by default False """ from .load_formats.load_image import load_image_base if brillouin_type is None: return load_image_base(filepath, parameters = parameters) else: return load_image_base(filepath, parameters = parameters, brillouin_type = brillouin_type)
[docs] def load_npy_file(filepath, brillouin_type = None): # Test made """Loads npy files Parameters ---------- filepath : str The filepath to the npy file brillouin_type : str, optional The brillouin type of the file. Returns ------- dict The dictionary with the data and the attributes of the file stored respectively in the keys "Data" and "Attributes" """ from .load_formats.load_npy import load_npy_base if brillouin_type is None: return load_npy_base(filepath) else: return load_npy_base(filepath, brillouin_type = brillouin_type)
[docs] def load_sif_file(filepath, parameters = None, brillouin_type = None): """Loads npy files Parameters ---------- filepath : str The filepath to the npy file brillouin_type : str, optional The brillouin type of the file. Not relevant for sif files Returns ------- dict The dictionary with the data and the attributes of the file stored respectively in the keys "Data" and "Attributes" """ from .load_formats.load_sif import load_sif_base return load_sif_base(filepath, parameters = parameters)
[docs] def load_general(filepath, creator = None, parameters = None, brillouin_type = None): # Test made """Loads files based on their extensions Parameters ---------- filepath : str The filepath to the file creator : str An argument to specify how the data was created, useful when the extension of the file is not enough to determine the type of data. parameters : dict A dictionary containing the parameters to be used to interpret the data, for example when multiple files need to be combined to obtain the dataset to add. brillouin_type : str The brillouin type of the dataset to load. Please refer to the documentation of the Brillouin software for the possible values. Returns ------- dict The dictionary created with the given filepath and eventually parameters. """ _, file_extension = os.path.splitext(filepath) if file_extension.lower() == ".dat": # Load .DAT file format data if brillouin_type is None: return load_dat_file(filepath, creator = creator, parameters = parameters) else: return load_dat_file(filepath, creator = creator, parameters = parameters, brillouin_type = brillouin_type) elif file_extension.lower() in ['.apng', '.blp', '.bmp', '.bw', '.cur', '.dcx', '.dds', '.dib', '.emf', '.eps', '.fit', '.fits', '.flc', '.fli', '.ftc', '.ftu', '.gbr', '.gif', '.hdf', '.icb', '.icns', '.ico', '.iim', '.im', '.j2c', '.j2k', '.jfif', '.jp2', '.jpc', '.jpe', '.jpeg', '.jpf', '.jpg', '.jpx', '.mpg', '.msp', '.pbm', '.pcd', '.pcx', '.pfm', '.pgm', '.png', '.pnm', '.ppm', '.ps', '.psd', '.pxr', '.qoi', '.ras', '.rgb', '.rgba', '.sgi', '.tga', '.tif', '.tiff', '.vda', '.vst', '.webp', '.wmf', '.xbm', '.xpm']: # Load image files if brillouin_type is None: return load_image_file(filepath, parameters = parameters) else: return load_image_file(filepath, parameters = parameters, brillouin_type = brillouin_type) elif file_extension.lower() == ".npy": # Load .npy file format data if brillouin_type is None: return load_npy_file(filepath) else: return load_npy_file(filepath, brillouin_type = brillouin_type) elif file_extension.lower() == ".sif": # Load .npy file format data if brillouin_type is None: return load_sif_file(filepath, parameters = parameters) else: return load_sif_file(filepath, parameters = parameters, brillouin_type = brillouin_type) else: raise ValueError(f"Unsupported file format: {file_extension}")