JWS-112 Bumping version of ClustalO (src, binaries and windows) to version 1.2.4.
[jabaws.git] / binaries / src / clustalo / src / hhalign / hhhitlist-C.h
index 949540a..a86c23d 100644 (file)
@@ -15,7 +15,7 @@
  ********************************************************************/
 
 /*
- * RCS $Id: hhhitlist-C.h 243 2011-05-31 13:49:19Z fabian $
+ * RCS $Id: hhhitlist-C.h 315 2016-12-15 17:18:30Z fabian $
  */
 
 // hhhitlist.C
@@ -49,6 +49,7 @@ using std::endl;
 #include "hhhalfalignment.h"
 #include "hhfullalignment.h"
 #endif
+//#include "new_new.h" /* memory tracking */
 
 
 //////////////////////////////////////////////////////////////////////////////
@@ -158,7 +159,7 @@ HitList::PrintAlignments(
 
 
 #ifdef CLUSTALO
-                             char **ppcFirstProf, char **ppcSecndProf, 
+                         char **ppcFirstProf, char **ppcSecndProf, char zcAux[], char zcError[], 
 #endif
                              HMM& q, char* outfile, char outformat)
 {
@@ -193,10 +194,11 @@ HitList::PrintAlignments(
       nhits++;
       
       // Build double alignment of query against template sequences
-      int iBuildRet = qt_ali.Build(q,hit);  
+      int iBuildRet = qt_ali.Build(q,hit, zcError);  
       if (iBuildRet != OK){ /* FS, r241 -> r243 */
-          fprintf(stderr, "%s:%s:%d: qt_ali.Build failed\n", 
+          sprintf(zcAux, "%s:%s:%d: qt_ali.Build failed\n", 
                  __FUNCTION__, __FILE__, __LINE__);
+          strcat(zcError, zcAux);
           return FAILURE;
       }
 
@@ -1281,32 +1283,32 @@ HitList::TransitiveScoring()
       index.Add(name,k);
     }
   // Read symmetric Z-scores matrix
-  Z = new(float*[N]);
+  Z = new float*[N];
   for (k=0; k<N; k++) 
     {
-      Z[k] = new(float[N]);
+      Z[k] = new float[N];
       for (l=0; l<k; l++) Z[k][l] = Z[l][k];
       unused = fread(Z[k]+k,sizeof(float),N-k,wfile);   
     }
   // Read symmetric covariance matrix
-  C = new(float*[N]);
+  C = new float*[N];
   for (k=0; k<N; k++) 
     {
-      C[k] = new(float[N]);
+      C[k] = new float[N];
       for (l=0; l<k; l++) C[k][l] = C[l][k];
       unused = fread(C[k]+k,sizeof(float),N-k,wfile);
     }
   fclose(wfile);
 
   // Allocate memory
-  Zq = new(float[N]);
-  Ztq = new(float[N]);
-  Zrq = new(float[N]);
-  fold = new(char*[N]);
-  fam = new(char*[N]);
-  Prob = new(float[N]);
-  ll = new(int[N]);
-  w = new(float[N]);
+  Zq   = new float[N];
+  Ztq  = new float[N];
+  Zrq  = new float[N];
+  fold = new char*[N];
+  fam  = new char*[N];
+  Prob = new float[N];
+  ll   = new int[N];
+  w    = new float[N];
 
   // Transform P-values to normally distributed Z-scores and store in Zq vector
   fprintf(stderr,"Transform P-values to Z-scores\n");
@@ -1369,12 +1371,12 @@ HitList::TransitiveScoring()
   else
     {
       // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-      double** Csub = new(double*[M]);
-      double** Cinv = new(double*[M]);
+      double** Csub = new double*[M];
+      double** Cinv = new double*[M];
       for (m=0; m<M; m++) 
        {
-         Csub[m] = new(double[M]);
-         Cinv[m] = new(double[M]);
+         Csub[m] = new double[M];
+         Cinv[m] = new double[M];
          for (n=0; n<M; n++)
            Csub[m][n] = double(C[ll[m]][ll[n]]);
        }
@@ -1449,10 +1451,10 @@ HitList::TransitiveScoring()
       else 
        {
          // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-         double** Csub = new(double*[M]);
+         double** Csub = new double*[M];
          for (m=0; m<M; m++) 
            {
-             Csub[m] = new(double[M]);
+             Csub[m] = new double[M];
              for (n=0; n<M; n++)
                Csub[m][n] = double(C[ll[m]][ll[n]]);
            }
@@ -1466,8 +1468,8 @@ HitList::TransitiveScoring()
          else 
            {
              
-             double** Cinv = new(double*[M]);
-             for (m=0; m<M; m++) Cinv[m] = new(double[M]);
+             double** Cinv = new double*[M];
+             for (m=0; m<M; m++) Cinv[m] = new double[M];
 
              // Invert Csub
              InvertMatrix(Cinv,Csub,M);
@@ -1646,32 +1648,32 @@ HitList::TransitiveScoring2()
       index.Add(name,k);
     }
   // Read symmetric Z-scores matrix
-  Z = new(float*[N]);
+  Z = new float*[N];
   for (k=0; k<N; k++) 
     {
-      Z[k] = new(float[N]);
+      Z[k] = new float[N];
       for (l=0; l<k; l++) Z[k][l] = Z[l][k];
       unused = fread(Z[k]+k,sizeof(float),N-k,wfile);   
     }
   // Read symmetric covariance matrix
-  C = new(float*[N]);
+  C = new float*[N];
   for (k=0; k<N; k++) 
     {
-      C[k] = new(float[N]);
+      C[k] = new float[N];
       for (l=0; l<k; l++) C[k][l] = C[l][k];
       unused = fread(C[k]+k,sizeof(float),N-k,wfile);
     }
   fclose(wfile);
 
   // Allocate memory
-  Zq = new(float[N]);
-  Ztq = new(float[N]);
-  Zrq = new(float[N]);
-  fold = new(char*[N]);
-  fam = new(char*[N]);
-  Prob = new(float[N]);
-  ll = new(int[N]);
-  w = new(float[N]);
+  Zq   = new float[N];
+  Ztq  = new float[N];
+  Zrq  = new float[N];
+  fold = new char*[N];
+  fam  = new char*[N];
+  Prob = new float[N];
+  ll   = new int[N];
+  w    = new float[N];
 
   // Transform P-values to normally distributed Z-scores and store in Zq vector
   fprintf(stderr,"Transform P-values to Z-scores\n");
@@ -1735,12 +1737,12 @@ HitList::TransitiveScoring2()
   else
     {
       // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-      double** Csub = new(double*[M]);
-      double** Cinv = new(double*[M]);
+      double** Csub = new double*[M];
+      double** Cinv = new double*[M];
       for (m=0; m<M; m++) 
        {
-         Csub[m] = new(double[M]);
-         Cinv[m] = new(double[M]);
+         Csub[m] = new double[M];
+         Cinv[m] = new double[M];
          for (n=0; n<M; n++)
            Csub[m][n] = double(C[ll[m]][ll[n]]);
        }
@@ -1817,10 +1819,10 @@ HitList::TransitiveScoring2()
       else 
        {
          // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-         double** Csub = new(double*[M]);
+         double** Csub = new double*[M];
          for (m=0; m<M; m++) 
            {
-             Csub[m] = new(double[M]);
+             Csub[m] = new double[M];
              for (n=0; n<M; n++)
                Csub[m][n] = double(C[ll[m]][ll[n]]);
            }
@@ -1834,8 +1836,8 @@ HitList::TransitiveScoring2()
          else 
            {
              
-             double** Cinv = new(double*[M]);
-             for (m=0; m<M; m++) Cinv[m] = new(double[M]);
+             double** Cinv = new double*[M];
+             for (m=0; m<M; m++) Cinv[m] = new double[M];
 
 //           // Invert Csub
 //           InvertMatrix(Cinv,Csub,M);
@@ -2016,32 +2018,32 @@ HitList::TransitiveScoring3()
       index.Add(name,k);
     }
   // Read symmetric Z-scores matrix
-  Z = new(float*[N]);
+  Z = new float*[N];
   for (k=0; k<N; k++) 
     {
-      Z[k] = new(float[N]);
+      Z[k] = new float[N];
       for (l=0; l<k; l++) Z[k][l] = Z[l][k];
       unused = fread(Z[k]+k,sizeof(float),N-k,wfile);   
     }
   // Read symmetric covariance matrix
-  C = new(float*[N]);
+  C = new float*[N];
   for (k=0; k<N; k++) 
     {
-      C[k] = new(float[N]);
+      C[k] = new float[N];
       for (l=0; l<k; l++) C[k][l] = C[l][k];
       unused = fread(C[k]+k,sizeof(float),N-k,wfile);
     }
   fclose(wfile);
 
   // Allocate memory
-  Zq = new(float[N]);
-  Ztq = new(float[N]);
-  Zrq = new(float[N]);
-  fold = new(char*[N]);
-  fam = new(char*[N]);
-  Prob = new(float[N]);
-  ll = new(int[N]);
-  w = new(float[N]);
+  Zq   = new float[N];
+  Ztq  = new float[N];
+  Zrq  = new float[N];
+  fold = new char*[N];
+  fam  = new char*[N];
+  Prob = new float[N];
+  ll   = new int[N];
+  w    = new float[N];
 
   // Transform P-values to normally distributed Z-scores and store in Zq vector
   fprintf(stderr,"Transform P-values to Z-scores\n");
@@ -2110,12 +2112,12 @@ HitList::TransitiveScoring3()
       else
        {
          // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-         double** Csub = new(double*[M]);
-         double** Cinv = new(double*[M]);
+         double** Csub = new double*[M];
+         double** Cinv = new double*[M];
          for (m=0; m<M; m++) 
            {
-             Csub[m] = new(double[M]);
-             Cinv[m] = new(double[M]);
+             Csub[m] = new double[M];
+             Cinv[m] = new double[M];
              for (n=0; n<M; n++)
                Csub[m][n] = double(C[ll[m]][ll[n]]);
            }
@@ -2182,10 +2184,10 @@ HitList::TransitiveScoring3()
       else 
        {
          // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-         double** Csub = new(double*[M]);
+         double** Csub = new double*[M];
          for (m=0; m<M; m++) 
            {
-             Csub[m] = new(double[M]);
+             Csub[m] = new double[M];
              for (n=0; n<M; n++)
                Csub[m][n] = double(C[ll[m]][ll[n]]);
            }
@@ -2199,8 +2201,8 @@ HitList::TransitiveScoring3()
          else 
            {
              
-             double** Cinv = new(double*[M]);
-             for (m=0; m<M; m++) Cinv[m] = new(double[M]);
+             double** Cinv = new double*[M];
+             for (m=0; m<M; m++) Cinv[m] = new double[M];
 
              // Invert Csub
              InvertMatrix(Cinv,Csub,M); 
@@ -2381,32 +2383,32 @@ HitList::TransitiveScoring4()
       index.Add(name,k);
     }
   // Read symmetric Z-scores matrix
-  Z = new(float*[N]);
+  Z = new float*[N];
   for (k=0; k<N; k++) 
     {
-      Z[k] = new(float[N]);
+      Z[k] = new float[N];
       for (l=0; l<k; l++) Z[k][l] = Z[l][k];
       unused = fread(Z[k]+k,sizeof(float),N-k,wfile);   
     }
   // Read symmetric covariance matrix
-  C = new(float*[N]);
+  C = new float*[N];
   for (k=0; k<N; k++) 
     {
-      C[k] = new(float[N]);
+      C[k] = new float[N];
       for (l=0; l<k; l++) C[k][l] = C[l][k];
       unused = fread(C[k]+k,sizeof(float),N-k,wfile);
     }
   fclose(wfile);
 
   // Allocate memory
-  Zq = new(float[N]);
-  Ztq = new(float[N]);
-  Zrq = new(float[N]);
-  fold = new(char*[N]);
-  fam = new(char*[N]);
-  Prob = new(float[N]);
-  ll = new(int[N]);
-  w = new(float[N]);
+  Zq   = new float[N];
+  Ztq  = new float[N];
+  Zrq  = new float[N];
+  fold = new char*[N];
+  fam  = new char*[N];
+  Prob = new float[N];
+  ll   = new int[N];
+  w    = new float[N];
 
   // Transform P-values to normally distributed Z-scores and store in Zq vector
   fprintf(stderr,"Transform P-values to Z-scores\n");
@@ -2468,10 +2470,10 @@ HitList::TransitiveScoring4()
   else
     {
       // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-      double** Csub = new(double*[M]);
+      double** Csub = new double*[M];
       for (m=0; m<M; m++) 
        {
-         Csub[m] = new(double[M]);
+         Csub[m] = new double[M];
          for (n=0; n<M; n++)
            Csub[m][n] = double(C[ll[m]][ll[n]]);
        }
@@ -2534,10 +2536,10 @@ HitList::TransitiveScoring4()
       else 
        {
          // Generate submatrix of C for indices l for which Z_lq,Z_lk > Zmin_trans 
-         double** Csub = new(double*[M]);
+         double** Csub = new double*[M];
          for (m=0; m<M; m++) 
            {
-             Csub[m] = new(double[M]);
+             Csub[m] = new double[M];
              for (n=0; n<M; n++)
                Csub[m][n] = double(C[ll[m]][ll[n]]);
            }
@@ -2836,9 +2838,9 @@ HitList::InvertMatrix(double** B, double** A, int N)
     }
 
   int k,l,m;
-  double** V = new(double*[N]);
-  double* s  = new(double[N]);
-  for (k=0; k<N; k++) V[k] = new(double[N]);
+  double** V = new double*[N];
+  double* s  = new double[N];
+  for (k=0; k<N; k++) V[k] = new double[N];
 
   // Copy original matrix A into B since B will be overwritten by SVD()
   for (k=0; k<N; k++) 
@@ -2921,7 +2923,7 @@ HitList::SVD(double **A, int n, double w[], double **V)
   double pythag(double a, double b);
   int flag,i,its,j,jj,k,l=1,nm=1;
   double anorm,c,f,g,h,s,scale,x,y,z,*rv1;
-  rv1=new(double[n]);
+  rv1=new double[n];
   g=scale=anorm=0.0;    
   
   // Householder reduction to bidiagonal form.
@@ -3190,7 +3192,10 @@ HitList::ClobberGlobal(void){
   }
   //  printf("POINTER:\t\t\t%p=TAIL\n", tail);
 
-
+  if ( (NULL != current) && (head != current) ){
+      delete current;  /* this seems to be the long lost piece of memory, FS, 2016-04-15 */ 
+      current = NULL;
+  }
   head->next = tail;
   tail->prev = head;
   size = 0;