(pos < s.
size()) {
92}
else if(s[pos2] ==
'+') {
95}
else if(s[pos2] ==
'%') {
129 while( !
in.AtEOF() ) {
131 charc =
in.PeekChar();
134 if(line.
size() > 2 && line[1] ==
'#') {
138}
else if(c ==
'>') {
147 if( line.
empty() ) {
154 if(record->id.empty()) {
162 match.Reset(record);
176loc_iter->ranges.begin();
177 for( ; dst_iter != loc_iter->ranges.
end(); ) {
180 if(
r.GetLength() <=
181range.
GetLength() + dst_iter->GetLength()) {
183 _TRACE(
"merging overlapping ranges: " 185<< range.
GetTo() <<
" <-> " 186<< dst_iter->GetFrom() <<
" - " 187<< dst_iter->GetTo());
188loc_iter->ranges.erase(dst_iter++);
194loc_iter->ranges.
insert(range);
198 if(rec.
key==
"exon") {
210 if( !iter->second->IsSetLocus() &&
211!iter->second->IsSetLocus_tag()) {
212iter->second->SetLocus(iter->first);
213}
else if( !iter->second->IsSetLocus() ||
214iter->second->GetLocus() != iter->first) {
215iter->second->SetSyn().push_back(iter->first);
220 for( ; feat_iter; ++feat_iter) {
222 if(feat_iter->GetData().IsGene()) {
223ref = &feat_iter->GetData().GetGene();
225ref = feat_iter->GetGeneXref();
231 const_cast<CGene_ref*
>(ref)->Assign(*iter->second);
243 for( ; feat_iter; ++feat_iter) {
249qual_name =
"protein_id";
253qual_name =
"transcript_id";
262 if( !id_str.empty() ) {
271 for( ; annot_iter; ++annot_iter) {
278CSeq_annot::TData::TFtable::iterator feat_iter =
279annot.
SetData().SetFtable().begin();
280CSeq_annot::TData::TFtable::iterator feat_end =
281annot.
SetData().SetFtable().end();
288 for(
boolhas_genes =
false;
289feat_iter != feat_end && !has_genes; ++feat_iter) {
316 x_Error(
"No consistent ID found; gene feature skipped");
320TGeneMap::iterator iter = genes.find(gene_id);
321 if(iter == genes.end()) {
330genes[gene_id] = gene;
349 ITERATE(TGeneMap, iter, genes) {
350annot.
SetData().SetFtable().push_back(iter->second);
372 ERR_POST_X(1,
Error<< message <<
" [GFF input, line "<< line <<
']');
382 ERR_POST_X(1,
Info<< message <<
" [GFF input, line "<< line <<
']');
404 if( line.
empty() || line[0] !=
'#'|| line[1] !=
'#') {
412 if(v[0] ==
"date"&& v.size() > 1) {
414}
else if(v[0] ==
"Type"&& v.size() > 1) {
416}
else if(v[0] ==
"gff-version"&& v.size() > 1) {
418}
else if(v[0] ==
"FASTA") {
433}
catch(exception& e) {
441 if(seqname.
empty()) {
455 if(it->GetId().empty()) {
464our_bs->
SetId() = it->GetId();
465 if(it->IsSetDescr()) {
468our_bs->
SetInst(it->SetInst());
477 boolmisdelimited =
false;
484 x_Error(
"Skipping line due to insufficient fields",
489misdelimited =
true;
502record->source = v[1];
507}
catch(std::exception& e) {
513}
catch(std::exception& e) {
517record->score = v[5];
521}
else if(v[6] ==
"-") {
523}
else if( !(v[6] ==
".") ) {
524 x_Warn(
"Bad strand "+
string(v[6]) +
" (should be [+-.])",
528 if(v[7] ==
"0"|| v[7] ==
"1"|| v[7] ==
"2") {
529record->frame = v[7][0] -
'0';
530}
else if(v[7] ==
".") {
533 x_Warn(
"Bad frame "+
string(v[7]) +
" (should be [012.])",
544record->loc.push_back(subloc);
554 if( !misdelimited && (
i> 9 || (
i== 9 && v.size() > 9
559 if(record->FindAttribute(
"Target") != record->attrs.end()) {
568 if(id_it != record->attrs.end()) {
569record->id = (*id_it)[1];
573 if(parent_it != record->attrs.end()) {
574record->parent = (*parent_it)[1];
578 if(name_it != record->attrs.end()) {
579record->name = (*name_it)[1];
595feat->
SetData().SetCdregion().SetFrame
600 string tag= it->front();
604 if(
tag==
"Parent") {
607feat->
SetXref().push_back( xref );
612 if( record.
source!=
".") {
614 source->SetQual(
"source");
623 string tag= it->front();
625 switch(it->size()) {
637 if(
tag==
"transcript_id") {
639}
else if(
tag==
"gene_id") {
642}
else if(
tag==
"gene") {
645}
else if(
tag==
"locus_tag") {
648}
else if(
tag==
"exon_number") {
660feat->
SetQual().push_back(qual);
664 if( !gene_id.empty() ) {
666 if(colon !=
NPOS) {
667gene_id.erase(0, colon + 1);
672 if( !iter->second ) {
675 if( !gene.empty() ) {
676 if(iter->second->IsSetLocus() &&
677iter->second->GetLocus() != gene) {
679<<
"inconsistent gene name: " 680<< gene <<
" != "<< iter->second->GetLocus()
681<<
", ignoring second");
682}
else if( !iter->second->IsSetLocus() ) {
683iter->second->SetLocus(gene);
686 if( !locus_tag.empty() ) {
687 if(iter->second->IsSetLocus_tag() &&
688iter->second->GetLocus_tag() != locus_tag) {
690<<
"inconsistent locus tag: " 691<< locus_tag <<
" != "<< iter->second->GetLocus_tag()
692<<
", ignoring second");
693}
else if( !iter->second->IsSetLocus_tag() ) {
694iter->second->SetLocus_tag(locus_tag);
719vector<string> target;
720 if(tgit != record.
attrs.
end()) {
723 if(target.size() != 3) {
730 TSeqPostglen = tgstop - tgstart + 1;
736reflen += it.GetRange().GetLength();
740tgloc->
SetInt().SetId(*tgid);
741tgloc->
SetInt().SetFrom(tgstart);
742tgloc->
SetInt().SetTo(tgstop);
745 if(gap_it == record.
attrs.
end()) {
747 if(reflen == tglen && refloc->
IsInt()) {
750ds.
SetIds().push_back(refid);
751ds.
SetIds().push_back(tgid);
754ds.
SetLens().push_back(reflen);
760 if(reflen != tglen && reflen != 3 * tglen) {
761 x_Warn(
"Reference and target locations have an irregular" 765ss->SetLoc().push_back(refloc);
766ss->SetLoc().push_back(tgloc);
767align->
SetSegs().SetStd().push_back(ss);
778align->
SetScore().push_back(score);
793 if(range->GetLength() == 1) {
803 si.SetFrom(range->GetFrom());
804 si.SetTo (range->GetTo());
806 si.SetStrand(it->strand);
810seqloc->
SetMix().Set().push_front(segment);
812seqloc->
SetMix().Set().push_back(segment);
817 if(seqloc->
GetMix().
Get().size() == 1) {
818 returnseqloc->
SetMix().Set().front();
828 stringattr_last_value;
829vector<string> attr_values;
832 for(;
i< v.size(); ++
i) {
833 strings =
string(v[
i]) +
' ';
835 while(pos < s.size()) {
838pos2 = s.find_first_of(
" \'\"\\", pos);
840 if(s[pos2] == quote_char) {
841 if(attr_values.empty()) {
842 x_Warn(
"quoted attribute tag "+ attr_last_value,
846attr_last_value += s.substr(pos, pos2 - pos);
851attr_values.push_back(attr_last_value);
852 x_Warn(e.what() + (
" in value of "+ attr_values[0]),
855attr_last_value.erase();
856}
else if(s[pos2] ==
'\\') {
858attr_last_value += s.substr(pos, pos2 + 1 - pos);
860attr_last_value += s.substr(pos, pos2 + 1 - pos);
863pos2 = s.find_first_of(
" #;\"", pos);
867attr_last_value += s.substr(pos, pos2 - pos);
868attr_values.push_back(attr_last_value);
869attr_last_value.erase();
874 if(pos2 == s.size() - 1) {
884 if(attr_values.empty()) {
895quote_char = s[pos2];
906 if( !attr_values.empty() ) {
929vector<string>
v2, attr;
939 ITERATE(vector<string>, it2, vals) {
940 string value( *it2 );
964 if(attr.size() == 0) {
969 if(attr[0] ==
"gbkey"&& attr.size() == 2) {
970record.
key= attr[1];
986 if(!record.
id.empty()) {
989 else if(!record.
parent.empty()) {
1003 if(gene_it != record.
attrs.
end()) {
1004 id+= (*gene_it)[1];
1007 if(transcript_it != record.
attrs.
end()) {
1008 if( !
id.
empty() ) {
1011 id+= (*transcript_it)[1];
1017 for( ; dbxref_it != record.
attrs.
end() &&
1018dbxref_it->front() ==
"db_xref"; ++dbxref_it) {
1019 if( !
id.
empty() ) {
1022 id+= (*dbxref_it)[1];
1025 if(
id.
empty() ) {
1029 if(record.
key==
"start_codon"|| record.
key==
"stop_codon") {
1032}
else if(record.
key==
"CDS" 1036}
else if(record.
key==
"exon") {
1043 if(it == record.
attrs.
end()) {
1046 id+= record.
key+
' '+ (*it)[1];
1060 boolmerge_overlaps =
false;
1061 if(dest.
key==
"CDS"&&
1062(src.
key==
"start_codon"|| src.
key==
"stop_codon")) {
1065merge_overlaps =
true;
1068 if((dest.
key==
"start_codon"|| dest.
key==
"stop_codon") &&
1069src.
key==
"CDS") {
1072merge_overlaps =
true;
1077 intbest_frame = dest.
frame;
1080 boolmerged =
false;
1082 if(slit->accession != dlit->accession) {
1083 if(dest.
loc.size() == 1) {
1087}
else if(slit->strand != dlit->strand) {
1088 if(dest.
loc.size() == 1) {
1094 if(slit->ranges.begin()->GetFrom() <
1095dlit->ranges.begin()->GetFrom()) {
1096best_frame = src.
frame;
1099 if(slit->ranges.begin()->GetTo() >
1100dlit->ranges.begin()->GetTo()) {
1101best_frame = src.
frame;
1104 if(merge_overlaps) {
1106dlit->merge_ranges.insert(*set_iter);
1110dlit->ranges.insert(*set_iter);
1118dest.
loc.push_back(*slit);
1122dest.
frame= best_frame;
1123 if(src.
key!= dest.
key) {
1131 x_Warn(
"Merging features with different keys: "+ dest.
key 1146 const string&
tag= sait->front();
1147 while(dait != dait_end && dait->front() <
tag) {
1151 if(dait_tag == dait_end || dait_tag->front() !=
tag) {
1154 if(dait != dait_end && dait->front() ==
tag) {
1155 while(dait != dait_end && *dait < *sait) {
1159 if(dait != dait_end && *dait == *sait) {
1162 if(dait_tag != dait_end) {
1163 while(dait != dait_end && dait->front() ==
tag) {
1167dait_tag = dait_end;
1184}
else if( seq2.
NotEmpty() && seq != seq2) {
1194 if((*it)->GetData().IsFtable()) {
1201annots.push_back(annot);
1215 if((*it)->GetData().IsAlign()) {
1222annots.push_back(annot);
1228 switch(record.
type) {
1248 x_Warn(
"x_ResolveSeqName: invalid cache entry for "+ name);
1256 x_Warn(
"x_ResolveNewSeqName returned null or invalid ID for "+ name);
1274 if(name.find_first_not_of(
"0123456789") == string::npos) {
1315seq->
SetId().push_back(id_copy);
1318 const string& mol = mol0.empty() ?
m_DefMol: mol0;
1319 if(mol.empty() || mol ==
"dna") {
1321}
else if(mol ==
"rna") {
1323}
else if(mol ==
"protein") {
1326 x_Warn(
"unrecognized sequence type "+ mol +
"; assuming DNA");
1336 for( ; feat_iter; ++feat_iter) {
1342qual_name =
"protein_id";
1346qual_name =
"transcript_id";
1355 if( !id_str.empty() ) {
1365 for( ; annot_iter; ++annot_iter) {
1372CSeq_annot::TData::TFtable::iterator feat_iter =
1373annot.
SetData().SetFtable().begin();
1374CSeq_annot::TData::TFtable::iterator feat_end =
1375annot.
SetData().SetFtable().end();
1382 for(
boolhas_genes =
false;
1383feat_iter != feat_end && !has_genes; ++feat_iter) {
1410 x_Error(
"No consistent ID found; gene feature skipped");
1414TGeneMap::iterator iter = genes.find(gene_id);
1415 if(iter == genes.end()) {
1424genes[gene_id] = gene;
1433gene->
SetLocation().InvalidateTotalRangeCache();
1443 ITERATE(TGeneMap, iter, genes) {
1444annot.
SetData().SetFtable().push_back(iter->second);
1451 if( !tse || gene_refs.
empty() ) {
1455 if( !iter->second->IsSetLocus() &&
1456!iter->second->IsSetLocus_tag()) {
1457iter->second->SetLocus(iter->first);
1458}
else if( !iter->second->IsSetLocus() ||
1459iter->second->GetLocus() != iter->first) {
1460iter->second->SetSyn().push_back(iter->first);
1465 for( ; feat_iter; ++feat_iter) {
1467 if(feat_iter->GetData().IsGene()) {
1468ref = &feat_iter->GetData().GetGene();
1470ref = feat_iter->GetGeneXref();
1475 if(iter != gene_refs.
end()) {
1476 const_cast<CGene_ref*
>(ref)->Assign(*iter->second);
1484 boolfound =
false;
1505 while(it !=
attrs.
end() && it->front() == att_name
1506&& it->size() <= min_values) {
1509 return(it ==
attrs.
end() || it->front() == att_name) ? it :
attrs.
end();
User-defined methods of the data storage class.
User-defined methods of the data storage class.
bool IsReverse(ENa_strand s)
User-defined methods of the data storage class.
User-defined methods of the data storage class.
Code to handle Concise Idiosyncratic Gapped Alignment Report notation.
void SetToTime(const CTime &time, EPrecision prec=ePrecision_second)
Base class for reading FASTA sequences.
@ fKeepBadKey
= 0x02 (As much as possible, try to use bad keys as if they were acceptable)
@ fTranslateBadKey
= 0x04 (yields misc_feature /standard_name="...")
static CRef< CSeq_feat > CreateSeqFeat(const string &feat, CSeq_loc &location, const TFlags flags=0, ILineErrorListener *pMessageListener=nullptr, unsigned int line=0, std::string *seq_id=nullptr, ITableFilter *filter=nullptr)
static void AddFeatQual(CRef< CSeq_feat > sfp, const string &feat_name, const string &qual, const string &val, const TFlags flags=0, ILineErrorListener *pMessageListener=nullptr, int line=0, const string &seq_id=std::string())
@Gb_qual.hpp User-defined methods of the data storage class.
void GetLabel(string *label) const
ESubtype GetSubtype(void) const
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
namespace ncbi::objects::
const string & GetNamedQual(const CTempString &qual_name) const
Return a named qualifier.
const CGene_ref * GetGeneXref(void) const
See related function in util/feature.hpp.
Seq-loc iterator class â iterates all intervals from a seq-loc in the correct order.
Simple implementation of ILineReader for i(o)streams.
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
Template class for iteration on objects of class C (non-medifiable version)
Template class for iteration on objects of class C.
Abstract base class for lightweight line-by-line reading.
container_type::const_iterator const_iterator
container_type::iterator iterator
const_iterator end() const
iterator_bool insert(const value_type &val)
container_type::value_type value_type
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator begin() const
parent_type::iterator iterator
const_iterator end() const
const_iterator lower_bound(const key_type &key) const
parent_type::const_iterator const_iterator
static const char si[8][64]
std::ofstream out("events_result.xml")
main entry point for tests
Operators to edit gaps in sequences.
static const char * str(char *buf, int n)
static CRef< CFeat_id > s_StringToFeatId(const string &str)
static string & s_URLDecode(const CTempString &s, string &out)
Reader for GFF (including GTF) files.
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
#define ERR_POST_X(err_subcode, message)
Error posting with default error code and given error subcode.
void Error(CExceptionArgs_Base &args)
void Warning(CExceptionArgs_Base &args)
void Info(CExceptionArgs_Base &args)
virtual CRef< CSeq_id > x_ResolveSeqName(const string &name)
Falls back to x_ResolveNewSeqName on cache misses.
virtual void x_PlaceAlignment(CSeq_align &align, const SRecord &record)
virtual void x_ParseV3Attributes(SRecord &record, const TStrVec &v, SIZE_TYPE &i)
virtual void x_ParseDateComment(const TStr &date)
virtual CRef< CBioseq > x_ResolveID(const CSeq_id &id, const TStr &mol)
Falls back to x_ResolveNewID on cache misses.
virtual void x_PlaceSeq(CBioseq &seq)
virtual void x_PlaceFeature(CSeq_feat &feat, const SRecord &record)
virtual CRef< CSeq_loc > x_ResolveLoc(const SRecord::TLoc &loc)
virtual void x_MergeRecords(SRecord &dest, const SRecord &src)
virtual void x_Warn(const string &message, unsigned int line=0)
TDelayedRecords m_DelayedRecords
CRef< CSeq_entry > ReadSet(int max_seqs=kMax_Int, ILineErrorListener *pMessageListener=nullptr)
Read multiple sequences (by default, as many as are available.)
TLoc loc
from accession, start, stop, strand
virtual void x_ParseTypeComment(const TStr &moltype, const TStr &seqname)
virtual CRef< CBioseq > x_ResolveNewID(const CSeq_id &id, const string &mol)
The base version just constructs a shell so as not to depend on the object manager,...
CRef< CSeq_entry > Read(CNcbiIstream &in, TFlags flags=fDefaults)
unsigned int x_GetLineNumber(void)
virtual void x_ReadFastaSequences(ILineReader &in)
virtual CRef< SRecord > x_NewRecord(void)
virtual void x_ParseAndPlace(const SRecord &record)
virtual void x_MergeAttributes(SRecord &dest, const SRecord &src)
virtual void x_Reset(void)
Reset all state, since we're between streams.
TFlags x_GetFlags(void) const
virtual CRef< CSeq_id > x_ResolveNewSeqName(const string &name)
virtual void x_Error(const string &message, unsigned int line=0)
virtual void x_RemapGeneRefs(CRef< CSeq_entry > &, TGeneRefs &)
virtual void x_CreateGeneFeatures(CRef< CSeq_entry > &)
unsigned int m_LineNumber
TSeqNameCache m_SeqNameCache
TAttrs::const_iterator FindAttribute(const string &att_name, size_t min_values=1) const
virtual void x_AddAttribute(SRecord &record, vector< string > &attr)
virtual bool x_IsLineUcscMetaInformation(const TStr &)
virtual string x_FeatureID(const SRecord &record)
Returning the empty string indicates that record constitutes an entire feature.
virtual void x_Info(const string &message, unsigned int line=0)
virtual bool x_ParseStructuredComment(const TStr &line)
virtual CRef< CSeq_align > x_ParseAlignRecord(const SRecord &record)
virtual CRef< CSeq_feat > x_ParseFeatRecord(const SRecord &record)
virtual void x_SetProducts(CRef< CSeq_entry > &)
set< TSeqRange > ranges
the set of ranges that make up this location this allows us to separately assign frame even if the ra...
virtual bool x_SplitKeyValuePair(const string &, string &, string &)
virtual void x_ParseV2Attributes(SRecord &record, const TStrVec &v, SIZE_TYPE &i)
virtual CRef< SRecord > x_ParseFeatureInterval(const TStr &line)
ILineReader * m_LineReader
@ fAssumeNuc
Assume nucs unless accns indicate otherwise.
@ fMergeOnyCdsMrna
move protein_id and transcript_id to products for mRNA and CDS features
@ fAllIdsAsLocal
all identifiers are local IDs
@ fNoGTF
don't honor/recognize GTF conventions
@ fSetProducts
create gene features for mRNAs and CDSs if none exist already
@ fCreateGeneFeats
numeric identifiers are local IDs
@ fGBQuals
merge exons with the same transcript_id
@ fNumericIdsAsLocal
all identifiers are local IDs
@ fMergeExons
restrict merging to just CDS and mRNA features
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
ENa_strand GetStrand(void) const
Get the location's strand.
TRange GetTotalRange(void) const
const CSeq_id * GetId(void) const
Get the id of the location return NULL if has multiple ids or no id at all.
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.
position_type GetLength(void) const
CRange< TSeqPos > TSeqRange
typedefs for sequence ranges
#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.
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
NCBI_NS_STD::string::size_type SIZE_TYPE
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 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 MatchesMask(CTempString str, CTempString mask, ECase use_case=eCase)
Match "str" against the "mask".
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static double StringToDouble(const CTempStringEx str, TStringToNumFlags flags=0)
Convert string to double.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static string ParseEscapes(const CTempString str, EEscSeqRange mode=eEscSeqRange_Standard, char user_char='?')
Parse C-style escape sequences in the specified string.
bool empty(void) const
Return true if the represented string is empty (i.e., the length is zero)
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 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 unsigned int StringToUInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to unsigned int.
CTempString substr(size_type pos) const
Obtain a substring from this string, beginning at a given offset.
size_type find_first_of(const CTempString match, size_type pos=0) const
Find the first occurrence of any character in the matching string within the current string,...
size_type size(void) const
Return the length of the represented array.
@ fSplit_Tokenize
All delimiters are merged and trimmed, to get non-empty tokens only.
@ fSplit_MergeDelimiters
Merge adjacent delimiters.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
bool IsSetLocus(void) const
Official gene symbol Check if a value has been assigned to Locus data member.
const TLocus & GetLocus(void) const
Get the Locus member data.
TStr & SetStr(void)
Select the variant.
TScore & SetScore(void)
Assign a value to Score data member.
TLens & SetLens(void)
Assign a value to Lens data member.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
void SetDim(TDim value)
Assign a value to Dim data member.
void SetType(TType value)
Assign a value to Type data member.
TStarts & SetStarts(void)
Assign a value to Starts data member.
TStrands & SetStrands(void)
Assign a value to Strands data member.
void SetNumseg(TNumseg value)
Assign a value to Numseg data member.
TIds & SetIds(void)
Assign a value to Ids data member.
@ eType_partial
mapping pieces together
TXref & SetXref(void)
Assign a value to Xref data member.
void SetQual(const TQual &value)
Assign a value to Qual data member.
void SetLocation(TLocation &value)
Assign a value to Location data member.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
void SetProduct(TProduct &value)
Assign a value to Product data member.
const TLocation & GetLocation(void) const
Get the Location member data.
TLocal & SetLocal(void)
Select the variant.
const TData & GetData(void) const
Get the Data member data.
void SetId(TId &value)
Assign a value to Id data member.
void SetData(TData &value)
Assign a value to Data data member.
void SetVal(const TVal &value)
Assign a value to Val data member.
TQual & SetQual(void)
Assign a value to Qual data member.
bool IsSetProduct(void) const
product of process Check if a value has been assigned to Product data member.
void SetPoint(TPoint value)
Assign a value to Point data member.
void SetId(TId &value)
Assign a value to Id data member.
ENa_strand
strand of nucleic acid
void SetStrand(TStrand value)
Assign a value to Strand data member.
TFrom GetFrom(void) const
Get the From member data.
E_Choice Which(void) const
Which variant is currently selected.
TGi GetGi(void) const
Get the variant data.
const Tdata & Get(void) const
Get the member data.
bool IsSetStrand(void) const
Check if a value has been assigned to Strand data member.
TStrand GetStrand(void) const
Get the Strand member data.
bool IsGi(void) const
Check if variant Gi is selected.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
const TMix & GetMix(void) const
Get the variant data.
@ e_not_set
No variant selected.
@ e_MaxChoice
== e_Named_annot_track+1
TSet & SetSet(void)
Select the variant.
TAnnot & SetAnnot(void)
Assign a value to Annot data member.
void SetDescr(TDescr &value)
Assign a value to Descr data member.
TSeq & SetSeq(void)
Select the variant.
TSeq_set & SetSeq_set(void)
Assign a value to Seq_set data member.
void SetData(TData &value)
Assign a value to Data data member.
TId & SetId(void)
Assign a value to Id data member.
TAnnot & SetAnnot(void)
Assign a value to Annot data member.
const TId & GetId(void) const
Get the Id member data.
list< CRef< CSeq_id > > TId
void SetInst(TInst &value)
Assign a value to Inst data member.
void SetDescr(TDescr &value)
Assign a value to Descr data member.
const TData & GetData(void) const
Get the Data member data.
list< CRef< CSeq_annot > > TAnnot
TUpdate_date & SetUpdate_date(void)
Select the variant.
E_Choice Which(void) const
Which variant is currently selected.
@ eRepr_virtual
no seq data
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::KEY key
const GenericPointer< typename T::ValueType > T2 value
const CharType(& source)[N]
Defines: CTimeFormat - storage class for time format.
Useful/utility classes and methods.
std::istream & in(std::istream &in_, double &x_)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
static int match(PCRE2_SPTR start_eptr, PCRE2_SPTR start_ecode, uint16_t top_bracket, PCRE2_SIZE frame_size, pcre2_match_data *match_data, match_block *mb)
static const sljit_gpr r2
static SLJIT_INLINE sljit_ins lr(sljit_gpr dst, sljit_gpr src)
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