-
-
Notifications
You must be signed in to change notification settings - Fork 23
Description
Describe the bug
PET2BIDS and dcm2niix uses AcquisitionTime in cases where SeriesTime should be used. I believe this is an upstream bug in dcm2niix, or perhaps this is just unique to Siemens Scanners. In Siemens PET scanners SeriesTime describes the start time of the PET acquisition - not AcquisitionTime. AcquisitionTime describes the timepoint in the acquisition, where data was used to reconstruct the DICOM-file. Often AcquisitionTime==SeriesTime, but not in the following cases:
- Dynamic acquisition: the AcquisitionTime changes for each time frame.
- Multiple bed positions: the AcquisitionTime changes for each bed frame.
- Static images reconstructed from a time-subset of a longer acquisition: For instance, a static reconstruction based on a 50-70min window of a 70minute PET acquisition. Here AcquistionTime will be 50min larger than SeriesTime.
Here is the example output for case 3 (FDG tracer injection and PET acquisition start at 16:20, and a static image is reconstructed from the 50-70min window):
{
"SeriesTime": "16:20:16.000000",
"AcquisitionTime": "17:10:15.000000",
"DecayCorrection": "START",
"DecayFactor": [
1.45951
],
"FrameTimesStart": [
0 ##Should be 3000 (50min*60)
],
"FrameDuration": [
1200
],
"TimeZero": "17:10:15",
"DecayCorrectionFactor": [
1.45951
],
"ScanStart": 0,
"InjectionStart": 0
}
We can also see from the DecayCorrectionFactor, that everything is decayed back to the SeriesTime.
log2(1.45951)*110=60min (the frame reference 50min + 20min/2)
Expected behaviour
FrameTimesStart should be 3000. From what I can see, pypet2bids extracts FrameTimesStart and TimeZero from the dcm2niix sidecar if they exists. Otherwise it sets it equal to AcquisitionTime.
To Reproduce
- code/command used (copy/paste what you did)
- error happening? (copy/paste the error)
Desktop (please complete the following information):
- Arch Linux
- python