KomaMRI.jl
KomaMRI.jl is the simulation pillar of this workflow. KomaMRI is a fast and extensible MRI simulation framework in Julia, with Bloch-equation simulation and CPU/GPU execution.
Core characteristics used in this workflow:
Pulseq in, ISMRMRD out.
Fast CPU and GPU simulation.
Open-source MRI simulation framework.
Why KomaMRI in this workflow
KomaMRI lets us create controlled synthetic acquisitions before running reconstruction algorithms. This is important for:
testing algorithm behavior under known conditions
comparing reconstruction backends with the same input data
In user terms, this means you can tune and validate a reconstruction workflow before depending on scanner-acquired datasets.
KomaMRI also emphasizes practical interoperability, including Pulseq and ISMRMRD-oriented workflows. That is useful in research settings where simulated and measured data pipelines need to align as closely as possible.
Simulation parameters (sim_params)
KomaMRI exposes key simulation controls through sim_params. Key parameters include:
Delta t("Δt"): gradient raster timeDelta t rf("Δt_rf"): RF raster timegpu: run on GPU (if available) or CPUprecision:"f32"or"f64"Nblocks: split simulation time into blocks to reduce memory usageNthreads: parallel split over phantom/spins
The same parameter dictionary also includes sim_method, return_type, and other extensibility controls.
Example configuration pattern
using KomaMRICore
sim_params = KomaMRICore.default_sim_params()
sim_params["gpu"] = false
sim_params["precision"] = "f64"
sim_params["Nblocks"] = 40
sim_params["Δt"] = 1e-6
sim_params["Δt_rf"] = 1e-6
# raw = simulate(obj, seq, sys; sim_params)Synthetic-data generation pattern:
# raw synthetic acquisition for downstream tasks
raw = simulate(obj, seq, sys; sim_params)
# Example uses:
# 1) training data generation
# 2) reconstruction benchmarking in MRIReco/BARTCustomizable components
KomaMRI simulation is driven by:
phantom (
obj)sequence (
seq)scanner/system (
sys)
This matches the requirement for customizable sequence, phantom, and scanner setups.
Synthetic data use in downstream steps
The raw simulated signal can be passed to:
MRIReco.jl (Julia-native reconstruction)
BART via BartIO.jl (cross-tool comparison)