mne-tools / mne-connectivity

Connectivity algorithms that leverage the MNE-Python API.
https://mne.tools/mne-connectivity/dev/index.html
BSD 3-Clause "New" or "Revised" License
65 stars 34 forks source link

Example dataset for FC analysis #108

Open brovelli opened 1 year ago

brovelli commented 1 year ago

Describe the problem

Dear all, I would like to add a tutorial or example to Frites to show how to link it to mne-python and mne-connectivity functionalities. To do so, I think it would be interesting to have a common example dataset for FC analysis. Does anyone know if there is such a dataset around? What is your opinion in this respect?

Describe your solution

In Frites, for whole-brain FC analyses and group-level statistics, we normally use single-trial and time-resolved high-gamma power time courses (MEG data or SEEG). Here are the characteristics for the MEG dataset 1) Single-trial DICS in the 60-120Hz band and 150msec time window (multitaper based) 2) Time-resolved with a fs of 5 msec 3) Atlas-based (MarsAtlas) 4) Multiple subjects for group-level stats

Therefore, the FC analysis are performed in the time-domain using power-to-power "correlations"

If a similar dataset exists, I would be happy to develop a notebook with the workflow for FC analysis bridging mne-connectivity and Frites.

NB: it does not need to be in the MarsAtlas parcellation, any parcellation would do I guess

Describe possible alternatives

If not, an alternative would be to upload our benchmark dataset which has been published ex Brovelli et al 2017 or Combrisson et al 2022. The network is a fronto-parietal network involved in visuomotor transformation processes, pretty standard result in the litterature.

What do you think?

Cheers,

Andrea

larsoner commented 1 year ago

Does anyone know if there is such a dataset around? What is your opinion in this respect?

I don't, but that's not saying much. :)

If not, an alternative would be to upload our benchmark dataset which has been published ex Brovelli et al 2017 or Combrisson et al 2022. The network is a fronto-parietal network involved in visuomotor transformation processes, pretty standard result in the litterature.

To me this seems like a great first choice rather than alternative actually. I don't know the lit, but if it's standard like you say, and you have access to a dataset that shows the standard finding in a publication... this is exactly the sort of dataset that I would consider ideal.

I have not heard of the MarsAtlas, does it exist / can we create it for fsaverage? Then I would propose two new things:

  1. mne.datasets.fetch_mars_atlas_parcellation() (similar to the hcp one we have already)
  2. mne.datasets.fronto_parietal_label.data_path() which downloads a dataset from somewhere (osf.io?) where the data are stored in a (n_labels, n_subjects, n_epochs, n_freqs, n_times) ndarray (or whatever) along with a label_names list-of-str inside a HDF5 container (h5io could be used for this). Or if you already have some format that is equivalent and part of one of those papers, even better! But the .data_path() should fetch it.

Then we can use these datasets in MNE-Python maybe for group-level source analysis examples (which we've needed for a long time) and definitely in this repo for all sorts of connectivity analyses.

WDYT?

brovelli commented 1 year ago

Thanks Eric for your input.

1) Running MarsAtlas (link) is not straight forward, unfortunately. Basically, we import Freesurfer results into BrainVisa to create the MrsAtals parcellation. Then we wrote a toolbox to go from Brainvisa to MNE, which you find here, to create source models etc. Then all the following steps are performed with standard mne-python functions.

The main limitation of MarsAtlas is that the nodes of the meshes of BrainVisa/MarsAtlas are not the same of those in Freesurfer. There are some resampling processes that disrupt the direct mapping from Brainvisa to Freesurfer. But I am not an expert in the field, the BrainVisa people (e.g., Jef Mangin) may have developed an easy solution for correspondance. As far as I know, you cannot create MarsAtlas from fsaverage. This is indeed a blocking point.

So, developping an equivalent fetch_hcp_mmp_parcellation for MarsAtlas would be great, but it is currenlty not feasible from my side/group.

We are exploring an atlas that can be generated from fsaverage with a nice parcellation in terms of size of parcels for MEG, which is called VEP. We can share the code and scripts.

2) I can surely create a dataset and share it on a platform (osf.io or ebrains).

Thanks

Andrea

larsoner commented 1 year ago

We stored the data in Epochs structures even thought they are source level data, so to keep the single-trials. Is that ok or do you have new classes for single-trial and source level data? I think there are new classes in mne-connectivity isn't it?

Conceptually this is a bit of a no-no because Epochs are for sensor-level data, and putting source-level data in there breaks the standard MNE-Python conceptual model. That's why I advocate for ndarray+labels (or xarray if you want to be really fancy -- but it's a heavy dependency, so please don't :) ).

Running MarsAtlas (link) is not straight forward, unfortunately... We are exploring an atlas that can be generated from fsaverage with a nice parcellation in terms of size of parcels for MEG, which is called VEP. We can share the code and scripts.

It would be nice if this could be done equivalently with hcpmmp1 (~300 parcels), hcpmmp1_combined (~40 parcels), or aparc_sub (~400 parcels). Have you tried any of these three atlases? They are all built into MNE, so if you can re-run your source extraction algorithms using these atlases and standard MNE functions, then package these data, it's much more straightforward for us to include them in MNE tutorials. This is assuming that it's not too difficult and that it shows the same results. It's a great replication if it does! But maybe it's too much work...

If we can't go this route, I'm worried about the challenges of using this dataset. If you can't get a parcellation on fsaverage, it's going to make things like plotting in MNE-Python difficult. :(

brovelli commented 1 year ago

Ok I get it. At the moment, it's a bit difficult for me (or someone in my group) to re-run the analyses with another parcellation. That would be really helpfull, though, and I will try to keep it on the top of the to-do-list.

Thanks again for your precious input. And in case anyone gets on this type of data, I will be happy to contribute to the next steps (group-level FC analyses with Frites), since it would be pretty done relatively rapidly.

larsoner commented 1 year ago

Another option that would at least allow some progress would be to do just step (2) above, uploading your MarsAtlas'ed source-label-level data -- and leave step (1) above (MarsAtlas on fsaverage) for later. Then things like circular graphs and such could be plotted, even if they can't be plotted nicely on a brain, at least to start. That way connectivity measures can at least be computed, algorithms validated, etc.. WDYT @brovelli ?

Then separately, as a future thing, if some MarsAtlas expert could try loading fsaverage subject into their software and obtaining the MarsAtlas surface parcellation for it, that would be great as we could actually add it to MNE-Python properly!

brovelli commented 1 year ago

Good point. Yeah, I can do that (relatively) rapidly.

I will keep you posted.