Skip to main content

Pulseq in Python

Project description

PyPulseq

PyPulseq: A Python Package for MRI Pulse Sequence Design

PyPulseq (v1.4.2) is compatible with all Pulseq interpreter sequences with version >= 1.4.0

Table of contents 🧾

  1. 📃 General Information
  2. 🔨 Installation
  3. ⚡ Lightning-start - PyPulseq in your browser!
  4. 🏃‍♂ Quickstart - example scripts
  5. 🤿 Deep dive - custom pulse sequences
  6. 👥 Contributing and Community guidelines
  7. 📖 References

1. General Information

Pulse sequence design is a significant component of MRI research. However, multi-vendor studies require researchers to be acquainted with each hardware platform's programming environment.

PyPulseq enables vendor-neutral pulse sequence design in Python [1,2]. The pulse sequences can be exported as a .seq file to be run on Siemens, GE, Bruker and now also Philips hardware by leveraging their respective Pulseq interpreters. This tool is targeted at MRI pulse sequence designers, researchers, students and other interested users. It is a translation of the Pulseq framework originally written in Matlab [3].

👉 Currently, PyPulseq is compatible with Pulseq >= 1.4.0. 👈

It is strongly recommended to first read the Pulseq specification before proceeding. The specification document defines the concepts required for pulse sequence design using PyPulseq.

If you use PyPulseq in your work, please cite the publications listed under References.


2. 🔨 Installation

PyPulseq is available on the python Package Index PyPi and can be installed using the command

pip install pypulseq

The latest features and minor bug fixes might not be included in the latest release version. If you want to use the bleeding edge version of PyPulseq, you can install it directly from the development branch of this repository using the command

pip install git+https://github.com/imr-framework/pypulseq@dev

👉 PyPulseq is not yet available on conda, but this is planned for the future 👈


3. ⚡ Lightning-start - PyPulseq in your browser

  1. Create a new notebook on Google Colab
  2. Install PyPulseq using pip install pypulseq
  3. Get going!

4. 🏃‍♂ Example scripts

The PyPulseq repository contains several example sequences in the seq_examples folder. Every example script or example notebook creates a pulse sequence, plots the pulse timing diagram and finally saves the sequence as a .seq file to disk.


5. 🤿 Deep dive - custom pulse sequences

Getting started with pulse sequence design using PyPulseq is simple:

  1. First, define system limits in Opts and then create a Sequence object with it:

    import pypulseq as pp
    
    system = pp.Opts(max_grad=32, grad_unit='mT/m', max_slew=130, slew_unit='mT/m/ms')
    seq = pp.Sequence(system=system)
    
  2. Then, design gradient, RF or ADC pulse sequence events:

    Nx, Ny = 256, 256 # matrix size
    fov = 220e-3 # field of view
    delta_k = fov / Nx
    
    # RF sinc pulse with a 90 degree flip angle
    rf90 = pp.make_sinc_pulse(flip_angle=90, duration=2e-3, system=system, slice_thickness=5e-3, apodization=0.5,
       time_bw_product=4)
    
    # Frequency encode, trapezoidal event
    gx = pp.make_trapezoid(channel='x', flat_area=Nx * delta_k, flat_time=6.4e-3, system=system)
    
    # ADC readout
    adc = pp.make_adc(num_samples=Nx, duration=gx.flat_time, delay=gx.rise_time, system=system)
    
  3. Add these pulse sequence events to the Sequence object. One or more events can be executed simultaneously, simply pass them all to the add_block() method. For example, the gx and adc pulse sequence events need to be executed simultaneously:

    seq.add_block(rf90)
    seq.add_block(gx, adc)
    
  4. Visualize plots:

    seq.plot()
    
  5. Generate a .seq file to be executed on a real MR scanner:

    seq.write('demo.seq')
    

6. 👥 Contributing and Community guidelines

PyPulseq adheres to a code of conduct adapted from the Contributor Covenant code of conduct. Contributing guidelines can be found here.


7. 📖 References

  1. Ravi, Keerthi, Sairam Geethanath, and John Vaughan. "PyPulseq: A Python Package for MRI Pulse Sequence Design." Journal of Open Source Software 4.42 (2019): 1725.
  2. Ravi, Keerthi Sravan, et al. "Pulseq-Graphical Programming Interface: Open source visual environment for prototyping pulse sequences and integrated magnetic resonance imaging algorithm development." Magnetic resonance imaging 52 (2018): 9-15.
  3. Layton, Kelvin J., et al. "Pulseq: a rapid and hardware‐independent pulse sequence prototyping framework." Magnetic resonance in medicine 77.4 (2017): 1544-1552.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypulseq-1.4.2.tar.gz (238.6 kB view details)

Uploaded Source

Built Distribution

pypulseq-1.4.2-py3-none-any.whl (278.0 kB view details)

Uploaded Python 3

File details

Details for the file pypulseq-1.4.2.tar.gz.

File metadata

  • Download URL: pypulseq-1.4.2.tar.gz
  • Upload date:
  • Size: 238.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for pypulseq-1.4.2.tar.gz
Algorithm Hash digest
SHA256 9d7fdf9969af751376cd16f07084e3080942ff1b2d47d4c846c972e1413913c2
MD5 310cf73e5b60c76ba745790d8c92b93e
BLAKE2b-256 a338fa8c82aee6cc4520d0d6ebe759b9c04488be79207b8811342c23d0d631e8

See more details on using hashes here.

File details

Details for the file pypulseq-1.4.2-py3-none-any.whl.

File metadata

  • Download URL: pypulseq-1.4.2-py3-none-any.whl
  • Upload date:
  • Size: 278.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for pypulseq-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bcb190d5356ca5c01c187adf3ef5d2d559928cfd7ea400f00c89e6ed9a322c02
MD5 173c5bc4428ab50afc4170f4edee2b18
BLAKE2b-256 adde545495e1f977883cc456dadcbdba6195baf0924217b01c823a1c00a3c723

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page