23 if (unaligned || arr.size() == 0) return;
24 bool isPaired = (arr[0]->core.flag & 0x0001);
25 if ((isPaired && arr.size() != 2) || (!isPaired && arr.size() != 1)) return;
26 for (size_t i = 0; i < arr.size(); i++) samwrite(out, arr[i]);
29 int main(int argc, char* argv[]) {
31 printf("Usage: rsem-get-unique unsorted_transcript_bam_input bam_output\n");
35 in = samopen(argv[1], "rb", NULL);
37 out = samopen(argv[2], "wb", in->header);
47 while (samread(in, b) >= 0) {
48 if (cqname != bam1_qname(b)) {
50 cqname = bam1_qname(b);
51 for (size_t i = 0; i < arr.size(); i++) bam_destroy1(arr[i]);
56 unaligned = unaligned || (b->core.flag & 0x0004);
57 arr.push_back(bam_dup1(b));
60 if (cnt % 1000000 == 0) { printf("."); fflush(stdout); }
63 if (cnt >= 1000000) printf("\n");