Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / probcons / ProjectPairwise.cc
diff --git a/website/archive/binaries/mac/src/probcons/ProjectPairwise.cc b/website/archive/binaries/mac/src/probcons/ProjectPairwise.cc
new file mode 100644 (file)
index 0000000..4696ba1
--- /dev/null
@@ -0,0 +1,71 @@
+/////////////////////////////////////////////////////////////////
+// ProjectPairwise
+//
+// Program for projecting multiple alignments to all pairwise
+// alignments.
+/////////////////////////////////////////////////////////////////
+
+#include "SafeVector.h"
+#include "MultiSequence.h"
+#include <string>
+#include <sstream>
+#include <iomanip>
+#include <iostream>
+#include <list>
+#include <set>
+#include <limits>
+#include <cstdio>
+#include <cstdlib>
+#include <cerrno>
+#include <iomanip>
+
+bool compressGaps = true;
+
+/////////////////////////////////////////////////////////////////
+// main()
+//
+// Main program.
+/////////////////////////////////////////////////////////////////
+
+int main (int argc, char **argv){
+
+  // check arguments
+  if (argc < 2){
+    cerr << "Usage: project ALIGNMENT [-nocompressgaps]" << endl;
+    exit (1);
+  }
+
+  for (int i = 2; i < argc; i++){
+    if (strcmp (argv[i], "-nocompressgaps") == 0)
+      compressGaps = false;
+    else {
+      cerr << "Unrecognized option: " << argv[i] << endl;
+      exit (1);
+    }
+  }
+
+  MultiSequence *align = new MultiSequence (string (argv[1])); assert (align);
+
+  int N = align->GetNumSequences();
+  for (int i = 0; i < N; i++){
+    for (int j = i+1; j < N; j++){
+      string name = align->GetSequence(i)->GetHeader() + "-" + align->GetSequence(j)->GetHeader() + ".fasta";
+      ofstream outfile (name.c_str());
+
+      if (compressGaps){
+       set<int> s;
+       s.insert (i); s.insert (j);
+       MultiSequence *proj = align->Project (s);
+       proj->WriteMFA (outfile);
+       delete proj;
+      }
+      else {
+       align->GetSequence(i)->WriteMFA (outfile, 60);
+       align->GetSequence(j)->WriteMFA (outfile, 60);
+      }
+      outfile.close();
+    }
+  }
+
+  delete align;
+}