PET Standard Uptake Value Computation

I have a question about the calculation formulas of SUV for PET, when i use the moudle " PETStandardUptakeValueComputation" and extension “PET DICOM”
As we know, the Suv formula is as follows

But I don’t know what’s the scan start time?Is it the Series Time or the Acquisition Time?
And their SUV results are different.

(0008,0031) TM 153348 # Series Time
(0008,0032) TM 154644.500000 # Acquisition Time
(0010,1030) DS 100.788 # Patient’s Weight
(0018,1072) TM 142110.000000 # Radiopharmaceutical Start Time
(0018,1074) DS 552410034.17969 # Radionuclide Total Dose
(0018,1075) DS 6586.2 # Radionuclide Half Life

Thank you very much.

1 Like

Up for this question

S. Standardized Uptake Value (SUV) - QIBA Wiki

1 Like

Thank you @issakomi for the reference. I am still in the process of trying to implement the activity concentration to SUV conversion algorithm.

Meanwhile, with this presentation: , I was finally able to get the PET Standard Update Value Computation module to work.

There were to issues I was dealing with:

(1) I didn’t know how to convert segment to LabelMapVolume (the “VOI” from the linked presentation). I managed to do it using this option:

(2) Initially, I have not understood the documentation correctly:

  • Input PET Volume (PETVolume): Input PET volume for SUVbw computation (must be the same volume as pointed to by the DICOM path!).

Source: PET Standard Uptake Value Computation — 3D Slicer documentation

It means, that you have to select the proper subdirectory within the DICOM directory with your data.

I.e., in my case it was the “0003” subdirectory:

If some upper-level directory was selected, i.e., the directory containing all the data (from the CD), or the “DCMS” directory, then I was getting the following error:

PET Standard Uptake Value Computation standard error:

WARNING: In /Volumes/D/S/S-0-build/ITK/Modules/IO/GDCM/src/itkGDCMSeriesFileNames.cxx, line 100
GDCMSeriesFileNames (0x7f993a69e530): No Series were found

PET Standard Uptake Value Computation standard output:
list.SUVOutputStringFile = /private/var/folders/8j/8tw8x4sx49384vtn35xcpwn00000gr/T/Slicer-mbuch/36400_O1g87aQq7f.params

Done reading the file /private/var/folders/8j/8tw8x4sx49384vtn35xcpwn00000gr/T/Slicer-mbuch/DGEAA_vtkMRMLScalarVolumeNodeE.nrrd

Done reading the file /private/var/folders/8j/8tw8x4sx49384vtn35xcpwn00000gr/T/Slicer-mbuch/DGEAA_vtkMRMLLabelMapVolumeNodeB.nrrd

In fact, I think it is the same error @akmal871026 was getting (for the same reason): How To Calculate The SUV

Btw., @issakomi , maybe do you know where can I find a source code for the PET Standard Update Value Computation module, or for the SUV Factor Calculator module? (I am still getting errors with SUV Factor Calculator) – I would like to use this source code to see how the activity concentration to SUV conversion is implemented there.

I think I found the source code: Slicer/PETStandardUptakeValueComputation.cxx at main · Slicer/Slicer · GitHub


It is great that you have been able to figure these out! It would not be hard to modernize this module to make it much more convenient to use:

  1. Allow using segmentation as input (without the need to manually export to labelmap volume) - for example, by temporarily creating a labelmap node for the computation
  2. Allow using a volume node as input (without the need to manually select some DICOM folders) - because the volume node contains DICOM UIDs that can be used to look up the filenames or any additional required DICOM fields

Would you be interested in working on this? We can help you with getting started.

1 Like

@lassoan , the modifications you mentioned would very helpful, indeed. I would also add a more general remark:

  1. Explain (e.g., in the documentation), how “raw” PET-CT values - activity concentration - are converted into SUVs, i.e., how the conversion algorithm work (with a link to the implementation in Slicer 3D).

Now it is not mentioned in the documentation, and there is no link to the RSNA’s wiki, nor to the scanner manufacturers documentation and manuals, and @issakomi has to provide the links on the forum each time someone asks about that :slight_smile:

I can give it a try with these modifications, but I’d start with some clarifications in the documentation, if you don’t mind. I tried to get to know where the sourcecode for the documentation is stored (PET Standard Uptake Value Computation — 3D Slicer documentation) , but “Edit on GitHub” redirects to the “includes”. Then, based on this commit message: ENH: Add automatically generated CLI module documentation · Slicer/Slicer@b82b68f · GitHub I thought that the docs are somehow generated based on the XML files, e.g.: Slicer/PETStandardUptakeValueComputation.xml at main · Slicer/Slicer · GitHub , but it seems they are generated some other way. If you could give me a hint, a link to some Developer guide about how the docs are generated, I’d suggest some changes in a pull request.