]> git.donarmstrong.com Git - ape.git/blobdiff - src/me.c
various updates + adding SPR+TBR in fastme.bal()
[ape.git] / src / me.c
index 69d1cb210bb5d17c3a69c928870457e4032e9098..21a23968364c3dca6ecacdfd6888e6ca63cfae74 100644 (file)
--- a/src/me.c
+++ b/src/me.c
@@ -20,9 +20,14 @@ void makeOLSAveragesTable(tree *T, double **D, double **A);
 void bNNI(tree *T, double **avgDistArray, int *count, double **D, int numSpecies);
 //functions from NNI.c
 void NNI(tree *T, double **avgDistArray, int *count, double **D, int numSpecies);
+//functions from SPR.c
+void SPR(tree *T, double **D, double **A, int *count);
+//functions from TBR.c
+void TBR(tree *T, double **D, double **A);
 
 
-void me_b(double *X, int *N, char **labels, int *nni,
+void me_b(double *X, int *N, char **labels,
+         int *nni, int *spr, int *tbr,
          int *edge1, int *edge2, double *el, char **tl)
 {
   double **D, **A;
@@ -46,10 +51,12 @@ void me_b(double *X, int *N, char **labels, int *nni,
     T = BMEaddSpecies(T, addNode, D, A);
   }
   // Compute bNNI
-  if (*nni == 1)
-    bNNI(T, A, &nniCount, D, n);
+  if (*nni) bNNI(T, A, &nniCount, D, n);
   assignBMEWeights(T,A);
 
+  if (*spr) SPR(T, D, A, &nniCount);
+  if (*tbr) TBR(T, D, A);
+
   tree2phylo(T, edge1, edge2, el, tl, n);
 
   freeMatrix(D,n);
@@ -85,7 +92,7 @@ void me_o(double *X, int *N, char **labels, int *nni,
   }
   makeOLSAveragesTable(T,D,A);
   // Compute NNI
-  if (*nni == 1)
+  if (*nni)
     NNI(T,A,&nniCount,D,n);
   assignOLSWeights(T,A);