SlicerRt / SlicerRT

Open-source toolkit for radiation therapy research, an extension of 3D Slicer. Features include DICOM-RT import/export, dose volume histogram, dose accumulation, external beam planning (TPS), structure comparison and morphology, isodose line/surface generation, etc.
https://slicerrt.org
128 stars 60 forks source link

ENH: Add real-time mode to Isodose computation #223

Open cpinter opened 1 year ago

cpinter commented 1 year ago

Real-time mode can be enabled using the RealTime flag in the Isodose parameter node. When this flag is enabled, the following functions are prevented: use of subject hierarchy to organize the isodose model nodes, reporting of progress, batch processing, and update of dose color table from the isodose one. Instead, top-level isodose model nodes are re-used (by node name) at every computation. It is useful when isodose is needed to be computed on-the-fly for streamed dose data, when one set of isodose surfaces (the "current one") is all that is needed to be kept and displayed.

cpinter commented 1 year ago

Let me fix the conflicts. Unfortunately in the project I added this feature for the latest SlicerRT did not compile on Ubuntu with gcc due to commit https://github.com/SlicerRt/SlicerRT/commit/220f766a011a15444da3531885b4fec2b5944384 and because of time constraints I could not deal with that yet.

cpinter commented 1 year ago

I resolved the conflicts but have some doubts about how much sense it makes now that there is only one isodose model node. The big time sink for real-time use (showing isodose while streaming) was the batch processing and the SH operations (deletions, reparentings). I'd like to test this branch with the real-time use case it is intended for.

@Sunderlandkyl do you have any ideas why the said commit (see in previous comment) causes build errors with gcc? It is OK on the dashboard and I don't have any clear idea, maybe you have a hunch. Otherwise I'll investigate once I get to it. Thanks!

cpinter commented 1 year ago

By the way it may make sense to remove batch processing in any case, now that only one node is being touched.

Sunderlandkyl commented 1 year ago

Not sure why https://github.com/SlicerRt/SlicerRT/commit/220f766a011a15444da3531885b4fec2b5944384 would cause a build failure on gcc, what is the error? The commit itself just follows the changes made by this commit in Slicer: https://github.com/Slicer/Slicer/commit/693c81929807517756fab1d69c65f24da787989e. Is the gcc build using up-to-date Slicer source code?