Hello 3D Slicer community,
First and foremost, I’d like to express my gratitude for your dedication to developing and maintaining this powerful set of tools for shape analysis. So this is gonna be a multifaceted post, but I will try to explain everything in detail and would be very thankful for guidance.
Objective: My aim is to measure and statistically evaluate the differences in ventricle shape between WT and mutant animals. I’ve segmented the ventricles from both groups (4-8 per group) and tried two different methods:
- Pseudo-landmarks Approach: I generated around 500 pseudo-landmarks, transferred them to all samples using ALPACA, performed GPA in Slicermorph, and ran shape ANOVA in geomorph. This method didn’t yield significant differences between the groups. I suspect the intra-group variability is masking the genuine differences. Is there a method to choose the most telling pseudo-landmarks, akin to the Procrustes distance for landmarks, and perform shape regression based on them? Are there other strategies within this framework you’d recommend?
- SHPARM-PDM Approach: This was a tough one. I faced issues with both the SlicerSALT and 3D Slicer implementations of SHPARM-PDM on Windows 10 during the SegPostProcess step, likely due to binary segmentation issues. Thankfully, it functioned on a Mac with Ventura OS, and I obtained results from ParaToSPHARMMesh. However, the ventricles weren’t aligned properly. I then tried improving the SHPARM correspondence with ALPACA pseudolandmarks. Unfortunately, I faced crashes during the RigidAlignment step on both operating systems. I did manage to execute RigidAlignment in SlicerSalt on Windows 10 but only by choosing Shape Creation>Andvanced>RigidAligment. However, it aligns only the spheres, not the actual objects. I’m contemplating forgoing a detailed SHPARM-PDM analysis and simply computing and comparing the rotation-invariant harmonic spectra. Does anyone have a script for this using ParaToSPHARMMesh outputs? Alternatively, is it feasible to input pre-aligned shapes into SHPARM-PDM, bypassing the need for Correspondence Improvement?
Your insights and suggestions will be immensely appreciated. Thank you in advance.
This will be a source of variation, and it will be a function of how well things are registered. You can try a few experiments to see if you can improve the alignment. another thing to consider if your template you create the pseudoLMs with is a “normal” one, it may create a some bias towards “normalness”, hence again may reduce inter group variation.
Do you have may be 10-12 good anatomical landmarks that you can annotate on your all samples? If so, instead of ALPACA you can use ProjectSemiLM landmarks, which will use the anatomical landmarks to anchor the semiLMs. The key is to have them all over the surface.
One benefit of having some anatomical landmarks, you can have a clear sense whether one ALPACA set of parameters is better than the other (because if you input the optional target landmarks during the interactive session, it will report an RMSE of difference between your manual landmarks and alpaca transferred one). That way you can go accurately about optimizing for registration parameters for alpaca (as opposed to guessing from visuals).
PD for individual landmarks is not a meaningful metrics, because ultimately the PD is function of how well rest of the landmarks are also aligned (since this is a least squares optimization).
As for fully automatic shape analysis, there is always some caveats to be aware of (such as a good rigid alignment to initialize the SPHARM). An option is to actually use something like FastModelAlign in SlicerMorph to do the rigid/similarity alignment, and then feed the aligned model to SPHARM.
- SHPARM-PDM Approach: This was a tough one. I faced issues with both the SlicerSALT and 3D Slicer implementations of SHPARM-PDM on Windows 10 during the SegPostProcess step, likely due to binary segmentation issues.
Hi there! I am curious as what might have caused problems on Windows that did not cause them on MacOS. All the algorithms are the same. Yes, binary segmentations will cause problems even when the topology is spherical (i.e. almost holes will create numerical errors)
Thankfully, it functioned on a Mac with Ventura OS, and I obtained results from ParaToSPHARMMesh. However, the ventricles weren’t aligned properly.
You will get several results from SPHARM-PDM, and it is true that depending on the subscript your files have, that will indicate they have been aligned to a template. If they are the base triangulation computed by SPHARM they should not be misaligned.
I did manage to execute RigidAlignment in SlicerSalt on Windows 10 but only by choosing Shape Creation>Andvanced>RigidAligment. However, it aligns only the spheres, not the actual objects.
This is a intermediate step for improvement of correspondence. With the meshes in correspondence you can align them using procrustes.
Does anyone have a script for this using ParaToSPHARMMesh outputs?
Using them how? And what outputs? ParaToSPHARMMesh produces a lot of outputs.
Alternatively, is it feasible to input pre-aligned shapes into SHPARM-PDM, bypassing the need for Correspondence Improvement?
See my comment above, you should have regTemplate meshes if you have clicked that option, but the original triangulated meshes should be there also. Could you please show us what the output of each SPHARM-PDM step is?
Thank you @muratmaga for insightful suggestions, navigating me through new field of shape quantifications. I will implement your suggestions and let you know how did it go.
Dear Bea @bpaniagua, thank you for your comprehensive comments on SPHARM-PDM analysis.
Regarding failure of SegPostProcess step on PC. I really did not look into this matter more deeply, but my guess is how computer treats the values of binary segmentation, there are several formats of integers like long, short etc. It seems that MacOS reads “1”, like one whereas PC expects something like “1.00000” doesn’t find it and gets upset. It doesnt seem to be problem of topology, as I do WrapSolidify on segmentations before SPHARM-PDM, and same input works on MacOS, but not PC.
Does anyone have a script for this using ParaToSPHARMMesh outputs?
I am a bit new to this, but from my understanding somewhere in ParaToSPHARMMesh there is a file with decomposition of shape into spheric harmonics that I could take and calculate rotation-invariant spectrum [https://www.cs.jhu.edu/~misha/MyPapers/SGP03.pdf], thus instead proper SHPARM-PDM analysis, I could compare differences between these spectra [PMID:32269257].
Here is the link for the SHPARM-PDM outputs:Transfer - Dropbox
I include below few images of SHPARM: *ellalign and *SPHARM colored according Phi values and indicated aortic root positions which should be aligned. I will follow advice and try to feed rigid aligned shapes into SHPARM-PDM