# Only points showing in Mean Shape Visualization - Slicermorph

**URL:** <https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121>\
**Category:** Support\
**Tags:** visualization, slicermorph\
**Created:** [November 17, 2025, 3:35pm UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121 "2025-11-17T15:35:55Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![emmm\_m](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/emmm_m/32/81436_2.png) [@emmm\_m](https://discourse.slicer.org/u/emmm_m)\
**Post date:** [November 17, 2025, 3:35pm UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/1 "2025-11-17T15:35:55Z")

</div>

I’m new to slicer so I apologize if this is a question driven by my ineptness. I am working on generating GPA/PCA visualizations, however when I try to generate a Mean shape visualization for the proximal and distal end of a bone (I have run into this problem running full bone analyses as well) the points will show up but the underlying model will not. I have tried running it multiple times, restarting Slicer, and updating to the latest version and reinstalling SlicerMorph. Is there something I can do to in order to get this to show up? Thanks!

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [November 17, 2025, 4:01pm UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/2 "2025-11-17T16:01:34Z")

</div>

> [@emmm\_m](#):
>
> the points will show up but the underlying model will not. I

Because there is no underlying model. GPA is an analysis that operates on the coordinates (landmarks) collected, not the models. You might want to read a review article about geometric morphometrics and how it is implemented.

However, you can still approximate this visualization by using a proxy. You need to select a sample, and their corresponding set of landmarks. See the tutorial: [Tutorials/GPA\_2 at main · SlicerMorph/Tutorials · GitHub](https://github.com/SlicerMorph/Tutorials/tree/main/GPA_2)

---

<div class="post-metadata">

**Author:** ![emmm\_m](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/emmm_m/32/81436_2.png) [@emmm\_m](https://discourse.slicer.org/u/emmm_m)\
**Post date:** [November 17, 2025, 4:12pm UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/3 "2025-11-17T16:12:08Z")

</div>

I’ve done this in the mean shape vis. section , picking a proxy sample from the dataset to upload, so it has all the correct points. I am thinking it may be an issue with the python code it is running or selecting the landmarks. In 3D model vis. it says I cannot use it due to the points not corresponding to the selected ones in the analysis. Is this because I am excluding points included in the proxy? Could I fix this by re-landmarking the scan used in the visualization?

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [November 17, 2025, 4:21pm UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/4 "2025-11-17T16:21:35Z")

</div>

> [@emmm\_m](#):
>
> . it says I cannot use it due to the points not corresponding to the selected ones in the analysis

Error is very clear. You do not have the exact same number of landmarks you used in your proxy and and the GPA analysis. They need to match (and be in exactly the same order).

> [@emmm\_m](#):
>
> Is this because I am excluding points included in the proxy? Could I fix this by re-landmarking the scan used in the visualization?

If I understood correctly, you chose to exclude LMs in GPA. So, just make a copy of the LMs belonging to the proxy you want to use, then delete the ones you excluded in the gpa analysis and retry

---

<div class="post-metadata">

**Author:** ![Stephan\_Collins](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/stephan_collins/32/81446_2.png) [@Stephan\_Collins](https://discourse.slicer.org/u/Stephan_Collins)\
**Post date:** [November 19, 2025, 4:47pm UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/5 "2025-11-19T16:47:01Z")

</div>

useful post as I was also wondering what we are supposed to do when we exclude LMs and was suprised the deformation model was not taking this into account.  
Would be nice though not to have to copy and edit the landmarks especially when we have a lot of them…

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [November 19, 2025, 4:58pm UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/6 "2025-11-19T16:58:17Z")

</div>

> [@Stephan\_Collins](#):
>
> Would be nice though not to have to copy and edit the landmarks especially when we have a lot of them…

You can open an issue on the SlicerMorph github page on this.

---

<div class="post-metadata">

**Author:** ![Stephan\_Collins](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/stephan_collins/32/81446_2.png) [@Stephan\_Collins](https://discourse.slicer.org/u/Stephan_Collins)\
**Post date:** [November 19, 2025, 5:30pm UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/7 "2025-11-19T17:30:56Z")

</div>

Done and thanks for a great module !

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [November 20, 2025, 4:36am UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/8 "2025-11-20T04:36:23Z")

</div>

@Stephan_Collins There is a pull request in response to your request. it would be great if you can test it and give feedback:

Instructions on how to test it is here:

> <https://github.com/SlicerMorph/SlicerMorph/pull/425>
>
> When landmarks are excluded during GPA analysis, users get a dimension mismatch …error during 3D model visualization because the loaded landmark file contains all landmarks while the analysis data has already removed the excluded ones.
> 
> \## Changes
> 
> \- \*\*Reordered landmark processing in \`onSelect()\`\*\*: Convert loaded landmarks to numpy and remove excluded landmarks \*before\* dimension checking (previously checked first, then never reached the removal logic)
> \- \*\*Enhanced error messages\*\*: Differentiate between dimension mismatches with and without excluded landmarks, showing which indices were removed and the resulting counts
> 
> \## Before/After
> 
> \`\`\`python
> \# Before: dimension check happened before exclusion removal
> self.sourceLMNode = slicer.util.loadMarkups(path)
> if self.sourceLMNode.GetNumberOfControlPoints() != self.LM.lmOrig.shape\[0\]:
> error\_and\_return() # ❌ Failed here when exclusions present
> \# Remove excluded landmarks # ❌ Never reached
> 
> \# After: exclusions removed first, then dimension check
> self.sourceLMnumpy = logic.convertFudicialToNP(self.sourceLMNode)
> if len(self.LMExclusionList) != 0:
> self.sourceLMnumpy = np.delete(self.sourceLMnumpy, excludedIndices, axis=0)
> if actualCount != expectedCount:
> # Contextual error message
> \`\`\`
> 
> Users no longer need to manually create landmark files with excluded landmarks removed.
> 
> 
> 
> 
> 
> \<details\>
> 
> \<summary\>Original prompt\</summary\>
> 
> \> 
> \> ----
> \> 
> \> \*This section details on the original issue you should resolve\*
> \> 
> \> \<issue\_title\>Auto detect excluded landmarks in 3D model visualization\</issue\_title\>
> \> \<issue\_description\>If LMs are excluded landmarks from a dataset, at the time of the 3D model visualization there is an inconsistency in the number of landmarks between what's included in the PCA analysis and what is specified in the LM set for the 3D reference model on disk. This throws a dimension mismatch error and confuses users. To fix the problem, user need to create a copy of the file with the excluded landmarks removed from the control point list, save and reload. It is a cumbersome user experience.
> \> 
> \> In case a dimensionality mismatch, we should first check whether the user entered any values to Exclude landmarks field during the analysis setup, remove the same indices from the control points, and then if the dimensionality mismatch still continues alert the user with meaningul error. If there are no excluded landmarks but the dimensionaliy still mismatches, then we should alert with a different error message.\</issue\_description\>
> \> 
> \> ## Comments on the Issue (you are @copilot in this section)
> \> 
> \> \<comments\>
> \> \</comments\>
> \> 
> 
> 
> \</details\>
> 
> \- Fixes SlicerMorph/SlicerMorph#424
> 
> 
> \---
> 
> 💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more \[Copilot coding agent tips\](https://gh.io/copilot-coding-agent-tips) in the docs.

---

<div class="post-metadata">

**Author:** ![muratmaga](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/muratmaga/32/3622_2.png) [@muratmaga](https://discourse.slicer.org/u/muratmaga)\
**Post date:** [November 21, 2025, 3:26am UTC](https://discourse.slicer.org/t/only-points-showing-in-mean-shape-visualization-slicermorph/45121/9 "2025-11-21T03:26:33Z")

</div>

this is now integrated. Update your slicermorph extension and retry.
