- if (sam_in == 0) { fprintf(stderr, "Cannot open %s! It may not exist.\n", inpF); exit(-1); }
- header = sam_in->header;
- if (header == 0) { fprintf(stderr, "Fail to parse sam header!\n"); exit(-1); }
-
- // Check if the reference used for aligner is the transcript set RSEM generated
- if (transcripts.getM() != header->n_targets) {
- fprintf(stderr, "Number of transcripts does not match! Please align reads against the transcript set and use RSEM generated reference for your aligner!\n");
- exit(-1);
- }
- for (int i = 0; i < header->n_targets; i++) {
- const Transcript& transcript = transcripts.getTranscriptAt(i + 1);
- // If update int to long, chance the (int) conversion
- if (transcript.getTranscriptID().compare(header->target_name[i]) != 0 || transcript.getLength() != (int)header->target_len[i]) {
- fprintf(stderr, "Transcript information does not match! Please align reads against the transcript set and use RSEM generated reference for your aligner!\n");
- exit(-1);
- }
- }
-
- b = bam_init1();
- b2 = bam_init1();
+ general_assert(sam_in != 0, "Cannot open " + cstrtos(inpF) + "! It may not exist.");
+ header = sam_in->header;
+ general_assert(header != 0, "Fail to parse sam header!");
+
+ transcripts.buildMappings(header->n_targets, header->target_name);
+
+ b = bam_init1();
+ b2 = bam_init1();