( min < 0 || min > 100 ) {
85 if( max <= 0 || max > 100 ) {
121 ") length mismatch", seq, graph);
146 "Bioseq not found for Graph location "+
label, graph);
155 "SeqGraph location ("+
label+
") is invalid", graph);
177 if(start1 < start2) {
179}
else if(start1 == start2 && stop1 < stop2) {
193vector <CRef <CSeq_graph> > graph_list;
196 if((*it)->IsGraph()) {
200graph_list.push_back(
r);
206 if(graph_list.size() == 0) {
211 booloverlaps =
false;
213 size_tnum_graphs = 0;
214 size_tgraphs_len = 0;
223 size_tNs_with_score = 0,
225ACGTs_without_score = 0,
233 for(vector<
CRef <CSeq_graph>>::iterator grp = graph_list.begin(); grp != graph_list.end(); ++grp) {
237 x_ValidateGraphValues(graph, seq, first_N, first_ACGT, num_bases, Ns_with_score, gaps_with_score, ACGTs_without_score, vals_below_min, vals_above_max);
244overlap_graph = &graph;
253 if( ACGTs_without_score > 0 ) {
254 if(ACGTs_without_score * 10 > num_bases) {
255 doublepct = (double) (ACGTs_without_score) * 100.0 / (double) num_bases;
264 " ACGT bases have zero score value - first one at position "+
268 if( Ns_with_score > 0 ) {
269 if(Ns_with_score * 10 > num_bases) {
270 doublepct = (double) (Ns_with_score) * 100.0 / (double) num_bases;
279 " N bases have positive score value - first one at position "+
283 if( gaps_with_score > 0 ) {
286 " gap bases have positive score value",
289 if( vals_below_min > 0 ) {
292 " quality scores have values below the reported minimum or 0",
295 if( vals_above_max > 0 ) {
298 " quality scores have values above the reported maximum or 100",
304 "Graph components overlap, with multiple scores for " 305 "a single base", seq, *overlap_graph);
309 if( (seq_len != graphs_len) && (inst.
GetLength() != graphs_len) ) {
325 if(graph_list.size() < 2) {
332 for(
size_t i= 1;
i< graph_list.size();
i++) {
337|| (left == last_left && right < last_right)) {
339 "Graph components are out of order - may be a software bug",
355 size_t& Ns_with_score,
356 size_t& gaps_with_score,
357 size_t& ACGTs_without_score,
358 size_t& vals_below_min,
359 size_t& vals_above_max)
388CByte_graph::TValues::const_iterator val_iter = values.begin();
389CByte_graph::TValues::const_iterator val_end = values.end();
391 size_tscore_pos = 0;
393 while(seq_iter != seq_end && score_pos < graph.
GetNumval()) {
397 if(val_iter == val_end) {
400 val= (short)(*val_iter);
425ACGTs_without_score++;
426 if(first_ACGT == -1) {
447 string(
"Exception while validating graph values. EXCEPTION: ") +
457CDelta_ext::Tdata::const_iterator curr =
delta.Get().begin(),
459end =
delta.Get().end();
461 size_tnum_delta_seq = 0;
469 while( curr != end && grp ) {
472 switch( (*curr)->Which() ) {
474 const CSeq_loc& loc = (*curr)->GetLoc();
481 ") length mismatch", graph);
505 ") length mismatch", graph);
508 if( graph_loc.
IsInt() ) {
515 ") start do not coincide",
519 if( to !=
offset+ litlen - 1 ) {
524 ") stop do not coincide",
544 while( curr != end) {
546 switch( (*curr)->Which() ) {
548 const CSeq_loc& loc = (*curr)->GetLoc();
573 size_tnum_graphs = 0;
582 if( num_delta_seq != num_graphs ) {
584 "Different number of SeqGraph ("+
621 switch( (*dseq)->Which() ) {
626 if( (*dseq)->GetLiteral().IsSetSeq_data() && !(*dseq)->GetLiteral().GetSeq_data().IsGap() ) {
627seq_len += (*dseq)->GetLiteral().GetLength();
642 if(
delta.IsLiteral() ) {
@ eExtreme_Positional
numerical value
User-defined methods of the data storage class.
@ eErr_SEQ_GRAPH_GraphACGTScoreMany
@ eErr_SEQ_GRAPH_GraphDiffNumber
@ eErr_SEQ_GRAPH_GraphNScore
@ eErr_SEQ_GRAPH_GraphBioseqId
@ eErr_SEQ_GRAPH_GraphOverlap
@ eErr_SEQ_GRAPH_GraphByteLen
@ eErr_SEQ_GRAPH_GraphSeqLocLen
@ eErr_SEQ_GRAPH_GraphGapScore
@ eErr_SEQ_GRAPH_GraphNScoreMany
@ eErr_SEQ_GRAPH_GraphSeqLitLen
@ eErr_SEQ_GRAPH_GraphMax
@ eErr_SEQ_GRAPH_GraphLocInvalid
@ eErr_SEQ_GRAPH_GraphAbove
@ eErr_SEQ_GRAPH_GraphBioseqLen
@ eErr_SEQ_GRAPH_GraphStopPhase
@ eErr_SEQ_GRAPH_GraphStartPhase
@ eErr_SEQ_GRAPH_GraphACGTScore
@ eErr_SEQ_GRAPH_GraphOutOfOrder
@ eErr_INTERNAL_Exception
@ eErr_SEQ_GRAPH_GraphMin
@ eErr_SEQ_GRAPH_GraphBelow
const CSeq_id * GetFirstId() const
void PostErr(EDiagSev sv, EErrType et, const string &msg, const CSerialObject &obj)
static bool IsSupportedGraphType(const CSeq_graph &graph)
~CValidError_graph() override
void x_ValidateMinValues(const CByte_graph &bg, const CSeq_graph &graph)
void x_ValidateGraphValues(const CSeq_graph &graph, const CBioseq &seq, int &first_N, int &first_ACGT, size_t &num_bases, size_t &Ns_with_score, size_t &gaps_with_score, size_t &ACGTs_without_score, size_t &vals_below_min, size_t &vals_above_max)
void x_ValidateMaxValues(const CByte_graph &bg, const CSeq_graph &graph)
size_t GetUngappedSeqLen(const CBioseq &seq)
void ValidateSeqGraph(const CSeq_graph &graph)
bool x_GetLitLength(const CDelta_seq &delta, TSeqPos &len)
void ValidateGraphsOnBioseq(const CBioseq &seq)
void x_ValidateGraphOrderOnBioseq(const CBioseq &seq, vector< CRef< CSeq_graph > > graph_list)
bool x_ValidateGraphLocation(const CSeq_graph &graph)
void ValidateSeqGraphContext(const CSeq_graph &graph, const CBioseq_set &set)
void x_ValidateGraphOnDeltaBioseq(const CBioseq &seq)
const CTSE_Handle & GetTSE_Handle()
void IncrementMisplacedGraphCount()
CBioseq_Handle GetBioseqHandleFromLocation(CScope *scope, const CSeq_loc &loc, const CTSE_Handle &tse)
Include a standard set of the NCBI C++ Toolkit most basic headers.
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
EDiagSev
Severity level for the posted diagnostics.
@ eDiag_Error
Error message.
@ eDiag_Warning
Warning message.
@ eDiag_Fatal
Fatal error â guarantees exit(or abort)
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
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.
ENa_strand GetStrand(void) const
Get the location's strand.
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.
TSeqPos GetStop(ESeqLocExtremes ext) const
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...
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
TSeqPos GetBioseqLength(void) const
@ eCoding_Ncbi
Set coding to binary coding (Ncbi4na or Ncbistdaa)
TSeqPos GetPos(void) const
const CSeq_graph & GetOriginalGraph(void) const
Get original graph with unmapped location/product.
void SetCoding(TCoding coding)
const_iterator begin(void) const
const_iterator end(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 string DoubleToString(double value, int precision=-1, TNumToStringFlags flags=0)
Convert double to string.
static int CompareNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive compare of a substring with another 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 const char label[]
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
E_Choice Which(void) const
Which variant is currently selected.
bool IsInt(void) const
Check if variant Int is selected.
bool IsNull(void) const
Check if variant Null is selected.
@ e_not_set
No variant selected.
bool IsSetLoc(void) const
region this applies to Check if a value has been assigned to Loc data member.
const TGraph & GetGraph(void) const
Get the Graph member data.
const TTitle & GetTitle(void) const
Get the Title member data.
TMax GetMax(void) const
Get the Max member data.
const TByte & GetByte(void) const
Get the variant data.
TMin GetMin(void) const
Get the Min member data.
const TValues & GetValues(void) const
Get the Values member data.
bool IsByte(void) const
Check if variant Byte is selected.
const TLoc & GetLoc(void) const
Get the Loc member data.
TNumval GetNumval(void) const
Get the Numval member data.
bool IsSetTitle(void) const
Check if a value has been assigned to Title data member.
TRepr GetRepr(void) const
Get the Repr member data.
const TInst & GetInst(void) const
Get the Inst member data.
bool IsSetAnnot(void) const
Check if a value has been assigned to Annot data member.
TLength GetLength(void) const
Get the Length member data.
TLength GetLength(void) const
Get the Length member data.
const TExt & GetExt(void) const
Get the Ext member data.
const TDelta & GetDelta(void) const
Get the variant data.
bool IsSetSeq_data(void) const
may have the data Check if a value has been assigned to Seq_data data member.
list< CRef< CDelta_seq > > Tdata
bool IsGap(void) const
Check if variant Gap is selected.
const TSeq_data & GetSeq_data(void) const
Get the Seq_data member data.
@ eRepr_delta
sequence made by changes (delta) to others
@ eRepr_raw
continuous sequence
@ e_Ncbi4na
4 bit nucleic acid code
@ e_Literal
a piece of sequence
@ e_Loc
point to a sequence
constexpr auto sort(_Init &&init)
Int4 delta(size_t dimension_, const Int4 *score_)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
#define FOR_EACH_ANNOT_ON_BIOSEQ
#define FOR_EACH_GRAPH_ON_ANNOT
bool s_CompareTwoSeqGraphs(const CRef< CSeq_graph > g1, const CRef< CSeq_graph > g2)
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