mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 09:49:18 -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$
|
# $FreeBSD$
|
||||||
|
|
||||||
PORTNAME= bolt-lmm
|
PORTNAME= bolt-lmm
|
||||||
DISTVERSION= 2.3.2
|
DISTVERSION= 2.3.4
|
||||||
PORTREVISION= 2
|
|
||||||
CATEGORIES= biology
|
CATEGORIES= biology
|
||||||
MASTER_SITES= https://data.broadinstitute.org/alkesgroup/BOLT-LMM/downloads/
|
MASTER_SITES= https://data.broadinstitute.org/alkesgroup/BOLT-LMM/downloads/
|
||||||
DISTNAME= BOLT-LMM_v${PORTVERSION}
|
DISTNAME= BOLT-LMM_v${PORTVERSION}
|
||||||
|
@ -26,6 +25,14 @@ INSTALL_WRKSRC= ${WRKDIR}/${DISTNAME}/src
|
||||||
CXXFLAGS_i386= -DUSE_SSE -msse -msse2
|
CXXFLAGS_i386= -DUSE_SSE -msse -msse2
|
||||||
CXXFLAGS_amd64= -DUSE_SSE
|
CXXFLAGS_amd64= -DUSE_SSE
|
||||||
CXXFLAGS_powerpc64= -DNO_WARN_X86_INTRINSICS -mvsx
|
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= *
|
PORTEXAMPLES= *
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
TIMESTAMP = 1558717810
|
TIMESTAMP = 1565528176
|
||||||
SHA256 (BOLT-LMM_v2.3.2.tar.gz) = ee505a04138f6c80bfefad4df4b81a2d07e72114dd8329d187c97543f5a0521f
|
SHA256 (BOLT-LMM_v2.3.4.tar.gz) = 2477faff5028ff8fee5d8f4e6b0cab6d0752b268fd508fe64530a66807d9b0c0
|
||||||
SIZE (BOLT-LMM_v2.3.2.tar.gz) = 335057533
|
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
|
+++ src/Makefile
|
||||||
@@ -1,29 +1,28 @@
|
@@ -1,31 +1,35 @@
|
||||||
|
+
|
||||||
### modify these paths to local Boost and NLopt install directories
|
### modify these paths to local Boost and NLopt install directories
|
||||||
-BOOST_INSTALL_DIR = /home/pl88/boost_1_58_0/install
|
-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
|
-NLOPT_INSTALL_DIR = /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
|
||||||
+BOOST_INSTALL_DIR ?= ${LOCALBASE}
|
+### by setting them in the environment or make command line args
|
||||||
+# Redundant on FreeBSD NLOPT_INSTALL_DIR = /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
|
+### which will override variables set with ?=
|
||||||
|
|
||||||
INTELROOT = /n/groups/price/poru/external_software/intel_mkl_2018
|
-INTELROOT = /n/groups/price/poru/external_software/intel_mkl_2019u4
|
||||||
MKLROOT = ${INTELROOT}/mkl
|
-MKLROOT = ${INTELROOT}/mkl
|
||||||
-ZLIB_STATIC_DIR = /n/groups/price/poru/external_software/zlib/zlib-1.2.11 # probably unnecessary on most systems
|
-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/
|
-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
|
-GLIBC_STATIC_DIR = /home/pl88/glibc-static/usr/lib64
|
||||||
+ZLIB_STATIC_DIR ?= /usr/lib
|
+BOOST_INSTALL_DIR ?= /home/pl88/boost_1_58_0/install
|
||||||
+LIBSTDCXX_STATIC_DIR ?= /usr/lib
|
+NLOPT_INSTALL_DIR ?= /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
|
||||||
+GLIBC_STATIC_DIR ?= /usr/lib
|
|
||||||
|
|
||||||
|
+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}),)
|
ifeq ($(strip ${linking}),)
|
||||||
linking = dynamic
|
linking = dynamic
|
||||||
endif
|
endif
|
||||||
|
@ -36,33 +42,25 @@
|
||||||
-CFLAGS += -msse -msse2
|
-CFLAGS += -msse -msse2
|
||||||
-CFLAGS += -DUSE_SSE -DMEASURE_DGEMM -DVERBOSE
|
-CFLAGS += -DUSE_SSE -DMEASURE_DGEMM -DVERBOSE
|
||||||
-CFLAGS += -Wall
|
-CFLAGS += -Wall
|
||||||
+CXXFLAGS += -DMEASURE_DGEMM -DVERBOSE
|
+# Set SSEFLAGS to empty string in the env or make command line if building on
|
||||||
+CXXFLAGS += -Wall
|
+# systems with no SSE such as PowerPC
|
||||||
|
+SSEFLAGS ?= -msse -msse2 -DUSE_SSE
|
||||||
|
+CXXFLAGS += ${SSEFLAGS} -DMEASURE_DGEMM -DVERBOSE -Wall
|
||||||
|
|
||||||
|
-
|
||||||
# add Boost include and lib paths
|
# add Boost include and lib paths
|
||||||
@@ -38,9 +37,9 @@ endif
|
ifneq ($(strip ${BOOST_INSTALL_DIR}),)
|
||||||
# add NLopt include and lib paths
|
CPATHS += -I${BOOST_INSTALL_DIR}/include
|
||||||
ifneq ($(strip ${NLOPT_INSTALL_DIR}),)
|
@@ -52,7 +56,7 @@ ifneq ($(strip ${ZLIB_STATIC_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}),)
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# add MKL paths (if not compiling with g++, i.e., compiling with icpc)
|
# add MKL paths (if not compiling with g++, i.e., compiling with icpc)
|
||||||
-ifneq (${CC},g++)
|
-ifneq (${CC},g++)
|
||||||
+ifneq (${CXX},${CXX})
|
+ifeq (${CXX},icpc)
|
||||||
CPATHS += -I${MKLROOT}/include
|
CPATHS += -I${MKLROOT}/include
|
||||||
ifeq (${linking},dynamic)
|
ifeq (${linking},static)
|
||||||
LPATHS += -L${MKLROOT}/lib/intel64 -Wl,-rpath,${MKLROOT}/lib/intel64 # for libmkl*
|
LPATHS += -L${INTELROOT}/lib/intel64 '-Wl,-rpath,$$ORIGIN/lib' # for libiomp5.so (now packaged with binary)
|
||||||
@@ -61,28 +60,28 @@ ifneq (${CC},g++)
|
@@ -65,34 +69,34 @@ ifneq (${CC},g++)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# add flags for static linking; build LAPACK/MKL component of link line
|
# add flags for static linking; build LAPACK/MKL component of link line
|
||||||
|
@ -70,10 +68,10 @@
|
||||||
- CFLAGS += -fopenmp
|
- CFLAGS += -fopenmp
|
||||||
- LFLAGS += -fopenmp
|
- LFLAGS += -fopenmp
|
||||||
- LLAPACK = -llapack -lgfortran
|
- LLAPACK = -llapack -lgfortran
|
||||||
+ifeq (${CXX},${CXX})
|
+ifneq (${CXX},icpc)
|
||||||
+ CXXFLAGS += -fopenmp
|
+ CXXFLAGS += -fopenmp
|
||||||
+ LDFLAGS += -fopenmp
|
+ LDFLAGS += -fopenmp
|
||||||
+ LLAPACK = -lopenblas -lgfortran
|
+ LLAPACK ?= -llapack -lgfortran
|
||||||
ifeq (${linking},static)
|
ifeq (${linking},static)
|
||||||
- LFLAGS += -static
|
- LFLAGS += -static
|
||||||
+ LDFLAGS += -static
|
+ LDFLAGS += -static
|
||||||
|
@ -92,39 +90,47 @@
|
||||||
+ CXXFLAGS += -qopenmp
|
+ CXXFLAGS += -qopenmp
|
||||||
+ LDFLAGS += -qopenmp
|
+ LDFLAGS += -qopenmp
|
||||||
+ CXXFLAGS += -Wunused-variable -Wpointer-arith -Wuninitialized -Wreturn-type -Wcheck -Wshadow
|
+ CXXFLAGS += -Wunused-variable -Wpointer-arith -Wuninitialized -Wreturn-type -Wcheck -Wshadow
|
||||||
|
LIOMP5 = -liomp5
|
||||||
|
LDL = -ldl
|
||||||
ifeq (${linking},static)
|
ifeq (${linking},static)
|
||||||
- LFLAGS += -static
|
- LFLAGS += -static
|
||||||
+ LDFLAGS += -static
|
+ LDFLAGS += -static
|
||||||
LPATHS += -L${GLIBC_STATIC_DIR} -L${ZLIB_STATIC_DIR}
|
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)
|
else ifeq (${linking},static-except-glibc)
|
||||||
- LFLAGS += -static-intel -static-libstdc++ -static-libgcc
|
- LFLAGS += -static-intel -static-libstdc++ -static-libgcc
|
||||||
+ LDFLAGS += -static-intel -static-libstdc++ -static-libgcc
|
+ LDFLAGS += -static-intel -static-libstdc++ -static-libgcc
|
||||||
LPATHS += -L${ZLIB_STATIC_DIR}
|
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
|
else
|
||||||
@@ -95,7 +94,8 @@ else
|
@@ -105,7 +109,7 @@ else
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# build link line (minus flags)
|
# build link line (minus flags)
|
||||||
-LLIBS = -lboost_program_options -lboost_iostreams -lz -lnlopt
|
-LLIBS = -lboost_program_options -lboost_iostreams -lz -lnlopt
|
||||||
+LLIBS = -lnlopt -lboost_program_options -lboost_iostreams -lz
|
+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)
|
ifeq (${linking},static-except-glibc)
|
||||||
L = -L${LIBSTDCXX_STATIC_DIR} ${LPATHS} -Wl,--wrap=memcpy -Wl,-Bstatic ${LLIBS} ${LLAPACK} -Wl,-Bdynamic -lpthread -lm
|
L = -L${LIBSTDCXX_STATIC_DIR} ${LPATHS} -Wl,--wrap=memcpy -Wl,-Bstatic ${LLIBS} ${LLAPACK} -Wl,-Bdynamic ${LIOMP5} -lpthread -lm ${LDL}
|
||||||
else
|
else ifeq (${linking},static-except-glibc-intel)
|
||||||
@@ -105,16 +105,18 @@ endif
|
@@ -117,16 +121,20 @@ endif
|
||||||
|
|
||||||
|
|
||||||
T = bolt
|
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 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
|
OMAIN = BoltMain.o $O
|
||||||
|
|
||||||
-.PHONY: clean
|
-.PHONY: clean
|
||||||
+.PHONY: clean all
|
+.PHONY: clean all
|
||||||
|
|
||||||
+all: $T
|
+all: ${T}
|
||||||
+
|
+
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
- ${CC} ${CFLAGS} ${CPATHS} -o $@ -c $<
|
- ${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