|
|
@@ -380,7 +380,7 @@ pub struct Sam {
|
|
|
impl Sam {
|
|
|
pub fn new(query_name: String, flag: i32, ref_name: String, ref_pos: i64, cigar: String, sequence: String, fa: &Fasta) -> Self {
|
|
|
let mut sequence = sequence;
|
|
|
- let (mut ref_range, query_range, ref_cigar) = matched_range(&cigar, &flag, &mut sequence);
|
|
|
+ let (mut ref_range, mut query_range, ref_cigar) = matched_range(&cigar, &flag, &mut sequence);
|
|
|
|
|
|
// sam is 1-based
|
|
|
// the range frames the sequence
|
|
|
@@ -391,7 +391,8 @@ impl Sam {
|
|
|
if is_reverse(flag) {
|
|
|
let len = ref_range.len();
|
|
|
ref_range.end = (ref_pos as usize) - 1;
|
|
|
- ref_range.start = ref_pos as usize + len;
|
|
|
+ ref_range.start = ref_pos as usize + len - 1;
|
|
|
+ query_range.end = query_range.end + 1;
|
|
|
} else {
|
|
|
let len = ref_range.len();
|
|
|
ref_range.start = ref_pos as usize;
|