FFT Main Module

Main FFT Analysis Module

Core FFT analysis functionality for time series data from micromagnetic simulations.

class mmpp.fft.main.FFTConfig(window_function='hann', overlap=0.5, nfft=None, detrend='linear', scaling='density', engine='scipy', cache_results=True, frequency_range=None, zero_padding=True)[source]

Bases: object

Configuration for FFT analysis operations.

Parameters:
window_function: str = 'hann'
overlap: float = 0.5
nfft: Optional[int] = None
detrend: str = 'linear'
scaling: str = 'density'
engine: str = 'scipy'
cache_results: bool = True
frequency_range: Optional[tuple[float, float]] = None
zero_padding: bool = True
__post_init__()[source]

Validate configuration parameters.

Return type:

None

__init__(window_function='hann', overlap=0.5, nfft=None, detrend='linear', scaling='density', engine='scipy', cache_results=True, frequency_range=None, zero_padding=True)
Parameters:
class mmpp.fft.main.FFTResult(frequencies, power_spectrum, phase_spectrum, complex_spectrum, metadata, config)[source]

Bases: object

Container for FFT analysis results.

Parameters:
frequencies: ndarray
power_spectrum: ndarray
phase_spectrum: ndarray
complex_spectrum: ndarray
metadata: dict[str, Any]
config: FFTConfig
property peak_frequency: float

Get the frequency with maximum power.

property peak_power: float

Get the maximum power.

get_frequency_range(f_min, f_max)[source]

Extract power spectrum within frequency range.

Parameters:
Return type:

tuple[ndarray, ndarray]

__init__(frequencies, power_spectrum, phase_spectrum, complex_spectrum, metadata, config)
Parameters:
class mmpp.fft.main.FFTAnalyzer(results, mmpp_instance=None)[source]

Bases: object

Advanced FFT analyzer for micromagnetic simulation data.

Inherits functionality from MMPP plotting system and extends it with comprehensive frequency domain analysis capabilities.

Parameters:
__init__(results, mmpp_instance=None)[source]

Initialize FFT analyzer.

Parameters:

resultsList or single result

ZarrJobResult objects to analyze

mmpp_instanceMMPP, optional

Reference to parent MMPP instance

param results:

type results:

Union[list[Any], Any]

param mmpp_instance:

type mmpp_instance:

Optional[Any]

configure(**kwargs)[source]

Configure FFT analysis settings.

Return type:

FFTAnalyzer

Parameters:

**kwargsAny

Configuration options matching FFTConfig fields

Returns:

: FFTAnalyzer

Self for method chaining

analyze_single(result_index=0, dataset_name=None, comp=None, average=None, time_range=None, **kwargs)[source]

Analyze a single result with FFT.

Return type:

FFTResult

Parameters:

result_indexint, optional

Index of result to analyze (default: 0)

dataset_namestr, optional

Dataset name (default: auto-select largest m dataset)

compUnion[str, int], optional

Component to analyze

averagetuple, optional

Axes to average over

time_rangetuple, optional

Time range to analyze

**kwargsAny

Additional configuration options

Returns:

: FFTResult

FFT analysis results

param result_index:

type result_index:

int

param dataset_name:

type dataset_name:

Optional[str]

param comp:

type comp:

Union[str, int, None]

param average:

type average:

Optional[tuple[Any, ...]]

param time_range:

type time_range:

Optional[tuple[float, float]]

analyze_all(dataset_name=None, **kwargs)[source]

Analyze all results with FFT.

Return type:

list[FFTResult]

Parameters:

dataset_namestr, optional

Dataset name (default: auto-select largest m dataset)

**kwargsAny

Additional parameters passed to analyze_single

Returns:

: List[FFTResult]

List of FFT results for all datasets

param dataset_name:

type dataset_name:

Optional[str]

clear_cache()[source]

Clear FFT result cache.

Return type:

None

get_cache_info()[source]

Get information about FFT cache.

Return type:

dict[str, Any]

__repr__()[source]

Rich representation of the FFT analyzer.

Return type:

str

Main Classes

FFTAnalyzer

class mmpp.fft.main.FFTAnalyzer(results, mmpp_instance=None)[source]

Bases: object

Advanced FFT analyzer for micromagnetic simulation data.

Inherits functionality from MMPP plotting system and extends it with comprehensive frequency domain analysis capabilities.

Parameters:
__init__(results, mmpp_instance=None)[source]

Initialize FFT analyzer.

Parameters:

resultsList or single result

ZarrJobResult objects to analyze

mmpp_instanceMMPP, optional

Reference to parent MMPP instance

param results:

type results:

Union[list[Any], Any]

param mmpp_instance:

type mmpp_instance:

Optional[Any]

configure(**kwargs)[source]

Configure FFT analysis settings.

Return type:

FFTAnalyzer

Parameters:

**kwargsAny

Configuration options matching FFTConfig fields

Returns:

: FFTAnalyzer

Self for method chaining

analyze_single(result_index=0, dataset_name=None, comp=None, average=None, time_range=None, **kwargs)[source]

Analyze a single result with FFT.

Return type:

FFTResult

Parameters:

result_indexint, optional

Index of result to analyze (default: 0)

dataset_namestr, optional

Dataset name (default: auto-select largest m dataset)

compUnion[str, int], optional

Component to analyze

averagetuple, optional

Axes to average over

time_rangetuple, optional

Time range to analyze

**kwargsAny

Additional configuration options

Returns:

: FFTResult

FFT analysis results

param result_index:

type result_index:

int

param dataset_name:

type dataset_name:

Optional[str]

param comp:

type comp:

Union[str, int, None]

param average:

type average:

Optional[tuple[Any, ...]]

param time_range:

type time_range:

Optional[tuple[float, float]]

analyze_all(dataset_name=None, **kwargs)[source]

Analyze all results with FFT.

Return type:

list[FFTResult]

Parameters:

dataset_namestr, optional

Dataset name (default: auto-select largest m dataset)

**kwargsAny

Additional parameters passed to analyze_single

Returns:

: List[FFTResult]

List of FFT results for all datasets

param dataset_name:

type dataset_name:

Optional[str]

clear_cache()[source]

Clear FFT result cache.

Return type:

None

get_cache_info()[source]

Get information about FFT cache.

Return type:

dict[str, Any]

__repr__()[source]

Rich representation of the FFT analyzer.

Return type:

str

FFTResult

class mmpp.fft.main.FFTResult(frequencies, power_spectrum, phase_spectrum, complex_spectrum, metadata, config)[source]

Bases: object

Container for FFT analysis results.

Parameters:
frequencies: ndarray
power_spectrum: ndarray
phase_spectrum: ndarray
complex_spectrum: ndarray
metadata: dict[str, Any]
config: FFTConfig
property peak_frequency: float

Get the frequency with maximum power.

property peak_power: float

Get the maximum power.

get_frequency_range(f_min, f_max)[source]

Extract power spectrum within frequency range.

Parameters:
Return type:

tuple[ndarray, ndarray]

__init__(frequencies, power_spectrum, phase_spectrum, complex_spectrum, metadata, config)
Parameters:

Usage Examples

Basic FFT Analysis

import mmpp

# Open dataset
db = mmpp.open('/path/to/data')
results = db.find(solver=3)

# Get first result and analyze FFT
analyzer = results[0].fft.main.FFTAnalyzer()
fft_result = analyzer.analyze_single(0, 'm_z11')

print(f"Frequency range: {fft_result.frequencies[0]:.2f} - {fft_result.frequencies[-1]:.2f} GHz")
print(f"Peak frequency: {fft_result.frequencies[fft_result.power.argmax()]:.2f} GHz")

Batch FFT Analysis

# Analyze multiple datasets
results = analyzer.analyze_all('m_z11')
for i, result in enumerate(results):
    peak_freq = result.frequencies[result.power.argmax()]
    print(f"Layer {i}: Peak at {peak_freq:.2f} GHz")