54 if (!gene.GetData().IsGene() ||
55 gene.GetData().GetGene().IsSetLocus() ||
56 !gene.GetData().GetGene().IsSetLocus_tag() ||
63 for (
auto it : cds.GetXref()) {
64 if (it->IsSetData() && it->GetData().IsGene()) {
65 if (it->GetData().GetGene().IsSetLocus()) {
67 locus = it->GetData().GetGene().GetLocus();
73 if (it->GetData().GetGene().IsSetLocus_tag()) {
75 locus_tag = it->GetData().GetGene().GetLocus_tag();
89 gene.GetData().GetGene().IsSetLocus_tag() &&
90 !
NStr::Equal(locus_tag, gene.GetData().GetGene().GetLocus_tag())) {
107 for (
auto it : cds.
SetXref()) {
108 if (it->IsSetData() && it->GetData().IsGene()) {
109 if (it->GetData().GetGene().IsSetLocus()) {
111 locus = it->GetData().GetGene().GetLocus();
118 if (it->GetData().GetGene().IsSetLocus_tag()) {
120 locus_tag = it->GetData().GetGene().GetLocus_tag();
140 gene.
SetData().SetGene().SetLocus(locus);
144 gene_xref->SetData().SetGene().ResetLocus();
156 vector<CCleanup::TFeatGenePair> rval;
170 typedef pair<CSeq_feat_Handle, bool> TFeatOkPair;
172 TGeneCDSMap gene_cds;
176 tr->SetIgnoreMissingGeneXref();
178 if (
f->GetData().IsCdregion()) {
181 TGeneCDSMap::iterator smit = gene_cds.find(gene);
182 if (smit == gene_cds.end()) {
185 gene_cds[gene] = {
f->GetSeq_feat_Handle(), ok_to_map };
188 gene_cds[gene].second =
false;
195 for (
auto copy_pair : gene_cds) {
196 if (copy_pair.second.second) {
197 rval.push_back({ copy_pair.second.first, copy_pair.first });
206 bool any_change =
false;
207 for (
auto copy_pair : cds_gene_pairs) {
209 new_cds->
Assign(*(copy_pair.first.GetOriginalSeq_feat()));
211 new_gene->
Assign(*(copy_pair.second.GetOriginalSeq_feat()));
226 bool any_change =
false;
User-defined methods of the data storage class.
const string & GetLineage(void) const
bool IsSetLineage(void) const
static vector< TFeatGenePair > GetNormalizableGeneQualPairs(CBioseq_Handle bsh)
static bool NormalizeGeneQuals(CSeq_feat &cds, CSeq_feat &gene)
namespace ncbi::objects::
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
Include a standard set of the NCBI C++ Toolkit most basic headers.
bool IsMappablePair(const CSeq_feat &cds, const CSeq_feat &gene)
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
void Replace(const CSeq_feat &new_feat) const
Replace the feature with new Seq-feat object.
const CSeq_feat & GetOriginalFeature(void) const
Get original feature with unmapped location/product.
#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 bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
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 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.
bool IsSetLocus_tag(void) const
systematic gene name (e.g., MI0001, ORF0069) Check if a value has been assigned to Locus_tag data mem...
bool IsSetLocus(void) const
Official gene symbol Check if a value has been assigned to Locus data member.
const TLocus_tag & GetLocus_tag(void) const
Get the Locus_tag member data.
TXref & SetXref(void)
Assign a value to Xref data member.
bool IsSetXref(void) const
cite other relevant features Check if a value has been assigned to Xref data member.
bool IsGene(void) const
Check if variant Gene is selected.
const TData & GetData(void) const
Get the Data member data.
void SetData(TData &value)
Assign a value to Data data member.
const TGene & GetGene(void) const
Get the variant data.
const TSource & GetSource(void) const
Get the variant data.
bool IsSource(void) const
Check if variant Source is selected.
@ e_Source
source of materials, includes Org-ref
@ eMol_na
just a nucleic acid
double f(double x_, const double &y_)