Source code for darsia.manager.concentrationanalysisbase

"""Module providing structures for any general concentration analysis.

This include tracer, co2, multicomponent, etc. analyses. The resulting class is abstract
and needs to be tailored to the specific situation by inheritance.

"""

from __future__ import annotations

from pathlib import Path
from typing import Union

import darsia


[docs] class ConcentrationAnalysisBase(darsia.AnalysisBase): """Base analysis class providing general tools to perform analysis based on darsia.ConcentrationAnalysis (and children). """ def _setup_concentration_analysis( self, concentration_analysis: darsia.ConcentrationAnalysis, cleaning_filter: Union[str, Path], baseline_images: Union[str, Path, list[str], list[Path]], update: bool = False, ) -> None: """ Wrapper to find cleaning filter of the concentration analysis. Args: concentration_analysis (darsia.ConcentrationAnalysis): concentration analysis to be set up. cleaning_filter (str or Path): path to cleaning filter array. baseline_images (list of str or Path): paths to baseline images. update (bool): flag controlling whether the calibration and setup should be updated. """ # Set volume information # TODO include; after also including self.determine_effective_volumes (abstractmethod). # concentration_analysis.update_volumes(self.effective_volumes) # Fetch or generate cleaning filter if not update and Path(cleaning_filter).exists(): concentration_analysis.read_cleaning_filter_from_file(cleaning_filter) else: # Expect multiple baseline images if not isinstance(baseline_images, list): baseline_images = [baseline_images] # Process baseline images used for setting up the cleaning filter if self.processed_baseline_images is None: self.processed_baseline_images: list[darsia.Image] = [ self._read(path) for path in baseline_images ] # Construct the concentration analysis specific cleaning filter concentration_analysis.find_cleaning_filter(self.processed_baseline_images) # Store the cleaning filter to file for later reuse. concentration_analysis.write_cleaning_filter_to_file(cleaning_filter)