X-Git-Url: https://git.donarmstrong.com/?p=rsem.git;a=blobdiff_plain;f=SamParser.h;h=81d4097cf0033dee55d012abeaf8ea106120b9d9;hp=513536f2a2107e181a0393946a00e9fa77c35416;hb=92b24279a3ecc72946e7e7c23149ad0d181f373a;hpb=fb2aa1ca9d00710943155ef3abbbdd87df116e4a diff --git a/SamParser.h b/SamParser.h index 513536f..81d4097 100644 --- a/SamParser.h +++ b/SamParser.h @@ -25,7 +25,7 @@ class SamParser { public: - SamParser(char, const char*, Transcripts&, const char* = 0); + SamParser(char, const char*, const char*, Transcripts&, const char*); ~SamParser(); /** @@ -80,7 +80,7 @@ private: char SamParser::rtTag[STRLEN] = ""; // default : no tag, thus no Type 2 reads // aux, if not 0, points to the file name of fn_list -SamParser::SamParser(char inpType, const char* inpF, Transcripts& transcripts, const char* aux) +SamParser::SamParser(char inpType, const char* inpF, const char* aux, Transcripts& transcripts, const char* imdName) : transcripts(transcripts) { switch(inpType) { @@ -93,7 +93,7 @@ SamParser::SamParser(char inpType, const char* inpF, Transcripts& transcripts, c header = sam_in->header; general_assert(header != 0, "Fail to parse sam header!"); - transcripts.buildMappings(header->n_targets, header->target_name); + transcripts.buildMappings(header->n_targets, header->target_name, imdName); b = bam_init1(); b2 = bam_init1(); @@ -341,10 +341,17 @@ inline int SamParser::getReadType(const bam1_t* b) { return (bam_aux2i(p) > 0 ? 2 : 0); } - //For paired-end reads, do not print out type 2 reads inline int SamParser::getReadType(const bam1_t* b, const bam1_t* b2) { - if ((b->core.flag & 0x0002) && (b2->core.flag & 0x0002)) return 1; + if (!(b->core.flag & 0x0004) && !(b2->core.flag & 0x0004)) return 1; + + if (!strcmp(rtTag, "")) return 0; + + uint8_t *p = bam_aux_get(b, rtTag); + if (p != NULL && bam_aux2i(p) > 0) return 2; + + p = bam_aux_get(b2, rtTag); + if (p != NULL && bam_aux2i(p) > 0) return 2; return 0; }