bool isMateInsertionEvidenceCandidate( const bam_record& bamRead, const unsigned minMapq) { if (! bamRead.is_paired()) return false; if (bamRead.isNonStrictSupplement()) return false; if (bamRead.is_unmapped() || bamRead.is_mate_unmapped()) return false; if (bamRead.map_qual() < minMapq) return false; if (bamRead.target_id() < 0) return false; if (bamRead.mate_target_id() < 0) return false; if (bamRead.target_id() != bamRead.mate_target_id()) return true; /// TODO: better candidate definition based on fragment size distro: static const int minSize(10000); return (std::abs(bamRead.pos()-bamRead.mate_pos()) >= minSize); }
FragmentSizeType::index_t SVLocusScanner:: _getFragmentSizeType( const bam_record& bamRead, const unsigned defaultReadGroupIndex) const { using namespace FragmentSizeType; if (bamRead.target_id() != bamRead.mate_target_id()) return DISTANT; const int32_t fragmentSize(std::abs(bamRead.template_size())); return classifySize(_stats[defaultReadGroupIndex], fragmentSize); }