- MNE version: latest
- operating system: Windows 11
Hi all,
I have been working on a pipeline to process my Depressed and Healthy EEG participants data and store the evoked data for grand average calculations at the end.
Here is the part of my code which is having trouble:
#This is the new version of the compute N2PC function which makes sure that the epoch numbers are equal
def compute_N2PC(Cepochs, Iepochs):
# Average epochs for both conditions
avg_Cepochs = Cepochs.average(picks='eeg', method='mean', by_event_type=False)
avg_Iepochs = Iepochs.average(picks='eeg', method='mean', by_event_type=False)
# Compute N2PC component by subtracting averaged ipsilateral data from averaged contralateral data
N2PC_epochs = mne.combine_evoked([avg_Cepochs, avg_Iepochs], weights=[1, -1])
return N2PC_epochs
# Compute N2PC component for each condition
N2PC_Invalid_Other_Left = compute_N2PC(Cepochs_Invalid_Other_Left, Iepochs_Invalid_Other_Left)
N2PC_Invalid_Other_Right = compute_N2PC(Cepochs_Invalid_Other_Right, Iepochs_Invalid_Other_Right)
N2PC_Invalid_Self_Left = compute_N2PC(Cepochs_Invalid_Self_Left, Iepochs_Invalid_Self_Left)
N2PC_Invalid_Self_Right = compute_N2PC(Cepochs_Invalid_Self_Right, Iepochs_Invalid_Self_Right)
N2PC_Other_Neutral_Left = compute_N2PC(Cepochs_Other_Neutral_Left, Iepochs_Other_Neutral_Left)
N2PC_Other_Neutral_Right = compute_N2PC(Cepochs_Other_Neutral_Right, Iepochs_Other_Neutral_Right)
N2PC_Self_Neutral_Left = compute_N2PC(Cepochs_Self_Neutral_Left, Iepochs_Self_Neutral_Left)
N2PC_Self_Neutral_Right = compute_N2PC(Cepochs_Self_Neutral_Right, Iepochs_Self_Neutral_Right)
N2PC_valid_Other_Left = compute_N2PC(Cepochs_valid_Other_Left, Iepochs_valid_Other_Left)
N2PC_valid_Other_Right = compute_N2PC(Cepochs_valid_Other_Right, Iepochs_valid_Other_Right)
N2PC_valid_Self_Left = compute_N2PC(Cepochs_valid_Self_Left, Iepochs_valid_Self_Left)
N2PC_valid_Self_Right = compute_N2PC(Cepochs_valid_Self_Right, Iepochs_valid_Self_Right)
#Artifact rejection after epoching
# Average epochs to create Evoked objects
evoked_Invalid_Other_Left = N2PC_Invalid_Other_Left
evoked_Invalid_Other_Right = N2PC_Invalid_Other_Right
evoked_Invalid_Self_Left = N2PC_Invalid_Self_Left
evoked_Invalid_Self_Right = N2PC_Invalid_Self_Right
evoked_Other_Neutral_Left = N2PC_Other_Neutral_Left
evoked_Other_Neutral_Right = N2PC_Other_Neutral_Right
evoked_Self_Neutral_Left = N2PC_Self_Neutral_Left
evoked_Self_Neutral_Right = N2PC_Self_Neutral_Right
evoked_valid_Other_Left = N2PC_valid_Other_Left
evoked_valid_Other_Right = N2PC_valid_Other_Right
evoked_valid_Self_Left = N2PC_valid_Self_Left
evoked_valid_Self_Right = N2PC_valid_Self_Right
# Extend to the respective group list
if group == 'D':
DN2PC_Other_Neutral_Left.extend([evoked_Other_Neutral_Left])
else:
HN2PC_Other_Neutral_Left.extend([evoked_Other_Neutral_Left])
if group == 'D':
DN2PC_Self_Neutral_Left.extend([evoked_Self_Neutral_Left])
else:
HN2PC_Self_Neutral_Left.extend([evoked_Self_Neutral_Left])
if group == 'D':
DN2PC_Invalid_Other_Left.extend([evoked_Invalid_Other_Left])
else:
HN2PC_Invalid_Other_Left.extend([evoked_Invalid_Other_Left])
if group == 'D':
DN2PC_Invalid_Other_Right.extend([evoked_Invalid_Other_Right])
else:
HN2PC_Invalid_Other_Right.extend([evoked_Invalid_Other_Right])
if group == 'D':
DN2PC_Invalid_Self_Left.extend([evoked_Invalid_Self_Left])
else:
HN2PC_Invalid_Self_Left.extend([evoked_Invalid_Self_Left])
if group == 'D':
DN2PC_Invalid_Self_Right.extend([evoked_Invalid_Self_Right])
else:
HN2PC_Invalid_Self_Right.extend([evoked_Invalid_Self_Right])
if group == 'D':
DN2PC_Other_Neutral_Right.extend([evoked_Other_Neutral_Right])
else:
HN2PC_Other_Neutral_Right.extend([evoked_Other_Neutral_Right])
if group == 'D':
DN2PC_Self_Neutral_Right.extend([evoked_Self_Neutral_Right])
else:
HN2PC_Self_Neutral_Right.extend([evoked_Self_Neutral_Right])
if group == 'D':
DN2PC_valid_Other_Left.extend([evoked_valid_Other_Left])
else:
HN2PC_valid_Other_Left.extend([evoked_valid_Other_Left])
if group == 'D':
DN2PC_valid_Other_Right.extend([evoked_valid_Other_Right])
else:
HN2PC_valid_Other_Right.extend([evoked_valid_Other_Right])
if group == 'D':
DN2PC_valid_Self_Left.extend([evoked_valid_Self_Left])
else:
HN2PC_valid_Self_Left.extend([evoked_valid_Self_Left])
if group == 'D':
DN2PC_valid_Self_Right.extend([evoked_valid_Self_Right])
else:
HN2PC_valid_Self_Right.extend([evoked_valid_Self_Right])
# Combine evoked data for 'Other_Neutral_Left' condition
DN2PC_Other_Neutral_Left = mne.combine_evoked(DN2PC_Other_Neutral_Left, weights='equal')
HN2PC_Other_Neutral_Left = mne.combine_evoked(HN2PC_Other_Neutral_Left, weights='equal')
# Combine evoked data for 'Self_Neutral_Left' condition
DN2PC_Self_Neutral_Left = mne.combine_evoked(DN2PC_Self_Neutral_Left, weights='equal')
HN2PC_Self_Neutral_Left = mne.combine_evoked(HN2PC_Self_Neutral_Left, weights='equal')
# Combine evoked data for 'Invalid_Other_Left' condition
DN2PC_Invalid_Other_Left = mne.combine_evoked(DN2PC_Invalid_Other_Left, weights='equal')
HN2PC_Invalid_Other_Left = mne.combine_evoked(HN2PC_Invalid_Other_Left, weights='equal')
# Combine evoked data for 'Invalid_Other_Right' condition
DN2PC_Invalid_Other_Right = mne.combine_evoked(DN2PC_Invalid_Other_Right, weights='equal')
HN2PC_Invalid_Other_Right = mne.combine_evoked(HN2PC_Invalid_Other_Right, weights='equal')
# Combine evoked data for 'Invalid_Self_Left' condition
DN2PC_Invalid_Self_Left = mne.combine_evoked(DN2PC_Invalid_Self_Left, weights='equal')
HN2PC_Invalid_Self_Left = mne.combine_evoked(HN2PC_Invalid_Self_Left, weights='equal')
# Combine evoked data for 'Invalid_Self_Right' condition
DN2PC_Invalid_Self_Right = mne.combine_evoked(DN2PC_Invalid_Self_Right, weights='equal')
HN2PC_Invalid_Self_Right = mne.combine_evoked(HN2PC_Invalid_Self_Right, weights='equal')
# Combine evoked data for 'Other_Neutral_Right' condition
DN2PC_Other_Neutral_Right = mne.combine_evoked(DN2PC_Other_Neutral_Right, weights='equal')
HN2PC_Other_Neutral_Right = mne.combine_evoked(HN2PC_Other_Neutral_Right, weights='equal')
# Combine evoked data for 'Self_Neutral_Right' condition
DN2PC_Self_Neutral_Right = mne.combine_evoked(DN2PC_Self_Neutral_Right, weights='equal')
HN2PC_Self_Neutral_Right = mne.combine_evoked(HN2PC_Self_Neutral_Right, weights='equal')
# Combine evoked data for 'valid_Other_Left' condition
DN2PC_valid_Other_Left = mne.combine_evoked(DN2PC_valid_Other_Left, weights='equal')
HN2PC_valid_Other_Left = mne.combine_evoked(HN2PC_valid_Other_Left, weights='equal')
# Combine evoked data for 'valid_Other_Right' condition
DN2PC_valid_Other_Right = mne.combine_evoked(DN2PC_valid_Other_Right, weights='equal')
HN2PC_valid_Other_Right = mne.combine_evoked(HN2PC_valid_Other_Right, weights='equal')
# Combine evoked data for 'valid_Self_Left' condition
DN2PC_valid_Self_Left = mne.combine_evoked(DN2PC_valid_Self_Left, weights='equal')
HN2PC_valid_Self_Left = mne.combine_evoked(HN2PC_valid_Self_Left, weights='equal')
# Combine evoked data for 'valid_Self_Right' condition
DN2PC_valid_Self_Right = mne.combine_evoked(DN2PC_valid_Self_Right, weights='equal')
HN2PC_valid_Self_Right = mne.combine_evoked(HN2PC_valid_Self_Right, weights='equal')
#Compute the overall N2PC evoked average for each group
Depressed_Invalid_OtherA = mne.combine_evoked([DN2PC_Invalid_Other_Left, DN2PC_Invalid_Other_Right], weights='equal')
Healthy_Invalid_OtherA = mne.combine_evoked([HN2PC_Invalid_Other_Left, HN2PC_Invalid_Other_Right], weights='equal')
Depressed_Invalid_SelfA = mne.combine_evoked([DN2PC_Invalid_Self_Left, DN2PC_Invalid_Self_Right], weights='equal')
Healthy_Invalid_SelfA = mne.combine_evoked([HN2PC_Invalid_Self_Left, HN2PC_Invalid_Self_Right], weights='equal')
Depressed_Other_NeutralA = mne.combine_evoked([DN2PC_Other_Neutral_Left, DN2PC_Other_Neutral_Right], weights='equal')
Healthy_Other_NeutralA = mne.combine_evoked([HN2PC_Other_Neutral_Left, HN2PC_Other_Neutral_Right], weights='equal')
Depressed_Self_NeutralA = mne.combine_evoked([DN2PC_Self_Neutral_Left, DN2PC_Self_Neutral_Right], weights='equal')
Healthy_Self_NeutralA = mne.combine_evoked([HN2PC_Self_Neutral_Left, HN2PC_Self_Neutral_Right], weights='equal')
Depressed_valid_OtherA = mne.combine_evoked([DN2PC_valid_Other_Left, DN2PC_valid_Other_Right], weights='equal')
Healthy_valid_OtherA = mne.combine_evoked([HN2PC_valid_Other_Left, HN2PC_valid_Other_Right], weights='equal')
Depressed_valid_SelfA = mne.combine_evoked([DN2PC_valid_Self_Left, DN2PC_valid_Self_Right], weights='equal')
Healthy_valid_SelfA = mne.combine_evoked([HN2PC_valid_Self_Left, HN2PC_valid_Self_Right], weights='equal')
# Compute the overall N2PC evoked average for each group
Depressed_Invalid_Other = mne.grand_average(Depressed_Invalid_OtherA)
Healthy_Invalid_Other = mne.grand_average(Healthy_Invalid_OtherA)
Depressed_Invalid_Self = mne.grand_average(Depressed_Invalid_SelfA)
Healthy_Invalid_Self = mne.grand_average(Healthy_Invalid_SelfA)
Depressed_Other_Neutral = mne.grand_average(Depressed_Other_NeutralA)
Healthy_Other_Neutral = mne.grand_average(Healthy_Other_NeutralA)
Depressed_Self_Neutral = mne.grand_average(Depressed_Self_NeutralA)
Healthy_Self_Neutral = mne.grand_average(Healthy_Self_NeutralA)
Depressed_valid_Other = mne.grand_average(Depressed_valid_OtherA)
Healthy_valid_Other = mne.grand_average(Healthy_valid_OtherA)
Depressed_valid_Self = mne.grand_average(Depressed_valid_SelfA)
Healthy_valid_Self = mne.grand_average(Healthy_valid_SelfA)
Here is my error:
Traceback (most recent call last):
File "C:\Users\19200262\AppData\Local\anaconda3\envs\mne\Scripts\mne_bids_pipeline-script.py", line 9, in <module>
sys.exit(main())
^^^^^^
File "C:\Users\19200262\AppData\Local\anaconda3\envs\mne\Lib\site-packages\mne_bids_pipeline\_main.py", line 218, in main
config_imported = _import_config(
^^^^^^^^^^^^^^^
File "C:\Users\19200262\AppData\Local\anaconda3\envs\mne\Lib\site-packages\mne_bids_pipeline\_config_import.py", line 36, in _import_config
user_names = _update_with_user_config(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\19200262\AppData\Local\anaconda3\envs\mne\Lib\site-packages\mne_bids_pipeline\_config_import.py", line 167, in _update_with_user_config
_update_config_from_path(
File "C:\Users\19200262\AppData\Local\anaconda3\envs\mne\Lib\site-packages\mne_bids_pipeline\_config_import.py", line 134, in _update_config_from_path
spec.loader.exec_module(custom_cfg)
File "<frozen importlib._bootstrap_external>", line 994, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "C:\Users\19200262\Desktop\config\custom_config.py", line 678, in <module>
Depressed_Invalid_Other = mne.grand_average(Depressed_Invalid_OtherA)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\19200262\AppData\Local\anaconda3\envs\mne\Lib\site-packages\mne\utils\numerics.py", line 586, in grand_average
elif len(all_inst) == 1:
^^^^^^^^^^^^^
TypeError: object of type 'EvokedArray' has no len()
To see my full pipeline it is here:
Thank you for any help