Implementing Connectivity: "IndexError: too many indices for array: array is 3-dimensional, but 4 were indexed"

I am trying to implement connectivity as a feature within my code, but am unsure of how to fix this error code. Here is my code up until the point of the error.

import mne
import matplotlib.pyplot as plt
import numpy as np

from mne.time_frequency import psd_welch
from mne.connectivity import spectral_connectivity


from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, plot_confusion_matrix
from sklearn.metrics import confusion_matrix
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import FunctionTransformer
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import KFold, cross_val_predict

#Importing data
pre = mne.io.read_raw_eeglab('Subject31pre.set')
prop = mne.io.read_raw_eeglab('Subject33prop.set')

#Create events in regular intervals, used as markers to generate epochs
preEvents = mne.make_fixed_length_events(
    pre, id=1, start=0, stop=None, duration=1.0, first_samp=True, overlap=0.0)
propEvents = mne.make_fixed_length_events(
    prop, id=2, start=0, stop=None, duration=1.0, first_samp=True, overlap=0.0)

#Plotting of Power Spectral Density
pre.plot(duration=20, n_channels=64)
pre.plot_psd()
prop.plot(duration=20, n_channels=64)
prop.plot_psd()

#Epoch parameters
event_id = None
tmin = 0
tmax = 1
baseline = None
picks = None
reject = None

#Definition of epochs, for both pre and prop data
preEpochs = mne.Epochs(pre, preEvents, event_id, tmin, tmax, proj=True, baseline=baseline, picks=picks, reject=reject, preload=True)
print(preEpochs)
propEpochs = mne.Epochs(prop, propEvents, event_id, tmin, tmax, proj=True, baseline=baseline, picks=picks, reject=reject, preload=True)
print(propEpochs)

#Merge all epochs into one variable
epochsAll = mne.concatenate_epochs([preEpochs, propEpochs])
print(type(epochsAll))

def eeg_connectivity(epochs):
    FREQ_BANDS = {delta: [0.5, 4.5],
              theta: [4.5, 8.5],
              alpha: [8.5, 11.5],
              sigma: [11.5, 15.5],
              beta: [15.5, 30]}
    print(inside: ,type(epochs))


    sfreq = epochs.info['sfreq']

    con, freqs, times, n_epochs, n_tapers = \
        spectral_connectivity(epochs, method='coh', mode='multitaper', sfreq=sfreq,
        fmin=0.5, fmax=30, faverage=True, n_jobs=1)

    freqsNd = np.array(freqs)

    X = []
    for fmin, fmax in FREQ_BANDS.values():
        con_band = con[:, :, (freqsNd = fmin)  (freqsNd  fmax)].mean(axis=-1)
        X.append(con_band.reshape(len(con), -1))  # -1

    return np.concatenate(X, axis=-1)

And here is the error received:

  File , line 71, in eeg_connectivity
    con_band = con[:, :, (freqsNd = fmin)  (freqsNd  fmax)].mean(axis=-1)
IndexError: too many indices for array: array is 3-dimensional, but 4 were indexed

Thank you.

Topic epochs scikit-learn

Category Data Science

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.