51 #include "../blast/blast_app_util.hpp"
55 #ifndef SKIP_DOXYGEN_PROCESSING
60 static const string NA =
"N/A";
138 bool x_GetOids(
const string & acc, vector<int> & oids);
155 if ((
id.find(
'|') !=
NPOS) || (
id.find(
'_') !=
NPOS)) {
168 else if (seqid->
IsPdb()) {
170 rv =
tmp.substr(0,4);
198 oids.push_back(gi_oid);
215 unsigned int err_found = 0;
223 }
else if (args[
"entry"].
HasValue()) {
224 static const string kDelim(
",");
225 const string& entry = args[
"entry"].AsString();
227 vector<string> queries;
228 if (entry.find(kDelim[0]) != string::npos) {
234 for(
unsigned int i=0;
i < queries.size();
i++) {
235 vector<CSeqDB::TOID> oids;
237 for(
unsigned int j=0; j < oids.size(); j++) {
250 if(err_found == queries.size()) {
252 "Entry or entries not found in BLAST database");
255 return (err_found) ? 1:0;
261 vector<int> algo_id(1,
id);
263 if ( !invalid_algo_ids.empty()) {
282 for(
unsigned int i=0;
i <
tmp.size();
i++) {
283 if(
tmp[
i].find(
'-')!= string::npos) {
306 vector<blastdb::TOid> oids;
308 if(oids.size() == 0) {
312 for(
unsigned i=0;
i < oids.size();
i++) {
333 if ( !line.empty() ) {
339 unique_ptr<ITaxonomy4Blast> tb;
345 LOG_POST(
Warning <<
"The -taxids command line option requires additional data files. Please see the section 'Taxonomic filtering for BLAST databases' in https://www.ncbi.nlm.nih.gov/books/NBK569839/ for details.");
349 for (
auto id : ids) {
353 vector<int> descendants;
354 tb->GetLeafNodeTaxids(taxid, descendants);
355 for (
auto d: descendants)
380 vector<string> ids, formats;
381 vector<CSeqDB::TOID> oids;
385 if ( !line.empty() ) {
392 formats.push_back(
format);
397 for(
unsigned int i=0;
i < ids.size();
i++) {
405 if (e.
GetMsg().find(
"DB contains no accession info") ==
NPOS){
409 for(
unsigned i=0;
i < ids.size();
i++) {
437 return (err_found) ? 1 : 0;
450 if ( !line.empty() ) {
469 for(
unsigned int j=0; j < oids.size(); j++) {
483 return (err_found) ? 1 : 0;
497 if ( !line.empty() ) {
520 return (err_found) ? 1 : 0;
538 const string kLetters =
m_DbIsProtein ?
"residues" :
"bases";
548 if(args[
"exact_length"])
552 out <<
" total " << kLetters << endl << endl
554 <<
"\tLongest sequence: "
556 << kLetters << endl << endl;
560 #if ((!defined(NCBI_COMPILER_WORKSHOP) || (NCBI_COMPILER_VERSION > 550)) && \
561 (!defined(NCBI_COMPILER_MIPSPRO)) )
567 vector<string> volumes;
569 out << endl <<
"Volumes:" << endl;
594 vector<string> fields;
596 for (
unsigned int i = 0;
i < fmt.size();
i++) {
598 if (fmt[
i+1] ==
'%') {
653 "Invalid format options for tax_info.");
665 m_Out <<
t.scientific_name;
681 "Invalid format options for tax_info.");
700 const string& kFmt = args[
"outfmt"].AsString();
706 out <<
"# of Tax IDs in Database: " << tax_ids.
size() << endl;
714 info.scientific_name =
NA;
725 vector<blastdb::TOid> rv;
729 num_seqs = rv.size();
745 outfmt = args[
"outfmt"].AsString();
749 if ((outfmt.find(
"%f") != string::npos &&
750 (outfmt.find(
"%b") != string::npos || outfmt.find(
"%d") != string::npos)) ||
751 (outfmt.find(
"%b") != string::npos && outfmt.find(
"%d") != string::npos)) {
753 "The %f, %b, %d output format options cannot be specified together.");
756 if (outfmt.find(
"%b") != string::npos) {
762 if (outfmt.find(
"%f") != string::npos) {
767 if (outfmt.find(
"%d") != string::npos) {
771 if (outfmt.find(
"%m") != string::npos) {
773 size_t i = outfmt.find(
"%m") + 2;
775 while (
i < outfmt.size() && outfmt[
i] >=
'0' && outfmt[
i] <=
'9') {
776 algo_id = algo_id * 10 + (outfmt[
i] -
'0');
782 "The option '-outfmt %m' is not followed by a masking algo ID.");
787 "Invalid filtering algorithm ID for outfmt %m.");
793 if (args[
"strand"].AsString() ==
"plus") {
795 }
else if (args[
"strand"].AsString() ==
"minus") {
799 "Both strands is not supported");
803 if (args[
"mask_sequence_with"].
HasValue()) {
811 "Invalid filtering algorithm ID for mask_sequence_with.");
824 if (args[
"entry"].
HasValue() && args[
"entry"].AsString() ==
"all") {
827 else if (args[
"entry_batch"].
HasValue()) {
838 else if (args[
"ipg_batch"].
HasValue()) {
847 "Must specify query type: one of 'entry', 'entry_batch', or 'pig'");
855 if (args[
"long_seqids"].AsBoolean()) {
908 arg_desc->SetUsageContext(
GetArguments().GetProgramBasename(),
911 arg_desc->SetCurrentGroup(
"BLAST database options");
912 arg_desc->AddDefaultKey(
kArgDb,
"dbname",
"BLAST database name",
915 arg_desc->AddDefaultKey(
kArgDbType,
"molecule_type",
916 "Molecule type stored in BLAST database",
919 "nucl",
"prot",
"guess"));
921 arg_desc->SetCurrentGroup(
"Retrieval options");
922 arg_desc->AddOptionalKey(
"entry",
"sequence_identifier",
923 "Comma-delimited search string(s) of sequence identifiers"
924 ":\n\te.g.: 555, AC147927, 'gnl|dbname|tag', or 'all' "
925 "to select all\n\tsequences in the database",
928 arg_desc->AddOptionalKey(
"entry_batch",
"input_file",
929 "Input file for batch processing (Format: one entry per line, seq id \n"
930 "followed by optional space-delimited specifier(s) [range|strand|mask_algo_id]",
937 arg_desc->AddOptionalKey(
"ipg",
"IPG",
"IPG to retrieve",
945 arg_desc->AddOptionalKey(
"ipg_batch",
"input_file",
946 "Input file for batch processing (Format: one entry per line, IPG \n"
947 "followed by optional space-delimited specifier(s) [range|strand|mask_algo_id]",
955 arg_desc->AddFlag(
"info",
"Print BLAST database information",
true);
957 const char* exclusions[] = {
"entry",
"entry_batch",
"outfmt",
"strand",
958 "target_only",
"ctrl_a",
"get_dups",
"pig",
"range",
959 "mask_sequence",
"list",
"remove_redundant_dbs",
"recursive",
962 for (
size_t i = 0;
i <
sizeof(exclusions)/
sizeof(*exclusions);
i++) {
964 string(exclusions[
i]));
967 arg_desc->AddFlag(
"metadata",
"Generate BLAST database metadata",
true);
969 const char* exclusions_m[] = {
"entry",
"entry_batch",
"outfmt",
"strand",
970 "target_only",
"ctrl_a",
"get_dups",
"pig",
"range",
971 "mask_sequence",
"list",
"remove_redundant_dbs",
"recursive",
974 for (
size_t i = 0;
i <
sizeof(exclusions_m)/
sizeof(*exclusions_m);
i++) {
976 string(exclusions_m[
i]));
979 arg_desc->AddOptionalKey(
"metadata_output_prefix",
"",
983 arg_desc->AddFlag(
"tax_info",
984 "Print taxonomic information contained in this BLAST database.\n"
985 "Use -outfmt to customize output. Format specifiers supported are:\n"
986 "\t\t%T means taxid\n"
987 "\t\t%L means common taxonomic name\n"
988 "\t\t%S means scientific name\n"
989 "\t\t%K means taxonomic super kingdom\n"
990 "\t\t%B means BLAST name\n"
991 "\t\t%n means num of seqs\n"
992 "By default it prints: '%T %S %L %K %B'\n",
true);
994 const char* tax_info_exclusions[] = {
"info",
"entry",
"entry_batch",
"strand",
995 "target_only",
"ctrl_a",
"get_dups",
"pig",
"range",
996 "mask_sequence",
"list",
"remove_redundant_dbs",
"recursive",
999 for (
size_t i = 0;
i <
sizeof(tax_info_exclusions)/
sizeof(*tax_info_exclusions);
i++) {
1001 string(tax_info_exclusions[
i]));
1004 arg_desc->SetCurrentGroup(
"Sequence retrieval configuration options");
1005 arg_desc->AddOptionalKey(
"range",
"numbers",
1006 "Range of sequence to extract in 1-based offsets "
1007 "(Format: start-stop, for start to end of sequence use start - )",
1010 arg_desc->AddDefaultKey(
"strand",
"strand",
1011 "Strand of nucleotide sequence to extract",
1016 arg_desc->AddOptionalKey(
"mask_sequence_with",
"mask_algo_id",
1017 "Produce lower-case masked FASTA using the "
1018 "algorithm ID specified",
1022 arg_desc->SetCurrentGroup(
"Taxonomic filtering options");
1037 arg_desc->AddFlag(
kArgNoTaxIdExpansion,
"Do not expand the taxonomy IDs provided to their descendant taxonomy IDs ",
true);
1041 arg_desc->SetCurrentGroup(
"Output configuration options");
1042 arg_desc->AddDefaultKey(
kArgOutput,
"output_file",
"Output file name",
1047 arg_desc->AddDefaultKey(
"outfmt",
"format",
1048 "Output format, where the available format specifiers are:\n"
1049 "\t\t%f means sequence in FASTA format\n"
1050 "\t\t%s means sequence data (without defline)\n"
1051 "\t\t%a means accession\n"
1053 "\t\t%o means ordinal id (OID)\n"
1054 "\t\t%i means sequence id\n"
1055 "\t\t%t means sequence title\n"
1056 "\t\t%l means sequence length\n"
1057 "\t\t%h means sequence hash value\n"
1058 "\t\t%T means taxid\n"
1059 "\t\t%X means leaf-node taxids\n"
1060 "\t\t%e means membership integer\n"
1061 "\t\t%L means common taxonomic name\n"
1062 "\t\t%C means common taxonomic names for leaf-node taxids\n"
1063 "\t\t%S means scientific name\n"
1064 "\t\t%N means scientific names for leaf-node taxids\n"
1065 "\t\t%B means BLAST name\n"
1067 "\t\t%n means a list of links integers separated by ';'\n"
1069 "\t\t%K means taxonomic super kingdom\n"
1070 "\t\t%P means PIG\n"
1072 "\t\t%d means defline in text ASN.1 format\n"
1073 "\t\t%b means Bioseq in text ASN.1 format\n"
1075 "\t\t%m means sequence masking data.\n"
1076 "\t\t Masking data will be displayed as a series of 'N-M' values\n"
1077 "\t\t separated by ';' or the word 'none' if none are available.\n"
1079 "\tIf '%f' or '%d' are specified, all other format specifiers are ignored.\n"
1080 "\tFor every format except '%f' and '%d', each line of output will "
1082 "\tIf '%f' is specified, all other format specifiers are ignored.\n"
1083 "\tFor every format except '%f', each line of output will "
1085 "correspond\n\tto a sequence.\n",
1091 arg_desc->AddFlag(
"target_only",
1092 "Definition line should contain target entry only",
true);
1097 arg_desc->AddFlag(
"get_dups",
"Retrieve duplicate accessions",
true);
1101 arg_desc->SetCurrentGroup(
"Output configuration options for FASTA format");
1102 arg_desc->AddDefaultKey(
"line_length",
"number",
"Line length for output",
1105 arg_desc->SetConstraint(
"line_length",
1108 arg_desc->AddFlag(
"ctrl_a",
1109 "Use Ctrl-A as the non-redundant defline separator",
true);
1111 const char* exclusions_discovery[] = {
"entry",
"entry_batch",
"outfmt",
1112 "strand",
"target_only",
"ctrl_a",
"get_dups",
"pig",
"range",
kArgDb.c_str(),
1113 "info",
"mask_sequence",
"line_length" };
1114 arg_desc->SetCurrentGroup(
"BLAST database configuration and discovery options");
1115 arg_desc->AddFlag(
"show_blastdb_search_path",
1116 "Displays the default BLAST database search paths",
true);
1117 arg_desc->AddOptionalKey(
"list",
"directory",
1118 "List BLAST databases in the specified directory",
1120 arg_desc->AddFlag(
"remove_redundant_dbs",
1121 "Remove the databases that are referenced by another "
1122 "alias file in the directory in question",
true);
1123 arg_desc->AddFlag(
"recursive",
1124 "Recursively traverse the directory structure to list "
1125 "available BLAST databases",
true);
1126 arg_desc->AddDefaultKey(
"list_outfmt",
"format",
1127 "Output format for the list option, where the available format specifiers are:\n"
1128 "\t\t%f means the BLAST database absolute file name path\n"
1129 "\t\t%p means the BLAST database molecule type\n"
1130 "\t\t%t means the BLAST database title\n"
1131 "\t\t%d means the date of last update of the BLAST database\n"
1132 "\t\t%l means the number of bases/residues in the BLAST database\n"
1133 "\t\t%n means the number of sequences in the BLAST database\n"
1134 "\t\t%U means the number of bytes used by the BLAST database\n"
1135 "\t\t%v means the BLAST database format version\n"
1136 "\tFor every format each line of output will "
1137 "correspond to a BLAST database.\n",
1139 for (
size_t i = 0;
i <
1140 sizeof(exclusions_discovery)/
sizeof(*exclusions_discovery);
i++) {
1142 string(exclusions_discovery[
i]));
1144 string(exclusions_discovery[
i]));
1146 string(exclusions_discovery[
i]));
1148 string(exclusions_discovery[
i]));
1150 string(exclusions_discovery[
i]));
1159 "remove_redundant_dbs");
1161 arg_desc->AddFlag(
"exact_length",
"Get exact length for db info",
true);
1164 arg_desc->AddFlag(
"long_seqids",
"Use long seq id for fasta deflines",
true);
1181 if (args[
"show_blastdb_search_path"]) {
1184 }
else if (args[
"list"]) {
1185 const string& blastdb_dir = args[
"list"].AsString();
1186 const bool recurse = args[
"recursive"];
1187 const bool remove_redundant_dbs = args[
"remove_redundant_dbs"];
1191 const string& kOutFmt = args[
"list_outfmt"].AsString();
1192 const vector<SSeqDBInitInfo> dbs =
1194 remove_redundant_dbs);
1196 ITERATE(vector<SSeqDBInitInfo>, db, dbs) {
1206 else if (args[
"metadata"]) {
1208 string output_prefix = args[
"metadata_output_prefix"]
1209 ? args[
"metadata_output_prefix"].AsString()
1216 json_out->PreserveKeyNames();
1218 json_out->WriteObject(obj_info);
1223 else if (args[
"tax_info"]) {
1250 else if (args[
"tax_info"]) {
1261 if (args[
"entry"].
HasValue() && args[
"entry"].AsString() ==
"all") {
1272 vector<string> db_list;
1277 (*itr).erase(0, off+1);
1284 db_name.erase(0, off+1);
1294 #ifndef SKIP_DOXYGEN_PROCESSING
1295 int main(
int argc,
const char* argv[] )
Declares singleton objects to store the version and reference for the BLAST engine.
#define CATCH_ALL(exit_code)
Standard catch statement for all BLAST command line programs.
Declares the BLAST exception class.
static const NStr::TNumToStringFlags kFlags
string s_PreProcessAccessionsForDBv5(const string &id)
int main(int argc, const char *argv[])
bool s_IsMaskAlgoIdValid(CSeqDB &blastdb, int id)
Class to constrain the values of an argument to those greater than or equal to the value specified in...
void x_PrintBlastDatabaseInformation()
Prints the BLAST database information (e.g.
void x_InitBlastDB()
Initializes Blast DB.
int x_ProcessBatchEntry(CBlastDB_Formatter &seq_fmt)
Process batch entry with range, strand and filter id.
virtual void Init()
@inheritDoc
void x_PrintBlastDatabaseTaxInformation()
bool m_Asn1Bioseq
output is ASN.1 defline
int x_ProcessBatchEntry_NoDup(CBlastDB_Formatter &fmt)
bool x_GetOids(const string &acc, vector< int > &oids)
bool m_TargetOnly
should we output target sequence only?
virtual int Run()
@inheritDoc
string x_InitSearchRequest()
CBlastDBCmdApp()
@inheritDoc
virtual void Init()
@inheritDoc
bool m_DbIsProtein
Is the database protein.
CRef< CSeqDBExpert > m_BlastDb
Handle to BLAST database.
int x_ProcessSearchRequest()
Processes all requests except printing the BLAST database information.
bool m_FASTA
output is FASTA
int x_ProcessTaxIdList(CBlastDB_Formatter &fmt)
bool m_GetDuplicates
should we find duplicate entries?
int x_ProcessBatchPig(CBlastDB_Formatter &fmt)
int x_ProcessEntry(CBlastDB_Formatter &fmt)
Process entry with range, strand and filter id.
int x_ModifyConfigForBatchEntry(const string &config)
CBlastDB_FormatterConfig m_Config
CBlastUsageReport m_UsageReport
set< TTaxId > m_TaxIdList
void x_InitBlastDB_TaxIdList()
int x_ProcessSearchType(CBlastDB_Formatter &fmt)
virtual int Run()
@inheritDoc
void AddParam(EUsageParams p, int val)
Keeps track of the version of the BLAST engine in the NCBI C++ toolkit.
Defines invalid user input exceptions.
static CNcbiApplication * Instance(void)
Singleton method.
void PrintEntry(const SSeqDBTaxInfo &t, int num_seqs)
CPrintTaxFields(CNcbiOstream &out, const string &fmt)
vector< string > m_Seperators
void AddTaxIds(const set< TTaxId > &tax_ids)
static bool GetTaxNames(TTaxId tax_id, SSeqDBTaxInfo &info)
Get the taxonomy names for a given tax id.
int TOID
Sequence type accepted and returned for OID indices.
void GetDBTaxIds(set< TTaxId > &tax_ids) const
Get all unique tax ids from db.
static void FindVolumePaths(const string &dbname, ESeqType seqtype, vector< string > &paths, vector< string > *alias_paths=NULL, bool recursive=true, bool expand_links=true)
Find volume paths.
void TaxIdsToOids(set< TTaxId > &tax_ids, vector< blastdb::TOid > &rv) const
Get Oid list for input tax ids.
bool GiToOidwFilterCheck(TGi gi, int &oid) const
Translate a GI To an OID with filter check.
Uint8 GetTotalLength() const
Returns the sum of the lengths of all available sequences.
bool PigToOid(int pig, int &oid) const
Translate a PIG to an OID.
static string GenerateSearchPath()
Returns the default BLAST database search path configured for this local installation of BLAST.
vector< int > ValidateMaskAlgorithms(const vector< int > &algorithm_ids)
Validates the algorithm IDs passed to this function, returning a vector of those algorithm IDs not pr...
const string & GetDBNameList() const
Get list of database names.
string GetAvailableMaskAlgorithmDescriptions()
Returns a formatted string with the list of available masking algorithms in this database for display...
int GetMaxLength() const
Returns the length of the largest sequence in the database.
ESeqType GetSequenceType() const
Returns the type of database opened - protein or nucleotide.
ESeqType
Sequence types (eUnknown tries protein, then nucleotide).
string GetTitle() const
Returns the database title.
int GetNumSeqs() const
Returns the number of sequences available.
CRef< CBlast_db_metadata > GetDBMetaData(string user_path=kEmptyStr)
void AccessionToOids(const string &acc, vector< int > &oids) const
Translate an Accession to a list of OIDs.
string GetDate() const
Returns the construction date of the database.
int GetMaskAlgorithmId(const string &algo_name) const
Get the numeric algorithm ID for a string.
EBlastDbVersion GetBlastDbVersion() const
Return blast db version.
Uint8 GetExactTotalLength()
Returns the exact sum of the lengths of all available sequences.
void AccessionsToOids(const vector< string > &accs, vector< blastdb::TOid > &oids) const
Clas to retrieve taxonomic information for filtering BLASTDBs.
iterator_bool insert(const value_type &val)
const string kArgOutput
Output file name.
const string kArgDbType
BLAST database molecule type.
const string kArgTaxIdListFile
Argument to specify file with taxonomy ids for filtering.
const string kArgNoTaxIdExpansion
Argument to not to resolve TaxId to descendant.
const string kArgDb
BLAST database name.
const string kArgTaxIdList
Argument to specify taxonomy ids for filtering.
void Print(const CCompactSAMApplication::AlignInfo &ai)
std::ofstream out("events_result.xml")
main entry point for tests
void SetFullVersion(CRef< CVersionAPI > version)
Set version data for the program.
void HideStdArgs(THideStdArgs hide_mask)
Set the hide mask for the Hide Std Flags.
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.
int AppMain(int argc, const char *const *argv, const char *const *envp=0, EAppDiagStream diag=eDS_Default, const char *conf=NcbiEmptyCStr, const string &name=NcbiEmptyString)
Main function (entry point) for the NCBI application.
CVersionInfo GetVersion(void) const
Get the program version information.
virtual void SetupArgDescriptions(CArgDescriptions *arg_desc)
Setup the command line argument descriptions.
#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.
SStrictId_Tax::TId TTaxId
Taxon id type.
const CNcbiArguments & GetArguments(void) const
Get the application's cached unprocessed command-line arguments.
@ fHideXmlHelp
Hide XML help description.
@ fHideFullVersion
Hide full version description.
@ fHideDryRun
Hide dryrun description.
@ fHideConffile
Hide configuration file description.
@ eNoOwnership
No ownership is assumed.
@ eRequires
One argument requires another.
@ eExcludes
One argument excludes another.
@ eInputFile
Name of file (must exist and be readable)
@ eString
An arbitrary string.
@ eOutputFile
Name of file (must be writable)
@ eInteger
Convertible into an integer number (int or Int8)
void SetDiagFilter(EDiagFilter what, const char *filter_str)
Set diagnostic filter.
void SetDiagPostPrefix(const char *prefix)
Specify a string to prefix all subsequent error postings with.
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.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
@ eDiag_Warning
Warning message.
@ eDiagFilter_Post
for all non-TRACE, non-FATAL
void Error(CExceptionArgs_Base &args)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
const string & GetMsg(void) const
Get message string.
#define NCBI_RETHROW_SAME(prev_exception, message)
Generic macro to re-throw the same exception.
void Warning(CExceptionArgs_Base &args)
static char GetPathSeparator(void)
Get path separator symbol specific for the current platform.
const string AsFastaString(void) const
string GetSeqIdString(bool with_version=false) const
Return seqid string with optional version for text seqid type.
@ fParse_RawText
Try to ID raw non-numeric accessions.
@ fParse_PartialOK
Warn rather than throwing an exception when a FASTA-style ID set contains unparsable portions,...
@ fParse_AnyLocal
Treat otherwise unidentified strings as local accessions as long as they don't resemble FASTA-style I...
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
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.
int64_t Int8
8-byte (64-bit) signed integer
static TThisType GetEmpty(void)
virtual const string & Get(const string §ion, const string &name, TFlags flags=0) const
Get the parameter value.
bool IsEnabled(void)
Indicates whether application usage statistics collection is enabled for a current reporter instance.
CNcbiIstream & NcbiGetlineEOL(CNcbiIstream &is, string &str, string::size_type *count=NULL)
Read from "is" to "str" the next line (taking into account platform specifics of End-of-Line)
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
static int StringToNonNegativeInt(const CTempString str, TStringToNumFlags flags=0)
Convert string to non-negative integer value.
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
int TNumToStringFlags
Bitwise OR of "ENumToStringFlags".
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.
static string Join(const TContainer &arr, const CTempString &delim)
Join strings using the specified delimiter.
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 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 & ToUpper(string &str)
Convert string to upper case – string& version.
static string UInt8ToString(Uint8 value, TNumToStringFlags flags=0, int base=10)
Convert UInt8 to string.
@ fAllowTrailingSpaces
Ignore trailing whitespace characters.
@ fConvErr_NoThrow
Do not throw an exception on error.
@ fAllowLeadingSpaces
Ignore leading whitespace characters in converted string.
@ fSplit_Tokenize
All delimiters are merged and trimmed, to get non-empty tokens only.
@ fSplit_MergeDelimiters
Merge adjacent delimiters.
@ fWithCommas
Use commas as thousands separator.
double Elapsed(void) const
Return time elapsed since first Start() or last Restart() call (in seconds).
void Start(void)
Start the timer.
bool IsPrf(void) const
Check if variant Prf is selected.
bool IsPdb(void) const
Check if variant Pdb is selected.
bool IsPir(void) const
Check if variant Pir is selected.
constexpr bool empty(list< Ts... >) noexcept
const string version
version string
Defines the CNcbiApplication and CAppException classes for creating NCBI applications.
CSeqDB::ESeqType ParseMoleculeTypeString(const string &str)
Convert a string to a CSeqDB ESeqType object.
vector< SSeqDBInitInfo > FindBlastDBs(const string &path, const string &dbtype, bool recurse, bool include_alias_files=false, bool remove_redundant_dbs=false)
Find BLAST DBs in the directory specified.
Defines exception class and several constants for SeqDB.
const blastdb::TOid kSeqDBEntryNotFound
Defines `expert' version of CSeqDB interfaces.
Defines database volume access classes.