ncbi-rmblastn: add v2.11.0 (#22788)

This commit is contained in:
Glenn Johnson 2021-04-21 22:20:51 -05:00 committed by GitHub
parent 5bec197de1
commit e0549f5e88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 328 additions and 0 deletions

View File

@ -0,0 +1,314 @@
diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/algo/blast/format/blast_format.cpp ncbi-blast-2.11.0+-src/c++/src/algo/blast/format/blast_format.cpp
--- ncbi-blast-2.11.0+-src.orig/c++/src/algo/blast/format/blast_format.cpp 2020-09-28 11:27:07.000000000 -0700
+++ ncbi-blast-2.11.0+-src/c++/src/algo/blast/format/blast_format.cpp 2021-02-09 13:45:03.737153875 -0800
@@ -2463,13 +2463,6 @@ void CBlastFormat::LogBlastSearchInfo(CB
}
}
else {
- string dir = kEmptyStr;
- CFile::SplitPath(m_DbName, &dir);
- string db_name = m_DbName;
- if (dir != kEmptyStr) {
- db_name = m_DbName.substr(dir.length());
- }
- report.AddParam(CBlastUsageReport::eDBName, db_name);
report.AddParam(CBlastUsageReport::eDBLength, GetDbTotalLength());
report.AddParam(CBlastUsageReport::eDBNumSeqs, num_seqs);
report.AddParam(CBlastUsageReport::eDBDate, m_DbInfo[0].date);
diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/app/blast/blast_app_util.cpp ncbi-blast-2.11.0+-src/c++/src/app/blast/blast_app_util.cpp
--- ncbi-blast-2.11.0+-src.orig/c++/src/app/blast/blast_app_util.cpp 2020-08-31 08:38:53.000000000 -0700
+++ ncbi-blast-2.11.0+-src/c++/src/app/blast/blast_app_util.cpp 2021-02-09 13:43:55.672814151 -0800
@@ -964,12 +964,6 @@ void LogRPSCmdOptions(blast::CBlastUsage
args.GetBlastDatabaseArgs()->GetSearchDatabase()->GetSeqDb().NotEmpty()) {
CRef<CSeqDB> db = args.GetBlastDatabaseArgs()->GetSearchDatabase()->GetSeqDb();
- string db_name = db->GetDBNameList();
- int off = db_name.find_last_of(CFile::GetPathSeparator());
- if (off != -1) {
- db_name.erase(0, off+1);
- }
- report.AddParam(CBlastUsageReport::eDBName, db_name);
report.AddParam(CBlastUsageReport::eDBLength, (Int8) db->GetTotalLength());
report.AddParam(CBlastUsageReport::eDBNumSeqs, db->GetNumSeqs());
report.AddParam(CBlastUsageReport::eDBDate, db->GetDate());
diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/app/blastdb/blastdbcmd.cpp ncbi-blast-2.11.0+-src/c++/src/app/blastdb/blastdbcmd.cpp
--- ncbi-blast-2.11.0+-src.orig/c++/src/app/blastdb/blastdbcmd.cpp 2020-09-22 06:14:39.000000000 -0700
+++ ncbi-blast-2.11.0+-src/c++/src/app/blastdb/blastdbcmd.cpp 2021-02-09 13:45:40.331798879 -0800
@@ -1186,12 +1186,6 @@ void CBlastDBCmdApp::x_AddCmdOptions()
}
- string db_name = m_BlastDb->GetDBNameList();
- int off = db_name.find_last_of(CFile::GetPathSeparator());
- if (off != -1) {
- db_name.erase(0, off+1);
- }
- m_UsageReport.AddParam(CBlastUsageReport::eDBName, db_name);
m_UsageReport.AddParam(CBlastUsageReport::eDBLength, (Int8) m_BlastDb->GetTotalLength());
m_UsageReport.AddParam(CBlastUsageReport::eDBNumSeqs, m_BlastDb->GetNumSeqs());
m_UsageReport.AddParam(CBlastUsageReport::eDBDate, m_BlastDb->GetDate());
diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/Makefile.in ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/Makefile.in
--- ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/Makefile.in 1969-12-31 16:00:00.000000000 -0800
+++ ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/Makefile.in 2021-02-09 13:00:33.072893864 -0800
@@ -0,0 +1,16 @@
+# $Id: Makefile.in 371962 2012-08-14 09:45:56Z coulouri $
+
+# Meta-makefile("APP" project)
+#################################
+
+REQUIRES = objects algo
+
+APP_PROJ = rmblastn
+
+srcdir = @srcdir@
+include @builddir@/Makefile.meta
+
+.PHONY: all $(APP_PROJ)
+
+rmblastn:
+ ${MAKE} ${MFLAGS} -f Makefile.rmblastn_app
diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/Makefile.rmblastn.app ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/Makefile.rmblastn.app
--- ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/Makefile.rmblastn.app 1969-12-31 16:00:00.000000000 -0800
+++ ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/Makefile.rmblastn.app 2021-02-09 13:00:33.072893864 -0800
@@ -0,0 +1,16 @@
+WATCHERS = camacho madden maning
+
+APP = rmblastn
+SRC = rmblastn_app
+LIB_ = $(BLAST_INPUT_LIBS) $(BLAST_LIBS) $(OBJMGR_LIBS)
+LIB = blast_app_util $(LIB_:%=%$(STATIC))
+
+# De-universalize Mac builds to work around a PPC toolchain limitation
+CFLAGS = $(FAST_CFLAGS:ppc=i386)
+CXXFLAGS = $(FAST_CXXFLAGS:ppc=i386)
+LDFLAGS = $(FAST_LDFLAGS:ppc=i386)
+
+CPPFLAGS = $(ORIG_CPPFLAGS)
+LIBS = $(CMPRS_LIBS) $(DL_LIBS) $(PCRE_LIBS) $(NETWORK_LIBS) $(ORIG_LIBS)
+
+REQUIRES = objects -Cygwin
diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/rmblastn_app.cpp ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/rmblastn_app.cpp
--- ncbi-blast-2.11.0+-src.orig/c++/src/app/rmblastn/rmblastn_app.cpp 1969-12-31 16:00:00.000000000 -0800
+++ ncbi-blast-2.11.0+-src/c++/src/app/rmblastn/rmblastn_app.cpp 2021-02-09 13:55:13.371077793 -0800
@@ -0,0 +1,197 @@
+/* $Id: rmblastn_app.cpp 371962 2012-08-14 09:45:56Z coulouri $
+ * ===========================================================================
+ *
+ * PUBLIC DOMAIN NOTICE
+ *
+ * ===========================================================================
+ *
+ * Authors: Robert M. Hubley
+ * Christiam Camacho ( original blastn_app.cpp )
+ *
+ */
+
+/** @file rmblastn_app.cpp
+ * RMBLASTN command line application
+ */
+
+#include <ncbi_pch.hpp>
+#include <corelib/ncbiapp.hpp>
+#include <algo/blast/api/local_blast.hpp>
+#include <algo/blast/api/remote_blast.hpp>
+#include <algo/blast/blastinput/blast_fasta_input.hpp>
+#include <algo/blast/blastinput/rmblastn_args.hpp>
+#include <algo/blast/api/objmgr_query_data.hpp>
+#include <algo/blast/format/blast_format.hpp>
+#include "../blast/blast_app_util.hpp"
+
+#ifndef SKIP_DOXYGEN_PROCESSING
+USING_NCBI_SCOPE;
+USING_SCOPE(blast);
+USING_SCOPE(objects);
+#endif
+
+class CRMBlastnApp : public CNcbiApplication
+{
+public:
+ /** @inheritDoc */
+ CRMBlastnApp() {
+ CRef<CVersion> version(new CVersion());
+ version->SetVersionInfo(new CBlastVersion());
+ SetFullVersion(version);
+ m_StopWatch.Start();
+ if (m_UsageReport.IsEnabled()) {
+ m_UsageReport.AddParam(CBlastUsageReport::eVersion, GetVersion().Print());
+ }
+ }
+
+ ~CRMBlastnApp() {
+ m_UsageReport.AddParam(CBlastUsageReport::eRunTime, m_StopWatch.Elapsed());
+ }
+private:
+ /** @inheritDoc */
+ virtual void Init();
+ /** @inheritDoc */
+ virtual int Run();
+
+ /// This application's command line args
+ CRef<CRMBlastnAppArgs> m_CmdLineArgs;
+ CBlastUsageReport m_UsageReport;
+ CStopWatch m_StopWatch;
+};
+
+
+
+void CRMBlastnApp::Init()
+{
+ // formulate command line arguments
+
+ m_CmdLineArgs.Reset(new CRMBlastnAppArgs());
+ // read the command line
+ HideStdArgs(fHideLogfile | fHideConffile | fHideFullVersion | fHideXmlHelp | fHideDryRun);
+ SetupArgDescriptions(m_CmdLineArgs->SetCommandLine());
+}
+
+int CRMBlastnApp::Run(void)
+{
+ int status = BLAST_EXIT_SUCCESS;
+
+ try {
+
+ // Allow the fasta reader to complain on invalid sequence input
+ SetDiagPostLevel(eDiag_Warning);
+
+ /*** Get the BLAST options ***/
+ const CArgs& args = GetArgs();
+ CRef<CBlastOptionsHandle> opts_hndl;
+ if(RecoverSearchStrategy(args, m_CmdLineArgs)){
+ opts_hndl.Reset(&*m_CmdLineArgs->SetOptionsForSavedStrategy(args));
+ }
+ else {
+ opts_hndl.Reset(&*m_CmdLineArgs->SetOptions(args));
+ }
+ const CBlastOptions& opt = opts_hndl->GetOptions();
+
+ /*** Initialize the database/subject ***/
+ CRef<CBlastDatabaseArgs> db_args(m_CmdLineArgs->GetBlastDatabaseArgs());
+ CRef<CLocalDbAdapter> db_adapter;
+ CRef<CScope> scope;
+ InitializeSubject(db_args, opts_hndl, m_CmdLineArgs->ExecuteRemotely(),
+ db_adapter, scope);
+ _ASSERT(db_adapter && scope);
+
+ /*** Get the query sequence(s) ***/
+ CRef<CQueryOptionsArgs> query_opts =
+ m_CmdLineArgs->GetQueryOptionsArgs();
+ SDataLoaderConfig dlconfig(query_opts->QueryIsProtein());
+ dlconfig.OptimizeForWholeLargeSequenceRetrieval();
+ CBlastInputSourceConfig iconfig(dlconfig, query_opts->GetStrand(),
+ query_opts->UseLowercaseMasks(),
+ query_opts->GetParseDeflines(),
+ query_opts->GetRange());
+ iconfig.SetSkipSeqCheck(true);
+ CBlastFastaInputSource fasta(m_CmdLineArgs->GetInputStream(), iconfig);
+ CBlastInput input(&fasta, m_CmdLineArgs->GetQueryBatchSize());
+
+ // Initialize the megablast database index now so we can know whether an indexed search will be run.
+ // This is only important for the reference in the report, but would be done anyway.
+ if (opt.GetUseIndex() && !m_CmdLineArgs->ExecuteRemotely()) {
+ CRef<CBlastOptions> my_options(&(opts_hndl->SetOptions()));
+ CSetupFactory::InitializeMegablastDbIndex(my_options);
+ }
+
+ /*** Get the formatting options ***/
+ CRef<CFormattingArgs> fmt_args(m_CmdLineArgs->GetFormattingArgs());
+ CBlastFormat formatter(opt, *db_adapter,
+ fmt_args->GetFormattedOutputChoice(),
+ query_opts->GetParseDeflines(),
+ m_CmdLineArgs->GetOutputStream(),
+ fmt_args->GetNumDescriptions(),
+ fmt_args->GetNumAlignments(),
+ *scope,
+ opt.GetMatrixName(),
+ fmt_args->ShowGis(),
+ fmt_args->DisplayHtmlOutput(),
+ opt.GetQueryGeneticCode(),
+ opt.GetDbGeneticCode(),
+ opt.GetSumStatisticsMode(),
+ m_CmdLineArgs->ExecuteRemotely(),
+ db_adapter->GetFilteringAlgorithm(),
+ fmt_args->GetCustomOutputFormatSpec(),
+ m_CmdLineArgs->GetTask() == "megablast",
+ opt.GetMBIndexLoaded());
+
+
+ formatter.PrintProlog();
+
+ /*** Process the input ***/
+ for (; !input.End(); formatter.ResetScopeHistory()) {
+
+ CRef<CBlastQueryVector> query_batch(input.GetNextSeqBatch(*scope));
+ CRef<IQueryFactory> queries(new CObjMgr_QueryFactory(*query_batch));
+
+ SaveSearchStrategy(args, m_CmdLineArgs, queries, opts_hndl);
+
+ CRef<CSearchResultSet> results;
+
+ if (m_CmdLineArgs->ExecuteRemotely()) {
+ CRef<CRemoteBlast> rmt_blast =
+ InitializeRemoteBlast(queries, db_args, opts_hndl,
+ m_CmdLineArgs->ProduceDebugRemoteOutput());
+ results = rmt_blast->GetResultSet();
+ } else {
+ CLocalBlast lcl_blast(queries, opts_hndl, db_adapter);
+ lcl_blast.SetNumberOfThreads(m_CmdLineArgs->GetNumThreads());
+ results = lcl_blast.Run();
+ }
+
+ ITERATE(CSearchResultSet, result, *results) {
+ formatter.PrintOneResultSet(**result, query_batch);
+ }
+ }
+
+ formatter.PrintEpilog(opt);
+
+ if (m_CmdLineArgs->ProduceDebugOutput()) {
+ opts_hndl->GetOptions().DebugDumpText(NcbiCerr, "BLAST options", 1);
+ }
+
+ LogQueryInfo(m_UsageReport, input);
+ formatter.LogBlastSearchInfo(m_UsageReport);
+ } CATCH_ALL(status)
+
+ // The program and task name are overwritten here to avoid changing the
+ // "true" values of Program and Task everywhere else in the program
+ m_UsageReport.AddParam(CBlastUsageReport::eProgram, (string) "rmblastn");
+ m_UsageReport.AddParam(CBlastUsageReport::eTask, (string) "rmblastn");
+
+ m_UsageReport.AddParam(CBlastUsageReport::eNumThreads, (int) m_CmdLineArgs->GetNumThreads());
+ m_UsageReport.AddParam(CBlastUsageReport::eExitStatus, status);
+ return status;
+}
+
+#ifndef SKIP_DOXYGEN_PROCESSING
+int NcbiSys_main(int argc, ncbi::TXChar* argv[])
+{
+ return CRMBlastnApp().AppMain(argc, argv);
+}
+#endif /* SKIP_DOXYGEN_PROCESSING */
diff -rupN ncbi-blast-2.11.0+-src.orig/c++/src/connect/ncbi_usage_report.cpp ncbi-blast-2.11.0+-src/c++/src/connect/ncbi_usage_report.cpp
--- ncbi-blast-2.11.0+-src.orig/c++/src/connect/ncbi_usage_report.cpp 2020-03-03 10:47:23.000000000 -0800
+++ ncbi-blast-2.11.0+-src/c++/src/connect/ncbi_usage_report.cpp 2021-02-23 15:38:56.089137179 -0800
@@ -46,7 +46,7 @@ BEGIN_NCBI_SCOPE
// All parameters can be redefined in the configuration file.
// Default "pinger" CGI url for reporting statistics.
-const char* kDefault_URL = "https://www.ncbi.nlm.nih.gov/stat";
+const char* kDefault_URL = "https://www.repeatmasker.org/rmblast/stat";
// Usage logging is disabled by default.
const bool kDefault_IsEnabled = false;
@@ -265,11 +265,6 @@ void CUsageReportJob::x_CopyFrom(const C
static string s_GetOS()
{
- // Check NCBI_OS first, configure can define OS name already
-#if defined(NCBI_OS)
- return NCBI_OS;
-#endif
- // Fallback, try to guess
#if defined(_WIN32)
return "MSWIN"; // Windows
#elif defined(__CYGWIN__)

View File

@ -12,11 +12,25 @@ class NcbiRmblastn(AutotoolsPackage):
homepage = "http://www.repeatmasker.org/RMBlast.html"
url = "ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.9.0/ncbi-blast-2.9.0+-src.tar.gz"
version('2.11.0', sha256='d88e1858ae7ce553545a795a2120e657a799a6d334f2a07ef0330cc3e74e1954')
version('2.9.0', sha256='a390cc2d7a09422759fc178db84de9def822cbe485916bbb2ec0d215dacdc257')
# There is a corresponding gzipped patch file associated with each version.
# According to the documentation, http://www.repeatmasker.org/RMBlast.html,
# Download NCBI Blast+ and rmblast patch file:
# ncbi-blast-2.11.0+-src.tar.gz
# isb-2.11.0+-rmblast.patch.gz
# The patch is downloaded and unzipped in the ncbi-rmblastn Spack package
# directory to make it available for the patch directive.
patch('isb-2.11.0+-rmblast.patch', when="@2.11.0")
patch('isb-2.9.0+-rmblast-p1.patch', when="@2.9.0")
configure_directory = 'c++'
def url_for_version(self, version):
url = "ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/{0}/ncbi-blast-{1}+-src.tar.gz"
return url.format(version, version)
def configure_args(self):
args = [
"--with-mt",