Skip to main content

micromagnetic post processing library

Project description

Pyzfn

Pyzfn is a micromagnetic post-processing library designed for analyzing and visualizing data generated by amumax, a fork of mumax3. It provides a convenient interface for working with simulation data stored in Zarr format, offering optimized functions for data manipulation, spectral analysis, and visualization.

Features

  • Easy Data Access: Load and navigate large simulation datasets efficiently.
  • Spectral Analysis: Calculate dispersion relations and extract spin wave modes.
  • Visualization Tools: Generate snapshots and interactive spectral plots.
  • Integration with Zarr: Leverage Zarr's capabilities for handling big data.

Installation

Install Pyzfn using pip:

pip install pyzfn

Usage

Pyzfn builds upon the functionalities provided by Zarr. Familiarity with Zarr is recommended for advanced usage.

Importing Pyzfn

from pyzfn import Pyzfn

Loading a Simulation

# Replace 'path/to/job.zarr' with your simulation data path
job = Pyzfn('path/to/job.zarr')

Exploring the Data Structure

Pretty Print the Data Tree

# Interactive tree (requires IPython)
job.pp

Simple Data Tree Print

# Non-interactive print
job.p

Accessing Simulation Metadata

Simulation metadata is stored in the .attrs attribute:

# Access metadata as a dictionary
dx = job.attrs['dx']

# Or as a class attribute (if no dataset shares the same name)
dx = job.dx

Retrieving Simulation Data

Access datasets saved during the simulation:

# Access magnetization data
# For example, get the x-component of magnetization for time steps 10 <= t < 20
# Dimensions are (time, z, y, x, component)
mag = job.m[10:20, :, :, :, 0]  # mag is a NumPy array

Lazy Loading

To handle large datasets without loading them into memory immediately:

# Get a reference to the dataset
mag_dset = job.m

# Load data when needed
arr = mag_dset[:]

Dataset Information

Display detailed information about a dataset:

mag_dset.info

Utilizing Help Functions

Use Python's built-in help and dir functions for assistance:

help(mag_dset)

Post-Processing Functions

Pyzfn provides optimized functions for common post-processing tasks.

Calculating Dispersion Relations

# Calculate the dispersion relation for the magnetization dataset
job.calc_disp(dset_in_str='m', dset_out_str='m')

Calculating Spin Wave Modes

# Extract spin wave modes from the data
job.calc_modes(dset_in_str='m', dset_out_str='m')

Data Visualization

Snapshot Visualization

Generate a snapshot of the magnetization at a specific time step:

# Visualize the magnetization at time index t=50 and layer z=0
job.snapshot(t=50, z=0)

Interactive Spectral Analysis

Launch an interactive FFT spectrum plot:

# Interactive spectrum analysis
job.ispec(dset='m', c=0)

Advanced Usage

Custom Slicing

Optimize memory usage and performance with custom slicing:

# Define custom slices for processing
slices = (
    slice(None),  # Time dimension
    slice(None),  # z dimension
    slice(None),  # y dimension
    slice(None),  # x dimension
    slice(None)   # Component dimension
)

# Calculate modes with custom slices
job.calc_modes(dset_in_str='m', dset_out_str='m', slices=slices)

Saving and Loading OVF Files

Pyzfn includes utilities for working with OOMMF's OVF file format:

from pyzfn.utils import save_ovf, load_ovf

# Save data to an OVF file
save_ovf('output.ovf', mag)

# Load data from an OVF file
data = load_ovf('output.ovf')

Trimming Modes

Trim modes based on peak detection to reduce data size:

# Trim modes with specified parameters
job.trim_modes(dset_in_str='m', dset_out_str='trimmed_m', peak_xcut_min=0)

Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue or submit a pull request on the GitHub repository.

Acknowledgments

  • amumax for simulation data.
  • Zarr for efficient data handling.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyzfn-0.1.13.tar.gz (53.6 kB view details)

Uploaded Source

Built Distribution

pyzfn-0.1.13-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

File details

Details for the file pyzfn-0.1.13.tar.gz.

File metadata

  • Download URL: pyzfn-0.1.13.tar.gz
  • Upload date:
  • Size: 53.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyzfn-0.1.13.tar.gz
Algorithm Hash digest
SHA256 71a47dd75518070dde98ab254f0a247cf9219992ceff281787d1b2a6db546f98
MD5 aa62e354614fc933bf1e1477152a86e4
BLAKE2b-256 3b35be79bce72f9129ddd570af498775b7ce170020ccef1f1782003dede52d1e

See more details on using hashes here.

File details

Details for the file pyzfn-0.1.13-py3-none-any.whl.

File metadata

  • Download URL: pyzfn-0.1.13-py3-none-any.whl
  • Upload date:
  • Size: 40.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for pyzfn-0.1.13-py3-none-any.whl
Algorithm Hash digest
SHA256 91a40dd8b0d38070b1ddb8fa596abbe7bae268f4517f19226621eb11d8df4657
MD5 49d83fc15ba770a6b1cfe7f1c9ce3c3e
BLAKE2b-256 283531f0b01c7b9cf71d09fa5e1b768371fb36a176ed70188880b154d17d195c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page