import numpy as np
import matplotlib.pyplot as plt
from spkit import ICA
from spkit.data import load_data
X,ch_names = load_data.eegSample()
nC = len(ch_names)
x = X[128*10:128*12,:]
t = np.arange(x.shape[0])/128.0
ica = ICA(n_components=nC,method='fastica')
ica.fit(x.T)
s1 = ica.transform(x.T)
ica = ICA(n_components=nC,method='infomax')
ica.fit(x.T)
s2 = ica.transform(x.T)
ica = ICA(n_components=nC,method='picard')
ica.fit(x.T)
s3 = ica.transform(x.T)
ica = ICA(n_components=nC,method='extended-infomax')
ica.fit(x.T)
s4 = ica.transform(x.T)
methods = ('fastica', 'infomax', 'picard', 'extended-infomax')
icap = ['ICA'+str(i) for i in range(1,15)]
plt.figure(figsize=(15,15))
plt.subplot(321)
plt.plot(t,x+np.arange(nC)*200)
plt.xlim([t[0],t[-1]])
plt.yticks(np.arange(nC)*200,ch_names)
plt.grid(alpha=0.3)
plt.title('X : EEG Data')
S = [s1,s2,s3,s4]
for i in range(4):
plt.subplot(3,2,i+2)
plt.plot(t,S[i].T+np.arange(nC)*700)
plt.xlim([t[0],t[-1]])
plt.yticks(np.arange(nC)*700,icap)
plt.grid(alpha=0.3)
plt.title(methods[i])
plt.show()