void DindelUtil::doMultipleReadHaplotypeAlignment(const std::vector<DindelRead> & dReads, const StringVector & haplotypes) { // globally align haplotypes to the first haplotype (arbitrary) assert(haplotypes.size()>0); for (size_t h = 0; h < haplotypes.size(); ++h) { std::cout << "ALIGNING EVERYTHING AGAINST HAPLOTYPE " << h << "\n"; MultipleAlignment ma; const std::string rootSequence = haplotypes[h]; ma.addBaseSequence("root", rootSequence, ""); std::string hid; for(size_t j = 0; j < haplotypes.size(); j++) { std::stringstream ss; if (j!=h) ss << "haplotype-" << j; else ss << "HAPLOTYPE-" << j; SequenceOverlap o = Overlapper::computeOverlap(rootSequence, haplotypes[j]); ma.addOverlap(ss.str(), haplotypes[j], "", o); } for(size_t r = 0; r < dReads.size(); ++r) { std::stringstream ss; if (r<dReads.size()/2) ss << "read-" << r << "(" << dReads[r].getID() << ")"; else ss << "MATE read-" << r; SequenceOverlap o = Overlapper::computeOverlap(rootSequence, dReads[r].getSequence()); ma.addOverlap(ss.str(), dReads[r].getSequence(), "", o); } ma.print(100000); } }