ExtractSkeleton not writing output points or producing markup fiducials (MacOS 10.12, Slicer 4.11-2018-11-14)

I’m trying to use the ExtractSkeleton module to find the centreline of an artery. I’m posting to “Support” because I’m currently trying to do it from the GUI. On MacOS 10.12, and I just downloaded the pre-compiled newest nightly to test this.

Steps: I start with a Segmentation of an artery (about 15 pixels diameter, 100 pixels long). Using the Segmentations module, I export it to a label map. In ExtractSkeleton, I request a new Output Image, set skeleton type to 1D, Do not prune branches to True, number of points as default, an output points file name, and request a new markups fiducial node.
Expected: An output image with voxels along the skeleton, a points file with 100 points, and a fiducial node with 100 points.
Actual: An output image with voxels along the skeleton, but an empty points file and no points in the fiducial node.

So, the points file is being created, and the image of the skeleton is being created, but no points are written to the file or to the fiducial node. Am I doing this correctly?


ExtractSkeleton seems to work for me (tested quickly on linux and it generated a txt file of points). Did you look in the log file?

Thanks for your reply. To be honest, I don’t know where the log file is stored, either for the compiled or pre-built application. Where can I find it?
Thanks again.

Look under the Help menu for the Report a bug dialog and you can look at current and recent log files.

Thanks. According to the log file, it’s performing all of the tasks, but the .fcsv file in the same temp directory has nothing but a header.

ExtractSkeleton part of the log:

[DEBUG][Qt] 19.11.2018 13:45:20 [] (unknown:0) - Switch to module: “ExtractSkeleton”
[DEBUG][Qt] 19.11.2018 13:45:54 [] (unknown:0) - Found CommandLine Module, target is /short/Slicer-SB-Nov6/Slicer-build/lib/Slicer-4.11/cli-modules/ExtractSkeleton
[DEBUG][Qt] 19.11.2018 13:45:54 [] (unknown:0) - ModuleType: CommandLineModule
[ERROR][VTK] 19.11.2018 13:45:54 [vtkMRMLSubjectHierarchyNode (0x7fdc983504d0)] (/short/Slicer-Nov6/Libs/MRML/Core/vtkMRMLSubjectHierarchyNode.cxx:2153) - HasItemAttribute: Failed to find subject hierarchy item by ID 0
[DEBUG][Qt] 19.11.2018 13:45:54 [] (unknown:0) - Extract Skeleton command line:

/short/Slicer-SB-Nov6/Slicer-build/lib/Slicer-4.11/cli-modules/ExtractSkeleton --type 1D --dontPrune --numPoints 100 --pointsFile /short/skeleton19.txt --fiducialsFile /var/folders/s9/4cbyyyf5723fkrpd4htrpd4w0000gn/T/Slicer/IGA_vtkMRMLMarkupsFiducialNodeB.fcsv /var/folders/s9/4cbyyyf5723fkrpd4htrpd4w0000gn/T/Slicer/IGA_vtkMRMLLabelMapVolumeNodeB.nrrd /var/folders/s9/4cbyyyf5723fkrpd4htrpd4w0000gn/T/Slicer/IGA_vtkMRMLLabelMapVolumeNodeC.nrrd
[DEBUG][Qt] 19.11.2018 13:45:55 [] (unknown:0) - Extract Skeleton standard output:

Processed args.
Read image.
Initialized output image.
Extracted skeleton.
Wrote points file.
Wrote output image.
vtkDebugLeaks has found no leaks.
[DEBUG][Qt] 19.11.2018 13:45:55 [] (unknown:0) - Extract Skeleton completed without errors
[INFO][VTK] 19.11.2018 13:45:55 [vtkMRMLVolumeArchetypeStorageNode (0x7fdc9d87b9b0)] (/short/Slicer-Nov6/Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx:465) - Loaded volume from file: /var/folders/s9/4cbyyyf5723fkrpd4htrpd4w0000gn/T/Slicer/IGA_vtkMRMLLabelMapVolumeNodeC.nrrd. Dimensions: 256x256x132. Number of components: 1. Pixel type: unsigned char.

.fcsv file:

Markups fiducial file version = 4.11
# CoordinateSystem = 1
# columns = id,x,y,z,ow,ox,oy,oz,vis,sel,lock,label,desc,associatedNodeID

Seems to work okay for me - I draw a segmentation with sphere brush and extract the skeleton okay.


I just tested ExtractSkeleton with a larger segmented volume, and I was able to get points and markup fiducials. The problem may be with the size and shape of my input label map. For the original, smaller diameter label map, I could only get an output label map if I set Do Not Prune to True. However, I had to set it to False for the larger input.
They’re both roughly cylindrical, and 100 pixels long, but the original “smaller” input was 8 pixels diameter, and the larger input was 23 pixels diameter.

Thanks for your help!