@@ -420,22 +420,21 @@ unsigned int remove_malformed_alignments(chimeric_alignments_t& chimeric_alignme
420420 chimeric_alignment->second [SPLIT_READ].supplementary = false ;
421421
422422 // set strands like they would be set if we had paired-end data
423+ bool flip_mate1_strand;
423424 if (chimeric_alignment->second [SPLIT_READ].sequence .length () - chimeric_alignment->second [SPLIT_READ].preclipping () - ((chimeric_alignment->second [SPLIT_READ].strand == chimeric_alignment->second [SUPPLEMENTARY].strand ) ? chimeric_alignment->second [SUPPLEMENTARY].postclipping () : chimeric_alignment->second [SUPPLEMENTARY].preclipping ()) <
424425 chimeric_alignment->second [SPLIT_READ].sequence .length () - chimeric_alignment->second [SPLIT_READ].postclipping () - ((chimeric_alignment->second [SPLIT_READ].strand == chimeric_alignment->second [SUPPLEMENTARY].strand ) ? chimeric_alignment->second [SUPPLEMENTARY].preclipping () : chimeric_alignment->second [SUPPLEMENTARY].postclipping ())) {
425- if (chimeric_alignment->second [SPLIT_READ].strand == FORWARD) {
426- chimeric_alignment->second [MATE1].strand = complement_strand (chimeric_alignment->second [MATE1].strand );
427- } else {
428- chimeric_alignment->second [SPLIT_READ].strand = complement_strand (chimeric_alignment->second [SPLIT_READ].strand );
429- chimeric_alignment->second [SUPPLEMENTARY].strand = complement_strand (chimeric_alignment->second [SUPPLEMENTARY].strand );
430- }
426+ flip_mate1_strand = chimeric_alignment->second [SPLIT_READ].strand == FORWARD;
431427 } else {
432- if (chimeric_alignment->second [SPLIT_READ].strand == REVERSE) {
433- chimeric_alignment->second [MATE1].strand = complement_strand (chimeric_alignment->second [MATE1].strand );
434- } else {
435- chimeric_alignment->second [SPLIT_READ].strand = complement_strand (chimeric_alignment->second [SPLIT_READ].strand );
436- chimeric_alignment->second [SUPPLEMENTARY].strand = complement_strand (chimeric_alignment->second [SUPPLEMENTARY].strand );
437- }
428+ flip_mate1_strand = chimeric_alignment->second [SPLIT_READ].strand == REVERSE;
438429 }
430+ chimeric_alignment->second [MATE1].strand = complement_strand_if (chimeric_alignment->second [MATE1].strand , flip_mate1_strand);
431+ chimeric_alignment->second [SPLIT_READ].strand = complement_strand_if (chimeric_alignment->second [SPLIT_READ].strand , !flip_mate1_strand);
432+ chimeric_alignment->second [SUPPLEMENTARY].strand = complement_strand_if (chimeric_alignment->second [SUPPLEMENTARY].strand , !flip_mate1_strand);
433+
434+ // set first-in-pair flag like it would be set if we had paired-end data
435+ chimeric_alignment->second [MATE1].first_in_pair = !flip_mate1_strand;
436+ chimeric_alignment->second [SPLIT_READ].first_in_pair = flip_mate1_strand;
437+ chimeric_alignment->second [SUPPLEMENTARY].first_in_pair = flip_mate1_strand;
439438
440439 // if possible, try to fix overlapping segments between split read and supplementary
441440 if (!disjoin_split_read_segments (chimeric_alignment->second [SPLIT_READ], chimeric_alignment->second [SUPPLEMENTARY]))
0 commit comments