55 if (src && src->
Lambda >= 0) {
76 : m_GumbelBlk(0), m_UngappedKarlinBlk(0), m_GappedKarlinBlk(0), m_PsiUngappedKarlinBlk(0),
77 m_PsiGappedKarlinBlk(0), m_SearchSpace(0), m_LengthAdjustment(0)
83 for (
i = 0;
i < context_per_query;
i++) {
85 query_number * context_per_query +
i;
92 if (
i >= context_per_query) {
98 const int ctx_index = query_number * context_per_query +
i;
118 pair<double, double> k,
119 pair<double, double> h,
120 Int8 effective_search_space,
122 : m_GumbelBlk(0), m_UngappedKarlinBlk(0), m_GappedKarlinBlk(0), m_PsiUngappedKarlinBlk(0),
123 m_PsiGappedKarlinBlk(0), m_SearchSpace(0), m_LengthAdjustment(0)
175 if (
this != &other) {
211 : m_QueryId(
query), m_Alignment(align), m_Errors(errs),
212 m_AncillaryData(ancillary_data), m_RID(
kEmptyStr), m_PhiQueryInfo(0)
239 copy(flt_query_regions.begin(), flt_query_regions.end(),
249 if ((**iter).GetSeverity() >= min_severity) {
250 errs.push_back(*iter);
265 if ( !retval.empty() ) {
270 retval += (*iter)->GetMessage(
false) +
" ";
284 if ( !retval.empty() ) {
289 retval += (*iter)->GetMessage(
false) +
" ";
363 unsigned int num_aligns = 1;
364 CSeq_align_set::Tdata::iterator itr=
m_Alignment->Set().begin();
365 previous_id = &((*itr)->GetSeq_id(1));
370 if ((*itr)->GetSegs().IsDisc())
376 sub_id = &((*itr)->GetSeq_id(1));
377 if(!sub_id->
Match(*previous_id))
382 if(num_aligns > max_size)
387 previous_id = sub_id;
457 if (! (align_set.
Empty() || align_set->
Get().empty())) {
482 : m_ResultType(res_type), m_NumQueries(0), m_IsPhiBlast(
false)
493 : m_ResultType(res_type)
495 if (ancillary_data.empty()) {
496 ancillary_data.resize(aligns.size());
498 x_Init(queries, aligns, msg_vec, ancillary_data, query_masks, phi_query_info);
504 : m_ResultType(res_type)
506 vector< CConstRef<CSeq_id> > queries;
509 for(
size_t i = 0;
i < aligns.size();
i++) {
513 x_Init(queries, aligns, msg_vec, ancillary_data,
NULL);
526 if (orig_masks.empty()) {
535 const size_t kNumQueries = orig_masks.size();
536 const size_t kNumSubjects =
m_Results.size() / kNumQueries;
540 copy(mqr.begin(), mqr.end(), back_inserter(masks[
i]));
548 m_Results[
i]->SetMaskedQueryRegions(masks[0]);
565 _ASSERT(queries.size() == aligns.size());
566 _ASSERT(aligns.size() == msg_vec.size());
567 _ASSERT(aligns.size() == ancillary_data.size());
576 int num_repeated_ids = 1;
577 for (
size_t i_id = 1; i_id < queries.size(); i_id++)
579 if (queries[i_id]->Match(queries[0].GetObject()))
594 for(
size_t i = 0;
i < aligns.size();
i++) {
#define sfree(x)
Safe free a pointer: belongs to a higher level header.
EBlastProgramType
Defines the engine's notion of the different applications of the BLAST algorithm.
const unsigned int kQueryIndex
Index into multiple sequence alignment structure for the query sequence.
Definition of classes which constitute the results of running a BLAST search.
Blast_KarlinBlk * Blast_KarlinBlkNew(void)
Callocs a Blast_KarlinBlk.
Blast_KarlinBlk * Blast_KarlinBlkFree(Blast_KarlinBlk *kbp)
Deallocates the KarlinBlk.
Int2 Blast_KarlinBlkCopy(Blast_KarlinBlk *kbp_to, Blast_KarlinBlk *kbp_from)
Copies contents of one Karlin block to another.
vector< CRef< objects::CSeq_align_set > > TSeqAlignVector
Vector of Seq-align-sets.
EResultType
Specifies the style of Seq-aligns that should be built from the internal BLAST data structures.
@ eDatabaseSearch
Seq-aligns in the style of a database search.
@ eSequenceComparison
Seq-aligns in the BLAST 2 Sequence style (one alignment per query-subject pair)
unsigned int BLAST_GetNumberOfContexts(EBlastProgramType program)
Get the number of contexts for a given program.
Class used to return ancillary data from a blast search, i.e.
Defines BLAST error codes (user errors included)
Search Results for All Queries.
Search Results for One Query.
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
Collection of masked regions for a single query sequence.
Class for the messages for an individual query sequence.
typedef for the messages for an entire BLAST search, which could be comprised of multiple query seque...
static const char si[8][64]
TSeqLocInfoVector m_SubjectMasks
the matching subjects masks
bool HasErrors() const
Returns true if there are errors among the results for this object.
void GetSubjectMasks(TSeqLocInfoVector &subj_masks) const
Retrieve the masked locations for the subject sequences in the contained alignment.
~CBlastAncillaryData()
Destructor.
CSearchResults & operator[](size_type i)
Allow array-like access with integer indices to CSearchResults contained by this object.
static CConstRef< CSeq_id > s_ExtractSeqId(CConstRef< CSeq_align_set > align_set)
Find the first alignment in a set of blast results, and.
size_type m_NumQueries
Number of queries.
Blast_KarlinBlk * m_PsiGappedKarlinBlk
PSI-BLAST gapped Karlin parameters for one query (if applicable)
TSeqLocInfoVector m_QueryMasks
Stores the masked query regions, for convenience and usage in CBl2Seq.
bool m_IsPhiBlast
True if this object contains PHI-BLAST results.
void GetMaskedQueryRegions(TMaskedQueryRegions &flt_query_regions) const
Retrieve the query regions which were masked by BLAST.
CRef< objects::CSeq_align_set > m_Alignment
alignments for this query
void SetRID(const string &rid)
Sets the RID for these results.
vector< CConstRef< objects::CSeq_id > > TQueryIdVector
List of query ids.
TSeqLocInfoVector GetFilteredQueryRegions() const
Retrieves the filtered query regions.
void TrimSeqAlign(objects::CSeq_align_set::Tdata::size_type max_size)
Trim align_set size @parm size max num of alignments to keep (0 will erase all)
void SetSubjectMasks(const TSeqLocInfoVector &subj_masks)
Set the masked locations for the subject sequences in the contained alignment.
CSearchResultSet(EResultType res_type=eDatabaseSearch)
Simplest constructor.
static void s_InitializeKarlinBlk(Blast_KarlinBlk *src, Blast_KarlinBlk **dest)
~CSearchResults()
Our destructor.
TQueryMessages m_Errors
error/warning messages for this query
string GetQueryId() const
Get the query id as a string.
TMaskedQueryRegions m_Masks
this query's masked regions
EResultType m_ResultType
Type of results stored in this object.
CBlastAncillaryData & operator=(const CBlastAncillaryData &rhs)
Assignment operator.
bool HasWarnings() const
Returns true if there are warnings among the results for this object.
Int8 m_LengthAdjustment
Length adjustment for boundary conditions.
void SetMaskedQueryRegions(const TMaskedQueryRegions &flt_query_regions)
Mutator for the masked query regions, intended to be used by internal BLAST APIs to populate this obj...
vector< value_type >::size_type size_type
size_type type definition
void SetFilteredQueryRegions(const TSeqLocInfoVector &masks)
Sets the filtered query regions.
string GetWarningStrings() const
Retrieve a string with the query identifier followed by the warnings produced, returns a empty string...
Blast_KarlinBlk * m_GappedKarlinBlk
Gapped Karlin parameters for one query.
CConstRef< objects::CSeq_id > m_QueryId
this query's id
vector< CRef< CSearchResults > > m_Results
Vector of results.
static void s_InitializeGumbelBlk(Blast_GumbelBlk *src, Blast_GumbelBlk **dest)
Blast_KarlinBlk * m_PsiUngappedKarlinBlk
PSI-BLAST ungapped Karlin parameters for one query (if applicable)
Blast_KarlinBlk * m_UngappedKarlinBlk
Ungapped Karlin parameters for one query.
void push_back(value_type &element)
Add a value to the back of this container.
SPHIQueryInfo * m_PhiQueryInfo
PHI-BLAST information.
TQueryMessages GetErrors(int min_severity=eBlastSevError) const
Accessor for the error/warning messsages for this query.
CConstRef< objects::CSeq_id > GetSeqId() const
Accessor for the query's sequence identifier.
void x_Init(TQueryIdVector &queries, TSeqAlignVector aligns, TSearchMessages msg_vec, TAncillaryVector ancillary_data, const TSeqLocInfoVector *query_masks, const SPHIQueryInfo *phi_query_info=NULL)
Initialize the result set.
CBlastAncillaryData(EBlastProgramType program_type, int query_number, const BlastScoreBlk *sbp, const BlastQueryInfo *query_info)
constructor
vector< CRef< CBlastAncillaryData > > TAncillaryVector
typedef for a vector of CRef<CBlastAncillaryData>
Int8 m_SearchSpace
Search space used when calculating e-values for one query.
Blast_GumbelBlk * m_GumbelBlk
Gumbel parameters for one query.
void do_copy(const CBlastAncillaryData &other)
Workhorse for copy constructor and assignment operator.
string GetErrorStrings() const
Retrieve a string with the query identifier followed by the errors produced, returns a empty string i...
size_type GetNumResults() const
Return the number of results contained by this object.
CSearchResults(CConstRef< objects::CSeq_id > query, CRef< objects::CSeq_align_set > align, const TQueryMessages &errs, CRef< CBlastAncillaryData > ancillary_data, const TMaskedQueryRegions *query_masks=NULL, const string &rid=kEmptyStr, const SPHIQueryInfo *phi_query_info=NULL)
Constructor.
CSearchResults & GetResults(size_type qi, size_type si)
Retrieve results for a query-subject pair contained by this object.
bool HasAlignments() const
Return true if there are any alignments for this query.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
bool Match(const CSeq_id &sid2) const
Match() - TRUE if SeqIds are equivalent.
@ e_YES
SeqIds compared, but are different.
bool Empty(void) const THROWS_NONE
Check if CConstRef is empty – not pointing to any object which means having a null value.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
bool Empty(void) const THROWS_NONE
Check if CRef is empty – not pointing to any object, which means having a null value.
int64_t Int8
8-byte (64-bit) signed integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define USING_SCOPE(ns)
Use the specified namespace.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
bool IsDisc(void) const
Check if variant Disc is selected.
const TDisc & GetDisc(void) const
Get the variant data.
const Tdata & Get(void) const
Get the member data.
const TSegs & GetSegs(void) const
Get the Segs member data.
double lambda(size_t dimMatrix_, const Int4 *const *scoreMatrix_, const double *q_)
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
SPHIQueryInfo * SPHIQueryInfoFree(SPHIQueryInfo *pat_info)
Frees the pattern information structure.
SPHIQueryInfo * SPHIQueryInfoCopy(const SPHIQueryInfo *pat_info)
Copies the SPHIQueryInfo structure.
vector< TMaskedQueryRegions > TSeqLocInfoVector
Collection of masked regions for all queries in a BLAST search.
The context related information.
The query related information.
BlastContextInfo * contexts
Information per context.
Structure used for scoring calculations.
Blast_KarlinBlk ** kbp_psi
K-A parameters for position-based alignments.
Blast_KarlinBlk ** kbp_gap
K-A parameters for gapped alignments.
Blast_KarlinBlk ** kbp_std
K-A parameters for ungapped alignments.
Blast_KarlinBlk ** kbp_gap_psi
K-A parameters for psi alignments.
Blast_GumbelBlk * gbp
Gumbel parameters for FSC.
Structure to hold the Gumbel parameters (for FSC).
Structure to hold the Karlin-Altschul parameters.
double K
K value used in statistics.
double Lambda
Lambda value used in statistics.
double H
H value used in statistics.
In PHI BLAST, structure containing information about all pattern occurrences in query.
voidp calloc(uInt items, uInt size)