FFT Computation Module
FFT Computation Module
Core FFT computation functionality moved from old_fft_module.py and main.py. Provides low-level FFT calculations without user interface elements.
- class mmpp.fft.compute_fft.FFTComputeConfig(window_function='hann', filter_type='remove_mean', fft_engine='auto', zero_padding=True, nfft=None)[source]
Bases:
object
Configuration for FFT computations.
- Parameters:
-
window_function:
Literal
['none'
,'hann'
,'hamming'
,'blackman'
,'bartlett'
,'kaiser'
,'tukey'
,'gaussian'
] = 'hann'
-
filter_type:
Literal
['none'
,'remove_mean'
,'remove_static'
,'detrend_linear'
,'remove_mean_and_static'
] = 'remove_mean'
- __init__(window_function='hann', filter_type='remove_mean', fft_engine='auto', zero_padding=True, nfft=None)
- Parameters:
- class mmpp.fft.compute_fft.FFTComputeResult(frequencies, spectrum, metadata, config)[source]
Bases:
object
Result of FFT computation.
- Parameters:
-
config:
FFTComputeConfig
- class mmpp.fft.compute_fft.FFTCompute(debug=False)[source]
Bases:
object
Core FFT computation engine.
Handles low-level FFT calculations without user interface elements.
- Parameters:
debug (
bool
)
- __init__(debug=False)[source]
Initialize FFT compute engine.
Parameters:
- debugbool, optional
Enable debug logging (default: False)
- param debug:
- type debug:
- determine_engine(data_size)[source]
Determine best FFT engine based on data size.
- Return type:
Parameters:
- data_sizeint
Total number of elements to transform
Returns:
: str
Selected engine name
- param data_size:
- type data_size:
- apply_window(data, window_type)[source]
Apply window function to data.
- Return type:
Parameters:
- datanp.ndarray
Input data (time axis first)
- window_typestr
Window function type
Returns:
: np.ndarray
Windowed data
- apply_filter(data, filter_type)[source]
Apply filtering to data.
- Return type:
Parameters:
- datanp.ndarray
Input data (time axis first)
- filter_typestr
Filter type
Returns:
: np.ndarray
Filtered data
- compute_fft(data, dt, engine)[source]
Compute FFT using specified engine.
Parameters:
- datanp.ndarray
Input data (time axis first)
- dtfloat
Time step
- enginestr
FFT engine to use
Returns:
: tuple
(frequencies, fft_data)
- calculate_fft_method1(data, dt, window='hann', filter_type='remove_mean', engine=None)[source]
FFT Method 1: Apply filtering and windowing, then FFT, then average spatially.
- Return type:
Parameters:
- datanp.ndarray
Input data (time, …, components)
- dtfloat
Time step
- windowstr
Window type
- filter_typestr
Filter type
- enginestr, optional
FFT engine
Returns:
: FFTComputeResult
FFT computation result
- param data:
- type data:
- param dt:
- type dt:
- param window:
- type window:
Literal
['none'
,'hann'
,'hamming'
,'blackman'
,'bartlett'
,'kaiser'
,'tukey'
,'gaussian'
]- param filter_type:
- type filter_type:
Literal
['none'
,'remove_mean'
,'remove_static'
,'detrend_linear'
,'remove_mean_and_static'
]- param engine:
- type engine:
- calculate_fft_method2(data, dt, window='hann', filter_type='remove_mean', engine=None)[source]
FFT Method 2: Apply filtering, average spatially, then windowing and FFT.
- Return type:
Parameters:
- datanp.ndarray
Input data (time, …, components)
- dtfloat
Time step
- windowstr
Window type
- filter_typestr
Filter type
- enginestr, optional
FFT engine
Returns:
: FFTComputeResult
FFT computation result
- param data:
- type data:
- param dt:
- type dt:
- param window:
- type window:
Literal
['none'
,'hann'
,'hamming'
,'blackman'
,'bartlett'
,'kaiser'
,'tukey'
,'gaussian'
]- param filter_type:
- type filter_type:
Literal
['none'
,'remove_mean'
,'remove_static'
,'detrend_linear'
,'remove_mean_and_static'
]- param engine:
- type engine:
- load_data_from_zarr(zarr_path, dataset, z_layer=-1)[source]
Load data from zarr file.
Parameters:
- zarr_pathstr
Path to zarr file
- datasetstr
Dataset name
- z_layerint
Z-layer index (-1 for last layer)
Returns:
: tuple
(data, dt) where data is the loaded array and dt is time step
- load_existing_fft_data(zarr_path, dataset_name='fft')[source]
Load existing FFT data from zarr file.
- Return type:
Parameters:
- zarr_pathstr
Path to zarr file
- dataset_namestr, optional
Dataset name (default: “fft”)
Returns:
: Optional[FFTComputeResult]
Loaded FFT result or None if not found
- calculate_fft_data(zarr_path, dataset, z_layer=-1, method=1, save=False, force=False, save_dataset_name=None, **kwargs)[source]
Calculate FFT for data from zarr file.
- Return type:
Parameters:
- zarr_pathstr
Path to zarr file
- datasetstr
Dataset name
- z_layerint
Z-layer index (-1 for last layer)
- methodint
FFT method (1 or 2)
- savebool, optional
Save result to zarr file (default: False)
- forcebool, optional
Force recalculation and overwrite existing (default: False)
- save_dataset_namestr, optional
Custom name for saved dataset (default: auto-generated)
- **kwargsAny
Additional FFT configuration options
Returns:
: FFTComputeResult
FFT computation result
Main Classes
FFTCompute
- class mmpp.fft.compute_fft.FFTCompute(debug=False)[source]
Bases:
object
Core FFT computation engine.
Handles low-level FFT calculations without user interface elements.
- Parameters:
debug (
bool
)
- __init__(debug=False)[source]
Initialize FFT compute engine.
Parameters:
- debugbool, optional
Enable debug logging (default: False)
- param debug:
- type debug:
- determine_engine(data_size)[source]
Determine best FFT engine based on data size.
- Return type:
Parameters:
- data_sizeint
Total number of elements to transform
Returns:
: str
Selected engine name
- param data_size:
- type data_size:
- apply_window(data, window_type)[source]
Apply window function to data.
- Return type:
Parameters:
- datanp.ndarray
Input data (time axis first)
- window_typestr
Window function type
Returns:
: np.ndarray
Windowed data
- apply_filter(data, filter_type)[source]
Apply filtering to data.
- Return type:
Parameters:
- datanp.ndarray
Input data (time axis first)
- filter_typestr
Filter type
Returns:
: np.ndarray
Filtered data
- compute_fft(data, dt, engine)[source]
Compute FFT using specified engine.
Parameters:
- datanp.ndarray
Input data (time axis first)
- dtfloat
Time step
- enginestr
FFT engine to use
Returns:
: tuple
(frequencies, fft_data)
- calculate_fft_method1(data, dt, window='hann', filter_type='remove_mean', engine=None)[source]
FFT Method 1: Apply filtering and windowing, then FFT, then average spatially.
- Return type:
Parameters:
- datanp.ndarray
Input data (time, …, components)
- dtfloat
Time step
- windowstr
Window type
- filter_typestr
Filter type
- enginestr, optional
FFT engine
Returns:
: FFTComputeResult
FFT computation result
- param data:
- type data:
- param dt:
- type dt:
- param window:
- type window:
Literal
['none'
,'hann'
,'hamming'
,'blackman'
,'bartlett'
,'kaiser'
,'tukey'
,'gaussian'
]- param filter_type:
- type filter_type:
Literal
['none'
,'remove_mean'
,'remove_static'
,'detrend_linear'
,'remove_mean_and_static'
]- param engine:
- type engine:
- calculate_fft_method2(data, dt, window='hann', filter_type='remove_mean', engine=None)[source]
FFT Method 2: Apply filtering, average spatially, then windowing and FFT.
- Return type:
Parameters:
- datanp.ndarray
Input data (time, …, components)
- dtfloat
Time step
- windowstr
Window type
- filter_typestr
Filter type
- enginestr, optional
FFT engine
Returns:
: FFTComputeResult
FFT computation result
- param data:
- type data:
- param dt:
- type dt:
- param window:
- type window:
Literal
['none'
,'hann'
,'hamming'
,'blackman'
,'bartlett'
,'kaiser'
,'tukey'
,'gaussian'
]- param filter_type:
- type filter_type:
Literal
['none'
,'remove_mean'
,'remove_static'
,'detrend_linear'
,'remove_mean_and_static'
]- param engine:
- type engine:
- load_data_from_zarr(zarr_path, dataset, z_layer=-1)[source]
Load data from zarr file.
Parameters:
- zarr_pathstr
Path to zarr file
- datasetstr
Dataset name
- z_layerint
Z-layer index (-1 for last layer)
Returns:
: tuple
(data, dt) where data is the loaded array and dt is time step
- load_existing_fft_data(zarr_path, dataset_name='fft')[source]
Load existing FFT data from zarr file.
- Return type:
Parameters:
- zarr_pathstr
Path to zarr file
- dataset_namestr, optional
Dataset name (default: “fft”)
Returns:
: Optional[FFTComputeResult]
Loaded FFT result or None if not found
- calculate_fft_data(zarr_path, dataset, z_layer=-1, method=1, save=False, force=False, save_dataset_name=None, **kwargs)[source]
Calculate FFT for data from zarr file.
- Return type:
Parameters:
- zarr_pathstr
Path to zarr file
- datasetstr
Dataset name
- z_layerint
Z-layer index (-1 for last layer)
- methodint
FFT method (1 or 2)
- savebool, optional
Save result to zarr file (default: False)
- forcebool, optional
Force recalculation and overwrite existing (default: False)
- save_dataset_namestr, optional
Custom name for saved dataset (default: auto-generated)
- **kwargsAny
Additional FFT configuration options
Returns:
: FFTComputeResult
FFT computation result
FFTComputeResult
- class mmpp.fft.compute_fft.FFTComputeResult(frequencies, spectrum, metadata, config)[source]
Bases:
object
Result of FFT computation.
- Parameters:
-
config:
FFTComputeConfig
FFTConfig
Usage Examples
Basic FFT Computation
import mmpp
# Setup FFT computation
db = mmpp.open('/path/to/data')
result = db.find(solver=3)[0]
# Compute FFT with custom parameters
fft_result = result.fft.spectrum(
dset='m_z11',
z_layer=-1,
method=1,
save=True,
force=False
)
# Access computed data
frequencies = result.fft.frequencies()
power_spectrum = result.fft.power()
magnitude = result.fft.magnitude()
phase = result.fft.phase()
Advanced Configuration
# Custom FFT configuration
from mmpp.fft.compute_fft import FFTConfig
config = FFTConfig(
window_function='hann',
fft_engine='scipy',
zero_padding=True,
nfft=1024
)
# Use configuration
fft_result = result.fft._compute_fft(
dataset_name='m_z11',
z_layer=-1,
method=1,
config=config
)