mt_metadata.processing ====================== .. py:module:: mt_metadata.processing .. autoapi-nested-parse:: processing metadata ====================== :mod:`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 ---------- .. toctree:: :maxdepth: 1 /source/api/mt_metadata/processing/aurora/index /source/api/mt_metadata/processing/fourier_coefficients/index /source/api/mt_metadata/processing/short_time_fourier_transform/index /source/api/mt_metadata/processing/time_series_decimation/index /source/api/mt_metadata/processing/time_series_decimation_basemodel/index /source/api/mt_metadata/processing/window/index Classes ------- .. autoapisummary:: mt_metadata.processing.ShortTimeFourierTransform mt_metadata.processing.TimeSeriesDecimation mt_metadata.processing.Window Package Contents ---------------- .. py:class:: ShortTimeFourierTransform(**data) Bases: :py:obj:`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. .. attribute:: _skip_equals Private attribute listing fields to skip in equality comparisons :type: list[str] .. attribute:: _fields Private attribute caching field information :type: dict[str, Any] .. rubric:: 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 .. py:attribute:: harmonic_indices :type: 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]]})] .. py:attribute:: method :type: Annotated[MethodEnum, Field(default=MethodEnum.fft, description='Fourier transform method', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['fft']})] .. py:attribute:: min_num_stft_windows :type: 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]})] .. py:attribute:: per_window_detrend_type :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']})] .. py:attribute:: pre_fft_detrend_type :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']})] .. py:attribute:: prewhitening_type :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']})] .. py:attribute:: recoloring :type: 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]})] .. py:attribute:: window :type: Annotated[mt_metadata.processing.window.Window, Field(default_factory=Window, description='Window settings', alias=None, json_schema_extra={'units': None, 'required': False, 'examples': ['Window()']})] .. py:class:: TimeSeriesDecimation(**data) Bases: :py:obj:`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. .. attribute:: _skip_equals Private attribute listing fields to skip in equality comparisons :type: list[str] .. attribute:: _fields Private attribute caching field information :type: dict[str, Any] .. rubric:: 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 .. py:attribute:: level :type: 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']})] .. py:attribute:: factor :type: 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']})] .. py:attribute:: method :type: Annotated[MethodEnum, Field(default=MethodEnum.default, description='Type of decimation', alias=None, json_schema_extra={'units': '', 'required': True, 'examples': ['default']})] .. py:attribute:: sample_rate :type: 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']})] .. py:attribute:: anti_alias_filter :type: 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']})] .. py:method:: check_level(values) :classmethod: Check that level is a non-negative integer and set anti_alias_filter for level 0. .. py:class:: Window(**data) Bases: :py:obj:`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. .. attribute:: _skip_equals Private attribute listing fields to skip in equality comparisons :type: list[str] .. attribute:: _fields Private attribute caching field information :type: dict[str, Any] .. rubric:: 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 .. py:attribute:: num_samples :type: Annotated[int, Field(default=256, description='Number of samples in a single window', alias=None, json_schema_extra={'units': 'samples', 'required': True, 'examples': ['256']})] .. py:attribute:: overlap :type: Annotated[int, Field(default=32, description='Number of samples overlapped by adjacent windows', alias=None, json_schema_extra={'units': 'samples', 'required': True, 'examples': ['32']})] .. py:attribute:: type :type: Annotated[TypeEnum, Field(default=TypeEnum.boxcar, description='name of the window type', alias=None, json_schema_extra={'units': None, 'required': True, 'examples': ['hamming']})] .. py:attribute:: clock_zero_type :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']})] .. py:attribute:: clock_zero :type: 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']})] .. py:attribute:: normalized :type: 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]})] .. py:attribute:: additional_args :type: Annotated[dict, Field(default_factory=dict, description='Additional arguments for the window function', json_schema_extra={'units': None, 'required': False, 'examples': [{'param': 'value'}]})] .. py:method:: validate_clock_zero(field_value) :classmethod: .. py:property:: num_samples_advance :type: int .. py:method:: fft_harmonics(sample_rate) Returns the frequencies for an fft.. :param sample_rate: :return: .. py:method:: 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