From c92c823a3f7bb02825df23481e5e9088884e675b Mon Sep 17 00:00:00 2001 From: Saad Jbabdi <saad@fmrib.ox.ac.uk> Date: Wed, 8 Apr 2009 08:53:54 +0000 Subject: [PATCH] streamline stops when entering a termination mask --- streamlines.cc | 67 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 11 deletions(-) diff --git a/streamlines.cc b/streamlines.cc index a0f71fb..b218252 100644 --- a/streamlines.cc +++ b/streamlines.cc @@ -203,8 +203,8 @@ namespace TRACT{ if(m_stop(x_s,y_s,z_s)!=0){ stop_flag=true; } - else - if(stop_flag)break; + //else + if(stop_flag)break; } if(opts.skipmask.value() == ""){ @@ -378,7 +378,7 @@ namespace TRACT{ char buffer[1024]; fs.getline(buffer,1024); fs >>numseeds; - cout<<numseeds<<endl; + cout<<"numseeds="<<numseeds<<endl; } } @@ -397,7 +397,10 @@ namespace TRACT{ cerr<<" Although, it must stay in line with the seeds"<<endl; exit(-1); } + m_ConMat2.reinitialize(numseeds,numnz,1); + OUT(m_ConMat2.xsize()); + m_CoordMat2.reinitialize(numseeds,3,1); m_CoordMat_tract2.reinitialize(numnz,3,1); @@ -745,14 +748,56 @@ namespace TRACT{ } void Counter::save_matrix2(){ - save_volume(m_ConMat2,logger.appendDir("fdt_matrix2")); - applycoordchange(m_CoordMat2, m_seeds.niftivox2newimagevox_mat().i()); - save_volume(m_CoordMat2,logger.appendDir("coords_for_fdt_matrix2")); - applycoordchange(m_CoordMat2, m_seeds.niftivox2newimagevox_mat()); - applycoordchange(m_CoordMat_tract2, m_lrmask.niftivox2newimagevox_mat().i()); - save_volume(m_CoordMat_tract2,logger.appendDir("tract_space_coords_for_fdt_matrix2")); - applycoordchange(m_CoordMat_tract2, m_lrmask.niftivox2newimagevox_mat()); - save_volume4D(m_lookup2,logger.appendDir("lookup_tractspace_fdt_matrix2")); + if(!opts.splitmatrix2.value()){ + save_volume(m_ConMat2,logger.appendDir("fdt_matrix2")); + applycoordchange(m_CoordMat2, m_seeds.niftivox2newimagevox_mat().i()); + save_volume(m_CoordMat2,logger.appendDir("coords_for_fdt_matrix2")); + applycoordchange(m_CoordMat2, m_seeds.niftivox2newimagevox_mat()); + applycoordchange(m_CoordMat_tract2, m_lrmask.niftivox2newimagevox_mat().i()); + save_volume(m_CoordMat_tract2,logger.appendDir("tract_space_coords_for_fdt_matrix2")); + applycoordchange(m_CoordMat_tract2, m_lrmask.niftivox2newimagevox_mat()); + save_volume4D(m_lookup2,logger.appendDir("lookup_tractspace_fdt_matrix2")); + } + else{ + cout << "saving matrix2 into splitted files" << endl; + + int nsplits = 10; + while( float(m_ConMat2.xsize()/nsplits) >= 32767 ){ + nsplits++; + } + + int nrows = std::floor(float(m_ConMat2.xsize()/nsplits))+1; + volume<int> tmpmat; + + applycoordchange(m_CoordMat2, m_seeds.niftivox2newimagevox_mat().i()); + + for(int i=1;i<=nsplits;i++){ + int first_row = (i-1)*nrows+1; + int last_row = i*nrows > m_ConMat2.xsize() ? m_ConMat2.xsize() : i*nrows; + if(first_row > m_ConMat2.xsize()) break; + + // set limits + m_ConMat2.setROIlimits(first_row-1,m_ConMat2.miny(),m_ConMat2.minz(),last_row-1,m_ConMat2.maxy(),m_ConMat2.maxz()); + m_ConMat2.activateROI(); + tmpmat = m_ConMat2.ROI(); + save_volume(tmpmat,logger.appendDir("fdt_matrix2_"+num2str(i))); + + m_CoordMat2.setROIlimits(first_row-1,m_CoordMat2.miny(),m_CoordMat2.minz(),last_row-1,m_CoordMat2.maxy(),m_CoordMat2.maxz()); + m_CoordMat2.activateROI(); + tmpmat = m_CoordMat2.ROI(); + save_volume(tmpmat,logger.appendDir("coords_for_fdt_matrix2_"+num2str(i))); + + + } + + applycoordchange(m_CoordMat_tract2, m_lrmask.niftivox2newimagevox_mat()); + save_volume4D(m_lookup2,logger.appendDir("lookup_tractspace_fdt_matrix2")); + + applycoordchange(m_CoordMat2, m_seeds.niftivox2newimagevox_mat()); + applycoordchange(m_CoordMat_tract2, m_lrmask.niftivox2newimagevox_mat().i()); + save_volume(m_CoordMat_tract2,logger.appendDir("tract_space_coords_for_fdt_matrix2")); + + } } int Seedmanager::run(const float& x,const float& y,const float& z,bool onewayonly, int fibst){ -- GitLab