How to export distances between anatomical landmarks

Operating system:win10
Slicer version: r29738

Dear slicerMorph user,

I am wondering if there is a way to export the dimensions between anatomical

General worklfow in slicerMorph

  • List item data acquisition
  • List item model generation
  • List item generate landmarks
  • List item populate landmarks across samples

And at this step it would be great if there would be an option to export for each sample
the dimensions between the established landmarks. In that way one would have the possibility
to obtain information about dimension/length/width/… of e.g. skull, mandible…
in addition to procrustes analysis and PCA;
This would enable “intuitive” information, as a first step, like: skull A large than skull B,… instead of
shape variation across PC1…

Is there a way to retrieve such an information and implement batch export of the resulting dimensions between the landmarks?


In Markups module, you can highlight any two points (markups) in the control list and then right click to obtain the distance between them.

Beyond that it is hard to generalize what you asked, because it all depends on how you measure the skull width/length (which landmarks, what order). You can develop that as a simple python script for your data. Let us know if you need examples.

Also simple distance measures are rarely useful by themselves. Because if a skull is larger or wider than the others, it usually will be observable. Ratios of those linear measurements can be more informative about the shape differences as it will indicate proportional changes.

Thanks for the feedback.

Following example:

  • List item estimate / categorize cases of “Brachycephalie”
  • List item Brachycephalie could be defined as ratio: width/lenght

Now assume that the following 9 anatomical landmarks were established accross the cohort,
(ref.: Viewer – Richtsmeier Laboratory)

  1. Center of alveolar ridge over maxillary incisor, left side
  2. Center of alveolar ridge over maxillary incisor, right side
  3. Anterior-most point at intersection of premaxillae and nasal bones, left side
  4. Anterior-most point at intersection of premaxillae and nasal bones, right side
  5. Intersection of parietal, temporal and interparietal bones, left side
  6. Intersection of parietal, temporal and interparietal bones,right side
  7. Bregma: intersection of frontal bones and parietal bones at midline
  8. Intersection of parietal bones with anterior aspect of interparietal bone at midline
  9. Intersection of interparietal bones with squamous portion of occipital bone at midline

If I am not mistaken 36 distances between these 9 points can be measured.


  • List item set the 9 landmarks

  • List item use ALPACA workflow to transfer these 9 landmarks to the samples of interest

  • List item once the individual transformations are established (ALPACA strength) export for each sample the 36 distances for the applied 9 landmarks

  • List item use additional software to load the distances of the samples and perform computation/analysis/visualization (e.g. box plot / mean+/-sdt. of specific distance … ect.)

Would this be feasible?

I would approach this differently and focus only automating the measurement and displaying results (the last item on your list). Everything else (eg ALPACA) is pretty streamlined and automatic anyways (only takes about 10 clicks or so once you define you templates and points).

Estimating pairwise distances from point list is straightforward, and so is converting them ratios and even plotting them. Check the sample script repository on how to read and work with Markups Script repository — 3D Slicer documentation

and these are plotting examples. Script repository — 3D Slicer documentation


one result of ALPACA pipeline are the resulting transformed landmarks; these results are stored as *.fcsv; currently these results/transformed coordinates are used to obtain the distances between each landmark coordinate.
For this step additional software is used which loads the *.fcsv file and computes the distances between all landmarks.

This approach works fine and not additinal scripting in slicerMorph is required.

Yes, if you are going to do pairwise distance calculation outside of Slicer, you don’t need to do any scripting with Slicer. Everything else to that point is pretty straighforward, and detailed in our tutorials.