From 9d2966e8f3c58f375c04a80b99bcd5d31c80c736 Mon Sep 17 00:00:00 2001
From: Duncan Mortimer <duncan.mortimer@ndcn.ox.ac.uk>
Date: Thu, 19 Jul 2007 08:36:24 +0000
Subject: [PATCH] Reverted to 1.5 code and changed exit code for unsuccessful
 running to 1

---
 ccops.cc | 168 ++++---------------------------------------------------
 1 file changed, 10 insertions(+), 158 deletions(-)

diff --git a/ccops.cc b/ccops.cc
index 349f89f..810f9f0 100644
--- a/ccops.cc
+++ b/ccops.cc
@@ -9,13 +9,11 @@
 #include "ccopsOptions.h"
 #include <vector>
 #include <algorithm>
-#include "dpm_gibbs.h"
 
 using namespace std;
 using namespace NEWIMAGE;
 using namespace NEWMAT;
 using namespace CCOPS;
-
   void spect_reord(SymmetricMatrix& A,ColumnVector& r,ColumnVector& y){
     SymmetricMatrix Q=-A;
       DiagonalMatrix t(Q.Nrows());
@@ -72,117 +70,6 @@ using namespace CCOPS;
       
   } 
 
-// calculate pca decomposition using the covariance method
-// X is the data dxn matrix with n observations (data points) and d variables (dimensions) 
-ReturnMatrix pcacov(Matrix& X,const float& perc){
-  int n=X.Nrows();
-  int d=X.Ncols();
-  // de-mean
-  cout<<"de-mean"<<endl;
-  ColumnVector Xmean(d);
-  for(int j=1;j<=d;j++)
-    Xmean(j) = X.Column(j).Sum()/n;
-  for(int j=1;j<=d;j++){
-    for(int i=1;i<=n;i++)
-      X(i,j) -= Xmean(j);
-  }
-
-  // calculate covariance
-  cout<<"covariance"<<endl;
-  SymmetricMatrix C(d);
-
-  if(d<n)
-    C << (X.t()*X)/n;
-  else
-    C << X*X.t()/n;
-
-  // eigenvalues
-  cout<<"eigenvalues"<<endl;
-  Matrix V;
-  DiagonalMatrix D;
-  EigenValues(C,D,V);
-
-  // select subset
-  cout<<"subset"<<endl;
-  float cumsum=0,total=D.Trace();
-  int dim=0;
-  for(int i=D.Nrows();i>=1;i--){
-    cumsum += D(i);
-    if(cumsum/total < perc){dim++;}
-    else{break;}
-  }
-  if(dim<=2)dim=2;
-
-  dim=5;
-
-  Matrix v(V.Nrows(),dim);
-  ColumnVector lam(dim);
-  for(int j=1;j<=dim;j++){
-    v.Column(j) = V.Column(V.Ncols()-j+1);
-    lam(j)=D(V.Ncols()-j+1);
-  }
-
-  //cout<<"zscores"<<endl;
-  // convert to z-scores
-  //for(int i=1;i<=d;i++)
-  //X.Row(i) /= sqrt(C(i,i));
-  // reconstruct data
-  cout<<"data"<<endl;
-  Matrix data(dim,n);
-
-  if(!(d<n)){
-    v = (X.t() * v);
-    for(int j=1;j<=dim;j++)
-      v.Column(j) /= sqrt(n*lam(j));
-  }
-  data = X*v;
-  
-
-  data.Release();
-  return data;
-}
-
-void dpm_reord(Matrix& A,ColumnVector& r,ColumnVector& y){
-  cout << "start dpm reordering" <<endl;
-  // pca preprocess
-  cout << "pca preprocessing" <<endl;
-  float perc=.90;
-  Matrix data;
-  OUT(A.Nrows());
-  OUT(A.Ncols());
-  write_ascii_matrix(A,"nonpreprocessed_data");
-  OUT(A.Nrows());
-  OUT(A.Ncols());
-  data = pcacov(A,perc);
-  write_ascii_matrix(data,"preprocessed_data");
-
-  // dpm
-  cout << "dpm clustering" <<endl;
-  int numiter=2000;
-  int burnin=1000;
-  int sampleevery=1;
-  DPM_GibbsSampler gs(data,numiter,burnin,sampleevery);
-  gs.init();
-  gs.run();
-  // save
-  int n = data.Nrows();
-  vector< pair<float,int> > myvec;
-  ColumnVector z(n);
-  z = gs.get_dataindex();
-  //z = gs.get_mldataindex();
-  for(int i=1;i<=n;i++){
-    pair<float,int> mypair;
-    mypair.first  = z(i);
-    mypair.second = i;
-    myvec.push_back(mypair);
-  }
-  sort(myvec.begin(),myvec.end());
-  r.ReSize(n);y.ReSize(n);
-  for(int i=1;i<=n;i++){
-    y(i)=myvec[i-1].first;
-    r(i)=myvec[i-1].second;
-  }
-}
 
 void rem_zrowcol(const Matrix& myOMmat,const Matrix& coordmat,const Matrix& tractcoordmat,const bool coordbool,const bool tractcoordbool,Matrix& newOMmat,Matrix& newcoordmat, Matrix& newtractcoordmat)
 {
@@ -413,12 +300,10 @@ void add_connexity(SymmetricMatrix& CtCt,const Matrix& coord,const float p=.5){
 int main ( int argc, char **argv ){
   ccopsOptions& opts = ccopsOptions::getInstance();
   int success=opts.parse_command_line(argc,argv);
-  if(!success) return 0;
+  if(!success) return 1;
   string ip=opts.inmatrix.value();
   make_basename(ip);
   
-  srand(time(NULL));
-
   ColumnVector y1,r1,y2,r2;
   volume<int> myOM;
   volume<int> coordvol;
@@ -525,9 +410,9 @@ int main ( int argc, char **argv ){
 
  
   rem_zrowcol(myOMmat,mycoordmat,mytractcoordmat,coordbool,tractcoordbool,newOMmat,newcoordmat,newtractcoordmat);
-  //cerr<<"NOW"<<endl;
-  //cerr<<myOMmat.MaximumAbsoluteValue()<<endl;
-  //cerr<<newOMmat.MaximumAbsoluteValue()<<endl;
+  //   cerr<<"NOW"<<endl;
+  //   cerr<<myOMmat.MaximumAbsoluteValue()<<endl;
+  //   cerr<<newOMmat.MaximumAbsoluteValue()<<endl;
  
   //write_ascii_matrix("ncm",newcoordmat);
   // write_ascii_matrix("nctm",newtractcoordmat);
@@ -542,12 +427,12 @@ int main ( int argc, char **argv ){
 
 
   cerr<<"Computing correlation"<<endl;
-  SymmetricMatrix CtCt(newOMmat.Nrows());
-  //CtCt << corrcoef(newOMmat.t());
-  //CtCt << CtCt+1;
+  SymmetricMatrix CtCt;
+  CtCt << corrcoef(newOMmat.t());
+  CtCt << CtCt+1;
 
   // adding connexity constraint
-  if(opts.connexity.value()!=0 && !coordbool){
+  if(!coordbool){
     cerr<<"WARNING !! No coordinates provided. I cannot apply any connexity constraint."<<endl;
   }
   else{
@@ -582,29 +467,7 @@ int main ( int argc, char **argv ){
   }
   else{
     cerr<<"Starting First Reordering"<<endl;
-    if(opts.scheme.value()=="dpm"){
-      OUT(myOMmat.Ncols());
-      OUT(myOMmat.Nrows());
-      OUT(newOMmat.Ncols());
-      OUT(newOMmat.Nrows());
-      dpm_reord(newOMmat,r1,y1);
-      //Matrix A;
-      //A=CtCt;
-      //dpm_reord(A,r1,y1);
-    }
-    else if(opts.scheme.value()=="kmeans"){
-      int kk=opts.kmeans.value();
-      if(kk<=1){
-	cerr << "Error using kmeans. Number of clusters must be >=2" << endl;
-	return -1;
-      }
-      cout << "...  using kmeans" << endl;
-      //kmeans_reord(CtCt,r1,y1,kk);
-    }
-    else 
-      spect_reord(CtCt,r1,y1);
-    
-
+    spect_reord(CtCt,r1,y1);
    
    
     cerr<<"Permuting seed CC matrix"<<endl;
@@ -628,18 +491,7 @@ int main ( int argc, char **argv ){
     write_ascii_matrix(y1,base+"y1");
     save_volume(outCCvol,"reord_CC_"+base);
     save_volume(outcoords,"coords_for_reord_"+base);
-    if(opts.scheme.value()=="dpm" || opts.scheme.value()=="kmeans"){
-      volume<int> mask;
-      read_volume(mask,opts.mask.value());
-      mask = 0;
-      for(int i=0;i<outcoords.xsize();i++){
-	mask(outcoords(i,0,0),
-	     outcoords(i,1,0),
-	     outcoords(i,2,0)) = (int)y1(i+1) + 1;
-      }
-      save_volume(mask,"reord_mask_"+base);
-    }
-
+ 
   }
 
   if(opts.reord2.value()){
-- 
GitLab