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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71a47dd75518070dde98ab254f0a247cf9219992ceff281787d1b2a6db546f98 |
|
MD5 | aa62e354614fc933bf1e1477152a86e4 |
|
BLAKE2b-256 | 3b35be79bce72f9129ddd570af498775b7ce170020ccef1f1782003dede52d1e |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91a40dd8b0d38070b1ddb8fa596abbe7bae268f4517f19226621eb11d8df4657 |
|
MD5 | 49d83fc15ba770a6b1cfe7f1c9ce3c3e |
|
BLAKE2b-256 | 283531f0b01c7b9cf71d09fa5e1b768371fb36a176ed70188880b154d17d195c |