21 if (unaligned || arr.size() == 0) return;
22 bool isPaired = (arr[0]->core.flag & 0x0001);
23 if ((isPaired && arr.size() != 2) || (!isPaired && arr.size() != 1)) return;
24 for (int i = 0; i < (int)arr.size(); i++) samwrite(out, arr[i]);
27 int main(int argc, char* argv[]) {
29 printf("Usage: rsem-get-unique unsorted_transcript_bam_input bam_output\n");
33 in = samopen(argv[1], "rb", NULL);
35 out = samopen(argv[2], "wb", in->header);
45 while (samread(in, b) >= 0) {
46 if (cqname != bam1_qname(b)) {
48 cqname = bam1_qname(b);
49 for (int i = 0; i < (int)arr.size(); i++) bam_destroy1(arr[i]);
54 unaligned = unaligned || (b->core.flag & 0x0004);
55 arr.push_back(bam_dup1(b));
58 if (cnt % 1000000 == 0) { printf("."); fflush(stdout); }
61 if (cnt >= 1000000) printf("\n");