Why do polhemus fiducials and head shape points imported by mne.io.read_raw_ctf() not match the original values?

Hi all,

I came across an inconsistency in the head shape and fiducial points (nasion, left/right preauricular points) location information between my original polhemus data given in a text file and the imported locations finally available in raw.info['dig']. Both sources of location information are supposedly given in a head centred coordinate system but there is a difference that does not seem to simply result from a change from an ALS (anterior, left, superior) to an RAS (right, anterior, superior) coordinate system.

That’s what I do
I’m importing polhemus head shape and fiducial points saved in a .pos file together with a CTF dataset using mne.io.read_raw_ctf(). According to the docs, read_raw_ctf() imports the polhemus points from the pos file if this file is given in the CTF ds folder and makes them available in raw.info['dig']. This works well!

That’s what I observe
I noticed that raw.info['dig'] provides slightly different values compared to the original polhemus data file. An example:

Original polhemus location information

 1             3.38353000856438            1.13881414755639            12.7969373333201
 2             2.52356227525328            0.975942529323402           13.1773013521048
 3            -0.281915017379368           0.875684536782395           13.9986165768719
 4            -1.74889123427984            0.574273595878504           13.8756824248428
 5            -3.06706566544647            0.294919780856925           13.4841080132442
nasion         10.358178368476            -3.13984949151802E-16        2.72291446389104E-16
left          -0.136645401260177           6.08596638803559           -1.26377315730342E-17
right          0.136645401260177          -6.08596638803559            2.0284745020846E-17

Imported polhemus location information in raw.info['dig']

<DigPoint | Extra #1001 : (-13.8, 34.2, 128.0) mm   : head frame>,
 <DigPoint | Extra #1002 : (-12.5, 25.5, 131.8) mm   : head frame>,
 <DigPoint | Extra #1003 : (-12.4, -2.5, 140.0) mm   : head frame>,
 <DigPoint | Extra #1004 : (-9.8, -17.3, 138.8) mm   : head frame>,
 <DigPoint | Extra #1005 : (-7.5, -30.6, 134.8) mm   : head frame>,
<DigPoint | Extra #2000 : (-0.1, 103.5, 0.0) mm     : head frame>,
 <DigPoint | Extra #2001 : (-64.4, 0.6, -0.0) mm     : head frame>,
 <DigPoint | Extra #2002 : (57.3, -0.6, 0.0) mm      : head frame>]

Extra points starting from number 2000 are obviously nasion, left and right preauricular points.

Obviously, the original polhemus information is given in ALS and the mne DigPoints are finally RAS. Puzzling is, however, that after importing the points, the LPA and RPA points do not have anymore the same distance from the origin! Looks like the origin is shifted by a couple of millimeters. What’s the reason for this shift and which information should I use for coregistration, the original or the imported one? I have the suspicion that it might not matter as long as the relative distances between the points don’t change, but in case would be nice to be reassured.

If you need the raw polhemus text file and a minimum raw data snippet to reproduce this behaviour, let me know.

Thanks a lot,

I’m using:

  • MNE version: 1.6.1
  • operating system: Linux server & Mac OS 10.15.


For a CTF system, the origin is per definition exactly between LPA and RPA and the orientation of this left-right axis is determined perpendicular to the anterior-posterior axis (from origin to Nasion), which means that the left-right axis does not necessarily go directly through LPA and RPA. In contrast, mne python uses the Neuromag convention where the anterior-posterior axis is perpendicular to the axis that goes directly through LPA and RPA, which means that LPA and RPA are not necessarily at the same distance from the origin. See also How are the different head and MRI coordinate systems defined? - FieldTrip toolbox

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.