From 3019e26b6a71f34bbb4162a94e52a0fc3395f9b1 Mon Sep 17 00:00:00 2001
From: Saad Jbabdi <saad@fmrib.ox.ac.uk>
Date: Tue, 11 Dec 2007 16:07:59 +0000
Subject: [PATCH] added directory option

---
 ccops.cc       | 43 ++++++++++++++++++++++++-------------------
 ccopsOptions.h |  9 +++++++--
 2 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/ccops.cc b/ccops.cc
index 24dd0d5..ce52a0c 100644
--- a/ccops.cc
+++ b/ccops.cc
@@ -395,6 +395,10 @@ int main ( int argc, char **argv ){
   ccopsOptions& opts = ccopsOptions::getInstance();
   int success=opts.parse_command_line(argc,argv);
   if(!success) return 1;
+  if(opts.inmatrix.value()=="" && opts.directory.value()==""){
+    cerr << "Specify either input matrix or tractography directory" << endl;
+    return 1;
+  }
   string ip=opts.inmatrix.value();
   make_basename(ip);
   
@@ -403,8 +407,9 @@ int main ( int argc, char **argv ){
   volume<int> coordvol;
   volume<int> tractcoordvol;
   bool coordbool=false,tractcoordbool=false;
-  read_volume(myOM,ip);
-  
+  //  read_volume(myOM,ip);
+  read_volume(myOM,opts.directory.value()+"/"+opts.inmatrix.value());
+
   Matrix myOMmat(myOM.xsize(),myOM.ysize());
   Matrix mycoordmat,mytractcoordmat;
   Matrix newOMmat,newcoordmat,newtractcoordmat;
@@ -426,7 +431,7 @@ int main ( int argc, char **argv ){
   // write_ascii_matrix(newOMmat.t(),"preprecock");
   //Checking for and loading up Seed Coordinates
 
-  string coordname="coords_for_"+ip;
+  string coordname=opts.directory.value()+"/coords_for_"+ip;
   if(fsl_imageexists(coordname)){
     read_volume(coordvol,coordname);
     coordbool=true;
@@ -442,7 +447,7 @@ int main ( int argc, char **argv ){
   }
 
   //Checking For and Loading Up Tract coordinates
-  string trcoordname="tract_space_coords_for_"+ip;
+  string trcoordname=opts.directory.value()+"/tract_space_coords_for_"+ip;
   if(fsl_imageexists(trcoordname)){
     read_volume(tractcoordvol,trcoordname);
     tractcoordbool=true;
@@ -467,7 +472,7 @@ int main ( int argc, char **argv ){
   if(opts.excl_mask.value()!=""){
     volume<int> lookup_tract;
     volume<int> excl;
-    read_volume(lookup_tract,"lookup_tractspace_"+ip);
+    read_volume(lookup_tract,opts.directory.value()+"/lookup_tractspace_"+ip);
     string exname=opts.excl_mask.value();
     make_basename(exname);
     read_volume(excl,exname);
@@ -555,8 +560,8 @@ int main ( int argc, char **argv ){
       } 
     }
    
-    save_volume(outCCvol,"CC_"+base);
-    save_volume(outcoords,"coords_for_"+base);
+    save_volume(outCCvol,opts.directory.value()+"/CC_"+base);
+    save_volume(outcoords,opts.directory.value()+"/coords_for_"+base);
 
   }
   else{
@@ -588,16 +593,16 @@ int main ( int argc, char **argv ){
       } 
     }
    
-    write_ascii_matrix(r1,base+"r1");
-    write_ascii_matrix(y1,base+"y1");
-    save_volume(outCCvol,"reord_CC_"+base);
-    save_volume(outcoords,"coords_for_reord_"+base);
+    write_ascii_matrix(r1,opts.directory.value()+"/"+base+"r1");
+    write_ascii_matrix(y1,opts.directory.value()+"/"+base+"y1");
+    save_volume(outCCvol,opts.directory.value()+"/reord_CC_"+base);
+    save_volume(outcoords,opts.directory.value()+"/coords_for_reord_"+base);
 
     // save clustering if kmeans used
     if(opts.scheme.value() == "kmeans"){
       volume<int> mask;
       if(opts.mask.value() == "")
-	read_volume(mask,"fdt_paths");
+	read_volume(mask,opts.directory.value()+"/fdt_paths");
       else
 	read_volume(mask,opts.mask.value());
       mask = 0;
@@ -606,11 +611,11 @@ int main ( int argc, char **argv ){
 	     outcoords(i,1,0),
 	     outcoords(i,2,0)) = (int)y1(i+1) + 1;
       }
-      save_volume(mask,"reord_mask_"+base);
+      save_volume(mask,opts.directory.value()+"/reord_mask_"+base);
       
       // save tractspace clustering if specified
       volume<int> outmask,tractmask;
-      read_volume(tractmask,"lookup_tractspace_fdt_matrix2");
+      read_volume(tractmask,opts.directory.value()+"/lookup_tractspace_fdt_matrix2");
       outmask=tractmask;
       copybasicproperties(tractmask,outmask);
       
@@ -628,7 +633,7 @@ int main ( int argc, char **argv ){
 	    vals.Maximum1(index);
 	      outmask(x,y,z) = (int)y1(index);
 	  }
-	save_volume(outmask,"tract_clustering_"+base);
+      save_volume(outmask,opts.directory.value()+"/tract_clustering_"+base);
 	
 	
     }
@@ -650,8 +655,8 @@ int main ( int argc, char **argv ){
       return(-1);
     }
  
-    write_ascii_matrix(r2,base+"r2");
-    write_ascii_matrix(y2,base+"y2");
+    write_ascii_matrix(r2,opts.directory.value()+"/"+base+"r2");
+    write_ascii_matrix(y2,opts.directory.value()+"/"+base+"y2");
 
     volume<int> outvol(newOMmat.Nrows(),newOMmat.Ncols(),1);
     volume<int> outtractcoords(newtractcoordmat.Nrows(),3,1);
@@ -672,8 +677,8 @@ int main ( int argc, char **argv ){
 	outtractcoords(i,2,0)=(int)newtractcoordmat(int(r2(i+1)),3);
       } 
     }
-    save_volume(outvol,"reord_"+base);
-    save_volume(outtractcoords,"tract_space_coords_for_reord_"+base);
+    save_volume(outvol,opts.directory.value()+"/reord_"+base);
+    save_volume(outtractcoords,opts.directory.value()+"/tract_space_coords_for_reord_"+base);
   }
   return 0;
 }
diff --git a/ccopsOptions.h b/ccopsOptions.h
index c0038b3..833efdc 100644
--- a/ccopsOptions.h
+++ b/ccopsOptions.h
@@ -27,6 +27,7 @@ class ccopsOptions {
   Option<bool> help;
   Option<string> inmatrix;
   Option<string> basename;
+  Option<string> directory;
   Option<string> excl_mask;
   Option<bool>  reord1;
   Option<bool>  reord2;
@@ -60,12 +61,15 @@ class ccopsOptions {
    help(string("-h,--help"), false,
 	string("display this message"),
 	false, no_argument),
-   inmatrix(string("-i,--in"), string(""),
+   inmatrix(string("-i,--in"), string("fdt_matrix2"),
 	       string("input matrix"),
-	       true, requires_argument),  
+	       false, requires_argument),  
    basename(string("-b,--basename"), string(""),
 	       string("Output basename"),
 	       true, requires_argument),
+   directory(string("-d,--dir"), string(""),
+	       string("Tractography Results Directory"),
+	       false, requires_argument),
    excl_mask(string("-x"), string(""),
 	     string("exclusion mask (in tract space johannes)"),
 	     false, requires_argument),  
@@ -101,6 +105,7 @@ class ccopsOptions {
        options.add(help);
        options.add(inmatrix);
        options.add(basename);
+       options.add(directory);
        options.add(excl_mask);
        options.add(reord1);
        options.add(reord2);
-- 
GitLab