From fe17b91fac9382b9745d88a3fff4ef958ac98867 Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 16 Jun 2025 19:50:25 +0800 Subject: [PATCH 1/4] Add lumpy docker image. --- HPC/image-list.yml | 1 + HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile | 26 +++++++ HPC/lumpy/0.3.1/24.03-lts-sp1/lumpy.patch | 63 +++++++++++++++++ HPC/lumpy/README.md | 79 ++++++++++++++++++++++ HPC/lumpy/doc/image-info.yml | 75 ++++++++++++++++++++ HPC/lumpy/doc/picture/logo.png | Bin 0 -> 76193 bytes HPC/lumpy/meta.yml | 2 + 7 files changed, 246 insertions(+) create mode 100644 HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile create mode 100644 HPC/lumpy/0.3.1/24.03-lts-sp1/lumpy.patch create mode 100644 HPC/lumpy/README.md create mode 100644 HPC/lumpy/doc/image-info.yml create mode 100644 HPC/lumpy/doc/picture/logo.png create mode 100644 HPC/lumpy/meta.yml diff --git a/HPC/image-list.yml b/HPC/image-list.yml index 9c689fce..2b6995d5 100644 --- a/HPC/image-list.yml +++ b/HPC/image-list.yml @@ -12,3 +12,4 @@ images: mne: mne nemo: nemo lammps: lammps + lumpy: lumpy diff --git a/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile b/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile new file mode 100644 index 00000000..02320edd --- /dev/null +++ b/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile @@ -0,0 +1,26 @@ +ARG BASE=openeuler/openeuler:24.03-lts-sp1 +FROM ${BASE} + +ARG VERSION=0.3.1 + +RUN yum install -y git make gcc g++ clang automake zlib-devel libcurl-devel openssl-devel && \ + yum clean all + +WORKDIR /opt/ +# install required autoconf version +RUN rpm -e --nodeps autoconf && \ + curl -O -L http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz && \ + tar -xzf autoconf-2.69.tar.gz && rm -rf autoconf-2.69.tar.gz && \ + cd autoconf-2.69 && \ + ./configure && \ + make && make install + +COPY lumpy.patch /opt/ +RUN git clone --recursive -b v${VERSION} https://github.com/arq5x/lumpy-sv.git && \ + cd /opt/lumpy-sv/lib/htslib/ && \ + autoreconf -i && ./configure --disable-bz2 --disable-lzma --enable-libcurl && \ + make && make install && \ + cd /opt/lumpy-sv && \ + mv /opt/lumpy.patch ./ && \ + git apply lumpy.patch && \ + make && cp bin/* /usr/local/bin/ diff --git a/HPC/lumpy/0.3.1/24.03-lts-sp1/lumpy.patch b/HPC/lumpy/0.3.1/24.03-lts-sp1/lumpy.patch new file mode 100644 index 00000000..e9ca498f --- /dev/null +++ b/HPC/lumpy/0.3.1/24.03-lts-sp1/lumpy.patch @@ -0,0 +1,63 @@ +diff --git a/Makefile b/Makefile +index 9b206fc..8b94c94 100644 +--- a/Makefile ++++ b/Makefile +@@ -64,17 +64,17 @@ lumpy: + echo ""; \ + done + +-lumpy_filter: htslib ++lumpy_filter: + [ -d $(BIN_DIR) ] || mkdir -p $(BIN_DIR) + $(MAKE) --no-print-directory -C src/filter/ + cp src/filter/lumpy_filter $(BIN_DIR) + + +-htslib: +- $(shell cd lib/htslib && autoreconf) +- cd lib/htslib && \ +- ./configure --disable-bz2 --disable-lzma --enable-libcurl +- CFLAGS="$(CFLAGS) -DBGZF" $(MAKE) -C lib/htslib --no-print-directory CFLAGS="-DBGZF_MT" ++#htslib: ++# cd lib/htslib && autoreconf ++# cd lib/htslib && \ ++# ./configure --disable-bz2 --disable-lzma --enable-libcurl ++# CFLAGS="$(CFLAGS) -DBGZF" $(MAKE) -C lib/htslib --no-print-directory CFLAGS="-DBGZF_MT" + + lumpyexpress: + [ -d $(BIN_DIR) ] || mkdir -p $(BIN_DIR) +diff --git a/src/utils/BamTools/src/api/algorithms/Sort.h b/src/utils/BamTools/src/api/algorithms/Sort.h +index 32902e1..754df63 100644 +--- a/src/utils/BamTools/src/api/algorithms/Sort.h ++++ b/src/utils/BamTools/src/api/algorithms/Sort.h +@@ -76,7 +76,7 @@ struct API_EXPORT Sort { + { } + + // comparison function +- bool operator()(const BamTools::BamAlignment& lhs, const BamTools::BamAlignment& rhs) { ++ bool operator()(const BamTools::BamAlignment& lhs, const BamTools::BamAlignment& rhs) const { + return sort_helper(m_order, lhs.Name, rhs.Name); + } + +@@ -112,7 +112,7 @@ struct API_EXPORT Sort { + { } + + // comparison function +- bool operator()(const BamTools::BamAlignment& lhs, const BamTools::BamAlignment& rhs) { ++ bool operator()(const BamTools::BamAlignment& lhs, const BamTools::BamAlignment& rhs) const { + + // force unmapped aligmnents to end + if ( lhs.RefID == -1 ) return false; +diff --git a/src/utils/BamTools/src/api/internal/bam/BamMultiMerger_p.h b/src/utils/BamTools/src/api/internal/bam/BamMultiMerger_p.h +index 3000097..ceac8ed 100644 +--- a/src/utils/BamTools/src/api/internal/bam/BamMultiMerger_p.h ++++ b/src/utils/BamTools/src/api/internal/bam/BamMultiMerger_p.h +@@ -61,7 +61,7 @@ struct MergeItemSorter : public std::binary_function + : m_comp(comp) + { } + +- bool operator()(const MergeItem& lhs, const MergeItem& rhs) { ++ bool operator()(const MergeItem& lhs, const MergeItem& rhs) const { + const BamAlignment& l = *lhs.Alignment; + const BamAlignment& r = *rhs.Alignment; + return m_comp(l,r); diff --git a/HPC/lumpy/README.md b/HPC/lumpy/README.md new file mode 100644 index 00000000..2087cff1 --- /dev/null +++ b/HPC/lumpy/README.md @@ -0,0 +1,79 @@ +# Quick reference + +- The official lumpy-sv container image. + +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). + +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). +# lumpy-sv | openEuler +Current lumpy-sv docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. + +lumpy-sv is a general probabilistic framework for structural variant discovery. + +Learn more on [lumpy-sv website](https://github.com/arq5x/lumpy-sv). + + +# Supported tags and respective Dockerfile links +The tag of each lumpy-sv container image is consist of the version of lumpy-sv and the version of basic image. The details are as follows + +| Tags | Currently | Architectures| +|------|-----------|---------------| +|[0.3.1-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/lumpy-sv/0.3.1/24.03-lts-sp1/Dockerfile)| lumpy-sv 0.3.1 on openEuler 24.03-LTS-SP1 | amd64, arm64 | + + +# Usage +- Pull the `openeuler/lumpy-sv` image from `hub.docker.com` + ``` + docker pull openeuler/lumpy-sv:{Tag} + ``` +- Start a `lumpy-sv` instance + ``` + docker run -it --name my-lumpy-sv openeuler/lumpy-sv:{Tag} + ``` + + Now, you can use lumpy by your requirements. + + Flexible and customizable breakpoint detection for advanced users. + ``` + usage: lumpy [options] + ``` + **Options** + ``` + -g Genome file (defines chromosome order) + -e Show evidence for each call + -w File read windows size (default 1000000) + -mw minimum weight across all samples for a call + -msw minimum per-sample weight for a call + -tt trim threshold + -x exclude file bed file + -t temp file prefix, must be to a writeable directory + -P output probability curve for each variant + -b output as BEDPE instead of VCF + + -sr bam_file:, + id:, + back_distance:, + min_mapping_threshold:, + weight:, + min_clip:, + read_group: + + -pe bam_file:, + id:, + histo_file:, + mean:, + stdev:, + read_length:, + min_non_overlap:, + discordant_z:, + back_distance:, + min_mapping_threshold:, + weight:, + read_group: + + -bedpe bedpe_file:, + id:, + weight: + ``` +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/HPC/lumpy/doc/image-info.yml b/HPC/lumpy/doc/image-info.yml new file mode 100644 index 00000000..a58e06ec --- /dev/null +++ b/HPC/lumpy/doc/image-info.yml @@ -0,0 +1,75 @@ +name: lumpy-sv +category: hpc +description: lumpy-sv是一个发现结构变异的概率框架。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + lumpy-sv镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tags | Currently | Architectures| + |------|-----------|---------------| + |[0.3.1-oe2403sp1](https://gitee.com/openeuler/openeuler-docker-images/blob/master/HPC/lumpy-sv/0.3.1/24.03-lts-sp1/Dockerfile)| lumpy-sv 0.3.1 on openEuler 24.03-LTS-SP1 | amd64, arm64 | +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/lumpy-sv:{Tag} + ``` +usage: | + - 拉取镜像 + + ``` + docker pull openeuler/lumpy-sv:{Tag} + ``` + 用户可根据自身需求选择对应版本的{Tag}、容器启动的选项。 + + - 运行容器 + + ``` + docker run -it --name my-lumpy-sv openeuler/lumpy-sv:{Tag} + ``` + 使用`lumpy --help`查看具体功能: + ``` + -g Genome file (defines chromosome order) + -e Show evidence for each call + -w File read windows size (default 1000000) + -mw minimum weight across all samples for a call + -msw minimum per-sample weight for a call + -tt trim threshold + -x exclude file bed file + -t temp file prefix, must be to a writeable directory + -P output probability curve for each variant + -b output as BEDPE instead of VCF + + -sr bam_file:, + id:, + back_distance:, + min_mapping_threshold:, + weight:, + min_clip:, + read_group: + + -pe bam_file:, + id:, + histo_file:, + mean:, + stdev:, + read_length:, + min_non_overlap:, + discordant_z:, + back_distance:, + min_mapping_threshold:, + weight:, + read_group: + + -bedpe bedpe_file:, + id:, + weight: + ``` +license: N/A +similar_packages: + - N/A +dependency: + - htslib diff --git a/HPC/lumpy/doc/picture/logo.png b/HPC/lumpy/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..761cf5b58ffe2f8d6ecd5130d247b639eaf1483e GIT binary patch literal 76193 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 literal 0 HcmV?d00001 diff --git a/HPC/lumpy/meta.yml b/HPC/lumpy/meta.yml new file mode 100644 index 00000000..683bf0c4 --- /dev/null +++ b/HPC/lumpy/meta.yml @@ -0,0 +1,2 @@ +0.3.1-oe2403sp1: + path: 0.3.1/24.03-lts-sp1/Dockerfile \ No newline at end of file -- Gitee From 2304d7ded85df2fae085dca38e478cf105dd777e Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 16 Jun 2025 20:44:12 +0800 Subject: [PATCH 2/4] fix url --- HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile b/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile index 02320edd..2c729727 100644 --- a/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile +++ b/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile @@ -9,7 +9,7 @@ RUN yum install -y git make gcc g++ clang automake zlib-devel libcurl-devel open WORKDIR /opt/ # install required autoconf version RUN rpm -e --nodeps autoconf && \ - curl -O -L http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz && \ + curl -O -L https://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \ tar -xzf autoconf-2.69.tar.gz && rm -rf autoconf-2.69.tar.gz && \ cd autoconf-2.69 && \ ./configure && \ -- Gitee From 1398d6ea6a657b65e273fbd42580c54e07ed1253 Mon Sep 17 00:00:00 2001 From: wjunLu Date: Mon, 16 Jun 2025 20:50:45 +0800 Subject: [PATCH 3/4] fix --- HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile b/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile index 2c729727..1f4d8a6d 100644 --- a/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile +++ b/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile @@ -3,13 +3,13 @@ FROM ${BASE} ARG VERSION=0.3.1 -RUN yum install -y git make gcc g++ clang automake zlib-devel libcurl-devel openssl-devel && \ +RUN yum install -y git make gcc g++ clang automake zlib-devel libcurl-devel openssl-devel wget && \ yum clean all WORKDIR /opt/ # install required autoconf version RUN rpm -e --nodeps autoconf && \ - curl -O -L https://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \ + wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \ tar -xzf autoconf-2.69.tar.gz && rm -rf autoconf-2.69.tar.gz && \ cd autoconf-2.69 && \ ./configure && \ -- Gitee From 9c49abfa0196990d177af75855d6a9bd12cc5ca3 Mon Sep 17 00:00:00 2001 From: wjunLu Date: Tue, 17 Jun 2025 14:13:01 +0800 Subject: [PATCH 4/4] fix autoconf url --- HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile b/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile index 1f4d8a6d..99c43f89 100644 --- a/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile +++ b/HPC/lumpy/0.3.1/24.03-lts-sp1/Dockerfile @@ -9,7 +9,7 @@ RUN yum install -y git make gcc g++ clang automake zlib-devel libcurl-devel open WORKDIR /opt/ # install required autoconf version RUN rpm -e --nodeps autoconf && \ - wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \ + wget https://mirrors.aliyun.com/gnu/autoconf/autoconf-2.69.tar.gz && \ tar -xzf autoconf-2.69.tar.gz && rm -rf autoconf-2.69.tar.gz && \ cd autoconf-2.69 && \ ./configure && \ -- Gitee