ICA error: No digitization points found

Hi,

I am trying to run ICA on my EEG data but the MNE didn’t have a montage for the EEG system I am using. So, I manually set up montage using EEG channel locations to produce digitized points but it’s not working at all. It’s giving me an error message that no digitization points were found.

I have attached the screenshot of the channel location that I used to generate the montage.
I have also copied the channel locations with this.

  • MNE version: e.g. 0.24.0
  • EEG system: mBrainTrain smarting Mobi with 24 EEG electrodes and 2 miscellaneous ones (M1, M2)
  • operating system: Windows 10

**:page_facing_up: *CODE

montage_data = pd.read_csv('montage.csv')
montage_data = montage_data.set_index('ch_name', drop =True)
head_radius = 0.095  # in meters
montage_data *= head_radius 

ch_name_to_pos_mapping = montage_data.T.to_dict(orient='list')

montage = mne.channels.make_dig_montage(
    ch_pos=montage_data.T.to_dict(orient='list')  # need to get it into the right shape
)
raw.set_montage(montage)
ica.plot_components()

##RuntimeError: No digitization points found.

********* Channel location with names***************************

|ch_name|X|Y|Z|
|Fp1|-270|860|360|
|Fp2|270|860|360|
|F3|-470|620|800|
|F4|470|620|800|
|C3|-610|0|970|
|C4|610|0|970|
|P3|-470|-620|800|
|P4|470|-620|800|
|O1|-270|-860|360|
|O2|270|-860|360|
|F7|-670|520|360|
|F8|670|520|360|
|T7|-780|0|360|
|T8|780|0|360|
|P7|-670|-520|360|
|P8|670|-520|360|
|Fz|0|670|950|
|Cz|0|0|1200|
|Pz|0|-670|950|
|M1|-730|-250|0|
|M2|730|-250|0|
|AFz|0|830|690|
|CPz|0|-340|1130|
|POz|0|-830|690|

Thanks

Hello @BilalKhan and welcome to the forum!

Since you seem to be using a standardized electrode placement scheme, and you don’t appear to have individually measured digitization points, I would suggest to simply use one of our built-in standard montages!

So you could do, for example:

raw.set_montage(‘easycap-M1’)

(Please replace the quotation marks, I cannot enter the proper ones on my current input device)

For a list of built-in montages, please see the Notes section here:

https://mne.tools/stable/generated/mne.channels.make_standard_montage.html#mne.channels.make_standard_montage

This whole process will hopefully be slightly less confusing and better documented in the upcoming MNE-Python 1.1 release.

Best wishes,
Richard

Hi, @richard Thank you for your answer. I tried using the code

raw.set_montage('easycap-M1')

command. However, it showed this error, see below:


ValueError: DigMontage is only a subset of info. There are 2 channel positions not present in the DigMontage. The required channels are:

[‘M1’, ‘M2’].

Consider using inst.set_channel_types if these are not EEG channels, or use the on_missing parameter if the channel positions are allowed to be unknown in your analyses.


Hello @BilalKhan,

I believe the mastoids are not included in the 10-05 system; if you don’t want to use them in your analysis (and only use them for referencing), you should drop them before setting the montage.

Best wishes,
Richard

cc @cbrnr & @sappelhoff for potential additional input

Hi @richard @cbnr @sappelhoff , I tried dropping off the M1 and M2 electrodes from the ICA analysis and the raw.set_montage('easycap-M1') worked as well but still there is an error in plotting ICA components.
I have attached the screenshot of the output I got after setting up the montage to ‘raw’.

Error message is below:

RuntimeError: No digitization points found

This is not an error, just a (useful!) warning.

Apparently, Cz and AFz have the wrong channel type (misc instead of eeg). This should be corrected via raw.set_channel_types().

Best wishes,
Richard

1 Like

Hi @richard @cbrnr @sappelhoff,

Thank you for the help. But it seems I had attached the wrong image of the error message.
I have attached the correct one now. The issue is that even after setting the montage to the raw, the ica components could not be plotted. The error message says ‘no digitization points found’, which should be set up during the setting up of the montage. Is it the wrong assumption of am I missing something here.

Kindly help.

Regards
B

Hello, we’d need to see more of your code to figure where things are going wrong.

Are you sure you set the montage before fitting ICA?

Yes, please post your code (with Markdown formatting)! :slight_smile:

Also, electrodes M1 and M2 are typically very close to the positions TP9 and TP10 in the 5%-style systems 
 so if you don’t want to drop them you can either consider renaming them (messy), or make a your own montage using Compute and plot standard EEG electrode positions — eeg_positions 2.2.0.dev0 documentation 
 there you can enter M1 and M2 as “aliases” for TP9 and TP10.

1 Like

Thanks, everyone. Its working now.

ica.plot_components(outlines=“skirt”);
WARNING:root:Did not find any electrode locations (in the info object), will attempt to use digitization points instead. However, if digitization points do not correspond to the EEG electrodes, this will lead to bad results. Please verify that the sensor locations in the plot are accurate.

RuntimeError Traceback (most recent call last)
in <cell line: 1>()
----> 1 ica.plot_components(outlines=“skirt”);

6 frames
in plot_ica_components(ica, picks, ch_type, inst, plot_std, reject, sensors, show_names, contours, outlines, sphere, image_interp, extrapolate, border, res, size, cmap, vlim, cnorm, colorbar, cbar_fmt, axes, title, nrows, ncols, show, image_args, psd_args, verbose)

/usr/local/lib/python3.10/dist-packages/mne/channels/layout.py in _auto_topomap_coords(info, picks, ignore_overlap, to_sphere, sphere)
854 # Get EEG digitization points
855 if info[“dig”] is None or len(info[“dig”]) == 0:
→ 856 raise RuntimeError(“No digitization points found.”)
857
858 locs3d = np.array(

RuntimeError: No digitization points found.

you cannot plot a topography without setting the locations of the channels.

See the set_montage / montage how to here:

https://mne.tools/stable/auto_tutorials/intro/40_sensor_locations.html#tut-sensor-locations

https://mne.tools/stable/auto_tutorials/evoked/30_eeg_erp.html#channel-locations

Alex

1 Like

A post was split to a new topic: Error in raw.set_montage()