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
#from nifti import NiftiImage
import nibabel as nb
from scipy.interpolate import interp1d
from scipy import ndimage

Open data


In [2]:
# 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/008C0665790F0763/ComboPanNeuronalGCaMP6/945/945_170919/945ss2cregcdFF20spsfkf222Smith0_4_60TS.mat

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


Out[3]:
(5898, 222)

In [4]:
# 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/008C0665790F0763/ComboPanNeuronalGCaMP6/945/945_170919/945ss2cregcdFF20spsfkf222Smith0_4_60IC.nii

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


Out[5]:
(189, 114, 10, 222)

In [6]:
S=data.shape
S


Out[6]:
(189, 114, 10, 222)

Z-score


In [7]:
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 [8]:
for i in range(S[3]):
    Demean[:,:,:,i]=data[:,:,:,i]-np.mean(np.mean(np.mean(data[:,:,:,i],0),0),0)

In [9]:
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.5
    Tvar[i]=np.var(DT[i,:])
Dmaps[Dmaps<0]=0

Open Masks


In [10]:
# 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/008C0665790F0763/ComboPanNeuronalGCaMP6/945/945Registration/JFRC945Transformedfullpsftrimmed.nii

In [11]:
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 [12]:
Dmaps.shape


Out[12]:
(189, 114, 10, 222)

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

In [14]:
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 [15]:
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(74) if Num[l]==I]
    if J!= []:
        CompMainName[i]=Names[np.array(J)][0]


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

In [16]:
J


Out[16]:
[12]

In [17]:
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)
            plt.plot((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)
            
                    
    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)


LO_R
ME_R
75
LO_R
ME_R
84
LO_R
ME_R
103
LO_R
LOP_R
MB_CA_R
IPS_R
112
LO_R
115
LO_R
ME_R
154
LO_R
ME_R
157
lobula
NO
66
nodulus
PB
124
PB
156
PB
160
PB
ATL_L
179
PB
211
protocerebral bridge
LH_R
AL_R
MB_CA_R
8
LH_R
MB_CA_R
76
LH_R
99
lateral horn
LAL_R
LAL_L
39
LAL_R
EPA_R
51
LAL_R
VES_R
EPA_R
78
lateral accessory lobe
SAD
AMMC_R
CAN_L
139
saddle
CAN_R
SPS_R
178
cantle
CAN_R
AMMC_R
VES_R
IVLP_R
58
antennal mechanosensory and motor center
LAL_R
MB_PED_R
AVLP_R
90
pedunculus of adult mushroom body
CRE_R
MB_VL_R
SIP_R
4
MB_VL_R
MB_ML_R
SIP_R
47
vertical lobe of adult mushroom body
CRE_R
MB_PED_R
MB_VL_R
MB_ML_R
3
medial lobe of adult mushroom body
LAL_R
VES_R
FLA_R
EPA_R
12
CAN_R
FLA_R
CAN_L
FLA_L
138
flange
LOP_R
ME_R
136
lobula plate
EB
AL_R
AL_L
57
EB
116
ellipsoid body
ME_R
9
LOP_R
ME_R
13
ME_R
SPS_R
14
ME_R
24
ME_R
41
ME_R
64
LO_R
ME_R
79
ME_R
107
medulla
ATL_R
FB
44
NO
FB
46
FB
55
fan-shaped body
SLP_R
MB_CA_R
LAL_L
MB_CA_L
94
SLP_R
IPS_R
148
SLP_R
213
superior lateral protocerebrum
SMP_R
206
superior medial protocerebrum
AVLP_R
PVLP_R
IVLP_R
20
LAL_R
AVLP_R
93
anterior ventrolateral protocerebrum
AMMC_R
IVLP_R
17
IVLP_R
33
wedge
MB_PED_R
MB_CA_R
SCL_R
117
LH_R
ATL_R
MB_CA_R
118
MB_CA_R
209
calyx of adult mushroom body
SPS_R
186
SPS_R
IPS_R
200
SPS_R
IPS_R
217
superior posterior slope
PLP_R
SPS_R
IPS_R
38
SAD
AMMC_R
IPS_R
65
IPS_R
170
IPS_R
CRE_L
208
inferior posterior slope
SAD
GNG
IPS_L
6
SAD
IPS_R
GNG
10
SAD
AMMC_R
GNG
29
GNG
52
GNG
77
SAD
IPS_R
GNG
88
IPS_R
GNG
89
GNG
110
GNG
AMMC_L
131
GNG
132
SAD
GNG
155
GNG
159
GNG
181
GNG
CAN_L
185
SPS_R
IPS_R
GNG
190
GNG
196
GNG
GOR_L
204
adult gnathal ganglion
LO_L
92
LO_L
ME_L
100
LO_L
ME_L
119
LO_L
ME_L
128
LO_L
129
LO_L
LOP_L
IPS_L
130
LO_R
LO_L
137
LO_L
ME_L
150
lobula
BU_L
LAL_L
67
bulb
LH_R
LH_L
SCL_L
21
LH_L
LAL_L
MB_VL_L
27
LH_L
SLP_L
69
LH_L
108
LH_L
184
lateral horn
LAL_L
VES_L
GOR_L
EPA_L
32
lateral accessory lobe
PB
IPS_R
CAN_L
IPS_L
40
SAD
GNG
CAN_L
AMMC_L
45
CAN_L
SMP_L
162
SAD
GNG
CAN_L
164
CAN_R
CAN_L
169
NO
CAN_L
IVLP_L
MB_CA_L
205
cantle
SAD
IPS_R
AMMC_L
IPS_L
72
antennal mechanosensory and motor center
MB_PED_L
MB_VL_L
AL_L
SCL_L
49
pedunculus of adult mushroom body
MB_VL_L
SIP_L
26
MB_VL_L
113
CRE_L
MB_VL_L
MB_CA_L
215
vertical lobe of adult mushroom body
CRE_R
MB_ML_R
CRE_L
MB_ML_L
11
CRE_L
MB_PED_L
MB_ML_L
15
medial lobe of adult mushroom body
CAN_L
VES_L
FLA_L
42
flange
LH_L
AL_L
5
AL_R
AL_L
16
SPS_R
IPS_R
CAN_L
AL_L
168
adult antennal lobe
ME_L
2
ME_L
18
ME_R
ME_L
23
ME_R
LO_L
ME_L
25
LOP_L
ME_L
28
LOP_L
ME_L
30
ME_L
34
ME_L
43
ME_L
48
ME_L
50
LO_L
ME_L
56
ME_L
61
ME_L
71
PB
ME_L
85
LOP_L
ME_L
111
medulla
SLP_L
133
superior lateral protocerebrum
SIP_R
MB_VL_L
SIP_L
53
superior intermediate protocerebrum
CRE_L
MB_ML_L
SMP_L
19
SMP_L
192
superior medial protocerebrum
AVLP_R
AVLP_L
82
anterior ventrolateral protocerebrum
AVLP_L
PVLP_L
IVLP_L
96
posterior ventrolateral protocerebrum
AMMC_L
IVLP_L
31
IVLP_L
54
wedge
AL_R
MB_PED_L
MB_CA_L
7
AL_R
MB_PED_L
AL_L
MB_CA_L
81
SLP_L
MB_CA_L
87
MB_PED_L
AL_L
MB_CA_L
101
LH_L
MB_CA_L
135
LAL_L
MB_CA_L
140
LAL_R
MB_CA_R
SPS_R
MB_CA_L
177
calyx of adult mushroom body
SPS_R
IB_L
IVLP_L
SPS_L
97
MB_CA_R
MB_VL_L
MB_CA_L
SPS_L
203
superior posterior slope
IPS_L
125
inferior posterior slope
LH_R
EPA_L
214
epaulette
Looked at the components maps and time series and remove all the components which are localized on the edge of the brain and with activity unlike GCaMP6 transients.

In [18]:
BadICs=[178,209,186,200,217,208,155,164,113,215,203,125,214]

In [19]:
for idx in BadICs:
    GoodICAnat[idx] = 0.0

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


In [20]:
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'}

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','']

Tozip=range(len(SmallRegionsSorted))
SmallRegionsDic=dict(zip(SmallRegionsSorted,Tozip))

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

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}

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

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

NewOrder=np.argsort(SmallRegion)

SmallRegion[NewOrder]


Out[20]:
array([ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
        0,  0,  0,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,
        2,  2,  2,  3,  3,  3,  3,  3,  3,  3,  3,  3,  4,  4,  4,  9,  9,
       10, 11, 11, 12, 12, 12, 12, 13, 13, 16, 16, 16, 17, 17, 17, 17, 17,
       17, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21,
       21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 23, 24, 24, 25, 25, 25, 25,
       25, 25, 25, 25, 26, 27, 27, 27, 27, 28, 28, 29, 29, 29, 31, 31, 31,
       32, 32, 32, 32, 32, 33, 34, 34, 34, 35, 35, 35, 35, 35, 35, 37, 37,
       42, 43, 43, 45, 45, 45, 46, 46, 47, 47, 47, 47, 47, 47, 47, 48, 48,
       49, 49, 49, 51, 52, 52, 52, 53, 53, 53, 53, 58, 59, 62, 62, 62, 62,
       62, 62, 62, 63, 63, 63, 64, 64, 64, 64, 64, 65, 66, 66, 67, 67, 68,
       68, 69, 69, 69, 70, 72, 72, 72, 73, 73, 73, 73, 73, 73, 74, 74, 74,
       74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
       74])

In [21]:
LargerRegionIndToName = {v: k for k, v in LargerRegionInd.iteritems()}

In [22]:
LargerRegionI


Out[22]:
array([ 5,  3,  1,  5,  5,  4, 12,  5,  6,  1, 12,  5, 11,  1,  1,  5,  4,
        2,  1,  7,  2,  6,  2,  1,  1,  1,  5,  6,  1, 12,  1,  2,  9,  2,
        1,  9, 10,  7,  3,  9, 11,  1, 11,  1,  8, 11,  8,  5,  1,  5,  1,
        9, 12,  7,  2,  8,  1,  8, 11,  2, 10,  1,  2,  1,  1,  3,  8,  8,
        5,  6, 10,  1, 11,  1,  2,  1,  6, 12,  9,  1,  1,  5,  2,  7,  1,
        1,  2,  5, 12, 12,  5,  5,  1,  2,  7,  5,  2,  3, 10,  6,  1,  5,
        8,  1,  2,  5,  1,  1,  6,  1, 12,  1,  1,  5,  7,  1,  8,  5,  5,
        1,  5,  5, 12,  3,  8,  3,  2,  1,  1,  1,  1, 12, 12,  7, 11,  5,
        1,  1, 11, 11,  5,  1,  5,  5,  3,  1, 11, 10,  7,  5,  1,  9,  6,
       11,  1, 12,  8,  1, 11, 12,  8,  2, 11, 12, 11,  7,  7,  2,  4, 11,
        3,  7,  9,  5, 12,  5,  2,  5, 11,  8, 10, 12,  4,  3,  6, 12,  3,
       11,  5,  1, 12,  5,  7, 11,  8,  5, 12, 12,  3,  1,  3,  5,  5,  3,
       12, 11,  7,  2,  3,  5,  8,  8,  3,  7,  3,  5,  3,  3,  2,  4, 10,
       10])

In [23]:
GoodICAnat


Out[23]:
array([ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  0.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  0.,  0.,  0.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  0.,  0.,  1.,  0.,  0.,  1.,
        1.,  1.,  1.,  0.,  1.,  0.,  1.,  1.,  0.,  0.,  1.,  1.,  1.,
        1.,  1.,  0.,  1.,  1.,  0.,  1.,  1.,  0.,  1.,  1.,  1.,  1.,
        0.,  1.,  1.,  1.,  0.,  1.,  1.,  0.,  1.,  1.,  1.,  0.,  1.,
        0.,  0.,  0.,  1.,  1.,  0.,  1.,  1.,  1.,  0.,  0.,  1.,  1.,
        1.,  1.,  1.,  0.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  1.,  1.,
        1.,  1.,  1.,  1.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  0.,  0.,
        0.,  0.,  0.,  0.,  0.,  1.,  0.,  1.,  0.,  0.,  0.,  1.,  0.,
        1.,  1.,  0.,  1.,  1.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  1.,
        1.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  0.,  1.,  0.,  1.,
        0.,  0.,  1.,  1.,  0.,  0.,  0.,  0.,  1.,  0.,  1.,  0.,  0.,
        0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  1.,  1.,  0.,
        0.,  0.,  0.,  1.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])

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

h=5
tot=0
NumberInLargeRegion=np.zeros(13)

for l in range(1,13):
    print(LargerRegionIndToName[l])
    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 LargerRegionI[i]==l:          
            if GoodICAnat[i]==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)
                plt.plot((DT[:,i]/np.sqrt(np.var(DT[:,i]))-h*n+2),color=C/2)
                tot=tot+1
                print(i)
                n=n+1 
                    
    if n!=0:

        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)
        
    NumberInLargeRegion[l]=n


OL
2
9
13
14
18
23
24
25
28
30
34
41
43
48
50
56
61
64
71
75
79
84
85
92
100
103
107
111
112
115
119
128
129
130
136
137
150
154
157
VLNP
17
20
31
33
54
82
93
96
VMNP
38
65
97
170
AL
5
16
168
MB
3
4
7
11
15
26
47
49
81
87
90
101
117
118
135
140
177
LH
8
21
27
69
76
99
108
184
SNP
19
53
94
133
148
192
206
213
CX
44
46
55
57
66
67
116
124
156
160
179
211
LX
32
39
51
78
INP
PENP
12
40
42
45
58
72
138
139
162
169
205
GNG
6
10
29
52
77
88
89
110
131
132
159
181
185
190
196
204

In [25]:
# Output number of component per region
np.savetxt('/'.join(filename.split('/')[:-1])+'/NumberInLargeRegions.txt',NumberInLargeRegion)

In [ ]: