DOI: 10.5281/zenodo.17185907
title: Time-of-flight positron emission tomography data of Derenzo phantom

description: This dataset contains time-of-flight (TOF) positron emission tomography (PET) data. The data was obtained with Siemens Biograph Vision 600 PET/CT scanner. The target scanned is a Derenzo phantom filled with fluorodeoxyglucose (F-18) with activity of 723.6 MBq. Coincidence window was 4.726623 ns and energy window was 435 keV - 585 keV. For more details on the scanner itself, see, for example, https://dx.doi.org/10.2967/jnumed.118.215418. Four different files are provided.

The zip-file contains a bin (binary) file of only the TOF sinogram with dimensions of 520x95x6400x33. The first value is the number of radial bins, the second the number of angular bins, the third the total number of sinograms per TOF bin, and the last the number of TOF bins. Mashing of 4 has been used with the data which means that the original number of angular of bins is 95 * 4 = 380. The binary has been saved as 8-bit unsigned integer with little-endian format. Only the sinogram data is contained in the binary file, i.e. there is no header. The data is in column-major format!

The second file (SiemensVision_DerenzoPhantom_TOF214psFWHM_33bins_listmode.mat) is a v7 mat-file that contains various different variables.  This data can be used to do listmode reconstruction as it includes the location of each individual event and also the corresponding TOF bin. It can also be used to construct a different sized sinogram, but this has to be performed manually. The data can be easily accessed in MATLAB, GNU Octave, Python, Julia, C/C++ and other languages. Following variables are stored in the mat-file:

xy = Transaxial detector coordinates when the scanner is centered on the origin (Cartesian coordinates in mm, stored in double precision)z = Axial detector coordinates when the scanner is centered on the origin (Cartesian coordinates in mm, stored in double precision)trIndex = Transaxial indices of coordinates that correspond to the coordinates stored in xy (stored as 16-bit unsigned integers)axIndex = Axial indices of coordinates that correspond to the the coordinates stored in z (stored as 16-bit unsigned integers)crystalPitch = Scanner crystal pitch/size (mm)FOVy, FOVx  = Transaxial FOV size (mm, can be adjusted)axialFov = Axial FOV size (mm, can be adjusted)ringDifference = Ring difference of the sinogram (sinogram in the bin-file)span = Span value of the sinogram (sinogram in the bin-file)SinDelayed = Delayed coincidences that can be used for randoms correction, otherwise same dimensions as the TOF sinogram, but no TOF dimension (stored as 16-bit unsigned integers)TOFWidth = Width of the TOF time window (s)TOFOffset = Offset of the TOF time windows (s)TOFIndices = The TOF bin indices of each event/index in trIndex or axIndex, used by OMEGA (stored as 8-bit unsigned integers)TOFBins = The number of TOF binsTOFFWHM = FWHM of the TOF time window (s)

The third file (511keV_attenuation_coefficients_for_VisionDerenzoAttenuation.mat) contains the attenuation coefficients scaled to the 511 keV energy in v7 mat-file. These work straight for image size of 220x220x88. These have been manually geometrically scaled slightly from the original ones (see below) to match the PET reconstruction. The attenuation data is stored in double precision.

A fourth mat-file (CT_images_VisionDerenzo.mat) is included that contains the original CT-images. There is both the original unscaled CT-volume as well as volume scaled to match the same number of slices as the assumed PET-reconstruction. Unlike the above version, these are otherwise unmodified and are in HU-values. The images are stored as unsigned 16-bit integer volumes. To obtain the actual HU-values, you need to subtract 1024 from the values. Some CT metadata is also included such as tube voltage and voxel sizes.

Normalization or scatter data is not provided.

This data also serves as a PET example data in the second OMEGA paper. The example scripts can be found from: https://github.com/villekf/OMEGA/tree/master/articleIf you don't use the example scripts, you most likely need to rotate the attenuation image or the reconstructed image to make the two match.