///////////////////////////////////////////////////////////////// // ProjectPairwise // // Program for projecting multiple alignments to all pairwise // alignments. ///////////////////////////////////////////////////////////////// #include "SafeVector.h" #include "MultiSequence.h" #include #include #include #include #include #include #include #include #include #include #include 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 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; }