Skip to content

Acquire

Gehua Tong edited this page Jul 18, 2019 · 21 revisions

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

Methods

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.

Run in GUI

To run the acquire page using the UI, please follow the instructions here.

You can also use this form to give feedback.

Run with Python scripts

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!

Clone this wiki locally