In [1]:
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
from scipy import io
import scipy.io as sio
%matplotlib inline 
import pylab
import csv
from Tkinter import Tk
from tkFileDialog import askopenfilename
from tkFileDialog import askdirectory
import nibabel as nb
from scipy import io
import nibabel as nb
from scipy.interpolate import interp1d
from scipy import ndimage

In [2]:
from sklearn import linear_model

Open data


In [3]:
# from http://stackoverflow.com/questions/3579568/choosing-a-file-in-python-with-simple-dialog
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)


/media/sophie/1554f3a2-94a1-4cf8-ae79-8a6fef1b5f7e/FreeBehaviorPanNeuronalGCaMP6/100133/old/100133Final/100133ss2on250cregcdFF30sMpsfkfint599Smith0_4_60TS.mat

In [4]:
Ua=sio.loadmat(filename)
DT=Ua['TSo']
DT.shape


Out[4]:
(20651, 599)

In [5]:
# from http://stackoverflow.com/questions/3579568/choosing-a-file-in-python-with-simple-dialog
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename2 = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename2)


/media/sophie/1554f3a2-94a1-4cf8-ae79-8a6fef1b5f7e/FreeBehaviorPanNeuronalGCaMP6/100133/old/100133Final/100133ss2on250cregcdFF30sMpsfkfint599Smith0_4_60IC.nii

In [6]:
img1 = nb.load(filename2)
data = img1.get_data()
S=data.shape
S


Out[6]:
(180, 97, 10, 599)

In [8]:
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)




In [9]:
Ua=sio.loadmat(filename)
Time_fluo=Ua['TimeFluoOn']
Time_fluo.shape


Out[9]:
(1, 3582)

In [7]:
Time_fluoICA=Time_fluo[:,501:6346]


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-7-8de166f95a4a> in <module>()
----> 1 Time_fluoICA=Time_fluo[:,501:6346]

NameError: name 'Time_fluo' is not defined

In [10]:
Time_fluoICA.shape


Out[10]:
(1, 5845)

In [8]:
Time_fluoICA=np.array(range(20651))*0.01

Z-score


In [9]:
Demean=np.zeros(S)
Dmaps=np.zeros(S)
Dvar=np.zeros(S)
Var=np.zeros(S[3])
D2=np.zeros([S[0],S[1],5,S[3]])
Tvar=np.zeros(S[3])

In [10]:
for i in range(S[3]):
    Demean[:,:,:,i]=data[:,:,:,i]-np.mean(np.mean(np.mean(data[:,:,:,i],0),0),0)

In [11]:
for i in range(S[3]):
    Dsq=np.reshape(Demean[:,:,:,i],S[0]*S[1]*S[2])
    Var[i]=np.sqrt(np.var(Dsq))
    Dvar=Demean[:,:,:,i]/Var[i]
    Dmaps[:,:,:,i]=Dvar-2
    Tvar[i]=np.var(DT[i,:])
Dmaps[Dmaps<0]=0

In [12]:
# from http://stackoverflow.com/questions/3579568/choosing-a-file-in-python-with-simple-dialog
Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)


/media/sophie/1554f3a2-94a1-4cf8-ae79-8a6fef1b5f7e/FreeBehaviorPanNeuronalGCaMP6/100133/old/100133Final/100133Xk.mat

In [13]:
Ua=sio.loadmat(filename)
Xk=Ua['Xk'].T

In [14]:
Xk.shape


Out[14]:
(8, 20651)

Open Masks


In [15]:
# from http://stackoverflow.com/questions/3579568/choosing-a-file-in-python-with-simple-dialog
from Tkinter import Tk
from tkFileDialog import askopenfilename

Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filenameM = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filenameM)
img1 = nb.load(filenameM)
Masks = img1.get_data()
Sm=Masks.shape
Masks=np.array(Masks)


/media/sophie/1554f3a2-94a1-4cf8-ae79-8a6fef1b5f7e/FreeBehaviorPanNeuronalGCaMP6/100133/100133Registration/JFRC100133Transformedfullpsftrimmed.nii

In [17]:
filenameM='/home/sophie/RegionList'
with open(filenameM) as f:
    content = f.readlines()
Names=[Line.split('\t') for Line in content]
RegionName=[Names[i][0] for i in range(75)]
Num=[int(Names[i][2]) for i in range(75)]

Average in masks to sort components by brain region


In [18]:
Dmaps.shape


Out[18]:
(180, 97, 10, 599)

In [19]:
M=np.zeros((S[3],86))
Mapmean=np.zeros(S[3])
MMasks=np.zeros(86)

In [20]:
for i in range(S[3]):
    Mapmean[i]=np.mean(np.mean(np.mean(Dmaps[:,:,:,i])))
    for j in range(86):
        MMasks[j]=np.mean(np.mean(np.mean(Masks[:,:,:,j])))
        if MMasks[j]:
            M[i,j]=np.mean(np.mean(np.mean(Masks[:,:,:,j]*Dmaps[:,:,:,i])))/(MMasks[j]*Mapmean[i])

In [21]:
CompMainName=S[3]*['']
CompNameAdd=np.zeros((S[3],86))
for i in range(S[3]):
    Max=np.max(M[i,:])
    I=np.argmax(M[i,:])+1
    for j in range(86):
        J=[l for l in range(74) if Num[l]==(j+1)]
        if M[i,j]>0.2*Max:
            CompNameAdd[i,J]=1
    J=[l for l in range(75) if Num[l]==I]
    CompMainName[i]=Names[np.array(J)][0]


/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:11: VisibleDeprecationWarning: converting an array with ndim > 0 to an index will result in an error in the future

In [22]:
Time_fluoICA.shape


Out[22]:
(20651,)

In [23]:
Xk.shape


Out[23]:
(8, 20651)

In [24]:
Xk=Xk.T

In [25]:
pylab.rcParams['figure.figsize'] = (13, 2.5)

h=5
tot=0
GoodICAnat=np.zeros(S[3])

for l in range(74):
    Final_maps=np.zeros((S[0],S[1],3))
    Fmap=np.zeros((S[0],S[1],3))
    C=np.zeros(3)

    n=0
    for i in range(len(CompMainName)):                    
        Dmmv=np.mean(data[:,:,:,i],2) 
        Dmmv[Dmmv<0.2*np.max(np.max(np.max(Dmmv)))]=0
        C=np.squeeze(np.random.rand(3,1))
        labeled, nrobject=ndimage.label(Dmmv>0)
        
        if CompMainName[i]==Names[l][0] and (sum(CompNameAdd[i,:])<5) and nrobject<200:
            n=n+1            
            
            for k in range(3):
                Fmap[:,:,k]=0.7*Dmmv*C[k]/np.max(C)
            Final_maps=Final_maps+Fmap
            plt.plot(Time_fluoICA.T,(DT[:,i]/np.sqrt(np.var(DT[:,i]))-h*n+2),color=C/2)        
            tot=tot+1
            GoodICAnat[i]=1
            #print(i)
            for j in range(86):
                if CompNameAdd[i,j]==1:                
                    print(Names[np.array(j)][0])
            print(i)
            
    plt.plot(Time_fluoICA,Xk[:,0]/np.std(Xk[:,0])+2,color=(1,0,0))   
    plt.plot(Time_fluoICA,Xk[:,1]/np.std(Xk[:,1])+2,color=(0.5,0.5,0))
    plt.plot(Time_fluoICA,Xk[:,4]/np.std(Xk[:,4])+6,color=(1,0,1))
    plt.plot(Time_fluoICA,Xk[:,6]/np.std(Xk[:,6])+12,color=(0,1,0))
    plt.plot(Time_fluoICA,Xk[:,7]/np.std(Xk[:,7])+12,color=(0,0,1))
    #plt.plot(Time_fluoICA.T,2*Xk[:,2]/np.max(Xk[:,2])+1.5,color=(1,0,1))    
    if n!=0:
        print(Names[l][1])

        plt.show()
        FM=Final_maps/np.max(np.max(Final_maps))
        FM[FM<0.1]=0
        plt.imshow(FM,interpolation='none')
        plt.show()
        frame1 = plt.gca()
        frame1.axes.get_xaxis().set_visible(False)
        frame1.axes.get_yaxis().set_visible(False)
        
# Open template


AME_R
2
AME_R
LO_R
103
AME_R
190
accessory medulla
LO_R
LOP_R
0
LO_R
LOP_R
ME_R
18
LO_R
PLP_R
20
LO_R
LOP_R
BU_L
21
LO_R
23
LO_R
LOP_R
ME_R
26
LO_R
ME_R
33
LO_R
36
LO_R
37
LO_R
40
LO_R
ME_R
GA_R
45
LO_R
LOP_R
AOTU_R
53
LO_R
LOP_R
ME_R
FLA_L
57
LO_R
ME_R
82
LO_R
PVLP_R
85
LO_R
PLP_R
93
LO_R
PB
LOP_R
ME_R
104
LO_R
LOP_R
ME_R
AOTU_L
127
LO_R
ME_R
135
LO_R
ME_R
GOR_R
143
LO_R
ME_R
145
LO_R
BU_R
ME_R
151
LO_R
ME_R
164
LO_R
ME_R
173
LO_R
ME_R
EPA_L
177
LO_R
204
LO_R
232
LO_R
289
LO_R
ME_R
359
LO_R
BU_R
ME_R
SPS_R
429
AME_R
LO_R
ME_R
440
LO_R
CAN_L
445
LO_R
CAN_R
ME_R
485
LO_R
ME_R
AOTU_R
GOR_L
505
lobula
LO_R
BU_R
25
BU_R
BU_L
225
BU_R
ME_R
428
BU_R
462
BU_R
CAN_L
490
BU_R
FLA_R
LO_L
ME_L
551
BU_R
LO_L
ME_L
556
BU_R
ME_R
563
BU_R
LOP_R
ME_R
AME_L
579
BU_R
MB_PED_R
585
BU_R
ATL_L
589
bulb
PB
ATL_L
3
PB
5
PB
ICL_L
IB_L
ATL_L
14
PB
ATL_L
27
PB
ATL_R
ATL_L
50
protocerebral bridge
LH_R
35
LH_R
MB_CA_R
74
LH_R
AL_R
158
LH_R
PLP_R
MB_CA_R
178
LH_R
SLP_R
284
lateral horn
SAD
GNG
219
SAD
GNG
IPS_L
336
SAD
IPS_R
GNG
487
saddle
CAN_R
FLA_R
CAN_L
133
cantle
SAD
AMMC_R
IPS_R
GNG
357
antennal mechanosensory and motor center
IB_R
80
inferior bridge
CRE_R
MB_VL_R
MB_ML_R
SIP_R
87
MB_VL_R
MB_ML_R
SIP_R
SCL_R
171
MB_VL_R
SIP_R
SMP_R
228
CRE_R
MB_VL_R
SIP_R
SMP_R
237
vertical lobe of adult mushroom body
CRE_R
MB_VL_R
MB_ML_R
51
medial lobe of adult mushroom body
LOP_R
83
LOP_R
97
LO_R
LOP_R
106
LOP_R
109
LOP_R
116
LO_R
LOP_R
162
LOP_R
211
LOP_R
343
LOP_R
345
LOP_R
362
LOP_R
404
LOP_R
ME_R
BU_L
420
LAL_R
LOP_R
427
LOP_R
470
LOP_R
497
LOP_R
535
LOP_R
ME_R
541
lobula plate
EB
FB
137
EB
FB
212
EB
MB_ML_L
355
EB
447
ellipsoid body
LAL_R
CRE_R
AL_R
42
adult antennal lobe
LO_R
LOP_R
ME_R
28
LO_R
ME_R
30
LO_R
LOP_R
ME_R
66
ME_R
IPS_L
75
ME_R
BU_L
102
LO_R
ME_R
SMP_R
ATL_L
138
ME_R
BU_L
182
ME_R
184
LO_R
PB
LOP_R
ME_R
223
ME_R
BU_L
CAN_L
233
LO_R
ME_R
AVLP_R
250
ME_R
257
LO_R
ME_R
GOR_L
279
ME_R
298
ME_R
MB_CA_L
302
LO_R
LOP_R
ME_R
BU_L
311
LO_R
BU_R
ME_R
GOR_L
315
LO_R
ME_R
326
LOP_R
ME_R
332
LO_R
ME_R
CAN_L
SIP_L
333
ME_R
SIP_L
337
MB_VL_R
ME_R
370
LO_R
LOP_R
ME_R
GOR_L
377
LOP_R
ME_R
SIP_L
408
LO_R
LOP_R
ME_R
AOTU_R
415
LOP_R
ME_R
418
ME_R
GOR_L
454
medulla
ATL_R
FB
ATL_L
31
fan-shaped body
ATL_R
SLP_R
SMP_R
224
superior lateral protocerebrum
MB_VL_R
SLP_R
SIP_R
153
superior intermediate protocerebrum
SLP_R
SMP_R
208
SMP_R
SMP_L
246
BU_R
SMP_R
SMP_L
247
superior medial protocerebrum
AVLP_R
49
anterior ventrolateral protocerebrum
AVLP_R
PVLP_R
PLP_R
1
PVLP_R
PLP_R
72
posterior ventrolateral protocerebrum
LO_R
PLP_R
52
BU_R
PLP_R
CAN_L
PLP_L
150
posterior lateral protocerebrum
MB_CA_R
207
SLP_R
MB_CA_R
SCL_R
269
MB_CA_R
304
PB
ATL_R
MB_CA_R
324
MB_CA_R
350
ATL_R
MB_VL_R
MB_CA_R
422
calyx of adult mushroom body
IB_R
SPS_R
4
SPS_R
IPS_R
191
SPS_R
260
superior posterior slope
SPS_R
IPS_R
81
SAD
IPS_R
GNG
IPS_L
248
IPS_R
249
IPS_R
308
AMMC_R
IPS_R
330
inferior posterior slope
SAD
AMMC_R
GNG
CAN_L
118
SAD
AMMC_R
IPS_R
GNG
241
SAD
GNG
323
GNG
492
IPS_R
GNG
SIP_L
SPS_L
546
adult gnathal ganglion
SAD
GNG
PRW
FLA_L
9
prow
CRE_R
AL_R
GA_R
186
LH_R
GA_R
236
LH_R
GA_R
287
GNG
GA_R
IB_L
294
GA_R
LO_L
ME_L
321
LOP_R
GA_R
381
GA_R
LO_L
FLA_L
ME_L
390
gall
AME_L
77
AME_L
282
AME_L
360
AME_L
LOP_L
ME_L
369
AME_L
LO_L
372
BU_R
AME_L
LO_L
ME_L
488
accessory medulla
LO_L
AVLP_L
PLP_L
16
LO_L
PLP_L
34
LO_L
PVLP_L
39
LO_L
AVLP_L
47
LO_L
ME_L
54
LO_L
ME_L
60
LO_L
PVLP_L
PLP_L
61
LO_L
PVLP_L
67
LO_L
69
LO_L
ME_L
AVLP_L
112
LO_L
IVLP_L
117
LO_L
PVLP_L
126
LO_L
PVLP_L
157
LO_L
ME_L
AVLP_L
160
LO_L
IPS_L
216
LO_L
331
MB_PED_R
LO_L
MB_VL_L
AOTU_L
356
LO_L
ME_L
450
LO_L
ATL_L
507
LO_L
ME_L
548
lobula
LO_L
BU_L
LOP_L
ME_L
235
LO_R
MB_PED_R
ME_R
BU_L
245
BU_L
MB_PED_L
SCL_L
489
BU_L
ATL_L
519
GOR_R
BU_L
ATL_L
ME_L
590
BU_L
FLA_L
ME_L
EPA_L
594
bulb
LH_L
10
LH_L
AL_L
56
LH_L
96
LH_L
165
lateral horn
CAN_R
FLA_R
CAN_L
FLA_L
209
cantle
AMMC_L
IVLP_L
17
antennal mechanosensory and motor center
IB_L
100
inferior bridge
LO_L
ATL_L
ME_L
571
antler
BU_L
MB_PED_L
SIP_L
AOTU_L
391
pedunculus of adult mushroom body
MB_VL_L
MB_ML_L
64
vertical lobe of adult mushroom body
CRE_L
MB_VL_L
MB_ML_L
48
CRE_L
MB_PED_L
MB_ML_L
55
medial lobe of adult mushroom body
PRW
VES_L
FLA_L
12
flange
LO_L
LOP_L
ME_L
63
LO_L
LOP_L
ME_L
113
AME_L
LO_L
LOP_L
154
MB_VL_L
LOP_L
ME_L
205
LO_L
LOP_L
ME_L
251
lobula plate
LAL_L
CRE_L
AL_L
6
LAL_L
VES_L
AL_L
22
adult antennal lobe
LO_L
ME_L
59
LO_L
ME_L
AOTU_L
132
LO_L
ME_L
142
LO_L
ME_L
156
ME_L
167
LO_L
ME_L
176
AME_L
ME_L
EPA_L
180
BU_R
LO_L
ME_L
192
LO_L
ME_L
196
ATL_R
LO_L
ME_L
197
BU_R
LO_L
ME_L
202
LO_L
ME_L
213
BU_R
LO_L
ME_L
214
AME_L
LO_L
ME_L
263
EPA_R
LO_L
LOP_L
ME_L
283
GA_R
LO_L
ME_L
296
SAD
MB_PED_R
LO_L
ME_L
313
LO_L
BU_L
ME_L
AOTU_L
335
BU_R
LO_L
ME_L
341
LO_L
ME_L
348
LO_L
ME_L
368
ME_L
392
BU_R
LO_L
ME_L
GOR_L
393
LO_L
ME_L
398
ME_L
403
AME_L
ME_L
409
LO_L
ME_L
416
LO_L
MB_VL_L
ME_L
433
ME_L
444
LO_L
LOP_L
ME_L
464
AOTU_R
CAN_L
ME_L
481
AME_L
ATL_L
ME_L
493
AME_L
LO_L
ME_L
503
ME_L
513
NO
ME_L
515
LO_L
ATL_L
ME_L
GOR_L
523
LO_L
FLA_L
ME_L
550
medulla
LH_L
SLP_L
SIP_L
139
SLP_L
436
superior lateral protocerebrum
SMP_L
119
SLP_L
SMP_L
274
superior medial protocerebrum
AVLP_L
PVLP_L
24
AVLP_R
PVLP_R
AVLP_L
38
AVLP_L
92
AVLP_L
136
LO_L
AVLP_L
239
anterior ventrolateral protocerebrum
MB_PED_L
PVLP_L
PLP_L
SCL_L
389
posterior ventrolateral protocerebrum
IVLP_L
SPS_L
IPS_L
8
wedge
LH_L
PVLP_L
PLP_L
99
MB_VL_L
PLP_L
299
posterior lateral protocerebrum
AME_L
BU_L
SIP_L
AOTU_L
152
anterior optic tubercle
MB_CA_L
188
SLP_L
MB_CA_L
SCL_L
199
MB_ML_L
MB_CA_L
215
MB_CA_L
275
calyx of adult mushroom body
CAN_R
IB_L
GOR_L
SPS_L
89
superior posterior slope
VES_L
SPS_L
IPS_L
7
SAD
IPS_L
44
SAD
GNG
IPS_L
254
inferior posterior slope

In [26]:
sum(GoodICAnat)-5-3-1-1-13-1-4-3-3-8


Out[26]:
225.0

In [36]:
# from http://stackoverflow.com/questions/3579568/choosing-a-file-in-python-with-simple-dialog
from Tkinter import Tk
from tkFileDialog import askopenfilename

Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filenamet = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filenamet)
nimt=nb.load(filenamet)
Dtemp=np.squeeze(nimt.get_data())
Dtemp.shape


/media/sophie2/100133/100133Final/AVG_100133ss2on250cregcpsf.nii
Out[36]:
(180, 97, 10)

Reorder by larger sub-regions (~ presumed stimulus to motor)


In [51]:
LargerRegionsDic={'':'','AME_R':'OL','LO_R':'OL','NO':'CX','BU_R':'CX','PB':'CX','LH_R':'LH','LAL_R':'LX','SAD':'PENP'
               ,'CAN_R':'PENP','AMMC_R':'PENP','ICL_R':'INP','VES_R':'VMNP','IB_R':'INP','ATL_R':'INP','CRE_R':'INP'
               ,'MB_PED_R':'MB','MB_VL_R':'MB','MB_ML_R':'MB','FLA_R':'PENP','LOP_R':'OL','EB':'CX','AL_R':'AL',
                'ME_R':'OL','FB':'CX','SLP_R':'SNP','SIP_R':'SNP','SMP_R':'SNP','AVLP_R':'VLNP','PVLP_R':'VLNP',
                'IVLP_R':'VLNP','PLP_R':'VLNP','AOTU_R':'VLNP','GOR_R':'VMNP','MB_CA_R':'MB','SPS_R':'VMNP',
                'IPS_R':'VMNP','SCL_R':'INP','EPA_R':'VMNP','GNG':'GNG','PRW':'PENP','GA_R':'LX','AME_L':'OL'
                ,'LO_L':'OL','BU_L':'CX','LH_L':'LH','LAL_L':'LX','CAN_L':'PENP','AMMC_L':'PENP','ICL_L':'INP',
                'VES_L':'VMNP','IB_L':'INP','ATL_L':'INP','CRE_L':'INP','MB_PED_L':'MB','MB_VL_L':'MB',
                'MB_ML_L':'MB','FLA_L':'PENP','LOP_L':'OL','AL_L':'AL','ME_L':'OL','SLP_L':'SNP','SIP_L':'SNP',
                'SMP_L':'SNP','AVLP_L':'VLNP','PVLP_L':'VLNP','IVLP_L':'VLNP','PLP_L':'VLNP','AOTU_L':'VLNP',
                'GOR_L':'VMNP','MB_CA_L':'MB','SPS_L':'VMNP','IPS_L':'VMNP','SCL_L':'INP','EPA_L':'VMNP','GA_L':'LX'}

In [52]:
SmallRegionsSorted=['ME_L','ME_R','LO_R','LO_L','LOP_R','LOP_L','AME_R','AME_L',
                  'PLP_R','PLP_L','PVLP_R','PVLP_L','AVLP_R','AVLP_L','AOTU_R','AOTU_L','IVLP_R','IVLP_L',
                  'AL_R','AL_L',
                  'MB_CA_R','MB_CA_L','MB_PED_R','MB_PED_L','MB_VL_R','MB_VL_L','MB_ML_R','MB_ML_L',
                  'SMP_R','SMP_L','SIP_R','SLP_L','SLP_R','SIP_L',
                  'LH_R','LH_L',                  
                  'CRE_R','CRE_L','ICL_R','ICL_L','SCL_R','SCL_L','IB_R','IB_L','ATL_R','ATL_L',
                  'EB','PB','NO','FB',
                  'BU_R','BU_L','LAL_R','LAL_L','GA_R','GA_L',
                  'GOR_R','GOR_L','EPA_R','EPA_L','VES_R','VES_L','SPS_R','SPS_L','IPS_R','IPS_L',
                  'AMMC_R','AMMC_L','SAD','FLA_R','FLA_L','PRW','CAN_R','CAN_L',
                  'GNG','']

In [53]:
Tozip=range(len(SmallRegionsSorted))
SmallRegionsDic=dict(zip(SmallRegionsSorted,Tozip))

In [54]:
LargerRegionInd={ 'OL':1,'VLNP':2,'VMNP':3,'AL':4,'MB':5,'LH':6,'SNP':7,'CX':8,'LX':9,'INP':10,'PENP':11,'GNG':12,'':13}

In [55]:
LargerRegion=[LargerRegionsDic[CompMainName[i]] for i in range(S[3])]

In [56]:
LargerRegionI=np.array([LargerRegionInd[LargerRegion[i]] for i in range(S[3])])

In [57]:
SmallRegion=np.array([SmallRegionsDic[CompMainName[i]] for i in range(S[3])])

In [58]:
NewOrder=np.argsort(SmallRegion)

Last pruning by hand


In [37]:
%%javascript
IPython.OutputArea.auto_scroll_threshold =4000;



In [38]:
if S[2]>5:
    Nstack=5
    Int100=[(i+1)*100/Nstack for i in range(Nstack)]
    Percs=np.percentile(range(S[2]),Int100)
    Indices=np.split(range(S[2]),Percs)
    D1=np.zeros([S[0],S[1],Nstack])
    Dmean=np.squeeze(data[:,:,range(Nstack),2])
    for i in range(Nstack):
        Vmean=np.mean(Dtemp[:,:,Indices[i]],2)
        Dmean[:,:,i]=Vmean
else:
    Nstack=S[2]
    D1=np.zeros([S[0],S[1],S[2]])
    Dmean=data[:,:,range(S[2])]  
    Dmean=np.squeeze(Dtemp[:,:,:])


/usr/local/lib/python2.7/dist-packages/numpy/lib/shape_base.py:422: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
  sub_arys.append(_nx.swapaxes(sary[st:end], axis, 0))

In [39]:
plt.imshow(Dmean[:,:,1],cmap=plt.cm.gray)


Out[39]:
<matplotlib.image.AxesImage at 0x7efd8084c290>

In [40]:
my_cmap=plt.cm.jet
my_cmap.set_bad(alpha=0)
Good_ICs=np.zeros(S[3])
Label_ICs=[]
pylab.rcParams['figure.figsize'] = (15, 2.5)

In [41]:
algorithm = linear_model.LinearRegression()

In [44]:
Sxk=Xk.shape

In [45]:
X=np.zeros((Sxk[0],6))

In [46]:
X[:,0]=(Xk[:,0]-np.mean(Xk[:,0]))/np.std(Xk[:,0])
X[:,1]=(Xk[:,1]-np.mean(Xk[:,1]))/np.std(Xk[:,1])
X[:,2]=(Xk[:,3]-np.mean(Xk[:,3]))/np.std(Xk[:,3])
X[:,3]=(Xk[:,4]-np.mean(Xk[:,4]))/np.std(Xk[:,4])
X[:,4]=(Xk[:,6]-np.mean(Xk[:,6]))/np.std(Xk[:,6])
X[:,5]=(Xk[:,7]-np.mean(Xk[:,7]))/np.std(Xk[:,7])

In [48]:
plt.plot(X[:,0])
plt.plot(X[:,1])
plt.plot(X[:,2])
plt.plot(X[:,3])
plt.plot(X[:,4])
plt.plot(X[:,5])


Out[48]:
[<matplotlib.lines.Line2D at 0x7efd7e140650>]

In [59]:
for j in range(S[3]):

    a=''
    if S[2]>5:
        for i in range(Nstack):
            V=Dmaps[:,:,Indices[i],j]
            D1[:,:,i]=np.max(V,2)
        D2[:,:,:,j]=D1
        D1[D1==0]=np.nan
           
    else:
        for i in range(S[2]):
            V=Dmaps[:,:,i,Order[j]]
            D1[:,:,i]=V 

    if (CompMainName[j] != '') and (LargerRegionI[j]!=1) and (LargerRegionI[j]==1 or LargerRegionI[j]==1
                                                             
                                                             
                                                             ):
        print(j)
        print(CompMainName[j])
        for i in range(Nstack):
            plt.subplot(1,5,i+1)
            plt.imshow(Dmean[:,:,i],cmap=plt.cm.gray)
            plt.imshow(D1[:,:,i], cmap=my_cmap,interpolation='none')
            frame1 = plt.gca()
            frame1.axes.get_xaxis().set_visible(False)
            frame1.axes.get_yaxis().set_visible(False)
        
        plt.show()
        
        model = algorithm.fit(X, DT[:,j])
        betas = model.coef_
        rsq = model.score(X,DT[:,j])
        print('left:',betas[0],'right:',betas[1],'walk:',betas[2],'groom:',betas[3])
        print(rsq)
        plt.plot(Time_fluoICA.T,2*DT[:,j]+1.5)
        plt.plot(Time_fluoICA.T,2*(Xk[:,0]-Xk[:,1])/np.max(Xk[:,0]-Xk[:,1]),color=(1,0,0))   
        plt.plot(Time_fluoICA.T,Xk[:,4]/np.max(Xk[:,4])+4,color=(1,0,0))
        plt.show()
        a=raw_input()
    
    Label_ICs.append(a)
    if Label_ICs[j]!='':
        Good_ICs[j]=1

In [60]:
Dmaps.shape


Out[60]:
(180, 97, 10, 599)

In [61]:
fn=open('/home/sophie/Desktop/100133GoodICs150.txt','w')
for i in range(S[3]):
    if Good_ICs[i]:
        print>>fn, i
        print>>fn, CompMainName[i]
        print>>fn, Good_ICs[i]

In [62]:
if len(Label_ICs)<S[3]:
    for j in range(S[3]-len(Label_ICs)):
      Label_ICs.append('')

In [63]:
G=Good_ICs.tolist();

In [64]:
len(Good_ICs)


Out[64]:
599

In [65]:
G.count(1)


Out[65]:
0

Plot all components for turning left, right, walking, and grooming


In [69]:
Rsq=np.zeros((1,S[3]))
Betas=np.zeros((6,S[3]))

In [71]:
for j in range(S[3]):
    model = algorithm.fit(X, DT[:,j])
    Betas[:,j] = model.coef_
    Rsq[:,j] = model.score(X,DT[:,j])

In [72]:
plt.plot(Betas[0,:])


Out[72]:
[<matplotlib.lines.Line2D at 0x7efd681f3a90>]

In [73]:
RsqUni=np.zeros((6,S[3]))
BetaUni=np.zeros((6,S[3]))
Sx=X.shape

In [74]:
for k in range(6):
    for j in range(S[3]):
        model = algorithm.fit(np.reshape(X[:,k],(Sx[0],1)), DT[:,j])
        BetaUni[k,j] = model.coef_
        RsqUni[k,j] = model.score(np.reshape(X[:,k],(Sx[0],1)),DT[:,j])

In [ ]:
GoodICo=Good_ICs[NewOrder]
D2o=D2[:,:,:,NewOrder]
LargerRegionIo=LargerRegionI[NewOrder]
Ind=np.array(range(S[3]))
Indexo=Ind[NewOrder]
DTo=DT[:,NewOrder]

In [87]:
import random

In [122]:
del Final_map
del Fmaps

In [123]:
if S[2]>5:
    Final_map=np.zeros([S[0],S[1],5,3])
    Fmaps=np.zeros([S[0],S[1],5,3])
else:
    Final_map=np.zeros([S[0],S[1],3]) 
    Fmaps=np.zeros([S[0],S[1],3])    
C=np.zeros([S[3],3])
C1=np.zeros([6,3])
C1[0][:]=(1,0,0)
C1[1][:]=(0,1,0)
C1[2][:]=(0,0,1)
C1[3][:]=(0.8,0.8,0)
C1[4][:]=(0,1,1)
C1[5][:]=(1,0,1)
S1=DT.shape

In [125]:
C=np.zeros((S[3],3))
i=0
for j in range(S[3]):  
    if Betas[0,j]>0.6*np.max(Betas[0,:]):
    #if 1>0.1:
        #C[j,:]=C1[i%6][:]
        C[j,0]=1
        C[j,1]=random.uniform(0,1)
        #C[j,2]=1
        for k in range(3):           
            M=np.max(np.squeeze(np.reshape(D2[:,:,:,j],S[0]*S[1]*5)))
            Fmaps[:,:,:,k]=0.8*D2[:,:,:,j]*C[j,k]/M
        Final_map=Final_map+Fmaps
        J=j
        #print(Indexo[j])
        i=i+1

In [126]:
np.max(np.max(np.max(Final_map)))


Out[126]:
0.84645980462847903

In [129]:
pylab.rcParams['figure.figsize'] = (17, 6)
C2=np.zeros(3)

Df=np.zeros([S[0],S[1],5,3]) 
  
for i in range(3):
    Df[:,:,:,i]=Final_map[:,:,:,i]+Dmean/16
    Df=Df/(np.max(np.max(Df)))
if S[2]>5:
    N=Nstack
else:
    N=S[2]
for i in range(N):
    #if Good_ICs[j]:
        plt.subplot(1,N,i+1)
        plt.imshow(Df[:,:,i],cmap=plt.cm.gray)
        plt.imshow(Df[:,:,i,:],cmap=my_cmap,interpolation='none')
        frame1 = plt.gca()
        frame1.axes.get_xaxis().set_visible(False)
        frame1.axes.get_yaxis().set_visible(False)
plt.tight_layout(pad=0,w_pad=0,h_pad=0)



In [138]:
pylab.rcParams['figure.figsize'] = (15, 6)
C2=np.zeros(3)

Df=np.zeros([S[0],S[1],5,3]) 
  
for i in range(3):
    Df[:,:,:,i]=Final_map[:,:,:,i]+Dmean/16
    Df=Df/(np.max(np.max(Df)))
if S[2]>5:
    N=Nstack
else:
    N=S[2]
for i in range(N):
    #if Good_ICs[j]:
        plt.subplot(1,N,i+1)
        plt.imshow(Df[:,:,i],cmap=plt.cm.gray)
        plt.imshow(Df[:,:,i,:],cmap=my_cmap,interpolation='none')
        frame1 = plt.gca()
        frame1.axes.get_xaxis().set_visible(False)
        frame1.axes.get_yaxis().set_visible(False)
plt.tight_layout(pad=0,w_pad=0,h_pad=0)


Plot all components together


In [71]:
if S[2]>5:
    Final_map=np.zeros([S[0],S[1],5,3])
    Fmaps=np.zeros([S[0],S[1],5,3])
else:
    Final_map=np.zeros([S[0],S[1],3]) 
    Fmaps=np.zeros([S[0],S[1],3])    
C=np.zeros([S[3],3])

In [72]:
C1=np.zeros([6,3])
C1[0][:]=(1,0,0)
C1[1][:]=(0,1,0)
C1[2][:]=(0,0,1)
C1[3][:]=(0.8,0.8,0)
C1[4][:]=(0,1,1)
C1[5][:]=(1,0,1)
S1=DT.shape

In [73]:
GoodICo=Good_ICs[NewOrder]
D2o=D2[:,:,:,NewOrder]
LargerRegionIo=LargerRegionI[NewOrder]
Ind=np.array(range(S[3]))
Indexo=Ind[NewOrder]
DTo=DT[:,NewOrder]

In [74]:
C=np.zeros((S[3],3))
i=0
for j in range(S[3]):  
    if LargerRegionIo[j]<12 and GoodICo[j]:
        C[j,:]=C1[i%6][:]
        for k in range(3):           
            M=np.max(np.squeeze(np.reshape(D2o[:,:,:,j],S[0]*S[1]*5)))
            Fmaps[:,:,:,k]=0.6*D2o[:,:,:,j]*C[j,k]/M
        Final_map=Final_map+Fmaps
        #print(Indexo[j])
        i=i+1

In [75]:
pylab.rcParams['figure.figsize'] = (15, 6)
C2=np.zeros(3)

Df=np.zeros([S[0],S[1],5,3]) 
  
for i in range(3):
    Df[:,:,:,i]=Final_map[:,:,:,i]+Dmean/16
    Df=Df/(np.max(np.max(Df)))
if S[2]>5:
    N=Nstack
else:
    N=S[2]
for i in range(N):
    #if Good_ICs[j]:
        plt.subplot(1,N,i+1)
        plt.imshow(Dmean[:,:,i],cmap=plt.cm.gray)
        plt.imshow(Df[:,:,i,:],cmap=my_cmap,interpolation='none')
        frame1 = plt.gca()
        frame1.axes.get_xaxis().set_visible(False)
        frame1.axes.get_yaxis().set_visible(False)
plt.tight_layout(pad=0,w_pad=0,h_pad=0)



In [123]:
pylab.rcParams['figure.figsize'] = (10, 15)
h=0.5
i=0

for j in range(S[3]):
    if GoodICo[j]:
        plt.plot(Time_fluoICA,(DTo[:,j]+h*i),color=C[j,:]) 
        i=i+1
plt.xlim([np.min(Time_fluoICA),np.max(Time_fluoICA)])
plt.ylim([-0.5,h*i])
frame1 = plt.gca()
frame1.axes.get_yaxis().set_visible(False)
plt.show()



In [124]:
k=0
J=np.zeros(len(GoodICo[GoodICo==1]))
for j in range(len(GoodICo)):
    if GoodICo[j]:
        print(k)
        print([CompMainName[Indexo[j]]])
        J[k]=j
        k=k+1


0
['ME_L']
1
['ME_L']
2
['ME_L']
3
['ME_L']
4
['ME_L']
5
['ME_L']
6
['ME_R']
7
['ME_R']
8
['LO_R']
9
['LO_R']
10
['LO_R']
11
['LO_R']
12
['LO_L']
13
['LO_L']
14
['LO_L']
15
['LOP_L']
16
['AVLP_R']
17
['AVLP_L']
18
['IVLP_R']
19
['IVLP_R']
20
['IVLP_L']
21
['AL_L']
22
['MB_VL_R']
23
['SMP_R']
24
['EB']
25
['PB']
26
['PB']
27
['PB']
28
['PB']
29
['PB']
30
['PB']
31
['SPS_R']
32
['SPS_L']
33
['IPS_R']
34
['IPS_R']
35
['IPS_R']
36
['IPS_R']
37
['IPS_R']
38
['IPS_R']
39
['IPS_R']
40
['IPS_L']
41
['IPS_L']
42
['SAD']
43
['FLA_L']
44
['PRW']
45
['PRW']
46
['PRW']
47
['GNG']
48
['']
49
['']
50
['']
51
['']
52
['']
53
['']
54
['']
55
['']
56
['']
57
['']

In [125]:
Sets=[range(10),range(10,12),range(12,17),range(17,20),20,range(21,23),range(23,25),25]

In [126]:
pylab.rcParams['figure.figsize'] = (12, 6)

for i in range(len(Sets)):
    
    Final_map2=np.zeros([S[0],S[1],3]) 
    Fmaps2=np.zeros([S[0],S[1],3]) 
    Final_map3=np.zeros([S[0],S[1],5,3]) 
    Fmaps3=np.zeros([S[0],S[1],5,3])     
     
    if type(Sets[i])==list:
        for j in np.array(Sets[i]):
            C=np.zeros((S[3],3))
            C[j,:]=C1[j%6][:]
            
            for k in range(3):           
                M=np.max(np.squeeze(np.reshape(D2o[:,:,:,J[j]],S[0]*S[1]*5)))
                Fmaps2[:,:,k]=0.9*np.mean(D2o[:,:,:,J[j]],2)*C[j,k]/M
                M=np.max(np.squeeze(np.reshape(D2o[:,:,:,J[j]],S[0]*S[1],5)))
                Fmaps3[:,:,:,k]=0.9*D2o[:,:,:,J[j]]*C[j,k]/M                
            Final_map2=Final_map2+Fmaps2
            Final_map3=Final_map3+Fmaps3            
                
    else:
        j=Sets[i]
        C[j,:]=C1[j%6][:]
        for k in range(3):           
            M=np.max(np.squeeze(np.reshape(D2o[:,:,:,J[j]],S[0]*S[1]*5)))
            Fmaps2[:,:,k]=0.8*np.mean(D2o[:,:,:,J[j]],2)*C[j,k]/M
        Final_map2=Final_map2+Fmaps2
                
    Df=np.zeros([S[0],S[1],3]) 
  
    for l in range(3):
        Df[:,:,l]=Final_map2[:,:,l]+np.mean(Dmean,2)/16
    MM=np.max(np.max(Df))

    Rotated=ndimage.rotate(Df[:,:,:]/MM,-90)
    a=plt.imshow(Rotated,cmap=my_cmap,interpolation='none')
    frame1 = plt.gca()
    frame1.axes.get_xaxis().set_visible(False)
    frame1.axes.get_yaxis().set_visible(False)

    plt.show()


/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:16: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:17: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
/usr/local/lib/python2.7/dist-packages/ipykernel/__main__.py:18: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-126-721c891f5728> in <module>()
     16                 M=np.max(np.squeeze(np.reshape(D2o[:,:,:,J[j]],S[0]*S[1]*5)))
     17                 Fmaps2[:,:,k]=0.9*np.mean(D2o[:,:,:,J[j]],2)*C[j,k]/M
---> 18                 M=np.max(np.squeeze(np.reshape(D2o[:,:,:,J[j]],S[0]*S[1],5)))
     19                 Fmaps3[:,:,:,k]=0.9*D2o[:,:,:,J[j]]*C[j,k]/M
     20             Final_map2=Final_map2+Fmaps2

/usr/local/lib/python2.7/dist-packages/numpy/core/fromnumeric.pyc in reshape(a, newshape, order)
    222     except AttributeError:
    223         return _wrapit(a, 'reshape', newshape, order=order)
--> 224     return reshape(newshape, order=order)
    225 
    226 

ValueError: total size of new array must be unchanged

In [ ]: