Skip to main content

Physics-Guided Ultra-Low-Field MRI Enhancement & Simulation

Project description

ULF-Synth

ULF-Synth: Physics-Guided Ultra-Low-Field MRI Enhancement for Pediatric Neuroimaging

arXiv License: MIT Python

Abstract

Ultra-low-field (ULF) MRI enables portable and accessible neuroimaging, but suffers from low signal-to-noise ratio and limited spatial resolution relative to high-field (HF) systems. Acquiring paired ULF–HF data for supervised enhancement is often infeasible, particularly in resource-limited settings. We introduce ULF-Synth, a framework combining: (i) acquisition-based synthesis of realistic ULF images from HF volumes for large-scale paired training, and (ii) a spatial-frequency domain objective that prioritizes recovery of high-frequency anatomical detail. The formulation is architecture-agnostic, consistently improving structural similarity and perceptual fidelity across encoder-decoder, adversarial, and diffusion-based translation models. Trained exclusively on synthetic data, our models generalize to real 64 mT ULF acquisitions, improving multiclass brain segmentation and achieving higher radiologist preference and diagnostic acceptability in a blinded reader study.


Simulation Pipeline

The ULF synthesis module models the key physical phenomena distinguishing ULF from HF acquisitions:

Effect Implementation
1 Signal scaling $(B_{{ULF}}/B_{{HF}})^2$ polarization ratio
2 T2* decay & B0 inhomogeneity Spatially-varying exponential decay from random B0 field maps
3 Thermal noise Gaussian noise scaled to SNR 15–50
4 k-space cropping Reduced resolution (45–55%)
5 k-space undersampling Accelerated acquisition (2×–3×) with center-out sampling
6 B0 off-resonance distortion Phase distortion from random B0 field maps

Qualitative Results

Sample results


Installation

git clone https://github.com/toufiqmusah/ULF-Synth.git
cd ULF-Synth
pip install -e .

This installs ulfsynth and all core dependencies (including PyTorch). The bundled nnUNet translation fork is automatically discovered and installed during setup — no extra steps needed.

Install from PyPI (future)

pip install ulfsynth          # simulation only
pip install ulfsynth[full]    # with enhancement support

CLI

The ulfsynth package provides three commands:

ulfsynth simulate — ULF synthesis from HF volumes

# Single volume
ulfsynth simulate input.nii.gz output.nii.gz

# Folder of NIfTI files
ulfsynth simulate /path/to/hf/scans/ /path/to/ulf/scans/

# Reproducible seed
ulfsynth simulate input.nii.gz output.nii.gz --seed 42

ulfsynth enhance — ULF→HF restoration (requires nnUNet)

# Single volume (CPU)
ulfsynth enhance --device cpu input.nii.gz output.nii.gz

# Folder of NIfTI files (GPU)
ulfsynth enhance /path/to/ulf/scans/ /path/to/enhanced/scans/

# Weights are downloaded from HuggingFace on first use.
# Pre-download: ulfsynth download-weights

ulfsynth download-weights — cache pretrained weights

ulfsynth download-weights

Caches model weights from HuggingFace to ~/.cache/ulfsynth/.


Python API

Simulation

from ulfsynth.simulate import simulate_ulf, simulate_file, simulate_folder, sample_params

# Generate one ULF volume with random parameters
ulf_volume, affine, header, params = simulate_ulf("hf_input.nii.gz")

# With a fixed seed
ulf_volume, affine, header, params = simulate_ulf("hf_input.nii.gz", seed=42)

# Custom parameters
params = sample_params()
params["signal_target"] = 30
ulf_volume, affine, header, params = simulate_ulf("hf_input.nii.gz", params=params)

# Single-file convenience (returns params dict)
params = simulate_file("hf_input.nii.gz", "ulf_output.nii.gz", seed=42)

# Batch folder processing (returns list of params)
results = simulate_folder("hf_scans/", "ulf_scans/", seed=42)

Output preserves the input affine and header metadata.

Enhancement

from ulfsynth.enhance import enhance_file, enhance_folder

# Single file
enhance_file("ulf_input.nii.gz", "enhanced_output.nii.gz", device="cpu")

# Batch folder processing
enhance_folder("ulf_scans/", "enhanced_scans/", device="cuda")

Requires nnUNet (pip install -e src/nn-translation/). Weights are auto-downloaded on first call.


Roadmap

  • Physics-guided ULF synthesis pipeline
  • Pre-trained enhancement weights — ULF→HF restoration models
  • Python package — pip install ulfsynth
  • Docker image — zero-config containerized pipeline

Citation

@misc{musah2026ulfsynth,
  title        = {ULF-Synth: Physics-Guided Ultra-Low-Field MRI Enhancement for Pediatric Neuroimaging},
  author       = {Toufiq Musah and Salvatore Calcagno and Federica Proietto Salanitri and Xiaomeng Li and Maruf Adewole and Marawan Elbatel},
  year         = {2026},
  eprint       = {2605.24625},
  archivePrefix = {arXiv},
  url          = {https://arxiv.org/abs/2605.24625}
}

License

MIT

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

ulfsynth-0.1.6.tar.gz (21.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ulfsynth-0.1.6-py3-none-any.whl (323.5 kB view details)

Uploaded Python 3

File details

Details for the file ulfsynth-0.1.6.tar.gz.

File metadata

  • Download URL: ulfsynth-0.1.6.tar.gz
  • Upload date:
  • Size: 21.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ulfsynth-0.1.6.tar.gz
Algorithm Hash digest
SHA256 55487e1673f59f05b1d3c4a1397171f3dddbf8c015675dd10816febe735aeacb
MD5 7625ca15f73bace35f303523caa4b80e
BLAKE2b-256 f0bcae9509d26cc69dca0cbfe607c213fb7de7ea614c386d56364bc07c05e296

See more details on using hashes here.

Provenance

The following attestation bundles were made for ulfsynth-0.1.6.tar.gz:

Publisher: ci.yml on toufiqmusah/ULF-Synth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ulfsynth-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: ulfsynth-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 323.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ulfsynth-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 f1995c90e45f4fca9052156a7484e0811bbaaa2eee9e04bd52f23b7bda05639b
MD5 957a1ed37d4a40f7111d2f1ff5115108
BLAKE2b-256 f98367f3d515126e8e9ae598b45a6bd61efdcda0f0e89722fb9668ca68f43249

See more details on using hashes here.

Provenance

The following attestation bundles were made for ulfsynth-0.1.6-py3-none-any.whl:

Publisher: ci.yml on toufiqmusah/ULF-Synth

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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