mt_metadata.processing
mt_metadata.processing is a package that contains classes for
describing processing metadata. Including calculating Fourier transforms
and decimating time series data, and a specific module for processing
using Aurora.
Submodules
Classes
Base class for all metadata objects with Pydantic validation. |
|
Base class for all metadata objects with Pydantic validation. |
|
Base class for all metadata objects with Pydantic validation. |
Package Contents
- class mt_metadata.processing.ShortTimeFourierTransform(**data)
Bases:
mt_metadata.base.MetadataBaseBase class for all metadata objects with Pydantic validation.
MetadataBase extends DotNotationBaseModel (which inherits from Pydantic’s BaseModel) to provide automatic validation according to metadata standards. It adds functionality beyond dictionaries, supporting JSON, XML, pandas Series, and other formats for metadata interchange.
- _skip_equals
Private attribute listing fields to skip in equality comparisons
- Type:
list[str]
- _fields
Private attribute caching field information
- Type:
dict[str, Any]
Notes
All field assignments are validated automatically via Pydantic
None values are converted to appropriate defaults (empty string or 0.0)
Supports nested attribute access via dot notation
Thread-safe for read operations after initialization
- harmonic_indices: Annotated[Union[int, list[int], None], Field(default=None, description='List of harmonics indices kept, if all use -1', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': [[0, 4, 8]]})]
- method: Annotated[MethodEnum, Field(default=MethodEnum.fft, description='Fourier transform method', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['fft']})]
- min_num_stft_windows: Annotated[int, Field(default=0, description='How many FFT windows must be available for the time series to valid for STFT.', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': [4]})]
- per_window_detrend_type: Annotated[PerWindowDetrendTypeEnum, Field(default=PerWindowDetrendTypeEnum.null, description='Additional detrending applied per window. Not available for standard scipy spectrogram -- placholder for ARMA prewhitening.', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['linear']})]
- pre_fft_detrend_type: Annotated[PreFftDetrendTypeEnum, Field(default=PreFftDetrendTypeEnum.linear, description='Pre FFT detrend method to be applied', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['linear']})]
- prewhitening_type: Annotated[PrewhiteningTypeEnum, Field(default=PrewhiteningTypeEnum.first_difference, description='Prewhitening method to be applied', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['first difference']})]
- recoloring: Annotated[bool, Field(default=True, description='Whether the data are recolored [True] or not [False].', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': [True]})]
- window: Annotated[mt_metadata.processing.window.Window, Field(default_factory=Window, description='Window settings', alias=None, json_schema_extra={'units': None, 'required': False, 'examples': ['Window()']})]
- class mt_metadata.processing.TimeSeriesDecimation(**data)
Bases:
mt_metadata.base.MetadataBaseBase class for all metadata objects with Pydantic validation.
MetadataBase extends DotNotationBaseModel (which inherits from Pydantic’s BaseModel) to provide automatic validation according to metadata standards. It adds functionality beyond dictionaries, supporting JSON, XML, pandas Series, and other formats for metadata interchange.
- _skip_equals
Private attribute listing fields to skip in equality comparisons
- Type:
list[str]
- _fields
Private attribute caching field information
- Type:
dict[str, Any]
Notes
All field assignments are validated automatically via Pydantic
None values are converted to appropriate defaults (empty string or 0.0)
Supports nested attribute access via dot notation
Thread-safe for read operations after initialization
- level: Annotated[int | None, Field(default=None, description='Decimation level, must be a non-negative integer starting at 0', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['0']})]
- factor: Annotated[float, Field(default=1.0, description='Decimation factor between parent sample rate and decimated time series sample rate.', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['4.0']})]
- method: Annotated[MethodEnum, Field(default=MethodEnum.default, description='Type of decimation', alias=None, json_schema_extra={'units': '', 'required': True, 'examples': ['default']})]
- sample_rate: Annotated[float, Field(default=1.0, description='Sample rate of the decimation level data (after decimation).', alias=None, json_schema_extra={'units': 'samples per second', 'required': True, 'examples': ['256']})]
- anti_alias_filter: Annotated[str | None, Field(default='default', description='Type of anti alias filter for decimation.', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['default']})]
- classmethod check_level(values)
Check that level is a non-negative integer and set anti_alias_filter for level 0.
- class mt_metadata.processing.Window(**data)
Bases:
mt_metadata.base.MetadataBaseBase class for all metadata objects with Pydantic validation.
MetadataBase extends DotNotationBaseModel (which inherits from Pydantic’s BaseModel) to provide automatic validation according to metadata standards. It adds functionality beyond dictionaries, supporting JSON, XML, pandas Series, and other formats for metadata interchange.
- _skip_equals
Private attribute listing fields to skip in equality comparisons
- Type:
list[str]
- _fields
Private attribute caching field information
- Type:
dict[str, Any]
Notes
All field assignments are validated automatically via Pydantic
None values are converted to appropriate defaults (empty string or 0.0)
Supports nested attribute access via dot notation
Thread-safe for read operations after initialization
- num_samples: Annotated[int, Field(default=256, description='Number of samples in a single window', alias=None, json_schema_extra={'units': 'samples', 'required': True, 'examples': ['256']})]
- overlap: Annotated[int, Field(default=32, description='Number of samples overlapped by adjacent windows', alias=None, json_schema_extra={'units': 'samples', 'required': True, 'examples': ['32']})]
- type: Annotated[TypeEnum, Field(default=TypeEnum.boxcar, description='name of the window type', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['hamming']})]
- clock_zero_type: Annotated[ClockZeroTypeEnum, Field(default=ClockZeroTypeEnum.ignore, description='how the clock-zero is specified', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['user specified']})]
- clock_zero: Annotated[mt_metadata.common.mttime.MTime | str | float | int | numpy.datetime64 | pandas.Timestamp | None, Field(default_factory=lambda: MTime(time_stamp=None), description='Start date and time of the first data window', alias=None, json_schema_extra={'units': None, 'required': False, 'examples': ['2020-02-01T09:23:45.453670+00:00']})]
- normalized: Annotated[bool, Field(default=True, description='True if the window shall be normalized so the sum of the coefficients is 1', validation_alias=AliasChoices('normalised', 'normalized'), json_schema_extra={'units': None, 'required': True, 'examples': [False]})]
- additional_args: Annotated[dict, Field(default_factory=dict, description='Additional arguments for the window function', json_schema_extra={'units': None, 'required': False, 'examples': [{'param': 'value'}]})]
- classmethod validate_clock_zero(field_value)
- property num_samples_advance: int
- fft_harmonics(sample_rate)
Returns the frequencies for an fft..
- Parameters:
sample_rate (float)
- Returns:
- Return type:
numpy.ndarray
- taper()
Get’s the window coeffcients. via wrapper call to scipy.signal
Note: see scipy.signal.get_window for a description of what is expected in args[1:]. http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.get_window.html