sequence;
172shared_ptr<SValidatorContext> pContext,
176m_ErrRepository{errs},
179 x_Init(options, pContext->CumulativeInferenceCount, pContext->NotJustLocalOrGeneral, pContext->IsRefSeq);
185 Reset(initialInferenceCount, notJustLocalOrGeneral, hasRefSeq);
221 return context.PreprocessHugeFile ||
237 returnedit::CHugeAsnReader::IsHugeSet(setClass);
388 if(type_info == CSeqdesc::GetTypeInfo()) {
392}
else if(type_info == CSeq_feat::GetTypeInfo()) {
395}
else if(type_info == CBioseq::GetTypeInfo()) {
398}
else if(type_info == CBioseq_set::GetTypeInfo()) {
401}
else if(type_info == CSeq_annot::GetTypeInfo()) {
404}
else if(type_info == CSeq_graph::GetTypeInfo()) {
407}
else if(type_info == CSeq_align::GetTypeInfo()) {
410}
else if(type_info == CSeq_entry::GetTypeInfo()) {
413}
else if(type_info == CBioSource::GetTypeInfo()) {
416}
else if(type_info == COrg_ref::GetTypeInfo()) {
419}
else if(type_info == CPubdesc::GetTypeInfo()) {
422}
else if(type_info == CSeq_submit::GetTypeInfo()) {
630 if(sc_GenomeRaiseExceptEmblDdbjRefSeqArray.find(et) != sc_GenomeRaiseExceptEmblDdbjRefSeqArray.end()) {
637 if(sc_GenomeRaiseExceptEmblDdbjArray.find(et) != sc_GenomeRaiseExceptEmblDdbjArray.end()) {
644 if(sc_GenomeRaiseArray.find (et) != sc_GenomeRaiseArray.end()) {
669item->SetErrIndex(et);
679item->SetObj_content(content_label);
683item->SetFeatureId(feature_id);
688item->SetBioseq(bioseq_label);
698item->SetLocation(loc_label);
700item->SetSeqOffset(
offset);
706item->SetProduct_loc(product_label);
714item->SetAccession(accession);
719item->SetAccnver(accession);
740item->SetFeatureObjDescFromFields();
797 const autoisSetClass =
st.IsSetClass();
799 if(isSetClass &&
GetContext().PreprocessHugeFile) {
800 if(
autosetClass =
st.GetClass();
IsHugeSet(setClass)) {
841 ctx.IsSet() &&
ctx.GetSet().IsSetClass()) {
842 if(
autosetClass =
ctx.GetSet().GetClass();
IsHugeSet(setClass)) {
843 stringdesc{
"DESCRIPTOR: "};
845desc +=
"BIOSEQ-SET: ";
848desc +=
"genbank: ";
851desc +=
"wgs-set: ";
922 stringdesc =
"ANNOTATION: ";
954 stringdesc =
"GRAPH: ";
958desc +=
"<Unnamed>";
992 stringdesc(
"GRAPH: ");
996desc +=
"<Unnamed>";
1010 const string&
msg,
1038 stringdesc =
"ALIGNMENT: ";
1040desc += align.ENUM_METHOD_NAME(EType)()->FindName(align.
GetType(),
true);
1046desc +=
", dim=UNASSIGNED";
1063 const string&
msg,
1080 if(entry.
IsSeq()) {
1082}
else if(entry.
IsSet()) {
1085 stringdesc =
"SEQ-ENTRY: ";
1098 const string&
msg,
1116 stringdesc =
"BioSource: ";
1124 const string&
msg,
1142 stringdesc =
"Org-ref: ";
1150 const string&
msg,
1167 stringdesc =
"Pubdesc: ";
1175 const string&
msg,
1192 stringdesc =
"Seq-submit: ";
1200 const string&
msg,
1201 const string& desc,
1203 const string& accession,
1217 const string&
msg,
1234 const string&
msg,
1242reasons =
msg+
" - "+ reasons;
1279 boolhas_mult =
false;
1285desc_ci && !has_mult;
1287 if(desc_ci->GetSource().IsSetOrg()) {
1288 const COrg_ref& org = desc_ci->GetSource().GetOrg();
1292(*it)->IsSetTag() && (*it)->GetTag().IsId()) {
1293 intthis_id = (*it)->GetTag().GetId();
1297}
else if(first_id == 0) {
1299}
else if(first_id != this_id) {
1309 if(has_mult || (phage_id > 0 && first_id > 0)) {
1311 "There are multiple taxonIDs in this RefSeq record.",
1376 "Non-ascii chars in input ASN.1 strings", *seq);
1384 boolhas_gi =
false;
1386 boolhas_nucleotide_sequence =
false;
1389bi && (!
IsINSDInSep() || !has_gi || !has_nucleotide_sequence);
1392 if((*it)->IsGi()) {
1396 if(bi->IsSetInst_Mol() && bi->IsNa()) {
1397has_nucleotide_sequence =
true;
1406 "INSD and RefSeq records should not be present in the same set", *
m_TSE);
1412vector<string> id_strings;
1417 if(!IsNCBIFILESeqId(**it)) {
1419(*it)->GetLabel(&
label);
1420id_strings.push_back(
label);
1424stable_sort (id_strings.begin(), id_strings.end());
1425 for(vector<string>::iterator id_str_it = id_strings.begin();
1426id_str_it != id_strings.end();
1428 stringpattern = (*id_str_it).substr(0, 30);
1429 stringfirst_id = *id_str_it;
1430vector<string>::iterator cmp_it = id_str_it;
1432 while(cmp_it != id_strings.end() &&
NStr::StartsWith(*cmp_it, pattern)) {
1436 "First 30 characters of "+ first_id +
" and "+
1445vector < int > feature_ids;
1447 const CSeq_feat& sf = fi->GetOriginalFeature();
1453 if(feature_ids.size() > 0) {
1455stable_sort (feature_ids.begin(), feature_ids.end());
1456vector <int>::iterator it = feature_ids.begin();
1459 while(it != feature_ids.end()) {
1462 ITERATE( vector<CSeq_feat_Handle>, feat_it, handles ) {
1466 while(it != feature_ids.end() && *it ==
id) {
1469 if(it != feature_ids.end()) {
1481 boolhas_nongps =
false;
1482 boolhas_gps =
false;
1485 if(
si->IsSetClass()) {
1499 if(has_nongps && has_gps) {
1501 "Genomic product set and mut/pop/phy/eco set records should not be present in the same set",
1525 "Skipping validation of remaining /inference qualifiers",
1530 stringprefix, remainder;
1532 size_tnum_accessions = 0;
1534 for(
size_t i= 0;
i< accessions.size();
i++) {
1536 stringacc_prefix, accession;
1544 if(num_accessions > 0) {
1554 "Skipping validation of remaining /inference qualifiers",
1566 if(seh.
IsSeq()) {
1571}
catch(
constexception& e ) {
1573 string(
"Exception while validating bioseq. EXCEPTION: ") +
1577}
else if(seh.
IsSet()) {
1584}
catch(
constexception& e ) {
1586 string(
"Exception while validating bioseq set. EXCEPTION: ") +
1603 " TPAs with history and "+
1605 " without history in this record.", *seq);
1611 " TPAs without history in this record, but the record has a gi number assignment.", *
m_TSE);
1616call_once(
SetContext().ProteinHaveGeneralIDOnceFlag,
1619 "INDEXER_ONLY - Protein bioseqs have general seq-id.",
1633 "There is 1 mispackaged feature in this record.",
1642 "There is 1 mispackaged feature in this small genome set record.",
1649 " gene xrefs and no gene features in this record.", *
m_TSE);
1676 "Far fetch failures caused some validator tests to be bypassed",
1689[
this, &cs, &pEntry]() {
ValidateCitSub(*cs, *pEntry, pEntry); });
1708 "Record release date has already passed", ss);
1725 "Bad last name '"+
last+
"'", ss);
1732 "Bad first name '"+
first+
"'", ss);
1737 "Bad first and last name", ss);
1746 if(
names.IsStd()) {
1748 if( (*name)->GetName().IsName() ) {
1749 const CName_std& nstd = (*name)->GetName().GetName();
1756 "Bad last name '"+
last+
"'", ss);
1763 "Bad first name '"+
first+
"'", ss);
1768 "Bad first and last name", ss);
1789call_once(
SetContext().SubmitBlockOnceFlag,
1810 if(
set.IsSetClass() &&
1817call_once(
SetContext().WgsSetInSeqSubmitOnceFlag,
1820 "File was created as a wgs-set, but should be a batch submission instead.",
1828 "File was created as a wgs-set, but should be a batch submission instead.",
1848 switch(sah.
Which()) {
1852 for(
CFeat_CIfi (sah); fi; ++fi) {
1853 const CSeq_feat& sf = fi->GetOriginalFeature();
1865 const CSeq_align& sa = ai.GetOriginalSeq_align();
1877 const CSeq_graph& sg = gi->GetOriginalGraph();
1998 "dbxref value "+ xref.
GetTag().
GetStr() +
" has SGML",
2003 "dbxref value "+ xref.
GetTag().
GetStr() +
" contains space character",
2008 "dbxref database "+ db +
" has SGML",
2012 boolisStr =
false;
2023 "Illegal db_xref type "+ db +
" ("+ dbv +
")", obj,
ctx);
2027 boolrefseq_db =
false, src_db =
false;
2028 stringcorrect_caps;
2029xref.
GetDBFlags(refseq_db, src_db, correct_caps);
2030 stringmessage =
"Illegal db_xref type "+ db +
" ("+ dbv +
"), legal capitalization is "+ correct_caps;
2032message +=
", but should not be used on an OrgRef";
2034message +=
", but should only be used on an OrgRef";
2042 "RefSeq-specific db_xref type "+ db +
" ("+ dbv +
") should not be used on a non-RefSeq OrgRef",
2046 "db_xref type "+ db +
" ("+ dbv +
") is only legal for RefSeq",
2052 "RefSeq-specific db_xref type "+ db +
" ("+ dbv +
") should not be used on an OrgRef",
2056 "db_xref type "+ db +
" ("+ dbv +
") should not be used on an OrgRef",
2061 "db_xref type "+ db +
" ("+ dbv +
") should only be used on an OrgRef",
2066 if(isStr && db ==
"GeneID") {
2068 "db_xref type "+ db +
" ("+ dbv +
") is required to be an integer",
2084&& (*xref)->IsSetDb()) {
2088 "BioSource uses db "+ last_db +
" multiple times",
2091last_db = (*xref)->GetDb();
2104 lc.int_cur = (*it);
2109 lc.id_prv =
lc.id_cur;
2110 lc.strand_prv =
lc.strand_cur;
2111 lc.int_prv =
lc.int_cur;
2123id_cur = &int_cur->
GetId();
2137 static const char*
kSpaceLeftFirst=
"Should not specify 'space to left' at first position of non-circular sequence";
2138 static const char*
kSpaceRightLast=
"Should not specify 'space to right' at last position of non-circular sequence";
2139 static const char*
kSpaceLeftCircle=
"Should not specify 'circle to left' except at first position of circular sequence";
2140 static const char*
kSpaceRightCircle=
"Should not specify 'circle to right' except at last position of circular sequence";
2146 boolhas_fuzz_from =
false;
2147 boolhas_fuzz_to =
false;
2151has_fuzz_from =
true;
2155has_fuzz_to =
true;
2157 if(! has_fuzz_from && ! has_fuzz_to) {
2162 if(has_fuzz_from && has_fuzz_to && fuzz_from == fuzz_to) {
2166 "Should not specify 'space to left' for both ends of interval", obj);
2171 "Should not specify 'space to right' for both ends of interval", obj);
2176 "Should not specify 'origin of circle' for both ends of interval", obj);
2248 for(; lit; ++lit) {
2250 switch(loc_choice) {
2269 unsigned intnum_mix = 0;
2271 for(; lit; ++lit) {
2283 lc.unmarked_strand =
false;
2284 lc.mixed_strand =
false;
2285 lc.has_other =
false;
2286 lc.has_not_other =
false;
2287 lc.id_cur =
nullptr;
2288 lc.id_prv =
nullptr;
2289 lc.int_cur =
nullptr;
2290 lc.int_prv =
nullptr;
2293 lc.prefix = prefix;
2300 if(
lc.id_cur &&
lc.id_prv &&
2302 if(
lc.strand_prv !=
lc.strand_cur) {
2307 lc.unmarked_strand =
true;
2309 lc.mixed_strand =
true;
2315 lc.has_other =
true;
2317 lc.has_not_other =
true;
2325 switch(loc.Which()) {
2327 lc.int_cur = &loc.GetInt();
2330 lc.has_other =
true;
2332 if((!
lc.chk) && lowerSev) {
2334 TSeqPosfr = loc.GetInt().GetFrom();
2335 TSeqPosto = loc.GetInt().GetTo();
2336 if(fr < length && to >= length) {
2345 lc.strand_cur = loc.GetPnt().IsSetStrand() ?
2348 lc.has_other =
true;
2350 lc.id_cur = &loc.GetPnt().GetId();
2352 lc.int_prv =
nullptr;
2355 lc.strand_cur = loc.GetPacked_pnt().IsSetStrand() ?
2358 lc.has_other =
true;
2360 lc.id_cur = &loc.GetPacked_pnt().GetId();
2362 lc.int_prv =
nullptr;
2370 for(
auto l: loc.GetMix().Get()) {
2377 lc.id_cur =
nullptr;
2378 lc.int_prv =
nullptr;
2388 lc.prefix +
": SeqLoc ["+ lbl +
"] out of range", obj);
2394 lc.strand_prv =
lc.strand_cur;
2395 lc.id_prv =
lc.id_cur;
2397}
catch(
constexception& e ) {
2400 "Exception caught while validating location "+
2401 label+
". Exception: "+ e.what(), obj);
2404 lc.id_cur =
nullptr;
2405 lc.int_prv =
nullptr;
2410(
constCSeq_loc& loc,
2412 boolreport_abutting,
2413 const string& prefix,
2423 if(
lc.has_other &&
lc.has_not_other) {
2426prefix +
": Inconsistent use of other strand SeqLoc ["+
label+
"]", obj);
2427}
else if(
lc.has_other &&
NStr::Equal(prefix,
"Location")) {
2430 "Strand 'other' in location", obj);
2438 "Duplicate exons in location", obj);
2443loc.GetLabel(&
label);
2445prefix +
": SeqLoc ["+
label+
"] has nested SEQLOC_MIX elements",
2453 booltrans_splice =
false;
2454 boolcircular_rna =
false;
2455 boolexception =
false;
2458sfp =
dynamic_cast<const CSeq_feat*
>(&obj);
2463 lc.mixed_strand =
false;
2464 lc.unmarked_strand =
false;
2472trans_splice =
true;
2475circular_rna =
true;
2487prefix +
": Adjacent intervals in SeqLoc ["+
2488loc_lbl +
"]", obj);
2491 if(trans_splice && !
NStr::Equal(prefix,
"Product")) {
2492CSeq_loc_CI li(loc);
2500 boolordered =
true;
2501 boolcircular =
false;
2513loc.GetLabel(&
label);
2515 "Exception caught while validating location "+
2516 label+
". Exception: "+ ex.
what(), obj);
2519 if(
lc.mixed_strand ||
lc.unmarked_strand || !ordered) {
2520 if(loc_lbl.empty()) {
2523 if(
lc.mixed_strand) {
2526prefix +
": Mixed strands in SeqLoc [" 2527+ loc_lbl +
"] in small genome set - set trans-splicing exception if appropriate", obj);
2534prefix +
": Mixed strands in SeqLoc [" 2535+ loc_lbl +
"]", obj);
2537}
else if(
lc.unmarked_strand) {
2539prefix +
": Mixed plus and unknown strands in SeqLoc [" 2540+ loc_lbl +
"]", obj);
2542 if(!ordered && !circular_rna) {
2545prefix +
": Intervals out of order in SeqLoc ["+
2546loc_lbl +
"]", obj);
2549prefix +
": Intervals out of order in SeqLoc ["+
2550loc_lbl +
"]", obj);
2564 if(loc_lbl.empty()) {
2565loc.GetLabel(&loc_lbl);
2568prefix +
"Intervals out of order in SeqLoc ["+
2569loc_lbl +
"]", obj);
2574 if(loc_lbl.empty()) {
2575loc.GetLabel(&loc_lbl);
2578prefix +
": Mixed strands in SeqLoc ["+
2579loc_lbl +
"]", obj);
2596 "The product name is missing from this protein.", *(seq.
GetCompleteBioseq()));
2606 if((*it)->IsMolinfo() && (*it)->GetMolinfo().IsSetTech()
2616 boolis_other =
false;
2617 boolhas_gi =
false;
2620 if((*it)->IsOther()) {
2623}
else if((*it)->IsGi()) {
2628 if(!is_other || has_gi) {
2641 if((*it)->IsMolinfo() && (*it)->GetMolinfo().IsSetTech()
2651 boolis_other =
false;
2652 boolhas_gi =
false;
2655 if((*it)->IsOther()) {
2658}
else if((*it)->IsGi()) {
2663 if(!is_other || has_gi) {
2680 "No source information included on this record.", se);
2689 for(
size_t i= 0;
i< num_no_source; ++
i) {
2691 "No organism name included in the source. Other qualifiers may exist.",
2783 if( parent->
IsSet() ) {
2785 if(
set.IsSetClass() &&
set.GetClass() == clss ) {
2796 size_tpos = comment.find(
'[', 0);
2797 while( pos != string::npos ) {
2800 if(
isdigit((
unsigned char) comment[pos]) ) {
2802 if(comment[pos] ==
'0') {
2805 while(
isdigit((
unsigned char) comment[pos]) ) {
2808 if( comment[pos] ==
']'&& okay ) {
2813pos = comment.find(
'[', pos);
2822 if( sid && sid->
IsOther() ) {
2828 if(
GetTSE().IsSeq() ) {
2841vector<TEntrezId>& pmids, vector<TEntrezId>& muids, vector<int>& serials,
2842vector<string>& published_labels, vector<string>& unpublished_labels)
2845 if((*it)->IsPub()) {
2860vector<TEntrezId> pmids;
2861vector<TEntrezId> muids;
2862vector<int> serials;
2863vector<string> published_labels;
2864vector<string> unpublished_labels;
2878 if(
f->IsSetCit() &&
f->GetCit().IsPub()) {
2880 boolfound =
false;
2882 if((*cit_it)->IsPmid()) {
2883vector<TEntrezId>::iterator it = pmids.begin();
2884 while(it != pmids.end() && !found) {
2885 if(*it == (*cit_it)->GetPmid()) {
2892 "Citation on feature refers to uid [" 2894+
"] not on a publication in the record",
2895 f->GetOriginalFeature());
2897}
else if((*cit_it)->IsMuid()) {
2898vector<TEntrezId>::iterator it = muids.begin();
2899 while(it != muids.end() && !found) {
2900 if(*it == (*cit_it)->GetMuid()) {
2907 "Citation on feature refers to uid [" 2909+
"] not on a publication in the record",
2910 f->GetOriginalFeature());
2912}
else if((*cit_it)->IsEquiv()) {
2928vector<string>::iterator unpub_it = unpublished_labels.begin();
2929 while(unpub_it != unpublished_labels.end() && !found) {
2930 size_tit_len =(*unpub_it).length();
2936vector<string>::iterator pub_it = published_labels.begin();
2938 while(pub_it != published_labels.end() && !found) {
2939 size_tit_len =(*pub_it).length();
2942 "Citation on feature needs to be updated to published uid",
2943 f->GetOriginalFeature());
2950 "Citation on feature refers to a publication not in the record",
2951 f->GetOriginalFeature());
2971 const string&
str= *it;
2973 const char& ch = *c_it;
2974 unsigned charchu = ch;
2975 if(ch > 127 || (ch < 32 && ch !=
'\t'&& ch !=
'\r'&& ch !=
'\n')) {
2987 classCScriptTagTextFsm :
public CTextFsm<int>
2990CScriptTagTextFsm() {
2991 const char* script_tags[] = {
2992 "<script",
"<object",
"<applet",
"<embed",
"<form",
2993 "javascript:",
"vbscript:"};
2995AddWord(script_tags[idx],
true);
3002 boolDoesStrHaveFsmHits(
const string&
str) {
3003 int state= GetInitialState();
3006 if( IsMatchFound(
state) ) {
3017 if(s_ScriptTagFsm->DoesStrHaveFsmHits(*it)) {
3019 "Script tag found in item", obj);
3032CSeq_loc_CI curr(loc);
3036CSeq_loc_CI
prev= curr;
3062 for( CSeq_loc_CI it(loc); it && !rval; ++it ) {
3063 if(it.GetSeq_id().IsGi()) {
3093}
else if(!se.
IsSet()) {
3128 while(pub && !pub->IsSub()) {
3139 if(
si->IsSetClass ()) {
3152 const CSeq_id& sid = **sid_itr;
3188 if(acc ==
"NC_") {
3190}
else if(acc ==
"NG_") {
3192}
else if(acc ==
"NM_") {
3194}
else if(acc ==
"NP_") {
3196}
else if(acc ==
"NR_") {
3198}
else if(acc ==
"NZ_") {
3200}
else if(acc ==
"NS_") {
3202}
else if(acc ==
"NT_") {
3204}
else if(acc ==
"NW_") {
3206}
else if(acc ==
"WP_") {
3208}
else if(acc ==
"XR_") {
3261 if(desc_ci->GetSource().IsSetGenome()
3271 if( desc_ci->GetUser().IsSetType() ) {
3274 if( ! oi.
IsStr() )
continue;
3279 if((*field)->IsSetLabel() && (*field)->GetLabel().IsStr()) {
3280 if(
NStr::EqualNocase((*field)->GetLabel().GetStr(),
"Annotation Pipeline")) {
3281 if(
NStr::EqualNocase((*field)->GetData().GetStr(),
"NCBI eukaryotic genome annotation pipeline")) {
3298 if(feat_ci->IsSetProduct() &&
s_SeqLocHasGI(feat_ci->GetProduct())) {
3301 if(feat_ci->IsSetData() && feat_ci->GetData().IsGene()
3302&& feat_ci->GetData().GetGene().IsSetLocus_tag()
3303&& !
NStr::IsBlank(feat_ci->GetData().GetGene().GetLocus_tag())) {
3385(
constCSeq_loc& loc,
3388 for( CSeq_loc_CI lit(loc); lit; ++lit ) {
3389 const CSeq_id& id1 = lit.GetSeq_id();
3390CSeq_loc_CI lit2 = lit;
3391 for( ++lit2; lit2; ++lit2 ) {
3392 const CSeq_id& id2 = lit2.GetSeq_id();
3396 "Two ids refer to the same bioseq but are of " 3397 "different type", obj);
3402 "Feature locations should not use Seq-ids that will be stripped during ID load", obj);
3407 "Feature location intervals should all be on the same sequence", obj);
3520 #define ADD_BARCODE_ERR(TestName) \ 3521 PostErr(eDiag_Warning, eErr_GENERIC_Barcode##TestName, k##TestName, sq); \ 3522 if (!msg.empty()) { \ 3531 const CBioseq& sq = *(
r.bsh.GetCompleteBioseq());
3546 if(!
r.percent_n.empty()) {
3548 if(!
msg.empty()) {
3553 if(
r.collection_date) {
3556 if(
r.order_assignment) {
3559 if(
r.low_trace) {
3562 if(
r.frame_shift) {
3565 if(!
r.structured_voucher) {
3635 const string&
msg,
3655 const string&
msg,
3665 const string&
msg,
3675 const string&
msg,
3686 const string&
msg,
3696 const string&
msg,
3705 const string&
msg,
3715 const string&
msg,
3726 const string&
msg,
3736 const string&
msg,
3752 if(!parent || !parent.
IsSet()) {
3779}
else if(seh.
IsSeq()) {
3790appropriate_parent = gps;
3795appropriate_parent = gp;
3797appropriate_parent = np;
3800appropriate_parent = seh;
3802 returnappropriate_parent;
3814 return*find_iter->second;
3819*pub, pInfo->m_pmids, pInfo->m_muids,
3820pInfo->m_serials, pInfo->m_published_labels,
3821pInfo->m_unpublished_labels);
3854 returnfind_iter->second;
3874 for( ; feat_ci; ++feat_ci ) {
3883 SFeatKeyany_type_key = inner_feat_key;
3887 SFeatKeyany_subtype_key = inner_feat_key;
3889 m_featCache[any_subtype_key].push_back(*feat_ci);
3892 SFeatKeyany_type_or_subtype_key = inner_feat_key;
3895 m_featCache[any_type_or_subtype_key].push_back(*feat_ci);
3907 constvector<SFeatKey> &featKeys)
3909 if( featKeys.empty() ) {
3915 ITERATE(vector<SFeatKey>, feat_it, featKeys) {
3916 if( feat_it->bioseq_h != bioseq_h ) {
3917 throwruntime_error(
"GetFeatFromCacheMulti must be called with only 1 bioseq in its args");
3925 ITERATE(vector<SFeatKey>, key_it, featKeys ) {
3928set_of_feats, set_of_feats.
begin()));
3940 if( set_of_feats.
find(*feat_it) != set_of_feats.
end() ) {
3941answer->push_back(*feat_it);
3984 _ASSERT(search_bsh || tse_arg);
4002 for( ; gene_ci; ++gene_ci ) {
4017 const string& locus_tag = (
4033 returnfind_iter->second;
4049 for( ; bioseq_ci; ++bioseq_ci ) {
4051 for( ; feat_ci; ++feat_ci ) {
4065 returnfind_iter->second;
4068 returnkEmptyFeatToBioseqCache.
Get();
4083 for( ; bioseq_ci; ++bioseq_ci ) {
4097 returnfind_iter->second;
4100 returns_EmptyResult.
Get();
4114 for( CSeq_loc_CI citer (loc); citer; ++citer) {
static CRef< CScope > m_Scope
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.
@ eExtreme_Positional
numerical value
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.
@ eErr_SEQ_FEAT_WrongQualOnImpFeat
@ eErr_SEQ_DESCR_ObsoleteSourceQual
@ eErr_SEQ_DESCR_ObsoleteSourceLocation
@ eErr_SEQ_INST_FarFetchFailure
@ eErr_SEQ_FEAT_WholeLocation
@ eErr_GENERIC_MissingPubRequirement
@ eErr_SEQ_FEAT_EcNumberProblem
@ eErr_SEQ_FEAT_DuplicateAnticodonInterval
@ eErr_SEQ_INST_CompleteGenomeHasGaps
@ eErr_SEQ_FEAT_CDShasTooManyXs
@ eErr_SEQ_FEAT_TranslExceptPhase
@ eErr_SEQ_FEAT_MinusStrandProtein
@ eErr_SEQ_INST_CompleteTitleProblem
@ eErr_SEQ_DESCR_UnwantedCompleteFlag
@ eErr_SEQ_FEAT_GeneXrefWithoutLocus
@ eErr_SEQ_FEAT_BadLocation
@ eErr_SEQ_FEAT_GenesInconsistent
@ eErr_SEQ_INST_HighNContentStretch
@ eErr_SEQ_PKG_NoBioseqFound
@ eErr_SEQ_FEAT_PseudoRnaHasProduct
@ eErr_SEQ_DESCR_InconsistentBioSources
@ eErr_GENERIC_PastReleaseDate
@ eErr_SEQ_DESCR_BioSourceDbTagConflict
@ eErr_SEQ_FEAT_UnknownImpFeatQual
@ eErr_SEQ_FEAT_DuplicateExonInterval
@ eErr_GENERIC_UnnecessaryPubEquiv
@ eErr_SEQ_DESCR_BioSourceOnProtein
@ eErr_SEQ_DESCR_LatLonRange
@ eErr_SEQ_FEAT_UnnecessaryTranslExcept
@ eErr_SEQ_GRAPH_GraphBioseqId
@ eErr_SEQ_FEAT_MixedStrand
@ eErr_SEQ_FEAT_BadRRNAcomponentOrder
@ eErr_SEQ_DESCR_DuplicatePCRPrimerSequence
@ eErr_SEQ_FEAT_BadGeneOntologyFormat
@ eErr_SEQ_DESCR_LatLonCountry
@ eErr_SEQ_PKG_NucProtSetHasTitle
@ eErr_SEQ_FEAT_IllegalDbXref
@ eErr_GENERIC_SgmlPresentInText
@ eErr_SEQ_FEAT_BadAnticodonAA
@ eErr_SEQ_FEAT_MissingCDSproduct
@ eErr_SEQ_FEAT_FeatureBeginsOrEndsInGap
@ eErr_SEQ_FEAT_TranslExceptAndRnaEditing
@ eErr_GENERIC_BarcodeTooManyNs
@ eErr_SEQ_PKG_BioseqSetClassNotSet
@ eErr_SEQ_DESCR_NoOrgFound
@ eErr_SEQ_FEAT_MissingProteinName
@ eErr_SEQ_DESCR_BadPCRPrimerSequence
@ eErr_SEQ_FEAT_GeneXrefWithoutGene
@ eErr_SEQ_DESCR_TransgenicProblem
@ eErr_SEQ_PKG_MissingSetTitle
@ eErr_SEQ_FEAT_InvalidQualifierValue
@ eErr_SEQ_FEAT_GeneOntologyTermMissingGOID
@ eErr_SEQ_FEAT_ProtRefHasNoData
@ eErr_SEQ_GRAPH_GraphSeqLocLen
@ eErr_SEQ_DESCR_InvalidForType
@ eErr_SEQ_DESCR_LatLonValue
@ eErr_SEQ_FEAT_FeatureCitationProblem
@ eErr_SEQ_DESCR_IdenticalInstitutionCode
@ eErr_SEQ_PKG_ImproperlyNestedSets
@ eErr_SEQ_INST_UnknownLengthGapNot100
@ eErr_SEQ_FEAT_WrongQualOnFeature
@ eErr_SEQ_FEAT_MultipleProtRefs
@ eErr_SEQ_FEAT_MultipleEquivPublications
@ eErr_SEQ_PKG_SeqSubmitWithWgsSet
@ eErr_SEQ_PKG_InconsistentMoltypeSet
@ eErr_SEQ_INST_ConflictingBiomolTech
@ eErr_SEQ_FEAT_MissingQualOnImpFeat
@ eErr_SEQ_PKG_INSDRefSeqPackaging
@ eErr_SEQ_FEAT_LocusCollidesWithLocusTag
@ eErr_SEQ_PKG_GPSnonGPSPackaging
@ eErr_SEQ_DESCR_BadCollectionDate
@ eErr_SEQ_FEAT_MultipleEquivBioSources
@ eErr_SEQ_FEAT_CDSwithNoMRNAOverlap
@ eErr_SEQ_DESCR_BadInstitutionCode
@ eErr_SEQ_FEAT_PeptideFeatOutOfFrame
@ eErr_SEQ_FEAT_ProteinNameHasPMID
@ eErr_SEQ_FEAT_RepeatRegionNeedsNote
@ eErr_SEQ_DESCR_BadAltitude
@ eErr_SEQ_FEAT_GeneXrefStrandProblem
@ eErr_SEQ_FEAT_MissingTrnaAA
@ eErr_GENERIC_NonAsciiAsn
@ eErr_SEQ_FEAT_CDSwithMultipleMRNAs
@ eErr_SEQ_FEAT_CollidingFeatureIDs
@ eErr_SEQ_DESCR_IncorrectlyFormattedVoucherID
@ eErr_SEQ_FEAT_OrfCdsHasProduct
@ eErr_SEQ_FEAT_ImproperBondLocation
@ eErr_SEQ_PKG_GraphPackagingProblem
@ eErr_SEQ_INST_OverlappingDeltaRange
@ eErr_SEQ_FEAT_BadTranssplicedInterval
@ eErr_SEQ_INST_SeqLocLength
@ eErr_SEQ_DESCR_MultipleTaxonIDs
@ eErr_SEQ_DESCR_BadKeyword
@ eErr_SEQ_FEAT_UnknownImpFeatKey
@ eErr_SEQ_DESCR_Inconsistent
@ eErr_SEQ_PKG_ArchaicFeatureLocation
@ eErr_GENERIC_BarcodeTestFails
@ eErr_SEQ_FEAT_NestedSeqLocMix
@ eErr_SEQ_FEAT_ShortIntron
@ eErr_SEQ_FEAT_UnknownFeatureQual
@ eErr_SEQ_DESCR_MultipleChromosomes
@ eErr_SEQ_FEAT_InconsistentGeneOntologyTermAndId
@ eErr_SEQ_PKG_MisplacedMolInfo
@ eErr_GENERIC_EmbeddedScript
@ eErr_GENERIC_BarcodeTestPasses
@ eErr_SEQ_GRAPH_GraphAbove
@ eErr_SEQ_FEAT_FeatureInsideGap
@ eErr_SEQ_FEAT_DifferntIdTypesInSeqLoc
@ eErr_SEQ_FEAT_BadFullLengthFeature
@ eErr_SEQ_FEAT_BadCharInAuthorName
@ eErr_SEQ_FEAT_FarLocation
@ eErr_SEQ_INST_BadHTGSeq
@ eErr_SEQ_FEAT_InvalidFuzz
@ eErr_SEQ_FEAT_InvalidInferenceValue
@ eErr_SEQ_FEAT_GeneXrefNeeded
@ eErr_SEQ_INST_UnexpectedIdentifierChange
@ eErr_SEQ_FEAT_InconsistentRRNAstrands
@ eErr_SEQ_PKG_ArchaicFeatureProduct
@ eErr_SEQ_DESCR_MultipleSourceQualifiers
@ eErr_SEQ_FEAT_BadRRNAcomponentOverlap
@ eErr_SEQ_FEAT_BadTrailingCharacter
@ eErr_SEQ_DESCR_WrongVoucherType
@ eErr_SEQ_INST_ProteinsHaveGeneralID
@ eErr_SEQ_GRAPH_GraphOutOfOrder
@ eErr_SEQ_FEAT_BadInternalCharacter
@ eErr_SEQ_DESCR_NoSourceDescriptor
@ eErr_SEQ_DESCR_BadCollectionCode
@ eErr_SEQ_FEAT_BadProteinName
@ eErr_SEQ_FEAT_FeatureProductInconsistency
@ eErr_GENERIC_PublicationInconsistency
@ eErr_GENERIC_BadSubmissionAuthorName
@ eErr_GENERIC_CollidingSerialNumbers
@ eErr_SEQ_PKG_ComponentMissingTitle
@ eErr_SEQ_DESCR_DBLinkMissingUserObject
@ eErr_SEQ_PKG_InternalGenBankSet
@ eErr_SEQ_DESCR_BioSourceMissing
@ eErr_SEQ_FEAT_BadAnticodonCodon
@ eErr_SEQ_FEAT_BadTrailingHyphen
@ eErr_SEQ_FEAT_OldLocusTagMismtach
@ eErr_SEQ_DESCR_MolInfoConflictsWithBioSource
@ eErr_SEQ_FEAT_UTRdoesNotAbutCDS
@ eErr_SEQ_FEAT_PseudoRnaViaGeneHasProduct
@ eErr_SEQ_FEAT_ConflictFlagSet
@ eErr_SEQ_FEAT_StrandOther
@ eErr_SEQ_PKG_FeaturePackagingProblem
@ eErr_SEQ_DESCR_MultipleNames
@ eErr_SEQ_INST_BadSeqIdFormat
@ eErr_SEQ_PKG_GenomicProductPackagingProblem
@ eErr_INTERNAL_Exception
@ eErr_SEQ_FEAT_BadEcNumberFormat
@ eErr_SEQ_FEAT_CDSproductPackagingProblem
@ eErr_SEQ_FEAT_RedundantFields
@ eErr_SEQ_INST_InternalNsInSeqRaw
@ eErr_SEQ_DESCR_BadOrgMod
@ eErr_SEQ_INST_TerminalNs
@ eErr_SEQ_DESCR_BadOrganelleLocation
@ eErr_SEQ_FEAT_NoNameForProtein
@ eErr_SEQ_FEAT_RptUnitRangeProblem
@ eErr_SEQ_FEAT_SeqLocOrder
@ eErr_SEQ_DESCR_TaxonomyIsSpeciesProblem
@ eErr_SEQ_FEAT_CDSmRNAXrefLocationProblem
@ eErr_SEQ_PKG_SingleItemSet
@ eErr_SEQ_DESCR_BioSourceNeedsChromosome
@ eErr_SEQ_FEAT_VectorContamination
@ eErr_SEQ_FEAT_AbuttingIntervals
@ eErr_SEQ_FEAT_LocusTagProblem
@ eErr_SEQ_DESCR_BioSourceInconsistency
@ eErr_SEQ_FEAT_OnlyGeneXrefs
@ eErr_SEQ_FEAT_TranslExcept
@ eErr_SEQ_INST_InternalGapsInSeqRaw
@ eErr_SEQ_FEAT_GeneRefHasNoData
@ eErr_SEQ_INST_DuplicateSegmentReferences
@ eErr_SEQ_FEAT_TooManyInferenceAccessions
@ eErr_SEQ_FEAT_TerminalXDiscrepancy
@ eErr_SEQ_FEAT_MiscFeatureNeedsNote
@ eErr_SEQ_DESCR_CollidingPublications
@ eErr_SEQ_FEAT_GenomeSetMixedStrand
@ eErr_SEQ_FEAT_BadCharInAuthorLastName
@ eErr_SEQ_FEAT_HypotheticalProteinMismatch
@ eErr_SEQ_INST_TpaAssemblyProblem
@ eErr_SEQ_FEAT_MissingGeneXref
@Auth_list.hpp User-defined methods of the data storage class.
CSeq_entry * GetParentEntry(void) const
static void GetPubdescLabels(const CPubdesc &pd, vector< TEntrezId > &pmids, vector< TEntrezId > &muids, vector< int > &serials, vector< string > &published_labels, vector< string > &unpublished_labels)
For Publication Citations Get labels for a pubdesc.
bool GetDBFlags(bool &is_refseq, bool &is_src, string &correct_caps) const
bool IsSkippable(void) const
CConstRef< CSeq_feat > GetGeneFromCache(const CSeq_feat *feat, CScope &scope)
void GetLabel(string *label) const
@Name_std.hpp User-defined methods of the data storage class.
static CNcbiApplication * Instance(void)
Singleton method.
const string & GetDivision(void) const
bool IsSetDivision(void) const
@Pubdesc.hpp User-defined methods of the data storage class.
T & Get(void)
Create the variable if not created yet, return the reference.
ESubtype GetSubtype(void) const
static bool RequireLocationIntervalsInBiologicalOrder(ESubtype subtype)
static bool AllowAdjacentIntervals(ESubtype subtype)
@ eSubtype_bad
These no longer need to match the FEATDEF values in the C toolkit's objfdef.h.
void GetLabel(string *label, ELabelType type) const
CSeq_entry * GetParentEntry(void) const
namespace ncbi::objects::
Base class for all serializable objects.
CSeq_entry_Handle GetTopLevelEntry(void) const
Get top level Seq-entry handle.
TSeq_feat_Handles GetFeaturesWithId(CSeqFeatData::E_Choice type, TFeatureIdInt id) const
CScope & GetScope(void) const
Returns scope.
Template class for iteration on objects of class C (non-medifiable version)
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
Thrown on an attempt to write unassigned data member.
static string GetFeatureBioseqLabel(const CSeq_feat &ft, CRef< CScope > scope, bool suppress_context)
static string GetDescriptorContent(const CSeqdesc &ds)
static string GetFeatureLocationLabel(const CSeq_feat &ft, CRef< CScope > scope, bool suppress_context)
static string GetFeatureProductLocLabel(const CSeq_feat &ft, CRef< CScope > scope, bool suppress_context)
static string GetDescriptorLabel(const CSeqdesc &ds, const CSeq_entry &ctx, CRef< CScope > scope, bool suppress_context)
static string GetFeatureContentLabel(const CSeq_feat &feat, CRef< CScope > scope)
static string GetFeatureIdLabel(const CSeq_feat &ft)
static string GetBioseqSetLabel(const CBioseq_set &st, CRef< CScope > scope, bool suppress_context)
void ValidateSeqAlign(const CSeq_align &align, int order=-1)
void ValidateSeqAnnot(const CSeq_annot_Handle &annot)
virtual ~CValidError_base()
static CSeq_entry_Handle GetAppropriateXrefParent(CSeq_entry_Handle seh)
void PostErr(EDiagSev sv, EErrType et, const string &msg, const CSerialObject &obj)
CValidError_base(CValidError_imp &imp)
void ValidateBioseq(const CBioseq &seq)
bool GetTSAConflictingBiomolTechErrors(const CBioseq &seq)
bool GetTSANStretchErrors(const CBioseq &seq)
void ValidateBioseqSet(const CBioseq_set &seqset)
void ValidateSeqDesc(const CSeqdesc &desc, const CSeq_entry &ctx)
Validate descriptors as stand alone objects (no context)
void SetScope(CScope &scope)
void SetTSE(CSeq_entry_Handle seh)
bool GetTSACDSOnMinusStrandErrors(const CSeq_feat &feat, const CBioseq &seq)
static bool GetPrefixAndAccessionFromInferenceAccession(string inf_accession, string &prefix, string &accession)
void ValidateSeqFeat(const CSeq_feat &feat)
static vector< string > GetAccessionsFromInferenceString(string inference, string &prefix, string &remainder, bool &same_species)
void ValidateSeqGraph(const CSeq_graph &graph)
void x_ReportInvalidFuzz(const CPacked_seqint &packed_int, const CSerialObject &obj)
CRef< CObjectManager > m_ObjMgr
void SetScope(const CSeq_entry &se)
void FindCollidingSerialNumbers(const CSerialObject &obj)
const CSeq_entry_Handle & GetTSEH()
static bool BadMultipleSequenceLocation(const CSeq_loc &loc, CScope &scope)
void PostErr(EDiagSev sv, EErrType et, const string &msg, const CSerialObject &obj)
static bool IsTSAIntermediate(const CBioseq &seq)
void x_CheckPackedInt(const CPacked_seqint &packed_int, SLocCheck &lc, const CSerialObject &obj)
bool m_NewStrainValidation
static bool IsInOrganelleSmallGenomeSet(const CSeq_id &id, CScope &scope)
const CBioSourceKind & BioSourceKind() const
bool m_ValidateAlignments
bool HasGiOrAccnVer() const
void SetTSE(const CSeq_entry_Handle &seh)
bool m_FarFetchCDSproducts
const SValidatorContext & GetContext() const
CValidator::TProgressCallback m_PrgCallback
bool m_GenerateGoldenFile
IValidError * m_ErrRepository
size_t m_NumMisplacedGraphs
bool m_NotJustLocalOrGeneral
CConstRef< CSeq_feat > GetmRNAGivenProduct(const CBioseq &seq)
bool IsValidateAlignments() const
CBioseq_Handle GetBioseqHandleFromTSE(const CSeq_id &id)
size_t m_NumTopSetSiblings
void ValidateCitations(const CSeq_entry_Handle &seh)
bool DoesAnyFeatLocHaveGI() const
void FindNonAsciiText(const CSerialObject &obj)
void AddBioseqWithNoBiosource(const CBioseq &seq)
void ValidateSeqLocIds(const CSeq_loc &loc, const CSerialObject &obj)
bool GenerateGoldenFile() const
bool IsStandaloneAnnot() const
void x_DoBarcodeTests(CSeq_entry_Handle seh)
CConstRef< CSeq_annot > m_SeqAnnot
TSuppressed & SetSuppressed()
bool DoesAnyProductLocHaveGI() const
bool GetTSAConflictingBiomolTechErrors(const CSeq_entry_Handle &se)
bool x_IsSuppressed(CValidErrItem::TErrIndex errType) const
void x_AddValidErrItem(EDiagSev sev, EErrType type, const string &msg, const string &desc, const CSerialObject &obj, const string &accession, const int version)
unique_ptr< CValidatorEntryInfo > m_pEntryInfo
void x_Init(Uint4 options, size_t initialInferenceCount, bool notJustLocalOrGeneral, bool hasRefSeq)
void PostObjErr(EDiagSev sv, EErrType et, const string &msg, const CSerialObject &obj, const CSeq_entry *ctx=nullptr)
TSuppressed m_SuppressedErrors
void Setup(const CSeq_entry_Handle &seh)
bool Validate(const CSeq_entry &se, const CCit_sub *cs=nullptr, CScope *scope=nullptr)
void InitializeSourceQualTags()
static bool IsWGSIntermediate(const CBioseq &seq)
CValidator::CProgressInfo m_PrgInfo
void ValidateDbxref(const CDbtag &xref, const CSerialObject &obj, bool biosource=false, const CSeq_entry *ctx=nullptr)
bool IsSerialNumberInComment(const string &comment)
void ValidateTaxonomy(const CSeq_entry &se)
bool IsFarSequence(const CSeq_id &id)
const CTSE_Handle & GetTSE_Handle()
size_t m_NumMisplacedFeatures
void FindEmbeddedScript(const CSerialObject &obj)
bool IsHugeFileMode() const
void ValidateCitSub(const CCit_sub &cs, const CSerialObject &obj, const CSeq_entry *ctx=nullptr)
void SetOptions(Uint4 options)
bool m_ValidateInferenceAccessions
bool m_LocusTagGeneralMatch
void ValidateSubmitBlock(const CSubmit_block &block, const CSeq_submit &ss)
void Reset(size_t initialInferenceCount, bool notJustLocalOrGeneral, bool hasRefSeq)
bool IsNoCitSubPubs() const
vector< CConstRef< CBioseq > > m_BioseqWithNoSource
void ValidateAffil(const CAffil::TStd &std, const CSerialObject &obj, const CSeq_entry *ctx)
CConstRef< CSeq_feat > GetCDSGivenProduct(const CBioseq &seq)
CBioseq_Handle GetLocalBioseqHandle(const CSeq_id &id)
size_t m_NumTpaWithHistory
const CSeq_entry * GetAncestor(const CBioseq &seq, CBioseq_set::EClass clss)
bool x_IsFarFetchFailure(const CSeq_loc &loc)
size_t m_NumTpaWithoutHistory
void PostBadDateError(EDiagSev sv, const string &msg, int flags, const CSerialObject &obj, const CSeq_entry *ctx=nullptr)
void AddProtWithoutFullRef(const CBioseq_Handle &seq)
void ValidateBioSource(const CBioSource &bsrc, const CSerialObject &obj, const CSeq_entry *ctx=nullptr)
const CValidatorEntryInfo & GetEntryInfo() const
bool RaiseGenomeSeverity(EErrType et)
bool RequireLocalProduct(const CSeq_id *sid) const
bool m_ReportSpliceAsError
bool IsFarFetchCDSproducts() const
bool DoesAnyProteinHaveGeneralID() const
virtual ~CValidError_imp()
size_t m_NumSmallGenomeSetMisplaced
void ReportMissingPubs(const CSeq_entry &se, const CCit_sub *cs)
bool IsNoBioSource() const
bool IsMixedStrands(const CSeq_loc &loc)
bool m_FarFetchMRNAproducts
bool IsLocalGeneralOnly() const
CBioSourceKind m_biosource_kind
CConstRef< CSeq_entry > m_TSE
void x_InitLocCheck(SLocCheck &lc, const string &prefix)
SValidatorContext & SetContext()
bool IsIndexerVersion() const
CGeneCache & GetGeneCache()
void SetErrorRepository(IValidError *errors)
bool IsSmallGenomeSet() const
void SetProgressCallback(CValidator::TProgressCallback callback, void *user_data)
bool GetTSACDSOnMinusStrandErrors(const CSeq_entry_Handle &se)
size_t m_CumulativeInferenceCount
void ValidateMultipleTaxIds(const CSeq_entry_Handle &seh)
bool IsHugeSet(const CBioseq_set &bioseqSet) const
CValidError_imp(CObjectManager &objmgr, shared_ptr< SValidatorContext > pContext, IValidError *errors, Uint4 options=0)
void ValidateSeqLoc(const CSeq_loc &loc, const CBioseq_Handle &seq, bool report_abutting, const string &prefix, const CSerialObject &obj, bool lowerSev=false)
bool GetTSANStretchErrors(const CSeq_entry_Handle &se)
shared_ptr< SValidatorContext > m_pContext
bool x_CheckSeqInt(CConstRef< CSeq_id > &id_cur, const CSeq_interval *int_cur, ENa_strand &strand_cur)
bool DoesAnyGeneHaveLocusTag() const
void x_CheckLoc(const CSeq_loc &loc, const CSerialObject &obj, SLocCheck &lc, bool lowerSev=false)
const CSeq_entry & GetTSE() const
bool IsFarFetchMRNAproducts() const
CValidatorEntryInfo & x_SetEntryInfo()
void x_CheckForStrandChange(SLocCheck &lc)
void ReportMissingBiosource(const CSeq_entry &se)
void ValidatePubdesc(const CPubdesc &pub, const CSerialObject &obj, const CSeq_entry *ctx=nullptr)
void SetNoBioSource(bool val=true)
void SetPatent(bool val=true)
void SetGpipe(bool val=true)
void SetGenomic(bool val=true)
void SetProductLocHasGI(bool val=true)
bool DoesAnyGeneHaveLocusTag() const
void SetPDB(bool val=true)
bool DoesAnyProteinHaveGeneralID() const
void SetProteinHasGeneralID(bool val=true)
void SetGeneious(bool val=true)
void SetNoCitSubPubs(bool val=true)
void SetGeneHasLocusTag(bool val=true)
bool IsNoCitSubPubs() const
bool HasGiOrAccnVer() const
void SetGI(bool val=true)
void SetEmbl(bool val=true)
bool IsLocalGeneralOnly() const
bool DoesAnyFeatLocHaveGI() const
bool DoesAnyProductLocHaveGI() const
void SetSeqSubmit(bool val=true)
void SetRefSeq(bool val=true)
void SetTPE(bool val=true)
void SetFeatLocHasGI(bool val=true)
void SetGPS(bool val=true)
void SetGenbank(bool val=true)
void SetINSDInSep(bool val=true)
void SetLocalGeneralOnly(bool val=true)
void SetNoPubs(bool val=true)
void SetDdbj(bool val=true)
void SetSmallGenomeSet(bool val=true)
bool IsSmallGenomeSet() const
void SetGED(bool val=true)
void SetGiOrAccnVer(bool val=true)
bool IsNoBioSource() const
Cache various information for one validation run.
const TFeatValue & GetFeatFromCache(const SFeatKey &featKey)
TFeatStrKeyToFeatsCache m_featStrKeyToFeatsCache
AutoPtr< TFeatValue > GetFeatFromCacheMulti(const vector< SFeatKey > &featKeys)
const CPubdescInfo & GetPubdescToInfo(CConstRef< CPubdesc > pub)
TIdToBioseqCache m_IdToBioseqCache
static const CSeqFeatData::ESubtype kAnyFeatSubtype
TPubdescCache m_pubdescCache
CBioseq_Handle GetBioseqHandleFromLocation(CScope *scope, const CSeq_loc &loc, const CTSE_Handle &tse)
static const TFeatValue kEmptyFeatValue
static const CTSE_Handle kEmptyTSEHandle
static const CSeqFeatData::E_Choice kAnyFeatType
std::vector< CMappedFeat > TFeatValue
const TFeatToBioseqValue & GetBioseqsOfFeatCache(const TFeatToBioseqKey &feat_to_bioseq_key, const CTSE_Handle &tse)
const TFeatValue & GetFeatStrKeyToFeats(const SFeatStrKey &feat_str_key, const CTSE_Handle &tse)
TFeatToBioseqCache m_featToBioseqCache
static const CBioseq_Handle kAnyBioseq
const TIdToBioseqValue & GetIdToBioseq(const TIdToBioseqKey &key, const CTSE_Handle &tse)
static const CBioseq_Handle kEmptyBioseqHandle
@ eVal_refseq_conventions
@ eVal_generate_golden_file
@ eVal_collect_locus_tags
@ eVal_report_splice_as_error
@ eVal_locus_tag_general_match
@ eVal_far_fetch_cds_products
@ eVal_new_strain_validation
@ eVal_latlon_check_state
@ eVal_far_fetch_mrna_products
@ eVal_latlon_ignore_water
@ eVal_compare_vdjc_to_cds
static TDbxrefValidFlags IsValidDbxref(const CDbtag &xref, bool is_biosource, bool is_refseq_or_gps)
bool(* TProgressCallback)(CProgressInfo *)
static bool DoesSeqLocContainDuplicateIntervals(const CSeq_loc &loc, CScope &scope)
static bool DoesSeqLocContainAdjacentIntervals(const CSeq_loc &loc, CScope &scope)
static bool IsSeqLocCorrectlyOrdered(const CSeq_loc &loc, CScope &scope)
@ fLabel_Unique
Append a unique tag [V1].
virtual void AddValidErrItem(EDiagSev sev, unsigned int ec, const string &msg, const string &desc, const CSerialObject &obj, const string &acc, const int ver, const string &location=kEmptyStr, const int seq_offset=0)=0
container_type::const_iterator const_iterator
container_type::iterator iterator
const_iterator end() const
iterator_bool insert(const value_type &val)
const_iterator find(const key_type &key) const
const_iterator begin() const
const_iterator find(const key_type &key) const
const_iterator end() const
Include a standard set of the NCBI C++ Toolkit most basic headers.
The NCBI C++ standard methods for dealing with std::string.
static const char si[8][64]
static void chk(int check, const char *fmt,...)
static const struct name_t names[]
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() prev(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static const char * str(char *buf, int n)
static const char location[]
void reset(element_type *p=0, EOwnership ownership=eTakeOwnership)
Reset will delete the old pointer (if owned), set content to the new value, and assume the ownership ...
#define ITERATE_0_IDX(idx, up_to)
idx loops from 0 (inclusive) to up_to (exclusive)
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.
#define ERR_POST_X(err_subcode, message)
Error posting with default error code and given error subcode.
EDiagSev
Severity level for the posted diagnostics.
@ eDiag_Info
Informational message.
@ eDiag_Error
Error message.
@ eDiag_Warning
Warning message.
@ eDiag_Fatal
Fatal error â guarantees exit(or abort)
@ eDiag_Critical
Critical error message.
void Warning(CExceptionArgs_Base &args)
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual const CTypeInfo * GetThisTypeInfo(void) const =0
bool Match(const CSeq_id &sid2) const
Match() - TRUE if SeqIds are equivalent.
const CTextseq_id * GetTextseq_Id(void) const
Return embedded CTextseq_id, if any.
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
void GetLabel(string *label) const
Appends a label suitable for display (e.g., error messages) label must point to an existing string ob...
CConstBeginInfo ConstBegin(const C &obj)
Get starting point of non-modifiable object hierarchy.
bool BadSeqLocSortOrder(const CBioseq_Handle &bsh, const CSeq_loc &loc)
Returns true if the order of Seq_locs is bad, otherwise, false.
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
bool IsValid(const CSeq_point &pt, CScope *scope)
Checks that point >= 0 and point < length of Bioseq.
bool IsSameBioseq(const CSeq_id &id1, const CSeq_id &id2, CScope *scope, CScope::EGetBioseqFlag get_flag=CScope::eGetBioseq_All)
Determines if two CSeq_ids represent the same CBioseq.
ESeqLocCheck SeqLocCheck(const CSeq_loc &loc, CScope *scope)
Checks that a CSeq_loc is all on one strand on one CBioseq.
bool IsPseudo(const CSeq_feat &feat, CScope &scope)
Determines whether given feature is pseudo, using gene associated with feature if necessary Checks to...
CBioseq_Handle GetBioseqHandleFromTSE(const CSeq_id &id, const CTSE_Handle &tse)
Get bioseq handle for sequence withing one TSE.
CSeq_entry_Handle AddTopLevelSeqEntry(CSeq_entry &top_entry, TPriority pri=kPriority_Default, EExist action=eExist_Default)
Add seq_entry, default priority is higher than for defaults or loaders Add object to the score with p...
CSeq_entry_Handle GetSeq_entryHandle(CDataLoader *loader, const TBlobId &blob_id, EMissing action=eMissing_Default)
Get Seq-entry handle by its blob-id, with possible loading.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
void AddDefaults(TPriority pri=kPriority_Default)
Add default data loaders from object manager.
vector< CSeq_id_Handle > TId
CSeq_annot::C_Data::E_Choice Which(void) const
const CTSE_Handle & GetTSE_Handle(void) const
Get CTSE_Handle of containing TSE.
CConstRef< CBioseq > GetCompleteBioseq(void) const
Get the complete bioseq.
TClass GetClass(void) const
E_Choice Which(void) const
const CSeqFeatData & GetData(void) const
TSeqPos GetBioseqLength(void) const
const CTSE_Handle & GetTSE_Handle(void) const
CConstRef< CSeq_annot > GetCompleteSeq_annot(void) const
Complete and return const reference to the current seq-annot.
CConstRef< CBioseq_set > GetCompleteBioseq_set(void) const
Return the complete bioseq-set object.
TInst_Topology GetInst_Topology(void) const
bool IsSetInst(void) const
bool IsSetInst_Repr(void) const
bool IsSetClass(void) const
CConstRef< CSeq_entry > GetCompleteSeq_entry(void) const
Complete and get const reference to the seq-entry.
TInst_Repr GetInst_Repr(void) const
CScope & GetScope(void) const
Get scope this handle belongs to.
CSeqFeatData::ESubtype GetFeatSubtype(void) const
CScope & GetScope(void) const
Get scope this handle belongs to.
CSeqFeatData::E_Choice GetFeatType(void) const
bool IsSetInst_Topology(void) const
CSeq_entry_Handle GetParentEntry(void) const
Get parent Seq-entry handle.
const TId & GetId(void) const
const TInst & GetInst(void) const
const CSeq_loc & GetLocation(void) const
SAnnotSelector & SetByProduct(bool byProduct=true)
Set flag indicating if the features should be searched by their product rather than location.
const CSeq_feat & GetOriginalFeature(void) const
Get original feature with unmapped location/product.
SAnnotSelector & SetLimitTSE(const CTSE_Handle &limit)
Limit annotations to those from the TSE only.
CConstRef< CSeq_feat > GetSeq_feat(void) const
Get current seq-feat.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
uint32_t Uint4
4-byte (32-bit) unsigned integer
#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 int CompareNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive compare of a substring with another string.
static SIZE_TYPE FindNoCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case insensitive search.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string (in-place)
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int 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 const char label[]
const TAffil & GetAffil(void) const
Get the Affil member data.
const TAuthors & GetAuthors(void) const
Get the Authors member data.
bool IsSetAffil(void) const
Check if a value has been assigned to Affil data member.
bool IsSetAuthors(void) const
not necessarily authors of the paper Check if a value has been assigned to Authors data member.
const TName & GetName(void) const
Get the Name member data.
list< CRef< CAuthor > > TStd
const TStd & GetStd(void) const
Get the variant data.
const TNames & GetNames(void) const
Get the Names member data.
bool IsStd(void) const
Check if variant Std is selected.
TGenome GetGenome(void) const
Get the Genome member data.
bool IsSetOrg(void) const
Check if a value has been assigned to Org data member.
const TOrg & GetOrg(void) const
Get the Org member data.
bool IsSetGenome(void) const
Check if a value has been assigned to Genome data member.
bool IsSetLocus_tag(void) const
systematic gene name (e.g., MI0001, ORF0069) Check if a value has been assigned to Locus_tag data mem...
const TLocus_tag & GetLocus_tag(void) const
Get the Locus_tag member data.
bool IsStr(void) const
Check if variant Str is selected.
bool IsSetDb(void) const
name of database or system Check if a value has been assigned to Db data member.
bool IsLim(void) const
Check if variant Lim is selected.
const TTag & GetTag(void) const
Get the Tag member data.
bool IsId(void) const
Check if variant Id is selected.
bool IsSetTag(void) const
appropriate tag Check if a value has been assigned to Tag data member.
bool IsName(void) const
Check if variant Name is selected.
const TDb & GetDb(void) const
Get the Db member data.
TLim GetLim(void) const
Get the variant data.
bool IsSetLast(void) const
Check if a value has been assigned to Last data member.
const TStr & GetStr(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
const TType & GetType(void) const
Get the Type member data.
const TFirst & GetFirst(void) const
Get the First member data.
const TLast & GetLast(void) const
Get the Last member data.
const TName & GetName(void) const
Get the variant data.
bool IsSetFirst(void) const
Check if a value has been assigned to First data member.
vector< CRef< CUser_field > > TData
TId GetId(void) const
Get the variant data.
@ eLim_circle
artificial break at origin of circle
@ eLim_tl
space to left of position
@ eLim_tr
space to right of position
bool IsSetDb(void) const
ids in taxonomic or culture dbases Check if a value has been assigned to Db data member.
vector< CRef< CDbtag > > TDb
const TDb & GetDb(void) const
Get the Db member data.
list< CRef< CPub > > TPub
E_Choice Which(void) const
Which variant is currently selected.
TDim GetDim(void) const
Get the Dim member data.
static string SelectionName(E_Choice index)
Retrieve selection name (for diagnostic purposes).
bool IsSetSegs(void) const
Check if a value has been assigned to Segs data member.
bool IsSetType(void) const
Check if a value has been assigned to Type data member.
TType GetType(void) const
Get the Type member data.
const TSegs & GetSegs(void) const
Get the Segs member data.
const TPub & GetPub(void) const
Get the variant data.
bool IsSetData(void) const
the specific data Check if a value has been assigned to Data data member.
const TId & GetId(void) const
Get the Id member data.
const TLocal & GetLocal(void) const
Get the variant data.
const TLocation & GetLocation(void) const
Get the Location member data.
E_Choice
Choice variants.
bool IsLocal(void) const
Check if variant Local is selected.
bool IsGene(void) const
Check if variant Gene is selected.
const TData & GetData(void) const
Get the Data member data.
bool IsSetExcept(void) const
something funny about this? Check if a value has been assigned to Except data member.
const TExcept_text & GetExcept_text(void) const
Get the Except_text member data.
const TBiosrc & GetBiosrc(void) const
Get the variant data.
bool CanGetExcept_text(void) const
Check if it is safe to call GetExcept_text method.
bool IsSetId(void) const
Check if a value has been assigned to Id data member.
bool IsBiosrc(void) const
Check if variant Biosrc is selected.
const TGene & GetGene(void) const
Get the variant data.
TExcept GetExcept(void) const
Get the Except member data.
bool IsSetLocation(void) const
feature made from Check if a value has been assigned to Location data member.
@ e_not_set
No variant selected.
@ e_Pub
publication applies to this seq
const TFuzz_from & GetFuzz_from(void) const
Get the Fuzz_from member data.
bool IsSetId(void) const
WARNING: this used to be optional Check if a value has been assigned to Id data member.
bool IsSetAccession(void) const
Check if a value has been assigned to Accession data member.
list< CRef< CSeq_interval > > Tdata
ENa_strand
strand of nucleic acid
const Tdata & Get(void) const
Get the member data.
const TId & GetId(void) const
Get the Id member data.
bool IsSetPoint(void) const
Check if a value has been assigned to Point data member.
TPoint GetPoint(void) const
Get the Point member data.
bool IsOther(void) const
Check if variant Other is selected.
const TFuzz_to & GetFuzz_to(void) const
Get the Fuzz_to member data.
TFrom GetFrom(void) const
Get the From member data.
bool IsSetFuzz(void) const
Check if a value has been assigned to Fuzz data member.
const TFuzz & GetFuzz(void) const
Get the Fuzz member data.
E_Choice Which(void) const
Which variant is currently selected.
const TId & GetId(void) const
Get the Id member data.
TVersion GetVersion(void) const
Get the Version member data.
E_Choice
Choice variants.
const TOther & GetOther(void) const
Get the variant data.
bool IsSetTo(void) const
Check if a value has been assigned to To data member.
bool IsSetStrand(void) const
Check if a value has been assigned to Strand data member.
bool IsSetFuzz_to(void) const
Check if a value has been assigned to Fuzz_to data member.
TStrand GetStrand(void) const
Get the Strand member data.
const TGeneral & GetGeneral(void) const
Get the variant data.
TTo GetTo(void) const
Get the To member data.
bool IsSetFrom(void) const
Check if a value has been assigned to From data member.
bool IsSetVersion(void) const
Check if a value has been assigned to Version data member.
bool IsSetFuzz_from(void) const
Check if a value has been assigned to Fuzz_from data member.
E_Choice
Choice variants.
const TAccession & GetAccession(void) const
Get the Accession member data.
@ e_Gibbmt
Geninfo backbone moltype.
@ e_Giim
Geninfo import id.
@ e_Other
for historical reasons, 'other' = 'refseq'
@ e_Gpipe
Internal NCBI genome pipeline processing ID.
@ e_Tpe
Third Party Annot/Seq EMBL.
@ e_Tpd
Third Party Annot/Seq DDBJ.
@ e_Gibbsq
Geninfo backbone seqid.
@ e_General
for other databases
@ e_Gi
GenInfo Integrated Database.
@ e_not_set
No variant selected.
@ e_Tpg
Third Party Annot/Seq Genbank.
const TTitle & GetTitle(void) const
Get the Title member data.
const TLoc & GetLoc(void) const
Get the Loc member data.
bool IsSetTitle(void) const
Check if a value has been assigned to Title data member.
const TSeq & GetSeq(void) const
Get the variant data.
bool IsSetClass(void) const
Check if a value has been assigned to Class data member.
TClass GetClass(void) const
Get the Class member data.
const TSet & GetSet(void) const
Get the variant data.
bool IsSeq(void) const
Check if variant Seq is selected.
bool IsSetSeq_set(void) const
Check if a value has been assigned to Seq_set data member.
bool IsSet(void) const
Check if variant Set is selected.
const TSeq_set & GetSeq_set(void) const
Get the Seq_set member data.
TSeq & SetSeq(void)
Select the variant.
@ eClass_pop_set
population study
@ eClass_phy_set
phylogenetic study
@ eClass_wgs_set
whole genome shotgun project
@ eClass_mut_set
set of mutations
@ eClass_eco_set
ecological sample study
@ eClass_nuc_prot
nuc acid and coded proteins
@ eClass_gen_prod_set
genomic products, chrom+mRNA+protein
@ eClass_genbank
converted genbank
@ eClass_small_genome_set
viral segments or mitochondrial minicircles
@ e_not_set
No variant selected.
TTopology GetTopology(void) const
Get the Topology member data.
ETopology
topology of molecule
bool IsSetTopology(void) const
Check if a value has been assigned to Topology data member.
@ eRepr_seg
segmented sequence
@ eTech_tsa
transcriptome shotgun assembly
@ eTech_wgs
whole genome shotgun sequencing
@ e_User
user defined object
@ e_Source
source of materials, includes Org-ref
@ eMol_not_set
> cdna = rna
@ eMol_na
just a nucleic acid
bool IsSetTool(void) const
tool used to make submission Check if a value has been assigned to Tool data member.
const TTool & GetTool(void) const
Get the Tool member data.
const TContact & GetContact(void) const
Get the Contact member data.
const TReldate & GetReldate(void) const
Get the Reldate member data.
const TCit & GetCit(void) const
Get the Cit member data.
E_Choice Which(void) const
Which variant is currently selected.
bool IsSetReldate(void) const
release by date Check if a value has been assigned to Reldate data member.
const TData & GetData(void) const
Get the Data member data.
bool IsSetHup(void) const
hold until publish Check if a value has been assigned to Hup data member.
THup GetHup(void) const
Get the Hup member data.
const TSub & GetSub(void) const
Get the Sub member data.
bool IsSetSub(void) const
Check if a value has been assigned to Sub data member.
const TContact & GetContact(void) const
Get the Contact member data.
bool IsSetCit(void) const
citation for this submission Check if a value has been assigned to Cit data member.
bool IsSetContact(void) const
who to contact Check if a value has been assigned to Contact data member.
bool IsSetContact(void) const
WARNING: this will replace the above Check if a value has been assigned to Contact data member.
Lightweight interface for getting lines of data with minimal memory copying.
constexpr bool empty(list< Ts... >) noexcept
const string version
version string
const struct ncbi::grid::netcache::search::fields::KEY key
Static variables safety - create on demand, destroy on application termination.
Defines the CNcbiApplication and CAppException classes for creating NCBI applications.
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
#define FOR_EACH_DESCRIPTOR_ON_BIOSEQ
#define FOR_EACH_SEQID_ON_BIOSEQ(Itr, Var)
FOR_EACH_SEQID_ON_BIOSEQ EDIT_EACH_SEQID_ON_BIOSEQ.
#define FOR_EACH_GBQUAL_ON_FEATURE
#define FOR_EACH_SEQENTRY_ON_SEQSET(Itr, Var)
FOR_EACH_SEQENTRY_ON_SEQSET EDIT_EACH_SEQENTRY_ON_SEQSET.
#define FOR_EACH_SEQDESC_ON_SEQENTRY(Itr, Var)
FOR_EACH_SEQDESC_ON_SEQENTRY EDIT_EACH_SEQDESC_ON_SEQENTRY.
#define FOR_EACH_CHAR_IN_STRING(Itr, Var)
FOR_EACH_CHAR_IN_STRING EDIT_EACH_CHAR_IN_STRING.
#define BEGIN_COMMA_END(container)
static SLJIT_INLINE sljit_ins st(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
bool operator==(const SFeatKey &rhs) const
CSeqFeatData::E_Choice feat_type
bool operator<(const SFeatKey &rhs) const
CSeqFeatData::ESubtype feat_subtype
EFeatKeyStr m_eFeatKeyStr
bool operator<(const SFeatStrKey &rhs) const
bool operator==(const SFeatStrKey &rhs) const
PQuickStringLess implements an ordering of strings, that is more efficient than usual lexicographical...
#define FOR_EACH_SEQENTRY_ON_SEQSUBMIT(Itr, Var)
FOR_EACH_SEQENTRY_ON_SEQSUBMIT EDIT_EACH_SEQENTRY_ON_SEQSUBMIT.
bool BarcodeTestFails(const SBarcode &b)
vector< SBarcode > TBarcodeResults
TBarcodeResults GetBarcodeValues(CSeq_entry_Handle seh)
const int InferenceAccessionCutoff
const string kMissingPrimers
static bool s_IsPhage(const COrg_ref &org)
#define ADD_BARCODE_ERR(TestName)
const string kBadCollectionDate
const string kMissingCountry
bool s_HasTopSetSiblings(CSeq_entry_Handle seh)
static const char * kSpaceLeftFirst
static const char * kSpaceLeftCircle
size_t s_CountTopSetSiblings(const CSeq_entry &se)
bool s_IsGoodTopSetClass(CBioseq_set::EClass set_class)
static bool s_SeqLocHasGI(const CSeq_loc &loc)
static const EErrType sc_ValidGenomeRaiseExceptEmblDdbj[]
DEFINE_STATIC_ARRAY_MAP(CStaticArraySet< EErrType >, sc_GenomeRaiseArray, sc_ValidGenomeRaise)
unsigned int s_CountMix(const CSeq_loc &loc)
static void s_CollectPubDescriptorLabels(const CSeq_entry &se, vector< TEntrezId > &pmids, vector< TEntrezId > &muids, vector< int > &serials, vector< string > &published_labels, vector< string > &unpublished_labels)
static const char * kSpaceRightCircle
const string kMissingVoucher
const string kMissingOrderAssignment
static const EErrType sc_ValidGenomeRaise[]
static const char * kSpaceRightLast
const string kStructuredVoucher
static const EErrType sc_ValidGenomeRaiseExceptEmblDdbjRefSeq[]
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