have_non_zero =
false;
82have_non_zero =
true;
115 stringname =
type.GetStr();
117 if( name ==
"DBLink"||
118name ==
"GenomeProjectsDB"||
119name ==
"StructuredComment"||
120name ==
"FeatureFetchPolicy"||
121name ==
"Unverified") {
123 if(name ==
"StructuredComment") {
126 if((*it)->GetLabel().IsStr() &&
127(*it)->GetLabel().GetStr() ==
"StructuredCommentPrefix") {
128 string data= ((*it)->GetData().IsStr() ?
129(
string) (*it)->GetData().GetStr() :
137 if(uo_types.count(name) == 0)
142 else if( (1 << desc.
Which()) &
mask) {
151 if(
info.HasNoSeq_entry() ) {
155 info.x_GetBaseInfo().x_AddExistingUserObjectTypes(uo_types);
164 switch( idh.
Which() ) {
180 const CTextseq_id* text_id =
id->GetTextseq_Id();
188 boolis_cage_ddbj =
false;
192is_cage_ddbj =
true;
204 SIZE_TYPEletters_pos = (have_nz ? 3 : 0);
219 if(digits_pos != letters_pos+4 && digits_pos != letters_pos+6)
221min_digits = ((digits_pos == letters_pos+4) ? 8 : 9);
222max_digits = min_digits + 2;
226 if(digits_count < min_digits || digits_count > max_digits)
243row_id = NStr::StringToNumeric<Uint8>(acc.
substr(digits_pos));
245 version= NStr::StringToNumeric<int>(acc.
substr(digits_pos, 2));
246row_id = NStr::StringToNumeric<Uint8>(acc.
substr(digits_pos+2));
253master_id.
Assign(*
id);
256 stringmaster_acc = acc.
substr(0, digits_pos);
257master_acc.resize(acc.
size(),
'0');
258master_text_id->
Reset();
293 returnoptional_mask;
301 intexisting_mask = 0;
305existing_mask |= 1 << desc.
Which();
309 int mask= force_mask | (optional_mask & ~existing_mask);
345 if( bs_info->IsSetDescr() ) {
346 return ConstRef(&bs_info->GetDescr());
472 for(
autochunk_id :
info.x_GetDescrChunkIds() ) {
480 for(
autochunk_id : ids ) {
490 if(
info.x_IsSetDescr() ) {
492 for(
auto&
i:
info.x_GetDescr().Get() ) {
493 mask|= 1 <<
i->Which();
525first_entry->x_GetBaseInfo().x_AddExistingUserObjectTypes(existing_uo_types);
537descr->
Set().push_back(ref);
593split_info.AddChunk(*chunk);
599chunk->m_MasterInfo->m_AddToTSE =
true;
609setter->AddChunksToWait(lock->
x_GetBaseInfo(), split_info, 0);
612setter->AddChunksToWait(first_entry->x_GetBaseInfo(), split_info,
mask);
618setter->AddChunkToWait(seq_chunk.GetChunkId(), split_info,
mask);
ncbi::TMaskedQueryRegions mask
void x_AddExistingUserObjectTypes(TUserObjectTypesSet &uo_types) const
void x_AddDescrChunkId(const TDescTypeMask &types, TChunkId chunk_id)
TDescTypeMask x_GetExistingDescrMask(void) const
vector< CSeq_id_Handle > TId
const TId & GetId(void) const
TDescr & x_SetDescr(void)
const TChunkIds & x_GetBioseqChunkIds() const
CConstRef< CSeq_entry_Info > GetFirstEntry(void) const
@Seq_descr.hpp User-defined methods of the data storage class.
const CBioseq_Base_Info & x_GetBaseInfo(void) const
const TSet & GetSet(void) const
pair< TBioseqId, TBioseq_setId > TPlace
void x_AddDescInfo(TDescTypeMask type_mask, const TBioseqId &id)
void SetLoaded(CObject *obj=0)
void x_LoadDescr(const TPlace &place, const CSeq_descr &descr)
TChunkId GetChunkId(void) const
void SetLoadListener(CRef< CTSEChunkLoadListener > listener)
const CTSE_Split_Info & GetSplitInfo(void) const
bool x_NeedUpdate(ENeedUpdate flag) const
@ fNeedUpdate_descr
specific fields of this object
void SetBioseqUpdater(CRef< CBioseqUpdater > updater)
virtual void GetBioseqsIds(TSeqIds &ids) const
vector< CSeq_id_Handle > TSeqIds
CTSE_Split_Info & GetSplitInfo(void)
CTSE_Chunk_Info & GetChunk(TChunkId chunk_id)
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
virtual void Update(CBioseq_Info &seq) override
CWGSBioseqUpdaterChunk(const CSeq_id_Handle &master_idh)
virtual void Update(CBioseq_Info &seq) override
CConstRef< CSeq_descr > m_Descr
CWGSBioseqUpdaterDescr(const CSeq_id_Handle &master_idh, CConstRef< CSeq_descr > descr)
bool HasMasterId(const CBioseq_Info &seq) const
const CSeq_id_Handle & GetMasterId() const
CWGSBioseqUpdater_Base(const CSeq_id_Handle &master_idh)
CSeq_id_Handle m_MasterId
CRef< CWGSMasterInfo > m_MasterInfo
CWGSMasterChunkInfo(const CSeq_id_Handle &master_idh)
static int x_GetActualExistingDescrMask(const CBioseq_Base_Info &info)
CConstRef< CBioseq_set_Info > m_BioseqSet
CTSE_Chunk_Info::TChunkId TChunkId
void AddChunksToWait(const CBioseq_Base_Info &info, CTSE_Split_Info &split_info, int mask)
set< TChunkId > m_ChunksToWait
CRef< CWGSMasterInfo > m_MasterInfo
CWGSMasterDescrSetter(CRef< CWGSMasterChunkInfo > master_chunk_info, const CBioseq_set_Info &bset, CTSE_Split_Info &split_info, int mask)
virtual void Loaded(CTSE_Chunk_Info &chunk) override
void RegisterCallbacks(CTSE_Split_Info &split_info)
void AddChunkToWait(TChunkId chunk_id, CTSE_Split_Info &split_info, int mask)
CSeq_id_Handle m_MasterId
CWGSMasterInfo(const CSeq_id_Handle &master_idh)
CConstRef< CSeq_descr > m_OriginalMasterDescr
static void LoadWGSMaster(CDataLoader *loader, CRef< CTSE_Chunk_Info > chunk)
static void AddWGSMaster(CTSE_LoadLock &lock)
iterator_bool insert(const value_type &val)
const_iterator begin() const
const_iterator find(const key_type &key) const
const_iterator end() const
#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...
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
CConstRef< CSeq_id > GetSeqId(void) const
EAccessionInfo
For IdentifyAccession (below)
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
CSeq_id::E_Choice Which(void) const
const CTextseq_id * GetTextseq_Id(void) const
Return embedded CTextseq_id, if any.
TTSE_LockSet GetRecordsNoBlobState(const CSeq_id_Handle &idh, EChoice choice)
The same as GetRecords() but always returns empty TSE lock set instead of throwing CBlobStateExceptio...
@ eBioseqCore
main blob with bioseq core (no seqdata and annots)
CConstRef< C > ConstRef(const C *object)
Template function for conversion of const object pointer to CConstRef.
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
uint64_t Uint8
8-byte (64-bit) unsigned integer
#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 IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
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.
const TData & GetData(void) const
Get the Data member data.
const TType & GetType(void) const
Get the Type member data.
vector< CRef< CUser_field > > TData
bool IsSetAccession(void) const
Check if a value has been assigned to Accession data member.
void SetAccession(const TAccession &value)
Assign a value to Accession data member.
virtual void Reset(void)
Reset the whole object.
void SetVersion(TVersion value)
Assign a value to Version data member.
const TAccession & GetAccession(void) const
Get the Accession member data.
@ e_Gibbmt
Geninfo backbone moltype.
@ e_Giim
Geninfo import id.
@ e_Other
for historical reasons, 'other' = 'refseq'
@ e_Gibbsq
Geninfo backbone seqid.
@ e_General
for other databases
@ e_Gi
GenInfo Integrated Database.
@ e_not_set
No variant selected.
list< CRef< CSeqdesc > > Tdata
const TUser & GetUser(void) const
Get the variant data.
const Tdata & Get(void) const
Get the member data.
E_Choice Which(void) const
Which variant is currently selected.
Tdata & Set(void)
Assign a value to data member.
@ e_Embl
EMBL specific information.
@ e_User
user defined object
@ e_Update_date
date of last update
@ e_Pub
a reference to the publication
@ e_Genbank
GenBank specific info.
@ e_Comment
a more extensive comment
@ e_Molinfo
info on the molecule and techniques
@ e_Create_date
date entry first created/released
@ e_Source
source of materials, includes Org-ref
const string version
version string
static const int kTSE_Place_id
bool s_HasMasterId(const CBioseq_Info &seq, const CSeq_id_Handle &master_idh)
int GetOptionalDescrMask(EDescrType type)
CConstRef< CSeq_descr > GetWGSMasterDescr(CDataLoader *loader, const CSeq_id_Handle &master_idh)
static const int kRefSeqOptionalDescrMask
static bool s_GoodLetters(CTempString s)
CSeq_id_Handle GetWGSMasterSeq_id(const CSeq_id_Handle &idh)
static const char kMasterDescrMark[]
EDescrType GetDescrType(const CSeq_id_Handle &master_seq_idh)
static const int kForceDescrMask
void AddMasterDescr(CBioseq_Info &seq, const CSeq_descr &src, EDescrType type)
bool HasWGSMasterMark(const CTSE_Info &info)
int GetForceDescrMask(EDescrType type)
static bool s_IsGoodDescr(const CSeqdesc &desc, int mask, const TUserObjectTypesSet &uo_types)
static const int kOptionalDescrMask
static const bool kAddMasterDescrToTSE
static bool s_GoodDigits(CTempString s)
static const int kGoodDescrMask
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