Source code for spine.ana.factories

"""Construct an analysis script module class from its name."""

from spine.utils.factory import instantiate, module_dict

from . import calib, diag, metric, script

# Build a dictionary of available calibration modules
ANA_DICT = {}
for module in [calib, diag, metric, script]:
    ANA_DICT.update(**module_dict(module))


[docs] def ana_script_factory( name, cfg, overwrite=None, log_dir=None, prefix=None, buffer_size=1 ): """Instantiates an analyzer module from a configuration dictionary. Parameters ---------- name : str Name of the analyzer module cfg : dict Analysis script module configuration parent_path : str Path to the parent directory of the main analysis configuration. This allows for the use of relative paths in the analyzers. overwrite : bool, optional If `True`, overwrite the CSV logs if they already exist log_dir : str, optional Output CSV file directory (shared with driver log) prefix : str, optional Input file prefix. If requested, it will be used to prefix all the output CSV files. buffer_size : int, default 1 CSV file buffer size for analysis outputs Returns ------- object Initialized analyzer object """ # Provide the name to the configuration cfg["name"] = name # Instantiate the analysis script module if overwrite is not None: return instantiate( ANA_DICT, cfg, overwrite=overwrite, log_dir=log_dir, prefix=prefix, buffer_size=buffer_size, ) else: return instantiate( ANA_DICT, cfg, log_dir=log_dir, prefix=prefix, buffer_size=buffer_size )