From bbc57f3e84ba73eec9d46c00eb97aff329554c53 Mon Sep 17 00:00:00 2001 From: fgvieira <1151762+fgvieira@users.noreply.github.com> Date: Tue, 7 May 2024 15:15:37 +0200 Subject: [PATCH 1/4] Add samtools markdup wrapper --- .../markdup/environment.linux-64.pin.txt | 42 ++++++++++++++++++ bio/samtools/markdup/environment.yaml | 7 +++ bio/samtools/markdup/meta.yaml | 12 +++++ bio/samtools/markdup/test/Snakefile | 13 ++++++ bio/samtools/markdup/test/a.bam | Bin 0 -> 65521 bytes bio/samtools/markdup/wrapper.py | 23 ++++++++++ test.py | 8 ++++ 7 files changed, 105 insertions(+) create mode 100644 bio/samtools/markdup/environment.linux-64.pin.txt create mode 100644 bio/samtools/markdup/environment.yaml create mode 100644 bio/samtools/markdup/meta.yaml create mode 100644 bio/samtools/markdup/test/Snakefile create mode 100644 bio/samtools/markdup/test/a.bam create mode 100644 bio/samtools/markdup/wrapper.py diff --git a/bio/samtools/markdup/environment.linux-64.pin.txt b/bio/samtools/markdup/environment.linux-64.pin.txt new file mode 100644 index 0000000000..3dde3547a5 --- /dev/null +++ b/bio/samtools/markdup/environment.linux-64.pin.txt @@ -0,0 +1,42 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.2.2-hbcca054_0.conda#2f4327a1cbe7f022401b236e915a5fef +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.conda#7aca3059a1729aa76c597603f10b0dd3 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_5.conda#f6f6600d18a4047b54f803cf708b868a +https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_5.conda#d211c42b9ce49aee3734fdc828731689 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_5.conda#d4ff227c46917d3b4565302a2bbb276b +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.28.1-hd590300_0.conda#dcde58ff9a1f30b0037a2315d1846d1f +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.conda#f36c115f1ee199da648e0597ec2047ad +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4.20240210-h59595ed_0.conda#97da8860a0da5413c7c98a3b3838a645 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.1-hd590300_1.conda#9d731343cff6ee2e5a25c4a091bf8e2a +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.45.3-h2797004_0.conda#b3316cbe90249da4f8e84cd66e1cc55b +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda#04b88013080254850d6c01ed54810589 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 +https://conda.anaconda.org/conda-forge/linux-64/python-3.12.3-hab00c5b_0_cpython.conda#2540b74d304f71d3e89c81209db4db84 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.7.1-hca28451_0.conda#755c7f876815003337d2c61ff5d047e5 +https://conda.anaconda.org/conda-forge/noarch/setuptools-69.5.1-pyhd8ed1ab_0.conda#7462280d81f639363e6e63c81276bd9e +https://conda.anaconda.org/bioconda/noarch/snakemake-wrapper-utils-0.6.2-pyhdfd78af_0.tar.bz2#fd8759bbd04116eace828c4fab906096 +https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_1.conda#0b5293a157c2b5cd513dd1b03d8d3aae +https://conda.anaconda.org/bioconda/linux-64/htslib-1.20-h81da01d_0.tar.bz2#1084947eefd2bbe9c1f84ca24061a9d5 +https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda#f586ac1e56c8638b64f9c8122a7b8a67 +https://conda.anaconda.org/bioconda/linux-64/samtools-1.20-h50ea8bc_0.tar.bz2#7b3b1d0feea64e7e211ae24e7cd126d8 diff --git a/bio/samtools/markdup/environment.yaml b/bio/samtools/markdup/environment.yaml new file mode 100644 index 0000000000..3defe4e72c --- /dev/null +++ b/bio/samtools/markdup/environment.yaml @@ -0,0 +1,7 @@ +channels: + - conda-forge + - bioconda + - nodefaults +dependencies: + - samtools =1.20 + - snakemake-wrapper-utils =0.6.2 diff --git a/bio/samtools/markdup/meta.yaml b/bio/samtools/markdup/meta.yaml new file mode 100644 index 0000000000..bd25f26103 --- /dev/null +++ b/bio/samtools/markdup/meta.yaml @@ -0,0 +1,12 @@ +name: samtools markdup +description: Mark duplicate alignments in a coordinate sorted file . +url: http://www.htslib.org/doc/samtools-markdup.html +authors: + - Filipe G. Vieira +input: + - SAM/BAM/CRAM file +output: + - SAM/BAM/CRAM file + - SAM/BAM/CRAM index file (optional) +params: + - extra: additional program arguments (not `-@/--threads`, `--write-index`, `-m`, `-o` or `-O/--output-fmt`). diff --git a/bio/samtools/markdup/test/Snakefile b/bio/samtools/markdup/test/Snakefile new file mode 100644 index 0000000000..930e352d31 --- /dev/null +++ b/bio/samtools/markdup/test/Snakefile @@ -0,0 +1,13 @@ +rule samtools_markdup: + input: + aln="{sample}.bam", + output: + bam="{sample}.markdup.bam", + idx="{sample}.markdup.bam.csi", + log: + "{sample}.markdup.log", + params: + extra="-c --no-PG", + threads: 2 + wrapper: + "master/bio/samtools/markdup" diff --git a/bio/samtools/markdup/test/a.bam b/bio/samtools/markdup/test/a.bam new file mode 100644 index 0000000000000000000000000000000000000000..622f848271205c370a51e6388d97f77810d65836 GIT binary patch literal 65521 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 a00000{{{d;LjnLB00RI30000000003<#^)& literal 0 HcmV?d00001 diff --git a/bio/samtools/markdup/wrapper.py b/bio/samtools/markdup/wrapper.py new file mode 100644 index 0000000000..0fadcc653e --- /dev/null +++ b/bio/samtools/markdup/wrapper.py @@ -0,0 +1,23 @@ +__author__ = "Filipe G. Vieira" +__copyright__ = "Copyright 2024, Filipe G. Vieira" +__license__ = "MIT" + + +import tempfile +from snakemake.shell import shell +from snakemake_wrapper_utils.samtools import get_samtools_opts + +samtools_opts = get_samtools_opts(snakemake, parse_reference=False) +extra = snakemake.params.get("extra", "") +log = snakemake.log_fmt_shell(stdout=False, stderr=True) + +metrics = snakemake.output.get("metrics", "") +if metrics: + metrics = f"-f {metrics}" + + +with tempfile.TemporaryDirectory() as tmpdir: + tmp_prefix = Path(tmpdir) / "samtools_markdup" + shell( + "samtools markdup {samtools_opts} {extra} -T {tmp_prefix} {metrics} {snakemake.input[0]} {log}" + ) diff --git a/test.py b/test.py index e4b7709e6c..2491ba2314 100644 --- a/test.py +++ b/test.py @@ -4059,6 +4059,14 @@ def test_samtools_mpileup(): ) +@skip_if_not_modified +def test_samtools_mpileup(): + run( + "bio/samtools/markdup", + ["snakemake", "--cores", "1", "a.markdup.bam", "--use-conda", "-F"], + ) + + @skip_if_not_modified def test_samtools_stats(): run( From 4e70c3518b4665ef77f5a05b6ef2de69557a701e Mon Sep 17 00:00:00 2001 From: fgvieira <1151762+fgvieira@users.noreply.github.com> Date: Tue, 7 May 2024 15:19:46 +0200 Subject: [PATCH 2/4] Fix arg name --- bio/samtools/calmd/meta.yaml | 11 ++++++++--- bio/samtools/markdup/meta.yaml | 2 +- bio/samtools/markdup/wrapper.py | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/bio/samtools/calmd/meta.yaml b/bio/samtools/calmd/meta.yaml index 120aa10429..b7f708dcc8 100644 --- a/bio/samtools/calmd/meta.yaml +++ b/bio/samtools/calmd/meta.yaml @@ -1,7 +1,12 @@ name: samtools calmd description: Calculates MD and NM tags. +url: http://www.htslib.org/doc/samtools-calmd.html authors: - Filipe G. Vieira -notes: | - * The `extra` param allows for additional program arguments (not `-@/--threads` or `-O/--output-fmt`). - * For more information see, http://www.htslib.org/doc/samtools-calmd.html +input: + - SAM/BAM/CRAM file +output: + - SAM/BAM/CRAM file + - SAM/BAM/CRAM index file (optional) +params: + - extra: additional program arguments (not `-@/--threads`, `--write-index`, `-m`, `-o` or `-O/--output-fmt`). diff --git a/bio/samtools/markdup/meta.yaml b/bio/samtools/markdup/meta.yaml index bd25f26103..8365a417d2 100644 --- a/bio/samtools/markdup/meta.yaml +++ b/bio/samtools/markdup/meta.yaml @@ -9,4 +9,4 @@ output: - SAM/BAM/CRAM file - SAM/BAM/CRAM index file (optional) params: - - extra: additional program arguments (not `-@/--threads`, `--write-index`, `-m`, `-o` or `-O/--output-fmt`). + - extra: additional program arguments (not `-@/--threads`, `--write-index`, `-m`, `-T`, `-f`, `-o` or `-O/--output-fmt`). diff --git a/bio/samtools/markdup/wrapper.py b/bio/samtools/markdup/wrapper.py index 0fadcc653e..45f14b4f43 100644 --- a/bio/samtools/markdup/wrapper.py +++ b/bio/samtools/markdup/wrapper.py @@ -7,7 +7,7 @@ from snakemake.shell import shell from snakemake_wrapper_utils.samtools import get_samtools_opts -samtools_opts = get_samtools_opts(snakemake, parse_reference=False) +samtools_opts = get_samtools_opts(snakemake, parse_ref=False) extra = snakemake.params.get("extra", "") log = snakemake.log_fmt_shell(stdout=False, stderr=True) From 38284c61e25455a2204dc9267dcdba302bcbd001 Mon Sep 17 00:00:00 2001 From: fgvieira <1151762+fgvieira@users.noreply.github.com> Date: Tue, 7 May 2024 15:22:47 +0200 Subject: [PATCH 3/4] Add missing import --- bio/samtools/markdup/wrapper.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bio/samtools/markdup/wrapper.py b/bio/samtools/markdup/wrapper.py index 45f14b4f43..38bb18ea4c 100644 --- a/bio/samtools/markdup/wrapper.py +++ b/bio/samtools/markdup/wrapper.py @@ -4,6 +4,7 @@ import tempfile +from pathlib import Path from snakemake.shell import shell from snakemake_wrapper_utils.samtools import get_samtools_opts From b7c4969bee03d3ec1b5247784cd1b65aa5b5b7bd Mon Sep 17 00:00:00 2001 From: fgvieira <1151762+fgvieira@users.noreply.github.com> Date: Tue, 7 May 2024 15:27:51 +0200 Subject: [PATCH 4/4] Fix output file --- bio/samtools/markdup/wrapper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bio/samtools/markdup/wrapper.py b/bio/samtools/markdup/wrapper.py index 38bb18ea4c..ef6443b8d6 100644 --- a/bio/samtools/markdup/wrapper.py +++ b/bio/samtools/markdup/wrapper.py @@ -8,7 +8,7 @@ from snakemake.shell import shell from snakemake_wrapper_utils.samtools import get_samtools_opts -samtools_opts = get_samtools_opts(snakemake, parse_ref=False) +samtools_opts = get_samtools_opts(snakemake, parse_output=False) extra = snakemake.params.get("extra", "") log = snakemake.log_fmt_shell(stdout=False, stderr=True) @@ -20,5 +20,5 @@ with tempfile.TemporaryDirectory() as tmpdir: tmp_prefix = Path(tmpdir) / "samtools_markdup" shell( - "samtools markdup {samtools_opts} {extra} -T {tmp_prefix} {metrics} {snakemake.input[0]} {log}" + "samtools markdup {samtools_opts} {extra} -T {tmp_prefix} {metrics} {snakemake.input[0]} {snakemake.output[0]} {log}" )