DOI: 10.5281/zenodo.14217778
title: Quality-Assurance Package for the "Automated, Open-Source, Vendor-Independent Quality Assurance Protocol Based on the Pulseq Framework" Manuscript

description: Background

Neuroimaging research requires consistent image quality and temporal signal stability, especially for functional magnetic resonance imaging (MRI) studies that rely on detecting subtle blood-oxygen-level-dependent (BOLD) signal changes. Regular MR system performance monitoring is essential, especially for longitudinal and multi-site studies. This study aims to establish a robust quality assurance (QA) protocol to promote data comparability across scanner models, vendors, and sites, as well as over a prolonged period.

The manuscript titled "Automated, Open-Source, Vendor-Independent Quality Assurance Protocol Based on the Pulseq Framework" was submitted to the Special Issue Reproducibility and Quality Assurance of the Magnetic Resonance Materials in Physics, Biology and Medicine (MRMP) journal.

This QA package proposed by the manuscript hosts materials for



all reconstructed images,

instruction for data acquisition,

instruction for image reconstruction,

instruction for post-processing, and

example raw data and DICOM images.


The detailed information is listed below.

All reconstructed images

This directory contains all reconstructed images from the fBIRN phantom on three Siemens 3T scanners (Trio, Prisma.Fit, and Cima.X) and one GE (UHP) 3T scanner. It contains four sub-folders for each scanner. And each sub-folder contains (some of) the following sub-folders:



product_epi_ice: ICE-reconstructed product EPI images.

product_epi_gt: Gadgetron-reconstructed product EPI images.

pulseq_epi_ice: ICE-reconstructed Pulseq EPI images.

pulseq_epi_gt: Gadgetron-reconstructed Pulseq EPI images.

product_se_ice: ICE-reconstructed product spin-echo (SE) images.

product_se_gt: Gadgetron-reconstructed product SE images.

pulseq_se_ice: ICE-reconstructed Pulseq SE images.

pulseq_se_gt: Gadgetron-reconstructed Pulseq SE images.


Instruction for data acquisition

This directory includes the following documents:



write_QA_Tran_EPIrs.m to generate the QA_epi.seq file for EPI scans.

write_QA_Tran_T1.m: to generate the QA_T1.seq file for SE scans.

20241122_QA_protocol_instruction_siemens.docx: standard operating procedure for QA measurements.

QA_record.xlsx: Excel sheet for the record of QA measurements.


Instruction for image reconstruction

Documents



pulseq2mrd_epi.m: convert GE Pulseq EPI raw data (.mat) to MRD raw data (.h5) using the LABEL information in the QA_epi.seq file.

pulseq2mrd_se.m: convert GE Pulseq SE raw data (.mat) to MRD raw data (.h5) using the LABEL information in the QA_T1.seq file.

siemens2mrd_epi.m: convert Siemens Pulseq EPI raw data (.dat) to MRD raw data (.h5) using the information in the .dat raw data.




default.xml: Gadgetron configuration file for SE image reconstruction. This document is already in the Gadgetron container: /opt/conda/envs/gadgetron/share/gadgetron/config/default.xml.

qc_epi.xml: Gadgetron configuration file for EPI image reconstruction, which is modified from the default epi.xml located in the Gadgetron container: /opt/conda/envs/gadgetron/share/gadgetron/config/.




specialCard_ICE.png: Special card setting for ICE online reconstruction.


Procedures for Gadgetron offline reconstruction

Step 1: Gadgetron installation (for more details, visit here)



Download and install Docker software. You may need to install/update the Windows Sub Linux (WSL) system for the Docker installation.

Open your terminal (Power shell with administrative privilege in Windows) and navigate to the folder you would like to map to the Gadgetron Docker container.

Run: docker run -t --name gt_latest --detach --volume ${pwd}:/opt/data ghcr.io/gadgetron/gadgetron/gadgetron_ubuntu_rt_nocuda:latest. If docker is not recognized, set docker to connect to C:\Program Files\Docker\Docker\resources\bin in the Environment Path in Windows. This will download and then launch the latest Gadgetron version in a Docker container. It will also mount your current folder as a data folder inside the container.

Run this command: docker exec -ti gt_latest /bin/bash. This will execute your Gadgetron container.


Step 2: Data preparation



Place your SE/EPI .dat/.h5 data in the mounted folder.

Run the command in Terminal: cd /opt/data to enter the mounted folder.


Step 3: MRD conversion



For Siemens data, you can convert the .dat data to MRD data by using Gadgetron. If Gsdgetron doesn't work (e.g. for XA EPI data), you can then use the Matlab script siemens2mrd_epi.m.

The command for Siemens SE data conversion: siemens_to_ismrmrd -f meas_MID*.dat -z 2 -o se_data.h5.

The command for Siemens EPI data conversion: siemens_to_ismrmrd -f meas_MID*.dat -z 2 -m IsmrmrdParameterMap_Siemens.xml -x IsmrmrdParameterMap_Siemens_EPI.xsl -o epi_data.h5.

For GE data, you can convert the .mat raw data to MRD data by using the Matlab scripts with the corresponding .seq files. For SE conversion: use pulseq2mrd_se.m with QA_T1.seq. For EPI conversion: use pulseq2mrd_epi.m with QA_epi.seq.


Step 4: Gadgetron reconstruction



SE reconstruction: gadgetron_ismrmrd_client -f se_data.h5 -c default.xml -o se_out.h5.

EPI reconstruction: first, put qc_epi.xml to the mounted folder and then copy it to the Gadgetron container: cp /opt/data/qc_epi.xml /opt/conda/envs/gadgetron/share/gadgetron/config/. Then, run the reconstruction: gadgetron_ismrmrd_client -f epi_data.h5 -c qc_epi.xml -o epi_out.h5.


Step 5: Load Gadgetron-reconstructed images (.h5)



Load SE .h5 images in Matlab:




filename = 'pulseq_se_out.h5' ;

info = hdf5info(filename) ;

address_data_1 = info.GroupHierarchy.Groups(1).Groups.Datasets(2).Name ;

pulseq_se_im = squeeze(double( hdf5read(filename, address_data_1) ) ) ;

pulseq_se_im = reshape(pulseq_se_im, [256, 256, 11, 2]) ;




Load EPI .h5 images in Matlab:




filename = 'pulseq_epi_out.h5';

info = hdf5info(filename) ;

address_data_1 = info.GroupHierarchy.Groups(1).Groups.Datasets(2).Name ;

pulseq_epi_im = squeeze(double( hdf5read(filename, address_data_1) ) ) ;

pulseq_epi_im = reshape(pulseq_epi_im, [64, 64, 27, 200]) ;


Procedures for ICE online reconstruction

Before executing the Pulseq-based sequences, you can enable ICE online Reconstruction following the procedures below:



Navigate to the Special Card (specialCard_ICE.png), set Data handling to ICE STD for NUMARIS/X (e.g. XA60A and XA61A), and ICE 2D for NUMARIS/4 (e.g. VB, VD, and VE).

Select Sum-of-Square for coil combination.

Be sure that the maximal pixel intensity does not violate the intensity threshold of 4096.


Instruction for post-processing

The example post-processing is based on the reconstructed images from Cima.X over five days.

Reconstructed images from Cima.X

Note: All se folders contain a structuralQuality_main.m to call the structuralQuality.m function for structural quality analysis. All epi folders contain a temporalQuality_main.m to call the temporalQuality.m function for temporal quality analysis.



product_epi_ice: ICE-reconstructed product EPI images.

product_epi_gt: Gadgetron-reconstructed product EPI images.

pulseq_epi_ice: ICE-reconstructed Pulseq EPI images.

pulseq_epi_gt: Gadgetron-reconstructed Pulseq EPI images.

product_se_ice: ICE-reconstructed product SE images.

product_se_gt: Gadgetron-reconstructed product SE images.

pulseq_se_ice: ICE-reconstructed Pulseq SE images.

pulseq_se_gt: Gadgetron-reconstructed Pulseq SE images.


QA analysis Matlab package: QA_functions



circfit.m: to find the center point and radius of the phantom.

makeCircleMask.m: to make a circular mask based on the center point and radius.

structuralQuality.m: to analyze the structural quality of the SE images.

temporalQuality.m: to analyze the temporal quality of the EPI images.


Post-processing procedures



Step 1: Add the QA_functions folder to your Matlab Path.

Step 2: Run the temporalQuality_main.m or structuralQuality_main.m script in each folder to produce the QA results of all reconstructed images inside the folder.

Step 3: Run the make_figure_epi.m and make_figure_se.m to produce some of the tables and figures used in the manuscript.


Example raw data and DICOM images

The data and DICOM images were acquired from Cima.X on the fBIRN phantom on 06.08.2024.



DICOM folder: contains the DICOM images for four EPI scans (the first two scans for warm-up) and two SE scans.

meas*.dat: Siemens raw data of two EPI scans for temporal quality analysis and two SE scans for structural quality analysis.

*data.h5 files: the ISMRMRD data of the four raw datasets.

*out.h5 files: the images reconstructed by Gadgetron.

*.nii: the NIFTI-format reconstructed images.

siemens2mrd_epi.m: to convert the Siemens EPI raw data to ISMRMRD data.

read_image.m: to convert the Gadgetron-reconstructed h5-format images to NIFTI-format images.


For more information regarding Pulseq and the workflow for data acquisition and image reconstruction, please visit our GitHub repositories: Pulseq Matlab software, Pulseq Tutorials, and Pulseq Rocks for the 2024 ISMRM Reproducibility Team Challenge.

If you need any further information or have any questions, please feel free to contact our Pulseq email address: pulseq.mr@uniklinik-freiburg.de.