Define MRI sequences in pure Python.
The cmrseq framework defines MRI sequences consisting of radio-frequency pulses, gradient waveforms, and sampling events. Definitions follow a hierarchical model where basic building blocks (arbitrary gradients, trapezoids, RF pulses, and ADC events) form the core functionality and are all instances of SequenceBaseBlock. On instantiation all base-blocks are validated against the System specifications. Composition of base-blocks is done in a Sequence object. The Sequence object implements convenient definitions for addition and composition of multiple Sequence objects as well as a variety of common operations on semantically grouped base-blocks.
Several semantically connected groups of building blocks (e.g. a slice selective excitation) are already functionally defined in the parametric_definitions module. For a complete list of available definitions, see the API reference.
The original motivation for cmrseq was to create a foundation to define sequences for simulation experiments. Therefore Sequences can be easily gridded onto a regular (or even unregular grids with a maximum step width) grids. Furthermore, commonly useful functionalities as plotting, evaluation of k-space-trajectories, calculation of moments, etc.
To close the gap to real-world measurements, cmrseq includes an IO module that allows loading Phillips (GVE) sequence definitions as well as reading and writing Pulseq (>= 1.4) files, which then can be used to export the sequence to multiple vendor platforms. For more information on this file format please refer to the official PulSeq web-page.
The registry contains the versioned package, which can be installed using:
pip install cmrseq
There are only few package dependencies, namely: - numpy - matplotlib to display the waveforms - pint to assign physical units and assert correctness of calculations - tqdm progressbar visualizations - scipy selected functionalities
The documentation is published with GitHub Pages:
https://mcgrathcm.github.io/cmrseq/
The source repository is hosted on GitHub: