=
"Segs: This alignment has an undefined or unsupported Seqalign segtype "+
NStr::IntToString(segtype);
93 "Segs: This alignment is missing all segments. This is a non-correctable error -- look for serious formatting problems.",
131 "Segs: This alignment is missing all segments. This is a non-correctable error -- look for serious formatting problems.",
173}
catch(std::exception &) {
204}
else if(
a==
'N'||
b==
'N') {
228 unsigneddim = denseg.
GetDim();
231}
else if(denseg.
GetIds().size() < dim) {
232dim = (unsigned)denseg.
GetIds().size();
244 if((*it)->IsSetId() && (*it)->GetId().IsStr() &&
246(*it)->IsSetValue() && (*it)->GetValue().IsReal()) {
247 if((*it)->GetValue().GetReal() > 50.0) {
260 intdim = denseg.
GetDim();
265 boolis_tpa =
false;
271 while(desc_ci && !is_tpa) {
288 boolis_tpa =
false;
294 while(desc_ci && !is_tpa) {
309 intdim = denseg.
GetDim();
325 while(col < aln_len && !ids_missing) {
337string::const_iterator it1 =
column.begin();
338string::const_iterator it2 = it1;
345 if(it2 ==
column.end()) {
368}
catch(std::exception &) {
392 if((*id)->IsGenbank() && (*id)->GetGenbank().IsSetVersion() && (*id)->GetGenbank().GetVersion() == 0) {
406 if((*id)->IsGenbank() && (*id)->GetGenbank().IsSetVersion() && (*id)->GetGenbank().GetVersion() == 0) {
407(*id)->SetGenbank().ResetVersion();
416 size_tnum_match = 0;
417 boolids_missing =
false;
426 intdim = denseg.
GetDim();
434 tmp->Assign(denseg);
486vector <string> aln_rows;
487vector <TSeqPos> row_starts;
488vector <TSeqPos> row_stops;
497aln_rows.push_back (sequence);
500row_starts.push_back (start);
504}
catch(std::exception &) {
511 boolany_data =
false;
514 while(col < aln_len) {
518 if(row_starts[
row] >= col && row_stops[
row] <= col
519&& aln_rows[
row].length() > col) {
520 stringnt = aln_rows[
row].substr(col - row_starts[
row], 1);
536string::const_iterator it1 =
column.begin();
537string::const_iterator it2 = it1;
544 if(it2 ==
column.end()) {
560}
catch(std::exception &) {
572 size_tpct_id = (num_match * 100) / col;
575 "PercentIdentity: This alignment has a percent identity of "+
NStr::NumericToString(pct_id) +
"%",
589 size_tdim = denseg.GetDim();
590 size_tnumseg = denseg.GetNumseg();
592denseg.GetIds()[0]->GetLabel (&
label);
596 if( bar_pos != string::npos ) {
604 if( dim != denseg.GetIds().size() ) {
606 "SeqId: The Seqalign has more or fewer ids than the number of rows in the alignment (context " 607+
context+
"). Look for possible formatting errors in the ids.", align);
611 if( numseg != denseg.GetLens().size() ) {
613 "Mismatch between specified numseg ("+
615 ") and number of Lens ("+
621 if( dim * numseg != denseg.GetStarts().size() ) {
623 "The number of Starts ("+
625 ") does not match the expected size of dim * numseg ("+
648 size_tdim = packed.GetDim();
649 size_tnumseg = packed.GetNumseg();
652 if( dim != packed.GetIds().size() ) {
654 "SeqId: The Seqalign has more or fewer ids than the number of rows in the alignment. Look for possible formatting errors in the ids.", align);
658 if( numseg != packed.GetLens().size() ) {
660 "Mismatch between specified numseg ("+
662 ") and number of Lens ("+
680 size_tnum_dendiag = 0;
685 size_tdim = dendiag.
GetDim();
694 if( bar_pos != string::npos ) {
701 if( dim != dendiag.
GetIds().size() ) {
704+
", there are more or fewer rows than there are seqids (context " 705+
context+
"). Look for possible formatting errors in the ids.", align);
709 if( dim != dendiag.
GetStarts().size() ) {
711 "Mismatch between specified dimension ("+
713 ") and number ofStarts ("+
722 "Mismatch between specified dimension ("+
724 ") and number of Strands ("+
742 const TStd& std_segs,
745 size_tnum_stdseg = 0;
749 const CStd_seg& stdseg = **stdseg_iter;
750 size_tdim = stdseg.
GetDim();
756 if( dim != stdseg.
GetLoc().size() ) {
761 if( bar_pos != string::npos ) {
768+
", there are more or fewer rows than there are seqids (context " 769+
context+
"). Look for possible formatting errors in the ids.", align);
774 if( dim != stdseg.
GetIds().size() ) {
776 "Mismatch between specified dimension ("+
778 ") and number of Seq-ids ("+
795 template<
typenameT>
803 if( !obj.IsSetDim() || obj.GetDim() == 0) {
809 "Dim: This alignment has dimension zero", align);
811}
else if(obj.GetDim() == 1) {
816 msg=
"Segs: Segment "+
NStr::SizetToString(part) +
" apparently has only one sequence. Each portion of the alignment must have at least two sequences.";
819 msg=
"Dim: This seqalign apparently has only one sequence. Each alignment must have at least two sequences.";
850 if( !denseg.IsSetStrands() ) {
854 size_tdim = denseg.GetDim();
855 size_tnumseg = denseg.GetNumseg();
859 for(
size_t id= 0;
id< dim; ++id ) {
862 for(
size_tseg = 0; seg < numseg; ++seg ) {
863 ENa_strandstrand2 = strands[
id+ (seg * dim)];
878 if( strand1 != strand2 ) {
881 if(denseg.GetIds().size() >
id&& denseg.GetIds()[id]) {
882sid = denseg.GetIds()[id]->AsFastaString();
884 if(denseg.GetStarts().size() >
id+ (seg * dim)) {
885pos = denseg.GetStarts()[
id+ (seg * dim)];
888 "Strand: The strand labels for SeqId "+
890 " are inconsistent across the alignment. " 891 "The first inconsistent region is the "+
902 const TStd& std_segs,
918 stringid_label =
id->AsFastaString();
929strands[id_label] = strand;
930reported[id_label] =
false;
931}
else if(!reported[id_label]
932&& strands[id_label] != strand ) {
935 "Strand: The strand labels for SeqId "+ id_label +
936 " are inconsistent across the alignment. The first inconsistent region is the " 939reported[id_label] =
true;
959}
else if(!b1.
IsAa() && b2.
IsAa()) {
966 for(
CSeqVector_CIsv1_iter(sv1), sv2_iter(sv2); (sv1_iter) && (sv2_iter); ++sv1_iter, ++sv2_iter ) {
967 if(*sv1_iter == *sv2_iter || *sv1_iter ==
'N'|| *sv2_iter ==
'N') {
995denseg.GetDim() <= 2 ) {
999 size_tdim = denseg.GetDim();
1000 size_tnumseg = denseg.GetNumseg();
1002vector<string> fasta_like;
1008 for(
size_tseg = 0; seg < numseg; ++ seg ) {
1010 if( starts[
id+ (dim * seg)] < 0 ) {
1019 if( seg == numseg - 1) {
1022fasta_like.push_back(denseg.GetIds()[id]->AsFastaString());
1027 if( !fasta_like.empty() ) {
1028CDense_seg::TIds::const_iterator id_it = denseg.GetIds().begin();
1030 string context= (*id_it)->GetSeqIdString();
1032 boolis_fasta_like =
false;
1035 while(id_it != denseg.GetIds().end() && !is_fasta_like) {
1038is_fasta_like =
true;
1043is_fasta_like =
true;
1045 if(is_fasta_like) {
1047 "Fasta: This may be a fasta-like alignment for SeqId: " 1048+ fasta_like.front() +
" in the context of "+
context, align);
1058 size_talign_pos = 0;
1060 intnumseg = denseg.GetNumseg();
1061 intdim = denseg.GetDim();
1064 for(
size_tseg = 0; seg < numseg; ++seg) {
1065 boolseggap =
true;
1066 for(
int id= 0;
id< dim && seg * dim +
id< starts.size(); ++id) {
1067 if(starts[seg * dim +
id] != -1) {
1075 if(denseg.IsSetIds() && denseg.GetIds().size() > 0) {
1083 if(denseg.IsSetLens() && denseg.GetLens().size() > (
unsigned int)seg) {
1084align_pos += denseg.GetLens()[seg];
1097+ itr->label +
" contains only gaps. Each segment must contain at least one actual sequence -- look for columns with all gaps and delete them.",
1122 static Ucharbits[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
1124 size_tnumseg = packed.GetNumseg();
1125 size_tdim = packed.GetDim();
1128 size_talign_pos = 0;
1129 for(
size_tseg = 0; seg < numseg; ++seg) {
1131 for(;
id< dim; ++id) {
1132 size_t i=
id+ (dim * seg);
1133 if((present[
i/ 8] & bits[
i% 8])) {
1140 if(packed.IsSetIds() && packed.GetIds().size() > 0) {
1148 if(packed.IsSetLens() && packed.GetLens().size() > seg) {
1149align_pos += packed.GetLens()[seg];
1171 size_talign_pos = 0;
1177 if(!(*loc)->IsEmpty() && !(*loc)->IsNull()) {
1180}
else if(
len== 0) {
1201(
const TStd& std_segs,
1216 if(!(*diag_seg)->IsSetDim() || (*diag_seg)->GetDim() == 0) {
1218 if((*diag_seg)->IsSetIds() && (*diag_seg)->GetIds().size() > 0) {
1219(*diag_seg)->GetIds().front()->GetLabel(&
label);
1226 if((*diag_seg)->IsSetLen()) {
1227align_pos += (*diag_seg)->GetLen();
1253vector< CRef< CSeq_id > > ids;
1260 const CSeq_id&
id= **id_iter;
1261 if(
id.IsLocal() ) {
1264 if( hdl.
IsNa() ) {
1267 if( hdl.
IsAa() ) {
1273 "SeqId: The sequence corresponding to SeqId "+
1274 id.AsFastaString() +
" could not be found.",
1280 if( hdl.
IsNa() ) {
1283 if( hdl.
IsAa() ) {
1289 if( num_nucs > 0 && num_prts > 0 ) {
1291 "MIXTURE OF NUCS AND PROTS", align);
1306 constvector< CRef< CSeq_id > >& diag_ids = (*diag_seg)->GetIds();
1307 copy(diag_ids.begin(), diag_ids.end(), back_inserter(ids));
1317back_inserter(ids));
1337 id.GetLabel(&
label);
1341 stringseg_string =
"sequence "+
label+
","+ (use_in ?
" in ":
" ") +
1344 ")"+ (use_in ?
", ":
" ") +
"context "+
context;
1357 const string& prefix,
1358 const string& message)
1363 static const char*
kAlignmentTooLong=
"the alignment claims to contain residue coordinates that are past the end of the sequence. Either the sequence is too short, or there are extra characters or formatting errors in the alignment";
1405 size_tdim = dendiag.
GetDim();
1409 const CSeq_id& context_id = *(ids[0]);
1410CDense_diag::TStarts::const_iterator starts_iter =
1413 for(
size_t id= 0;
id< dim; ++id ) {
1417 const CSeq_id& seq_id = *(ids[id]);
1420 if( start >= bslen ) {
1425 if( start +
len> bslen ) {
1437 intdim = denseg.GetDim();
1438 size_tnumseg = denseg.GetNumseg();
1444 bool minus=
false;
1445 const CSeq_id& id_context = *ids[0];
1447 if(numseg > lens.size()) {
1448numseg = lens.size();
1451 for(
unsigned id= 0;
id< ids.size(); ++id) {
1453 minus= denseg.IsSetStrands() &&
1456 for(
unsignedseg = 0; seg < numseg; ++seg) {
1458 id+ (
minus? numseg - seg - 1 : seg) * dim;
1459 if(curr_index >= starts.size()) {
1463 if( starts[curr_index] == -1 ) {
1466 size_tlens_index =
minus? numseg - seg - 1 : seg;
1469 if( starts[curr_index] + lens[lens_index] > bslen ) {
1474 size_tnext_index = curr_index;
1476 for( next_seg = seg + 1; next_seg < numseg; ++next_seg ) {
1478 id+ (
minus? numseg - next_seg - 1 : next_seg) * dim;
1479 if( starts[next_index] != -1 ) {
1483 if( next_seg == numseg || next_index == curr_index ) {
1489 if( starts[curr_index] + (
TSignedSeqPos)lens[lens_index] !=
1490starts[next_index] ) {
1492 "Start/Length: There is a problem with "+
1493 s_DescribeSegment(*(ids[
id]), id_context, seg + 1, starts[curr_index],
true) +
1494 ": the segment is too long or short or the next segment has an incorrect start position", align);
1505 static Ucharbits[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };
1507 if(!packed.IsSetDim() || !packed.IsSetIds() || !packed.IsSetPresent() || !packed.IsSetNumseg()) {
1511 size_tdim = packed.GetDim();
1512 size_tnumseg = packed.GetNumseg();
1515CPacked_seg::TIds::const_iterator id_it = packed.GetIds().begin();
1516 const CSeq_id& id_context = **id_it;
1518 for(
size_t id= 0;
id< dim && id_it != packed.GetIds().end(); ++id, ++id_it ) {
1522(*id_it)->GetLabel (&
label);
1523 TSeqPosseg_start = packed.GetStarts()[id];
1527 for(
size_tseg = 0; seg < numseg; ++seg ) {
1528 size_t i=
id+ seg * dim;
1529 if(
i/8 < present.size() && (present[
i/ 8] & bits[
i% 8]) ) {
1530seg_start += packed.GetLens()[seg];
1542 const TStd& std_segs,
1548 const CSeq_id& id_context = *(stdseg.
GetLoc().front()->GetId());
1556 id->Assign(*(stdseg.
GetIds()[seg - 1]));
1558 id->SetLocal().SetStr(
"?");
1562 "Length",
"End point is less than zero in segment");
1565 "Start",
"Start point is less than zero");
1583 if( from > bslen - 1 ) {
1587 if( to > bslen - 1 ) {
1593 if( loclen > bslen ) {
User-defined methods of the data storage class.
@ eExtreme_Positional
numerical value
User-defined methods of the data storage class.
@ eErr_SEQ_ALIGN_SegsDimSeqIdNotMatch
@ eErr_SEQ_ALIGN_AlignDimSeqIdNotMatch
@ eErr_SEQ_ALIGN_SeqIdProblem
@ eErr_SEQ_ALIGN_SegsStartsMismatch
@ eErr_SEQ_ALIGN_PercentIdentity
@ eErr_SEQ_ALIGN_DensegLenStart
@ eErr_SEQ_ALIGN_AlignDimOne
@ eErr_SEQ_ALIGN_SegsDimOne
@ eErr_SEQ_ALIGN_LenMorethanBiolen
@ eErr_SEQ_ALIGN_SegsNumsegMismatch
@ eErr_SEQ_ALIGN_UnexpectedAlignmentType
@ eErr_SEQ_ALIGN_SegmentGap
@ eErr_SEQ_ALIGN_SumLenStart
@ eErr_SEQ_ALIGN_NullSegs
@ eErr_SEQ_ALIGN_StrandRev
@ eErr_SEQ_ALIGN_NucProtMixture
@ eErr_SEQ_ALIGN_FastaLike
@ eErr_SEQ_ALIGN_SegsDimMismatch
@ eErr_SEQ_ALIGN_StartLessthanZero
@ eErr_SEQ_ALIGN_StartMorethanBiolen
@ eErr_SEQ_ALIGN_EndMorethanBiolen
@ eErr_SEQ_ALIGN_EndLessthanZero
void BuildAln(TAnchoredAlnVec &in_alns, CAnchoredAln &out_aln, const CAlnUserOptions &options, TAlnSeqIdIRef pseudo_seqid=TAlnSeqIdIRef())
Build anchored alignment from a set of alignmnets.
void CreateAnchoredAlnVec(_TAlnStats &aln_stats, TAnchoredAlnVec &out_vec, const CAlnUserOptions &options)
Create anchored alignment from each seq-align in the stats.
Container mapping seq-aligns to vectors of participating seq-ids.
void push_back(const CSeq_align &aln)
Adding an alignment.
TSeqPos GetAlnStop(TNumseg seg) const
Default IAlnSeqId implementation based on CSeq_id_Handle.
Helper class which collects seq-align statistics: seq-ids participating in alignments and rows,...
Options for different alignment manager operations.
void SetEndChar(TResidue gap_char)
void SetGapChar(TResidue gap_char)
string & GetColumnVector(string &buffer, TSeqPos aln_pos, TResidueCount *residue_count=0, bool gaps_in_count=false) const
Query-anchored alignment can be 2 or multi-dimentional.
TSignedSeqPos GetSeqAlnStart(TNumrow row) const
TRng GetAlnRange(void) const
Get whole alignment range.
TSignedSeqPos GetSeqAlnStop(TNumrow row) const
CAnchoredAln::TDim TDim
Synonym of TNumrow.
string & GetAlnSeqString(TNumrow row, string &buffer, const TSignedRange &rq_aln_rng, bool force_translation=false) const
Fetch alignment sequence data.
TSignedSeqPos GetAlnPosFromSeqPos(TNumrow row, TSeqPos seq_pos, ESearchDirection dir=eNone, bool try_reverse_dir=true) const
Map sequence position to alignment coordinates.
TSignedSeqPos GetSeqPosFromAlnPos(TNumrow for_row, TSeqPos aln_pos, ESearchDirection dir=eNone, bool try_reverse_dir=true) const
TDim GetDim(void) const
Alignment dimension (number of sequence rows in the alignment)
const objects::CSeq_id & GetSeqId(TNumrow row) const
Get seq-id for the row.
static bool AlignmentScorePercentIdOk(const CSeq_align &align)
void x_ValidatePacked(const TPacked &packed, const CSeq_align &align)
void x_ValidateDendiag(const TDendiag &dendiags, const CSeq_align &align)
static TSegmentGapV FindSegmentGaps(const TPacked &packed)
void x_ReportSegmentGaps(const TSegmentGapV &seggaps, const CSeq_align &align)
void ValidateSeqAlign(const CSeq_align &align, int order=-1)
CSeq_align::C_Segs::TDenseg TDenseg
void x_ValidateSegmentGap(const TDenseg &denseg, const CSeq_align &align)
void x_ValidateSeqId(const CSeq_align &align)
bool x_ValidateDim(T &obj, const CSeq_align &align, size_t part=0)
static bool IsTpaAlignment(const CDense_seg &denseg, CScope &scope)
void x_ValidateStrand(const TDenseg &denseg, const CSeq_align &align)
CSeq_align::C_Segs::TDendiag TDendiag
void x_GetIds(const CSeq_align &align, vector< CRef< CSeq_id > > &ids)
void x_ReportStartMoreThanBiolen(const CSeq_align &align, const CSeq_id &id, const CSeq_id &id_context, size_t segment, size_t pos)
void x_ReportAlignErr(const CSeq_align &align, const CSeq_id &id, const CSeq_id &id_context, size_t segment, size_t pos, EErrType et, EDiagSev sev, const string &prefix, const string &message)
void x_ReportSumLenStart(const CSeq_align &align, const CSeq_id &id, const CSeq_id &id_context, size_t segment, size_t pos)
CSeq_align::C_Segs::TPacked TPacked
~CValidError_align() override
CSeq_align::C_Segs::TStd TStd
void x_ValidateAlignPercentIdentity(const CSeq_align &align, bool internal_gaps)
void x_ValidateFastaLike(const TDenseg &denseg, const CSeq_align &align)
void x_ValidateDenseg(const TDenseg &denseg, const CSeq_align &align)
void x_ValidateSeqLength(const TDenseg &denseg, const CSeq_align &align)
void x_ValidateStd(const TStd &stdsegs, const CSeq_align &align)
vector< TSegmentGap > TSegmentGapV
void PostErr(EDiagSev sv, EErrType et, const string &msg, const CSerialObject &obj)
bool IsRemoteFetch() const
Include a standard set of the NCBI C++ Toolkit most basic headers.
static const char * column
unsigned int TSeqPos
Type for sequence locations and lengths.
constexpr size_t ArraySize(const Element(&)[Size])
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
int TSignedSeqPos
Type for signed sequence position.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
EDiagSev
Severity level for the posted diagnostics.
@ eDiag_Error
Error message.
@ eDiag_Warning
Warning message.
const string & GetMsg(void) const
Get message string.
void GetLabel(string *label, ELabelType type=eDefault, TLabelFlags flags=fLabel_Default) const
Append a label for this Seq-id to the supplied string.
@ eContent
Untagged human-readable accession or the like.
TRange GetTotalRange(void) const
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
const CSeq_id * GetId(void) const
Get the id of the location return NULL if has multiple ids or no id at all.
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,...
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
ENa_strand GetStrand(const CSeq_loc &loc, CScope *scope=0)
Returns eNa_strand_unknown if multiple Bioseqs in loc Returns eNa_strand_other if multiple strands in...
bool IsOneBioseq(const CSeq_loc &loc, CScope *scope)
Returns true if all embedded CSeq_ids represent the same CBioseq, else false.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
CConstRef< CBioseq > GetCompleteBioseq(void) const
Get the complete bioseq.
TSeqPos GetBioseqLength(void) const
CSeqVector GetSeqVector(EVectorCoding coding, ENa_strand strand=eNa_strand_plus) const
Get sequence: Iupacna or Iupacaa if use_iupac_coding is true.
const TInst & GetInst(void) const
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
unsigned char Uchar
Alias for unsigned char.
position_type GetLength(void) const
#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.
static string SizetToString(size_t value, TNumToStringFlags flags=0, int base=10)
Convert size_t to string.
static bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the string.
static string UIntToString(unsigned int value, TNumToStringFlags flags=0, int base=10)
Convert UInt to string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
static bool Equal(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2, ECase use_case=eCase)
Test for equality of a substring with another string.
static string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
static const char label[]
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
bool IsStr(void) const
Check if variant Str is selected.
bool IsSetType(void) const
type of object within class Check if a value has been assigned to Type data member.
const TStr & GetStr(void) const
Get the variant data.
const TType & GetType(void) const
Get the Type member data.
const TDenseg & GetDenseg(void) const
Get the variant data.
vector< CRef< CSeq_loc > > TLoc
E_Choice Which(void) const
Which variant is currently selected.
vector< CRef< CScore > > TScore
const TLoc & GetLoc(void) const
Get the Loc member data.
E_Choice
Choice variants.
const TStarts & GetStarts(void) const
Get the Starts member data.
vector< ENa_strand > TStrands
bool IsSetSegs(void) const
Check if a value has been assigned to Segs data member.
const TIds & GetIds(void) const
Get the Ids member data.
TLen GetLen(void) const
Get the Len member data.
vector< TSignedSeqPos > TStarts
vector< CRef< CSeq_id > > TIds
vector< CRef< CSeq_id > > TIds
TDim GetDim(void) const
Get the Dim member data.
const TIds & GetIds(void) const
Get the Ids member data.
bool IsSetIds(void) const
Check if a value has been assigned to Ids data member.
TDim GetDim(void) const
Get the Dim member data.
bool IsSetType(void) const
Check if a value has been assigned to Type data member.
const TPacked & GetPacked(void) const
Get the variant data.
const TStd & GetStd(void) const
Get the variant data.
const TIds & GetIds(void) const
Get the Ids member data.
TDim GetDim(void) const
Get the Dim member data.
const TDendiag & GetDendiag(void) const
Get the variant data.
bool IsStd(void) const
Check if variant Std is selected.
bool IsSetStrands(void) const
Check if a value has been assigned to Strands data member.
TType GetType(void) const
Get the Type member data.
const TIds & GetIds(void) const
Get the Ids member data.
const TStrands & GetStrands(void) const
Get the Strands member data.
bool IsSetScore(void) const
for whole alignment Check if a value has been assigned to Score data member.
const TStarts & GetStarts(void) const
Get the Starts member data.
TNumseg GetNumseg(void) const
Get the Numseg member data.
list< CRef< CSeq_align > > Tdata
TIds & SetIds(void)
Assign a value to Ids data member.
const TScore & GetScore(void) const
Get the Score member data.
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.
bool IsSetIds(void) const
sequences in order Check if a value has been assigned to Ids data member.
@ e_not_set
No variant selected.
@ eType_partial
mapping pieces together
bool IsEmpty(void) const
Check if variant Empty is selected.
ENa_strand
strand of nucleic acid
bool IsWhole(void) const
Check if variant Whole is selected.
bool IsNull(void) const
Check if variant Null is selected.
const TUser & GetUser(void) const
Get the variant data.
TLength GetLength(void) const
Get the Length member data.
@ e_User
user defined object
const string version
version string
double value_type
The numeric datatype used by the parser.
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
vector< CRef< CAnchoredAln > > TAnchoredAlnVec
Collection of anchored alignments.
static int match(PCRE2_SPTR start_eptr, PCRE2_SPTR start_ecode, uint16_t top_bracket, PCRE2_SIZE frame_size, pcre2_match_data *match_data, match_block *mb)
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
#define row(bind, expected)
static const char * kAlignmentTooLong
void s_CalculateMatchingColumns(const CDense_seg &denseg, TSeqPos &col, size_t &num_match, bool &ids_missing, bool internal_gaps, CScope &scope)
string s_DescribeSegment(const CSeq_id &id, const CSeq_id &id_context, size_t segment, size_t pos, bool use_in=false)
static unsigned s_GetNumIdsToUse(const CDense_seg &denseg)
static bool s_AmbiguousMatch(char a, char b)
static void GetInvalidSeqAlignTypeStr(CSeq_align::C_Segs::E_Choice segtype, int order, string &msg)
struct ambchar AmbCharData
bool s_DensegHasAccessionWithZeroVersion(const CDense_seg &denseg)
static const AmbCharData ambiguity_list[]
static size_t s_PercentBioseqMatch(CBioseq_Handle b1, CBioseq_Handle b2)
static const int num_ambiguities
void s_FixZeroVersions(CDense_seg &denseg)
static CS_CONTEXT * context
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