4 * Created on: Jul 31, 2009
10 #include <seqan/sequence.h>
15 using namespace seqan;
18 * Report up to 'khits' hits from this HitSet.
20 void HitSet::reportUpTo(ostream& os, int khits) {
21 khits = min(khits, (int)size());
24 for(int i = 0; i < khits; i++) {
25 const HitSetEnt& h = ents[i];
26 if(!h.fw && seqan::empty(seqrc)) {
27 // Lazily initialize seqrc and qualr
29 reverseComplementInPlace(seqrc, color);
30 assert_eq(seqan::length(seqrc), seqan::length(seq));
32 reverseInPlace(qualr);
33 assert_eq(seqan::length(qualr), seqan::length(qual));
36 << (h.fw ? '+' : '-') << '\t'
39 << (h.fw ? seq : seqrc) << '\t'
40 << (h.fw ? qual : qualr) << '\t'
42 for(size_t i = 0; i < h.edits.size(); i++) {
43 const Edit& e = h.edits[i];
45 if(e.type == EDIT_TYPE_SNP) os << "S";
46 os << ":" << (char)e.chr << ">" << (e.qchr != 0 ? (char)e.qchr : (char)seq[e.pos]);
47 if(i < h.edits.size()-1 || !h.cedits.empty()) os << ",";
49 for(size_t i = 0; i < h.cedits.size(); i++) {
50 const Edit& e = h.cedits[i];
52 if(e.type == EDIT_TYPE_SNP) os << "S";
53 os << ":" << (char)e.chr << ">" << (e.qchr != 0 ? (char)e.qchr : (char)seq[e.pos]);
54 if(i < h.cedits.size()-1) os << ",";
60 ostream& operator << (ostream& os, const HitSetEnt& hs) {
61 os << "\t" << hs.h.first << ":" << hs.h.second;
65 ostream& operator << (ostream& os, const HitSet& hs) {
66 os << hs.name << ":" << hs.seq << ":" << hs.qual << endl;
67 vector<HitSetEnt>::const_iterator it;
68 for(it = hs.ents.begin(); it != hs.ents.end(); it++) {