Compiling NCBI BLAST
BLAST is the Basic Local Alignment Search Tool from the National Center for Biotechnology Information.[1]
Version 2.2.22 for QIIME 1.8.0 Integration
We will only deal with version 2.2.22, which is the version recommended for use with QIIME 1.8.0. Download is here:
ftp://ftp.ncbi.nlm.nih.gov/blast/executables/release/2.2.22/
Download
wget
ftp://ftp.ncbi.nlm.nih.gov/blast/executables/release/2.2.22/ncbi.tar.gz
tar xf ncbi.tar.gz
Modify Build Scripts
Edit ncbi/make/makedis.csh
. In the "case Linux:" section (at line
145), add a new case statement to deal with 64-bit Linux:
case "x86_64":
set platform=linux64
breaksw
Edit ncbi/platform/linux64.ncbi.mk
, and change the following:
NCBI_LDFLAGS1 = -O3 -msse4.2 -mavx -mfpmath=sse
NCBI_OPTFLAG = -O3 -msse4.2 -mavx -mfpmath=sse
NCBI_BIN_MASTER = $(HOME)/ncbi/bin
NCBI_BIN_COPY = $(HOME)/ncbi/bin
NCBI_INCDIR = $(HOME)/ncbi/include
NCBI_LIBDIR = $(HOME)/ncbi/lib
NCBI_ALTLIB = $(HOME)/ncbi/altlib
NCBI_VIBFLAG = -DWIN_MOTIF
NCBI_VIBLIBS = -lXmu -lXm -lXt -lSM -lICE -lXext -lXp -lX11 -ldl
NCBI_DISTVIBLIBS = -lXmu -lXm -lXt -lSM -lICE -lXext -lXp -lX11 -ldl
OPENGL_INCLUDE =
OPENGL_LIBS = -lGL -lGLU
NCBI_OGLLIBS = -lGL -lGLU
LIBPNG_DIR =
ZLIB_DIR =
Build
./ncbi/make/makedis.csh
Resulting executables are in:
ncbi/build
Move them appropriately.
Possible Issues
Some error messages which seem important:
In file included from simple.c:69:0:
../include/all.h:6079:0: warning: "RNA_QUAL" redefined [enabled by default]
#define RNA_QUAL &at[1966]
^
../include/all.h:4738:0: note: this is the location of the previous definition
#define RNA_QUAL &at[992]
BLAST+ 2.2.29
Compilation
export PREFIX=/mnt/HA/groups/myrsrchGrp
export CFLAGS="-O3 -msse4.2 -mavx -mfpmath=sse"
export CXXFLAGS="${CFLAGS}"
./configure --prefix=$PREFIX --with-dll --with-algo --with-serial --with-openmp \
--with-64 --with-lfs --with-mysql --with-mesa --with-sge=$SGE_ROOT >& Configure.out &
make -j 12 >& Make.out &
BLAST+ 2.2.30
Currently Loaded Modulefiles:
1) shared 6) boost/openmpi/gcc/64/1.57.0 11) proteus-fftw3/gcc/64/3.3.3
2) proteus 7) szip/gcc/2.1 12) hdf5_18/gcc/1.8.14-serial
3) gcc/4.8.1 8) hdf5_18/gcc/1.8.14-mpi 13) python/2.7-current
4) sge/univa 9) proteus-blas/gcc/64/20110419 14) perl/5.20.0
5) proteus-openmpi/gcc/64/1.8.1-mlnx-ofed 10) proteus-lapack/gcc/64/3.5.0
./configure CFLAGS="-O3 -march=corei7-avx -mfpmath=sse" \
--prefix=/mnt/HA/opt/ncbi-blast/gcc/64/2.2.30 \
--with-dll --with-algo --with-serial --with-openmp --with-64 \
--with-lfs --with-mysql --with-mesa --with-sge=$SGE_ROOT \
--with-python --with-boost=$BOOSTDIR --with-sqlite3 \
--with-perl --with-hdf5=$HDF5DIR
BLAST+ 2.6.0
Currently Loaded Modulefiles:
1) shared 15) suitesparse/gcc/4.5.3
2) proteus 16) szip/gcc/2.1
3) gcc/4.8.1 17) hdf5_18/gcc/1.8.14-serial
4) sge/univa 18) llvm/3.8.1
5) git/2.11.1 19) gmp/gcc/6.1.1
6) texlive/2016 20) mpfr/gcc/3.1.4
7) doxygen/1.8.12 21) mpc/gcc/1.0.3
8) zstd/1.0.0 22) python/2.7-current
9) gsl/gcc/2.2.1 23) libxml2/gcc/2.9.2
10) proteus-openmpi/gcc/64/1.8.1-mlnx-ofed 24) perl/5.20.0
11) boost/openmpi/gcc/64/1.57.0 25) bzip2/gcc/1.0.6
12) proteus-blas/gcc/64/20110419 26) zlib/cloudflare/gcc/1.2.8
13) proteus-lapack/gcc/64/3.5.0
14) proteus-fftw3/gcc/64/3.3.3
./configure CFLAGS="-O3 -march=corei7-avx -mfpmath=sse" CXXFLAGS="-O3 -march=corei7-avx -mfpmath=sse" \
--prefix=/mnt/HA/opt/ncbi-blast/gcc/64/2.6.0 \
--with-dll --with-algo --with-serial --with-openmp --with-64 \
--with-check --with-hard-runpath --with-lfs \
--with-mysql --with-mesa --with-sge=$SGE_ROOT \
--with-boost=${BOOSTDIR} --with-z=${ZLIBDIR} --with-bz2=${BZIP2DIR} --with-lapack=${LAPACKDIR} \
--with-sqlite3 \
--with-perl --with-python --with-hdf5=$HDF5DIR
Configure summary: <source lang="text> CFLAGS = -Wall -Wno-format-y2k -m64 -pthread -fopenmp -O3 -march=corei7-avx -mfpmath=sse -fPIC CXXFLAGS = -Wall -Wno-format-y2k -m64 -pthread -fopenmp -O3 -march=corei7-avx -mfpmath=sse -fPIC CPPFLAGS = -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_MT -D_REENTRANT -D_THREAD_SAFE LDFLAGS = -Wl,-rpath,/cm/shared/apps/gcc/4.8.1/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/../../../../lib64 -Wl,--disable-new-dtags -Wl,-export-dynamic -m64 -pthread -fopenmp -O
LIBRARIES: build as dynamic by default FEATURES: GCC MT LFS DLL DLL_BUILD unix WinMain Linux check PACKAGES:
enabled: UUID FUSE Iconv Z BZ2 PCRE GMP GMP GCRYPT GNUTLS OPENSSL KRB5 CURL MySQL BerkeleyDB BerkeleyDB++ PYTHON PYTHON26 PYTHON27 PERL Boost.Filesystem Boost.Iostreams Boost.Program-Options Boost.Regex Boost.Spirit Boost.System Boost.Test.Included Boost.Thread OpenGL MESA GLUT EXPAT LIBXML LIBXSLT LIBEXSLT Xerces Xalan SQLITE3 SGE HDF5 JPEG PNG TIFF UNGIF XPM FreeType FTGL MAGIC GSOAP LAPACK
disabled: LocalZ LocalBZ2 LZO LocalPCRE NETTLE Sybase DBLib FreeTDS ODBC PYTHON25 PYTHON3 Boost.Test C-Toolkit GLEW wxWidgets wx2.8 Fast-CGI LocalSSS LocalMSGMAIL2 SSSUTILS LocalNCBILS NCBILS2 SSSDB SP ORBacus ICU SABLOT Zorba SQLITE3ASYNC VDB OECHEM MUPARSER GIF MIMETIC AVRO Cereal SASL2 MONGODB GMOCK LMDB
PROJECTS:
enabled: cgi serial objects dbapi app algo
disabled: local_lbsm connext ncbi_crypt bdb ctools gui gbench
Fix Perl script
The Perl script update_blastdb.pl
needs to be fixed to use the newer
Perl rather than the system Perl. Modify the first line to read:
#!/usr/bin/env perl
BLAST+ 2.10.0
BLAST+ 2.10.0 requires a newer GCC compiler than is available on Proteus
IN PROGRESS - DO NOT USE
Currently Loaded Modulefiles:
1) shared 15) suitesparse/gcc/4.5.3
2) proteus 16) szip/gcc/2.1
3) gcc/4.8.1 17) hdf5_18/gcc/1.8.14-serial
4) sge/univa 18) llvm/3.8.1
5) git/2.25.0 19) gmp/gcc/6.1.1
6) texlive/2016 20) mpfr/gcc/3.1.4
7) doxygen/1.8.12 21) mpc/gcc/1.0.3
8) zstd/1.0.0 22) python/2.7-current
9) gsl/gcc/2.2.1 23) libxml2/gcc/2.9.2
10) proteus-openmpi/gcc/64/1.8.1-mlnx-ofed 24) perl/5.20.0
11) boost/openmpi/gcc/64/1.57.0 25) bzip2/gcc/1.0.6
12) proteus-blas/gcc/64/20110419 26) zlib/cloudflare/gcc/1.2.8
13) proteus-lapack/gcc/64/3.5.0
14) proteus-fftw3/gcc/64/3.3.3
./configure CFLAGS="-O3 -march=corei7-avx -mfpmath=sse" CXXFLAGS="-O3 -march=corei7-avx -mfpmath=sse" \
--prefix=/mnt/HA/opt/ncbi-blast/gcc/64/2.6.0 \
--with-dll --with-algo --with-serial --with-openmp --with-64 \
--with-check --with-hard-runpath --with-lfs \
--with-mysql --with-mesa --with-sge=$SGE_ROOT \
--with-boost=${BOOSTDIR} --with-z=${ZLIBDIR} --with-bz2=${BZIP2DIR} --with-lapack=${LAPACKDIR} \
--with-sqlite3 \
--with-perl --with-python --with-hdf5=$HDF5DIR
Configure summary: <source lang="text> CFLAGS = -Wall -Wno-format-y2k -m64 -pthread -fopenmp -O3 -march=corei7-avx -mfpmath=sse -fPIC CXXFLAGS = -Wall -Wno-format-y2k -m64 -pthread -fopenmp -O3 -march=corei7-avx -mfpmath=sse -fPIC CPPFLAGS = -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_MT -D_REENTRANT -D_THREAD_SAFE LDFLAGS = -Wl,-rpath,/cm/shared/apps/gcc/4.8.1/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/../../../../lib64 -Wl,--disable-new-dtags -Wl,-export-dynamic -m64 -pthread -fopenmp -O
LIBRARIES: build as dynamic by default FEATURES: GCC MT LFS DLL DLL_BUILD unix WinMain Linux check PACKAGES:
enabled: UUID FUSE Iconv Z BZ2 PCRE GMP GMP GCRYPT GNUTLS OPENSSL KRB5 CURL MySQL BerkeleyDB BerkeleyDB++ PYTHON PYTHON26 PYTHON27 PERL Boost.Filesystem Boost.Iostreams Boost.Program-Options Boost.Regex Boost.Spirit Boost.System Boost.Test.Included Boost.Thread OpenGL MESA GLUT EXPAT LIBXML LIBXSLT LIBEXSLT Xerces Xalan SQLITE3 SGE HDF5 JPEG PNG TIFF UNGIF XPM FreeType FTGL MAGIC GSOAP LAPACK
disabled: LocalZ LocalBZ2 LZO LocalPCRE NETTLE Sybase DBLib FreeTDS ODBC PYTHON25 PYTHON3 Boost.Test C-Toolkit GLEW wxWidgets wx2.8 Fast-CGI LocalSSS LocalMSGMAIL2 SSSUTILS LocalNCBILS NCBILS2 SSSDB SP ORBacus ICU SABLOT Zorba SQLITE3ASYNC VDB OECHEM MUPARSER GIF MIMETIC AVRO Cereal SASL2 MONGODB GMOCK LMDB
PROJECTS:
enabled: cgi serial objects dbapi app algo
disabled: local_lbsm connext ncbi_crypt bdb ctools gui gbench
Fix Perl script
The Perl script update_blastdb.pl
needs to be fixed to use the newer
Perl rather than the system Perl. Modify the first line to read:
#!/usr/bin/env perl