◆ FORGE Suite
GitHubMechanical Neuroimaging Lab · Univ. of Delaware
Skip to content

Input data format

The reconstruction programs read one ISMRMRD HDF5 file per run. It holds the k-space data and trajectories as ISMRMRD acquisitions, the maps the reconstruction needs as named NDArrays, and an XML header. FORGE Studio and Magneto's convertRecoInfoToIsmrmrd write files in this layout, and GenSyntheticISMRMRD writes a small synthetic example.

FORGE reads these fields from the first encoding space. A file with more than one encoding space is refused.

Field Used for
encodedSpace.matrixSize x, y, z Image size, unless -x, -y or -z is given
reconSpace.fieldOfView_mm, or encodedSpace.fieldOfView_mm where that is zero Voxel size in the NIfTI header (field of view divided by matrix size), unless --voxel-size is given. A zero field of view gives 1 mm.
encodingLimits Number of shots, partitions, slices, repetitions, averages, echoes and cardiac phases (see below)

Acquisitions

Each acquisition is one readout for all coils. FORGE places it with these counters from the acquisition header:

Counter Meaning in FORGE
kspace_encode_step_1 Shot
kspace_encode_step_2 Partition
slice Slice
repetition Repetition
average Average
contrast Echo
phase Cardiac phase

The encodingLimits maximum of each counter sets how many there are. The reconstruction programs make one image for each combination of slice, repetition, average, echo and cardiac phase, and use every shot and partition of that combination as its data.

The trajectory of each acquisition has four rows:

Row Content Units
0 kx cycles per field of view, in [−Nx/2, Nx/2)
1 ky cycles per field of view, in [−Ny/2, Ny/2)
2 kz cycles per field of view, in [−Nz/2, Nz/2). Zero for 2D.
3 Sample time, used for field correction seconds

The acquisition's direction cosines and position give the image orientation in the NIfTI output. See Image orientation.

NDArrays

Each array is read as one flat vector. Images inside the arrays use FORGE's voxel order: y fastest, then x, then z.

Name Type Needed by Content and layout
SENSEMap complex double all but gridCoilImages Coil sensitivities. For each slice, all coils, coil slowest: Nx·Ny·Nz × Ncoils values per slice.
FieldMap double all but gridCoilImages Off-resonance in rad/s, Nx·Ny·Nz values per slice
PhaseMaps double forgePcSense, forgePcSenseTimeSeg, oscillateRecon and their MPI versions Phase of each shot in radians. One block of Nx·Ny·Nz × Nshots × Npartitions values per image, with blocks ordered slice fastest, then average, cardiac phase, echo and repetition.
v complex double oscillateRecon The NRep × NRep temporal basis, column-major, one basis vector per column. The first --Rank columns are used.

Each name should appear once. If a file has more than one array with the same name, FORGE uses the first.

The programs apply each shot's phase map as exp(+i·PhaseMap) in the forward model.

Example files

GenSyntheticISMRMRD writes a small radial dataset in this layout, without v. See its entry in the command-line reference for its options.