Skip to content

Commit 3ca4e17

Browse files
committed
initial commit
0 parents  commit 3ca4e17

File tree

298 files changed

+123103
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

298 files changed

+123103
-0
lines changed

CMakeLists.txt

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
cmake_minimum_required(VERSION 3.10)
2+
if (NOT CMAKE_CXX_COMPILER)
3+
set(CMAKE_CXX_COMPILER g++)
4+
endif()
5+
6+
execute_process(
7+
COMMAND git log --pretty=format:%h -n 1
8+
OUTPUT_VARIABLE GIT_COMMIT
9+
)
10+
if ("${GIT_COMMIT}" STREQUAL "")
11+
set(GIT_COMMIT "NA")
12+
endif()
13+
14+
file(STRINGS "VERSION" RM_VERSION)
15+
project(remeta VERSION ${RM_VERSION})
16+
17+
set(CMAKE_CXX_STANDARD 17)
18+
set(CMAKE_CXX_STANDARD_REQUIRED True)
19+
set(CMAKE_CXX_FLAGS "-O3 -Wall -ffast-math -fvisibility=hidden -fopenmp")
20+
add_definitions(-DVERSION_NUMBER="v${RM_VERSION}-${GIT_COMMIT}")
21+
22+
add_executable(remeta
23+
${CMAKE_SOURCE_DIR}/src/io/bgz_reader.cpp
24+
${CMAKE_SOURCE_DIR}/src/io/bgz_writer.cpp
25+
${CMAKE_SOURCE_DIR}/src/io/block_pgen_reader.cpp
26+
${CMAKE_SOURCE_DIR}/src/io/gene_set_reader.cpp
27+
${CMAKE_SOURCE_DIR}/src/io/htpv4_reader.cpp
28+
${CMAKE_SOURCE_DIR}/src/io/htpv4_writer.cpp
29+
${CMAKE_SOURCE_DIR}/src/io/remeta_matrix_reader.cpp
30+
${CMAKE_SOURCE_DIR}/src/io/regenie_ld_matrix_reader.cpp
31+
${CMAKE_SOURCE_DIR}/src/io/regenie_ld_matrix_writer.cpp
32+
${CMAKE_SOURCE_DIR}/src/io/ref_ld_block_mapper.cpp
33+
${CMAKE_SOURCE_DIR}/src/io/ref_ld_genetic_map.cpp
34+
${CMAKE_SOURCE_DIR}/src/io/ref_ld_matrix_reader.cpp
35+
${CMAKE_SOURCE_DIR}/src/io/ref_ld_matrix_writer.cpp
36+
${CMAKE_SOURCE_DIR}/src/io/regenie_anno_reader.cpp
37+
${CMAKE_SOURCE_DIR}/src/meta/es_meta_analyzer.cpp
38+
${CMAKE_SOURCE_DIR}/src/meta/genep_meta_analyzer.cpp
39+
${CMAKE_SOURCE_DIR}/src/meta/htp_meta_analyzer.cpp
40+
${CMAKE_SOURCE_DIR}/src/meta/pv_meta_analyzer.cpp
41+
${CMAKE_SOURCE_DIR}/src/meta/set_meta_analyzer.cpp
42+
${CMAKE_SOURCE_DIR}/src/meta/variant_meta_analyzer.cpp
43+
${CMAKE_SOURCE_DIR}/src/stat/misc.cpp
44+
${CMAKE_SOURCE_DIR}/src/stat/spa.cpp
45+
${CMAKE_SOURCE_DIR}/src/stat/tests.cpp
46+
${CMAKE_SOURCE_DIR}/src/allele_frequency_map.cpp
47+
${CMAKE_SOURCE_DIR}/src/annotation_map.cpp
48+
${CMAKE_SOURCE_DIR}/src/htpv4_pos.cpp
49+
${CMAKE_SOURCE_DIR}/src/logging.cpp
50+
${CMAKE_SOURCE_DIR}/src/parameter_checks.cpp
51+
${CMAKE_SOURCE_DIR}/src/remeta.cpp
52+
${CMAKE_SOURCE_DIR}/src/run_acatv.cpp
53+
${CMAKE_SOURCE_DIR}/src/run_compute_ref_ld.cpp
54+
${CMAKE_SOURCE_DIR}/src/run_esma.cpp
55+
${CMAKE_SOURCE_DIR}/src/run_genep.cpp
56+
${CMAKE_SOURCE_DIR}/src/run_htp.cpp
57+
${CMAKE_SOURCE_DIR}/src/run_index_anno.cpp
58+
${CMAKE_SOURCE_DIR}/src/run_ld_deflate.cpp
59+
${CMAKE_SOURCE_DIR}/src/run_ld_inflate.cpp
60+
${CMAKE_SOURCE_DIR}/src/run_pvma.cpp
61+
${CMAKE_SOURCE_DIR}/src/source_map.cpp
62+
${CMAKE_SOURCE_DIR}/src/util.cpp
63+
${CMAKE_SOURCE_DIR}/src/variant_filter.cpp
64+
)
65+
66+
find_path(
67+
EIGEN
68+
Eigen
69+
HINTS ${EIGEN_PATH}
70+
/usr/local/include/eigen3
71+
)
72+
if (${EIGEN} STREQUAL EIGEN-NOTFOUND)
73+
message(SEND_ERROR "could not find Eigen folder at EIGEN_PATH")
74+
else()
75+
message("EIGEN: ${EIGEN}")
76+
endif()
77+
78+
target_include_directories(remeta PRIVATE ${EIGEN})
79+
80+
find_library(
81+
HTSLIB
82+
libhts.a
83+
HINTS ${HTSLIB_PATH}
84+
)
85+
find_library(
86+
DEFLATE
87+
libdeflate.a
88+
)
89+
if (${HTSLIB} STREQUAL HTSLIB-NOTFOUND)
90+
message(SEND_ERROR "Could not find libhts.a at ${HTSLIB_PATH}")
91+
else()
92+
message("HTSlib: ${HTSLIB}")
93+
endif()
94+
if (${DEFLATE} STREQUAL DEFLATE-NOTFOUND)
95+
message(SEND_ERROR "Could not find libdeflate.a")
96+
endif()
97+
98+
find_library(
99+
BOOST_LOG_SETUP
100+
libboost_log_setup.a
101+
HINTS ${BOOST_PATH}
102+
)
103+
find_library(
104+
BOOST_LOG
105+
libboost_log.a
106+
HINTS ${BOOST_PATH}
107+
)
108+
find_library(
109+
BOOST_PROGRAM_OPTIONS
110+
libboost_program_options.a
111+
HINTS ${BOOST_PATH}
112+
)
113+
find_library(
114+
BOOST_FILESYSTEM
115+
libboost_filesystem.a
116+
HINTS ${BOOST_PATH}
117+
)
118+
find_library(
119+
BOOST_SYSTEM
120+
libboost_system.a
121+
HINTS ${BOOST_PATH}
122+
)
123+
find_library(
124+
BOOST_THREAD
125+
libboost_thread.a
126+
HINTS ${BOOST_PATH}
127+
)
128+
find_library(Z libz.so)
129+
find_library(SSL libssl.so)
130+
find_library(CRYPTO libcrypto.so)
131+
find_library(BZ2 libbz2.so)
132+
find_library(LZMA liblzma.so)
133+
find_library(CURL libcurl.so)
134+
135+
set(EXTERNAL_LIBS
136+
${HTSLIB}
137+
${DEFLATE}
138+
${BOOST_LOG_SETUP}
139+
${BOOST_LOG}
140+
${BOOST_PROGRAM_OPTIONS}
141+
${BOOST_FILESYSTEM}
142+
${BOOST_SYSTEM}
143+
${BOOST_THREAD}
144+
${PTHREAD}
145+
${Z}
146+
${SSL}
147+
${CRYPTO}
148+
${DL}
149+
${BZ2}
150+
${LZMA}
151+
${CURL}
152+
)
153+
154+
target_link_libraries(remeta PUBLIC ${EXTERNAL_LIBS})
155+
156+
add_custom_target(
157+
pgenlib.a
158+
COMMAND make
159+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/lib/pgenlib
160+
)
161+
target_link_libraries(
162+
remeta PUBLIC
163+
${CMAKE_SOURCE_DIR}/lib/pgenlib/pgenlib.a
164+
)
165+
target_include_directories(
166+
remeta PUBLIC
167+
${CMAKE_SOURCE_DIR}/lib/pgenlib
168+
)
169+
add_dependencies(remeta pgenlib.a)
170+
171+
add_custom_target(
172+
faddeeva.a
173+
COMMAND make
174+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/lib/faddeeva
175+
)
176+
target_link_libraries(
177+
remeta PUBLIC
178+
${CMAKE_SOURCE_DIR}/lib/faddeeva/faddeeva.a
179+
)
180+
target_include_directories(
181+
remeta PUBLIC
182+
${CMAKE_SOURCE_DIR}/lib/faddeeva
183+
)
184+
add_dependencies(remeta faddeeva.a)
185+
186+
add_custom_target(
187+
qfc.a
188+
COMMAND make
189+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/lib/qfc
190+
)
191+
target_link_libraries(
192+
remeta PUBLIC
193+
${CMAKE_SOURCE_DIR}/lib/qfc/qfc.a
194+
)
195+
target_include_directories(
196+
remeta PUBLIC
197+
${CMAKE_SOURCE_DIR}/lib/qfc
198+
)
199+
add_dependencies(remeta qfc.a)
200+
201+
#####################################
202+
### Link Linear Algebra Libraries ###
203+
#####################################
204+
# Intel MKL
205+
find_library(MKL libmkl_intel_lp64.a
206+
HINTS ${MKLROOT} $ENV{MKLROOT}/lib
207+
)
208+
find_library(MKL_GNU_THREAD libmkl_gnu_thread.a
209+
HINTS ${MKLROOT} $ENV{MKLROOT}/lib
210+
)
211+
find_library(MKL_CORE libmkl_core.a
212+
HINTS ${MKLROOT} $ENV{MKLROOT}/lib
213+
)
214+
find_library(GOMP libgomp.a HINTS /usr/lib/gcc/x86_64-linux-gnu/8/)
215+
find_library(M NAMES m)
216+
217+
# Openblas
218+
find_library(LAPACK liblapack.a)
219+
find_library(LAPACKE liblapacke.a)
220+
find_library(OPENBLAS libopenblas.a)
221+
222+
if (MKL AND MKL_GNU_THREAD AND MKL_CORE)
223+
message("Compiling with Intel MKL")
224+
target_include_directories(remeta PRIVATE ${MKL_INCLUDE})
225+
message("\t${MKL}")
226+
message("\t${MKL_GNU_THREAD}")
227+
message("\t${MKL_CORE}")
228+
target_link_libraries(remeta PRIVATE
229+
"-Wl,--start-group"
230+
${MKL} ${MKL_GNU_THREAD} ${MKL_CORE}
231+
"-Wl,--end-group"
232+
-lgomp
233+
${M}
234+
-ldl)
235+
#set(MKL_LINK static)
236+
find_package(MKL CONFIG PATHS ${MKLROOT} $ENV{MKLROOT}} QUIET)
237+
target_include_directories(remeta PRIVATE ${MKL_INCLUDE})
238+
target_compile_definitions(remeta PUBLIC "-DMKL_ILP64 -DWITH_MKL -DEIGEN_USE_BLAS -DEIGEN_USE_LAPACKE")
239+
elseif (LAPACK AND LAPACKE AND OPENBLAS)
240+
message("Compiling with OpenBLAS")
241+
message("\t${LAPACK}")
242+
message("\t${LAPACKE}")
243+
message("\t${OPENBLAS}")
244+
set(BLAS_LIBS ${LAPACK} ${LAPACKE} ${OPENBLAS})
245+
246+
target_link_libraries(remeta PUBLIC ${BLAS_LIBS})
247+
target_compile_definitions(remeta PUBLIC "-DWITH_OPENBLAS -DEIGEN_USE_BLAS -DEIGEN_USE_LAPACKE")
248+
else()
249+
message("Missing libraries for Intel MKL and OpenBLAS")
250+
message("\tLAPACK ${LAPACK}")
251+
message("\tLAPACKE ${LAPACKE}")
252+
message("\tOPENBLAS ${OPENBLAS}")
253+
message("\tMKL ${MKL}")
254+
message("\tMKL_GNU_THREAD ${MKL_GNU_THREAD}")
255+
message("\tMKL_CORE ${MKL_CORE}")
256+
endif()

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2024 Tyler Joseph, Joelle Mbatchou & Jonathan Marchini
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
**remeta** is a collection of C++ programs for meta-analysis of single variants and gene-based tests using summary statistics from [**regenie**](https://rgcgithub.github.io/regenie/).
2+
3+
Documentation for **remeta** can be found [here](https://rgcgithub.github.io/remeta/)

VERSION

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0.7.0

docker/remeta.dockerfile

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
FROM ubuntu:22.04 as builder
2+
3+
ENV CMAKE_VERSION 3.10
4+
ENV CMAKE_VERSION_PATCH 0
5+
ENV HTSLIB_VERSION 1.20
6+
ENV TMP_DIR /tmp
7+
8+
COPY . ${TMP_DIR}/remeta
9+
10+
ADD http://cmake.org/files/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.${CMAKE_VERSION_PATCH}-Linux-x86_64.sh cmake_install.sh
11+
ADD https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB intel_key.PUB
12+
13+
ARG DEBIAN_FRONTEND=noninteractive
14+
ENV TZ=Etc/UTC
15+
16+
RUN apt-get update \
17+
&& apt-get install -y --no-install-recommends \
18+
g++ \
19+
make \
20+
gnupg \
21+
gpg-agent \
22+
wget \
23+
bzip2 \
24+
apt-transport-https \
25+
ca-certificates \
26+
git-all \
27+
zlib1g-dev \
28+
libboost-all-dev \
29+
libz-dev \
30+
libbz2-dev \
31+
liblzma-dev \
32+
libcurl4-openssl-dev \
33+
libssl-dev \
34+
libgomp1 \
35+
libdeflate-dev \
36+
&& sh -c 'cat intel_key.PUB | gpg --dearmor | tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null' \
37+
&& sh -c 'echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list' \
38+
&& apt-get update \
39+
&& apt-get install -y --no-install-recommends intel-oneapi-mkl-devel \
40+
&& . /opt/intel/oneapi/setvars.sh \
41+
&& echo "MKL_THREADING_LAYER=GNU" >> /etc/environment \
42+
&& sh cmake_install.sh --prefix=/usr/local --skip-license --exclude-subdir \
43+
&& mkdir -p $TMP_DIR \
44+
&& wget -q --no-check-certificate https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.bz2 \
45+
&& tar -xf eigen-3.4.0.tar.bz2 -C /usr/local/lib \
46+
&& rm eigen-3.4.0.tar.bz2 \
47+
&& wget -q --no-check-certificate https://github.com/samtools/htslib/releases/download/$HTSLIB_VERSION/htslib-$HTSLIB_VERSION.tar.bz2 \
48+
&& tar -xf htslib-$HTSLIB_VERSION.tar.bz2 -C $TMP_DIR \
49+
&& rm htslib-$HTSLIB_VERSION.tar.bz2 \
50+
&& cd $TMP_DIR/htslib-$HTSLIB_VERSION/ \
51+
&& ./configure \
52+
&& make \
53+
&& make install \
54+
&& cp tabix /usr/local/bin/tabix \
55+
&& cd $TMP_DIR/remeta \
56+
&& rm -f CMakeCache.txt \
57+
&& cmake -D EIGEN_PATH=/usr/local/lib/eigen-3.4.0 \
58+
-D CMAKE_CXX_COMPILER=g++ \
59+
-D MKLROOT=${MKLROOT} \
60+
. \
61+
&& make remeta \
62+
&& cp remeta /usr/local/bin/remeta \
63+
&& cd \
64+
&& rm -rf $TMP_DIR
65+
66+
FROM ubuntu:22.04
67+
68+
ARG DEBIAN_FRONTEND=noninteractive
69+
ENV TZ=Etc/UTC
70+
71+
RUN apt-get update \
72+
&& apt-get install -y --no-install-recommends \
73+
g++ \
74+
make \
75+
gnupg \
76+
wget \
77+
apt-transport-https \
78+
ca-certificates \
79+
git-all \
80+
zlib1g-dev \
81+
libboost-all-dev \
82+
libz-dev \
83+
libbz2-dev \
84+
liblzma-dev \
85+
libcurl4-openssl-dev \
86+
libssl-dev \
87+
libgomp1 \
88+
libdeflate-dev
89+
90+
COPY --from=builder /usr/local/bin/remeta /usr/local/bin/
91+
COPY --from=builder /usr/local/bin/tabix /usr/local/bin/

docs/cinder/404.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{% extends "base.html" %}
2+
3+
{% block content %}
4+
5+
<div class="row-fluid">
6+
<div id="main-content" class="span12">
7+
<h1 id="404-page-not-found" style="text-align: center">404</h1>
8+
<p style="text-align: center"><strong>Page not found</strong></p>
9+
<p style="text-align: center"><a href="{{ base_url }}">Home</a></p>
10+
</div>
11+
</div>
12+
13+
{% endblock %}

docs/cinder/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)