A vendor-neutral intermediate representation for Pulseq MRI sequences
🛠️ Under Development
PulSeg provides a standardized pipeline for converting Pulseq MRI pulse sequence files into a segment-based intermediate representation.
This abstraction enables translation of Pulseq sequences to certain hardware platforms such as GE.
Project status:
Version 1.0 of the intermediate representation specification is now formalized – see docs/spec.md.
-
Base Block: A Pulseq block with normalized waveform amplitudes. Base blocks are the fundamental normalized atomic building blocks of the sequence (
excite,acquire,spoil, etc.). -
Virtual Segment: Ordered sequences of base blocks.
-
Segment Instance: Specific realizations of virtual segments in the scan loop, with defined amplitudes, phases, and offsets.
Clone the repository:
git clone https://github.com/HarmonizedMRI/pulseg.gitAdd to MATLAB path:
>> addpath pulseg/matlab % +pulseg toolbox
>> addpath(genpath('pulseg/matlab/third_party'))- Create the Pulseq (
.seq) file. AssignTRIDlabel to the first block in each segment instance.
At present,
TRIDlabels must be explicitly assigned by the sequence designer. Automatically detecting and assigning segment instances is an unmet need.
-
Convert to PulSeg intermediate representation
psq = pulseg.fromSeq('path/to/your/sequence.seq');
-
For execution on GE, use the
pge2toolbox, https://github.com/HarmonizedMRI/pge2.
Contributions are welcome!
- Open issues for bugs or feature requests
- Submit pull requests (please work off the
mainbranch!)
This repository is licensed under MIT.
If you use PulSeg for your research, please cite:
pulseg: A Harmonized Intermediate Representation for MRI Sequence Files, HarmonizedMRI Consortium, 2026.
Questions or feedback? Open a GitHub Issue or email: your-address@your-domain.edu
Go Blue!
