3D radial, such as ultra-short TE (UTE) MRI, is receiving a growing attention, because of its unique features, which include free of motion artifact and imaging of short T2* species. However, reconstruction of UTE data is very challenging, therefore, only a handful research institutes possess the reconstruction capability. We developed a GUI-based software to construct UTE images using Python and C++ languages. We will present details about the development of this software using Python, which includes difficulties.
We developed an Image Construction Software with a user-friendly Graphic-User-Interface (GUI) front-end, using C++ and Anaconda Python (Continuum Analytics, Austin, TX, USA), which is specially packaged for science and engineering application. GUI was programmed using TkInter, which provides various GUI widgets. Numpy [1] and Scipy [2] packages were heavily used for all array processing. For plotting and displaying data, matplotlib [3] and pyqtgraph (http://www.pyqtgraph.org) are used in current software. Current software runs under Linux, and Mac OS with appropriate binary file for regridding. The package ctypes is used to load and pass the pointers of the input and output data between the Python and the regridding C++ function. Threaded processing is used when possible, particularly during the regridding and Fourier-transformation. The Kaiser-Bessel or sinc regridding kernel is used with user defined kernel width [4]. In the threaded regridding, the radial k-space data is split to 2, 4, 8, 16, or 32 blocks, depending on the number of available threads. The software is capable to apply various density-compensated-functions.
Reconstruction of 3D radial MRI, particularly using multi-channel receive-only RF coil, produces a raw data with large size, which requires a computer with large memory. Therefore, intermediate data objects and all acquisition and reconstruction parameters, which can selectively include radial, regridded Cartesian, and image data, are saved to a local harddisk drive using the package "pickle". In case of memory shortage, the software is relaunched and the saved object is loaded for further processing. Constructed images, including magnitude and/or phase images, can be saved to a local harddisk drive in DICOM format using pydicom module.
[1]. E. Jones, T. Oliphant, P. Peterson, et al., Scipy: Open source scienti_c tools for Python,"Comput. Sci. Eng. 9; 10 (2011).
[2]. S. van der Walt, S. Colbert, and G. Varoquaux, The numpy array: A structure for efficient numerical computation, computing in science & engineering," Comput. Sci. Eng. 3; 22 (2011).
[3]. J. D. Hunter, Matplotlib: A 2D graphics environment," Computing In Science & Engineering 9; 90 (2007).
[4]. Nielles-Vallespin, M.-A. Weber, M. Bock, A. Bongers, P. Speier, S. E. Combs, J. Wohrle, F. Lehmann-Horn, M. Essig, and L. R. Schad, 3D radial projection technique with ultrashort echo times for sodium mri: clinical applications in human brain and skeletal muscle," MRM 57, 74{81 (2007).