FFT Plotting Module

FFT Plotting Module

Specialized plotting functionality for FFT analysis results.

class mmpp.fft.plot.FFTPlotter(results, mmpp_instance=None)[source]

Bases: object

Specialized plotter for FFT analysis results.

Provides FFT-specific plotting capabilities.

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

Initialize FFT plotter.

Parameters:

resultsList or single result

ZarrJobResult objects to plot

mmpp_instanceMMPP, optional

Reference to parent MMPP instance

param results:

type results:

Union[list[Any], Any]

param mmpp_instance:

type mmpp_instance:

Optional[Any]

power_spectrum(dataset_name=None, method=1, z_layer=-1, log_scale=True, normalize=False, save=True, force=False, save_dataset_name=None, figsize=None, save_path=None, **kwargs)[source]

Plot power spectrum for all results.

Return type:

tuple[Any, Any]

Parameters:

dataset_namestr, optional

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

methodint, optional

FFT method (default: 1)

z_layerint, optional

Z-layer (default: -1)

log_scalebool, optional

Use logarithmic scale for power (default: True)

normalizebool, optional

Normalize power spectra (default: False)

savebool, optional

Save FFT result to zarr file (default: True)

forcebool, optional

Force recalculation and overwrite existing (default: False)

save_dataset_namestr, optional

Custom name for saved dataset (default: auto-generated)

figsizetuple, optional

Figure size

save_pathstr, optional

Path to save figure

**kwargsAny

Additional FFT configuration options

Returns:

: tuple

(figure, axes) matplotlib objects

param dataset_name:

type dataset_name:

Optional[str]

param method:

type method:

int

param z_layer:

type z_layer:

int

param log_scale:

type log_scale:

bool

param normalize:

type normalize:

bool

param save:

type save:

bool

param force:

type force:

bool

param save_dataset_name:

type save_dataset_name:

Optional[str]

param figsize:

type figsize:

Optional[tuple[float, float]]

param save_path:

type save_path:

Optional[str]

Main Classes

FFTPlotter

class mmpp.fft.plot.FFTPlotter(results, mmpp_instance=None)[source]

Bases: object

Specialized plotter for FFT analysis results.

Provides FFT-specific plotting capabilities.

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

Initialize FFT plotter.

Parameters:

resultsList or single result

ZarrJobResult objects to plot

mmpp_instanceMMPP, optional

Reference to parent MMPP instance

param results:

type results:

Union[list[Any], Any]

param mmpp_instance:

type mmpp_instance:

Optional[Any]

power_spectrum(dataset_name=None, method=1, z_layer=-1, log_scale=True, normalize=False, save=True, force=False, save_dataset_name=None, figsize=None, save_path=None, **kwargs)[source]

Plot power spectrum for all results.

Return type:

tuple[Any, Any]

Parameters:

dataset_namestr, optional

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

methodint, optional

FFT method (default: 1)

z_layerint, optional

Z-layer (default: -1)

log_scalebool, optional

Use logarithmic scale for power (default: True)

normalizebool, optional

Normalize power spectra (default: False)

savebool, optional

Save FFT result to zarr file (default: True)

forcebool, optional

Force recalculation and overwrite existing (default: False)

save_dataset_namestr, optional

Custom name for saved dataset (default: auto-generated)

figsizetuple, optional

Figure size

save_pathstr, optional

Path to save figure

**kwargsAny

Additional FFT configuration options

Returns:

: tuple

(figure, axes) matplotlib objects

param dataset_name:

type dataset_name:

Optional[str]

param method:

type method:

int

param z_layer:

type z_layer:

int

param log_scale:

type log_scale:

bool

param normalize:

type normalize:

bool

param save:

type save:

bool

param force:

type force:

bool

param save_dataset_name:

type save_dataset_name:

Optional[str]

param figsize:

type figsize:

Optional[tuple[float, float]]

param save_path:

type save_path:

Optional[str]

Usage Examples

Basic Spectrum Plotting

import mmpp

# Load data and get FFT interface
db = mmpp.open('/path/to/data')
result = db.find(solver=3)[0]

# Plot power spectrum
fig, ax = result.fft.plot_spectrum(
    dset='m_z11',
    log_scale=True,
    normalize=False
)

# Customize plot
ax.set_title('FMR Power Spectrum')
ax.set_xlabel('Frequency (GHz)')
ax.set_ylabel('Power (a.u.)')

Advanced Plotting Options

# Plot with custom styling
fig, ax = result.fft.plot_spectrum(
    dset='m_z11',
    method=1,
    z_layer=-1,
    log_scale=True,
    normalize=True,
    figsize=(12, 8),
    dpi=150,
    title='Normalized FMR Spectrum',
    xlabel='Frequency (GHz)',
    ylabel='Normalized Power'
)

# Add peak markers
frequencies = result.fft.frequencies()
power = result.fft.power()
peak_indices = np.where(power > 0.5 * power.max())[0]
ax.scatter(frequencies[peak_indices], power[peak_indices], 
          color='red', s=50, zorder=5, label='Peaks')
ax.legend()

Multi-Dataset Comparison

# Compare multiple datasets
datasets = ['m_x11', 'm_y11', 'm_z11']
fig, axes = plt.subplots(len(datasets), 1, figsize=(12, 4*len(datasets)))

for i, dset in enumerate(datasets):
    result.fft.plot_spectrum(
        dset=dset,
        ax=axes[i],
        title=f'Component: {dset}',
        log_scale=True
    )

plt.tight_layout()

Batch Plotting

# Plot spectra for multiple results
results = db.find(solver=3, limit=5)

fig, axes = plt.subplots(2, 3, figsize=(18, 12))
axes = axes.flatten()

for i, result in enumerate(results):
    if i < len(axes):
        result.fft.plot_spectrum(
            ax=axes[i],
            title=f'Result {i+1}',
            log_scale=True
        )

plt.tight_layout()