# Segment Statistics for dynamic (multi frame) PET

**URL:** <https://discourse.slicer.org/t/segment-statistics-for-dynamic-multi-frame-pet/45253>\
**Category:** Support\
**Created:** [November 27, 2025, 2:39pm UTC](https://discourse.slicer.org/t/segment-statistics-for-dynamic-multi-frame-pet/45253 "2025-11-27T14:39:21Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![lennart81](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lennart81/32/79042_2.png) [@lennart81](https://discourse.slicer.org/u/lennart81)\
**Post date:** [November 27, 2025, 2:39pm UTC](https://discourse.slicer.org/t/segment-statistics-for-dynamic-multi-frame-pet/45253/1 "2025-11-27T14:39:21Z")

</div>

Hi community,

I am working with dynamic PET data acquired on a Siemens Quadra PET/CT (30 frames + static CT).

I have loaded the data and segmented several VOIs based on the CT. My goal is to extract the mean PET intensity per frame (Time Activity Curve) for these segments.

Currently, when I use the calculate statistics function, it seems to only calculate values for the currently displayed scalar volume (a single frame), giving me just one data point per segment.

My questions:

Do I need to load the PET data specifically as a MultiVolume to extract statistics across all time points?

Is there a specific module or extension recommended for batch processing these statistics across all 30 frames, or does this require a Python script?

Any advice on the workflow would be appreciated.

Thanks, Jan

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/f/5/f5af152f15d499a973e2e282e7cffe0d9569a6c7.jpeg)

---

<div class="post-metadata">

**Author:** ![Deep\_Learning](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/deep_learning/32/15345_2.png) [@Deep\_Learning](https://discourse.slicer.org/u/Deep_Learning)\
**Post date:** [December 1, 2025, 1:47am UTC](https://discourse.slicer.org/t/segment-statistics-for-dynamic-multi-frame-pet/45253/2 "2025-12-01T01:47:30Z")

</div>

Slicer uses sequences for timepoints. Take a look at that. Never worked with your type of data, so just a guess.

---

<div class="post-metadata">

**Author:** ![mikebind](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@mikebind](https://discourse.slicer.org/u/mikebind)\
**Post date:** [December 1, 2025, 7:03pm UTC](https://discourse.slicer.org/t/segment-statistics-for-dynamic-multi-frame-pet/45253/3 "2025-12-01T19:03:56Z")

</div>

Yes, you will need to load as multivolume sequence to be able to process all the frames. No, I don’t believe there is currently a module which calculates segment statistics across each frame of a sequence, but this is relatively straightforward to implement in a python script.

Also, this snippet from the script repository is concise and clear for a simple application of gathering volume from segment statistics module using python:

> **[Script repository — 3D Slicer documentation](https://slicer.readthedocs.io/en/latest/developer_guide/script_repository.html#get-volume-of-each-segment)**

And this whole section will be useful for understanding working with Sequences using python: [Script repository — 3D Slicer documentation](https://slicer.readthedocs.io/en/latest/developer_guide/script_repository.html#sequences)

For examples of these types of things (looping over frames of a sequence, doing something on each frame, creating an output) embedded in a full module, you might find this link helpful:

> <https://github.com/mikebind/SlicerDynamicMalaciaTools/blob/13ce1612d06887a0beec66c0fe0c66ceed7849ad/DynamicMalaciaTools/DynamicMalaciaTools.py#L4786-L4822>

Likewise, for an example of running segment statistics from python on and getting a value from it, you might find this example helpful:

> <https://github.com/mikebind/SlicerDynamicMalaciaTools/blob/main/DynamicMalaciaTools/DynamicMalaciaTools.py#L2547>
