from typing import Union
from resistics.config.data import ConfigData
from resistics.calibrate.calibrator import Calibrator
from resistics.decimate.parameters import DecimationParameters
from resistics.window.parameters import WindowParameters
from resistics.window.selector import WindowSelector
from resistics.time.reader import TimeReader
from resistics.time.data import TimeData
from resistics.regression.local import LocalRegressor
from resistics.regression.remote import RemoteRegressor
from resistics.project.data import ProjectData
[docs]def getCalibrator(calPath: str, config: Union[ConfigData, None] = None) -> Calibrator:
"""Create a Calibnator object from calibration path and configuration information
Parameters
----------
calPath : str
Path to calibration directory
config : ConfigData
Configuration data
Returns
-------
Calibrator
A calibrator object
"""
cal = Calibrator(calPath)
if config is None:
return cal
cal.useTheoretical = config.configParams["Calibration"]["usetheoretical"]
return cal
[docs]def getDecimationParameters(
sampleFreq: float, config: Union[ConfigData, None] = None
) -> DecimationParameters:
"""Create a DecimationParams object from sampling frequency and configuration information
Parameters
----------
sampleFreq : float
Sampling frequency of the data
config : ConfigData
Configuration data
Returns
-------
DecimationParams
A decimation parameters object
"""
decParams = DecimationParameters(sampleFreq)
if config is None:
return decParams
if config.flags["customfrequencies"]:
decParams.setFrequencyParams(
config.configParams["Frequencies"]["frequencies"],
config.configParams["Decimation"]["numlevels"],
config.configParams["Frequencies"]["perlevel"],
)
else:
decParams.setDecimationParams(
config.configParams["Decimation"]["numlevels"],
config.configParams["Frequencies"]["perlevel"],
)
return decParams
[docs]def getWindowParameters(
decParams: DecimationParameters, config: Union[ConfigData, None] = None
) -> WindowParameters:
"""Create a WindowParams object from decimationParams and configuration data
Parameters
----------
decParams : DecimationParams
DecimationParams object to hold the decimation parameters
config : ConfigData
Configuration data
Returns
-------
WindowParams
A window parameters object
"""
winParams = WindowParameters(decParams)
if config is None:
return winParams
# set window factor and overlap fraction
winParams.windowFactor = config.configParams["Window"]["windowfactor"]
winParams.overlapFraction = config.configParams["Window"]["overlapfraction"]
if config.flags["customwindows"]:
winParams.setWindowParameters(
config.configParams["Window"]["windowsizes"],
config.configParams["Window"]["overlapsizes"],
)
else:
winParams.setMinParams(
config.configParams["Window"]["minwindowsize"],
config.configParams["Window"]["minoverlapsize"],
)
return winParams
[docs]def getWindowSelector(
projData: ProjectData,
decParams: DecimationParameters,
winParams: WindowParameters,
specdir: Union[str, None] = None,
) -> WindowSelector:
"""Create a WindowSelector object from projectData, decimationParams, windowParams
Parameters
----------
projData : ProjectData
A project data object
decParams : DecimationParams
DecimationParams object to hold the decimation parameters
winParams : Windowparams
WindowParams object to hold the windowing parameters
specdir : str
The spectra directory
Returns
-------
WindowSelector
A window selector object
"""
if specdir is None:
specdir = projData.config.configParams["Spectra"]["specdir"]
selector = WindowSelector(
projData, decParams.sampleFreq, decParams, winParams, specdir=specdir
)
return selector
[docs]def getLocalRegressor(
winSelector: WindowSelector, outPath: str, config: Union[ConfigData, None] = None
) -> LocalRegressor:
"""Create a ProcessorSingleSite object from a windowSelector object, outPath and config data
Parameters
----------
winSelector : WindowSelector
Window selector with sites, masks etc already specified
tfPath : str
Path to output transfer function data
config : ConfigData, optional
Configuration data
Returns
-------
LocalRegressor
local, single site regression
"""
processor = LocalRegressor(winSelector, outPath)
if config is None:
return processor
return processor
[docs]def getRemoteRegressor(
winSelector: WindowSelector, outPath: str, config: Union[ConfigData, None] = None
) -> RemoteRegressor:
"""Create a ProcessorRemoteReference object from a windowSelector object, outPath and config data
Parameters
----------
winSelector : WindowSelector
Window selector with sites, masks etc already specified
outPath : str
Path to output transfer function data
config : ConfigData, optional
Configuration data
Returns
-------
RemoteRegression
Regression including a remote reference
"""
processor = RemoteRegressor(winSelector, outPath)
if config is None:
return processor
return processor