def plot_fmri_subject(lst):
    sdir = ['_RL', '_LR']
    scan_type = ['left', 'right']
    session_type = [1, 2]
    data_file = 'validation'

    class sc:
        pass

    for sub in lst:
        for hemi in range(0, 2):
            left = np.load(data_file + str(sub) + '_' + scan_type[hemi] +
                           sdir[0] + '_' + str(session_type[0]) + '.npz')
            sc.labels = left['labels']
            sc.vertices = left['vertices']
            sc.faces = left['faces']
            sc.vColor = np.zeros([sc.vertices.shape[0]])
            sc = patch_color_labels(sc, cmap='Paired', shuffle=True)
            view_patch(sc, show=1, colormap='Paired', colorbar=0)
s = r
s.vColor = sp.zeros(s.vertices.shape)
label_vert, lab_count = sp.stats.mode(labs_all.T)
colr = get_cmap(nClusters + 1)
lab_count = sp.float32(lab_count.squeeze())
s.vColor = s.vColor + 1

for i in range(len(s.vertices)):
    #        print i, (lab_count[i]/sp.amax(lab_count)), colr(label_vert[0,i])[:3], (lab_count[i]/sp.amax(lab_count)), 0.55*sp.array(colr(label_vert[0,i])[:3])
    if label_vert[0, i] > 0:
        freq = ((lab_count[i] / sp.amax(lab_count)) -
                1.0 / nClusters) * (sp.float32(nClusters) / (nClusters - 1.0))
        s.vColor[i, ] = (1 -
                         freq) + freq * sp.array(colr(label_vert[0, i])[:3])

view_patch(s)
view_patch_vtk(s)
writedfs('outclustering_pc.dfs', s)
#    view_patch(r,r.labels)
#mesh = mlab.triangular_mesh(r.vertices[:,0], r.vertices[:,1], r.vertices[:,2], r.faces, representation='surface',
#                            opacity=1,scalars=np.float64(r.labels))
#    #mlab.pipeline.surface(mesh)
#mlab.gcf().scene.parallel_projection = True
#mlab.view(azimuth=0, elevation=-90)
#mlab.show()
#mlab.savefig(filename = 'dict_learning_1.png')
#mlab.view(azimuth=0, elevation=90)
#mlab.savefig(filename = 'dict_learning_2.png')
#mlab.close()
Example #3
0
s2 = sp.load('labs_all_split2_data1.npz')
l = s2['lab_sub2']
l2 = sp.reshape(l, (l.shape[0] * l.shape[1]), order='F')

l12 = sp.concatenate((l1[:, None], l2[:, None]), axis=1)

print sp.sum(sp.absolute(l12[:, 1] - l12[:, 0]))
l12 = reorder_labels(l12)

print sp.sum(sp.absolute(l12[:, 1] - l12[:, 0]))

l1 = sp.reshape(l12[:, 0], (l.shape[0], l.shape[1]), order='F')
l2 = sp.reshape(l12[:, 1], (l.shape[0], l.shape[1]), order='F')

#
for ind in range(l.shape[1]):
    lab1 = l1[:, ind]
    view_patch(dfs_left_sm,
               lab1,
               show=0,
               outfile=lst[ind] + 'labs_all_split1_2_data1.png')
    view_patch(dfs_left_sm,
               lab1,
               show=0,
               outfile=lst[ind + l.shape[1]] + 'labs_all_split2_2_data1.png')

#    lab1=l2[:,ind]
#    view_patch(dfs_left_sm,lab1,show=0,outfile=lst[ind]+'_individual_rot_data2.png')
#
Example #4
0
    arr1_view = arr1.view([('',arr1.dtype)]*arr1.shape[1])
    arr2_view = arr2.view([('',arr2.dtype)]*arr2.shape[1])
    intersected = sp.intersect1d(arr1_view, arr2_view)
    return intersected.view(arr1.dtype).reshape(-1, arr1.shape[1])

inputfile='/home/ajoshi/data/Yeo_JNeurophysiol11_FreeSurfer/fsaverage/label/lh.Yeo2011_17Networks_N1000.annot'
fsavesurf='/home/ajoshi/data/Yeo_JNeurophysiol11_FreeSurfer/fsaverage/surf/lh.sphere.reg.avg'
yeomap,_,_=fsio.read_annot(inputfile)
vert,faces=fsaverage_surf=fsio.read_geometry(fsavesurf)
class s:
    pass



s.vertices=vert; s.faces=faces;s.labels=yeomap
view_patch(s,yeomap)

#g_surf = gread('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/fsaverage_LR32k/100307.L.sphere.32k_fs_LR.surf.gii')
g_surf = gread('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/Native/100307.L.sphere.reg.native.surf.gii')
vert = g_surf.darrays[0].data
face = g_surf.darrays[1].data

class hcp32k:
    pass

hcp32k.vertices=vert; hcp32k.faces=face

view_patch(hcp32k,vert[:,1])

from scipy.spatial import cKDTree
Example #5
0
# brain=smooth_patch(brain,10)

# skull = readdfs(skull_name)
# skull = reducepatch(skull,.9,0)
brain = add_normals(brain)
# brain.normals=brain.vertices/5.0
skull = add_normals(skull)
# view_patch(brain)
# view_patch(skull)
writedfs('brain.dfs', brain)
writedfs('skull.dfs', skull)
print "# vertices in Brain: " + str(brain.vertices.shape[0])
print "# vertices in Skull: " + str(skull.vertices.shape[0])
m = mean_curvature(brain)
# m = smooth_surf_function(brain, m, 10, 100)
br = view_patch(brain, attrib=m, opacity=1, show=0)
view_patch(skull, opacity=.1, fig=br, show=1)
Tri = face_v_conn(brain)

Q = 1.0 + sp.zeros((brain.faces.shape[0], 1))
Q = (1.0 / 3.0) * Tri * Q
Q = Q[:, 0]
br_face_area = face_areas(brain)
Q = 1.0 + sp.zeros(brain.vertices.shape[0])
# Q=0.0*Q
# Q[1800]=1
# Q=smooth_surf_function(brain,Q,10,10)
area_v = (1.0 / 3.0) * Tri * br_face_area
v = sp.zeros(skull.vertices.shape[0])  # eq 8 from Sarvas
v_aaj = sp.zeros(skull.vertices.shape[0])  # joshi
view_patch(brain, attrib=Q, opacity=1)
Example #6
0
for ind in range(len(roilist)):
    msk_roi = np.in1d(dfs_left.labels, roilist[ind])
    mlab.points3d(sub2_rot[msk_roi, 0],
                  sub2_rot[msk_roi, 1],
                  sub2_rot[msk_roi, 2],
                  scale_factor=0.05,
                  color=tuple(clr[ind]))
#
# mlab.points3d(sub2[:,0], sub2[:,1], sub2[:,2], scale_factor=0.05, color=(0, 1, 0))
mlab.draw()
mlab.savefig('sph3.png')

mlab.show()

dfs_left_sm.vColor = sp.zeros(dfs_left_sm.vertices.shape) + 0.5
view_patch(dfs_left_sm, close=0)
sub_vert = dfs_left_sm.vertices
for ind in range(len(roilist)):
    msk_roi = np.in1d(dfs_left.labels, roilist[ind])
    mlab.points3d(sub_vert[msk_roi, 0],
                  sub_vert[msk_roi, 1],
                  sub_vert[msk_roi, 2],
                  scale_factor=5,
                  color=tuple(clr[ind]))

#
#
##    msk_small_region = (dfs_left.labels == 30) | (dfs_left.labels == 72) | (dfs_left.labels == 9) |  (dfs_left.labels == 47)  # % motor
#d = sub1 # [msk_small_region, :]
#
#ref_mean_pc = sp.mean(d,axis=0)
    sub_data[:,:,count1] = d

    count1+=1
    print count1,
    
nSub=sub_data.shape[2]

cat_data=sp.zeros((nSub*sub_data.shape[0],sub_data.shape[1]))

for ind in range(nSub):
    sub_data[:,:,ind] = rot_sub_data(ref=sub_data[:,:,0],sub=sub_data[:,:,ind])
    cat_data[sub_data.shape[0]*ind:sub_data.shape[0]*(ind+1),:] = sub_data[:,:,ind]    
    print ind, sub_data.shape, cat_data.shape

 
rho=sp.corrcoef(cat_data)
rho[~np.isfinite(rho)] = 1

dist_mtx=abs(sp.arccos(rho))
SC = AgglomerativeClustering(n_clusters=nClusters, affinity='precomputed', linkage='complete')
#SC = DBSCAN(eps=sp.pi/102.0, metric='precomputed')
labs_all = SC.fit_predict(dist_mtx)+1

lab_sub=labs_all.reshape((sub_data.shape[0],nSub),order='F')
lab1=sp.zeros(dfs_left_sm.vertices.shape[0])
for ind in range(nSub):
#    lab1[msk_small_region]=lab_sub[:,ind]
    lab1=lab_sub[:,ind]
    view_patch(dfs_left_sm,lab1)
    
Example #8
0
l1 = sp.reshape(l12[:, 0], (l.shape[0], l.shape[1] / 2.0), order='F')
l2 = sp.reshape(l12[:, 1], (l.shape[0], l.shape[1] / 2.0), order='F')

perm1 = sp.mod(17 * sp.arange(max(l1.flatten()) + 1), max(l1.flatten()) + 1)
#
for ind in range(5):  #range(l1.shape[1]):
    lab1 = sp.zeros(dfs_left_sm.vertices.shape[0], dtype=sp.int16)
    lab2 = lab1.copy()
    lab1[msk_small_region] = l1[:, ind]
    counts1 = itemfreq(lab1)
    lab2[msk_small_region] = l2[:, ind]
    counts2 = itemfreq(lab2)
    view_patch(dfs_left_sm,
               perm1[lab1],
               colorbar=0,
               show=0,
               elevation=-90,
               colormap='Paired',
               outfile=lst[ind] +
               '_joint_both_session1_view1_8_clusters_precuneus.png')
    view_patch(dfs_left_sm,
               perm1[lab1],
               colorbar=0,
               show=0,
               elevation=90,
               colormap='Paired',
               outfile=lst[ind] +
               '_joint_both_session1_view2_8_clusters_precuneus.png')
    view_patch(dfs_left_sm,
               perm1[lab2],
               colorbar=0,
               show=0,
Example #9
0
    sub_data[:, :, count1] = d

    count1 += 1
    print count1,

nSub = sub_data.shape[2]

cat_data = sp.zeros((nSub * sub_data.shape[0], sub_data.shape[1]))

for ind in range(nSub):
    sub_data[:, :, ind] = rot_sub_data(ref=sub_data[:, :, 0],
                                       sub=sub_data[:, :, ind])
    cat_data[sub_data.shape[0] * ind:sub_data.shape[0] *
             (ind + 1), :] = sub_data[:, :, ind]
    print ind, sub_data.shape, cat_data.shape

rho = sp.corrcoef(cat_data)
rho[~np.isfinite(rho)] = 1

simil_mtx = sp.pi / 2.0 + sp.arcsin(rho)
SC = SpectralClustering(n_clusters=nClusters, affinity='precomputed')
labs_all = SC.fit_predict(simil_mtx) + 1

lab_sub = labs_all.reshape((sub_data.shape[0], nSub), order='F')
lab1 = sp.zeros(dfs_left_sm.vertices.shape[0])
for ind in range(nSub):
    #    lab1[msk_small_region]=lab_sub[:,ind]
    lab1 = lab_sub[:, ind]
    view_patch(dfs_left_sm, lab1, outfile='')
Example #10
0
l2 = sp.reshape(l[:, 40:80], (l.shape[0]*40), order='F')

l12 = sp.concatenate((l1[:, None], l2[:, None]), axis=1)

print sp.sum(sp.absolute(l12[:, 1]-l12[:, 0]))

print sp.sum(sp.absolute(l12[:, 1]-l12[:, 0]))

l1 = sp.reshape(l12[:, 0], (l.shape[0], 40), order='F')
l2 = sp.reshape(l12[:, 1], (l.shape[0], 40), order='F')

#
for ind in range(l12.shape[1]):



    lab1 = sp.int32(l12[:, ind])
    dfs_left_sm.labels = lab1
    s = silhouette_samples(cat_data[nVert*(ind):nVert*(ind+1), :],
                           dfs_left_sm.labels)
    s[s < 0] = 0
    s = s/sp.median(s)
    s[s > 1.0] = 1.0
    s1 = patch_color_labels(dfs_left_sm, freq=s)
#    view_patch(s1)
    view_patch(s1, elevation=90, colorbar=0, show=0, outfile=lst[ind]+'_\
    individual_view1_nclusters30_sil_modulated.png', colormap='Paired')
    view_patch(s1, elevation=-90, colorbar=0, show=0, outfile=lst[ind]+'_\
    individual_view2_nclusters30_sil_modulated.png', colormap='Paired')
LR_flag = msk['LR_flag']
LR_flag = np.squeeze(LR_flag) > 0
data = data['ftdata_NLM']
#data = sp.squeeze(vrest.get_data()).T
vrest = data[LR_flag,:]
m = np.mean(vrest, 1)
vrest = vrest - m[:,None]
s = np.std(vrest, 1)+1e-16
vrest2 = vrest/s[:,None]

vrest2=rot_sub_data(ref=vrest1,sub=vrest2)

rho_rot = sp.dot(vrest1,vrest2.T)/vrest1.shape[1]
dist_mat = sp.absolute(sp.arccos(rho_rot))

ind = sp.argmin(dist_mat,axis=0)
#ind = linear_assignment(dist_mat)

view_patch(dfs_left_sm,outfile='before_registered_surf.png',show=1)

dfs_left_sm.faces=ind[dfs_left_sm.faces]
view_patch(dfs_left_sm,outfile='registered_surf1.png',show=1)

#rho1=smooth_surf_function(dfs_left_sm,rho1)
#rho2=smooth_surf_function(dfs_left_sm,rho2)

#view_patch(dfs_left_sm,rho_orig,clim=[0,1])
#view_patch(dfs_left_sm,rho_rot,clim=[0,1],show=1)

Example #12
0
labels = np.squeeze(labs.get_data())
g_surf = nib.load('/home/ajoshi/data/HCP_data/reference/100307/MNINonL\
inear/fsaverage_LR32k/100307.L.very_inflated.32k_fs_LR.surf.gii')
s.vertices = g_surf.darrays[0].data
s.faces = g_surf.darrays[1].data
s.labels = np.zeros(s.vertices.shape[0])
s.labels[idxs] = labels
'''h32k to full res FS'''
g_surf = nib.load('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/N\
ative/100307.L.very_inflated.native.surf.gii')
h.vertices = g_surf.darrays[0].data
h.faces = g_surf.darrays[1].data
h = interpolate_labels(s, h)
h = patch_color_labels(h)

view_patch(h)
''' native FS ref to native FS BCI'''
g_surf = nib.load('/home/ajoshi/data/HCP_data/reference/100307/MNINon\
Linear/Native/100307.L.sphere.reg.native.surf.gii')
s.vertices = g_surf.darrays[0].data
s.faces = g_surf.darrays[1].data
s.labels = h.labels
''' map to bc sphere'''
bs.vertices, bs.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_Atlas/su\
rf/lh.sphere.reg')
bs = interpolate_labels(s, bs)
bci.vertices, bci.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_A\
tlas/surf/lh.white')
bci.labels = bs.labels
writedfs('BCI_orig_lh.dfs', bci)
    rho1 += sp.sum(vrest1 * vlang1, axis=1) / vrest1.shape[1]
    rho2 += sp.sum(vrest2 * vlang2, axis=1) / vlang1.shape[1]

    vlang1, _ = rot_sub_data(ref=vrest1, sub=vlang1)
    vlang2, _ = rot_sub_data(ref=vrest2, sub=vlang2)

    rho1rot += sp.sum(vrest1 * vlang1, axis=1) / vrest1.shape[1]
    rho2rot += sp.sum(vrest2 * vlang2, axis=1) / vlang1.shape[1]

rho1 = smooth_surf_function(dfs_left_sm, rho1, a1=0, a2=1)
rho1rot = smooth_surf_function(dfs_left_sm, rho1rot, a1=0, a2=1)

view_patch(dfs_left_sm,
           rho1 / len(lst),
           clim=[0, 0.75],
           outfile='rest1lang_before_rot.png',
           show=0)
view_patch(dfs_left_sm,
           rho1rot / len(lst),
           clim=[0, 0.75],
           outfile='rest1lang_after_rot.png',
           show=0)

#rho2 = smooth_surf_function(dfs_left_sm, rho2, a1=0, a2=1)
#rho2rot = smooth_surf_function(dfs_left_sm, rho2rot)

view_patch(dfs_left_sm,
           rho2 / len(lst),
           clim=[0, 0.75],
           outfile='rest2lang_before_rot.png',
bci_bst.vertices[:, 1] -= 192 * 0.546875
bci_bst.vertices[:, 2] -= 192 * 0.546875
bci.vertices, bci.faces = fsio.read_geometry(
    '/home/ajoshi/data/BCI_DNI_Atlas/surf/rh.white')
bci = interpolate_labels(bci_bst, bci)
''' FS_BCI to FS BCI Sphere'''
bci.vertices, bci.faces = fsio.read_geometry(
    '/home/ajoshi/data/BCI_DNI_Atlas/surf/rh.sphere.reg')
''' FS BCI Sphere to ref FS Sphere'''
g_surf = gread(
    '/big_disk/ajoshi/HCP_data/reference/100307/MNINonLinear/Native/100307.R.sphere.reg.native.surf.gii'
)
s.vertices = g_surf.darrays[0].data
s.faces = g_surf.darrays[1].data
s = interpolate_labels(bci, s)
''' ref BCI Sphere to FS very inflated '''
g_surf = gread(
    '/big_disk/ajoshi/HCP_data/reference/100307/MNINonLinear/Native/100307.R.very_inflated.native.surf.gii'
)
bci.vertices = g_surf.darrays[0].data
bci.faces = g_surf.darrays[1].data
bci.labels = s.labels
''' FS very inflated to reduce3 '''
dfs = readdfs(
    '/big_disk/ajoshi/HCP_data/reference/100307.aparc.a2009s.32k_fs.reduce3.very_smooth.right.dfs'
)
dfs = interpolate_labels(bci, dfs, skipzero=1)

view_patch(dfs, dfs.labels, colormap='prism')
writedfs('100307.reduce3.very_smooth.right.refined.dfs', dfs)
Example #15
0
    rho1 += sp.sum(vrest1 * vrest2, axis=1) / vrest1.shape[1]
    rho1lang += sp.sum(vlang1 * vlang2, axis=1) / vlang1.shape[1]

    vrest2, _ = rot_sub_data(ref=vrest1, sub=vrest2)
    vlang2, _ = rot_sub_data(ref=vlang1, sub=vlang2)

    rho2 += sp.sum(vrest2 * vrest2, axis=1) / vrest1.shape[1]
    rho2lang += sp.sum(vlang1 * vlang2, axis=1) / vlang1.shape[1]

rho1 = smooth_surf_function(dfs_left_sm, rho1, a1=0, a2=1)
rho2 = smooth_surf_function(dfs_left_sm, rho2, a1=0, a2=1)

view_patch(dfs_left_sm,
           rho1 / len(lst),
           clim=[0, 1],
           outfile='rest_before_rot.png',
           show=0)
view_patch(dfs_left_sm,
           rho2 / len(lst),
           clim=[0, 1],
           outfile='rest_after_rot.png',
           show=0)

rho1lang = smooth_surf_function(dfs_left_sm, rho1lang, a1=0, a2=1)
rho2lang = smooth_surf_function(dfs_left_sm, rho2lang, a1=0, a2=1)

view_patch(dfs_left_sm,
           rho1lang / len(lst),
           clim=[0, 1],
           outfile='lang_before_rot.png',
Example #16
0
lab2 = l2[:, ind2]
nVert = dfs_left_sm.vertices.shape[0]

cat_data1 = s1['cat_data1']
dfs_left_sm.labels = lab1
s = silhouette_samples(cat_data1[nVert * (ind):nVert * (ind + 1), :],
                       dfs_left_sm.labels)
s[s < 0] = 0
s = s / sp.median(s)
s[s > 1.0] = 1.0

dfs_left_sm = patch_color_labels(dfs_left_sm, freq=s)

view_patch(dfs_left_sm,
           colorbar=0,
           colormap='Paired',
           elevation=90,
           show=0,
           outfile=lst[ind] + '_view1_split1_30clusters_1common_modulated.png')
view_patch(dfs_left_sm,
           colorbar=0,
           colormap='Paired',
           elevation=-90,
           show=0,
           outfile=lst[ind] + '_view2_split1_30clusters_1common_modulated.png')

cat_data2 = s1['cat_data2']
dfs_left_sm.labels = lab2
s = silhouette_samples(cat_data2[nVert * (ind2):nVert * (ind2 + 1), :],
                       dfs_left_sm.labels)
s[s < 0] = 0
s = s / sp.median(s)
    pass

class r:
    pass

''' HCP32k data'''
labs = nib.load('/home/ajoshi/data/Glasser_et_al_2016_HCP_MMP1.0_RVVG/HCP_PhaseTwo/Q1-Q6_RelatedParcellation210/MNINonLinear/fsaverage_LR32k/Q1-Q6_RelatedParcellation210.R.CorticalAreas_dil_Colors.32k_fs_LR.dlabel.nii')

cifti = etree.XML(labs.header.extensions[0].get_content())
idxs=np.array(cifti[0][2][0][0].text.split(' ')).astype(np.int)

labels = sp.squeeze(labs.get_data())
g_surf = nib.load('/home/ajoshi/data/Glasser_et_al_2016_HCP_MMP1.0_RVVG/HCP_PhaseTwo/Q1-Q6_RelatedParcellation210/MNINonLinear/fsaverage_LR32k/Q1-Q6_RelatedParcellation210.R.inflated_MSMAll_2_d41_WRN_DeDrift.32k_fs_LR.surf.gii')
s.vertices = g_surf.darrays[0].data; s.faces = g_surf.darrays[1].data
s.labels=sp.zeros(s.vertices.shape[0])
s.labels[idxs] = labels
view_patch(s, s.labels,colormap='Paired')


''' ref BCI Sphere to FS very inflated '''
g_surf = nib.load('/home/ajoshi/data/HCP_data/reference/100307/MNINonLinear/fsaverage_LR32k/100307.R.very_inflated.32k_fs_LR.surf.gii')
r.vertices = g_surf.darrays[0].data; r.faces = g_surf.darrays[1].data
r.labels=s.labels
''' FS very inflated to reduce3 '''
dfs = readdfs('/home/ajoshi/data/HCP_data/reference/100307.aparc.a2009s.32k_fs.reduce3.very_smooth.right.dfs')
dfs = interpolate_labels(r,dfs, skipzero=1)

view_patch(dfs,dfs.labels, colormap='Paired')
writedfs('100307.reduce3.Glasser.right.dfs', dfs)

s.faces = g_surf.darrays[1].data
s.labels = h.labels

''' map to bc sphere'''
bs.vertices, bs.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_Atlas/su\
rf/rh.sphere.reg')
bs = interpolate_labels(s, bs)
bci.vertices, bci.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_A\
tlas/surf/rh.white')
bci.labels = bs.labels
writedfs('BCI_orig_rh.dfs', bci)


bci.vertices, bci.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_A\
tlas/surf/rh.inflated')
view_patch(bci, bci.labels)

writedfs('BCI_pial_rh.dfs.', bci)

bci.vertices, bci.faces = fsio.read_geometry('/home/ajoshi/data/BCI_DNI_Atla\
s/surf/rh.white')
writedfs('BCI_white_rh.dfs.', bci)


bci.vertices[:, 0] += 96*0.8
bci.vertices[:, 1] += 192*0.546875
bci.vertices[:, 2] += 192*0.546875
bci_bst = readdfs('/home/ajoshi/data/BCI-DNI_brain_atlas/BCI-DNI_brain.right.\
inner.cortex.dfs')
bci_bst = interpolate_labels(bci, bci_bst)
Example #19
0
print sp.sum(sp.absolute(l12[:, 1] - l12[:, 0]))

l1 = sp.reshape(l12[:, 0], (l.shape[0], l.shape[1]), order='F')
l2 = sp.reshape(l12[:, 1], (l.shape[0], l.shape[1]), order='F')

perm1 = sp.mod(17 * sp.arange(max(l1.flatten()) + 1), max(l1.flatten()) + 1)

# Plot labels
for ind in range(4):  #range(l.shape[1]):
    lab1 = l1[:, ind]
    lab2 = l2[:, ind]
    view_patch(dfs_left_sm,
               perm1[lab1],
               colorbar=0,
               colormap='Paired',
               elevation=90,
               show=0,
               outfile=lst[ind] + '_view1_split1_60clusters.png')
    view_patch(dfs_left_sm,
               perm1[lab1],
               colorbar=0,
               colormap='Paired',
               elevation=-90,
               show=0,
               outfile=lst[ind] + '_view2_split1_60clusters.png')
    view_patch(dfs_left_sm,
               perm1[lab2],
               colorbar=0,
               colormap='Paired',
               elevation=90,