1 #ifndef OBJTOOLS_ALNMGR___ALN_STATS__HPP
2 #define OBJTOOLS_ALNMGR___ALN_STATS__HPP
55 template <
class _TAlnIdVec>
66 typedef typename _TAlnIdVec::TAlnVec
TAlnVec;
70 typedef typename _TAlnIdVec::TIdVec
TIdVec;
109 for (
size_t aln_i = 0; aln_i <
m_AlnCount; ++aln_i) {
110 for (
size_t row_i = 0; row_i <
m_AlnIdVec[aln_i].size(); ++row_i) {
118 it->second.push_back(
x_AddId(
id, aln_i, row_i));
122 TIdxVec::iterator idx_it = idx_vec.begin();
123 while (idx_it != idx_vec.end()) {
133 if (idx_it == idx_vec.end()) {
137 idx_vec.push_back(
x_AddId(
id, aln_i, row_i));
183 return aln_it->second;
189 "Seq-id not present in map");
199 const size_t& id_idx = it->second[0];
200 for (
size_t aln_i = 0; aln_i <
m_AlnCount; ++aln_i) {
204 for (
size_t aligned_id_idx = 0;
208 if (aligned_id_idx != id_idx &&
210 if ( !id_bit_vec[
bm::id_t(aligned_id_idx)] ) {
212 id_bit_vec[
bm::id_t(aligned_id_idx)] =
true;
213 aligned_ids_vec.push_back
220 return aligned_ids_vec;
335 rows[aln_i] =
int(row_i);
348 for (
size_t id_idx = 0; id_idx <
m_BitVecVec.size(); ++id_idx) {
364 it->second.push_back(id_idx);
CAlnStats< TAlnIdMap > TAlnStats
Default implementations for alignment stats.
CAlnStats< TScopeAlnIdMap > TScopeAlnStats
Helper class which collects seq-align statistics: seq-ids participating in alignments and rows,...
TDim GetDimForAln(size_t aln_idx) const
What is the dimension of an alignment?
_TAlnIdVec::TAlnVec TAlnVec
Vector of original seq-aligns.
_TAlnIdVec::TIdVec TIdVec
Vector of ids used in all alignments.
const TIdxVec & GetAnchorIdxVec(void) const
Get vector of id indexes (from IdVec) for potential anchors.
void x_IdentifyPotentialAnchors(void) const
const TIdVec & GetIdVec(void) const
Get vector of all ids from all alignments.
const TIdVec & GetSeqIdsForAln(const CSeq_align &aln) const
Access the vector of seq-ids of a particular alignment.
vector< TRowVec > TRowVecVec
One entry per id (in sync with TIdVec).
const TIdMap & GetAnchorIdMap(void) const
Get map of potential anchor ids.
const TAlnIdVec & m_AlnIdVec
bool IsCanonicalQueryAnchored(void) const
Canonical Query-Anchored: all alignments have 2 or 3 rows and exactly 2 sequences (A and B),...
vector< TDim > TRowVec
Vector, describing how a single id participates in all alignments from TAlnVec.
bool IsCanonicalMultiple(void) const
Canonical Multiple: Single alignment with multiple sequences.
const TIdVec & GetAnchorIdVec(void) const
Get vector of potential anchor ids.
size_t x_AddId(const TAlnSeqIdIRef &id, size_t aln_i, size_t row_i)
vector< TBitVec > TBitVecVec
One entry per id (in sync with TIdVec).
CAlnStats(const TAlnIdVec &aln_id_vec)
Constructor.
size_t GetAlnCount(void) const
How many alignments do we have?
TAlignedIdsMap m_AlignedIdsMap
bool CanBeAnchored(void) const
Check if there are any ids which can be used as anchors for the whole set of alignments.
vector< size_t > TIdxVec
Vector of indexes in TIdVec.
const TRowVecVec & GetRowVecVec(void) const
Get vector describing ids usage in each alignment.
const TIdMap & GetIdMap(void) const
Get map of ids to there indexes in TIdVec.
map< TAlnSeqIdIRef, TIdVec > TAlignedIdsMap
bm::bvector TBitVec
Bitmap where each bit indicates an alignment from TAlnVec.
const TIdVec & GetSeqIdsForAln(size_t aln_idx) const
Access the vector of seq-ids of a particular alignment.
_TAlnIdVec TAlnIdVec
Container with one entry per seq-align using the same indexing as m_AlnVec.
const TIdVec & GetAlignedIds(const TAlnSeqIdIRef &id) const
Get a set of ids that are aligned to a particular id.
map< TAlnSeqIdIRef, TIdxVec, SAlnSeqIdIRefComp > TIdMap
Each id mapped to a vector of indexes in TIdVec.
const TAlnVec & GetAlnVec(void) const
Access the underlying vector of alignments.
void resize(size_type new_size)
Change size of the bvector.
bvector_size_type size_type
container_type::const_iterator const_iterator
container_type::iterator iterator
const_iterator end() const
const_iterator lower_bound(const key_type &key) const
iterator_bool insert(const value_type &val)
container_type::value_type value_type
const_iterator find(const key_type &key) const
Include a standard set of the NCBI C++ Toolkit most basic headers.
bool Empty(const CNcbiOstrstream &src)
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
unsigned int
A callback function used to compare two keys in a database.
const struct ncbi::grid::netcache::search::fields::SIZE size
Compressed bitset (entry point to bm.h)
Portable reference counted smart and weak pointers using CWeakRef, CRef, CObject and CObjectEx.