From 2433679cae4a1762db0406e37a6a2d2a9663b235 Mon Sep 17 00:00:00 2001 From: Hendrik Cannoodt Date: Wed, 3 Apr 2024 17:12:19 +0200 Subject: [PATCH 1/2] Fix missing slash in path construction (#34) * Fix missing slash in path construction * add one more --------- Co-authored-by: Robrecht Cannoodt --- src/gffread/test.sh | 8 ++++---- src/samtools/samtools_flagstat/test.sh | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gffread/test.sh b/src/gffread/test.sh index 6d38012b..326fce50 100755 --- a/src/gffread/test.sh +++ b/src/gffread/test.sh @@ -5,9 +5,9 @@ set -e -test_output_dir="${meta_resources_dir}test_data/test_output" -test_dir="${meta_resources_dir}test_data" -expected_output_dir="${meta_resources_dir}test_data/output" +test_output_dir="${meta_resources_dir}/test_data/test_output" +test_dir="${meta_resources_dir}/test_data" +expected_output_dir="${meta_resources_dir}/test_data/output" mkdir -p "$test_output_dir" @@ -108,4 +108,4 @@ rm -r "$test_output_dir" echo "> All tests successful" -exit 0 \ No newline at end of file +exit 0 diff --git a/src/samtools/samtools_flagstat/test.sh b/src/samtools/samtools_flagstat/test.sh index ec5a5b07..647c64af 100644 --- a/src/samtools/samtools_flagstat/test.sh +++ b/src/samtools/samtools_flagstat/test.sh @@ -1,6 +1,6 @@ #!/bin/bash -test_dir="${meta_resources_dir}test_data" +test_dir="${meta_resources_dir}/test_data" echo ">>> Testing $meta_functionality_name" "$meta_executable" \ From 1200bc37611974a095b53c130cb34dc3286a931f Mon Sep 17 00:00:00 2001 From: emmarousseau Date: Wed, 3 Apr 2024 17:12:51 +0200 Subject: [PATCH 2/2] Samtools idxstats component (#32) * idxstats component * Update samtools version * Apply suggestions for PR * Update src/samtools/samtools_idxstats/test.sh Add a slash to path to test data Co-authored-by: Robrecht Cannoodt --------- Co-authored-by: Robrecht Cannoodt --- CHANGELOG.md | 2 +- .../samtools_idxstats/config.vsh.yaml | 53 ++++++++++++++++++ src/samtools/samtools_idxstats/help.txt | 12 ++++ src/samtools/samtools_idxstats/script.sh | 8 +++ src/samtools/samtools_idxstats/test.sh | 49 ++++++++++++++++ .../samtools_idxstats/test_data/a.sorted.bam | Bin 0 -> 209 bytes .../test_data/a.sorted.bam.bai | Bin 0 -> 96 bytes .../test_data/a_ref.sorted.idxstats | 2 + .../samtools_idxstats/test_data/script.sh | 14 +++++ .../test_data/test.paired_end.sorted.bam | Bin 0 -> 19725 bytes .../test_data/test.paired_end.sorted.bam.bai | Bin 0 -> 128 bytes .../test_ref.paired_end.sorted.idxstats | 2 + 12 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 src/samtools/samtools_idxstats/config.vsh.yaml create mode 100644 src/samtools/samtools_idxstats/help.txt create mode 100644 src/samtools/samtools_idxstats/script.sh create mode 100644 src/samtools/samtools_idxstats/test.sh create mode 100644 src/samtools/samtools_idxstats/test_data/a.sorted.bam create mode 100644 src/samtools/samtools_idxstats/test_data/a.sorted.bam.bai create mode 100644 src/samtools/samtools_idxstats/test_data/a_ref.sorted.idxstats create mode 100755 src/samtools/samtools_idxstats/test_data/script.sh create mode 100644 src/samtools/samtools_idxstats/test_data/test.paired_end.sorted.bam create mode 100644 src/samtools/samtools_idxstats/test_data/test.paired_end.sorted.bam.bai create mode 100644 src/samtools/samtools_idxstats/test_data/test_ref.paired_end.sorted.idxstats diff --git a/CHANGELOG.md b/CHANGELOG.md index c3a0a398..4fd7f001 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,7 +37,7 @@ * `samtools`: - `samtools/flagstat`: Counts the number of alignments in SAM/BAM/CRAM files for each FLAG type (PR #31). - + - `samtools/idxstats`: Reports alignment summary statistics for a SAM/BAM/CRAM file (PR #32). ## MAJOR CHANGES diff --git a/src/samtools/samtools_idxstats/config.vsh.yaml b/src/samtools/samtools_idxstats/config.vsh.yaml new file mode 100644 index 00000000..781bd8be --- /dev/null +++ b/src/samtools/samtools_idxstats/config.vsh.yaml @@ -0,0 +1,53 @@ +name: samtools_idxstats +namespace: samtools +description: Reports alignment summary statistics for a BAM file. +keywords: [stats, mapping, counts, chromosome, bam, sam, cram] +links: + homepage: https://www.htslib.org/ + documentation: https://www.htslib.org/doc/samtools-idxstats.html + repository: https://github.com/samtools/samtools +references: + doi: 10.1093/bioinformatics/btp352, 10.1093/gigascience/giab008 +license: MIT/Expat + +argument_groups: + - name: Inputs + arguments: + - name: "--bam" + type: file + description: BAM input file. + - name: "--bai" + type: file + description: BAM index file. + - name: "--fasta" + type: file + description: Reference file the CRAM was created with (optional). + - name: Outputs + arguments: + - name: "--output" + type: file + description: | + File containing samtools stats output in tab-delimited format. + required: true + must_exist: false + example: output.idxstats + +resources: + - type: bash_script + path: script.sh +test_resources: + - type: bash_script + path: test.sh + - type: file + path: test_data +engines: + - type: docker + image: quay.io/biocontainers/samtools:1.19.2--h50ea8bc_1 + setup: + - type: docker + run: | + samtools --version 2>&1 | grep -E '^(samtools|Using htslib)' | \ + sed 's#Using ##;s# \([0-9\.]*\)$#: \1#' > /var/software_versions.txt +runners: +- type: executable +- type: nextflow \ No newline at end of file diff --git a/src/samtools/samtools_idxstats/help.txt b/src/samtools/samtools_idxstats/help.txt new file mode 100644 index 00000000..7b63ab17 --- /dev/null +++ b/src/samtools/samtools_idxstats/help.txt @@ -0,0 +1,12 @@ +``` +samtools idxstats +``` + +Usage: samtools idxstats [options] + --input-fmt-option OPT[=VAL] + Specify a single input file format option in the form + of OPTION or OPTION=VALUE + -@, --threads INT + Number of additional threads to use [0] + --verbosity INT + Set level of verbosity \ No newline at end of file diff --git a/src/samtools/samtools_idxstats/script.sh b/src/samtools/samtools_idxstats/script.sh new file mode 100644 index 00000000..9f8d4af4 --- /dev/null +++ b/src/samtools/samtools_idxstats/script.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +## VIASH START +## VIASH END + +set -e + +samtools idxstats "$par_bam" > "$par_output" \ No newline at end of file diff --git a/src/samtools/samtools_idxstats/test.sh b/src/samtools/samtools_idxstats/test.sh new file mode 100644 index 00000000..1459ec08 --- /dev/null +++ b/src/samtools/samtools_idxstats/test.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +test_dir="${meta_resources_dir}/test_data" +echo ">>> Testing $meta_functionality_name" + +"$meta_executable" \ + --bam "$test_dir/a.sorted.bam" \ + --bai "$test_dir/a.sorted.bam.bai" \ + --output "$test_dir/a.sorted.idxstats" + +echo ">>> Checking whether output exists" +[ ! -f "$test_dir/a.sorted.idxstats" ] && echo "File 'a.sorted.idxstats' does not exist!" && exit 1 + +echo ">>> Checking whether output is non-empty" +[ ! -s "$test_dir/a.sorted.idxstats" ] && echo "File 'a.sorted.idxstats' is empty!" && exit 1 + +echo ">>> Checking whether output is correct" +diff "$test_dir/a.sorted.idxstats" "$test_dir/a_ref.sorted.idxstats" || \ + (echo "Output file a.sorted.idxstats does not match expected output" && exit 1) + +rm "$test_dir/a.sorted.idxstats" + +############################################################################################ + +echo ">>> Testing $meta_functionality_name with singletons in the input" + +"$meta_executable" \ + --bam "$test_dir/test.paired_end.sorted.bam" \ + --bai "$test_dir/test.paired_end.sorted.bam.bai" \ + --output "$test_dir/test.paired_end.sorted.idxstats" + +echo ">>> Checking whether output exists" +[ ! -f "$test_dir/test.paired_end.sorted.idxstats" ] && \ + echo "File 'test.paired_end.sorted.idxstats' does not exist!" && exit 1 + +echo ">>> Checking whether output is non-empty" +[ ! -s "$test_dir/test.paired_end.sorted.idxstats" ] && \ + echo "File 'test.paired_end.sorted.idxstats' is empty!" && exit 1 + +echo ">>> Checking whether output is correct" +diff "$test_dir/test.paired_end.sorted.idxstats" "$test_dir/test_ref.paired_end.sorted.idxstats" || \ + (echo "Output file test.paired_end.sorted.idxstats does not match expected output" && exit 1) + +rm "$test_dir/test.paired_end.sorted.idxstats" + +############################################################################################ + +echo "All tests succeeded!" +exit 0 \ No newline at end of file diff --git a/src/samtools/samtools_idxstats/test_data/a.sorted.bam b/src/samtools/samtools_idxstats/test_data/a.sorted.bam new file mode 100644 index 0000000000000000000000000000000000000000..1c81d7cd59e70b71fce1ed9911445e08d1da7df8 GIT binary patch literal 209 zcmb2|=3rp}f&Xj_PR>jW;S9w^UsA86BqS7kD0s;8d9%?K<7YhIwtJmBukUs8jJJ;G z(;^POCp_OauUhfo%g4<|Mh}u$w9?ofb#bu?DzGxN_C$v`0F9GJGdG68IN5(1qp5~=TtV8sy)7XlJ&Z!4_mw$DOPe8#p dUFfFO@gH)s11qG+dg28RP{p004LQLv#QD literal 0 HcmV?d00001 diff --git a/src/samtools/samtools_idxstats/test_data/a.sorted.bam.bai b/src/samtools/samtools_idxstats/test_data/a.sorted.bam.bai new file mode 100644 index 0000000000000000000000000000000000000000..4f08f5d5e5e01de5042cb8f625c1d26b338c3394 GIT binary patch literal 96 vcmZ>A^kigYU|?VZVoxCk1`wNpAp%S?Fl+_WUXvj5=;CZpRWJ%wFGLgo8^r{K literal 0 HcmV?d00001 diff --git a/src/samtools/samtools_idxstats/test_data/a_ref.sorted.idxstats b/src/samtools/samtools_idxstats/test_data/a_ref.sorted.idxstats new file mode 100644 index 00000000..27862419 --- /dev/null +++ b/src/samtools/samtools_idxstats/test_data/a_ref.sorted.idxstats @@ -0,0 +1,2 @@ +xx 20 6 0 +* 0 0 0 diff --git a/src/samtools/samtools_idxstats/test_data/script.sh b/src/samtools/samtools_idxstats/test_data/script.sh new file mode 100755 index 00000000..0e28a4c6 --- /dev/null +++ b/src/samtools/samtools_idxstats/test_data/script.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# dowload test data from snakemake wrapper +if [ ! -d /tmp/idxstats_source ]; then + git clone --depth 1 --single-branch --branch master https://github.com/snakemake/snakemake-wrappers.git /tmp/idxstats_source +fi + +cp -r /tmp/idxstats_source/bio/samtools/idxstats/test/mapped/* src/samtools/idxstats/test_data +# samtools idxstats a.sorted.bam > a.sorted.idxstats + +# dowload test data from nf-core module +wget https://github.com/nf-core/test-datasets/raw/modules/data/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam +wget https://github.com/nf-core/test-datasets/raw/modules/data/genomics/sarscov2/illumina/bam/test.paired_end.sorted.bam.bai +# samtools idxstats test.paired_end.sorted.bam > test_ref.paired_end.sorted.idxstats \ No newline at end of file diff --git a/src/samtools/samtools_idxstats/test_data/test.paired_end.sorted.bam b/src/samtools/samtools_idxstats/test_data/test.paired_end.sorted.bam new file mode 100644 index 0000000000000000000000000000000000000000..85cccf14b05a885509f1a1a2945ead6370bff9d5 GIT binary patch literal 19725 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 O%>*%#)ga7(C;|ZDbP8+$ literal 0 HcmV?d00001 diff --git a/src/samtools/samtools_idxstats/test_data/test_ref.paired_end.sorted.idxstats b/src/samtools/samtools_idxstats/test_data/test_ref.paired_end.sorted.idxstats new file mode 100644 index 00000000..77bc11b8 --- /dev/null +++ b/src/samtools/samtools_idxstats/test_data/test_ref.paired_end.sorted.idxstats @@ -0,0 +1,2 @@ +MT192765.1 29829 197 3 +* 0 0 0