def skeletonize_both(): from dipy.viz import fos from dipy.core.track_metrics import downsample from dipy.core.track_performance import local_skeleton_clustering, most_similar_track_mam froi='/home/eg309/Data/ICBM_Wmpm/ICBM_WMPM.nii' wI=get_roi(froi,9,0) #4 is genu fname='/home/eg309/Data/PROC_MR10032/subj_03/101/1312211075232351192010092217244332311282470ep2dadvdiffDSI10125x25x25STs004a001_QA_warp.dpy' #fname='/home/eg309/Data/PROC_MR10032/subj_03/101/1312211075232351192010092217244332311282470ep2dadvdiffDSI10125x25x25STs004a001_QA_native.dpy' #fname='/home/eg309/Data/PROC_MR10032/subj_06/101/13122110752323511930000010092916083910900000227ep2dadvdiffDSI10125x25x25STs004a001_QA_native.dpy' fname2='/home/eg309/Data/PROC_MR10032/subj_06/101/13122110752323511930000010092916083910900000227ep2dadvdiffDSI10125x25x25STs004a001_QA_warp.dpy' r=fos.ren() #''' dpr=Dpy(fname,'r') T=dpr.read_indexed(range(2*10**4)) dpr.close() print len(T) Td=[downsample(t,3) for t in T if length(t)>40] C=local_skeleton_clustering(Td,d_thr=20.) for c in C: #color=np.random.rand(3) color=fos.red if C[c]['N']>0: Ttmp=[] for i in C[c]['indices']: Ttmp.append(T[i]) si,s=most_similar_track_mam(Ttmp,'avg') print si,C[c]['N'] fos.add(r,fos.line(Ttmp[si],color)) dpr=Dpy(fname2,'r') T=dpr.read_indexed(range(2*10**4)) dpr.close() print len(T) Td=[downsample(t,3) for t in T if length(t)>40] C=local_skeleton_clustering(Td,d_thr=20.) #r=fos.ren() for c in C: #color=np.random.rand(3) color=fos.yellow if C[c]['N']>0: Ttmp=[] for i in C[c]['indices']: Ttmp.append(T[i]) si,s=most_similar_track_mam(Ttmp,'avg') print si,C[c]['N'] fos.add(r,fos.line(Ttmp[si],color)) #''' fos.add(r,fos.point(wI,fos.green)) fos.show(r)
def bloat_bundle(self,tracks): tracksn=[] #c=np.array([0,0,0],np.float32) import dipy.core.track_performance as pf #c=tracks[0][-4] ct=tracks[pf.most_similar_track_mam(tracks,'avg')[0]] c=ct[len(ct)/2] #tracks2=[tm.downsample(t,200) for t in tracks] for X in tracks2: Xn = X + np.multiply(10/np.sum((X-c)**2,axis=1).reshape(len(X),1),X-c) #Xn = X + 2*(X-c) tracksn.append(Xn) from dipy.io import pickles as pkl pkl.save_pickle('bundles.pkl',{'init':tracks[10],'after':tracksn[10]}) return tracksn
def skeletonize(): froi='/home/eg309/Data/ICBM_Wmpm/ICBM_WMPM.nii' wI=get_roi(froi,35,1) #4 is genu #fname='/home/eg309/Data/PROC_MR10032/subj_03/101/1312211075232351192010092217244332311282470ep2dadvdiffDSI10125x25x25STs004a001_QA_warp.dpy' #fname='/home/eg309/Data/PROC_MR10032/subj_03/101/1312211075232351192010092217244332311282470ep2dadvdiffDSI10125x25x25STs004a001_QA_native.dpy' #fname='/home/eg309/Data/PROC_MR10032/subj_06/101/13122110752323511930000010092916083910900000227ep2dadvdiffDSI10125x25x25STs004a001_QA_native.dpy' fname='/home/eg309/Data/PROC_MR10032/subj_06/101/13122110752323511930000010092916083910900000227ep2dadvdiffDSI10125x25x25STs004a001_QA_warp.dpy' dpr=Dpy(fname,'r') T=dpr.read_indexed(range(2*10**4)) dpr.close() print len(T) from dipy.core.track_metrics import downsample from dipy.core.track_performance import local_skeleton_clustering, most_similar_track_mam Td=[downsample(t,3) for t in T] C=local_skeleton_clustering(Td,d_thr=20.) #Tobject=np.array(T,dtype=np.object) from dipy.viz import fos r=fos.ren() #skeleton=[] for c in C: color=np.random.rand(3) if C[c]['N']>0: Ttmp=[] for i in C[c]['indices']: Ttmp.append(T[i]) si,s=most_similar_track_mam(Ttmp,'avg') print si,C[c]['N'] fos.add(r,fos.line(Ttmp[si],color)) #print len(skeleton) #fos.add(r,fos.line(skeleton,color)) #fos.add(r,fos.line(T,fos.red)) fos.show(r)
colors2 = len(data)*[None] colors_sk = []#len(C.keys())*[None] for c in C: color=np.random.rand(3) r,g,b = color bundle=[] for i in C[c]['indices']: colors2[i]=np.tile(np.array([r,g,b,opacity],'f'),(len(data[i]),1)) bundle.append(data[i]) bi=pf.most_similar_track_mam(bundle)[0] C[c]['skeletal']=bundle[bi] if len(C[c]['indices'])>100 and tm.length(bundle[bi])>30.: colors_sk.append( np.tile(np.array([r,g,b,opacity],'f'),(len(bundle[bi]),1)) ) skeletals.append(bundle[bi]) print 'len_data', len(data) print 'len_skeletals', len(skeletals) print 'len_colors2', len(colors2) print 'len_colors_sk', len(colors_sk) t2=Tracks(data,colors2,line_width=1.)
colors2 = len(data) * [None] colors_sk = [] #len(C.keys())*[None] for c in C: color = np.random.rand(3) r, g, b = color bundle = [] for i in C[c]['indices']: colors2[i] = np.tile(np.array([r, g, b, opacity], 'f'), (len(data[i]), 1)) bundle.append(data[i]) bi = pf.most_similar_track_mam(bundle)[0] C[c]['skeletal'] = bundle[bi] if len(C[c]['indices']) > 100 and tm.length(bundle[bi]) > 30.: colors_sk.append( np.tile(np.array([r, g, b, opacity], 'f'), (len(bundle[bi]), 1))) skeletals.append(bundle[bi]) print 'len_data', len(data) print 'len_skeletals', len(skeletals) print 'len_colors2', len(colors2) print 'len_colors_sk', len(colors_sk) t2 = Tracks(data, colors2, line_width=1.) t2.position = (100, 0, 0)