mirror of
https://git.freebsd.org/ports.git
synced 2025-05-31 02:16:27 -04:00
biology/bolt-lmm: Upgrade to 2.3.4
Remove previously upstreamed patches New Makefile patch that preserves default behavior and should be palatable to upstream
This commit is contained in:
parent
2a2e8da848
commit
cdd2c0e9b9
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=508832
7 changed files with 62 additions and 119 deletions
|
@ -1,8 +1,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= bolt-lmm
|
||||
DISTVERSION= 2.3.2
|
||||
PORTREVISION= 2
|
||||
DISTVERSION= 2.3.4
|
||||
CATEGORIES= biology
|
||||
MASTER_SITES= https://data.broadinstitute.org/alkesgroup/BOLT-LMM/downloads/
|
||||
DISTNAME= BOLT-LMM_v${PORTVERSION}
|
||||
|
@ -21,11 +20,19 @@ LIB_DEPENDS= libnlopt.so:math/nlopt \
|
|||
# both merely add a GCC requirement.
|
||||
USES= compiler:gcc-c++11-lib gmake
|
||||
|
||||
BUILD_WRKSRC= ${WRKDIR}/${DISTNAME}/src
|
||||
INSTALL_WRKSRC= ${WRKDIR}/${DISTNAME}/src
|
||||
CXXFLAGS_i386= -DUSE_SSE -msse -msse2
|
||||
CXXFLAGS_amd64= -DUSE_SSE
|
||||
BUILD_WRKSRC= ${WRKDIR}/${DISTNAME}/src
|
||||
INSTALL_WRKSRC= ${WRKDIR}/${DISTNAME}/src
|
||||
CXXFLAGS_i386= -DUSE_SSE -msse -msse2
|
||||
CXXFLAGS_amd64= -DUSE_SSE
|
||||
CXXFLAGS_powerpc64= -DNO_WARN_X86_INTRINSICS -mvsx
|
||||
MAKE_ARGS= BOOST_INSTALL_DIR=${LOCALBASE} \
|
||||
NLOPT_INSTALL_DIR=${LOCALBASE} \
|
||||
ZLIB_STATIC_DIR=/usr/lib \
|
||||
LIBSTDCXX_STATIC_DIR=/usr/lib \
|
||||
GLIBC_STATIC_DIR=/usr/lib \
|
||||
SSEFLAGS="" \
|
||||
MEMCPY="" \
|
||||
LLAPACK="-lopenblas -lgfortran"
|
||||
|
||||
PORTEXAMPLES= *
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
TIMESTAMP = 1558717810
|
||||
SHA256 (BOLT-LMM_v2.3.2.tar.gz) = ee505a04138f6c80bfefad4df4b81a2d07e72114dd8329d187c97543f5a0521f
|
||||
SIZE (BOLT-LMM_v2.3.2.tar.gz) = 335057533
|
||||
TIMESTAMP = 1565528176
|
||||
SHA256 (BOLT-LMM_v2.3.4.tar.gz) = 2477faff5028ff8fee5d8f4e6b0cab6d0752b268fd508fe64530a66807d9b0c0
|
||||
SIZE (BOLT-LMM_v2.3.4.tar.gz) = 335128004
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
--- src/Jackknife.cpp.orig 2019-08-03 00:15:27 UTC
|
||||
+++ src/Jackknife.cpp
|
||||
@@ -28,8 +28,8 @@ namespace Jackknife {
|
||||
using std::make_pair;
|
||||
|
||||
double stddev(const vector <double> &x, int n) {
|
||||
- for (int i = 0; i < n; i++) if (isnan(x[i])) return NAN;
|
||||
- for (int i = 0; i < n; i++) if (isinf(x[i])) return INFINITY;
|
||||
+ for (int i = 0; i < n; i++) if (std::isnan(x[i])) return NAN;
|
||||
+ for (int i = 0; i < n; i++) if (std::isinf(x[i])) return INFINITY;
|
||||
double s = 0.0, s2 = 0.0;
|
||||
for (int i = 0; i < n; i++) {
|
||||
s += x[i];
|
|
@ -1,24 +0,0 @@
|
|||
--- src/LDscoreCalibration.cpp.orig 2019-08-03 00:18:05 UTC
|
||||
+++ src/LDscoreCalibration.cpp
|
||||
@@ -201,8 +201,8 @@ namespace LDscoreCalibration {
|
||||
snps[m].MAF >= minMAF && // MAF threshold
|
||||
statsRef[m] > 0 && // ref stat available
|
||||
statsCur[m] > 0 && // cur stat available
|
||||
- !isnan(LDscores[m]) && // LD Score available
|
||||
- !isnan(LDscoresChip[m]); // LD Score weight available
|
||||
+ !std::isnan(LDscores[m]) && // LD Score available
|
||||
+ !std::isnan(LDscoresChip[m]); // LD Score weight available
|
||||
|
||||
// perform outlier removal
|
||||
double outlierChisqThresh = std::max(MIN_OUTLIER_CHISQ_THRESH, N * outlierVarFracThresh);
|
||||
@@ -256,8 +256,8 @@ namespace LDscoreCalibration {
|
||||
maskSnps[m] =
|
||||
snps[m].MAF >= minMAF && // MAF threshold
|
||||
stats[m] > 0 && // stat available
|
||||
- !isnan(LDscores[m]) && // LD Score available
|
||||
- !isnan(LDscoresChip[m]); // LD Score weight available
|
||||
+ !std::isnan(LDscores[m]) && // LD Score available
|
||||
+ !std::isnan(LDscoresChip[m]); // LD Score weight available
|
||||
|
||||
// perform outlier removal
|
||||
double outlierChisqThresh = std::max(MIN_OUTLIER_CHISQ_THRESH, N * outlierVarFracThresh);
|
|
@ -1,21 +1,27 @@
|
|||
--- src/Makefile.orig 2018-03-13 02:44:52 UTC
|
||||
--- src/Makefile.orig 2019-08-11 03:05:04 UTC
|
||||
+++ src/Makefile
|
||||
@@ -1,29 +1,28 @@
|
||||
@@ -1,31 +1,35 @@
|
||||
+
|
||||
### modify these paths to local Boost and NLopt install directories
|
||||
-BOOST_INSTALL_DIR = /home/pl88/boost_1_58_0/install
|
||||
-NLOPT_INSTALL_DIR = /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
|
||||
+BOOST_INSTALL_DIR ?= ${LOCALBASE}
|
||||
+# Redundant on FreeBSD NLOPT_INSTALL_DIR = /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
|
||||
+### by setting them in the environment or make command line args
|
||||
+### which will override variables set with ?=
|
||||
|
||||
INTELROOT = /n/groups/price/poru/external_software/intel_mkl_2018
|
||||
MKLROOT = ${INTELROOT}/mkl
|
||||
-INTELROOT = /n/groups/price/poru/external_software/intel_mkl_2019u4
|
||||
-MKLROOT = ${INTELROOT}/mkl
|
||||
-ZLIB_STATIC_DIR = /n/groups/price/poru/external_software/zlib/zlib-1.2.11 # probably unnecessary on most systems
|
||||
-LIBSTDCXX_STATIC_DIR = /n/groups/price/poru/external_software/libstdc++/usr/lib/gcc/x86_64-redhat-linux/4.8.5/
|
||||
-GLIBC_STATIC_DIR = /home/pl88/glibc-static/usr/lib64
|
||||
+ZLIB_STATIC_DIR ?= /usr/lib
|
||||
+LIBSTDCXX_STATIC_DIR ?= /usr/lib
|
||||
+GLIBC_STATIC_DIR ?= /usr/lib
|
||||
+BOOST_INSTALL_DIR ?= /home/pl88/boost_1_58_0/install
|
||||
+NLOPT_INSTALL_DIR ?= /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
|
||||
|
||||
+INTELROOT ?= /n/groups/price/poru/external_software/intel_mkl_2019u4
|
||||
+MKLROOT ?= ${INTELROOT}/mkl
|
||||
+ZLIB_STATIC_DIR ?= /n/groups/price/poru/external_software/zlib/zlib-1.2.11 # probably unnecessary on most systems
|
||||
+LIBSTDCXX_STATIC_DIR ?= /n/groups/price/poru/external_software/libstdc++/usr/lib/gcc/x86_64-redhat-linux/4.8.5/
|
||||
+GLIBC_STATIC_DIR ?= /home/pl88/glibc-static/usr/lib64
|
||||
+
|
||||
ifeq ($(strip ${linking}),)
|
||||
linking = dynamic
|
||||
endif
|
||||
|
@ -36,33 +42,25 @@
|
|||
-CFLAGS += -msse -msse2
|
||||
-CFLAGS += -DUSE_SSE -DMEASURE_DGEMM -DVERBOSE
|
||||
-CFLAGS += -Wall
|
||||
+CXXFLAGS += -DMEASURE_DGEMM -DVERBOSE
|
||||
+CXXFLAGS += -Wall
|
||||
|
||||
+# Set SSEFLAGS to empty string in the env or make command line if building on
|
||||
+# systems with no SSE such as PowerPC
|
||||
+SSEFLAGS ?= -msse -msse2 -DUSE_SSE
|
||||
+CXXFLAGS += ${SSEFLAGS} -DMEASURE_DGEMM -DVERBOSE -Wall
|
||||
|
||||
-
|
||||
# add Boost include and lib paths
|
||||
@@ -38,9 +37,9 @@ endif
|
||||
# add NLopt include and lib paths
|
||||
ifneq ($(strip ${NLOPT_INSTALL_DIR}),)
|
||||
CPATHS += -I${NLOPT_INSTALL_DIR}/api
|
||||
- LPATHS += -L${NLOPT_INSTALL_DIR}/.libs
|
||||
+ LPATHS += -L${NLOPT_INSTALL_DIR}/libs
|
||||
ifeq (${linking},dynamic)
|
||||
- LPATHS += -Wl,-rpath,${NLOPT_INSTALL_DIR}/.libs
|
||||
+ LPATHS += -Wl,-rpath,${NLOPT_INSTALL_DIR}/libs
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -52,7 +51,7 @@ ifneq ($(strip ${ZLIB_STATIC_DIR}),)
|
||||
ifneq ($(strip ${BOOST_INSTALL_DIR}),)
|
||||
CPATHS += -I${BOOST_INSTALL_DIR}/include
|
||||
@@ -52,7 +56,7 @@ ifneq ($(strip ${ZLIB_STATIC_DIR}),)
|
||||
endif
|
||||
|
||||
# add MKL paths (if not compiling with g++, i.e., compiling with icpc)
|
||||
-ifneq (${CC},g++)
|
||||
+ifneq (${CXX},${CXX})
|
||||
+ifeq (${CXX},icpc)
|
||||
CPATHS += -I${MKLROOT}/include
|
||||
ifeq (${linking},dynamic)
|
||||
LPATHS += -L${MKLROOT}/lib/intel64 -Wl,-rpath,${MKLROOT}/lib/intel64 # for libmkl*
|
||||
@@ -61,28 +60,28 @@ ifneq (${CC},g++)
|
||||
ifeq (${linking},static)
|
||||
LPATHS += -L${INTELROOT}/lib/intel64 '-Wl,-rpath,$$ORIGIN/lib' # for libiomp5.so (now packaged with binary)
|
||||
@@ -65,34 +69,34 @@ ifneq (${CC},g++)
|
||||
endif
|
||||
|
||||
# add flags for static linking; build LAPACK/MKL component of link line
|
||||
|
@ -70,10 +68,10 @@
|
|||
- CFLAGS += -fopenmp
|
||||
- LFLAGS += -fopenmp
|
||||
- LLAPACK = -llapack -lgfortran
|
||||
+ifeq (${CXX},${CXX})
|
||||
+ifneq (${CXX},icpc)
|
||||
+ CXXFLAGS += -fopenmp
|
||||
+ LDFLAGS += -fopenmp
|
||||
+ LLAPACK = -lopenblas -lgfortran
|
||||
+ LLAPACK ?= -llapack -lgfortran
|
||||
ifeq (${linking},static)
|
||||
- LFLAGS += -static
|
||||
+ LDFLAGS += -static
|
||||
|
@ -92,39 +90,47 @@
|
|||
+ CXXFLAGS += -qopenmp
|
||||
+ LDFLAGS += -qopenmp
|
||||
+ CXXFLAGS += -Wunused-variable -Wpointer-arith -Wuninitialized -Wreturn-type -Wcheck -Wshadow
|
||||
LIOMP5 = -liomp5
|
||||
LDL = -ldl
|
||||
ifeq (${linking},static)
|
||||
- LFLAGS += -static
|
||||
+ LDFLAGS += -static
|
||||
LPATHS += -L${GLIBC_STATIC_DIR} -L${ZLIB_STATIC_DIR}
|
||||
LLAPACK = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a -Wl,--end-group
|
||||
LLAPACK = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group
|
||||
else ifeq (${linking},static-except-glibc)
|
||||
- LFLAGS += -static-intel -static-libstdc++ -static-libgcc
|
||||
+ LDFLAGS += -static-intel -static-libstdc++ -static-libgcc
|
||||
LPATHS += -L${ZLIB_STATIC_DIR}
|
||||
LLAPACK = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a -Wl,--end-group
|
||||
LLAPACK = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group
|
||||
else ifeq (${linking},static-except-glibc-intel)
|
||||
- LFLAGS += -static-libstdc++ -static-libgcc
|
||||
+ LDFLAGS += -static-libstdc++ -static-libgcc
|
||||
LPATHS += -L${ZLIB_STATIC_DIR}
|
||||
LLAPACK = -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core
|
||||
else
|
||||
@@ -95,7 +94,8 @@ else
|
||||
@@ -105,7 +109,7 @@ else
|
||||
endif
|
||||
|
||||
# build link line (minus flags)
|
||||
-LLIBS = -lboost_program_options -lboost_iostreams -lz -lnlopt
|
||||
+LLIBS = -lnlopt -lboost_program_options -lboost_iostreams -lz
|
||||
+# LLIBS = /usr/local/lib/libboost_program_options.a -lnlopt -lboost_iostreams -lz
|
||||
ifeq (${linking},static-except-glibc)
|
||||
L = -L${LIBSTDCXX_STATIC_DIR} ${LPATHS} -Wl,--wrap=memcpy -Wl,-Bstatic ${LLIBS} ${LLAPACK} -Wl,-Bdynamic -lpthread -lm
|
||||
else
|
||||
@@ -105,16 +105,18 @@ endif
|
||||
L = -L${LIBSTDCXX_STATIC_DIR} ${LPATHS} -Wl,--wrap=memcpy -Wl,-Bstatic ${LLIBS} ${LLAPACK} -Wl,-Bdynamic ${LIOMP5} -lpthread -lm ${LDL}
|
||||
else ifeq (${linking},static-except-glibc-intel)
|
||||
@@ -117,16 +121,20 @@ endif
|
||||
|
||||
|
||||
T = bolt
|
||||
-O = Bolt.o BoltParams.o BoltParEstCV.o BoltReml.o CovariateBasis.o DataMatrix.o FileUtils.o Jackknife.o LDscoreCalibration.o MapInterpolater.o MatrixUtils.o MemoryUtils.o NonlinearOptMulti.o NumericUtils.o PhenoBuilder.o RestrictSnpSet.o SnpData.o SnpInfo.o SpectrumTools.o StatsUtils.o StringUtils.o Timer.o memcpy.o
|
||||
+O = Bolt.o BoltParams.o BoltParEstCV.o BoltReml.o CovariateBasis.o DataMatrix.o FileUtils.o Jackknife.o LDscoreCalibration.o MapInterpolater.o MatrixUtils.o MemoryUtils.o NonlinearOptMulti.o NumericUtils.o PhenoBuilder.o RestrictSnpSet.o SnpData.o SnpInfo.o SpectrumTools.o StatsUtils.o StringUtils.o Timer.o
|
||||
+# Set to empty string in env or make command line to use system memcpy
|
||||
+MEMCPY ?= memcpy.o
|
||||
+O = Bolt.o BoltParams.o BoltParEstCV.o BoltReml.o CovariateBasis.o DataMatrix.o FileUtils.o Jackknife.o LDscoreCalibration.o MapInterpolater.o MatrixUtils.o MemoryUtils.o NonlinearOptMulti.o NumericUtils.o PhenoBuilder.o RestrictSnpSet.o SnpData.o SnpInfo.o SpectrumTools.o StatsUtils.o StringUtils.o Timer.o ${MEMCPY}
|
||||
OMAIN = BoltMain.o $O
|
||||
|
||||
-.PHONY: clean
|
||||
+.PHONY: clean all
|
||||
|
||||
+all: $T
|
||||
+all: ${T}
|
||||
+
|
||||
%.o: %.cpp
|
||||
- ${CC} ${CFLAGS} ${CPATHS} -o $@ -c $<
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
--- src/SnpData.cpp.orig 2019-08-03 00:23:17 UTC
|
||||
+++ src/SnpData.cpp
|
||||
@@ -996,7 +996,7 @@ namespace LMM {
|
||||
for (int w = 0; w < W; w++)
|
||||
if (isProximal(m, mp, windows[w].first, windows[w].second)) {
|
||||
foundProximal = true;
|
||||
- if (!isnan(r2)) {
|
||||
+ if (!std::isnan(r2)) {
|
||||
for (int a = 0; a < A; a++) {
|
||||
double weight = pow((snps[mp].MAF * (1-snps[mp].MAF)), alphaMAFdeps[a]);
|
||||
LDscores[w*A+a] += weight * r2;
|
||||
@@ -1048,7 +1048,7 @@ namespace LMM {
|
||||
if (snps[mp].chrom != snps[m].chrom) {
|
||||
fillSnpRow(&mpRow[0], mp);
|
||||
double r2 = compute_r2(&mRow[0], &mpRow[0], Nstride);
|
||||
- if (!isnan(r2)) {
|
||||
+ if (!std::isnan(r2)) {
|
||||
totOffChrom_r2s += r2;
|
||||
numOffChrom_r2s++;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
--- src/StatsUtils.cpp.orig 2019-08-03 00:24:37 UTC
|
||||
+++ src/StatsUtils.cpp
|
||||
@@ -33,8 +33,8 @@ namespace StatsUtils {
|
||||
if (n <= 1) return NAN;
|
||||
double s = 0.0, s2 = 0.0;
|
||||
for (uint64 i = 0; i < n; i++) {
|
||||
- if (isnan(x[i])) return NAN;
|
||||
- if (isinf(x[i])) return INFINITY;
|
||||
+ if (std::isnan(x[i])) return NAN;
|
||||
+ if (std::isinf(x[i])) return INFINITY;
|
||||
s += x[i];
|
||||
s2 += x[i]*x[i];
|
||||
}
|
Loading…
Add table
Reference in a new issue