: m_App(app), m_Stream(0)
135m_Stream = &m_App->Info();
157 template<
typenameT>
168 template<
typenameT>
182: m_DumpAsnText(
false), m_DumpAsnBinary(
false),
203arg_desc->AddOptionalKey(
"gi",
"Gi",
204 "GI of the Seq-Entry to process",
206arg_desc->AddOptionalKey(
"gi_list",
"GiList",
207 "file with list of GIs to process",
209arg_desc->AddOptionalKey(
"id",
"SeqId",
210 "Seq-id of the Seq-Entry to process",
212arg_desc->AddOptionalKey(
"id_list",
"SeqIdList",
213 "file with list of Seq-ids to process",
215arg_desc->AddOptionalKey(
"blob_id",
"BlobId",
216 "sat,satkey[,subsat] of the blob in split",
218arg_desc->AddOptionalKey(
"in",
"FileIn",
219 "file with the Seq-entry to process",
222arg_desc->AddOptionalKey(
"blob_key",
"BlobKey",
223 "key of the blob in cache",
225arg_desc->AddFlag(
"all",
226 "process all entries in cache");
227arg_desc->AddFlag(
"recurse",
228 "process all entries referenced by specified ones");
229arg_desc->AddFlag(
"verbose",
230 "issue additional trace messages");
231arg_desc->AddFlag(
"test",
232 "test loading of the split data");
235arg_desc->AddDefaultKey(
"cache_dir",
"CacheDir",
236 "directory of GenBank cache",
241arg_desc->AddDefaultKey
242(
"chunk_size",
"ChunkSize",
243 "approximate size of chunks to create (in KB)",
248arg_desc->AddDefaultKey
249(
"min_chunk_count",
"MinChunkCount",
250 "min number of chunks after splitting",
254arg_desc->AddFlag(
"compress",
255 "try to compress split data");
256arg_desc->AddFlag(
"keep_descriptions",
257 "do not strip descriptions");
258arg_desc->AddFlag(
"keep_sequence",
259 "do not strip sequence data");
260arg_desc->AddFlag(
"keep_annotations",
261 "do not strip annotations");
262arg_desc->AddFlag(
"keep_assembly",
263 "do not strip assembly");
264arg_desc->AddFlag(
"join_small_chunks",
265 "attach very small chunks to skeleton");
266arg_desc->AddDefaultKey(
"non_feature_seq_tables",
"NonFeatureSeqTables",
267 "split non-feature Seq-tables",
271arg_desc->AddFlag(
"resplit",
272 "resplit already split data");
275arg_desc->AddFlag(
"dump",
276 "dump blobs in ASN.1 text format");
277arg_desc->AddFlag(
"bdump",
278 "dump blobs in ASN.1 binary format");
281 stringprog_description =
"Example of the C++ object manager usage\n";
282arg_desc->SetUsageContext(
GetArguments().GetProgramBasename(),
283prog_description,
false);
296 ERR_POST(
Fatal<<
"CSplitCacheApp can only work with ID1/ID2 based GenBank data loader");
325 if( args[
"cache_dir"] ) {
326cache_dir = args[
"cache_dir"].AsString();
329cache_dir = reg.
GetString(
"LOCAL_CACHE",
"Path", cache_dir);
333 if( !cache_dir.empty() ) {
335 LINE(
"cache directory is \""<< cache_dir <<
"\"");
343 if( 0 && !cache_dir.empty() ) {
355 if( blob_age <= 0 ) {
368cache->
Open(cache_dir.c_str(),
"blobs");
372time_t age = time_stamp.
GetTimeT();
373age -= 60 * 60 * 24 * blob_age;
379 if( 0 && !cache_dir.empty() ) {
399cache->
Open(cache_dir.c_str(),
"ids");
408 if( cache_dir.empty() ) {
412 GetRWConfig().
Set(
"genbank/cache/id_cache/bdb",
"path", cache_dir);
413 GetRWConfig().
Set(
"genbank/cache/blob_cache/bdb",
"path", cache_dir);
414readers =
"cache;id1";
418 if( !cache_dir.empty() ) {
496 "unknown compression method");
517 const string& suffix,
522 if( !suffix.empty() && !ext.empty() ) {
537 if( args[
"compress"] ) {
548args[
"non_feature_seq_tables"].AsInteger();
552 if( args[
"gi"] ) {
555 if( args[
"gi_list"] ) {
562 if( args[
"id"] ) {
563 CSeq_idid(args[
"id"].AsString());
566 if( args[
"id_list"] ) {
574 if( args[
"blob_id"] ) {
576 NStr::Split(args[
"blob_id"].AsString(),
",", vv);
577 if( vv.size() != 2 && vv.size() != 3 ) {
583 if( vv.size() == 3 )
587 if( args[
"in"] ) {
591 if( args[
"blob_key"] ) {
592 key= args[
"blob_key"].AsString();
595 key= args[
"in"].AsString();
601p =
key.rfind(
'/');
622 const string&
key,
const string& suffix =
kEmptyStr)
629 default: ext =
"asn";
break;
642 const string&
key,
const string& suffix =
kEmptyStr)
673 LINE(
"Processing referenced sequences:");
681ids.
insert(it.GetRefSeqid());
739 if( (*entry)->IsSet() ) {
741seq_desc_set, set_desc_set);
744 if( (*entry)->GetSeq().IsSetDescr() ) {
756 TDescSetseq_desc_set, set_desc_set;
757 if( tse.
IsSet() ) {
766 NcbiCout<<
" bioseq/bioseq-set descriptors: " 767<< seq_desc_set.
size() <<
"/" 770 returnpair<size_t, size_t>(seq_desc_set.
size(), set_desc_set.
size());
812 LINE(
"Already processed");
859 LINE(
"Processing blob "<< blob_id);
871 WAIT_LINE<<
"Removing old cache data...";
879 LINE(
"Already split: skipping");
924 if( !splitter.
Split(*seq_entry) ) {
925 LINE(
"Skipping: no chunks after splitting");
961 WAIT_LINE<<
"Removing old split data...";
974pair<size_t, size_t> desc_counts =
1009 data<< *it->second;
1010 WAIT_LINE<<
"Storing chunk "<<it->first;
1038 LINE(
"Processing blob "<<
key);
1048 WAIT_LINE<<
"Removing old cache data...";
1056 LINE(
"Already split: skipping");
1072 if( !splitter.
Split(*seq_entry) ) {
1073 LINE(
"Skipping: no chunks after splitting");
1109 WAIT_LINE<<
"Removing old split data...";
1122pair<size_t, size_t> desc_counts =
1157 data<< *it->second;
1158 WAIT_LINE<<
"Storing chunk "<<it->first;
1188~(kMask_low + kMask_high);
1191 switch( content.
Which() ) {
1195 if( (
info.GetType_mask() & kMask_low) != 0 ) {
1198 if( (
info.GetType_mask() & kMask_high) != 0 ) {
1201 if( (
info.GetType_mask() & kMask_other) != 0 ) {
1204 if(
info.IsSetBioseqs() ) {
1207 if(
info.IsSetBioseq_sets() ) {
1241*
m_ObjMgr,
"cache;id1").GetLoader());
1256 NcbiCout<<
"Testing split data loading for "<<
id.AsString() <<
NcbiEndl;
1269 boolcheck_set_desc =
false;
1270 boolcheck_high_desc =
false;
1271 boolcheck_assembly =
false;
1280check_high_desc =
true;
1286check_set_desc =
true;
1290check_assembly =
true;
1298 if( check_set_desc || check_high_desc ) {
1302 if( check_set_desc ) {
1312 if( check_high_desc ) {
1324 for(
CSeqdesc_CIdesc_ci(*seq, choices); desc_ci; ++desc_ci) {
1328 if( !check_set_desc ) {
1335 if( check_assembly ) {
1338 if( !seq->IsSetInst_Hist() ) {
1344seq->GetInst_Length();
1346seq->GetInst_Hist();
1348 NcbiCout<<
" assembly loaded for " 1349<< seq->GetSeqId()->AsFastaString() <<
NcbiEndl;
1360 _ASSERT(tse_core == complete_tse);
1371 if( seh.
IsSeq() ) {
1384 if(hcount >
count) {
1400 int main(
intargc,
const char* argv[])
1402 returnncbi::objects::CSplitCacheApp().AppMain(argc, argv);
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.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
ICache interface implementation on top of Berkeley DB.
BDB cache implementation.
const CSplitBlob & GetBlob(void) const
bool Split(const CSeq_entry &entry)
void SetSubSat(TSubSat v)
void SetSatKey(TSatKey v)
ICache * GetIdCache(void) const
ICache * GetBlobCache(void) const
CReadDispatcher & GetDispatcher(void)
TRealBlobId GetRealBlobId(const TBlobId &blob_id) const
static TRegisterLoaderInfo RegisterInObjectManager(CObjectManager &om, CReader *reader=0, CObjectManager::EIsDefault is_default=CObjectManager::eDefault, CObjectManager::TPriority priority=CObjectManager::kPriority_NotSet)
CID2S_Seq_descr_Info â.
static void Compress(const SSplitterParams ¶ms, list< vector< char > * > &dst, const char *data, size_t size)
CTSE_Split_Info & GetSplitInfo(void)
CFlusher & operator<<(const T &t)
CFlusher(CNcbiOstream &out)
CFlusher operator<<(const T &t)
CNcbiOstream & Start(void)
CLog(const CSplitCacheApp *app)
const CSplitCacheApp * m_App
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
void SaveDataAndSkel(CReaderRequestResult &result, const TBlobId &blob_id, TBlobState blob_state, TChunkId chunk_id, CWriter *writer, TSplitVersion split_version, const CID2_Reply_Data &split_data, const CID2_Reply_Data &skel_data) const
const CProcessor & GetProcessor(CProcessor::EType type) const
CWriter * GetWriter(const CReaderRequestResult &result, CWriter::EType type) const
@Seq_descr.hpp User-defined methods of the data storage class.
const TChunks & GetChunks(void) const
const CID2S_Split_Info & GetSplitInfo(void) const
const CSeq_entry & GetMainBlob(void) const
static string GetFileName(const string &key, const string &suffix, const string &ext)
void ProcessBlob(CBioseq_Handle &bh, const CSeq_id_Handle &idh)
virtual void Init(void)
Initialize the application.
TProcessedBlobs m_ProcessedBlobs
SSplitterParams m_SplitterParams
CRef< CObjectManager > m_ObjMgr
void ProcessSeqId(const CSeq_id &seq_id)
void TestSplitBioseq(CSeq_entry_Handle seh)
virtual int Run(void)
Run the application.
CNcbiOstream & Info(void) const
void PrintVersion(int version)
AutoPtr< ICache > m_IdCache
const CBlob_id & GetBlob_id(CSeq_entry_Handle tse)
void ProcessEntry(const CSeq_entry &entry)
AutoPtr< ICache > m_Cache
void TestSplitBlob(CSeq_id_Handle id, const CSplitContentIndex &content)
bool GetBioseqHandle(CBioseq_Handle &bh, const CSeq_id_Handle &idh)
const SSplitterParams GetParams(void) const
CRef< CGBDataLoader > m_Loader
void ProcessGi(TIntId gi)
TProcessedIds m_ProcessedIds
size_t GetDescCount(void) const
void SetSetDescCount(size_t count)
void SetSeqDescCount(size_t count)
size_t GetSetDescCount(void) const
bool HaveSplitAssembly(void) const
TContentFlags GetSplitContent(void) const
size_t GetSeqDescCount(void) const
TContentIndex m_ContentIndex
void IndexChunkContent(int chunk_id, const CID2S_Chunk_Content &content)
bool HaveSplitBioseq(void) const
const TContentIndex & GetContentIndex(void) const
TContentFlags m_SplitContent
CSplitDataMaker(const SSplitterParams ¶ms, CID2_Reply_Data::EData_type data_type)
AutoPtr< CNcbiOstrstream > m_MStream
CObjectOStream & OpenDataStream(void)
void operator<<(const C &obj)
void CloseDataStream(void)
AutoPtr< CObjectOStream > m_OStream
const CID2_Reply_Data & GetData(void) const
CConstRef< CSeq_entry > GetCompleteTSE(void) const
void SetSplitVersion(TSplitVersion version)
@ eKeepAll
Do not delete other versions of cache entries.
virtual size_t GetSize(const string &key, TBlobVersion version, const string &subkey)=0
Check if BLOB exists, return BLOB size.
virtual void Remove(const string &key, TBlobVersion version, const string &subkey)=0
Remove specific cache entry.
@ fTimeStampOnCreate
Cache element is created with a certain timestamp (default)
@ fTimeStampOnRead
Timestamp is updated every on every access (read or write)
@ fExpireLeastFrequentlyUsed
Expire objects older than a certain time frame Example: If object is not accessed within a week it is...
@ fTrackSubKey
Timestamp full key-subkey pair.
@ fPurgeOnStartup
Expired objects should be deleted on cache mount (Open)
@ fCheckExpirationAlways
Expiration timeout is checked on any access to cache element.
int TTimeStampFlags
Holds a bitwise OR of "ETimeStampFlags".
iterator_bool insert(const value_type &val)
Include a standard set of the NCBI C++ Toolkit most basic headers.
std::ofstream out("events_result.xml")
main entry point for tests
void reset(element_type *p=0, EOwnership ownership=eTakeOwnership)
Reset will delete the old pointer (if owned), set content to the new value, and assume the ownership ...
#define GI_FROM(T, value)
const CNcbiRegistry & GetConfig(void) const
Get the application's cached configuration parameters (read-only).
virtual const CArgs & GetArgs(void) const
Get parsed command line arguments.
virtual void SetupArgDescriptions(CArgDescriptions *arg_desc)
Setup the command line argument descriptions.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
element_type * get(void) const
Get pointer.
CNcbiRegistry & GetRWConfig(void)
Get the application's cached configuration parameters, accessible for read-write for an application's...
const CNcbiArguments & GetArguments(void) const
Get the application's cached unprocessed command-line arguments.
@ eNoOwnership
No ownership is assumed.
@ fBinary
Open as binary file; for eInputFile, eOutputFile, eIOFile.
@ eInputFile
Name of file (must exist and be readable)
@ eDouble
Convertible into a floating point number (double)
@ eIntId
Convertible to TIntId (int or Int8 depending on NCBI_INT8_GI)
@ eString
An arbitrary string.
@ eInteger
Convertible into an integer number (int or Int8)
virtual void SetVersionRetention(EKeepVersions policy)
Set version retention policy.
void SetWriteSync(EWriteSyncMode wsync)
Set write syncronization.
virtual void Purge(time_t access_timeout)
Delete all BLOBs older than specified.
virtual void SetTimeStampPolicy(TTimeStampFlags policy, unsigned int timeout, unsigned int max_timeout=0)
Set timestamp update policy.
void Open(const string &cache_path, const string &cache_name, ELockMode lm=eNoLock, Uint8 cache_ram_size=0, ETRansact use_trans=eUseTrans, unsigned int log_mem_size=0)
Open local cache instance (read-write access) If cache does not exists it is created.
void SetReadUpdateLimit(unsigned)
Set update attribute limit (0 by default)
#define ERR_FATAL(message)
Posting fatal error and abort.
EDiagSev SetDiagPostLevel(EDiagSev post_sev=eDiag_Error)
Set the threshold severity for posting the messages.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
@ eDiag_Info
Informational message.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
void Fatal(CExceptionArgs_Base &args)
bool CreatePath(TCreateFlags flags=fCreate_Default) const
Create the directory path recursively possibly more than one at a time.
static string MakePath(const string &dir=kEmptyStr, const string &base=kEmptyStr, const string &ext=kEmptyStr)
Assemble a path from basic components.
virtual bool Exists(void) const
Check if directory "dirname" exists.
static char GetPathSeparator(void)
Get path separator symbol specific for the current platform.
bool Create(TCreateFlags flags=fCreate_Default) const
Create the directory using "dirname" passed in the constructor.
#define MSerial_AsnText
I/O stream manipulators â.
ESerialDataFormat
Data file format.
@ eSerial_AsnText
ASN.1 text.
@ eSerial_AsnBinary
ASN.1 binary.
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
string AsString(void) const
static CObjectOStream * Open(ESerialDataFormat format, CNcbiOstream &outStream, bool deleteOutStream)
Create serial object writer and attach it to an output stream.
void ResetHistory(EActionIfLocked action=eKeepIfLocked)
Clean all unused TSEs from the scope's cache and release the memory.
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
CSeq_entry_Handle AddTopLevelSeqEntry(CSeq_entry &top_entry, TPriority pri=kPriority_Default, EExist action=eExist_Default)
Add seq_entry, default priority is higher than for defaults or loaders Add object to the score with p...
CSeq_entry_Handle GetSeq_entryHandle(CDataLoader *loader, const TBlobId &blob_id, EMissing action=eMissing_Default)
Get Seq-entry handle by its blob-id, with possible loading.
string GetName(void) const
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
virtual TTSE_Lock GetBlobById(const TBlobId &blob_id)
void AddDefaults(TPriority pri=kPriority_Default)
Add default data loaders from object manager.
bool RevokeDataLoader(CDataLoader &loader)
Revoke previously registered data loader.
virtual TBlobId GetBlobId(const CSeq_id_Handle &idh)
TBioseqCore GetBioseqCore(void) const
Get bioseq core structure.
bool IsEmptySeq_set(void) const
Check if the bioseq set is empty.
const CSeq_id_Handle & GetSeq_id_Handle(void) const
Get handle of id used to obtain this bioseq handle.
CConstRef< CSeq_entry > GetCompleteSeq_entry(void) const
Complete and get const reference to the seq-entry.
TBlobId GetBlobId(void) const
TBlobVersion GetBlobVersion(void) const
const CSeqMap & GetSeqMap(void) const
Get sequence map.
CSeq_entry_Handle GetTopLevelEntry(void) const
Get top level Seq-entry handle.
CConstRef< CSeq_entry > GetSeq_entryCore(void) const
Get const reference to the seq-entry.
vector< CSeqdesc::E_Choice > TDescChoices
CConstRef< C > ConstRef(const C *object)
Template function for conversion of const object pointer to CConstRef.
void Reset(void)
Reset reference object.
virtual int GetInt(const string §ion, const string &name, int default_value, TFlags flags=0, EErrAction err_action=eThrow) const
Get integer value of specified parameter name.
virtual string GetString(const string §ion, const string &name, const string &default_value, TFlags flags=0) const
Get the parameter string value.
bool Set(const string §ion, const string &name, const string &value, TFlags flags=0, const string &comment=kEmptyStr)
Set the configuration parameter value.
@ eErrPost
Log the error message and return default 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.
CNcbiIstream & NcbiGetline(CNcbiIstream &is, string &str, char delim, string::size_type *count=NULL)
Read from "is" to "str" up to the delimiter symbol "delim" (or EOF)
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
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 string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
string AsString(const CTimeFormat &format=kEmptyStr, TSeconds out_tz=eCurrentTimeZone) const
Transform time to string.
time_t GetTimeT(void) const
Get time in time_t format.
@ eCurrent
Use current time. See also CCurrentTime.
EData_type
index of negotiated types recommended types Seq-entry, ID2S-Split-Info, ID2S-Chunk
EData_compression
post serialization compression (plain, gzip, etc.) index of negotiated compressions
virtual void Reset(void)
Reset the whole object.
void SetData_compression(TData_compression value)
Assign a value to Data_compression data member.
TData & SetData(void)
Assign a value to Data data member.
void SetData_type(TData_type value)
Assign a value to Data_type data member.
void SetData_format(TData_format value)
Assign a value to Data_format data member.
@ eData_type_id2s_split_info
@ eData_compression_nlmzip
@ eData_format_asn_binary
list< CRef< CID2S_Chunk_Info > > TChunks
const TSeq_descr & GetSeq_descr(void) const
Get the variant data.
const TChunks & GetChunks(void) const
Get the Chunks member data.
E_Choice Which(void) const
Which variant is currently selected.
list< CRef< CID2S_Chunk_Content > > TContent
@ e_Seq_descr
place of Seq-descrs
@ e_Seq_data
place of sequence data
@ e_Seq_assembly
place of assembly history
@ e_Bioseq_place
place of Bioseqs
@ e_Seq_annot
locations and types of annotations
TGi & SetGi(void)
Select the variant.
const TSeq & GetSeq(void) const
Get the variant data.
const TDescr & GetDescr(void) const
Get the Descr member data.
const TSet & GetSet(void) const
Get the variant data.
bool IsSetSeq_set(void) const
Check if a value has been assigned to Seq_set data member.
bool IsSetDescr(void) const
Check if a value has been assigned to Descr data member.
bool IsSet(void) const
Check if variant Set is selected.
const TSeq_set & GetSeq_set(void) const
Get the Seq_set member data.
list< CRef< CSeq_entry > > TSeq_set
list< CRef< CSeqdesc > > Tdata
const TInst & GetInst(void) const
Get the Inst member data.
bool IsSetAssembly(void) const
how was this assembled? Check if a value has been assigned to Assembly data member.
const Tdata & Get(void) const
Get the member data.
const THist & GetHist(void) const
Get the Hist member data.
bool IsSetDescr(void) const
descriptors Check if a value has been assigned to Descr data member.
const TDescr & GetDescr(void) const
Get the Descr member data.
@ e_Pub
a reference to the publication
@ e_Comment
a more extensive comment
@ e_Molinfo
info on the molecule and techniques
@ e_Title
a title for this sequence
@ e_Source
source of materials, includes Org-ref
The blob sat and sat key Both must be positive integers</td > n< td > Non empty string The interpretation of the blob id depends on a processor Cassandra n processor expects the following format
const string version
version string
const struct ncbi::grid::netcache::search::fields::KEY key
Defines the CNcbiApplication and CAppException classes for creating NCBI applications.
Defines command line argument related classes.
Defines unified interface to application:
Defines classes: CDirEntry, CFile, CDir, CSymLink, CMemoryFile, CFileUtil, CFileLock,...
NCBI C++ stream class wrappers for triggering between "new" and "old" C++ stream libraries.
Defines: CTimeFormat - storage class for time format.
std::istream & in(std::istream &in_, double &x_)
static CReadDispatcher & x_GetDispatcher(CDataLoader *loader_arg)
void CollectDescriptors(const CSeq_descr &descr, TDescSet &desc_set)
static const int kDefaultCacheBlobAge
set< CConstRef< CSeqdesc > > TDescSet
void Dump(CSplitCacheApp *app, const C &obj, ESerialDataFormat format, const string &key, const string &suffix=kEmptyStr)
static void x_InitBlob(CReaderRequestResult &result, const CBlob_id &blob_id, CDataLoader::TBlobVersion version)
static const int kDefaultCacheIdAge
int main(int argc, const char *argv[])
static string x_GetSubkey1(void)
void DumpData(CSplitCacheApp *app, const C &obj, CID2_Reply_Data::EData_type data_type, const string &key, const string &suffix=kEmptyStr)
static string x_GetSubkey0(void)
static string GetBlobSubkey(CLoadLockBlob &blob, int chunk_id=kMain_ChunkId)
BLOB cache subkeys:
static string GetBlobKey(const CBlob_id &blob_id)
Return BLOB cache key string based on Sat() and SatKey()
Selector used in CSeqMap methods returning iterators.
void SetChunkSize(size_t size)
bool m_DisableSplitDescriptions
bool m_DisableSplitAssembly
bool m_DisableSplitSequence
bool m_DisableSplitAnnotations
ECompression m_Compression
@ kDefaultSplitNonFeatureSeqTables
bool m_SplitNonFeatureSeqTables
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