In [1]:
import sklearn
sklearn.__version__


Out[1]:
'0.15.2'

In [2]:
import cPickle as pickle
import hickle as hkl
import os

In [3]:
import sys
sys.path.append('..')
import seizure.tasks
seizure.tasks.task_predict = True

from seizure.tasks import load_mat_data, count_mat_data

In [4]:
skip = 20

In [5]:
data_dir='../filtered-seizure-data'
out_dir ='../data-cache'

In [6]:
for target in ['Dog_1', 'Dog_2', 'Dog_3', 'Dog_4', 'Dog_5', 'Patient_1', 'Patient_2']:
    print target
    # input size
    data_types = ['preictal', 'interictal']
    Ns = 0
    for data_type in data_types:
        for i in count_mat_data(data_dir, target, data_type):
            Ns += 1
    print 'Number of segments', Ns
    
    # sample input
    Nf = None
    i = 0
    scount = 0
    for data_type in data_types:
        mat_data = load_mat_data(data_dir, target, data_type)
        for segment in mat_data:
            for key in segment.keys():
                if not key.startswith('_'):
                    break
            data = segment[key]['data'][0,0]
            if Nf is None:
                Nf, N0 = data[:,::skip].shape
                N = Ns*N0
                print 'Number of channels', Nf, N
                X = np.empty((N, Nf))
            X[i:i+N0,:] = data[:,::skip].T
            i += N0
            
    # build model from sampled data
    import sklearn.decomposition
    m = sklearn.decomposition.FastICA(whiten=True)
    #m.fit(X) # m is huge because of the sources_ field which will be removed in scikit-learn 0.16.0    
    m._fit(X) # temporary workaround
    fname = os.path.join(out_dir,'141022-ICA-model-1.%s.pkl'%target)
    with open(fname, 'wb') as fp:
        pickle.dump(m, fp, -1)
    !ls -l {fname}


Dog_1
Number of segments 504
Number of channels 16 6042456
-rw-r--r--  1 udi  staff  6740 Oct 22 11:01 ../data-cache/141022-ICA-model-1.Dog_1.pkl
Dog_2
Number of segments 542
Number of channels 16 6498038
-rw-r--r--  1 udi  staff  6740 Oct 22 11:05 ../data-cache/141022-ICA-model-1.Dog_2.pkl
Dog_3
Number of segments 1512
Number of channels 16 18127368
-rw-r--r--  1 udi  staff  6740 Oct 22 11:16 ../data-cache/141022-ICA-model-1.Dog_3.pkl
Dog_4
Number of segments 901
Number of channels 16 10802089
-rw-r--r--  1 udi  staff  6740 Oct 22 11:25 ../data-cache/141022-ICA-model-1.Dog_4.pkl
Dog_5
Number of segments 480
Number of channels 15 5754720
-rw-r--r--  1 udi  staff  5988 Oct 22 11:29 ../data-cache/141022-ICA-model-1.Dog_5.pkl
Patient_1
Number of segments 68
Number of channels 15 815252
-rw-r--r--  1 udi  staff  5988 Oct 22 11:30 ../data-cache/141022-ICA-model-1.Patient_1.pkl
Patient_2
Number of segments 60
Number of channels 24 719340
-rw-r--r--  1 udi  staff  14484 Oct 22 11:31 ../data-cache/141022-ICA-model-1.Patient_2.pkl

In [ ]: