80 bool skip_unsupported)
204 Curr->
SetNamedScore(
"expansion",
double(AlignLen)/
double(AlignedLen) );
230 double WeightedIdent;
231 double NumIdent, Matches, QueryLen;
237 WeightedIdent = (NumIdent + (Matches *
m_K)) / (Matches + (QueryLen *
m_K));
252 QueryId.
Set(QueryIter->first);
261 TargetId.
Set(SubjectIter->first);
264 !
Handle.GetInst_Ext().IsDelta()) {
270 list<TSeqRange> Gaps;
273 if( (*DeltaIter)->IsLiteral() ) {
274 TSeqPos Len = (*DeltaIter)->GetLiteral().GetLength();
278 }
else if( (*DeltaIter)->IsLoc() ) {
279 TSeqPos Len = (*DeltaIter)->GetLoc().GetInt().GetLength();
281 CurrStart = CurrStop + 1;
290 if(TargetRange.
GetLength() == QueryLen) {
303 ITERATE(list<TSeqRange>, GapIter, Gaps) {
304 if(GapIter->IntersectingWith(TargetRange)) {
312 if(TargetRange.
GetTo() >= (TargetLen-1))
341 vector<pair<TSeqPos, TSeqPos> > Tails;
343 for(
int Row = 0; Row < Curr->
GetSegs().GetDenseg().GetDim(); ++Row) {
349 pair<TSeqPos, TSeqPos> Pair;
352 Pair.second = SeqLen - Stop - 1;
355 Pair.first = SeqLen - Stop - 1;
357 Tails.push_back(Pair);
364 Full = (Tails[0].second <=
m_Slop && Tails[1].first <=
m_Slop)
375 Forewards = (Tails[0].first > Tails[0].second)
376 && (Tails[1].
first < Tails[1].second);
379 Half = Tails[0].second <=
m_Slop || Tails[1].first <=
m_Slop;
380 TailLen =
max(Tails[0].second, Tails[1].
first);
383 Half = Tails[0].first <=
m_Slop || Tails[1].second <=
m_Slop;
384 TailLen =
max(Tails[0].
first, Tails[1].second);
430 AnnotIter->
GetName() ==
"NCBI_GPIPE") {
453 if( (*AnnotIter)->GetData().IsLocs() ) {
455 LocIter, (*AnnotIter)->GetData().GetLocs()) {
456 if( (*LocIter)->IsInt() &&
457 (*LocIter)->GetInt().GetId().Equals(EndId))
458 ClipLoc.
Assign(**LocIter);
482 ClipBioseq->
SetId().push_back(ClipId);
484 ClipDelta->SetLoc().Assign(ClipLoc);
485 ClipBioseq->
SetInst().SetExt().SetDelta().Set().push_back(ClipDelta);
489 ClipHandle = Scope.
AddBioseq(*ClipBioseq);
502 if(Intersect.
Empty())
507 ClipDenseg->
SetIds().front()->Assign(*ClipId);
509 ClipAlign->
SetSegs().SetDenseg().Assign(*ClipDenseg);
513 ERR_POST(
"Probably means the clip region is invalid.");
540 ClipAlign->
SetNamedScore(
"expansion",
double(AlignLen)/
double(AlignedLen) );
572 list<CRef<CSeq_id> > QueryIds, SubjectIds;
646 if(TypeString ==
"RefGeneTracking" && User.
HasField(
"Assembly")) {
673 CompIds.push_back(Id);
686 if(!
Handle.CanGetInst_Ext())
700 if(Seg->IsLiteral()) {
701 SegStart += Seg->GetLiteral().GetLength();
705 const CSeq_loc& Loc = Seg->GetLoc();
714 if(Start <= (SegStart+Int.
GetLength()) && Stop >= SegStart) {
721 CompIds.push_back(Id);
733 if(!
Handle.CanGetInst_Hist())
752 int component_row = 1;
758 if (AlignIdHandle != HandleId) {
762 list< CConstRef<CSeq_align> > SplitAligns;
766 SplitAligns.push_back(*it);
775 ((*SplitIter)->GetSeq_id(component_row));
779 if(Start <= (*SplitIter)->GetSeqStop(query_row) &&
780 Stop >= (*SplitIter)->GetSeqStart(query_row)) {
783 CompIds.push_back(Id);
802 if(CompIds.empty()) {
805 CompIds.push_back(SelfId);
813 list<CRef<CSeq_id> >::iterator QueryIter, SubjectIter;
814 for(QueryIter = QueryIds.begin(); QueryIter != QueryIds.end(); ++QueryIter) {
815 for(SubjectIter = SubjectIds.begin(); SubjectIter != SubjectIds.end(); ++SubjectIter) {
816 if( (*QueryIter)->Equals(**SubjectIter) )
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
static void s_ScoreAlignments(const CSeq_align_set &alignments, CScope &Scope, CScoreBuilder &Scorer, bool skip_unsupported)
static const Int8 kEffectiveSearchSpace
Declares the CBl2Seq (BLAST 2 Sequences) class.
Declares the CBlastNucleotideOptionsHandle class.
Declares the CBlastOptionsHandle and CBlastOptionsFactory classes.
Definitions of special type used in BLAST.
@ eMegablast
Nucl-Nucl (traditional megablast)
Main argument class for BLASTN application.
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
@ eSkipUnsupportedAlignments
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
void x_GetCompList(const objects::CSeq_id &Id, TSeqPos Start, TSeqPos Stop, list< CRef< objects::CSeq_id > > &CompIds, objects::CScope &Scope)
void x_GetSeqHistCompList(CBioseq_Handle Handle, TSeqPos Start, TSeqPos Stop, list< CRef< objects::CSeq_id > > &CompIds)
void x_GetDeltaExtCompList(CBioseq_Handle Handle, TSeqPos Start, TSeqPos Stop, list< CRef< objects::CSeq_id > > &CompIds)
void x_GetUserCompList(CBioseq_Handle Handle, list< CRef< objects::CSeq_id > > &CompIds)
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
bool x_CompareCompLists(list< CRef< objects::CSeq_id > > &QueryIds, list< CRef< objects::CSeq_id > > &SubjectIds)
void OffsetRow(TDim row, TSignedSeqPos offset)
Offset row's coords.
CRef< CDense_seg > ExtractSlice(TDim row, TSeqPos from, TSeqPos to) const
Extract a slice of the alignment that includes the specified range.
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
TSeqPos GetAlignLength(const CSeq_align &align, bool ungapped=false)
Compute the length of the alignment (= length of all segments, gaps + aligned)
void AddScore(CScope &scope, CSeq_align &align, EScoreType score)
deprecated: use CSeq_align::EScoreType directly
void SetEffectiveSearchSpace(Int8 searchsp)
@ eScore_PercentIdentity_GapOpeningOnly
@ eScore_PercentIdentity_Gapped
@ eScore_PercentIdentity_Ungapped
CRange< TSeqPos > GetSeqRange(TDim row) const
GetSeqRange NB: On a Spliced-seg, in case the product-type is protein, these only return the amin par...
TSeqPos GetSeqStop(TDim row) const
void SetNamedScore(const string &id, int score)
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
bool GetNamedScore(const string &id, int &score) const
Get score.
TSeqPos GetSeqStart(TDim row) const
ENa_strand GetSeqStrand(TDim row) const
Get strand (the first one if segments have different strands).
TSeqPos GetAlignLength(bool include_gaps=true) const
Get the length of this alignment.
@Seq_descr.hpp User-defined methods of the data storage class.
TSeqPos GetLength(void) const
bool HasField(const string &str, const string &delim=".", NStr::ECase use_case=NStr::eCase) const
Verify that a named field exists.
const CUser_field & GetField(const string &str, const string &delim=".", NStr::ECase use_case=NStr::eCase) const
Access a named field in this user object.
void ScoreAlignments(TAlignResultsRef Alignments, objects::CScope &Scope)
Declares the CDiscNucleotideOptionsHandle class.
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
unsigned int TSeqPos
Type for sequence locations and lengths.
#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.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
void Error(CExceptionArgs_Base &args)
string ReportAll(TDiagPostFlags flags=eDPF_Exception) const
Report all exceptions.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
string GetSeqIdString(bool with_version=false) const
Return seqid string with optional version for text seqid type.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
CConstRef< CSeq_id > GetSeqId(void) const
CSeq_id & Set(const CTempString &the_id, TParseFlags flags=fParse_AnyRaw)
Reassign based on flat specifications; arguments interpreted as with constructors.
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
CBioseq_Handle AddBioseq(CBioseq &bioseq, TPriority pri=kPriority_Default, EExist action=eExist_Throw)
Add bioseq, return bioseq handle.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
CConstRef< CBioseq > GetCompleteBioseq(void) const
Get the complete bioseq.
bool IsFtable(void) const
CConstRef< CSeq_annot > GetCompleteSeq_annot(void) const
Complete and return const reference to the current seq-annot.
bool HasAnnots(void) const
TInst_Length GetInst_Length(void) const
const string & GetName(void) const
void Reset(void)
Reset reference object.
int64_t Int8
8-byte (64-bit) signed integer
position_type GetLength(void) const
TThisType IntersectionWith(const TThisType &r) const
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
void SetFrom(TFrom value)
Assign a value to From data member.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
void SetTo(TTo value)
Assign a value to To data member.
const TStr & GetStr(void) const
Get the variant data.
bool IsStr(void) const
Check if variant Str is selected.
bool CanGetType(void) const
Check if it is safe to call GetType method.
const TData & GetData(void) const
Get the Data member data.
const TFields & GetFields(void) const
Get the variant data.
vector< CRef< CUser_field > > TFields
bool IsInt(void) const
Check if variant Int is selected.
bool IsStr(void) const
Check if variant Str is selected.
const TStr & GetStr(void) const
Get the variant data.
TInt GetInt(void) const
Get the variant data.
TStr & SetStr(void)
Select the variant.
const TType & GetType(void) const
Get the Type member data.
const TDenseg & GetDenseg(void) const
Get the variant data.
TScore & SetScore(void)
Assign a value to Score data member.
E_Choice Which(void) const
Which variant is currently selected.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
TDim GetDim(void) const
Get the Dim member data.
bool IsDisc(void) const
Check if variant Disc is selected.
list< CRef< CSeq_align > > Tdata
TIds & SetIds(void)
Assign a value to Ids data member.
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.
bool IsDenseg(void) const
Check if variant Denseg is selected.
const TRegion & GetRegion(void) const
Get the variant data.
const TLocation & GetLocation(void) const
Get the Location member data.
const TData & GetData(void) const
Get the Data member data.
bool CanGetData(void) const
Check if it is safe to call GetData method.
bool CanGetLocation(void) const
Check if it is safe to call GetLocation method.
bool IsRegion(void) const
Check if variant Region is selected.
@ e_Region
named region (globin locus)
bool IsEmpty(void) const
Check if variant Empty is selected.
const TId & GetId(void) const
Get the Id member data.
TFrom GetFrom(void) const
Get the From member data.
TLocal & SetLocal(void)
Select the variant.
TTo GetTo(void) const
Get the To member data.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
list< CRef< CSeqdesc > > Tdata
TId & SetId(void)
Assign a value to Id data member.
list< CRef< CSeq_align > > TAssembly
const TUser & GetUser(void) const
Get the variant data.
const TAnnot & GetAnnot(void) const
Get the Annot member data.
const Tdata & Get(void) const
Get the member data.
const TAssembly & GetAssembly(void) const
Get the Assembly member data.
bool IsDelta(void) const
Check if variant Delta is selected.
void SetInst(TInst &value)
Assign a value to Inst data member.
list< CRef< CSeq_loc > > TLocs
const TDelta & GetDelta(void) const
Get the variant data.
const TFtable & GetFtable(void) const
Get the variant data.
list< CRef< CSeq_feat > > TFtable
const Tdata & Get(void) const
Get the member data.
const TData & GetData(void) const
Get the Data member data.
list< CRef< CSeq_annot > > TAnnot
list< CRef< CDelta_seq > > Tdata
bool IsUser(void) const
Check if variant User is selected.
bool CanGetAssembly(void) const
Check if it is safe to call GetAssembly method.
@ eRepr_virtual
no seq data
Main class to perform a BLAST search on the local machine.
Magic spell ;-) needed for some weird compilers... very empiric.
#define NCBI_CONST_INT8(v)
64-bit integers
Defines NCBI C++ exception handling.