The cueing task can ellicit a number of reliable changes. A central cue indicates the location of an upcoming target onset. Here the task can be changed to be perfectly predictive, or have some level of cue validity. Task is to indicate the orientation of a spatial grating on the target, up for vertical, right for horizontal.
ERP - Validly cued targets ellict larger ERP's than invalidly cued targets
Response ERPs - Validly cued targets are more quickly identified and better identified
Oscillations - Alpha power lateralizes after a spatial cue onset preceeding the upcoming onset of a target. Alpha power becomes smaller contraleral to the target side, and larger ipsilateral with the target.
!git clone https://github.com/kylemath/eeg-notebooks --recurse-submodules
%cd eeg-notebooks/notebooks
fatal: destination path 'eeg-notebooks' already exists and is not an empty directory. /content/eeg-notebooks/notebooks
!pip install mne
from mne import Epochs, find_events, concatenate_raws
from mne.time_frequency import tfr_morlet
import numpy as np
import os
from utils import utils
from collections import OrderedDict
import warnings
warnings.filterwarnings('ignore')
from matplotlib import pyplot as plt
import matplotlib.patches as patches
Requirement already satisfied: mne in /usr/local/lib/python3.6/dist-packages (0.17.1)
MNE is a very powerful Python library for analyzing EEG data. It provides helpful functions for performing key tasks such as filtering EEG data, rejecting artifacts, and grouping EEG data into chunks (epochs).
The first step after loading dependencies is use MNE to read the data we've collected into an MNE Raw object
# Fall 2018
# subs = [101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112,
# 202, 203, 204, 205, 207, 208, 209, 210, 211,
# 301, 302, 303, 304, 305, 306, 307, 308, 309]
# Winter 2019
subs = [1101, 1102, 1103, 1104, 1105, 1106, 1108, 1109, 1110,
1202, 1203, 1205, 1206, 1209, 1210, 1211, 1215,
1301, 1302, 1313,
1401, 1402, 1403, 1404, 1405, 1408, 1410, 1411, 1412, 1413, 1413, 1414, 1415, 1416]
# Both
# subs = [101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112,
# 202, 203, 204, 205, 207, 208, 209, 210, 211,
# 301, 302, 303, 304, 305, 306, 307, 308, 309,
# 1101, 1102, 1103, 1104, 1105, 1106, 1108, 1109, 1110,
# 1202, 1203, 1205, 1206, 1209, 1210, 1211, 1215,
# 1301, 1302, 1313,
# 1401, 1402, 1403, 1404, 1405, 1408, 1410, 1411, 1412, 1413, 1413, 1414, 1415, 1416]
# placeholders to add to for each subject
diff_out = []
Ipsi_out = []
Contra_out = []
Ipsi_spectra_out = []
Contra_spectra_out = []
diff_spectra_out = []
ERSP_diff_out = []
ERSP_Ipsi_out = []
ERSP_Contra_out = []
frequencies = np.linspace(6, 30, 100, endpoint=True)
wave_cycles = 6
# time frequency window for analysis
f_low = 7 # Hz
f_high = 10
f_diff = f_high-f_low
t_low = 0 # s
t_high = 1
t_diff = t_high-t_low
bad_subs= [6, 7, 13, 26]
really_bad_subs = [11, 12, 19]
sub_count = 0
for sub in subs:
print(sub)
sub_count += 1
if (sub_count in really_bad_subs):
rej_thresh_uV = 90
elif (sub_count in bad_subs):
rej_thresh_uV = 90
else:
rej_thresh_uV = 90
rej_thresh = rej_thresh_uV*1e-6
# Load both sessions
raw = utils.load_data('visual/cueing', sfreq=256.,
subject_nb=sub, session_nb=1)
raw.append( utils.load_data('visual/cueing', sfreq=256.,
subject_nb=sub, session_nb=2) )
# Filter Raw Data
raw.filter(1,30, method='iir')
#Select Events
events = find_events(raw)
event_id = {'LeftCue': 1, 'RightCue': 2}
epochs = Epochs(raw, events=events, event_id=event_id,
tmin=-1, tmax=2, baseline=(-1, 0),
reject={'eeg':rej_thresh}, preload=True,
verbose=False, picks=[0, 3])
print('Trials Remaining: ' + str(len(epochs.events)) + '.')
# Compute morlet wavelet
# Left Cue
tfr, itc = tfr_morlet(epochs['LeftCue'], freqs=frequencies,
n_cycles=wave_cycles, return_itc=True)
tfr = tfr.apply_baseline((-1,-.5),mode='mean')
power_Ipsi_TP9 = tfr.data[0,:,:]
power_Contra_TP10 = tfr.data[1,:,:]
# Right Cue
tfr, itc = tfr_morlet(epochs['RightCue'], freqs=frequencies,
n_cycles=wave_cycles, return_itc=True)
tfr = tfr.apply_baseline((-1,-.5),mode='mean')
power_Contra_TP9 = tfr.data[0,:,:]
power_Ipsi_TP10 = tfr.data[1,:,:]
# Compute averages Differences
power_Avg_Ipsi = (power_Ipsi_TP9+power_Ipsi_TP10)/2;
power_Avg_Contra = (power_Contra_TP9+power_Contra_TP10)/2;
power_Avg_Diff = power_Avg_Ipsi-power_Avg_Contra;
#output data into array
times = epochs.times
Ipsi_out.append(np.mean(power_Avg_Ipsi[np.argmax(frequencies>f_low):
np.argmax(frequencies>f_high)-1,
np.argmax(times>t_low):np.argmax(times>t_high)-1 ]
)
)
Ipsi_spectra_out.append(np.mean(power_Avg_Ipsi[:,np.argmax(times>t_low):
np.argmax(times>t_high)-1 ],1
)
)
Contra_out.append(np.mean(power_Avg_Contra[np.argmax(frequencies>f_low):
np.argmax(frequencies>f_high)-1,
np.argmax(times>t_low):np.argmax(times>t_high)-1 ]
)
)
Contra_spectra_out.append(np.mean(power_Avg_Contra[:,np.argmax(times>t_low):
np.argmax(times>t_high)-1 ],1))
diff_out.append(np.mean(power_Avg_Diff[np.argmax(frequencies>f_low):
np.argmax(frequencies>f_high)-1,
np.argmax(times>t_low):np.argmax(times>t_high)-1 ]
)
)
diff_spectra_out.append(np.mean(power_Avg_Diff[:,np.argmax(times>t_low):
np.argmax(times>t_high)-1 ],1
)
)
#save the spectrograms to average over after
ERSP_diff_out.append(power_Avg_Diff)
ERSP_Ipsi_out.append(power_Avg_Ipsi)
ERSP_Contra_out.append(power_Avg_Contra)
#average spectrograms
GrandAvg_diff = np.nanmean(ERSP_diff_out,0)
GrandAvg_Ipsi = np.nanmean(ERSP_Ipsi_out,0)
GrandAvg_Contra = np.nanmean(ERSP_Contra_out,0)
#average spectra
GrandAvg_spec_Ipsi = np.nanmean(Ipsi_spectra_out,0)
GrandAvg_spec_Contra = np.nanmean(Contra_spectra_out,0)
GrandAvg_spec_diff = np.nanmean(diff_spectra_out,0)
#error bars for spectra (standard error)
num_good = len(diff_out) - sum(np.isnan(diff_out))
GrandAvg_spec_Ipsi_ste = np.nanstd(Ipsi_spectra_out,0)/np.sqrt(num_good)
GrandAvg_spec_Contra_ste = np.nanstd(Contra_spectra_out,0)/np.sqrt(num_good)
GrandAvg_spec_diff_ste = np.nanstd(diff_spectra_out,0)/np.sqrt(num_good)
##
#Plot Spectra error bars
fig, ax = plt.subplots(1)
plt.errorbar(frequencies,GrandAvg_spec_Ipsi,yerr=GrandAvg_spec_Ipsi_ste)
plt.errorbar(frequencies,GrandAvg_spec_Contra,yerr=GrandAvg_spec_Contra_ste)
plt.legend(('Ipsi','Contra'))
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power (uV^2)')
plt.hlines(0,3,33)
#Plot Spectra Diff error bars
fig, ax = plt.subplots(1)
plt.errorbar(frequencies,GrandAvg_spec_diff,yerr=GrandAvg_spec_diff_ste)
plt.legend('Ipsi-Contra')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Power (uV^2)')
plt.hlines(0,3,33)
##
#Grand Average Ipsi
plot_max = np.max([np.max(np.abs(GrandAvg_Ipsi)), np.max(np.abs(GrandAvg_Contra))])
fig, ax = plt.subplots(1)
im = plt.imshow(GrandAvg_Ipsi,
extent=[times[0], times[-1], frequencies[0], frequencies[-1]],
aspect='auto', origin='lower', cmap='coolwarm', vmin=-plot_max, vmax=plot_max)
plt.xlabel('Time (sec)')
plt.ylabel('Frequency (Hz)')
plt.title('Power Ipsi')
cb = fig.colorbar(im)
cb.set_label('Power')
# Create a Rectangle patch
rect = patches.Rectangle((t_low,f_low),t_diff,f_diff,linewidth=1,edgecolor='k',facecolor='none')
# Add the patch to the Axes
ax.add_patch(rect)
#Grand Average Contra
fig, ax = plt.subplots(1)
im = plt.imshow(GrandAvg_Contra,
extent=[times[0], times[-1], frequencies[0], frequencies[-1]],
aspect='auto', origin='lower', cmap='coolwarm', vmin=-plot_max, vmax=plot_max)
plt.xlabel('Time (sec)')
plt.ylabel('Frequency (Hz)')
plt.title('Power Contra')
cb = fig.colorbar(im)
cb.set_label('Power')
# Create a Rectangle patch
rect = patches.Rectangle((t_low,f_low),t_diff,f_diff,linewidth=1,edgecolor='k',facecolor='none')
# Add the patch to the Axes
ax.add_patch(rect)
#Grand Average Ipsi-Contra Difference
plot_max_diff = np.max(np.abs(GrandAvg_diff))
fig, ax = plt.subplots(1)
im = plt.imshow(
,
extent=[times[0], times[-1], frequencies[0], frequencies[-1]],
aspect='auto', origin='lower', cmap='coolwarm', vmin=-plot_max_diff, vmax=plot_max_diff)
plt.xlabel('Time (sec)')
plt.ylabel('Frequency (Hz)')
plt.title('Power Difference Ipsi-Contra')
cb = fig.colorbar(im)
cb.set_label('Ipsi-Contra Power')
# Create a Rectangle patch
rect = patches.Rectangle((t_low,f_low),t_diff,f_diff,linewidth=1,edgecolor='k',facecolor='none')
# Add the patch to the Axes
ax.add_patch(rect)
<matplotlib.patches.Rectangle at 0x7f5948b01d68>
import scipy
num_good = len(diff_out) - sum(np.isnan(diff_out))
[tstat, pval] = scipy.stats.ttest_ind(diff_out,np.zeros(len(diff_out)),nan_policy='omit')
print('Ipsi Mean: '+ str(np.nanmean(Ipsi_out)))
print('Contra Mean: '+ str(np.nanmean(Contra_out)))
print('Mean Diff: '+ str(np.nanmean(diff_out)))
print('t(' + str(num_good-1) + ') = ' + str(round(tstat,3)))
print('p = ' + str(round(pval,3)))
import pandas as pd
print(diff_out)
raw_data = {'Ipsi Power': Ipsi_out,
'Contra Power': Contra_out}
df = pd.DataFrame(raw_data, columns = ['Ipsi Power', 'Contra Power'])
print(df)
df.to_csv('375CueingEEG.csv')
print('Saved subject averages for each condition to 375CueingEEG.csv file in present directory')
[nan, 1.7890047693694025e-11, 6.40257192463808e-11, 1.2016988558064774e-10, 1.643681129897095e-10, 1.1465401250727357e-10, 8.107123680349033e-11, -3.1169419915325006e-11, 6.493727108357483e-11, 4.3529314385415755e-11, 2.8760356184521284e-11, 3.773350340044309e-11, 2.1131349959479695e-11, 1.5571207459949601e-10, -4.629115067550113e-10, -8.0522323353216e-11, -4.6644221372820765e-11, nan, nan, -3.4389510978749296e-11, 7.091042185483415e-11, 1.2983383558014348e-11, 1.3604198590381146e-10, -5.861633427481697e-11, -6.204912953285913e-11, 1.8344086913139663e-10, 2.380242500968211e-11, -8.8050332977192e-11, -7.508128947253718e-11, 2.9079648598434818e-11, 2.9079648598434818e-11, -4.146716305783257e-11, -1.5307351374033267e-10, 2.3393198398388223e-11] Ipsi Power Contra Power 0 NaN NaN 1 -3.901325e-11 -5.690330e-11 2 4.568905e-11 -1.833667e-11 3 2.037251e-11 -9.979737e-11 4 2.567893e-10 9.242117e-11 5 1.128359e-10 -1.818109e-12 6 3.090019e-10 2.279306e-10 7 -1.325457e-10 -1.013762e-10 8 4.086011e-11 -2.407716e-11 9 8.168927e-11 3.815995e-11 10 1.073335e-10 7.857313e-11 11 5.134699e-10 4.757364e-10 12 -1.088382e-11 -3.201517e-11 13 1.006811e-10 -5.503096e-11 14 -2.543183e-10 2.085932e-10 15 -3.615777e-11 4.436455e-11 16 -5.354581e-11 -6.901593e-12 17 NaN NaN 18 NaN NaN 19 5.637907e-13 3.495330e-11 20 -9.265134e-12 -8.017556e-11 21 -2.448927e-10 -2.578761e-10 22 2.682534e-10 1.322114e-10 23 4.775386e-11 1.063702e-10 24 -5.500639e-11 7.042736e-12 25 1.907671e-11 -1.643642e-10 26 2.746872e-11 3.666293e-12 27 -9.699470e-11 -8.944371e-12 28 1.345766e-10 2.096579e-10 29 3.654300e-11 7.463347e-12 30 3.654300e-11 7.463347e-12 31 -3.302737e-11 8.439791e-12 32 -4.426000e-11 1.088135e-10 33 -4.177686e-11 -6.517005e-11 Saved subject averages for each condition to 375CueingEEG.csv file in present directory
df = pd.DataFrame(Ipsi_spectra_out,columns=frequencies)
print(df)
df.to_csv('375CueingIpsiSpec.csv')
df = pd.DataFrame(Contra_spectra_out,columns=frequencies)
df.to_csv('375CueingContraSpec.csv')
print('Saved Spectra to 375CueingContraSpec.csv file in present directory')
6.000000 6.242424 6.484848 6.727273 6.969697 \ 0 NaN NaN NaN NaN NaN 1 7.991890e-11 8.036284e-11 7.548816e-11 6.696746e-11 5.489871e-11 2 8.482874e-11 8.635330e-11 9.420775e-11 1.024297e-10 1.064200e-10 3 1.394826e-10 1.324403e-10 1.241198e-10 1.121430e-10 9.387917e-11 4 1.355015e-10 1.519385e-10 1.523882e-10 1.378647e-10 1.137803e-10 5 4.146935e-11 4.747567e-11 5.477697e-11 6.351733e-11 7.302017e-11 6 1.591767e-10 1.802644e-10 1.960184e-10 2.090976e-10 2.218464e-10 7 2.051924e-10 1.359738e-10 7.068325e-11 1.696284e-11 -2.275222e-11 8 -2.289620e-11 -1.966269e-11 -1.143603e-11 -6.869489e-13 1.008869e-11 9 2.639212e-10 2.390503e-10 2.144125e-10 1.905306e-10 1.680688e-10 10 1.734091e-10 1.751927e-10 1.753140e-10 1.718332e-10 1.640584e-10 11 -4.155194e-11 5.554974e-11 1.555793e-10 2.462566e-10 3.218309e-10 12 1.132429e-10 9.957683e-11 9.229583e-11 8.893916e-11 8.553388e-11 13 1.521996e-10 2.196098e-10 2.624162e-10 2.803374e-10 2.764403e-10 14 -1.992109e-12 8.659712e-12 1.729436e-11 2.559822e-11 2.899818e-11 15 -1.632265e-10 -1.465498e-10 -1.333522e-10 -1.212212e-10 -1.078400e-10 16 1.051757e-10 9.010762e-11 7.191888e-11 5.248310e-11 3.280272e-11 17 NaN NaN NaN NaN NaN 18 NaN NaN NaN NaN NaN 19 -3.037587e-11 -3.195487e-11 -3.150411e-11 -2.845690e-11 -2.399326e-11 20 -4.576869e-11 -7.575594e-11 -1.010965e-10 -1.151713e-10 -1.153312e-10 21 -3.017372e-10 -2.806035e-10 -2.604053e-10 -2.436529e-10 -2.315371e-10 22 1.892637e-10 1.928711e-10 1.834239e-10 1.687836e-10 1.565444e-10 23 -1.863042e-10 -1.441354e-10 -1.077887e-10 -7.797507e-11 -5.404857e-11 24 -1.099290e-10 -1.131996e-10 -1.189890e-10 -1.243301e-10 -1.263736e-10 25 -2.486010e-10 -1.910190e-10 -1.426405e-10 -9.719711e-11 -5.511673e-11 26 -2.444701e-10 -2.199233e-10 -1.877827e-10 -1.515040e-10 -1.140170e-10 27 -1.015551e-10 -9.978091e-11 -9.461620e-11 -8.792444e-11 -8.189433e-11 28 -1.236814e-10 -1.335374e-10 -1.266249e-10 -1.085890e-10 -8.551483e-11 29 -1.196307e-10 -1.035983e-10 -8.547074e-11 -6.942479e-11 -5.634324e-11 30 -1.196307e-10 -1.035983e-10 -8.547074e-11 -6.942479e-11 -5.634324e-11 31 4.570382e-11 2.986854e-11 1.272615e-11 -3.008220e-12 -1.543231e-11 32 6.194128e-10 6.055475e-10 5.266180e-10 4.074218e-10 2.767420e-10 33 -1.126135e-10 -1.308744e-10 -1.333577e-10 -1.263601e-10 -1.162239e-10 7.212121 7.454545 7.696970 7.939394 8.181818 \ 0 NaN NaN NaN NaN NaN 1 3.928643e-11 2.071860e-11 3.181606e-13 -2.052093e-11 -4.029148e-11 2 1.039261e-10 9.499544e-11 8.129098e-11 6.521155e-11 4.913061e-11 3 6.952496e-11 4.237734e-11 1.715320e-11 -1.951685e-12 -1.242241e-11 4 8.885054e-11 7.355947e-11 7.767381e-11 1.071070e-10 1.614869e-10 5 8.233485e-11 9.080593e-11 9.834153e-11 1.052699e-10 1.119386e-10 6 2.360274e-10 2.528666e-10 2.726663e-10 2.943405e-10 3.154951e-10 7 -5.068669e-11 -7.162195e-11 -9.029272e-11 -1.094741e-10 -1.293937e-10 8 1.927783e-11 2.647718e-11 3.208575e-11 3.667147e-11 4.058414e-11 9 1.476014e-10 1.295449e-10 1.140981e-10 1.011510e-10 9.021884e-11 10 1.528162e-10 1.399273e-10 1.273332e-10 1.163920e-10 1.076142e-10 11 3.825605e-10 4.319614e-10 4.736947e-10 5.095872e-10 5.392423e-10 12 7.853530e-11 6.599330e-11 4.780540e-11 2.535703e-11 9.142596e-13 13 2.553082e-10 2.221843e-10 1.825206e-10 1.414754e-10 1.033338e-10 14 2.030075e-11 -6.441448e-12 -5.346427e-11 -1.185210e-10 -1.955033e-10 15 -9.194498e-11 -7.375521e-11 -5.482577e-11 -3.740813e-11 -2.363154e-11 16 1.354064e-11 -4.648259e-12 -2.122263e-11 -3.599269e-11 -4.914679e-11 17 NaN NaN NaN NaN NaN 18 NaN NaN NaN NaN NaN 19 -1.954894e-11 -1.589403e-11 -1.302493e-11 -1.048426e-11 -7.694647e-12 20 -1.030080e-10 -8.228831e-11 -5.793932e-11 -3.384502e-11 -1.234650e-11 21 -2.245237e-10 -2.226341e-10 -2.254633e-10 -2.321171e-10 -2.412028e-10 22 1.526209e-10 1.605196e-10 1.810823e-10 2.124974e-10 2.506242e-10 23 -3.448216e-11 -1.750570e-11 -1.625271e-12 1.411057e-11 3.012498e-11 24 -1.233505e-10 -1.149077e-10 -1.019163e-10 -8.594513e-11 -6.867757e-11 25 -2.055605e-11 2.719007e-12 1.394190e-11 1.571367e-11 1.277618e-11 26 -7.777898e-11 -4.476871e-11 -1.633497e-11 7.000955e-12 2.558695e-11 27 -7.836279e-11 -7.829831e-11 -8.157123e-11 -8.713611e-11 -9.354055e-11 28 -6.064853e-11 -3.372653e-11 -2.503652e-12 3.501561e-11 7.902951e-11 29 -4.514284e-11 -3.423873e-11 -2.230347e-11 -8.399179e-12 8.085575e-12 30 -4.514284e-11 -3.423873e-11 -2.230347e-11 -8.399179e-12 8.085575e-12 31 -2.381502e-11 -2.852306e-11 -3.061445e-11 -3.133040e-11 -3.169920e-11 32 1.565924e-10 5.866081e-11 -1.389431e-11 -6.283206e-11 -9.186853e-11 33 -1.067093e-10 -9.839175e-11 -8.975175e-11 -7.880157e-11 -6.433280e-11 ... 27.818182 28.060606 28.303030 28.545455 \ 0 ... NaN NaN NaN NaN 1 ... -2.110801e-11 -2.141138e-11 -2.161187e-11 -2.171384e-11 2 ... -5.210840e-12 -5.030915e-12 -4.853308e-12 -4.678700e-12 3 ... 5.470784e-12 4.363229e-12 3.233237e-12 2.092435e-12 4 ... -4.556771e-12 -4.779064e-12 -4.955921e-12 -5.090998e-12 5 ... -1.087794e-11 -1.029440e-11 -9.726796e-12 -9.177509e-12 6 ... -1.102624e-12 -1.486730e-12 -1.819941e-12 -2.107474e-12 7 ... 1.738099e-11 1.634645e-11 1.533262e-11 1.434358e-11 8 ... -6.907351e-12 -6.883115e-12 -6.830596e-12 -6.750004e-12 9 ... 3.397888e-12 3.071010e-12 2.761509e-12 2.469625e-12 10 ... 1.795384e-12 1.715378e-12 1.633663e-12 1.550629e-12 11 ... 4.430557e-11 4.284110e-11 4.135584e-11 3.985125e-11 12 ... -2.090928e-12 -1.916058e-12 -1.738928e-12 -1.563288e-12 13 ... -2.142111e-11 -2.068772e-11 -1.989041e-11 -1.904290e-11 14 ... 8.122216e-12 7.302915e-12 6.478321e-12 5.658976e-12 15 ... -6.737278e-12 -6.474572e-12 -6.214444e-12 -5.960195e-12 16 ... 8.821102e-12 8.426885e-12 8.029811e-12 7.631691e-12 17 ... NaN NaN NaN NaN 18 ... NaN NaN NaN NaN 19 ... 2.160869e-12 1.652602e-12 1.182025e-12 7.478319e-13 20 ... 9.866176e-12 9.106445e-12 8.401268e-12 7.747526e-12 21 ... 1.034560e-12 8.441881e-13 6.669552e-13 5.031984e-13 22 ... -8.631284e-14 -4.163090e-13 -6.950198e-13 -9.272307e-13 23 ... 1.610265e-11 1.510977e-11 1.418317e-11 1.331900e-11 24 ... 1.027779e-11 9.697388e-12 9.139330e-12 8.602132e-12 25 ... 9.857953e-12 1.002092e-11 1.011396e-11 1.014096e-11 26 ... 7.691710e-12 9.181761e-12 1.048695e-11 1.161431e-11 27 ... -1.753326e-11 -1.679225e-11 -1.603954e-11 -1.528187e-11 28 ... 5.794606e-12 5.116645e-12 4.528455e-12 4.018316e-12 29 ... 1.449307e-11 1.255506e-11 1.078479e-11 9.176391e-12 30 ... 1.449307e-11 1.255506e-11 1.078479e-11 9.176391e-12 31 ... 4.083996e-12 3.934985e-12 3.764528e-12 3.576713e-12 32 ... -4.863543e-12 -4.295936e-12 -3.782809e-12 -3.319118e-12 33 ... -3.605396e-11 -3.623576e-11 -3.626747e-11 -3.615323e-11 28.787879 29.030303 29.272727 29.515152 29.757576 \ 0 NaN NaN NaN NaN NaN 1 -2.172236e-11 -2.164310e-11 -2.148219e-11 -2.124607e-11 -2.094144e-11 2 -4.507663e-12 -4.340669e-12 -4.178092e-12 -4.020207e-12 -3.867214e-12 3 9.518999e-13 -1.779517e-13 -1.287490e-12 -2.367939e-12 -3.411441e-12 4 -5.188059e-12 -5.250875e-12 -5.283165e-12 -5.288527e-12 -5.270396e-12 5 -8.648437e-12 -8.141057e-12 -7.656433e-12 -7.195249e-12 -6.757861e-12 6 -2.354097e-12 -2.564129e-12 -2.741481e-12 -2.889698e-12 -3.011956e-12 7 1.338294e-11 1.245381e-11 1.155877e-11 1.069994e-11 9.878931e-12 8 -6.642258e-12 -6.508836e-12 -6.351703e-12 -6.173232e-12 -5.976043e-12 9 2.195466e-12 1.939016e-12 1.700131e-12 1.478547e-12 1.273891e-12 10 1.466625e-12 1.381976e-12 1.296983e-12 1.211934e-12 1.127110e-12 11 3.832983e-11 3.679501e-11 3.525095e-11 3.370241e-11 3.215457e-11 12 -1.392281e-12 -1.228462e-12 -1.073835e-12 -9.298909e-13 -7.976622e-13 13 -1.815816e-11 -1.724826e-11 -1.632433e-11 -1.539644e-11 -1.447362e-11 14 4.854071e-12 4.071474e-12 3.317770e-12 2.598338e-12 1.917412e-12 15 -5.714203e-12 -5.478063e-12 -5.252720e-12 -5.038602e-12 -4.835722e-12 16 7.234350e-12 6.839574e-12 6.449076e-12 6.064472e-12 5.687247e-12 17 NaN NaN NaN NaN NaN 18 NaN NaN NaN NaN NaN 19 3.486066e-13 -1.717036e-14 -3.510517e-13 -6.545685e-13 -9.292653e-13 20 7.142027e-12 6.581573e-12 6.063012e-12 5.583290e-12 5.139473e-12 21 3.530098e-13 2.162732e-13 9.269572e-14 -1.815771e-14 -1.168381e-13 22 -1.117640e-12 -1.270824e-12 -1.391155e-12 -1.482759e-12 -1.549501e-12 23 1.251317e-11 1.176147e-11 1.105966e-11 1.040361e-11 9.789338e-12 24 8.084637e-12 7.585968e-12 7.105497e-12 6.642819e-12 6.197682e-12 25 1.010643e-11 1.001537e-11 9.873057e-12 9.684958e-12 9.456576e-12 26 1.257263e-11 1.337196e-11 1.402313e-11 1.453720e-11 1.492537e-11 27 -1.452529e-11 -1.377513e-11 -1.303605e-11 -1.231204e-11 -1.160645e-11 28 3.575487e-12 3.190260e-12 2.853944e-12 2.558838e-12 2.298211e-12 29 7.722905e-12 6.416491e-12 5.248686e-12 4.210642e-12 3.293275e-12 30 7.722905e-12 6.416491e-12 5.248686e-12 4.210642e-12 3.293275e-12 31 3.375482e-12 3.164543e-12 2.947320e-12 2.726895e-12 2.506011e-12 32 -2.900319e-12 -2.522325e-12 -2.181518e-12 -1.874737e-12 -1.599190e-12 33 -3.589927e-11 -3.551351e-11 -3.500525e-11 -3.438482e-11 -3.366325e-11 30.000000 0 NaN 1 -2.057510e-11 2 -3.719235e-12 3 -4.411093e-12 4 -5.232011e-12 5 -6.344323e-12 6 -3.111111e-12 7 9.096915e-12 8 -5.762940e-12 9 1.085691e-12 10 1.042786e-12 11 3.061286e-11 12 -6.777715e-13 13 -1.356378e-11 14 1.278172e-12 15 -4.643791e-12 16 5.318740e-12 17 NaN 18 NaN 19 -1.176655e-12 20 4.728775e-12 21 -2.039849e-13 22 -1.594952e-12 23 9.213076e-12 24 5.769963e-12 25 9.193358e-12 26 1.519870e-11 27 -1.092205e-11 28 2.066240e-12 29 2.487449e-12 30 2.487449e-12 31 2.287051e-12 32 -1.352438e-12 33 -3.285204e-11 [34 rows x 100 columns] Saved Spectra to 375CueingContraSpec.csv file in present directory