76 bool pooled_clones =
false);
116 bool third_party =
false;
117 bool tpa_exp =
false;
118 bool tpa_inf =
false;
123 bool wgs_master =
false;
124 bool tsa_master =
false;
126 bool htg_tech =
false;
127 bool htgs_draft =
false;
128 bool htgs_cancelled =
false;
129 bool htgs_pooled =
false;
130 bool htgs_unfinished =
false;
131 bool use_biosrc =
false;
137 tsid =
id->GetTextseq_Id();
139 switch (id->
Which()) {
146 if (
t.IsSetAccession()) {
147 const string& acc =
t.GetAccession();
167 general_id = &
id->GetGeneral();
176 pdb_id = &
id->GetPdb();
179 pat_id = &
id->GetPatent();
194 source = &it->GetSource();
195 if ( (found |= 1) == 3 ) {
202 mol_info = &it->GetMolinfo();
204 if ( (found |= 2) == 3 ) {
216 htgs_unfinished =
true;
237 if (htg_tech || third_party) {
240 if (gb->GetGenbank().IsSetKeywords()) {
241 keywords = &gb->GetGenbank().GetKeywords();
247 if (embl->GetEmbl().IsSetKeywords()) {
248 keywords = &embl->GetEmbl().GetKeywords();
258 htgs_cancelled =
true;
271 size_t search_depth = 0;
283 if (title.empty() && use_biosrc &&
source.NotEmpty()) {
290 htgs_unfinished && htgs_pooled);
295 if (title.empty() && is_nc &&
source.NotEmpty()
301 if (!title.empty()) {
306 }
else if (title.empty() && is_nm &&
source.NotEmpty()
308 unsigned int genes = 0, cdregions = 0, prots = 0;
312 switch (it->GetData().Which()) {
315 gene.Reset(&it->GetMappedFeature());
319 cdregion.
Reset(&it->GetMappedFeature());
328 if (genes == 1 && cdregions == 1
329 &&
source->GetOrg().IsSetTaxname()) {
330 title =
source->GetOrg().GetTaxname() +
' ';
335 "Drosophila melanogaster")) {
339 "transcript variant ");
345 }
else if (title.empty() && is_nr &&
source.NotEmpty()
350 if (it->GetData().IsGene()) {
351 title =
source->GetOrg().GetTaxname() +
' ';
375 title.erase(title.end() - 1);
378 if (title.empty() && pdb_id.
NotEmpty()) {
382 if (
isprint((
unsigned char) pdb_id->GetChain())) {
383 title =
string(
"Chain ") + (char)pdb_id->GetChain() +
", ";
391 if (title.empty() && pat_id.
NotEmpty()) {
393 +
" from Patent " + pat_id->GetCit().GetCountry()
394 +
' ' + pat_id->GetCit().GetSomeNumber();
399 if ( !title.empty() ) {
404 if (title.empty() && !htg_tech
409 if (title.empty() && !htg_tech &&
source.NotEmpty()) {
412 title =
"No definition line found";
416 if (is_tsa && !title.empty() ) {
418 }
else if (third_party && !title.empty() ) {
427 }
else if (tpa_inf) {
434 }
else if ( !tpa_start ) {
441 if (title.find(
"LOW-PASS") ==
NPOS) {
442 suffix =
", LOW-PASS SEQUENCE SAMPLING";
448 if (htgs_draft && title.find(
"WORKING DRAFT") ==
NPOS) {
449 suffix =
", WORKING DRAFT SEQUENCE";
450 }
else if ( !htgs_draft && !htgs_cancelled
451 && title.find(
"SEQUENCING IN") ==
NPOS) {
452 suffix =
", *** SEQUENCING IN PROGRESS ***";
460 unsigned int pieces = 1;
468 +
' ' + un +
"ordered pieces");
476 if (title.find(
"complete sequence") ==
NPOS) {
477 suffix =
", complete sequence";
482 if (title.find(
"mRNA sequence") ==
NPOS) {
483 suffix =
", mRNA sequence";
488 if (title.find(
"sequence tagged site") ==
NPOS) {
489 suffix =
", sequence tagged site";
494 if (title.find(
"genomic survey sequence") ==
NPOS) {
495 suffix =
", genomic survey sequence";
501 if (title.find(
"whole genome shotgun sequencing project") ==
NPOS){
502 suffix =
", whole genome shotgun sequencing project";
504 }
else if (title.find(
"whole genome shotgun sequence") ==
NPOS) {
508 if (orgnl[0] && title.find(orgnl) ==
NPOS) {
512 suffix +=
", whole genome shotgun sequence";
518 if (title.find(
"transcriptome shotgun assembly project") ==
NPOS){
519 suffix =
", transcriptome shotgun assembly project";
521 }
else if (title.find(
"transcriptome shotgun assembly project") ==
NPOS) {
522 suffix +=
", transcriptome shotgun assembly project";
539 if (organism.empty() && org.
NotEmpty() && org->IsSetTaxname()) {
540 organism = org->GetTaxname();
542 if ( !organism.empty() && title.find(organism) ==
NPOS) {
543 suffix +=
" [" + organism +
']';
561 bool third_party =
false;
562 bool tpa_exp =
false;
563 bool tpa_inf =
false;
568 bool wgs_master =
false;
569 bool tsa_master =
false;
571 bool htg_tech =
false;
572 bool htgs_draft =
false;
573 bool htgs_cancelled =
false;
574 bool htgs_pooled =
false;
575 bool htgs_unfinished =
false;
576 bool use_biosrc =
false;
581 tsid =
id->GetTextseq_Id();
583 switch (id->
Which()) {
590 if (
t.IsSetAccession()) {
591 const string& acc =
t.GetAccession();
611 general_id = &
id->GetGeneral();
620 pdb_id = &
id->GetPdb();
623 pat_id = &
id->GetPatent();
633 source = &desc->GetSource();
637 mol_info = &desc->GetMolinfo();
646 htgs_unfinished =
true;
667 if (htg_tech || third_party) {
681 if ( level <= max_level ) {
682 title = desc->GetTitle();
687 if (title.empty() && use_biosrc &&
source.NotEmpty()) {
694 htgs_unfinished && htgs_pooled);
699 if (title.empty() && is_nc &&
source.NotEmpty()
705 if (!title.empty()) {
710 }
else if (title.empty() && is_nm &&
source.NotEmpty()) {
712 }
else if (title.empty() && is_nr &&
source.NotEmpty()
713 &&
source->GetOrg().IsSetTaxname()) {
719 title.erase(title.end() - 1);
722 if (title.empty() && pdb_id.
NotEmpty()) {
726 if (title.empty() && pat_id.
NotEmpty()) {
728 +
" from Patent " + pat_id->GetCit().GetCountry()
729 +
' ' + pat_id->GetCit().GetSomeNumber();
732 if (title.empty() && seq.
IsAa()) {
736 if (title.empty() && !htg_tech &&
741 if (title.empty() && !htg_tech &&
source.NotEmpty()) {
744 title =
"No definition line found";
748 if (is_tsa && !title.empty() ) {
750 }
else if (third_party && !title.empty() ) {
759 }
else if (tpa_inf) {
766 }
else if ( !tpa_start ) {
773 if (title.find(
"LOW-PASS") ==
NPOS) {
774 suffix =
", LOW-PASS SEQUENCE SAMPLING";
780 if (htgs_draft && title.find(
"WORKING DRAFT") ==
NPOS) {
781 suffix =
", WORKING DRAFT SEQUENCE";
782 }
else if ( !htgs_draft && !htgs_cancelled
783 && title.find(
"SEQUENCING IN") ==
NPOS) {
784 suffix =
", *** SEQUENCING IN PROGRESS ***";
799 if (title.find(
"complete sequence") ==
NPOS) {
800 suffix =
", complete sequence";
805 if (title.find(
"mRNA sequence") ==
NPOS) {
806 suffix =
", mRNA sequence";
811 if (title.find(
"sequence tagged site") ==
NPOS) {
812 suffix =
", sequence tagged site";
817 if (title.find(
"genomic survey sequence") ==
NPOS) {
818 suffix =
", genomic survey sequence";
824 if (title.find(
"whole genome shotgun sequencing project") ==
NPOS){
825 suffix =
", whole genome shotgun sequencing project";
827 }
else if (title.find(
"whole genome shotgun sequence") ==
NPOS) {
831 if (orgnl[0] && title.find(orgnl) ==
NPOS) {
835 suffix +=
", whole genome shotgun sequence";
841 if (title.find(
"transcriptome shotgun assembly project") ==
NPOS){
842 suffix =
", transcriptome shotgun assembly project";
844 }
else if (title.find(
"transcriptome shotgun assembly project") ==
NPOS) {
845 suffix +=
", transcriptome shotgun assembly project";
857 org = &desc->GetOrg();
861 if (organism.empty() && org.
NotEmpty() && org->IsSetTaxname()) {
862 organism = org->GetTaxname();
864 if ( !organism.empty() && title.find(organism) ==
NPOS) {
865 suffix +=
" [" + organism +
']';
878 pos = clone.find(
';', pos + 1)) {
882 return ", pooled multiple clones";
883 }
else if (count > 3) {
886 return " clone " + clone;
894 if (strain.size() >= name.size()) {
901 pos = name.find(
' ', pos + 1);
902 if (pos ==
NPOS || pos + strain.size() >= name.size()) {
908 if (pos == name.size() - strain.size()) {
910 }
else if (pos == name.size() - strain.size() - 1
911 && name[pos - 1] ==
'\'' && name[name.size() - 1] ==
'\'') {
924 string name, chromosome, clone, map_, plasmid, strain, sfx;
935 if (
source.IsSetSubtype()) {
937 switch ((*it)->GetSubtype()) {
939 chromosome =
" chromosome " + (*it)->GetName();
940 if (
suffix == (*it)->GetName()) {
948 map_ =
" map " + (*it)->GetName();
952 plasmid =
" plasmid " + (*it)->GetName();
953 if (
suffix == (*it)->GetName()) {
964 const string&
subname = (*it)->GetSubname();
973 + map_ + plasmid + sfx);
974 if ( !title.empty() &&
islower((
unsigned char) title[0])) {
975 title[0] = (char)
toupper((
unsigned char) title[0]);
988 return "chloroplast";
990 return "chromoplast";
992 return "kinetoplast";
995 return "mitochondrion";
997 return "mitochondrial";
1003 return "macronuclear";
1008 return "extrachromosomal";
1035 return "nucleomorph";
1039 return "apicoplast";
1041 return "leucoplast";
1044 return "protoplast";
1046 return "proplastid";
1051 return "endogenous virus";
1056 return "hydrogenosome";
1061 return "chromosome";
1066 return "chromatophore";
1077 string name, chromosome, segment, plasmid_name, orgnl;
1078 string seq_tag, gen_tag;
1079 bool is_plasmid =
false;
1082 if (
source.GetOrg().IsSetTaxname()) {
1083 name =
source.GetOrg().GetTaxname();
1088 string lc_name = name;
1091 if (lc_name.find(
"virus") !=
NPOS || lc_name.find(
"phage") !=
NPOS) {
1095 if (
source.IsSetSubtype()) {
1097 switch ((*it)->GetSubtype()) {
1099 chromosome = (*it)->GetName();
1102 segment = (*it)->GetName();
1106 plasmid_name = (*it)->GetName();
1107 string lc_plasmid = plasmid_name;
1109 if (lc_plasmid.find(
"plasmid") ==
NPOS
1110 && lc_plasmid.find(
"element") ==
NPOS) {
1111 plasmid_name =
"plasmid " + plasmid_name;
1130 seq_tag =
", partial sequence";
1131 gen_tag =
", genome";
1134 seq_tag =
", complete sequence";
1135 gen_tag =
", complete genome";
1139 if (lc_name.find(
"plasmid") !=
NPOS) {
1140 return name + seq_tag;
1141 }
else if (is_plasmid) {
1142 if (plasmid_name.empty()) {
1143 return name +
" unnamed plasmid" + seq_tag;
1145 return name +
' ' + plasmid_name + seq_tag;
1147 }
else if ( !plasmid_name.empty() ) {
1148 if (orgnl.empty()) {
1149 return name +
' ' + plasmid_name + seq_tag;
1151 return name +
' ' + orgnl +
' ' + plasmid_name + seq_tag;
1153 }
else if ( !orgnl.empty() ) {
1154 if ( chromosome.empty() ) {
1155 return name +
' ' + orgnl + gen_tag;
1157 return name +
' ' + orgnl +
" chromosome " + chromosome + seq_tag;
1159 }
else if ( !segment.empty() ) {
1160 if (segment.find(
"DNA") ==
NPOS && segment.find(
"RNA") ==
NPOS
1161 && segment.find(
"segment") ==
NPOS
1162 && segment.find(
"Segment") ==
NPOS) {
1163 return name +
" segment " + segment + seq_tag;
1165 return name +
' ' + segment + seq_tag;
1167 }
else if ( !chromosome.empty() ) {
1168 return name +
" chromosome " + chromosome + seq_tag;
1170 return name + gen_tag;
1221 if (
prot.NotEmpty() &&
prot->IsSetName() && !
prot->GetName().empty()) {
1241 }
else if (
prot.NotEmpty() &&
prot->IsSetDesc()
1242 && !
prot->GetDesc().empty()) {
1243 return prot->GetDesc();
1244 }
else if (
prot.NotEmpty() &&
prot->IsSetActivity()
1245 && !
prot->GetActivity().empty()) {
1246 return prot->GetActivity().front();
1252 gene_name = *gene->
GetSyn().begin();
1256 if ( !gene_name.empty() ) {
1257 return gene_name +
" gene product";
1261 return "unnamed protein product";
1274 result =
"unnamed protein product";
1280 org = &it->GetSource().GetOrg();
1286 org = &it->GetData().GetBiosrc().GetOrg();
1290 if (org.
NotEmpty() && org->IsSetTaxname()) {
1291 organism = org->GetTaxname();
1302 string organism, product, locus, strain, clone, isolate;
1303 string completeness =
"complete";
1304 bool cds_found =
false;
1318 const string&
subname = (*mod)->GetSubname();
1343 if (organism.empty()) {
1344 organism =
"Unknown";
1360 completeness =
"partial";
1366 if (product.empty() && prot_feat.
NotEmpty()
1373 if (locus.empty() && gene_feat.
NotEmpty()) {
1385 string result = organism;
1387 if ( !strain.empty() ) {
1388 result +=
" strain " + strain;
1389 }
else if ( !clone.empty() && clone.find(
" clone ") !=
NPOS) {
1391 }
else if ( !isolate.empty() ) {
1392 result +=
" isolate " + isolate;
1395 if ( !product.empty() ) {
1398 if ( !locus.empty() ) {
1399 result +=
" (" + locus +
')';
1401 if ( !product.empty() || !locus.empty() ) {
1402 result +=
" gene, " + completeness +
" cds";
1413 if (pos > 0 && !
isspace((
unsigned char)s[pos - 1]) ) {
1417 while (pos + 3 <
len &&
isdigit((
unsigned char)s[pos])) {
1420 if (s[pos] ==
'-' && s[pos + 1] ==
'P'
1421 &&
isalpha((
unsigned char)s[pos + 2])
1422 && (pos + 3 ==
len || strchr(
" ,;", s[pos + 3])) ) {
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.
User-defined methods of the data storage class.
CConstRef< CSeqdesc > GetClosestDescriptor(CSeqdesc::E_Choice choice, int *level=NULL) const
bool IsSkippable(void) const
Template class for iteration on objects of class C (non-medifiable version)
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
static EAccessionInfo IdentifyAccession(const CTempString &accession, TParseFlags flags=fParse_AnyRaw)
Deduces information from a bare accession a la WHICH_db_accession; may report false negatives on prop...
EAccessionInfo
For IdentifyAccession (below)
string GetLabel(const CSeq_id &id)
CMappedFeat GetBestOverlappingFeat(const CMappedFeat &feat, CSeqFeatData::ESubtype need_subtype, sequence::EOverlapType overlap_type, CFeatTree *feat_tree=0, const SAnnotSelector *base_sel=0)
@ fFGL_Content
Include its content if there is any.
@ eOverlap_Interval
at least one pair of intervals must overlap
@ eOverlap_Contained
2nd contained within 1st extremes
const CSeq_feat * GetCDSForProduct(const CBioseq &product, CScope *scope)
Get the encoding CDS feature of a given protein sequence.
CConstRef< CSeq_feat > GetOverlappingGene(const CSeq_loc &loc, CScope &scope, ETransSplicing eTransSplicing=eTransSplicing_Auto)
string GetTitle(const CBioseq_Handle &hnd, TGetTitleFlags flags)
@ fGetTitle_Organism
append [organism]
@ fGetTitle_Reconstruct
ignore existing title Seqdesc.
@ fGetTitle_NoExpensive
skip potential expensive operations
@ fGetTitle_AllProteins
normally just names the first
vector< CSeq_id_Handle > TId
const TInst_Ext & GetInst_Ext(void) const
bool IsSetProduct(void) const
CConstRef< CSeq_id > GetSeqId(void) const
Get id which can be used to access this bioseq handle Throws an exception if none is available.
CConstRef< CSeq_entry > GetCompleteSeq_entry(void) const
Complete and get const reference to the seq-entry.
TInst_Repr GetInst_Repr(void) const
CScope & GetScope(void) const
Get scope this handle belongs to.
CSeq_entry_Handle GetTopLevelEntry(void) const
Get top level Seq-entry handle.
const TId & GetId(void) const
TMol GetBioseqMolType(void) const
Get some values from core:
bool IsSetPartial(void) const
const CSeq_loc & GetLocation(void) const
const CSeq_loc & GetProduct(void) const
vector< CSeqdesc::E_Choice > TDescChoices
bool Empty(void) const THROWS_NONE
Check if CConstRef is empty – not pointing to any object which means having a null value.
bool IsNull(void) const THROWS_NONE
Check if pointer is null – same effect as Empty().
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CConstRef is not empty – pointing to an object and has a non-null value.
#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.
NCBI_NS_STD::string::size_type SIZE_TYPE
static string SizetToString(size_t value, TNumToStringFlags flags=0, int base=10)
Convert size_t to string.
static int CompareNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive compare of a substring with another string.
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 bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static string & Replace(const string &src, const string &search, const string &replace, string &dst, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
static SIZE_TYPE FindCase(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 sensitive search.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static string TruncateSpaces(const string &str, ETrunc where=eTrunc_Both)
Truncate spaces in a string.
const char *const kEmptyCStr
Empty "C" string (points to a '\0').
static string & ToLower(string &str)
Convert string to lower case – string& version.
@ eNocase
Case insensitive compare.
const TSubtype & GetSubtype(void) const
Get the Subtype member data.
list< CRef< CSubSource > > TSubtype
bool IsSetSubtype(void) const
Check if a value has been assigned to Subtype data member.
const TOrg & GetOrg(void) const
Get the Org member data.
@ eGenome_endogenous_virus
bool IsSetSyn(void) const
synonyms for locus Check if a value has been assigned to Syn data member.
const TSyn & GetSyn(void) const
Get the Syn member data.
const TDesc & GetDesc(void) const
Get the Desc member data.
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.
bool IsSetDesc(void) const
descriptive name Check if a value has been assigned to Desc data member.
const TLocus_tag & GetLocus_tag(void) const
Get the Locus_tag member data.
const TLocus & GetLocus(void) const
Get the Locus member data.
bool IsStr(void) const
Check if variant Str is selected.
const TTag & GetTag(void) const
Get the Tag member data.
const TStr & GetStr(void) const
Get the variant data.
const TMod & GetMod(void) const
Get the Mod member data.
const TTaxname & GetTaxname(void) const
Get the Taxname member data.
bool IsSetMod(void) const
Check if a value has been assigned to Mod data member.
list< CRef< COrgMod > > TMod
bool IsSetOrgname(void) const
Check if a value has been assigned to Orgname data member.
bool IsSetTaxname(void) const
preferred formal name Check if a value has been assigned to Taxname data member.
const TOrgname & GetOrgname(void) const
Get the Orgname member data.
const TName & GetName(void) const
Get the Name member data.
bool IsSetName(void) const
protein name Check if a value has been assigned to Name data member.
const TLocation & GetLocation(void) const
Get the Location member data.
const TData & GetData(void) const
Get the Data member data.
const TGene & GetGene(void) const
Get the variant data.
const TProt & GetProt(void) const
Get the variant data.
E_Choice Which(void) const
Which variant is currently selected.
const TGeneral & GetGeneral(void) const
Get the variant data.
@ e_Other
for historical reasons, 'other' = 'refseq'
@ e_Tpe
Third Party Annot/Seq EMBL.
@ e_Tpd
Third Party Annot/Seq DDBJ.
@ e_General
for other databases
@ e_Tpg
Third Party Annot/Seq Genbank.
TRepr GetRepr(void) const
Get the Repr member data.
const TSeg & GetSeg(void) const
Get the variant data.
const TInst & GetInst(void) const
Get the Inst member data.
const TTitle & GetTitle(void) const
Get the variant data.
const TSource & GetSource(void) const
Get the variant data.
const TPdb & GetPdb(void) const
Get the variant data.
const TId & GetId(void) const
Get the Id member data.
TTech GetTech(void) const
Get the Tech member data.
bool IsSetInst(void) const
the sequence data Check if a value has been assigned to Inst data member.
const TOrg & GetOrg(void) const
Get the variant data.
list< CRef< CSeq_id > > TId
TBiomol GetBiomol(void) const
Get the Biomol member data.
TCompleteness GetCompleteness(void) const
Get the Completeness member data.
@ eRepr_seg
segmented sequence
@ eRepr_delta
sequence made by changes (delta) to others
@ eCompleteness_no_left
missing 5' or NH3 end
@ eCompleteness_partial
partial but no details given
@ eCompleteness_no_right
missing 3' or COOH end
@ eCompleteness_no_ends
missing both ends
@ eTech_htgs_2
ordered High Throughput sequence contig
@ eTech_sts
Sequence Tagged Site.
@ eTech_htgs_3
finished High Throughput sequence
@ eTech_htgs_1
unordered High Throughput sequence contig
@ eTech_tsa
transcriptome shotgun assembly
@ eTech_wgs
whole genome shotgun sequencing
@ eTech_survey
one-pass genomic sequence
@ eTech_htgs_0
single genomic reads for coordination
@ eTech_est
Expressed Sequence Tag.
@ eBiomol_pre_RNA
precursor RNA of any sort really
@ eBiomol_cRNA
viral RNA genome copy intermediate
@ eBiomol_snoRNA
small nucleolar RNA
@ eBiomol_transcribed_RNA
transcribed RNA other than existing classes
@ eBiomol_other_genetic
other genetic material
@ e_Embl
EMBL specific information.
@ e_Org
if all from one organism
@ e_Genbank
GenBank specific info.
@ e_Molinfo
info on the molecule and techniques
@ e_Title
a title for this sequence
@ e_Pdb
PDB specific information.
@ e_Source
source of materials, includes Org-ref
const TCompound & GetCompound(void) const
Get the Compound member data.
const CharType(& source)[N]
static const char * suffix[]
static const char * prefix[]
static string s_GetProteinName(const CBioseq_Handle &handle, CScope &scope, CConstRef< CSeq_loc > &cds_loc, TGetTitleFlags flags)
static string s_TitleFromChromosome(const CBioSource &source, const CMolInfo &mol_info)
static const char * s_OrganelleName(CBioSource::TGenome genome, TOrganelleNameFlags flags)
static string s_TitleFromProtein(const CBioseq_Handle &handle, CScope &scope, string &organism, TGetTitleFlags flags)
static void s_FlyCG_PtoR(string &s)
static string x_TitleFromChromosome(const CBioSource &source, const CMolInfo &mol_info)
static string s_DescribeClones(const string &clone, bool pooled)
static string s_TitleFromSegment(const CBioseq_Handle &handle, CScope &scope, TGetTitleFlags flags)
static string s_TitleFromBioSource(const CBioSource &source, CMolInfo::TTech tech, const string &suffix=kEmptyStr, bool pooled_clones=false)
static bool s_EndsWithStrain(const string &name, const string &strain)