SigPy.RF: Comprehensive Open-Source RF Pulse Design Tools for Reproducible Research
Jonathan B Martin1, Frank Ong2, Jun Ma1, Jonathan I Tamir3,4, Michael Lustig3, and William A Grissom1
1Biomedical Engineering, Vanderbilt University, Nashville, TN, United States, 2Electrical Engineering, Stanford University, Stanford, CA, United States, 3Electrical Engineering and Computer Sciences, University of California, Berkeley, Berkeley, CA, United States, 4Electrical and Computer Engineering, UT Austin, Austin, TX, United States


We present SigPy.RF, an extensive set of open-source, Python-ba­­sed tools for MRI RF pulse design. This toolbox extends the SigPy Python software package and leverages SigPy’s existing capabilities for GPU computation, iterative optimization, and powerful abstractions for linear operators, proximal operators, and applications. Tools are available for all steps of the excitation design process including trajectory/gradient design, pulse design, and simulation. Our implemented functions for pulse design include advanced SLR, multiband, adiabatic, optimal control, B$$$_1^+$$$-selective and small-tip pTx designers. SigPy.RF pulse designs were validated in simulations and a pTx experiment.

Target Audience

MRI RF pulse and sequence developers and educators.


While RF pulse developers increasingly share code online in independent repositories, no unified set of common pulse design tools is maintained in a rigorous and consistent manner with easy-to-read code and tutorials. An open source pulse design code library would facilitate the development and dissemination of novel techniques and the comparison of approaches, similar to how BART$$$^1$$$, SigPy$$$^2$$$, and MIRT$$$^3$$$ have made advanced parallel imaging and compressed sensing reconstruction methods widely accessible. To meet this need, we have developed a library of pulse design tools as part of the SigPy Python package$$$^2$$$, which we call SigPy.RF. Here we detail the software’s organization and goals, provide examples, and show an experimental validation of parallel transmission (pTx) pulses designed using SigPy.RF.

Software Design

SigPy was chosen as a host software project because image reconstruction and RF pulse design require many of the same computational operations, and we can take advantage of SigPy’s powerful optimization tools, unified CPU and GPU interface, machine learning extensions, and sophisticated linear operator and application classes for pulse design, where they will be especially valuable for large non-linear and constrained parallel transmit (pTx) design problems. Python code is also easy-to-read and can be executed as a standalone program or using Jupyter notebooks, making it well-suited to both research and education. Figure 1 shows where the .rf tools fit into the SigPy function hierarchy, as a subclass of its .mri functions. Table 1 lists SigPy.RF’s currently implemented functions and planned pTx pulse design tools. These include tools for advanced SLR, multiband, adiabatic, optimal control, B$$$_1^+$$$-selective and small-tip pTx pulse design, along with functions for k-space/gradient trajectory design and Bloch simulation. Computationally intensive functions, such as Bloch simulators and the small-tip pTx designer include the option of GPU acceleration using SigPy’s CPU/GPU selection interface. SigPy.RF’s small-tip spatial domain parallel transmit pulse designer$$$^4$$$, rf.stspa(), includes options such as Tikhonov regularization, B$$$_0$$$ inhomogeneity correction, and instantaneous and average power constraints. Constrained optimization of pTx pulses is performed using the primal-dual hybrid gradient method$$$^5$$$ and SigPy’s proximal operator classes. Forthcoming pTx design functions listed in Table 1 include large-tip pTx design, as well designers for blipped trajectories such as $$$k_T$$$-points, spokes, echo-planar, and echo-planar shutter excitation pulses. A quadratically constrained quadratic program solver is also forthcoming, to enable local SAR-constrained pulse design for all pTx pulse types.


Figure 2 illustrates an interactive pTx small-tip spiral spatial domain pulse design performed with SigPy.RF’s stspa() function, in a Jupyter notebook. With only a few lines of code (see Figure 3), a spiral trajectory and the corresponding gradients are generated, the design is performed using stspa(), and the pulse is simulated to obtain the excited magnetization profile using a Linop object. Figure 4 shows predicted and imaged spiral excitation patterns in a phantom using 8 transmit channels on a 7T Philips Achieva scanner (Philips Healthcare, Best, Netherlands). maps were measured on the scanner, then exported and used in a SigPy pulse design, and the designed pulses were sent back to the scanner.


The latest version of SigPy includes the most stable pulse design tools developed, and is available from https://github.com/mikgroup/sigpy and can be installed through conda or pip. The SigPy.RF fork including pulse design tools still under development can be downloaded from https://github.com/jonbmartin/sigpy-rf. Jupyter notebook pulse design tutorials for SigPy.RF can be downloaded from https://github.com/jonbmartin/sigpy-rf-tutorials. An educational workshop on SigPy.RF will be held at the 2020 ISMRM Annual Meeting and Exhibition.

Discussion and Conclusion

We presented a comprehensive Python-based RF pulse design toolbox. Full end-to-end designs, including trajectory and gradient design, pulse design, and simulation can be completed with SigPy.RF, which will facilitate development of new pulse designs and pulse sequences, as well as RF pulse education. Currently the software includes designers for adiabatic, SLR, multiband, gSlider, B$$$_1^+$$$-selective, optimal control and small-tip pTx pulses, along with gradient trajectory and Bloch simulation tools. A major aim is to implement a comprehensive set of state-of-the-art pTx pulse design tools in the package, which will take advantage of SigPy’s proximal optimization, GPU, and linear operator functionality.


The authors thank Zhipeng Cao of Vanderbilt University for his assistance with the pTx experiment. This work was supported by NIH grant R01 EB 016695.


1. Uecker, M. et al. Berkeley Advanced Reconstruction Toolbox. Proc. ISMRM Annu. Meet. Exhib. (2015).

2. Ong, F., Lustig, M. SigPy: A Python Package for High Performance Iterative Reconstruction. Proc. ISMRM Annu. Meet. Exhib. (2019).

3. Fessler, J. A. Michigan Image Reconstruction Toolbox, available at https://web.eecs.umich.edu/~fessler/code/. Downloaded Nov 2019.

4. Grissom, W. et al. Spatial domain method for the design of RF pulses in multicoil parallel excitation. Magn. Reson. Med. 56, 620–629 (2006).

5. Chambolle, A. & Pock, T. A first-order primal-dual algorithm for convex problems with applications to imaging. (2010).

6. Staewen, R. S. et al. 3-D FLASH Imaging using a single surface coil and a new adiabatic pulse, BIR-4. Invest. Radiol. 25, 559–567 (1990).

7. Baum, J., Tycko, R. & Pines, A. Broadband and adiabatic inversion of a two-level system by phase-modulated pulses. Phys. Rev. A 32, 3435–3447 (1985).

8. Kupce, E. & Freeman, R. Stretched Adiabatic Pulses for Broadband Spin Inversion. J. Magn. Reson. Ser. A 117, 246–256 (1995).

9. Grissom, W. A., Cao, Z. & Does, M. D. |B1+|-selective excitation pulse design using the Shinnar–Le Roux algorithm. J. Magn. Reson. 242, 189–196 (2014).

10. Wong, E. Optimized Phase Schedules for Minimizing Peak RF Power in Simultaneous Multi-Slice RF Excitation Pulses. Proc. ISMRM Annu. Meet. Exhib. (2012).

11. Conolly, S., Nishimura, D. & Macovski, A. Optimal Control Solutions to the Magnetic Resonance Selective Excitation Problem. IEEE Trans. Med. Imaging MI-5, 106–115 (1986).

12. Pauly, J., Le Roux, P., Nishimura, D. & Macovski, A. Parameter relations for the Shinnar-Le Roux selective excitation pulse design algorithm (NMR imaging). IEEE Trans. Med. Imaging 10, 53–65 (1991). 13. Setsompop, K. et al. High-resolution in vivo diffusion imaging of the human brain with generalized slice dithered enhanced resolution: Simultaneous multislice (gSlider-SMS). Magn. Reson. Med. 79, 141–151 (2018).

14. Sharma, A., Lustig, M. & Grissom, W. A. Root-flipped multiband refocusing pulses. Magn. Reson. Med. 75, 227–237 (2016).

15. Kerr, A. & Pauly, J. M. Slice Profile Stabilization for Segmented K-Space Magnetic Resonance Imaging. (1996).

16. Glover, G. H. Simple analytic spiral K-space algorithm. Magn. Reson. Med. 42, 412–5 (1999). 17. Kim, D., Adalsteinsson, E. & Spielman, D. M. Simple analytic variable density spiral design. Magn. Reson. Med. 50, 214–9 (2003).

18. Grissom, W. k-Space domain parallel transmit pulse design. Proc. ISMRM Annu. Meet. Exhib. (2018).

19. Xu, D., King, K. F., Zhu, Y., McKinnon, G. C. & Liang, Z.-P. Designing multichannel, multidimensional, arbitrary flip angle RF pulses using an optimal control approach. Magn. Reson. Med. 59, 547–60 (2008).

20. Grissom, W. A., Khalighi, M.-M., Sacolick, L. I., Rutt, B. K. & Vogel, M. W. Small-tip-angle spokes pulse design using interleaved greedy and local optimization methods. Magn. Reson. Med. 68, 1553–62 (2012).

21. Cao, Z., Donahue, M. J., Ma, J. & Grissom, W. A. Joint design of large-tip-angle parallel RF pulses and blipped gradient trajectories. Magn. Reson. Med. 75, 1198–208 (2016).


Figure 1: New .rf tools (red) within the existing SigPy hierarchy.

Table 1: Summary of implemented functions and planned pTx design tools.

Figure 2: (Animated figure) Variation of resolution, undersampling, and maximum power constraint in a SigPy.RF small-tip spatial domain pTx design.

Figure 3: SigPy code for performing the design of Figure 2. A trajectory is created, pulses are designed using the trajectory and simulated, and the resulting magnetization is simulated.

Figure 4: Comparison of simulated magnetization profile and magnetization profile measured in a head phantom for the same set of pulses. From Philips FFE scan.

Proc. Intl. Soc. Mag. Reson. Med. 28 (2020)