(Non_std_residue, non_std_residue,
"NonStdRes",
"NonStdRes"),
187 #define PROT_INFO_PAIR(proc, subtype, key_full, key_gb) \ 188 { CProt_ref::eProcessed_##proc, \ 189 { CSeqFeatData::eSubtype_##subtype, key_full, key_gb } } 194 PROT_INFO_PAIR(signal_peptide, sig_peptide_aa,
"Prot",
"sig_peptide"),
195 PROT_INFO_PAIR(transit_peptide, transit_peptide_aa,
"Prot",
"transit_peptide"),
196 PROT_INFO_PAIR(propeptide, propeptide_aa,
"Prot",
"propeptide")
207 #define SITE_INFO_PAIR(site, subtype, key_full, key_gb) \ 208 { CSeqFeatData::eSite_##site, \ 209 { CSeqFeatData::eSubtype_##subtype, key_full, key_gb } } 229 #define RNA_INFO_PAIR(rna, subtype, key_full, key_gb) \ 230 { CRNA_ref::eType_##rna, \ 231 { CSeqFeatData::eSubtype_##subtype, key_full, key_gb } } 234 RNA_INFO_PAIR(premsg, preRNA,
"precursor_RNA",
"precursor_RNA"),
258sc_ProtInfoPairs.find(
GetProt().GetProcessed());
259 if(it != sc_ProtInfoPairs.end()) {
272 if(it != sc_SiteInfoPairs.end()) {
286sc_RnaInfoPairs.find(rna_type);
287 if(it != sc_RnaInfoPairs.end()) {
293 const string& ext_name = (can_get_name
296 if(ext_name ==
"ncRNA") {
299}
else if(ext_name ==
"tmRNA") {
331 if(it != sc_InfoPairs.end()) {
503 autoit = sm_FeatKeys.first.find(sName);
504 if(it == sm_FeatKeys.first.end())
507 if(sName ==
"pre_RNA")
508 returneSubtype_preRNA;
515 autoit = sm_FeatKeys.second.
find(eSubtype);
516 if(it == sm_FeatKeys.second.end())
565 autoiter = sx_MandatoryQuals.find(subtype);
566 if(iter == sx_MandatoryQuals.end()) {
580 #define SUBTYPE_INFO(type, subtype, value) \ 581 { CSeqFeatData::type, CSeqFeatData::subtype, value, #subtype } 675 SUBTYPE_INFO( e_Non_std_residue, eSubtype_non_std_residue, 92),
681 SUBTYPE_INFO( e_Variation, eSubtype_variation_ref, 98),
749 NcbiCout<<
"static const SSubtypeInfo s_subtype_info[] = {\n";
753 if(
type==
"not set") {
762<< setw(20) <<
type<<
", " 763<< setw(30) <<
info.m_Name <<
", " 764<< setw(3) <<
info.m_Subtype <<
")";
2993 returng_legal_quals;
3012 returnit->second.test(qual);
3163 autoiter = sc_QualPairs.first.
find(qual);
3164 if(iter == sc_QualPairs.first.end())
3167 returniter->second;
3172 autoiter = sc_QualPairs.second.find(qual);
3173 if(iter != sc_QualPairs.second.end())
3174 returniter->second;
3181 autoiter = sc_QualPairs.second.find(qual);
3182 if(iter != sc_QualPairs.second.end())
3185 return{ iter->second,
value};
3193 #define ADD_XREF_PAIR(x, y) {CSeqFeatData::eSubtype_ ## x, CSeqFeatData::eSubtype_ ## y }, 3195 template<
typename_Ty,
size_t_W
idth>
3199 staticconstexpr
size_twidth = _Width;
3201 usingtable_t = std::array<TBitset, width>;
3203 usinginit_t = std::pair<_Ty, _Ty>;
3204 usingnon_empty_pair = std::pair<_Ty, TBitset>;
3206 template<
size_tN>
3207constexpr TPairsMatrix(
constinit_t(&
init)[
N])
3209 usingrow_t = std::array<bool, width>;
3210 usinginit_matrix_t = std::array<row_t, width>;
3212init_matrix_t matrix{};
3213 for(
const auto& rec :
init)
3215matrix[rec.first][rec.second] =
true;
3216matrix[rec.second][rec.first] =
true;
3218m_table = assemble_table(matrix, std::make_index_sequence<width>{});
3220 for(
size_t i= 0;
i< width; ++
i)
3222 if(!m_table[
i].
empty())
3223m_non_empty_indices[
last++] =
i;
3225m_non_empty_count =
last;
3228constexpr
size_tNonEmptyCount()
const 3230 returnm_non_empty_count;
3233 template<
size_tN>
3234 static bool Check(
conststd::array<non_empty_pair, N>&
in, _Ty v1, _Ty
v2)
3236 autoit = std::lower_bound(
in.begin(),
in.end(), v1, [](
autoleft,
autoright)
3238return left.first < right;
3240 if(it !=
in.end())
3242 returnit->second.test(
v2);
3246 static bool Check(
consttable_t&
table, _Ty v1, _Ty
v2)
3251 template<
size_tN>
3252constexpr
autoselect_bitsets()
const 3254 returnselect_bitsets(std::make_index_sequence<N>{});
3257constexpr
autoget_bitsets()
const 3262 template<
typename_Matrix,
size_t...Ints>
3263 staticconstexpr
autoassemble_table(
const_Matrix&
init, std::index_sequence<Ints...>)
3266 return{ { TBitset{
init[Ints]} ... } };
3268 template<
size_tI>
3269constexpr non_empty_pair make_row()
const 3271 return{ _Ty(m_non_empty_indices[I]), m_table[m_non_empty_indices[I]] };
3273 template<
size_t...Ints>
3274constexpr
autoselect_bitsets(std::index_sequence<Ints...>)
const 3275-> std::array<non_empty_pair,
sizeof...(Ints) >
3277 return{ { make_row<Ints>() ... } };
3281std::array<size_t, width> m_non_empty_indices{};
3282 size_tm_non_empty_count{ 0 };
3284 usingCAssembleSubTypePairs = TPairsMatrix<CSeqFeatData::ESubtype, CSeqFeatData::eSubtype_max>;
3286 staticconstexpr CAssembleSubTypePairs::init_t g_allowed_pairs[] = {
3399 staticconstexpr CAssembleSubTypePairs::init_t g_prohibited_pairs[] = {
3729 staticconstexpr CAssembleSubTypePairs g_allowed_init(g_allowed_pairs);
3730 staticconstexpr CAssembleSubTypePairs g_prohibited_init(g_prohibited_pairs);
3735 staticconstexpr
autog_allowed_xrefs = g_allowed_init.get_bitsets();
3736 staticconstexpr
autog_prohibited_xrefs = g_prohibited_init.get_bitsets();
3738 staticconstexpr
autog_allowed_xrefs = g_allowed_init.select_bitsets<g_allowed_init.NonEmptyCount()>();
3739 staticconstexpr
autog_prohibited_xrefs = g_prohibited_init.select_bitsets<g_prohibited_init.NonEmptyCount()>();
3742 #undef ADD_XREF_PAIR 3759 staticunique_ptr<CFeatList> theFeatList;
3761 if( !theFeatList.get() ) {
3764 if( !theFeatList.get() ) {
3768 returntheFeatList.get();
3773 staticunique_ptr<CBondList> theBondList;
3775 if( !theBondList.get() ) {
3778 if( !theBondList.get() ) {
3782 returntheBondList.get();
3788 staticunique_ptr<CSiteList> theSiteList;
3790 if( !theSiteList.get() ) {
3793 if( !theSiteList.get() ) {
3797 returntheSiteList.get();
3804regulatory_subtypes_set.
find(subtype) !=
3805regulatory_subtypes_set.
end() );
3815 structFCreateSubtypeNameMap {
3816 staticTSubtypeToNameMap * Create() {
3828 _ASSERT( regulatory_subtypes_set.
size() == p_new_map->size() );
3832 static constTSubtypeNameElem sc_subtype_name_map[] = {
3841 constTSubtypeNameElem & subtype_name_elem =
3842sc_subtype_name_map[special_case_idx];
3844(*p_new_map)[subtype_name_elem.first] =
3845subtype_name_elem.second;
3848 _ASSERT( regulatory_subtypes_set.
size() == p_new_map->size() );
3854FCreateSubtypeNameMap::Create);
3862TSubtypeToNameMap::const_iterator find_iter =
3863sc_SubtypeToNameMap->find(subtype);
3864 if( find_iter != sc_SubtypeToNameMap->end() ) {
3865 returnfind_iter->second;
3880 structFCreateNameToSubtypeMap {
3881 staticTNameToSubtypeMap * Create() {
3887 const string& class_name =
3889(*p_new_map)[class_name] = *subtype_iter;
3892 _ASSERT( p_new_map->size() == regulatory_subtypes_set.
size() );
3898FCreateNameToSubtypeMap::Create);
3900TNameToSubtypeMap::const_iterator find_iter =
3901ms_NameToSubtypeMap->find(class_name);
3902 if( find_iter != ms_NameToSubtypeMap->end() ) {
3903 returnfind_iter->second;
3912 staticvector<string> choices = {
3914 "ribosome_binding_site",
3917 "DNase_I_hypersensitive_site",
3919 "enhancer_blocking_element",
3921 "imprinting_control_region",
3923 "locus_control_region",
3924 "matrix_attachment_region",
3927 "polyA_signal_sequence",
3928 "recoding_stimulatory_region",
3929 "recombination_enhancer",
3930 "replication_regulatory_region",
3931 "response_element",
3936 "transcriptional_cis_regulatory_region",
3945 staticvector<string> regulatory_class_values;
3946 if(regulatory_class_values.empty()) {
3950 stringoriginal =
val;
3953 if(valid_val !=
nullptr) {
3957 returnoriginal !=
val;
3962 staticvector<string> choices = {
3965 "non_allelic_homologous",
3966 "chromosome_breakpoint",
3974 staticconstexpr
TSubtypesdiscouraged_subtypes {
4000 if(discouraged_subtypes.test(subtype))
4015 if(discouraged_quals.test(qual))
4130config_item = *ci_it;
4141config_item = fm_it->second;
4149 for(; ci_it !=
end(); ++ci_it) {
4151config_item = *ci_it;
4173 for(; ci_it !=
end(); ++ci_it) {
4174 if(ci_it->GetStoragekey() ==
key) {
4175config_item = *ci_it;
4215vector<string> keys;
4234 for(
size_t i= 0;
i< config_item_size; ++
i) {
4244iep->m_Subtype, iep->m_Name, iep->m_Name);
4267 stringthis_desc = iter->GetDescription();
4274parent_desc = this_desc;
4277 if( ! parent_desc.empty()) {
4278this_desc = parent_desc +
"/"+ this_desc;
4282descs.push_back(this_desc);
4288string::size_type pos = 0;
4289 while((pos =
NStr::Find(str1,
" ", pos)) != NCBI_NS_STD::string::npos) {
4319 if(ci_it != sm_BondKeys.end ()) {
4330 if(ci_it != sm_BondKeys.end ()) {
4331bond_type = ci_it->second;
4342 if(ci_it == sm_BondKeys.end()) {
4345 returnci_it->second;
4397 if(ci_it != sm_SiteKeys.end ()) {
4408 if(ci_it != sm_SiteKeys.end ()) {
4409site_type = ci_it->second;
4420 if(ci_it == sm_SiteKeys.end()) {
4423 returnci_it->second;
4430 static ESubtype constregulatory_subtypes [] = {
4446 TSubtypeSet, sc_RegulatorySubtypes, regulatory_subtypes);
4448 returnsc_RegulatorySubtypes;
4520 boolrequired =
true;
4521 switch(feat_subtype)
4538 boolallowed =
false;
4539 switch(feat_subtype)
4671 key=
"misc_feature";
4674 key=
"repeat_region";
4677 key=
"misc_binding";
4697 const string& productName)
4699 staticvector<string> matchPhrases{
"IS150 protein InsAB",
"PCRF domain-containing protein"};
4700 staticvector<string> containedPhrases{
"transposase",
"chain release"};
4702 for(
const auto& phrase: matchPhrases) {
4703 if(phrase == productName) {
4707 for(
const auto& phrase: containedPhrases) {
4708 if(productName.find(phrase) != string::npos) {
MAKE_TWOWAY_CONST_MAP(sm_FeatKeys, ct::tagStrNocase, CSeqFeatData::ESubtype, { { "-10_signal", CSeqFeatData::eSubtype_10_signal }, { "-35_signal", CSeqFeatData::eSubtype_35_signal }, { "3'UTR", CSeqFeatData::eSubtype_3UTR }, { "3'clip", CSeqFeatData::eSubtype_3clip }, { "5'UTR", CSeqFeatData::eSubtype_5UTR }, { "5'clip", CSeqFeatData::eSubtype_5clip }, { "Bond", CSeqFeatData::eSubtype_bond }, { "CAAT_signal", CSeqFeatData::eSubtype_CAAT_signal }, { "CDS", CSeqFeatData::eSubtype_cdregion }, { "C_region", CSeqFeatData::eSubtype_C_region }, { "Cit", CSeqFeatData::eSubtype_pub }, { "CloneRef", CSeqFeatData::eSubtype_clone }, { "Comment", CSeqFeatData::eSubtype_comment }, { "D-loop", CSeqFeatData::eSubtype_D_loop }, { "D_segment", CSeqFeatData::eSubtype_D_segment }, { "GC_signal", CSeqFeatData::eSubtype_GC_signal }, { "Het", CSeqFeatData::eSubtype_het }, { "J_segment", CSeqFeatData::eSubtype_J_segment }, { "LTR", CSeqFeatData::eSubtype_LTR }, { "N_region", CSeqFeatData::eSubtype_N_region }, { "NonStdRes", CSeqFeatData::eSubtype_non_std_residue }, { "Num", CSeqFeatData::eSubtype_num }, { "Protein", CSeqFeatData::eSubtype_prot }, { "RBS", CSeqFeatData::eSubtype_RBS }, { "REFERENCE", CSeqFeatData::eSubtype_pub }, { "Region", CSeqFeatData::eSubtype_region }, { "Rsite", CSeqFeatData::eSubtype_rsite }, { "STS", CSeqFeatData::eSubtype_STS }, { "S_region", CSeqFeatData::eSubtype_S_region }, { "SecStr", CSeqFeatData::eSubtype_psec_str }, { "Site", CSeqFeatData::eSubtype_site }, { "Site-ref", CSeqFeatData::eSubtype_site_ref }, { "Src", CSeqFeatData::eSubtype_biosrc }, { "TATA_signal", CSeqFeatData::eSubtype_TATA_signal }, { "TxInit", CSeqFeatData::eSubtype_txinit }, { "User", CSeqFeatData::eSubtype_user }, { "V_region", CSeqFeatData::eSubtype_V_region }, { "V_segment", CSeqFeatData::eSubtype_V_segment }, { "VariationRef", CSeqFeatData::eSubtype_variation_ref }, { "Xref", CSeqFeatData::eSubtype_seq }, { "assembly_gap", CSeqFeatData::eSubtype_assembly_gap }, { "attenuator", CSeqFeatData::eSubtype_attenuator }, { "centromere", CSeqFeatData::eSubtype_centromere }, { "conflict", CSeqFeatData::eSubtype_conflict }, { "enhancer", CSeqFeatData::eSubtype_enhancer }, { "exon", CSeqFeatData::eSubtype_exon }, { "gap", CSeqFeatData::eSubtype_gap }, { "gene", CSeqFeatData::eSubtype_gene }, { "iDNA", CSeqFeatData::eSubtype_iDNA }, { "intron", CSeqFeatData::eSubtype_intron }, { "mRNA", CSeqFeatData::eSubtype_mRNA }, { "mat_peptide", CSeqFeatData::eSubtype_mat_peptide_aa }, { "mat_peptide_nt", CSeqFeatData::eSubtype_mat_peptide }, { "misc_RNA", CSeqFeatData::eSubtype_otherRNA }, { "misc_binding", CSeqFeatData::eSubtype_misc_binding }, { "misc_difference", CSeqFeatData::eSubtype_misc_difference }, { "misc_feature", CSeqFeatData::eSubtype_misc_feature }, { "misc_recomb", CSeqFeatData::eSubtype_misc_recomb }, { "misc_signal", CSeqFeatData::eSubtype_misc_signal }, { "misc_structure", CSeqFeatData::eSubtype_misc_structure }, { "mobile_element", CSeqFeatData::eSubtype_mobile_element }, { "modified_base", CSeqFeatData::eSubtype_modified_base }, { "ncRNA", CSeqFeatData::eSubtype_ncRNA }, { "old_sequence", CSeqFeatData::eSubtype_old_sequence }, { "operon", CSeqFeatData::eSubtype_operon }, { "oriT", CSeqFeatData::eSubtype_oriT }, { "polyA_signal", CSeqFeatData::eSubtype_polyA_signal }, { "polyA_site", CSeqFeatData::eSubtype_polyA_site }, { "precursor_RNA", CSeqFeatData::eSubtype_preRNA }, { "prim_transcript", CSeqFeatData::eSubtype_prim_transcript }, { "primer_bind", CSeqFeatData::eSubtype_primer_bind }, { "promoter", CSeqFeatData::eSubtype_promoter }, { "propeptide", CSeqFeatData::eSubtype_propeptide_aa }, { "propeptide_nt", CSeqFeatData::eSubtype_propeptide }, { "proprotein", CSeqFeatData::eSubtype_preprotein }, { "protein_bind", CSeqFeatData::eSubtype_protein_bind }, { "rRNA", CSeqFeatData::eSubtype_rRNA }, { "regulatory", CSeqFeatData::eSubtype_regulatory }, { "rep_origin", CSeqFeatData::eSubtype_rep_origin }, { "repeat_region", CSeqFeatData::eSubtype_repeat_region }, { "repeat_unit", CSeqFeatData::eSubtype_repeat_unit }, { "satellite", CSeqFeatData::eSubtype_satellite }, { "scRNA", CSeqFeatData::eSubtype_scRNA }, { "sig_peptide", CSeqFeatData::eSubtype_sig_peptide_aa }, { "sig_peptide_nt", CSeqFeatData::eSubtype_sig_peptide }, { "snRNA", CSeqFeatData::eSubtype_snRNA }, { "snoRNA", CSeqFeatData::eSubtype_snoRNA }, { "source", CSeqFeatData::eSubtype_biosrc }, { "stem_loop", CSeqFeatData::eSubtype_stem_loop }, { "tRNA", CSeqFeatData::eSubtype_tRNA }, { "telomere", CSeqFeatData::eSubtype_telomere }, { "terminator", CSeqFeatData::eSubtype_terminator }, { "tmRNA", CSeqFeatData::eSubtype_tmRNA }, { "transit_peptide", CSeqFeatData::eSubtype_transit_peptide_aa }, { "transit_peptide_nt", CSeqFeatData::eSubtype_transit_peptide }, { "unsure", CSeqFeatData::eSubtype_unsure }, { "variation", CSeqFeatData::eSubtype_variation }, { "virion", CSeqFeatData::eSubtype_virion } }) CSeqFeatData
vector< CSeqFeatData::E_Choice > TSubtypesTable
static CSafeStatic< TSubtypesTable > sx_SubtypesTable
string x_SpaceToDash(string str1)
#define ADD_XREF_PAIR(x, y)
#define SITE_INFO_PAIR(site, subtype, key_full, key_gb)
static const CBondList::TBondKey bond_key_to_subtype[]
static const CSiteList::TSiteKey site_key_to_subtype[]
SStaticPair< CProt_ref::EProcessed, CSeqFeatData::SFeatDataInfo > TProtInfoPair
static const SImportEntry *const kImportTableEnd
CStaticPairArrayMap< CRNA_ref::EType, CSeqFeatData::SFeatDataInfo > TRnaInfoMap
static const SFeatListItem sc_ConfigItemInit[]
CStaticPairArrayMap< CSeqFeatData::ESite, CSeqFeatData::SFeatDataInfo > TSiteInfoMap
#define RNA_INFO_PAIR(rna, subtype, key_full, key_gb)
static const SSubtypeInfo s_subtype_info[]
#define PROT_INFO_PAIR(proc, subtype, key_full, key_gb)
CStaticPairArrayMap< CProt_ref::EProcessed, CSeqFeatData::SFeatDataInfo > TProtInfoMap
SStaticPair< CSeqFeatData::ESite, CSeqFeatData::SFeatDataInfo > TSiteInfoPair
#define FEAT_INFO_PAIR(type, subtype, key_full, key_gb)
SStaticPair< CSeqFeatData::E_Choice, CSeqFeatData::SFeatDataInfo > TInfoPair
DEFINE_STATIC_ARRAY_MAP(TInfoMap, sc_InfoPairs, kInfoPairs)
CStaticPairArrayMap< CSeqFeatData::E_Choice, CSeqFeatData::SFeatDataInfo > TInfoMap
static atomic< bool > sx_SubtypesTableInitialized
#define SUBTYPE_INFO(type, subtype, value)
DEFINE_CLASS_STATIC_ARRAY_MAP(CBondList::TBondMap, CBondList::sm_BondKeys, bond_key_to_subtype)
static const size_t s_subtype_count
SStaticPair< CRNA_ref::EType, CSeqFeatData::SFeatDataInfo > TRnaInfoPair
static const TSiteInfoPair kSiteInfoPairs[]
static const TInfoPair kInfoPairs[]
DEFINE_STATIC_MUTEX(sx_InitTablesMutex)
static const TProtInfoPair kProtInfoPairs[]
static const TRnaInfoPair kRnaInfoPairs[]
static const SImportEntry kImportTable[]
CSeqFeatData::EBond GetBondType(string str) const
TBondMap::const_iterator const_iterator
bool IsBondName(string str) const
CFeatListItem - basic configuration data for one "feature" type.
string GetStoragekey() const
int m_Subtype
Feature subtype or eSubtype_any for default values.
string GetDescription() const
int m_Type
Feature type, or e_not_set for default values.
bool operator<(const CFeatListItem &rhs) const
CFeatListItem comparator to sort the set properly.
CConfigurableItems - a static list of items that can be configured.
const_iterator end() const
bool GetItemBySubtype(int subtype, CFeatListItem &config_item) const
void x_Init(void)
initialize our container of feature types and descriptions.
string GetStoragekey(int type, int subtype) const
Get the key used to store this type of feature.
TFeatTypeContainer m_FeatTypes
bool GetItemByKey(const string &key, CFeatListItem &config_item) const
string GetDescription(int type, int subtype) const
Get the displayable description of this type of feature.
vector< string > GetStoragekeys(int subtype) const
Get hierarchy of keys above this subtype, starting with "Master" example, eSubtype_gene,...
bool GetTypeSubType(const string &desc, int &type, int &subtype) const
Get the feature's type and subtype from its description.
TSubtypeMap m_FeatTypeMap
TFeatTypeContainer::const_iterator const_iterator
bool GetItem(int type, int subtype, CFeatListItem &config_item) const
can get all static information for one type/subtype.
bool GetItemByDescription(const string &desc, CFeatListItem &config_item) const
void GetDescriptions(vector< string > &descs, bool hierarchical=false) const
return a list of all the feature descriptions for a menu or other control.
const_iterator begin() const
bool TypeValid(int type, int subtype) const
@Gb_qual.hpp User-defined methods of the data storage class.
static const string & GetRegulatoryClass(ESubtype subtype)
static bool ShouldRepresentAsGbqual(CSeqFeatData::ESubtype feat_subtype, const CGb_qual &qual)
bool IsLegalQualifier(EQualifier qual) const
Test wheather a certain qualifier is legal for the feature.
static bool IsDiscouragedQual(EQualifier qual)
static const TSubtypeSet & GetSetOfRegulatorySubtypes()
static EFeatureLocationAllowed AllowedFeatureLocation(ESubtype subtype)
EQualifier
List of available qualifiers for feature keys.
@ eQual_environmental_sample
@ eQual_recombination_class
@ eQual_UniProtKB_evidence
@ eQual_culture_collection
@ eQual_ribosomal_slippage
@ eQual_calculated_mol_wt
@ eQual_metagenome_source
@ eQual_mobile_element_type
@ eQual_artificial_location
static bool CanHaveGene(ESubtype subtype)
void PostRead(void) const
Invalidate subtype cache after deserialization.
static const TSubTypeQualifiersMap & s_GetLegalQualMap() noexcept
SFeatDataInfo m_FeatDataInfo
@ eFeatureLocationAllowed_NucOnly
@ eFeatureLocationAllowed_Error
@ eFeatureLocationAllowed_ProtOnly
@ eFeatureLocationAllowed_Any
static bool IsLegalProductNameForRibosomalSlippage(const string &product_name)
EVocabulary
ASCII representation of subtype (GenBank feature key, e.g.)
static const CSiteList * GetSiteList()
static bool AllowStrandBoth(ESubtype subtype)
static bool ProhibitXref(CSeqFeatData::ESubtype subtype1, CSeqFeatData::ESubtype subtype2)
ESubtype GetSubtype(void) const
static void s_InitSubtypesTable(void)
static bool RequireLocationIntervalsInBiologicalOrder(ESubtype subtype)
const TLegalQualifiers & GetLegalQualifiers(void) const
Get a list of all the legal qualifiers for the feature.
string GetKey(EVocabulary vocab=eVocabulary_full) const
const TQualifiers & GetMandatoryQualifiers(void) const
Get the list of all mandatory qualifiers for the feature.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
void x_InitFeatDataInfo(void) const
static bool FixRegulatoryClassValue(string &val)
static bool IsDiscouragedSubtype(ESubtype subtype)
static E_Choice GetTypeFromSubtype(ESubtype subtype)
static bool AllowAdjacentIntervals(ESubtype subtype)
static const vector< string > & GetRecombinationClassList()
static std::pair< EQualifier, CTempString > GetQualifierTypeAndValue(CTempString qual)
static const CFeatList * GetFeatList()
CSeqFeatData(void)
constructor
static bool FixImportKey(string &key)
void InvalidateCache(void) const
Combine invalidation of all cached values.
@ eSubtype_transit_peptide
@ eSubtype_misc_difference
@ eSubtype_misc_structure
@ eSubtype_bad
These no longer need to match the FEATDEF values in the C toolkit's objfdef.h.
@ eSubtype_mobile_element
@ eSubtype_prim_transcript
@ eSubtype_transit_peptide_aa
@ eSubtype_non_std_residue
@ eSubtype_sig_peptide_aa
@ eSubtype_mat_peptide_aa
static EQualifier GetQualifierType(CTempString qual)
convert qual string to enumerated value
static const CBondList * GetBondList()
static CTempString GetQualifierAsString(EQualifier qual)
Convert a qualifier from an enumerated value to a string representation or empty if not found.
static ESubtype SubtypeNameToValue(CTempString sName)
Turn a string into its ESubtype which is NOT necessarily related to the identifier of the enum.
static CTempString SubtypeValueToName(ESubtype eSubtype)
Turns a ESubtype into its string value which is NOT necessarily related to the identifier of the enum...
static bool IsRegulatory(ESubtype subtype)
static const vector< string > & GetRegulatoryClassList()
static bool AllowXref(CSeqFeatData::ESubtype subtype1, CSeqFeatData::ESubtype subtype2)
~CSeqFeatData(void)
destructor
Base class for all serializable objects.
bool IsSiteName(string str) const
TSiteMap::const_iterator const_iterator
CSeqFeatData::ESite GetSiteType(string str) const
const_iterator find(const key_type &key) const
Return a const_iterator pointing to the specified element, or to the end if the element is not found.
const_iterator end() const
Return the end of the controlled sequence.
size_type size() const
Return number of elements in the container.
class CStaticArrayMap<> is an array adaptor that provides an STLish interface to statically-defined a...
TBase::const_iterator const_iterator
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
static constexpr const_bitset set_range(T _from, T _to)
const_iterator find(intermediate key) const
container_type::const_iterator const_iterator
const_iterator end() const
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator find(const key_type &key) const
const_iterator end() const
#define MAKE_CONST_MAP(name, type1, type2,...)
static void DLIST_NAME() init(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)
static const char * str(char *buf, int n)
#define ITERATE_0_IDX(idx, up_to)
idx loops from 0 (inclusive) to up_to (exclusive)
constexpr size_t ArraySize(const Element(&)[Size])
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
element_type * release(void)
Release will release ownership of pointer to caller.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
ESerialRecursionMode
How to assign and compare child sub-objects of serial objects.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
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 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 bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
size_type find(const CTempString match, size_type pos=0) const
Find the first instance of the entire matching string within the current string, beginning at an opti...
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.
EProcessed
processing status
TType GetType(void) const
Get the Type member data.
EType
type of RNA feature
bool CanGetExt(void) const
Check if it is safe to call GetExt method.
const TName & GetName(void) const
Get the variant data.
const TExt & GetExt(void) const
Get the Ext member data.
bool IsName(void) const
Check if variant Name is selected.
const TKey & GetKey(void) const
Get the Key member data.
E_Choice Which(void) const
Which variant is currently selected.
E_Choice
Choice variants.
bool IsSetQual(void) const
Check if a value has been assigned to Qual data member.
TSite GetSite(void) const
Get the variant data.
const TProt & GetProt(void) const
Get the variant data.
static string SelectionName(E_Choice index)
Retrieve selection name (for diagnostic purposes).
const TQual & GetQual(void) const
Get the Qual member data.
const TRna & GetRna(void) const
Get the variant data.
const TImp & GetImp(void) const
Get the variant data.
@ eSite_transmembrane_region
@ eSite_pyrrolidone_carboxylic_acid
@ eSite_gamma_carboxyglutamic_acid
@ eSite_oxidative_deamination
@ e_Het
cofactor, prosthetic grp, etc, bound to seq
@ e_not_set
No variant selected.
@ e_Region
named region (globin locus)
@ e_Seq
to annotate origin from another seq
@ e_Txinit
transcription initiation
@ e_Num
a numbering system
@ e_Pub
publication applies to this seq
@ e_User
user defined structure
@ e_Rsite
restriction site (for maps really)
@ e_Comment
just a comment
@ e_Non_std_residue
non-standard residue here in seq
<!DOCTYPE HTML >< html > n< header > n< title > PubSeq Gateway Help Page</title > n< style > n table
std::false_type tagStrNocase
constexpr bool empty(list< Ts... >) noexcept
void Check(const string &value)
const struct ncbi::grid::netcache::search::fields::KEY key
const GenericPointer< typename T::ValueType > T2 value
const CharType(& source)[N]
int strcmp(const char *str1, const char *str2)
std::istream & in(std::istream &in_, double &x_)
#define DEFINE_STATIC_ARRAY_MAP_WITH_COPY(Type, Var, Array)
CSeqFeatData::ESubtype m_Subtype
const char * m_Description
const char * m_StorageKey
CSeqFeatData::E_Choice m_Type
CSeqFeatData::ESubtype m_Subtype
CSeqFeatData::ESubtype m_Subtype
bool operator<(const SImportEntry &e) const
Template structure SStaticPair is simlified replacement of STL pair<> Main reason of introducing this...
CSeqFeatData::E_Choice m_Type
CSeqFeatData::ESubtype m_Subtype
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