]> git.donarmstrong.com Git - rsem.git/blobdiff - parseIt.cpp
Added error detection for cases such as a read's two mates having different names...
[rsem.git] / parseIt.cpp
index c760c79f879775450e4677951d3ee25774a7ffcc..f40f82295302c48b16923d6655f3757d4057e09b 100644 (file)
@@ -33,7 +33,6 @@ HIT_INT_TYPE nHits; // # of hits
 READ_INT_TYPE nUnique, nMulti, nIsoMulti;
 char fn_list[STRLEN];
 char groupF[STRLEN], tiF[STRLEN];
-char imdName[STRLEN];
 char datF[STRLEN], cntF[STRLEN];
 
 GroupInfo gi;
@@ -53,7 +52,7 @@ void init(const char* imdName, char alignFType, const char* alignF) {
 
        char* aux = 0;
        if (strcmp(fn_list, "")) aux = fn_list;
-       parser = new SamParser(alignFType, alignF, transcripts, aux);
+       parser = new SamParser(alignFType, alignF, aux, transcripts, imdName);
 
        memset(cat, 0, sizeof(cat));
        memset(readOutFs, 0, sizeof(readOutFs));
@@ -95,6 +94,9 @@ void parseIt(SamParser *parser) {
                                record_read.write(n_os, cat[record_val]);
                                ++N[record_val];
                        }
+
+                       general_assert(record_val == 1 || hits.getNHits() == 0, "Read " + record_read.getName() + " is both unalignable and alignable according to the input SAM/BAM file!");
+
                        // flush out previous read's hits if the read is alignable reads
                        if (record_val == 1) {
                                hits.updateRI();
@@ -167,7 +169,7 @@ int main(int argc, char* argv[]) {
        bool quiet = false;
 
        if (argc < 6) {
-               printf("Usage : rsem-parse-alignments refName sampleName sampleToken alignFType('s' for sam, 'b' for bam) alignF [-t Type] [-l fn_list] [-tag tagName] [-q]\n");
+               printf("Usage : rsem-parse-alignments refName imdName statName alignFType('s' for sam, 'b' for bam) alignF [-t Type] [-l fn_list] [-tag tagName] [-q]\n");
                exit(-1);
        }
 
@@ -195,11 +197,10 @@ int main(int argc, char* argv[]) {
        sprintf(tiF, "%s.ti", argv[1]);
        transcripts.readFrom(tiF);
 
-       sprintf(imdName, "%s.temp/%s", argv[2], argv[3]);
-       sprintf(datF, "%s.dat", imdName);
-       sprintf(cntF, "%s.stat/%s.cnt", argv[2], argv[3]);
+       sprintf(datF, "%s.dat", argv[2]);
+       sprintf(cntF, "%s.cnt", argv[3]);
 
-       init(imdName, argv[4][0], argv[5]);
+       init(argv[2], argv[4][0], argv[5]);
 
        hit_out.open(datF);