Merging landmarks and semi-landmarks with SlicerMorph

I am Slicer 5.6.2. My project use 1) 5 homologous landmarks 2) semilandmarks on a open curve 3) semilandmarks on a closed curve, My goal is to merge them and create a PCA plot in R with merged data.

I tried to use MergeMarkups function in SlicerMorph. But it is not showing all the landmarks. Under Markup tab, I can see all 3 types of landmarks:

However, under MergeMarkups-Merge landmark Sets, I can only see homologous landmarks:

I can see the two curves under Merge Curves tab, but not the homologous landmarks:

My question is: how do I merge those three different landmarks (point list, curve, open curve), and save one file, so I can do a PCA and subsequent analyses in R? I guess I still would like to keep all the information, such as if this is a homologous landmark, or a semi-landmark; and which curve it belongs to. Would you mind helping me have a look? Thank you!

So in MergeMarkups you can stitch multiple curves that share beginning and ending points into a single curve (Merge Curves tab), or you can Merge fixed landmarks with the semiLMs SlicerMorph generated (Merge Landmark set).

We haven’t seen a use case or a request like your, but we can add that feature. However, it will take a few weeks to be available as we are busy with other things. You can track its progress at: Expand the Functionality of MergeMarkups with other markup types. · Issue #357 · SlicerMorph/SlicerMorph · GitHub

Meanwhile, the simplest solution for you is to:

  1. Copy a blank pointList (e.g., called MergedPoints)
  2. Copy and paste control points from other type (fixedLMs, open and closed curves), into the MergedPoints pointList.

Then everything will be together.

Thank you! What do you mean by semiLMs SlicerMorph generated? Are they differ from the semiLMs that I placed and resampled on a curve? I can’t see the curves under Merge Landmark set?

Yes, for example semi landmark generated by landmark patch functionality or pseudoLMgenerator. As I said above, it only works for that type. Please use copy/paste method i described.

Thank you. I was able to do it. But the “ids” are not changed, for example, the ids for primary is still 1-5 while for semiLMs are 1-30. Would that matter in the analyses in R (morph and geomorph)?

I think I will need to specify semilandmarks in the log files like “SemiLandmarks= 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30”

That’s just the order of the LMs and semiLMs right? The ids shouldn’t matter? So as long as I paste them in a fixed order (for example, primary, open curve, closed curve), it should be fine?

No, it is the ordinal number not the ID.

Yes, use the ordinal values.

1 Like

Thanks! My understanding is SemiLMs slides along the curves.

Since I have two curves, how do I distinguish the two curves using the copy and paste method? or does it matter?

You don’t points are points. When you need to distinguish, you use the ordinal number associated with them (e.g., order such that first 10 are your fixed LMs, then next batch is your curves semiLM, and then next is patch so forth).

Thank you! This is really helpful.

Another question: my two curves (one closed curve, and one open curve) do have two shared points and I am thinking combing them using MergeCurves Function. However, when I placing semilandmarks, I placed those two shared points next to each other so they are not really shared points. I did not find a way to placing curves semiLMs starting/ending at an existing point, it always placed at a nearby place. Is there a way to place curves semiLMs starting/ending at an existing point?

As I recall, the MergeCurves copies the last point of the curve as the first point of the next one when merging. So in that sense it may not matter. Do try and see.