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

ShortTimeFourierTransform

Base class for all metadata objects with Pydantic validation.

TimeSeriesDecimation

Base class for all metadata objects with Pydantic validation.

Window

Base class for all metadata objects with Pydantic validation.

Package Contents

class mt_metadata.processing.ShortTimeFourierTransform(**data)

Bases: mt_metadata.base.MetadataBase

Base 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.MetadataBase

Base 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.MetadataBase

Base 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