(
const string& bam_file_name);
78 typedefvector<SBamHeaderRefInfo>
TRefs;
89 size_tGetRefIndex(
const string& name)
const;
92 returnm_Refs[index].m_Name;
96 returnm_Refs[index].m_Length;
150 #define BAM_SUPPORT_CSI 154 #ifdef BAM_SUPPORT_CSI 171 static const bool is_CSI=
false;
233constexpr
intkAllowedLevels = 10;
234constexpr
unsignedkBaseBits =
306 if( bin >= bin_start ) {
347 const char*
Read(
const char* buffer_ptr,
const char* buffer_end,
356 #ifdef BAM_SUPPORT_CSI 363 returnm_Chunks.front().first;
367 returnm_Chunks.back().second;
376 returnb1.
m_Bin< b2;
380 returnb1 < b2.
m_Bin;
386 const char*
Read(
const char* buffer_ptr,
const char* buffer_end,
399vector<uint64_t> CollectEstimatedCoverage(
TIndexLevelmin_index_level,
404 returnCollectEstimatedCoverage(ToIndexLevel(min_index_level),
405ToIndexLevel(max_index_level));
411vector<TSeqPos> GetAlnOverStarts(
void)
const;
414vector<TSeqPos> GetAlnOverEnds(
void)
const;
417 typedefvector<SBamIndexBinInfo>
TBins;
419pair<TBinsIter, TBinsIter> GetLevelBins(
TIndexLevellevel)
const;
422 returnGetLevelBins(ToIndexLevel(level));
427pair<TBinsIter, TBinsIter> AddLevelFileRanges(vector<CBGZFRange>& ranges,
429pair<TBin, TBin> bin_range)
const;
430pair<TBinsIter, TBinsIter> GetBinsIterRange(pair<TBin, TBin> bin_range)
const;
432 voidSetLengthFromHeader(
TSeqPoslength);
451 CBamIndex(
const string& index_file_name);
459 void Read(
const string& index_file_name);
460 void Read(
const char* buffer_ptr,
size_tbuffer_size);
463 typedefvector<SBamIndexRefIndex>
TRefs;
470 returnm_Refs.size();
473 voidSetLengthFromHeader(
const CBamHeader& header);
475 CBGZFRangeGetTotalFileRange(
size_tref_index)
const;
478MakeEstimatedCoverageAnnot(
const CBamHeader& header,
479 const string& ref_name,
480 const string& seq_id,
481 const string& annot_name,
482TIndexLevel min_index_level,
483TIndexLevel max_index_level)
const;
486 const string& ref_name,
487 const string& seq_id,
488 const string& annot_name,
492 returnMakeEstimatedCoverageAnnot(header, ref_name, seq_id, annot_name,
493ToIndexLevel(min_index_level),
494ToIndexLevel(max_index_level));
498 const string& ref_name,
499 const string& seq_id,
500 const string& annot_name,
503 returnMakeEstimatedCoverageAnnot(header, ref_name, seq_id, annot_name,
504min_index_level, GetMaxIndexLevel());
508 const string& ref_name,
509 const string& seq_id,
510 const string& annot_name,
513 returnMakeEstimatedCoverageAnnot(header, ref_name, seq_id, annot_name,
514ToIndexLevel(min_index_level));
517MakeEstimatedCoverageAnnot(
const CBamHeader& header,
518 const string& ref_name,
520 const string& annot_name,
521TIndexLevel min_index_level,
522TIndexLevel max_index_level)
const;
525 const string& ref_name,
527 const string& annot_name,
531 returnMakeEstimatedCoverageAnnot(header, ref_name, seq_id, annot_name,
532ToIndexLevel(min_index_level),
533ToIndexLevel(max_index_level));
537 const string& ref_name,
539 const string& annot_name,
542 returnMakeEstimatedCoverageAnnot(header, ref_name, seq_id, annot_name,
543min_index_level, GetMaxIndexLevel());
547 const string& ref_name,
549 const string& annot_name,
552 returnMakeEstimatedCoverageAnnot(header, ref_name, seq_id, annot_name,
553ToIndexLevel(min_index_level));
558MakeEstimatedCoverageAnnot(
size_tref_index,
559 const string& seq_id,
560 const string& annot_name,
561TIndexLevel min_index_level,
562TIndexLevel max_index_level)
const;
565 const string& seq_id,
566 const string& annot_name,
570 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name,
571ToIndexLevel(min_index_level),
572ToIndexLevel(max_index_level));
576 const string& seq_id,
577 const string& annot_name,
580 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name,
581min_index_level, GetMaxIndexLevel());
585 const string& seq_id,
586 const string& annot_name,
589 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name,
590ToIndexLevel(min_index_level));
593MakeEstimatedCoverageAnnot(
size_tref_index,
595 const string& annot_name,
596TIndexLevel min_index_level,
597TIndexLevel max_index_level)
const;
601 const string& annot_name,
605 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name,
606ToIndexLevel(min_index_level),
607ToIndexLevel(max_index_level));
612 const string& annot_name,
615 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name,
616min_index_level, GetMaxIndexLevel());
621 const string& annot_name,
624 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name,
625ToIndexLevel(min_index_level));
629MakeEstimatedCoverageAnnot(
size_tref_index,
630 const string& seq_id,
631 const string& annot_name,
633TIndexLevel min_index_level,
634TIndexLevel max_index_level)
const;
637 const string& seq_id,
638 const string& annot_name,
643 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name, ref_length,
644ToIndexLevel(min_index_level),
645ToIndexLevel(max_index_level));
649 const string& seq_id,
650 const string& annot_name,
654 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name, ref_length,
655min_index_level, GetMaxIndexLevel());
659 const string& seq_id,
660 const string& annot_name,
664 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name, ref_length,
665ToIndexLevel(min_index_level));
668MakeEstimatedCoverageAnnot(
size_tref_index,
670 const string& annot_name,
672TIndexLevel min_index_level,
673TIndexLevel max_index_level)
const;
677 const string& annot_name,
682 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name, ref_length,
683ToIndexLevel(min_index_level),
684ToIndexLevel(max_index_level));
689 const string& annot_name,
693 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name, ref_length,
694min_index_level, GetMaxIndexLevel());
699 const string& annot_name,
703 returnMakeEstimatedCoverageAnnot(ref_index, seq_id, annot_name, ref_length,
704ToIndexLevel(min_index_level));
710CollectEstimatedCoverage(
size_tref_index,
711TIndexLevel min_index_level,
712TIndexLevel max_index_level)
const;
718 returnCollectEstimatedCoverage(ref_index,
719ToIndexLevel(min_index_level),
720ToIndexLevel(max_index_level));
728 returnCollectEstimatedCoverage(ref_index, index_level, index_level);
734 returnCollectEstimatedCoverage(ref_index, ToIndexLevel(index_level));
741 returnCollectEstimatedCoverage(ref_index, 0, GetMaxIndexLevel());
748 returnGetRef(ref_index).EstimateDataSizeByAlnStartPos();
753 returnmake_pair(m_TotalReadBytes, m_TotalReadSeconds);
765 template<
classPosition>
772 typedefpair<position_type, position_type>
TRange;
796 if( !(range.first < range.second) ) {
809!((iter =
prev(
next))->second < range.first) ) {
812 if( !(iter->second < range.second) ) {
827!(range.first < iter->first) &&
828!(range.second < iter->second));
833!(range.second <
next->first) ) {
834 if( range.second <
next->second ) {
837range.second =
next->second;
843iter->second = range.second;
878 const CBGZFPos* file_pos =
nullptr);
882 const CBGZFPos* file_pos =
nullptr);
887 const CBGZFPos* file_pos =
nullptr);
892 const CBGZFPos* file_pos =
nullptr)
894SetRanges(index, ref_index, ref_range, index.
ToIndexLevel(index_level), search_mode, file_pos);
898TIndexLevel index_level,
899ESearchMode search_mode = eSearchByOverlap,
900 const CBGZFPos* file_pos =
nullptr);
905 const CBGZFPos* file_pos =
nullptr)
907AddRanges(index, ref_index, ref_range, index.
ToIndexLevel(index_level), search_mode, file_pos);
911TIndexLevel min_index_level, TIndexLevel max_index_level,
912ESearchMode search_mode = eSearchByOverlap,
913 const CBGZFPos* file_pos =
nullptr);
918 const CBGZFPos* file_pos =
nullptr)
920SetRanges(index, ref_index, ref_range,
923search_mode, file_pos);
927TIndexLevel min_index_level, TIndexLevel max_index_level,
928ESearchMode search_mode = eSearchByOverlap,
929 const CBGZFPos* file_pos =
nullptr);
934 const CBGZFPos* file_pos =
nullptr)
936AddRanges(index, ref_index, ref_range,
939search_mode, file_pos);
957AddFrom(header, file_pos);
969 returnm_Ranges.begin();
973 returnm_Ranges.end();
977 Uint8GetFileSize()
const;
980 voidAddSortedRanges(
constvector<CBGZFRange>& ranges,
981 const CBGZFPos* file_pos =
nullptr);
999 CBamRawDb(
const string& bam_path,
const string& index_path)
1001Open(bam_path, index_path);
1006 voidOpen(
const string& bam_path);
1007 voidOpen(
const string& bam_path,
const string& index_path);
1020 returnm_Index.GetFileName();
1028 return GetHeader().GetRefIndex(ref_label);
1032 return GetHeader().GetRefName(ref_index);
1036 return GetHeader().GetRefLength(ref_index);
1047 size_tref_index = GetRefIndex(ref_label);
1048 returnGetIndex().GetRef(ref_index).EstimateDataSizeByAlnStartPos(GetRefSeqLength(ref_index));
1051 doubleGetEstimatedSecondsPerByte()
const;
1150 returnm_RecordSize;
1158 returnget_record_ptr() + get_record_size();
1172 returnget_record_ptr()[8];
1176 returnget_record_ptr()[9];
1182 static const charkCIGARSymbols[];
1199fAlign_WasPaired = 1 << 0,
1200fAlign_IsMappedAsPair = 1 << 1,
1201fAlign_SelfIsUnmapped = 1 << 2,
1202fAlign_MateIsUnmapped = 1 << 3,
1203fAlign_SelfIsReverse = 1 << 4,
1204fAlign_MateIsReverse = 1 << 5,
1205fAlign_IsFirst = 1 << 6,
1206fAlign_IsSecond = 1 << 7,
1207fAlign_IsNotPrimary = 1 << 8,
1208fAlign_IsLowQuality = 1 << 9,
1209fAlign_IsDuplicate = 1 << 10,
1210fAlign_IsSupplementary = 1 << 11
1234 returnget_record_ptr()+32;
1242 returnget_read_name_end();
1254 size_t count= get_cigar_ops_count();
1255raw_cigar.resize(
count);
1258 for(
size_t i= 0;
i<
count; ++
i) {
1265 returnget_cigar_end();
1269 returnget_read_ptr() + (get_read_len()+1)/2;
1273 returnget_read_end();
1277 returnget_phred_quality_ptr() + get_read_len();
1281 returnget_phred_quality_end();
1285 returnget_record_end();
1290 return CTempString(get_read_ptr(), (get_read_len()+1)/2);
1292 static const charkBaseSymbols[];
1293 stringget_read()
const;
1296 uint32_tget_cigar_ref_size()
const;
1297 uint32_tget_cigar_read_size()
const;
1299 stringget_cigar()
const;
1300 boolhas_ambiguous_match()
const;
1302 SBamAuxDataget_aux_data(
charc1,
charc2,
boolallow_missing =
false)
const;
1318: m_CurrentRangeEnd(0)
1323 const CBGZFPos* file_pos =
nullptr)
1324: m_Reader(bam_db.GetFile())
1326Select(bam_db, file_pos);
1329: m_Reader(bam_db.GetFile())
1331Select(bam_db, &file_pos);
1334 const string& ref_label,
1337 const CBGZFPos* file_pos =
nullptr)
1338: m_Reader(bam_db.GetFile())
1340Select(bam_db, ref_label, ref_range, search_mode, file_pos);
1343 const string& ref_label,
1347 const CBGZFPos* file_pos =
nullptr)
1348: m_Reader(bam_db.GetFile())
1350Select(bam_db, ref_label, ref_range, index_level, search_mode, file_pos);
1353 const string& ref_label,
1357 const CBGZFPos* file_pos =
nullptr)
1358: m_Reader(bam_db.GetFile())
1360Select(bam_db, ref_label, ref_range, index_level, search_mode, file_pos);
1363 const string& ref_label,
1368 const CBGZFPos* file_pos =
nullptr)
1369: m_Reader(bam_db.GetFile())
1371Select(bam_db, ref_label, ref_range, min_index_level, max_index_level, search_mode, file_pos);
1374 const string& ref_label,
1379 const CBGZFPos* file_pos =
nullptr)
1380: m_Reader(bam_db.GetFile())
1382Select(bam_db, ref_label, ref_range, min_index_level, max_index_level, search_mode, file_pos);
1385 const string& ref_label,
1388ESearchMode search_mode = eSearchByOverlap,
1389 const CBGZFPos* file_pos =
nullptr);
1391 const string& ref_label,
1394TIndexLevel min_index_level,
1395TIndexLevel max_index_level,
1396ESearchMode search_mode = eSearchByOverlap,
1397 const CBGZFPos* file_pos =
nullptr);
1399 const string& ref_label,
1402EIndexLevel min_index_level,
1403EIndexLevel max_index_level,
1404ESearchMode search_mode,
1405 const CBGZFPos* file_pos =
nullptr);
1413 const CBGZFPos* file_pos =
nullptr)
1415x_Select(bam_db.
GetHeader(), file_pos);
1418 const string& ref_label,
1421 const CBGZFPos* file_pos =
nullptr)
1425search_mode, file_pos);
1428 const string& ref_label,
1432 const CBGZFPos* file_pos =
nullptr)
1436index_level, search_mode, file_pos);
1439 const string& ref_label,
1443 const CBGZFPos* file_pos =
nullptr)
1447index_level, search_mode, file_pos);
1450 const string& ref_label,
1455 const CBGZFPos* file_pos =
nullptr)
1459min_index_level, max_index_level, search_mode, file_pos);
1462 const string& ref_label,
1467 const CBGZFPos* file_pos =
nullptr)
1471min_index_level, max_index_level, search_mode, file_pos);
1477 const CBGZFPos* file_pos =
nullptr)
1479x_Select(index, ref_index, ref_range,
1480search_mode, file_pos);
1487 const CBGZFPos* file_pos =
nullptr)
1489x_Select(index, ref_index, ref_range,
1490index_level, search_mode, file_pos);
1497 const CBGZFPos* file_pos =
nullptr)
1499x_Select(index, ref_index, ref_range,
1500index_level, search_mode, file_pos);
1512 returnm_AlignInfo.get_file_pos();
1517 returnm_AlignInfo.get_ref_index();
1521 returnm_AlignRefRange.GetFrom();
1527 returnm_AlignInfo.get_next_ref_index();
1531 returnm_AlignInfo.get_next_ref_pos();
1536 return CTempString(m_AlignInfo.get_read_name_ptr(),
1537m_AlignInfo.get_read_name_len()-1);
1541 returnm_AlignInfo.get_short_seq_accession_id();
1545 returnm_AlignInfo.get_read_len();
1549 returnm_AlignInfo.get_read();
1553 returnm_AlignInfo.get_read_raw();
1557 returnm_AlignInfo.get_read(
str);
1562 returnm_AlignInfo.get_cigar_ops_count();
1566 returnm_AlignInfo.get_cigar_op_data(index);
1570 returnm_AlignInfo.get_cigar(raw_cigar);
1574m_AlignInfo.get_cigar(dst);
1578 returnm_AlignReadRange.GetFrom();
1582 returnm_AlignReadRange.GetLength();
1586 returnm_AlignRefRange.GetLength();
1590 returnmake_pair(m_AlignRefRange, m_AlignReadRange);
1594 returnm_AlignInfo.has_ambiguous_match();
1599 returnm_AlignInfo.get_cigar();
1604 returnm_AlignInfo.get_bin();
1608 returnGetBAIIndexBin();
1612 returnGetRangeIndexLevel(m_AlignRefRange);
1616 returnRangeIsOnMinBinIndexLevel(m_AlignRefRange);
1621 returnm_AlignInfo.get_flag();
1636 return(GetFlags() & m_AlignInfo.fAlign_SelfIsReverse)?
1642 return(GetFlags() & m_AlignInfo.fAlign_SelfIsUnmapped) == 0;
1647 returnIsMapped()? m_AlignInfo.get_map_quality(): 0;
1652 return(GetFlags() & m_AlignInfo.fAlign_IsMappedAsPair) != 0;
1656 return(GetFlags() & m_AlignInfo.fAlign_IsFirst) != 0;
1660 return(GetFlags() & m_AlignInfo.fAlign_IsSecond) != 0;
1664 return(GetFlags() & m_AlignInfo.fAlign_IsNotPrimary) != 0;
1667 voidGetSegments(vector<int>& starts, vector<TSeqPos>& lens)
const;
1671 return CBamAuxIterator(m_AlignInfo.get_aux_data_ptr(), m_AlignInfo.get_aux_data_end());
1675 returnm_AlignInfo.get_aux_data(c1, c2, allow_missing);
1679 returnGetAuxData(c1, c2).GetInt(index);
1684 const CBGZFPos* file_pos =
nullptr);
1687TIndexLevel min_index_level, TIndexLevel max_index_level,
1688ESearchMode search_mode,
1689 const CBGZFPos* file_pos =
nullptr);
1694 const CBGZFPos* file_pos =
nullptr)
1696x_Select(index, ref_index, ref_range,
1699search_mode, file_pos);
1704 const CBGZFPos* file_pos =
nullptr)
1706x_Select(index, ref_index, ref_range, 0, index.
GetMaxIndexLevel(), search_mode, file_pos);
1712 const CBGZFPos* file_pos =
nullptr)
1714x_Select(index, ref_index, ref_range, index_level, index_level, search_mode, file_pos);
1720 const CBGZFPos* file_pos =
nullptr)
1722x_Select(index, ref_index, ref_range, index_level, index_level, search_mode, file_pos);
1724 boolx_UpdateRange();
1728 returnm_Reader.HaveNextAvailableBytes() || x_UpdateRange();
1732m_NextRange = m_Ranges.end();
1735 boolx_NeedToSkip();
static bool operator<(const SBamIndexBinInfo &b1, const SBamIndexBinInfo &b2)
pair< CBGZFPos, CBGZFPos > CBGZFRange
CBamAuxIterator & operator++()
CBamAuxIterator(const char *aux_ptr, const char *aux_end)
const SBamAuxData & operator*() const
const SBamAuxData * operator->() const
DECLARE_OPERATOR_BOOL(m_AuxData)
void SetFrom(CBGZFPos file_pos)
CRangeUnion< CBGZFPos > TRanges
const_iterator end() const
void AddRanges(const CBamIndex &index, size_t ref_index, COpenRange< TSeqPos > ref_range, EIndexLevel min_index_level, EIndexLevel max_index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
const TRanges & GetRanges() const
void SetRanges(const CBamIndex &index, size_t ref_index, COpenRange< TSeqPos > ref_range, EIndexLevel index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
const_iterator begin() const
void SetRanges(const CBamIndex &index, size_t ref_index, COpenRange< TSeqPos > ref_range, EIndexLevel min_index_level, EIndexLevel max_index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
void SetFrom(const CBamHeader &header, const CBGZFPos *file_pos)
void SetWhole(const CBamHeader &header)
void AddRanges(const CBamIndex &index, size_t ref_index, COpenRange< TSeqPos > ref_range, EIndexLevel index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
TRanges::const_iterator const_iterator
const TRefs & GetRefs() const
double m_TotalReadSeconds
vector< uint64_t > CollectEstimatedCoverage(size_t ref_index) const
size_t GetRefCount() const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const string &seq_id, const string &annot_name, EIndexLevel min_index_level, EIndexLevel max_index_level) const
vector< uint64_t > CollectEstimatedCoverage(size_t ref_index, EIndexLevel index_level) const
const string & GetFileName() const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const string &seq_id, const string &annot_name, TSeqPos ref_length, EIndexLevel min_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const CSeq_id &seq_id, const string &annot_name, TSeqPos ref_length, EIndexLevel min_index_level, EIndexLevel max_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(const CBamHeader &header, const string &ref_name, const CSeq_id &seq_id, const string &annot_name, EIndexLevel min_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const string &seq_id, const string &annot_name, EIndexLevel min_index_level) const
pair< Uint8, double > GetReadStatistics() const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const CSeq_id &seq_id, const string &annot_name, EIndexLevel min_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const CSeq_id &seq_id, const string &annot_name, TSeqPos ref_length, TIndexLevel min_index_level=0) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(const CBamHeader &header, const string &ref_name, const string &seq_id, const string &annot_name, EIndexLevel min_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(const CBamHeader &header, const string &ref_name, const string &seq_id, const string &annot_name, TIndexLevel min_index_level=0) const
vector< uint64_t > EstimateDataSizeByAlnStartPos(size_t ref_index) const
vector< SBamIndexRefIndex > TRefs
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const CSeq_id &seq_id, const string &annot_name, TSeqPos ref_length, EIndexLevel min_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(const CBamHeader &header, const string &ref_name, const string &seq_id, const string &annot_name, EIndexLevel min_index_level, EIndexLevel max_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const string &seq_id, const string &annot_name, TIndexLevel min_index_level=0) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const CSeq_id &seq_id, const string &annot_name, EIndexLevel min_index_level, EIndexLevel max_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(const CBamHeader &header, const string &ref_name, const CSeq_id &seq_id, const string &annot_name, TIndexLevel min_index_level=0) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(const CBamHeader &header, const string &ref_name, const CSeq_id &seq_id, const string &annot_name, EIndexLevel min_index_level, EIndexLevel max_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const string &seq_id, const string &annot_name, TSeqPos ref_length, TIndexLevel min_index_level=0) const
vector< uint64_t > CollectEstimatedCoverage(size_t ref_index, TIndexLevel index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const string &seq_id, const string &annot_name, TSeqPos ref_length, EIndexLevel min_index_level, EIndexLevel max_index_level) const
CRef< CSeq_annot > MakeEstimatedCoverageAnnot(size_t ref_index, const CSeq_id &seq_id, const string &annot_name, TIndexLevel min_index_level=0) const
vector< uint64_t > CollectEstimatedCoverage(size_t ref_index, EIndexLevel min_index_level, EIndexLevel max_index_level) const
Uint2 GetCIGAROpsCount() const
TSeqPos GetRefSeqPos() const
Int8 GetAuxInt(char c1, char c2, size_t index=0) const
CBamRawAlignIterator(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, TIndexLevel index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
Uint1 GetMapQuality() const
Uint2 GetIndexBin() const
CTempString GetShortSeqAcc() const
TSeqPos GetCIGARPos() const
TSeqPos GetNextRefSeqPos() const
Uint2 GetBAIIndexBin() const
CBamRawAlignIterator(CBamRawDb &bam_db, const CBGZFPos *file_pos=nullptr)
SBamAlignInfo m_AlignInfo
bool TryGetFlags(Uint2 &flags) const
void Select(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
int32_t GetNextRefSeqIndex() const
CBamRawAlignIterator(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, EIndexLevel min_index_level, EIndexLevel max_index_level, ESearchMode search_mode, const CBGZFPos *file_pos=nullptr)
void GetCIGAR(CBamString &dst) const
CBamRawAlignIterator(CBamRawDb &bam_db, CBGZFPos file_pos)
pair< COpenRange< TSeqPos >, COpenRange< TSeqPos > > GetCIGARAlignment(void) const
CBamFileRangeSet::const_iterator m_NextRange
bool IsSecondInPair() const
void Select(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, EIndexLevel min_index_level, EIndexLevel max_index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
void Select(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, TIndexLevel min_index_level, TIndexLevel max_index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
TSeqPos GetShortSequenceLength(void) const
void Select(CBamRawDb &bam_db, const CBGZFPos *file_pos=nullptr)
TIndexLevel GetIndexLevel() const
SBamAuxData GetAuxData(char c1, char c2, bool allow_missing=false) const
TSeqPos GetCIGARRefSize() const
TSeqPos GetCIGARShortSize() const
void x_Select(const CBamIndex &index, size_t ref_index, CRange< TSeqPos > ref_range, EIndexLevel min_index_level, EIndexLevel max_index_level, ESearchMode search_mode, const CBGZFPos *file_pos=nullptr)
CTempString GetShortSeqId() const
CTempString GetShortSequenceRaw() const
void Select(const CBamIndex &index, size_t ref_index, CRange< TSeqPos > ref_range, TIndexLevel index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
CBamAuxIterator GetAuxIterator() const
void Select(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, TIndexLevel index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
CBGZFPos GetFilePos() const
string GetShortSequence() const
CBamRawAlignIterator(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, TIndexLevel min_index_level, TIndexLevel max_index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
CBamFileRangeSet m_Ranges
Uint4 GetCIGAROp(Uint2 index) const
void Select(const CBamIndex &index, size_t ref_index, CRange< TSeqPos > ref_range, EIndexLevel index_level, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
bool HasAmbiguousMatch() const
TIndexLevel m_MinIndexLevel
void x_Select(const CBamIndex &index, size_t ref_index, CRange< TSeqPos > ref_range, EIndexLevel index_level, ESearchMode search_mode, const CBGZFPos *file_pos=nullptr)
CBamRawAlignIterator(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, EIndexLevel index_level, ESearchMode search_mode, const CBGZFPos *file_pos=nullptr)
COpenRange< TSeqPos > m_QueryRefRange
bool IsFirstInPair() const
void Select(const CBamIndex &index, size_t ref_index, CRange< TSeqPos > ref_range, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
void x_Select(const CBamIndex &index, size_t ref_index, CRange< TSeqPos > ref_range, TIndexLevel index_level, ESearchMode search_mode, const CBGZFPos *file_pos=nullptr)
ENa_strand GetStrand() const
void GetShortSequence(CBamString &str) const
DECLARE_OPERATOR_BOOL(m_CurrentRangeEnd)
COpenRange< TSeqPos > m_AlignRefRange
CBamRawAlignIterator & operator++()
CBGZFPos m_CurrentRangeEnd
void Select(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, EIndexLevel index_level, ESearchMode search_mode, const CBGZFPos *file_pos=nullptr)
COpenRange< TSeqPos > m_AlignReadRange
void x_Select(const CBamIndex &index, size_t ref_index, CRange< TSeqPos > ref_range, ESearchMode search_mode, const CBGZFPos *file_pos=nullptr)
int32_t GetRefSeqIndex() const
bool IsOnMinBinIndexLevel() const
CBamRawAlignIterator(CBamRawDb &bam_db, const string &ref_label, CRange< TSeqPos > ref_range, ESearchMode search_mode=eSearchByOverlap, const CBGZFPos *file_pos=nullptr)
void GetCIGAR(vector< Uint4 > &raw_cigar) const
size_t GetRefIndex(const string &ref_label) const
CBamRawDb(const string &bam_path)
const string & GetIndexName() const
const string & GetRefName(size_t ref_index) const
size_t GetRefCount() const
const CBamHeader & GetHeader() const
const CBamIndex & GetIndex() const
TSeqPos GetRefSeqLength(size_t ref_index) const
vector< Uint8 > EstimateDataSizeByAlnStartPos(const string &ref_label) const
CBamRawDb(const string &bam_path, const string &index_path)
TRanges::const_iterator const_iterator
const_iterator end() const
map< position_type, position_type > TRanges
CRangeUnion< position_type > TThisType
TThisType & operator+=(const TRange &range)
void add_range(TRange range)
const_iterator begin() const
pair< position_type, position_type > TRange
TRanges::iterator iterator
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
container_type::const_iterator const_iterator
container_type::iterator iterator
const_iterator begin() const
const_iterator end() const
iterator_bool insert(const value_type &val)
const_iterator upper_bound(const key_type &key) const
Include a standard set of the NCBI C++ Toolkit most basic headers.
static DLIST_TYPE *DLIST_NAME() prev(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static const char * str(char *buf, int n)
unsigned int TSeqPos
Type for sequence locations and lengths.
const TSeqPos kInvalidSeqPos
Define special value for invalid sequence position.
void Read(CObjectIStream &in, TObjectPtr object, const CTypeRef &type)
uint8_t Uint1
1-byte (8-bit) unsigned integer
uint32_t Uint4
4-byte (32-bit) unsigned integer
uint16_t Uint2
2-byte (16-bit) unsigned integer
int64_t Int8
8-byte (64-bit) signed integer
uint64_t Uint8
8-byte (64-bit) unsigned integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
#define NCBI_BAMREAD_EXPORT
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
ENa_strand
strand of nucleic acid
std::istream & in(std::istream &in_, double &x_)
const char * get_phred_quality_end() const
const char * get_cigar_ptr() const
void get_cigar(vector< uint32_t > &raw_cigar) const
int32_t get_ref_pos() const
uint8_t get_map_quality() const
int32_t get_next_ref_pos() const
uint8_t get_read_name_len() const
CBGZFPos get_file_pos() const
const char * get_read_end() const
const char * get_read_ptr() const
uint32_t get_cigar_op_data(uint16_t index) const
const char * get_cigar_end() const
const char * get_aux_data_end() const
const char * get_read_name_ptr() const
const char * get_phred_quality_ptr() const
const char * get_read_name_end() const
const char * get_record_ptr() const
uint16_t get_flag() const
size_t get_record_size() const
const char * get_aux_data_ptr() const
uint16_t get_cigar_ops_count() const
const char * get_record_end() const
int32_t get_next_ref_index() const
CTempString get_read_raw() const
int32_t get_ref_index() const
uint32_t get_read_len() const
float GetFloat(size_t index=0) const
Int8 GetInt(size_t index=0) const
bool IsTag(char c1, char c2) const
CTempString GetTag() const
DECLARE_OPERATOR_BOOL(m_DataPtr)
CTempString GetString() const
CBGZFPos GetEndFilePos() const
vector< CBGZFRange > m_Chunks
CBGZFPos GetStartFilePos() const
COpenRange< TSeqPos > GetSeqRange(SBamIndexParams params) const
static const TShift kLevelStepBinShift
static const TShift kBAI_min_shift
static const TIndexLevel kMinBinIndexLevel
static const TIndexLevel kBAI_depth
static const TBin kMaxBinNumber
constexpr TShift GetMinBinShift() const
constexpr TSeqPos GetBinSize(TIndexLevel level) const
constexpr TBin GetPseudoBin() const
constexpr TBin GetBinNumberBase(int level) const
TIndexLevel Bin2IndexLevel(TBin bin) const
constexpr TBin GetBinNumberBaseReversed(int reversed_level) const
constexpr TBin GetMinBinNumberBase() const
bool RangeIsOnMinBinIndexLevel(CRange< TSeqPos > range) const
constexpr TBin GetFirstBin(TIndexLevel level) const
TBin GetBinNumber(TSeqPos pos, EIndexLevel level) const
TBin GetBinNumberOffset(TSeqPos pos, EIndexLevel level) const
constexpr TShift GetLevelBinShift(EIndexLevel level) const
constexpr TSeqPos GetPageSize() const
pair< TBin, TBin > GetBinRange(COpenRange< TSeqPos > ref_range, TIndexLevel index_level) const
COpenRange< TSeqPos > GetSeqRange(TBin bin) const
constexpr TSeqPos GetMaxBinSize() const
TBin GetBinNumber(TSeqPos pos, TIndexLevel level) const
bool IsOverflowPos(TSeqPos pos) const
TBin GetBinNumberOffset(TSeqPos pos, TIndexLevel level) const
TBin GetUpperBinNumber(TBin bin) const
constexpr TIndexLevel ToIndexLevel(EIndexLevel level) const
constexpr TSeqPos GetBinSize(EIndexLevel level) const
constexpr TBin GetFirstOverflowBin(TIndexLevel level=0) const
bool IsOverflowBin(TBin bin, TIndexLevel level=0) const
constexpr TBin GetBinNumberBase(EIndexLevel level) const
constexpr TShift GetPageShift() const
constexpr TShift GetMinLevelBinShift() const
TIndexLevel GetRangeIndexLevel(CRange< TSeqPos > range) const
constexpr TSeqPos GetMinBinSize() const
constexpr TShift GetLevelBinShift(TIndexLevel level) const
constexpr TIndexLevel GetMaxIndexLevel() const
constexpr TBin GetLastBin(TIndexLevel level) const
TSeqPos m_EstimatedLength
vector< uint64_t > CollectEstimatedCoverage(EIndexLevel min_index_level, EIndexLevel max_index_level) const
pair< TBinsIter, TBinsIter > GetLevelBins(EIndexLevel level) const
TBins::const_iterator TBinsIter
vector< SBamIndexBinInfo > TBins
CBGZFRange m_UnmappedChunk
vector< CBGZFPos > m_Overlaps
static Uint4 MakeUint4(const char *buf)
static Uint2 MakeUint2(const char *buf)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4