&(
pub_->GetEquiv());
100 for(
const auto& pub :
pub_equiv_->Get()) {
101 if(pub->IsGen() && pub->GetGen().IsSetSerial_number()) {
102 cit_num_= pub->GetGen().GetSerial_number();
118 else if(
pub_->IsEquiv()) {
119 for(
const auto& cur_pub :
pub_->GetEquiv().Get()) {
120 if(cur_pub->IsGen() && cur_pub->GetGen().IsSetSerial_number()) {
121 cit_num_= cur_pub->GetGen().GetSerial_number();
131 for(
const auto& descr : descrs) {
132 if(descr->IsPub()) {
137pubs.push_back(pub_info);
144 for(
const auto& annot : annots) {
145 if(! annot->IsSetData() || ! annot->GetData().IsFtable())
149 for(
const auto& feat : annot->GetData().GetFtable()) {
150 if(feat->IsSetData()) {
152 if(feat->IsSetLocation())
153 id= feat->GetLocation().GetId();
164 if(feat->GetData().IsPub()) {
165pub_info.
SetPubEquiv(&feat->GetData().GetPub().GetPub());
166pubs.push_back(pub_info);
167}
else if(feat->GetData().IsImp() && feat->IsSetCit()) {
168 const CPub_set& pub_set = feat->GetCit();
170 for(
const auto& pub : pub_set.
GetPub()) {
172pubs.push_back(pub_info);
195 const CPub* pub =
nullptr;
199 for(
const auto& cur_pub : pub_equiv->
Get()) {
200 if(cur_pub->IsMuid() || cur_pub->IsPmid()) {
201 if(new_pub.
Empty()) {
203new_pub->
Assign(*cur_pub);
206new_pub_equiv->
Set().push_back(new_pub);
209new_pub->
Assign(*cur_pub);
210new_pub_equiv->
Set().push_back(new_pub);
213new_pub->
SetEquiv(*new_pub_equiv);
215pubs.push_back(new_pub);
222 if(! equiv_pubs.empty())
223pub = *equiv_pubs.begin();
225pub = pub_info.
GetPub();
228pubs.push_back(new_pub);
232 if(pub && pub->
IsGen()) {
236 if(equiv_pubs.size() > 1) {
237TPubList::const_iterator cur_pub = equiv_pubs.begin();
247pubs.push_back(new_pub);
255pubs.push_back(new_pub);
261pubs.push_back(new_pub);
266 for(
auto& annot : annots) {
267 if(! annot->IsSetData() || ! annot->GetData().IsFtable())
270 for(
auto& feat : annot->SetData().SetFtable()) {
271 if(feat->IsSetQual()) {
275 for(TQualVector::iterator qual = quals.begin(); qual != quals.end();) {
276 if((*qual)->IsSetQual() && (*qual)->GetQual() ==
"citation") {
278qual = quals.erase(qual);
281 for(
const CPubInfo& pub : pubs) {
282 if(pub.GetSerial() == ser_num) {
283 if(bioseq && pub.GetBioseq() && bioseq != pub.GetBioseq())
300 if(! cit_pubs.empty())
301feat->SetCit().SetPub().swap(cit_pubs);
309std::vector<CPubInfo> pubs;
311 for(
const auto& entry : seq_entries) {
313 if(bio_set->IsSetDescr())
316 if(bio_set->IsSetAnnot())
321 if(bioseq->IsSetDescr())
324 if(bioseq->IsSetAnnot())
329 for(
auto& entry : seq_entries) {
331 if(bio_set->IsSetAnnot())
332 ProcessCit(pubs, bio_set->SetAnnot(),
nullptr);
336 if(bioseq->IsSetAnnot())
337 ProcessCit(pubs, bioseq->SetAnnot(), &(*bioseq));
void ProcessCitations(TEntryList &seq_entries)
static void FindCitInDescr(std::vector< CPubInfo > &pubs, const TSeqdescList &descrs, const CBioseq *bioseq)
void SetMinimumPub(const CPubInfo &pub_info, TPubList &pubs)
static void ProcessCit(const std::vector< CPubInfo > &pubs, CBioseq::TAnnot &annots, const CBioseq *bioseq)
static void FindCitInFeats(std::vector< CPubInfo > &pubs, const CBioseq::TAnnot &annots)
static int GetCitSerialFromQual(const CGb_qual &qual)
@Gb_qual.hpp User-defined methods of the data storage class.
const objects::CBioseq * bioseq_
const objects::CPub_equiv * GetPubEquiv() const
const objects::CPub * GetPub() const
const objects::CPub_equiv * pub_equiv_
void SetPubEquiv(const objects::CPub_equiv *pub_equiv)
void SetBioseq(const objects::CBioseq *bioseq)
void SetPub(const objects::CPub *pub)
const objects::CPub * pub_
bool GetLabel(string *label, ELabelType type=eContent, TLabelFlags flags=0, ELabelVersion version=eLabel_DefaultVersion) const
Concatenate a label for this pub to label.
Template class for iteration on objects of class C (non-medifiable version)
Template class for iteration on objects of class C.
@ fLabel_Unique
Append a unique tag [V1].
#define ERR_QUALIFIER_NoRefForCiteQual
list< CRef< objects::CSeq_entry > > TEntryList
std::list< CRef< objects::CPub > > TPubList
std::list< CRef< objects::CSeqdesc > > TSeqdescList
int fta_atoi(string_view sv)
#define FtaErrPost(sev, level,...)
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
CBeginInfo Begin(C &obj)
Get starting point of object hierarchy.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CRef is not empty â pointing to an object and has a non-null value.
bool Empty(void) const THROWS_NONE
Check if CRef is empty â not pointing to any object, which means having a null value.
char Char
Alias for char.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static const char label[]
bool IsSetSerial_number(void) const
for GenBank style references Check if a value has been assigned to Serial_number data member.
void SetCit(const TCit &value)
Assign a value to Cit data member.
bool IsPmid(void) const
Check if variant Pmid is selected.
Tdata & Set(void)
Assign a value to data member.
const TPub & GetPub(void) const
Get the variant data.
const Tdata & Get(void) const
Get the member data.
TEquiv & SetEquiv(void)
Select the variant.
TGen & SetGen(void)
Select the variant.
const TGen & GetGen(void) const
Get the variant data.
bool IsMuid(void) const
Check if variant Muid is selected.
bool IsGen(void) const
Check if variant Gen is selected.
const TVal & GetVal(void) const
Get the Val member data.
list< CRef< CSeq_annot > > TAnnot
std::vector< CRef< objects::CGb_qual > > TQualVector
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