Published July 17, 2025 | Version 1.0.0

A Modified Orthogonal-Distance Ray-Tracer Method Applied to Dual Rotation PET Systems (raw data)

Description

This repository contains the dataset used to validate a novel projector, the Orthogonal-Distance Ray-Tracer Varying-Full Width at Half Maximum (OD-RT-VF). This projector was developed to model a shift-variant elliptical point-spread function (PSF) response, aiming to enhance image quality in a preclinical dual-rotation PET system.

The dataset is provided in the easyPET format, which includes:

  • Header: Contains metadata about the acquisition, structured as a binary file.
      •  Version_binary,
      • header,
      • dates,
      • otherinfo,
      • acquisitionInfo,
      • stringdata,
      • systemConfigurations_info,
      • energyfactor_info,
      • peakMatrix_info
    • The header is  processed into a JSON format. e.g.
    • systemConfigurations_info = np.fromfile(binary_file, dtype='|S1', count=size_systemConfigurations[0]* 2).astype('|U1')
      systemConfigurations_info = systemConfigurations_info.tolist()
      systemConfigurations_info = ''.join(systemConfigurations_info)
      systemConfigurations_info = json.loads(systemConfigurations_info)
  • 7 or 8 arrays: stores the primary data. Motor angles, Detector IDs, Photon Energies and time of arrival 
  • number_of_arrays = 7 # or 8 for simulations
    reading_data = np.fromfile(binary_file,
    dtype=[('stepbot', np.int16), ('steptop', np.int16),
    ('idA', np.int16),
    ('idB', np.int16),
    ('EA', np.int16), ('EB', np.int16), ('time', np.float64),
    ('time_b', np.float64)])
  • step_bot = round(header[1], 4) / header[2]
    step_top = round(header[3], 4) / header[4]
    topRange = header[5]

    listMode = np.zeros((len(reading_data["stepbot"]), number_of_arrays))
    listMode[:, 0] = reading_data["EA"] # energias A
    listMode[:, 1] = reading_data["EB"] # energias B
    listMode[:, 2] = reading_data["idA"] # id A
    listMode[:, 3] = reading_data["idB"] # id b
    if open_files_to_join:
    # This dont change the data in the way to merge the acquisitions files in just one
    listMode[:, 4] = (reading_data["stepbot"]) # *2 # bot angle remove factor of 2 because it is already saved that way
    listMode[:, 5] = (reading_data["steptop"] ) # top_angle

    else:
    listMode[:, 4] = (reading_data["stepbot"]) * step_bot #*2 # bot angle remove factor of 2 because it is already saved that way
    listMode[:, 5] = (reading_data["steptop"] * step_top - topRange / 2) # top_angle
    listMode[:, 6] = reading_data["time"] # time

    if Version_binary == "Version 3":
    listMode[:, 7] = reading_data["time_b"] # time

 

If you are interested in the data but are unable to read it due to its non-conventional file format, we can provide a script upon request to facilitate access.

Files

Files (6.6 GB)

Name Size
md5:eb630cd1c8491cba7c4600f9ace899cd
4.3 GB Download
md5:f39ab658d496434e2243401daf4baa38
232.0 MB Download
md5:561e57ff1a9ab0c508c19dbacd9304ec
2.1 GB Download

Additional details

Funding

Fundação para a Ciência e Tecnologia
Use of a radioactive source as a new CT approach in the easyPET.3D system 2022.09701.BD
Fundação para a Ciência e Tecnologia
Intelligent scanning method for adaptive Positron Emission Tomography 2019.43964.BD
Fundação para a Ciência e Tecnologia
Assessment of easyPET performance: NEMA NU 4-2008 standards and animal model 2018.137800.BD

Dates

Accepted
2025-01-07