mau_igna_06
(Mauro I. Dominguez)
May 16, 2021, 12:46pm
#1
BoneReconstructionPlanner is a 3D Slicer extension for virtual surgical planning of mandibular reconstruction with vascularized fibula free flap and generation of patient-specific surgical guides.
BoneReconstructionPlanner is now available in the Extensions Manager for Slicer latest preview release.
Here is a preview video:
And the link to the project:
7 Likes
mau_igna_06
(Mauro I. Dominguez)
May 25, 2021, 4:25pm
#2
This extension wasn’t working due to an issue with the CMakeLists file.
The problem has been solved. Please reinstall the extension since tomorrow and it will work
mau_igna_06
(Mauro I. Dominguez)
September 29, 2021, 10:33pm
#3
There was a bug that made BoneReconstructionPlanner not work on the preview release. Now it has been solved. So it works well in both stable and preview releases of Slicer.
A videotutorial of use is available here:
This video shows how to get started with the Bone Reconstruction planner, an 3D Slicer extension for virtual surgical planning of mandibular reconstruction with vascularized fibula-free flap and generation of patient-specific surgical guides.
[3D Slicer Tutorial: Bone Reconstruction Planner]
3 Likes
mau_igna_06
(Mauro I. Dominguez)
May 28, 2022, 6:50pm
#4
There was a hard to replicate bug that caused Slicer to crash while doing some BoneReconstructionPlanner processing.
This faulty behavior has been fixed by the latest commit to the main branch.
Thanks for using BRP
mau_igna_06
(Mauro I. Dominguez)
June 18, 2022, 5:07pm
#5
The bug that some times made BRP crash while creating miterBoxes and holesCylinders was solved.
Probably it had something to do with that Polydata was created and then transformed very fast and some how it produced an exception.
See details here:
committed 04:59PM - 18 Jun 22 UTC
2 Likes
mau_igna_06
(Mauro I. Dominguez)
July 21, 2022, 5:29pm
#6
Finally we tracked down the real reason of the bug that made Slicer crash sometimes while creating cylinders or miterBoxes…
opened 02:41PM - 18 Jul 22 UTC
closed 11:52PM - 19 Jul 22 UTC
type:bug
## Summary
BoneReconstructionPlanner crashes 70% of the time while using vtkTub… eFilter (in the latter part of the workflow).
Previously these kind of messages have appeared:
```
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AC40A620)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AC40A520) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2ACBE2960)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2ACBE5060) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AB3176F0)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AB3170F0) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AC40A620)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AC40A520) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2ACBE2960)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2ACBE5060) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AB3176F0)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AB3170F0) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AC40A620)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AC40A520) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2ACBE2960)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2ACBE5060) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AB3176F0)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AB3170F0) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AC40A620)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AC40A520) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2ACBE2960)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2ACBE5060) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AB3176F0)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AB3170F0) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AC40A620)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AC40A520) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2ACBE2960)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2ACBE5060) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AB3176F0)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AB3170F0) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AC40A620)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AC40A520) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2ACBE2960)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2ACBE5060) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AB3176F0)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AB3170F0) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AC40A620)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AC40A520) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2ACBE2960)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2ACBE5060) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AB3176F0)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AB3170F0) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AC40A620)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AC40A520) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2ACBE2960)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2ACBE5060) has 0 connections but is not optional.
[ERROR][VTK] 17.07.2022 19:48:27 [vtkCompositeDataPipeline (000001F2AB3176F0)] (D:\D\P\S-0-build\VTK\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx:668) - Input port 0 of algorithm vtkTubeFilter(000001F2AB3170F0) has 0 connections but is not optional.
```
The number of different memory directions matches the quantity of mandiblePlanes that are being observed. The error appears to print one per 3D view render. If you set the plane locked, that plane doesn't produce this error any more.
## Steps to reproduce
1. Follow BoneReconstructionPlanner tutorial till you have a mandible reconstruction simulation achieved. (Takes 15minutes or 5minutes if you already did the segmentations)
2. Look at the error log (those error will be there)
3. If you go on with the workflow, later when you have to use some cylinders (vtkTubes) Slicer has 70% probability of crashing. Losing all the surgical planning that wasn't saved.
## Expected behavior
Slicer does not crash
## Related
https://discourse.slicer.org/t/error-vtk-input-port-0-of-algorithm-vtktubefilter-has-0-connections-but-is-not-optional/22153/3
## Environment
- Slicer version: Slicer built today with current source (5.1.0 2022/07/08)
- Operating system: Windows 10
## Proposed reason
https://github.com/Slicer/Slicer/blob/57a9ad15f4948bda3698c9b57d56aa7abe07e97e/Modules/Loadable/Markups/VTKWidgets/vtkSlicerPlaneRepresentation3D.h#L92
https://github.com/Slicer/Slicer/blob/57a9ad15f4948bda3698c9b57d56aa7abe07e97e/Modules/Loadable/Markups/VTKWidgets/vtkSlicerPlaneRepresentation3D.cxx#L248-L251
Inside other function of the class:
https://github.com/Slicer/Slicer/blob/57a9ad15f4948bda3698c9b57d56aa7abe07e97e/Modules/Loadable/Markups/VTKWidgets/vtkSlicerPlaneRepresentation3D.cxx#L494
## Solution
https://github.com/Slicer/Slicer/pull/6468
## Additional info
I couldn't do backtrace analisys with Slicer in "debug mode" or in "release mode with debug info" on Visual Studio 2019. Slicer wouldn't launch saying there is some CTK .dll missing
I’m sure users will be glad to know this is now really fixed
2 Likes
mau_igna_06
(Mauro I. Dominguez)
October 9, 2022, 9:21pm
#7
There was another bug on Slicer (tracked here ) that made the crash happen and it will be solved soon since we found a way to make it reproducible.
The BRP team
1 Like
mau_igna_06
(Mauro I. Dominguez)
December 3, 2022, 12:21am
#8
On the next weekends, since I do this ad-honorem, I’ll be creating BoneReconstructionPlanner self-tests that will allow other developers to maintain and improve this extension.
2 Likes
mau_igna_06
(Mauro I. Dominguez)
December 15, 2022, 7:21pm
#9
The tests development for BoneReconstructionPlanner is moving forward.
Here is video of a Virtual Surgical Planning workflow for mandible reconstruction:
Soon, probably, there will be tests for anatomical surgical guide creation also.
Best wishes,
MScEng Mauro I. Dominguez
2 Likes