-
Notifications
You must be signed in to change notification settings - Fork 21
Acquire
Numerical simulation of MR signals using the Bloch equation
API documentation page: https://imr-framework.github.io/virtual-scanner/docs/source/virtualscanner.server.simulation.bloch.html
The current simulation method is based on this paper. A numerical phantom consists of 3 volume arrays: T1 map, T2 map, and PD map. This results in a 3 x [A x B x C] data structure where there is a single isochromat each location and A, B, C are the number of points in each spatial dimension.
The simulator reads a Pulseq format "Sequence" object and stores it as a series of commands with gradient, RF, and ADC information before applying them one by one on each spin group.
Four types of events are possible:
- RF (with optional gradient)
- fpwg ("free precession with gradient")
- readout (ADC with gradient, applied in discrete steps)
- delay (equivalent to fpwg without gradient).
This k-space data is summed across all spin groups at the end and then reconstructed into an image.
To run the acquire page using the UI, please follow the instructions here.
You can also use this form to give feedback.
See API documentation (link) for detailed description of individual functions.
To run
utest_pulseq_blochsim.py
- Defaults: 15 x 15 planar phantom - central axial slice from 15 x 15 x 15 cylinder
- You should see a simulated image of a large circle containing 4 smaller circles.
utest_pulseq_blochsim_epi.py
- Defaults: 15 x 15 planar phantom - central axial slice from 15 x 15 x 15 cylinder
- Note that the EPI script is different because it realigns readout lines before reconstruction.
pulseq_library.py
- Run functions from here to generate custom 2D Cartesian GRE, SE, IRSE, and EPI sequences and swap them in to simulate with different acquisition parameters. Have fun!