79 auto recordId = record.
Id();
80 auto parentId = record.
Parent();
81 auto pFeature = record.
GetData();
83 switch (pFeature->GetData().GetSubtype()) {
113 annot.
SetData().SetFtable().push_back(pFeature);
114 if (!recordId.empty()) {
133 pExistingCds->GetLocation(), pFeature->
GetLocation());
134 pExistingCds->SetLocation().Assign(*pUpdatedLocation);
137 auto cdsStrand = pExistingCds->GetLocation().GetStrand();
138 auto& existingCds = pExistingCds->SetData().SetCdregion();
143 auto contributedStart =
145 if (existingStart == contributedStart) {
146 existingCds.SetFrame(newCds.GetFrame());
152 auto contributedStop =
154 if (existingStop == contributedStop) {
155 existingCds.SetFrame(newCds.GetFrame());
161 annot.
SetData().SetFtable().push_back(pFeature);
162 if (!recordId.empty()) {
165 if (!recordId.empty() && !parentId.empty()) {
181 annot.
SetData().SetFtable().push_back(pFeature);
182 if (!recordId.empty()) {
185 if (!recordId.empty() && !parentId.empty()) {
192 vector<CRef<CSeq_feat>> pendingExons;
196 for (
auto pExon: pendingExons) {
222 pParentRna->GetLocation(), pFeature->
GetLocation());
223 pParentRna->SetLocation().Assign(*pUpdatedLocation);
240 auto childId = entry.first;
241 auto parentId = entry.second;
245 if (!pChild || !pParent) {
249 pParent->AddSeqFeatXref(pChild->GetId());
255 auto grandParentId = itGrandParent->second;
261 pGrandParent->AddSeqFeatXref(pChild->GetId());
262 pParent->AddSeqFeatXref(pGrandParent->GetId());
263 pGrandParent->AddSeqFeatXref(pParent->GetId());
268 for (
auto& pFeature:
ftable) {
282 for (
const auto& pQual: feat.
GetQual()) {
283 if (pQual->IsSetQual() && pQual->GetQual() ==
"__location_pending") {
User-defined methods of the data storage class.
User-defined methods of the data storage class.
@ eExtreme_Positional
numerical value
CRef< CFeat_id > GetIdFor(const string &recType)
virtual void FinalizeAnnot(const CAnnotImportData &, CSeq_annot &) override
static bool xIsLocationPending(const CSeq_feat &)
CGff3PendingFeatureList mPendingFeatures
static void xUnmarkLocationPending(CSeq_feat &)
void xProcessFeatureDefault(const std::string &, const std::string &, CRef< CSeq_feat >, CSeq_annot &)
void ProcessRecord(const CFeatImportData &, CSeq_annot &) override
CFeatureIdGenerator mIdGenerator
map< string, string > mXrefMap
virtual ~CGff3AnnotAssembler()
void xProcessFeatureCds(const std::string &, const std::string &, CRef< CSeq_feat >, CSeq_annot &)
CGff3AnnotAssembler(CImportMessageHandler &)
void xProcessFeatureExon(const std::string &, const std::string &, CRef< CSeq_feat >, CSeq_annot &)
void xProcessFeatureRna(const std::string &, const std::string &, CRef< CSeq_feat >, CSeq_annot &)
CGff3FeatureMap mFeatureMap
static void xMarkLocationPending(CSeq_feat &)
void AddFeature(const std::string &id, CRef< CSeq_feat > pFeature)
CRef< CSeq_feat > FindFeature(const std::string &id)
CRef< CSeq_feat > GetData() const
std::string Parent() const
bool FindPendingFeatures(const std::string &id, std::vector< CRef< CSeq_feat >> &features)
void AddFeature(const std::string &id, CRef< CSeq_feat > pFeature)
void MarkFeaturesDone(const std::string &id)
ESubtype GetSubtype(void) const
static CTempString SubtypeValueToName(ESubtype eSubtype)
Turns a ESubtype into its string value which is NOT necessarily related to the identifier of the enum...
namespace ncbi::objects::
void AddQualifier(const string &qual_name, const string &qual_val)
Add a qualifier to this feature.
void RemoveQualifier(const string &qual_name)
Remove all qualifiers with the given name; do nothing if no such qualifier exists.
bool AddSeqFeatXref(const CSeqFeatXref::TId &id)
static CRef< CSeq_loc > AddLocations(const CSeq_loc &, const CSeq_loc &)
const_iterator end() const
const_iterator find(const key_type &key) const
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
static string & ToLower(string &str)
Convert string to lower case – string& version.
bool IsSetQual(void) const
qualifiers Check if a value has been assigned to Qual data member.
void SetLocation(TLocation &value)
Assign a value to Location 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.
void SetId(TId &value)
Assign a value to Id data member.
const TCdregion & GetCdregion(void) const
Get the variant data.
void SetData(TData &value)
Assign a value to Data data member.
Defines classes: CDirEntry, CFile, CDir, CSymLink, CMemoryFile, CFileUtil, CFileLock,...