Neural non-linear force-free magnetic field extrapolation framework
Project description
Neural Network Force-Free Magnetic Field Extrapolation - NF2
NF2 is a Python framework for neural non-linear force-free magnetic-field extrapolations. It supports Cartesian and spherical geometries, single-boundary and multi-height observations, extrapolation series, standard NLFF quality metrics, and exports for scientific analysis and visualization.
The framework is designed for solar-physics analyses with HMI/SHARP, full-disk, synoptic, and benchmark data, while keeping the training, export, and evaluation interfaces consistent across geometries.
Installation
NF2 supports Python 3.11 and 3.12.
Install from PyPI:
pip install nf2
Install with conda:
conda install nf2
For GPU-enabled PyTorch installs, select your CUDA version at pytorch.org/get-started/locally. For CUDA 12.6, run:
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu126
For development or source installs:
git clone https://github.com/RobertJaro/NF2.git
cd NF2
python -m pip install -r requirements.txt
The recommended conda environment for local development is:
conda env create -f environment.yml
conda activate nf2
See the online installation guide for pip, conda, local, and development installation options.
Quick Start
Run an extrapolation from a YAML configuration:
nf2-extrapolate \
--config nf2/cartesian/sharp_cea.yaml \
--run_path "./runs/ar377" \
--work_path "/scratch/ar377" \
--Br "/data/Br.fits" \
--Bt "/data/Bt.fits" \
--Bp "/data/Bp.fits"
Download HMI SHARP data:
nf2-download \
--source hmi_sharp \
--download_dir "./data/sharp" \
--email "you@example.org" \
--sharp_num 377 \
--t_start "2011-02-15T00:00:00"
Export a trained extrapolation:
nf2-export \
"path/to/extrapolation_result.nf2" \
--format vtk \
--out "path/to/field.vtk" \
--Mm_per_pixel 0.72 \
--metrics j alpha free_energy_fft
Print standard NLFF quality metrics:
nf2-metrics \
"path/to/extrapolation_result.nf2" \
--Mm_per_pixel 0.72 \
--height_range 0 80
Run a time series or parameter series:
nf2-extrapolate-series --config "path/to/series.yaml"
Python API
import nf2
out = nf2.load("path/to/extrapolation_result.nf2")
cube = out.load_cube(Mm_per_pixel=0.72, metrics=["j", "alpha"])
j is the current-density magnitude |J|. Request j_vec when you need the full current-density vector, for example for custom force-free alignment metrics.
Direct helpers are also available:
from nf2 import CartesianOutput, SphericalOutput, run, run_series
Examples
Example configurations are bundled with the package and can be passed as names such as nf2/cartesian/sharp_cea.yaml. Source templates live in nf2/configs; see the examples overview for guidance by run type:
nf2/cartesian/sharp_cea.yamlnf2/cartesian/minimal_fits.yamlnf2/cartesian/auto_disambiguation.yamlnf2/cartesian/multi_height.yamlnf2/cartesian/sharp_cea_series.yamlnf2/cartesian/multi_height_series.yamlnf2/spherical/hmi_full_disk.yamlnf2/benchmark/analytical_case1.yamlnf2/benchmark/analytical_case2.yaml
Notebooks are available in examples/notebooks, including a Colab SHARP CEA tutorial, local SHARP CEA, Cartesian series, spherical HMI, and analytical benchmark runs. Command-line examples for downloads, extrapolations, exports, metrics, and series runs are split by topic under examples/scripts.
Documentation
The full documentation is online at nf2.readthedocs.io.
The documentation includes:
- Installation instructions for pip, conda, local checkouts, and development setups
- Quickstart and usage overview
- YAML configuration reference
- Cartesian, spherical, analytical, and series extrapolation runs
- Training guidance for losses, schedules, height scaling, validation resolution, and memory use
- Evaluation guidance for exports and quality metrics
- Dataset, sampler, and normalization options
- Download, extrapolation, export, and metric commands
- Python API reference
- Example notebook descriptions
- FAQ
- Publication list
Visualization
NF2 results can be exported to VTK and visualized with ParaView:
Publications
Core NF2 method and tool-development papers:
- Jarolim, Thalmann, Veronig, and Podladchikova 2023, Nature Astronomy
"Probing the solar coronal magnetic field with physics-informed neural networks."
DOI: 10.1038/s41550-023-02030-9 - Jarolim, Tremblay, Rempel, Molnar, Veronig, Thalmann, and Podladchikova 2024, The Astrophysical Journal Letters
"Advancing solar magnetic field extrapolations through multiheight magnetic field measurements."
DOI: 10.3847/2041-8213/ad2450 - Jarolim, Veronig, Purkhart, Zhang, and Rempel 2024, The Astrophysical Journal Letters
"Magnetic field evolution of the solar active region 13664."
DOI: 10.3847/2041-8213/ad8914 - da Silva Santos, Dunnington, Jarolim, Danilovic, and Criscuoli 2025, The Astrophysical Journal
"Magnetic Reconnection in a Compact Magnetic Dome: Chromospheric Emissions and High-velocity Plasma Flows."
DOI: 10.3847/1538-4357/adcf23
See docs/publications.md for selected applications.
License
NF2 is released under the GPL-3.0 license.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nf2-0.4.1.tar.gz.
File metadata
- Download URL: nf2-0.4.1.tar.gz
- Upload date:
- Size: 651.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30ab2f81708f6029f2b8fbc9d7414aeb5caaf7315e9c26d924f88b2d0ea3b2c7
|
|
| MD5 |
f68ce640901c080735ace08ee7434a17
|
|
| BLAKE2b-256 |
5f7b684b29b98ffc931aca30927239772c1c33926e5de600880163b5694df313
|
File details
Details for the file nf2-0.4.1-py3-none-any.whl.
File metadata
- Download URL: nf2-0.4.1-py3-none-any.whl
- Upload date:
- Size: 127.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
404fd6064ff9effe77346e1355d5afe985e956287c2fed2e7d8e0f24cbad5d01
|
|
| MD5 |
398dbd33986ff54d9065854177b8814a
|
|
| BLAKE2b-256 |
fd17c5481131349c47465a9f71047e876570f0c61dc42713a128e8cb25d05bc5
|