Simultaneously display a sequence at different indices

How would I go about displaying a sequence in the slice views where one 2D slice viewer is displaying the sequence at a given index and another 2D slicer viewer is displaying the same sequence at a different index?

Consider the following use case - I have loaded Cardiac CT sequence and I have created a segmentation sequence that segments the heart at each of the indices. How would I go about showing the CT+segmentation at systole in the “Red” 2D slice viewer and also the CT+segmentation at diastole in the “Green” 2D slice viewer? Where the current layout is Red+Green so both would be seen simultaneously.

Maybe @lassoan you have knowledge in this area of Sequences functionality as well as Cardiac.

This principle of displaying the a specific index of a sequence in a given 2D slice viewer could apply more broadly for comparing states of a sequence. I have considered creation duplicate objects in the Slicer scene as a workaround, but it can be difficult to keep things in sync if say I want to edit the segmentation at diastole while also simultaneously viewing the segmentation at systole. This is because any changes to my copied node I would have to update the object in the sequence as well and vice versa.

This is a quite common use case in cardiac analysis. You can use multiple sequence browser nodes, each displaying a different time point. It works very well with segmentation, etc. all the sequence browser nodes can refer to the same sequences.

The only inconvenient thing is that you need to be mindful of which sequence browser node is selected in the Sequence toolbar. SlicerHeart modules often have sequence browser widget in the module GUI to make it easier to work with multiple sequence browser nodes in various views.

Could you provide a mrb with a scene setup like this? I observe that if I have 2 sequence browsers that have the same synchronized sequence nodes specified that changing the index of one versus the other doesn’t produce the result I want to see. This is because the 2D slice viewer specifies a given volume node rather than a specific sequence index of said volume node.

You can show different time point in each Slicer view by using different proxy nodes in each browser node. The slice viewer does not know anything about sequences, it just displays a proxy node.

Isn’t different proxy nodes resulting in multiple objects in the scene that I then I have to manage keeping in sync? If I update the segmentation of one of the proxy nodes I would then want it to be updated in the other.

Each proxy node represents a different timepoint. You can view and update various timepoints in the same sequence via one or more proxy nodes. When you segment a volume sequence, then you usually store the segmentation in a sequence, too. No need for any manual updates, as the Sequences module keeps everything in sync.

The different proxy nodes and a second sequence browser seems to be no different than just loading the “CT Cardio Sequence” sample data twice into the scene. I’m not viewing the same object at 2 different time indices simultaneously in the layout manager, but viewing 2 copies that I’m viewing at different sequence indices.

I would not recommend to make a copy of the sequence nodes. Instead, you can add a secondary browser node for your existing volume sequence and segmentation sequence nodes.

I guess I’m having difficulties understanding how to use the Sequences module GUI to do this.

Upon creating a 2nd browser and adding the CTCardioSeq as synchronized sequence to it


I observe now that I have 2 copies in the scene:

I agree that the Sequences module GUI is not easy to use. Maybe what is confusing is that your proxy nodes are called CTCardioSeq. If you check the “Rename” checkbox (so that the timepoint is included in the proxy node name) then it may make things more clear.

Ok I see it reflecting the name now.

What I want to do next is simultaneously display my CTCardioSeq at frame 0 in the Red 2D Slice viewer and my CTCardioSeq at frame 2 in the Green 2D Slice viewer. This is because I ultimately desire viewing 2 different indices simultaneously in the layout rather than toggling between the two. How would I go about this?

Ultimately it appears that I’m still dealing with creating an additional copy of the object in the scene so that modules such as Volume Rendering no longer have the single option of rendering CTCardioSeq, but now has 2 different volumes to choose from. If I threshold my proxy node, then it doesn’t also threshold my display at the 2nd sequence index. I would have to try and keep this sync with various observe events. It’s confusing in that I’m not really viewing 1 sequence at different indices, but have created 2 different sequences that I’m manipulating.

If I want to view the 10 sequence index CTCardioSeq in a tiled film strip view of all the axial views, then it seems like my scene one would have 10 scalar volume nodes in the scene along 10 different sequence browsers.