Commit 2e291b19 authored by mourisl's avatar mourisl Committed by Li Song
Browse files

Fix a serious issue of comparing SAM mapping record that causes paired-end dedup errors

parent 06aacab5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@
#include "temp_mapping.h"
#include "utils.h"

#define CHROMAP_VERSION "0.3.0-r509"
#define CHROMAP_VERSION "0.3.1-r510"

namespace chromap {

+6 −5
Original line number Diff line number Diff line
@@ -201,13 +201,14 @@ class SAMMapping : public Mapping {
  bool operator<(const SAMMapping &m) const {
    int read1_flag = flag_ & BAM_FREAD1;
    int m_read1_flag = m.flag_ & BAM_FREAD1;
    return std::tie(rid_, pos_, cell_barcode_, mapq_, mrid_, mpos_, read_id_, read1_flag) <
           std::tie(m.rid_, m.pos_, m.cell_barcode_, m.mapq_, m.mrid_, m.mpos_, m.read_id_,
                    m_read1_flag);
    return std::tie(rid_, pos_, cell_barcode_, mrid_, mpos_, read1_flag, mapq_, read_id_) <
           std::tie(m.rid_, m.pos_, m.cell_barcode_, m.mrid_, m.mpos_, m_read1_flag, m.mapq_, m.read_id_);
  }
  bool operator==(const SAMMapping &m) const {
    return std::tie(pos_, rid_, cell_barcode_, is_rev_, mrid_, mpos_) ==
           std::tie(m.pos_, m.rid_, m.cell_barcode_, m.is_rev_, m.mrid_, m.mpos_);
    int read1_flag = flag_ & BAM_FREAD1;
    int m_read1_flag = m.flag_ & BAM_FREAD1;
    return std::tie(pos_, rid_, cell_barcode_, read1_flag, mrid_, mpos_) ==
           std::tie(m.pos_, m.rid_, m.cell_barcode_, m_read1_flag, m.mrid_, m.mpos_);
  }
  bool IsSamePosition(const SAMMapping &m) const {
    return std::tie(pos_, rid_, is_rev_, mrid_, mpos_) ==