#print "\t\t", target_ids[t_id], "\t", len(source), "\t", len(target),"\t", jac0,"\t",  bfn0, "\t", jac1,"\t",  bfn1
 #print "Before mapping: ", jac0, bfn0
 #print "After mapping: ", jac1, bfn1
 
 
 cor0, ncor0 = vol_corr_notcorr(s_cst, t_cst, vol_dims, disp=False)
 cor1, ncor1 = vol_corr_notcorr(mapped_s_cst, t_cst, vol_dims, disp=False)                
     
 print "\t\t", target_ids[t_id], "\t", cor0,"\t",  ncor0, "\t", cor1,"\t",  ncor1
 
 if vis:
     s_file_native = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/tvis_tractography/' + source_sub + '_tracks_dti_tvis.trk'
     t_file_native = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/tvis_tractography/' + target_sub + '_tracks_dti_tvis.trk'
     t_cst_ext_idx_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + target_sub + '_cst_L_tvis_ext.pkl'
     s_cst_native = load_tract(s_file_native, s_cst_idx_file)
     t_cst_native = load_tract(t_file_native, t_cst_idx_file)
     t_cst_ext_native = load_tract(t_file_native, t_cst_ext_idx_file)
     TP_mapped,FP_mapped,TP_source, FN_source = TP_FP_TP_FN(s_cst_native, t_cst_native, t_cst_ext_native, mapped)
     
     #TP_mapped,FP_mapped,TP_source, FN_source = TP_FP_TP_FN(s_cst, t_cst, t_cst_ext, mapped)
     from common_functions import show_both_bundles
        
     show_both_bundles([TP_mapped, FP_mapped],
           #colors=[fvtk.colors.orange, fvtk.colors.red],
           colors=[fvtk.colors.red, fvtk.colors.green],
           show=True,
           fname='Lauren_reg_1NN_' + source_sub + '_'+ target_sub + '_L_TP_red_FP_green_in_mapped_show_in_native.png')
     
     
     show_both_bundles([TP_source, FN_source],
s_file = args.inputSourceTractography
s_ind = args.inputSourceCSTSFFIndex

t_file = args.inputTargetTractography
t_ind = args.inputTargetCSTExtIndex
t_cst = args.inputTargetCSTIndex

num_pro = args.inputNumPrototypes 

map_prob = args.outputMap_prob


vis = False

source_cst = load_tract(s_file,s_ind)

target_cst_ext = load_tract(t_file,t_ind)

print len(source_cst), len(target_cst_ext)

tractography1 = source_cst[-num_pro:]
tractography2 = target_cst_ext[:num_pro]
#tractography2 = target_cst_ext[:num_pro*2]

print "Source", len(tractography1)
print "Target", len(tractography2)


#print "Computing the distance matrices for each tractography."
dm1 = bundles_distances_mam(tractography1, tractography1)
 t_cst_ext_idx = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + target + '_cst_L_tvis_ext.pkl'
 #map_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/results/result_cst_sff_in_ext_2_cst_ext/50_SFF_MNI/map_best_' + source + '_' + target + '_cst_L_ann_' + str(anneal[a_id]) + '_MNI.txt'
 map_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/results/result_cst_sff_in_ext_2_cst_ext/50_SFF_MNI/map_1nn_' + source + '_' + target + '_cst_L_ann_' + str(anneal[a_id]) + '_MNI.txt'
 '''
 
 #Right
 s_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/tvis_tractography/' + source + '_tracks_dti_tvis_linear.trk'
 t_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/tvis_tractography/' + target + '_tracks_dti_tvis_linear.trk'            
 s_cst_idx = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + source + '_corticospinal_R_tvis.pkl'
 t_cst_idx = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + target + '_corticospinal_R_tvis.pkl'
 t_cst_ext_idx = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + target + '_cst_R_tvis_ext.pkl'
 #map_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/results/result_cst_sff_in_ext_2_cst_ext/50_SFF_MNI/map_best_' + source + '_' + target + '_cst_R_ann_' + str(anneal[a_id]) + '_MNI.txt'
 map_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/results/result_cst_sff_in_ext_2_cst_ext/50_SFF_MNI/map_1nn_' + source + '_' + target + '_cst_R_ann_' + str(anneal[a_id]) + '_MNI.txt'
 '''               
 
 s_cst = load_tract(s_file, s_cst_idx)
 t_cst = load_tract(t_file, t_cst_idx)
 t_cst_ext = load_tract(t_file, t_cst_ext_idx)
 map_all = load_pickle(map_file)
 
 #this is only for mapping - to conver voxel size from 1,1,1 to 2,2,2
 s_cst = .5 * s_cst
 t_cst = .5 * t_cst                
 t_cst_ext = .5 * t_cst_ext
 #vol_dims = [182*2,218*2,182*2]
 
 # end of this is only for mapping - to conver voxel size from 1,1,1 to 2,2,2
                 
 
 
 cst_len = len(s_cst)
    save_tract_trk(cst_tract_ext, s_fa, cst_ext_trk_fname)    

    #converting trk file to vtk file
    input_anatomy_ref = '/home/bao/tiensy/Lauren_registration/data_compare_mapping/anatomy/' + subj + '_data_brain.nii.gz'  
    #it is a link to '/home/bao/Personal/PhD_at_Trento/Research/ALS_Nivedita_Bao/Segmentation_CST_francesca/' + subj + '/DTI/data_brain.nii.gz'
    #cst_vtk_fname = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + subj + '_corticospinal_L_tvis.vtk'
    cst_ext_vtk_fname = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + subj + '_cst_L_tvis_ext.vtk'
    '''
    
    #CST_Right
    #saving CST as trk file
    s_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/tvis_tractography/' + subj + '_tracks_dti_tvis.trk'
    #cst_ind = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + subj + '_corticospinal_R_tvis.pkl'            
    #cst_tract = load_tract(s_file,cst_ind)
    cst_ext_ind  = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + subj + '_cst_R_tvis_ext.pkl'    
    cst_tract_ext = load_tract(s_file,cst_ext_ind)    
    
    s_fa = '/home/bao/Personal/PhD_at_Trento/Research/ALS_Nivedita_Bao/Segmentation_CST_francesca/' + subj + '/DTI/dti_fa_brain.nii.gz'
    #cst_trk_fname = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + subj + '_corticospinal_R_tvis.trk'            
    #save_tract_trk(cst_tract, s_fa, cst_trk_fname)
    cst_ext_trk_fname = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + subj + '_cst_R_tvis_ext.trk'            
    save_tract_trk(cst_tract_ext, s_fa, cst_ext_trk_fname) 
    
    #converting trk file to vtk file
    input_anatomy_ref = '/home/bao/tiensy/Lauren_registration/data_compare_mapping/anatomy/' + subj + '_data_brain.nii.gz'  
    #it is a link to '/home/bao/Personal/PhD_at_Trento/Research/ALS_Nivedita_Bao/Segmentation_CST_francesca/' + subj + '/DTI/data_brain.nii.gz'
    #cst_vtk_fname = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + subj + '_corticospinal_R_tvis.vtk'
    cst_ext_vtk_fname = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + subj + '_cst_R_tvis_ext.vtk'    
   
        
    in_format = str(".trk")
#print "Source tractography:       ", args.inputSourceTractography
print "Source tract index:       ", args.inputSourceTractIndex
#print "Target tractography:       ", args.inputTargetTractography
print "Target tract index:       ", args.inputTargetTractIndex
print "Out put source tract aligned:       ", args.outputSourceTractAligned
#print "=========================="

s_file = args.inputSourceTractography
s_ind = args.inputSourceTractIndex

t_file = args.inputTargetTractography
t_ind = args.inputTargetTractIndex

out_file = args.outputSourceTractAligned

s_tract = load_tract(s_file,s_ind)
t_tract = load_tract(t_file,t_ind)

          

from dipy.align.streamlinear import (StreamlineLinearRegistration,
                                     vectorize_streamlines,
                                     BundleMinDistance)

"""
An important step before running the registration is to resample the streamlines
so that they both have the same number of points per streamline. Here we will
use 10 points.
"""
points = 20#10#20
s_tract = vectorize_streamlines(s_tract, points)
                s_cst_idx = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + source + '_corticospinal_R_tvis.pkl'
                t_cst_idx = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + target + '_corticospinal_R_tvis.pkl'

                s_cst_sff_in_ext_idx = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + source + '_cst_R_tvis_sff_in_ext.pkl'                
                t_cst_ext_idx = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + target + '_cst_R_tvis_ext.pkl'

                #annealing
                #map_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/results/result_cst_sff_in_ext_2_cst_ext/50_SFF_MNI/map_best_' + source + '_' + target + '_cst_R_ann_' + str(anneal[a_id]) + '_MNI.txt'
                #map_file = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/results/result_cst_sff_in_ext_2_cst_ext/50_SFF_MNI/map_1nn_' + source + '_' + target + '_cst_R_ann_' + str(anneal[a_id]) + '_MNI.txt'
                
                #probability
                nn = 10
                map_file = '/home/bao/tiensy/Tractography_Mapping/code/results/result_prob_map/prob_map_prob_map_' + source + '_' + target + '_cst_R_MNI_full_full' + '_sparse_density_' + str(nn) + '_neighbors.txt' 
          
                
                s_cst = load_tract(s_file, s_cst_idx)
                t_cst = load_tract(t_file, t_cst_idx)
                
                s_cst_sff_in_ext = load_tract(s_file, s_cst_sff_in_ext_idx)
                t_cst_ext = load_tract(t_file, t_cst_ext_idx)
                
                #---------------------------------------------------
                #for normal mapping
                map_all = load_pickle(map_file)
                
                #-----------------------------------------------                
                
                
                cst_len = len(s_cst)
                
                pr_s = s_cst_sff_in_ext[-num_pro:]
'''

source = '213'
target = '202'
s_file = '/home/bao/tiensy/Tractography_Mapping/data/' + source + '_tracks_dti_3M.dpy'
s_idx = '/home/bao/tiensy/Tractography_Mapping/data/ROI_seg/CST_ROI_R_control/' + source + '_CST_ROI_R_3M.pkl'
#s_idx = '/home/bao/tiensy/Tractography_Mapping/data/50_SFF_plus_ext/ROI_seg/' + source + '_cst_R_3M_plus_sff.pkl'

t_file = '/home/bao/tiensy/Tractography_Mapping/data/' + target + '_tracks_dti_3M.dpy'
t_idx = '/home/bao/tiensy/Tractography_Mapping/data/ROI_seg/CST_ROI_R_control/' + target + '_CST_ROI_R_3M.pkl'
#s_idx = '/home/bao/tiensy/Tractography_Mapping/data/50_SFF_plus_ext/ROI_seg/' + source + '_cst_R_3M_plus_sff.pkl'


from common_functions import load_tract

cb_subj1 = load_tract(s_file,s_idx)
cb_subj2 = load_tract(t_file,t_idx)

          

from dipy.align.streamlinear import (StreamlineLinearRegistration,
                                     vectorize_streamlines,
                                     BundleMinDistance)

"""
An important step before running the registration is to resample the streamlines
so that they both have the same number of points per streamline. Here we will
use 20 points.
"""

cb_subj1 = vectorize_streamlines(cb_subj1, 20)
Example #8
0
for s_id in np.arange(len(source_ids)):
    print '-----------------------------------------------------------------------------------------'
    source = str(source_ids[s_id]) 
    print 'Source: ', source
            
    for t_id in np.arange(len(target_ids)):
        if target_ids[t_id] != source_ids[s_id]:
           
            target = str(target_ids[t_id])                     
            print 'Target: ', target
            
            s_tracts = '/home/bao/tiensy/Tractography_Mapping/data/' + source + '_tracks_dti_3M_linear.dpy'
            #s_tracts = '/home/bao/tiensy/Tractography_Mapping/data/' + source + '_tracks_dti_3M.dpy'
            s_idx = '/home/bao/tiensy/Tractography_Mapping/data/' + source + '_corticospinal_L_3M.pkl'    
            #s_cst = load_tract_trk(s_tracts,s_idx)      
            s_cst = load_tract(s_tracts,s_idx)  
            
            t_tracts = '/home/bao/tiensy/Tractography_Mapping/data/' + target + '_tracks_dti_3M_linear.dpy'
            #t_tracts = '/home/bao/tiensy/Tractography_Mapping/data/' + target + '_tracks_dti_3M.dpy'
            t_idx = '/home/bao/tiensy/Tractography_Mapping/data/' + target + '_corticospinal_L_3M.pkl'            
            #t_cst = load_tract_trk(t_tracts,t_idx)      
            t_cst = load_tract(t_tracts,t_idx) 
            
            '''
            dm = bundles_distances_mam(s_cst, t_cst)
            dm = np.array(dm, dtype=float)
            avg_dis = np.sum(dm) / (len(s_cst)*len(t_cst))
            min_dis = dm.min()
            max_dis = dm.max()           
                
            s_qb = QuickBundles(s_cst,200,18)
 
 
 #CST Left
 cst_ind = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + sub + '_corticospinal_L_tvis.pkl'            
 cst_sff_ind = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + sub + '_cst_L_tvis_sff_in_ext.pkl'
 cst_ext_ind = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + sub + '_cst_L_tvis_ext.pkl'
 '''
 
 #CST Right
 cst_ind = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/ROI_seg_tvis/ROI_seg_tvis_native/' + sub + '_corticospinal_R_tvis.pkl'    
 cst_sff_ind = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + sub + '_cst_R_tvis_sff_in_ext.pkl'        
 cst_ext_ind = '/home/bao/tiensy/Tractography_Mapping/data/trackvis_tractography/50_SFF_in_ext/ROI_seg_native/' + sub + '_cst_R_tvis_ext.pkl'
 '''
     
    
 cst = load_tract(tractography_file, cst_ind)
 cst_sff = load_tract(tractography_file, cst_sff_ind)
 cst_ext = load_tract(tractography_file, cst_ext_ind)
 
 #cst_len_min = length_min(cst)
 #cst_len_max = length_max(cst)
 #cst_len_avg = length_avg(cst)
 #cst_ext_len_min = length_min(cst_ext)
 #cst_ext_len_max = length_max(cst_ext)
 #cst_ext_len_avg = length_avg(cst_ext)
 
 cst_len_min = truth_length_min(cst)
 cst_len_max = truth_length_max(cst)
 cst_len_avg = truth_length_avg(cst)
 cst_ext_len_min = truth_length_min(cst_ext)
 cst_ext_len_max = truth_length_max(cst_ext)