124 const auto& dbtag =
tag.GetTag();
125 if (dbtag.IsStr() && (string::npos != dbtag.GetStr().find(
"rs"))) {
126 return NStr::StringToNumeric<NSnp::TRsid>(dbtag.GetStr().substr(2));
129 return dbtag.GetId8();
157 length = rc +
lc + 1;
175 if ((*pnt_iter)->CanGetClinical_significance()) {
176 return ClinSigAsString((*pnt_iter)->GetClinical_significance(), LetterCase);
191 sResult =
"Likely benign";
194 sResult =
"Likely pathogenic";
197 sResult =
"Pathogenic";
200 sResult =
"Drug response";
203 sResult =
"Histocompatibility";
206 sResult =
"Uncertain significance";
209 sResult =
"Not tested";
244 bool isRefAlleleEmpty{
false};
245 bool isAnyAltAlleleEmpty{
false};
250 Alleles.reserve(feat.
GetQual().size());
253 if (qual.
GetQual() ==
"replace") {
254 string sQualVal(qual.
GetVal());
255 Alleles.push_back(sQualVal.empty() ?
"-" : sQualVal);
256 if(sQualVal.empty()) {
257 if(it == feat.
GetQual().begin()) {
258 isRefAlleleEmpty =
true;
260 isAnyAltAlleleEmpty =
true;
266 if(isPadding && bsh && (isRefAlleleEmpty || isAnyAltAlleleEmpty)) {
270 int delta(isRefAlleleEmpty ? 0 : -1);
276 for(
auto& allele: Alleles) {
277 allele = allele ==
"-" ? sPadding : sPadding + allele;
290 bool isKnown =
false;
315 for (; feat_it && !isKnown; ++feat_it) {
320 if (qual->
GetQual() ==
"replace" &&
321 qual->
GetVal().find(allele) != string::npos) {
354 Variation.
SetExt().push_back(pExt);
408 int gene_location = 0;
544 ResList.push_back(
"In Gene");
546 ResList.push_back(
"In 5\' Gene");
548 ResList.push_back(
"In 3\' Gene");
550 ResList.push_back(
"Intron");
552 ResList.push_back(
"Donor");
554 ResList.push_back(
"Acceptor");
556 ResList.push_back(
"In 5\' UTR");
558 ResList.push_back(
"In 3\' UTR");
560 ResList.push_back(
"In Start Codon");
562 ResList.push_back(
"In Stop Codon");
564 ResList.push_back(
"Intergenic");
566 ResList.push_back(
"In Conserved Non-coding region");
573 ResList.push_back(
"No change");
576 ResList.push_back(
"Synonymous");
578 ResList.push_back(
"Nonsense");
580 ResList.push_back(
"Missense");
582 ResList.push_back(
"Frameshift");
584 ResList.push_back(
"Up-regulator");
586 ResList.push_back(
"Down-regulator");
588 ResList.push_back(
"Methylation");
590 ResList.push_back(
"Stop-gain");
592 ResList.push_back(
"Stop-loss");
600 ResList.push_back(
"Has other SNP");
602 ResList.push_back(
"Has Assembly conflict");
604 ResList.push_back(
"Is assembly specific");
611 ResList.push_back(
">1% minor allele freq in 1+ populations");
613 ResList.push_back(
">1% minor allele freq in each and all populations");
615 ResList.push_back(
">5% minor allele freq in 1+ populations");
617 ResList.push_back(
">5% minor allele freq in each and all populations");
619 ResList.push_back(
"Is mutation");
621 ResList.push_back(
"Validated (has a minor allele in two or more separate chromosomes)");
628 ResList.push_back(
"Reference allele missing from SNP alleles");
630 ResList.push_back(
"Genotype conflict");
632 ResList.push_back(
"Non-overlapping allele sets");
634 ResList.push_back(
"Strain specific fixed difference");
636 ResList.push_back(
"Member SS withdrawn by submitter");
643 ResList.push_back(
"Clinical");
645 ResList.push_back(
"Provisional");
647 ResList.push_back(
"Preserved");
649 ResList.push_back(
"On high density genotyping kit");
651 ResList.push_back(
"SNP3D");
653 ResList.push_back(
"SubmitterLinkOut");
661 ResList.push_back(
"");
663 ResList.push_back(
"");
665 ResList.push_back(
"");
667 ResList.push_back(
"");
669 ResList.push_back(
"");
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.
size_t GetSize(void) const
CTime AsCTime(CTime::ETimeZone tz=CTime::eLocal) const
@Gb_qual.hpp User-defined methods of the data storage class.
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
ESubtype GetSubtype(void) const
namespace ncbi::objects::
CConstRef< CDbtag > GetNamedDbxref(const CTempString &db) const
Return a specified DB xref.
CSnpBitfield is a facade for representing any version of the SNP bitfield.
bool IsTrue(EProperty prop) const
@ eHasSnp3D
Has 3D structure SNP3D.
@ eHasLinkOut
Has SubmitterLinkOut From SNP->SubSNP->Batch.link_out.
@ eIsMutation
! temp here for backward compatibility; remove once a jump to SC11 is done
CConstRef< CUser_field > GetFieldRef(const string &str, const string &delim=".", NStr::ECase use_case=NStr::eCase) const
CUser_field & SetField(const string &str, const string &delim=".", const string &obj_subtype=kEmptyStr, NStr::ECase use_case=NStr::eCase)
Access a named field in this user object.
static bool x_CommonConvertFeat(TPVariation pVariation, const CSeq_feat &SrcFeat)
static const string sResourceLink_RsID
static bool ConvertFeat(CVariation &Variation, const CSeq_feat &SrcFeat)
legacy SNP feature conversion into a variation object
ESNPPropTypes
enums to control getting a string list representation of various CVariantProperties
@ eSNPPropName_GeneLocation
prop.gene-location
@ eSNPPropName_ResourceLink
prop.resource-link
@ eSNPPropName_QualityCheck
prop.quality-check
@ eSNPPropName_Mapping
prop.mapping
@ eSNPPropName_FreqValidation
prop.frequence-based-validation
@ eSNPPropName_Effect
prop.effect
@ eSNPPropName_ResourceLinkURL
generate URL templates, with one of sResourceLink_ substrings potentially inside
static void DecodeBitfield(CVariantProperties &prop, const CSnpBitfield &bf)
convert SNP bitfield data to respective fields in CVariantProperties
static void VariantPropAsStrings(list< string > &ResList, const CVariantProperties &prop, ESNPPropTypes ePropType)
get lists of strings corresponding to a given property type
static TRsid GetRsid(const CMappedFeat &mapped_feat)
Return rsid of SNP.
ELetterCase
controls the case of strings returned from ClinSigAsString()
@ eLetterCase_ForceLower
always use lower case only
static int GetLength(const CMappedFeat &)
Return distance of neighbors in flanking sequence.
static CConstRef< CDbtag > GetTag(const CSeq_feat &SrcFeat)
find a SNP tag in the feature returns NULL if no such tag (sm_dbTag_dbSNP)
vector< string > TAlleles
list of alleles belonging to particular SNP a deletion is represented by a "-"
static bool IsSnp(const CMappedFeat &mapped_feat)
Determine if feature is a SNP.
static void GetAlleles(const CMappedFeat &mapped_feat, TAlleles &Alleles)
Return list of alleles encoded in qual.
static CSnpBitfield GetBitfield(const CMappedFeat &)
Return bitfield information stored in the feature.
static CTime GetCreateTime(const CMappedFeat &mapped_feat)
Get Create Time It will fetch the creation time based on the CAnnotDescr of the feature's parent anno...
static const string sm_dbTag_dbSNP
static bool IsSnpKnown(CScope &scope, const CMappedFeat &private_snp, const string &allele=kEmptyStr)
Check if SNP exists in GenBank database.
static string ClinSigAsString(const CVariation_ref &var, ELetterCase LetterCase=eLetterCase_Mixed)
get a human-readable text for various clinical significance types
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define MSerial_AsnText
I/O stream manipulators –.
TRange GetTotalRange(void) const
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
TSeqPos GetStop(ESeqLocExtremes ext) const
const CSeq_annot_Handle & GetAnnot(void) const
Get handle to seq-annot for this feature.
const CSeq_annot::TDesc & Seq_annot_GetDesc(void) const
bool Seq_annot_CanGetDesc(void) const
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
SAnnotSelector & SetResolveAll(void)
SetResolveAll() is equivalent to SetResolveMethod(eResolve_All).
SAnnotSelector & SetOverlapTotalRange(void)
Check overlapping only of total ranges.
const CSeq_loc & GetLocation(void) const
const CSeq_feat & GetOriginalFeature(void) const
Get original feature with unmapped location/product.
SAnnotSelector & SetExcludeExternal(bool exclude=true)
External annotations for the Object Manger are annotations located in top level Seq-entry different f...
SAnnotSelector & SetAnnotType(TAnnotType type)
Set annotation type (feat, align, graph)
SAnnotSelector & SetMaxSize(TMaxSize max_size)
Set maximum number of annotations to find.
SAnnotSelector & AddNamedAnnots(const CAnnotName &name)
Add named annot to set of annots names to look for.
SAnnotSelector & SetFeatSubtype(TFeatSubtype subtype)
Set feature subtype (also set annotation and feat type)
SAnnotSelector & ExcludeUnnamedAnnots(void)
Add unnamed annots to set of annots names to exclude.
void GetSeqData(TSeqPos start, TSeqPos stop, string &buffer) const
Fill the buffer string with the sequence data for the interval [start, stop).
bool NotEmpty(void) const THROWS_NONE
Check if CConstRef is not empty – pointing to an object and has a non-null value.
position_type GetLength(void) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static bool SplitInTwo(const CTempString str, const CTempString delim, string &str1, string &str2, TSplitFlags flags=0)
Split a string into two pieces using the specified delimiters.
static string & ToLower(string &str)
Convert string to lower case – string& version.
@ fConvErr_NoThrow
Do not throw an exception on error.
const TStr & GetStr(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
void SetClass(const TClass &value)
Assign a value to Class data member.
void SetData(TData &value)
Assign a value to Data data member.
const TVal & GetVal(void) const
Get the Val member data.
bool IsSetData(void) const
the specific data Check if a value has been assigned to Data data member.
bool CanGetQual(void) const
Check if it is safe to call GetQual method.
bool IsSetExt(void) const
user defined structure extension Check if a value has been assigned to Ext data member.
const TQual & GetQual(void) const
Get the Qual member data.
const TLocation & GetLocation(void) const
Get the Location member data.
const TData & GetData(void) const
Get the Data member data.
bool CanGetLocation(void) const
Check if it is safe to call GetLocation method.
vector< CRef< CGb_qual > > TQual
const TQual & GetQual(void) const
Get the Qual member data.
const TExt & GetExt(void) const
Get the Ext member data.
const TCreate_date & GetCreate_date(void) const
Get the variant data.
const Tdata & Get(void) const
Get the member data.
bool IsCreate_date(void) const
Check if variant Create_date is selected.
bool CanGet(void) const
Check if it is safe to call Get method.
list< CRef< CAnnotdesc > > Tdata
TExt & SetExt(void)
Assign a value to Ext data member.
TPlacements & SetPlacements(void)
Assign a value to Placements data member.
void SetLoc(TLoc &value)
Assign a value to Loc data member.
void SetQuality_check(TQuality_check value)
Assign a value to Quality_check data member.
TFrequency_based_validation GetFrequency_based_validation(void) const
Get the Frequency_based_validation member data.
void SetFrequency_based_validation(TFrequency_based_validation value)
Assign a value to Frequency_based_validation data member.
void SetGenotype(TGenotype value)
Assign a value to Genotype data member.
list< CRef< CPhenotype > > TPhenotype
void SetResource_link(TResource_link value)
Assign a value to Resource_link data member.
TEffect GetEffect(void) const
Get the Effect member data.
bool CanGetGene_location(void) const
Check if it is safe to call GetGene_location method.
void SetVersion(TVersion value)
Assign a value to Version data member.
TMapping GetMapping(void) const
Get the Mapping member data.
bool CanGetQuality_check(void) const
Check if it is safe to call GetQuality_check method.
const TPhenotype & GetPhenotype(void) const
Get the Phenotype member data.
bool CanGetFrequency_based_validation(void) const
Check if it is safe to call GetFrequency_based_validation method.
TResource_link GetResource_link(void) const
Get the Resource_link member data.
int TFrequency_based_validation
void SetGene_location(TGene_location value)
Assign a value to Gene_location data member.
bool CanGetEffect(void) const
Check if it is safe to call GetEffect method.
bool CanGetResource_link(void) const
Check if it is safe to call GetResource_link method.
TQuality_check GetQuality_check(void) const
Get the Quality_check member data.
void SetMapping(TMapping value)
Assign a value to Mapping data member.
void SetEffect(TEffect value)
Assign a value to Effect data member.
bool CanGetMapping(void) const
Check if it is safe to call GetMapping method.
TGene_location GetGene_location(void) const
Get the Gene_location member data.
@ eMapping_has_assembly_conflict
Weight 1 or 2 SNPs that map to different chromosomes on different assemblies (0x02)
@ eMapping_has_other_snp
Another SNP has the same mapped positions on reference assembly (0x01)
@ eMapping_is_assembly_specific
Only maps to 1 assembly (0x04)
@ eGenotype_has_genotypes
SNP has individual genotype (0x02)
@ eGenotype_in_haplotype_set
Exists in a haplotype tagging set (0x01)
@ eFrequency_based_validation_above_5pct_1plus
>5% minor allele freq in 1+ populations (0x04)
@ eFrequency_based_validation_validated
Bit is set if the variant has a minor allele observed in two or more separate chromosomes.
@ eFrequency_based_validation_above_1pct_all
>1% minor allele freq in each and all populations (0x10)
@ eFrequency_based_validation_above_5pct_all
>5% minor allele freq in each and all populations (0x02)
@ eFrequency_based_validation_above_1pct_1plus
>1% minor allele freq in 1+ populations (0x20)
@ eFrequency_based_validation_is_mutation
low frequency variation that is cited in journal or other reputable sources (0x01)
@ eEffect_stop_gain
reference codon is not stop codon, but the snp variant allele changes the codon to a terminating codo...
@ eEffect_down_regulator
the variant causes decreased transcription (0x20)
@ eEffect_missense
one allele in the set changes protein peptide (0x4)
@ eEffect_nonsense
one allele in the set changes to STOP codon (TER). (0x2)
@ eEffect_up_regulator
the variant causes increased transcription (0x10)
@ eEffect_no_change
known to cause no functional changes since 0 does not combine with any other bit value,...
@ eEffect_stop_loss
reverse of STOP-GAIN: reference codon is a stop codon, but a snp variant allele changes the codon to ...
@ eEffect_synonymous
one allele in the set does not change the encoded amino acid (0x1)
@ eEffect_frameshift
one allele in the set changes all downstream amino acids (0x8)
@ eQuality_check_genotype_conflict
Has Genotype Conflict (0x10)
@ eQuality_check_strain_specific
Straing specific fixed difference (0x08)
@ eQuality_check_non_overlapping_alleles
RS set has 2+ alleles from different submissions and these sets share no alleles in common (0x04)
@ eQuality_check_contig_allele_missing
Reference sequence allele at the mapped position is not present in the SNP allele list,...
@ eQuality_check_withdrawn_by_submitter
One member SS is withdrawn by submitter (0x02)
@ eResource_link_has3D
Has 3D strcture SNP3D table (0x04)
@ eResource_link_provisional
Provisional Third Party Annotations (0x02)
@ eResource_link_genotypeKit
Marker exists on high density genotyping kit (0x20)
@ eResource_link_clinical
Clinical if LSDB, OMIM, TPA, Diagnostic (0x10)
@ eResource_link_submitterLinkout
SNP->SubSNP->Batch link_out (0x08)
@ eResource_link_preserved
Clinical, Pubmed, Cited, (0x01)
@ eGene_location_in_start_codon
the variant is observed in a start codon (0x100)
@ eGene_location_acceptor
In acceptor splice-site (0x20)
@ eGene_location_near_gene_5
Within 2kb of the 5' end of a gene feature.
@ eGene_location_near_gene_3
Within 0.5kb of the 3' end of a gene feature.
@ eGene_location_utr_3
In 3' UTR (0x80)
@ eGene_location_in_gene
Sequence intervals covered by a gene ID but not having an aligned transcript (0x01)
@ eGene_location_utr_5
In 5' UTR (0x40)
@ eGene_location_intron
In Intron (0x08)
@ eGene_location_intergenic
variant located between genes (0x400)
@ eGene_location_donor
In donor splice-site (0x10)
@ eGene_location_in_stop_codon
the variant is observed in a stop codon (0x200)
@ eGene_location_conserved_noncoding
variant is located in a conserved non-coding region (0x800)
@ eClinical_significance_drug_response
@ eClinical_significance_probable_pathogenic
@ eClinical_significance_unknown
@ eClinical_significance_untested
@ eClinical_significance_pathogenic
@ eClinical_significance_probable_non_pathogenic
@ eClinical_significance_other
@ eClinical_significance_histocompatibility
@ eClinical_significance_non_pathogenic
Int4 delta(size_t dimension_, const Int4 *score_)
#define SNP_VAR_EXT_CLASS
#define SNP_VAR_EXT_BITFIELD
static const char * str(char *buf, int n)