Dear 3D Slicer experts, I used to use 4.11.2 version and there is Mesh Statistics function in quantifications module , when used 4.13.0 version this function does not appear? how could this be solved?
thank you in advance.
MeshStatistics extension packaing failed due to the very recent upgrade of Slicer’s Python version to 3.9. I’ve submitted a fix, hopefully it’ll get integrated within a few days. In the meantime, you can download the fixed module .py file from here.
I’ve also noticed that MeshStatistics module is included in two extensions:
- https://github.com/DCBIA-OrthoLab/MeshStatisticsExtension: this was updated to Python3 and just has a small issue with Python-3.9 (this is the version I’ve fixed up)
- https://github.com/jbvimort/ShapeQuantifierExtension: this is an old, Python2 version of the module
Since MeshStatistics extension is a tiny Python-scripted module, it is probably not worth maintaining it in a separate extension, so it would make sense to move the updated module into ShapeQuantifier extension and remove the MeshStatistics extension. @Sam_Horvath could you take care of this?
Since MeshStatistics extension is a tiny Python-scripted module, it is probably not worth maintaining it in a separate extension, so it would make sense to move the updated module into ShapeQuantifier extension and remove the MeshStatistics extension.
Before I joined the project there was an effort to make these more modular, where each SlicerCMF component could be installed individually; the role that ShapeQuantifierExtension filled has since been replaced by the SlicerCMF “extension bundle.”
We are preparing some refactoring of these extensions as they are not all stable in Slicer 4.13 as-is. I will bring this topic up for discussion at the next DCBIA meeting (this Thursday 02/10) to potentially be a part of this refactoring effort.
It is hard to decide how to distribute modules across extensions, as there are several requirements that may be slightly contradicting (make it easy to discover and use for users; make it easy to develop, test, document, and maintain for developers, etc). Both extremes (putting all modules in a single extension; putting each module in a separate extension) are suboptimal.
A good approach can be to start with building a large extension with many modules and then factoring out groups of modules. For example:
-You could move out a group of modules that are usually used together - such as “Mesh statistics” and “Model to model distance” modules could be moved together into one extension (something like “CompareModels”).
- You could decide to move mature infrastructural modules to Slicer core or SurfaceToolbox (freeing up your resources from maintaining these modules) - such as “Easy Clip”, “Pick and Paint”, “Angle Planes” could be moved to SurfaceToolbox, because their core features are now available via Dynamic Modeler module and you would just need to add a thin layer of convenient GUI.