TorchSim is a pure Pytorch-based MR simulator, including analytical and EPG model.
TorchSim contains tools to implement parallelized and differentiable MR simulators. Specifically, we provide
- Automatic vectorization of across multiple atoms (e.g., voxels).
- Automatic generation of forward and jacobian methods (based on forward-mode autodiff) to be used in parameter fitting or model-based reconstructions.
- Support for custom manual defined jacobian methods to override auto-generated jacobian.
- Support for advanced signal models, including diffusion, flow, magnetization transfer and chemical exchange.
- GPU support.
TorchSim can be installed via pip as:
pip install torchsim
Using TorchSim, we can quickly implement and run MR simulations. We also provide pre-defined simulators for several applications:
import numpy as np
import torchsim
# generate a flip angle pattern
flip = np.concatenate((np.linspace(5, 60.0, 300), np.linspace(60.0, 2.0, 300), np.ones(280)*2.0))
sig, jac = torchsim.mrf_sim(flip=flip, TR=10.0, T1=1000.0, T2=100.0, diff=("T1","T2"))
This way we obtained the forward pass signal (sig
) as well as the jacobian
calculated with respect to T1
and T2
.
If you are interested in improving this project, install TorchSim in editable mode:
git clone git@github.com:INFN-MRI/torchsim
cd torchsim
pip install -e .[dev,test,doc]
This package is inspired by the following excellent projects:
- epyg <https://github.com/brennerd11/EpyG>
- sycomore <https://github.com/lamyj/sycomore/>
- mri-sim-py <https://somnathrakshit.github.io/projects/project-mri-sim-py-epg/>
- ssfp <https://github.com/mckib2/ssfp>
- erwin <https://github.com/lamyj/erwin>