# For the right hemi rh_labels = [label[:-2] + 'rh' for label in lh_labels] # %% # Compute point-spread function summaries (PCA) for all labels # ------------------------------------------------------------ # # We summarise the PSFs per label by their first five principal components, and # use the first component to evaluate label-to-label leakage below. # Compute first PCA component across PSFs within labels. # Note the differences in explained variance, probably due to different # spatial extents of labels. n_comp = 5 stcs_psf_mne, pca_vars_mne = get_point_spread( rm_mne, src, labels, mode='pca', n_comp=n_comp, norm=None, return_pca_vars=True) n_verts = rm_mne.shape[0] del rm_mne # %% # We can show the explained variances of principal components per label. Note # how they differ across labels, most likely due to their varying spatial # extent. with np.printoptions(precision=1): for [name, var] in zip(label_names, pca_vars_mne): print(f'{name}: {var.sum():.1f}% {var}') # %% # The output shows the summed variance explained by the first five principal
# regularisation parameter snr = 3.0 lambda2 = 1.0 / snr**2 method = 'MNE' # can be 'MNE' or 'sLORETA' # compute resolution matrix for sLORETA rm_lor = make_inverse_resolution_matrix(forward, inverse_operator, method='sLORETA', lambda2=lambda2) # get PSF and CTF for sLORETA at one vertex sources = [1000] stc_psf = get_point_spread(rm_lor, forward['src'], sources, norm=True) stc_ctf = get_cross_talk(rm_lor, forward['src'], sources, norm=True) del rm_lor ############################################################################## # Visualize # --------- # PSF: # Which vertex corresponds to selected source vertno_lh = forward['src'][0]['vertno'] verttrue = [vertno_lh[sources[0]]] # just one vertex # find vertices with maxima in PSF and CTF vert_max_psf = vertno_lh[stc_psf.data.argmax()]