04. Plot contrastΒΆ

Group average of dSPM solutions obtained by 03. Compute inverse solution for the contrast between both types of faces together and scrambled at 170 ms poststimulus. The image was produced by subtracting normalized solutions of faces to the ones of scrambled.

# Authors: Annalisa Pascarella <a.pascarella@iac.cnr.it>
# License: BSD (3-clause)

# sphinx_gallery_thumbnail_number = 1

import os
import json
import pprint
import os.path as op
import numpy as np
import mne


# Read experiment params as json
params = json.load(open("params.json"))
pprint.pprint({'parameters': params})

data_type = params["general"]["data_type"]
subject_ids = params["general"]["subject_ids"]
NJOBS = params["general"]["NJOBS"]
session_ids = params["general"]["session_ids"]

new_name_condition = params["inverse"]["new_name_condition"]

is_short = params["general"]["short"]  # # to analyze a segment of data

if "data_path" in params["general"].keys():
    data_path = params["general"]["data_path"]
else:
    data_path = op.expanduser("~")
print("data_path : %s" % data_path)

subjects_dir = op.join(data_path, params["general"]["subjects_dir"])

src_estimation_wf_name = 'source_dsamp_short_reconstruction_dSPM_aparc' \
    if is_short else 'source_dsamp_full_reconstruction_dSPM_aparc'
morph_stc_path = \
    op.join(data_path, src_estimation_wf_name,
            '_subject_id_{sbj}', 'morph_stc')

os.environ['QT_API'] = 'pyqt5'

fig_path = op.join(data_path, 'figures')
if not os.path.isdir(fig_path):
    os.mkdir(fig_path)
# PLot
stc_condition = list()
for cond in new_name_condition:
    stcs = list()

    for subject in subject_ids:

        out_path = morph_stc_path.format(sbj=subject)
        stc = mne.read_source_estimate(
            op.join(out_path, 'mne_dSPM_inverse_morph-%s' % (cond)))
        stcs.append(stc)

    data = np.average([np.abs(s.data) for s in stcs], axis=0)
    stc = mne.SourceEstimate(data, stcs[0].vertices,
                             stcs[0].tmin, stcs[0].tstep, 'fsaverage')
    del stcs
    stc_condition.append(stc)

data = stc_condition[0].data / np.max(stc_condition[0].data) + \
    stc_condition[2].data / np.max(stc_condition[2].data) - \
    stc_condition[1].data / np.max(stc_condition[1].data)
data = np.abs(data)
stc_contrast = mne.SourceEstimate(
    data, stc_condition[0].vertices, stc_condition[0].tmin,
    stc_condition[0].tstep, 'fsaverage')
# stc_contrast.save(op.join(fig_path, 'stc_dspm_difference_norm'))

lims = (0.25, 0.75, 1)
clim = dict(kind='value', lims=lims)


brain_dspm = stc_contrast.plot(
    views=['ven'], hemi='both', subject='fsaverage', subjects_dir=subjects_dir,
    initial_time=0.17, time_unit='s', background='w',
    clim=clim, foreground='k', backend='auto')
brain_dspm.save_image(op.join(fig_path, 'dspm-contrast.png'))
'''
brain_dspm = stc_contrast.plot(
    views='ven', hemi='lh', subject='fsaverage', subjects_dir=subjects_dir,
    initial_time=0.17, time_unit='s', background='w',
    clim=clim, foreground='k', backend='matplotlib')
'''
{'parameters': {'general': {'NJOBS': 1,
                            'data_path': '/home/pasca/Science/workshop/PracticalMEEG/ds000117/derivatives/meg_derivatives',
                            'data_type': 'fif',
                            'session_ids': ['01', '02'],
                            'short': False,
                            'subject_ids': ['sub-01'],
                            'subjects_dir': '/home/pasca/Science/workshop/PracticalMEEG/ds000117/FSF'},
                'inverse': {'condition': ['face/famous',
                                          'scrambled',
                                          'face/unfamiliar'],
                            'events_id': {'face/famous/first': 5,
                                          'face/famous/immediate': 6,
                                          'face/famous/long': 7,
                                          'face/unfamiliar/first': 13,
                                          'face/unfamiliar/immediate': 14,
                                          'face/unfamiliar/long': 15,
                                          'scrambled/first': 17,
                                          'scrambled/immediate': 18,
                                          'scrambled/long': 19},
                            'method': 'dSPM',
                            'new_name_condition': ['famous',
                                                   'scrambled',
                                                   'unfamiliar'],
                            'parcellation': 'aparc',
                            'snr': 3.0,
                            'spacing': 'oct-6',
                            'tmax': 1.0,
                            'tmin': -0.2,
                            'trans_fname': '*-trans.fif'},
                'preprocessing': {'ECG_ch_name': 'EEG063',
                                  'EoG_ch_name': ['EEG061', 'EEG062'],
                                  'down_sfreq': 300,
                                  'h_freq': 40,
                                  'l_freq': 0.1,
                                  'reject': {'grad': 4e-10, 'mag': 4e-12},
                                  'variance': 0.999}}}
data_path : /home/pasca/Science/workshop/PracticalMEEG/ds000117/derivatives/meg_derivatives
Using pyvistaqt 3d backend.


"\nbrain_dspm = stc_contrast.plot(\n    views='ven', hemi='lh', subject='fsaverage', subjects_dir=subjects_dir,\n    initial_time=0.17, time_unit='s', background='w',\n    clim=clim, foreground='k', backend='matplotlib')\n"
../../_images/dspm-contrast.png

Total running time of the script: ( 0 minutes 2.866 seconds)

Gallery generated by Sphinx-Gallery