From ab826041528a92a6e8b326bb4b4432cc00629505 Mon Sep 17 00:00:00 2001 From: tdayris Date: Mon, 21 Sep 2020 09:16:53 +0200 Subject: [PATCH 01/40] [fix] (template): Missing code in wrappers' doc. Error #187 --- docs/generate_docs.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/generate_docs.py b/docs/generate_docs.py index c471d06d2f9..446fe83a9e6 100644 --- a/docs/generate_docs.py +++ b/docs/generate_docs.py @@ -34,10 +34,10 @@ TOOL_TEMPLATE = Template(f.read()) with open(os.path.join(BASE_DIR, "_templates", "wrapper.rst")) as f: - TEMPLATE = Template(f.read()) + TEMPLATE_WRAPPER = Template(f.read()) with open(os.path.join(BASE_DIR, "_templates", "meta_wrapper.rst")) as f: - TEMPLATE = Template(f.read()) + TEMPLATE_META = Template(f.read()) def get_tool_dir(tool): @@ -88,7 +88,7 @@ def render_wrapper(path, target): name = meta["name"].replace(" ", "_") + ".rst" os.makedirs(os.path.dirname(target), exist_ok=True) with open(target, "w") as readme: - rst = TEMPLATE.render( + rst = TEMPLATE_WRAPPER.render( snakefile=snakefile, wrapper=wrapper, wrapper_lang=wrapper_lang, @@ -113,7 +113,7 @@ def render_meta(path, target): with open(os.path.join(path, "test", "Snakefile")) as snakefile: snakefile = textwrap.indent(snakefile.read(), " ").replace("master", TAG) - + wrappers = [] for uw in used_wrappers: wrapper = os.path.join(WRAPPER_DIR, uw, "wrapper.py") @@ -124,11 +124,11 @@ def render_meta(path, target): with open(wrapper) as wrapper: wrapper = textwrap.indent(wrapper.read(), " ") wrappers.append((wrapper, wrapper_lang, uw)) - + name = meta["name"].replace(" ", "_") + ".rst" os.makedirs(os.path.dirname(target), exist_ok=True) with open(target, "w") as readme: - rst = TEMPLATE.render( + rst = TEMPLATE_META.render( snakefile=snakefile, wrappers=wrappers, usedwrappers=used_wrappers, From ac4ac819fee80f7ed27b6b801aed37b76f0a84ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Tue, 11 Oct 2022 17:48:16 +0200 Subject: [PATCH 02/40] perf: update utils/datavzrd/environment.yaml. (#566) --- utils/datavzrd/environment.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/datavzrd/environment.yaml b/utils/datavzrd/environment.yaml index 0c9a1431057..ca8153a60ba 100644 --- a/utils/datavzrd/environment.yaml +++ b/utils/datavzrd/environment.yaml @@ -1,5 +1,5 @@ channels: - - conda-forge - - nodefaults +- conda-forge +- nodefaults dependencies: - - datavzrd =2.0 +- datavzrd =2.3.2 From 88c479c7a645478129de28bd8ce9842cc63bc549 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Tue, 11 Oct 2022 17:48:58 +0200 Subject: [PATCH 03/40] perf: update bio/bcftools/call/environment.yaml. (#567) --- bio/bcftools/call/environment.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bio/bcftools/call/environment.yaml b/bio/bcftools/call/environment.yaml index 538f1a87f1b..d89e6b9cadf 100644 --- a/bio/bcftools/call/environment.yaml +++ b/bio/bcftools/call/environment.yaml @@ -3,5 +3,5 @@ channels: - bioconda - nodefaults dependencies: - - bcftools =1.14 - - snakemake-wrapper-utils =0.4 + - bcftools =1.16 + - snakemake-wrapper-utils =0.5.0 From 8d92bb553869d722a7d1e9dda25c725b74de3450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Tue, 11 Oct 2022 17:49:11 +0200 Subject: [PATCH 04/40] perf: update bio/bcftools/concat/environment.yaml. (#568) --- bio/bcftools/concat/environment.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bio/bcftools/concat/environment.yaml b/bio/bcftools/concat/environment.yaml index 538f1a87f1b..d89e6b9cadf 100644 --- a/bio/bcftools/concat/environment.yaml +++ b/bio/bcftools/concat/environment.yaml @@ -3,5 +3,5 @@ channels: - bioconda - nodefaults dependencies: - - bcftools =1.14 - - snakemake-wrapper-utils =0.4 + - bcftools =1.16 + - snakemake-wrapper-utils =0.5.0 From 1c444dc57592877fed4307de7bbde466d4bc8aeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Tue, 11 Oct 2022 18:53:13 +0200 Subject: [PATCH 05/40] perf: autobump bio/bcftools/index/environment.yaml (#570) * perf: update bio/bcftools/index/environment.yaml. * perf: update bio/bcftools/index/environment.yaml. * perf: update bio/bcftools/index/environment.yaml. --- bio/bcftools/index/environment.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bio/bcftools/index/environment.yaml b/bio/bcftools/index/environment.yaml index 538f1a87f1b..d89e6b9cadf 100644 --- a/bio/bcftools/index/environment.yaml +++ b/bio/bcftools/index/environment.yaml @@ -3,5 +3,5 @@ channels: - bioconda - nodefaults dependencies: - - bcftools =1.14 - - snakemake-wrapper-utils =0.4 + - bcftools =1.16 + - snakemake-wrapper-utils =0.5.0 From 534f834b4267f3d6064625dca8efaa604daaac25 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 09:54:24 +0200 Subject: [PATCH 06/40] chore: release 1.15.1 (#569) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ee4a460036..7e630327cc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +### [1.15.1](https://www.github.com/snakemake/snakemake-wrappers/compare/v1.15.0...v1.15.1) (2022-10-11) + + +### Performance Improvements + +* autobump bio/bcftools/index/environment.yaml ([#570](https://www.github.com/snakemake/snakemake-wrappers/issues/570)) ([bc77e03](https://www.github.com/snakemake/snakemake-wrappers/commit/bc77e037a0a086c1fede8cd54481426001460a13)) +* update bio/bcftools/call/environment.yaml. ([#567](https://www.github.com/snakemake/snakemake-wrappers/issues/567)) ([5c4356a](https://www.github.com/snakemake/snakemake-wrappers/commit/5c4356af4a2bcb288f4fe71169f97151df524d52)) +* update bio/bcftools/concat/environment.yaml. ([#568](https://www.github.com/snakemake/snakemake-wrappers/issues/568)) ([70685f1](https://www.github.com/snakemake/snakemake-wrappers/commit/70685f12db06ffe17f09aff7ecd258bcff27284a)) +* update utils/datavzrd/environment.yaml. ([#566](https://www.github.com/snakemake/snakemake-wrappers/issues/566)) ([a6f4ff8](https://www.github.com/snakemake/snakemake-wrappers/commit/a6f4ff88e1cf9949737de779b0cc8a56d749e374)) + ## [1.15.0](https://www.github.com/snakemake/snakemake-wrappers/compare/v1.14.1...v1.15.0) (2022-10-11) From 7eb277c0f2cfeda2910deddd2d23ccc9791c3e0a Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:08:37 +0200 Subject: [PATCH 07/40] perf: update bio/bgzip/environment.yaml. (#577) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/bgzip/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/bgzip/environment.yaml b/bio/bgzip/environment.yaml index 7eed2f5823b..54ca0cec721 100644 --- a/bio/bgzip/environment.yaml +++ b/bio/bgzip/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - htslib ==1.12 + - htslib =1.16 From 63f8acbba81f926b63a36d6496ee668e60ed5099 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:09:03 +0200 Subject: [PATCH 08/40] perf: update bio/bellerophon/environment.yaml. (#576) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/bellerophon/environment.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bio/bellerophon/environment.yaml b/bio/bellerophon/environment.yaml index 183b281d823..039e9257a30 100644 --- a/bio/bellerophon/environment.yaml +++ b/bio/bellerophon/environment.yaml @@ -4,5 +4,5 @@ channels: - nodefaults dependencies: - bellerophon =1.0 - - samtools =1.15 - - snakemake-wrapper-utils =0.4 + - samtools =1.16.1 + - snakemake-wrapper-utils =0.5.0 From 963bedf2fe0c66fa3241aaf079318d4aa005d5bd Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:16:50 +0200 Subject: [PATCH 09/40] perf: update bio/assembly-stats/environment.yaml. (#575) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/assembly-stats/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/assembly-stats/environment.yaml b/bio/assembly-stats/environment.yaml index b66f0990645..6fc2437545d 100644 --- a/bio/assembly-stats/environment.yaml +++ b/bio/assembly-stats/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - assembly-stats=1.0 + - assembly-stats =1.0.1 From ff74710cd1b7c9299a75cae5e53caf29f7da45dc Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:17:15 +0200 Subject: [PATCH 10/40] perf: update bio/adapterremoval/environment.yaml. (#573) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/adapterremoval/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/adapterremoval/environment.yaml b/bio/adapterremoval/environment.yaml index 103f6d80c8d..90c6cc76188 100644 --- a/bio/adapterremoval/environment.yaml +++ b/bio/adapterremoval/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - adapterremoval =2.3 + - adapterremoval =2.3.3 From bb60c16a434ef1e5ee10e16dfb00f698fcae1933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Wed, 12 Oct 2022 22:43:01 +0200 Subject: [PATCH 11/40] chore: autobump conda envs (#571) * Add autobump action * fix paths * dbg * dbg branch * add checkout * dbg * trigger rerun * entity regex and add label * dbg * Update autobump.yml * Update autobump.yml --- .github/workflows/autobump.yml | 26 ++++++++++++++++++++++++++ .github/workflows/main.yml | 17 ++++++++--------- 2 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/autobump.yml diff --git a/.github/workflows/autobump.yml b/.github/workflows/autobump.yml new file mode 100644 index 00000000000..c283cc31ba7 --- /dev/null +++ b/.github/workflows/autobump.yml @@ -0,0 +1,26 @@ +name: Tests + +# TODO replace by nightly cron job +on: + schedule: + - cron: "0 0 * * 5" + +jobs: + autobump: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: tibdex/github-app-token@v1 + id: generate-token + with: + app_id: ${{ secrets.SNAKEDEPLOY_BOT_APP_ID }} + private_key: ${{ secrets.SNAKEDEPLOY_BOT_PRIVATE_KEY }} + + - name: Update conda envs + uses: snakemake/snakedeploy-github-action@v1 + env: + GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }} + with: + subcommand: update-conda-envs + args: "*/*/environment.yaml */*/*/environment.yaml --create-prs --entity-regex '(?P.+)/environment.yaml' --pr-add-label" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d98c071f643..9bf2756a55f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,9 +5,8 @@ on: branches: - master pull_request: - branches_ignore: [] - schedule: - - cron: '0 0 * * 0' + branches: + - "*" jobs: docs: @@ -37,12 +36,12 @@ jobs: - name: Setup Snakemake environment run: | - # ensure that mamba is happy to write into the cache - sudo chown -R runner:docker /usr/share/miniconda/pkgs/cache - conda install -c conda-forge mamba --quiet - export PATH="/usr/share/miniconda/bin:$PATH" - mamba create -c bioconda -c conda-forge --quiet -y --name snakemake snakemake-minimal pytest - conda config --set channel_priority strict + # ensure that mamba is happy to write into the cache + sudo chown -R runner:docker /usr/share/miniconda/pkgs/cache + conda install -c conda-forge mamba --quiet + export PATH="/usr/share/miniconda/bin:$PATH" + mamba create -c bioconda -c conda-forge --quiet -y --name snakemake snakemake-minimal pytest + conda config --set channel_priority strict - name: Fetch master if: github.ref != 'refs/heads/master' From d9a7a6a07ab3ddd05bddd6eacfbbaf8df508f545 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:43:40 +0200 Subject: [PATCH 12/40] perf: update bio/delly/environment.yaml. (#584) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/delly/environment.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bio/delly/environment.yaml b/bio/delly/environment.yaml index 317555d323e..36236c9c4e5 100644 --- a/bio/delly/environment.yaml +++ b/bio/delly/environment.yaml @@ -3,6 +3,6 @@ channels: - bioconda - nodefaults dependencies: - - delly =1.1 - - bcftools =1.15 - - snakemake-wrapper-utils =0.5 + - delly =1.1.5 + - bcftools =1.16 + - snakemake-wrapper-utils =0.5.0 From e0220d24499a1ebf1171275f99b128ee5afe8273 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:44:10 +0200 Subject: [PATCH 13/40] perf: update bio/busco/environment.yaml. (#581) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/busco/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/busco/environment.yaml b/bio/busco/environment.yaml index cfe994795f7..87ce734f22b 100644 --- a/bio/busco/environment.yaml +++ b/bio/busco/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - busco =5.4 + - busco =5.4.3 From ae10993c0e9fe2d54b9fedb40d0cacd0aef0e0cd Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:44:32 +0200 Subject: [PATCH 14/40] perf: update bio/clustalo/environment.yaml. (#582) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/clustalo/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/clustalo/environment.yaml b/bio/clustalo/environment.yaml index a175ee25617..fb35b229793 100644 --- a/bio/clustalo/environment.yaml +++ b/bio/clustalo/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - clustalo ==1.2.4 + - clustalo =1.2.4 From 76c984548ecec43767c5a7f87dd1ecd9800ff981 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:47:32 +0200 Subject: [PATCH 15/40] perf: update bio/fastp/environment.yaml. (#585) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/fastp/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/fastp/environment.yaml b/bio/fastp/environment.yaml index 6917a8a91b7..ac25faab425 100644 --- a/bio/fastp/environment.yaml +++ b/bio/fastp/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - fastp =0.20 + - fastp =0.23.2 From 853a36dc2bd1ef297d3289785d21d6f1c4399354 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:48:04 +0200 Subject: [PATCH 16/40] perf: update bio/fastq_screen/environment.yaml. (#586) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/fastq_screen/environment.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bio/fastq_screen/environment.yaml b/bio/fastq_screen/environment.yaml index cd5d5b081f8..c718b52e1e9 100644 --- a/bio/fastq_screen/environment.yaml +++ b/bio/fastq_screen/environment.yaml @@ -3,6 +3,6 @@ channels: - bioconda - nodefaults dependencies: - - fastq-screen ==0.5.2 - - bowtie2 ==2.2.6 - - bowtie ==1.1.2 + - fastq-screen =0.15.2 + - bowtie2 =2.4.5 + - bowtie =1.3.1 From 576c54a8776d3007222d5f2a98c8be60a7faa195 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:48:28 +0200 Subject: [PATCH 17/40] perf: update bio/fasttree/environment.yaml. (#588) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/fasttree/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/fasttree/environment.yaml b/bio/fasttree/environment.yaml index 3df4697cf20..4ce2c611783 100644 --- a/bio/fasttree/environment.yaml +++ b/bio/fasttree/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - fasttree ==2.1.10 + - fasttree =2.1.11 From e473ff76012e3e67aff2ae6b4a4e841bf7a97e2b Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:48:47 +0200 Subject: [PATCH 18/40] perf: update bio/fastqc/environment.yaml. (#587) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/fastqc/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/fastqc/environment.yaml b/bio/fastqc/environment.yaml index 7e06869876b..6592b81aefa 100644 --- a/bio/fastqc/environment.yaml +++ b/bio/fastqc/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - fastqc ==0.11.9 + - fastqc =0.11.9 From 6f5f48f79ce8c1fcbc5547aa85f2f3c6d0a0f6f3 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:49:06 +0200 Subject: [PATCH 19/40] perf: update bio/filtlong/environment.yaml. (#589) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/filtlong/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/filtlong/environment.yaml b/bio/filtlong/environment.yaml index eb91090d49b..35b245cb7fc 100644 --- a/bio/filtlong/environment.yaml +++ b/bio/filtlong/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - filtlong =0.2 + - filtlong =0.2.1 From 5a1f5986710f8e1daa125b0959fe763362b99fb0 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:49:27 +0200 Subject: [PATCH 20/40] perf: update bio/freebayes/environment.yaml. (#590) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/freebayes/environment.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bio/freebayes/environment.yaml b/bio/freebayes/environment.yaml index 8d7dd4b6e7d..17a442b2685 100644 --- a/bio/freebayes/environment.yaml +++ b/bio/freebayes/environment.yaml @@ -3,8 +3,8 @@ channels: - bioconda - nodefaults dependencies: - - freebayes =1.3.2 - - bcftools =1.11 - - parallel =20190522 - - bedtools >=2.29 - - sed =4.7 + - freebayes =1.3.6 + - bcftools =1.16 + - parallel =20220922 + - bedtools =2.30.0 + - sed =4.8 From f60db66ecd380614e74251cbbf60244a113d3c99 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:49:47 +0200 Subject: [PATCH 21/40] perf: update bio/genefuse/environment.yaml. (#591) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/genefuse/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/genefuse/environment.yaml b/bio/genefuse/environment.yaml index 3d74d5a4ad2..fb8ce202866 100644 --- a/bio/genefuse/environment.yaml +++ b/bio/genefuse/environment.yaml @@ -3,4 +3,4 @@ channels: - conda-forge - defaults dependencies: - - genefuse=0.6 + - genefuse =0.8.0 From cb6b6167b09c4fc271275129651c3a0f641956f7 Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:50:05 +0200 Subject: [PATCH 22/40] perf: update bio/genomepy/environment.yaml. (#592) Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> --- bio/genomepy/environment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/genomepy/environment.yaml b/bio/genomepy/environment.yaml index 65b326bfc3d..9ebfc3d207a 100644 --- a/bio/genomepy/environment.yaml +++ b/bio/genomepy/environment.yaml @@ -3,4 +3,4 @@ channels: - bioconda - nodefaults dependencies: - - genomepy ==0.14 + - genomepy =0.14.0 From f618f0d24a99bc720febf72ae5b86a7999858bbf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 22:52:57 +0200 Subject: [PATCH 23/40] chore: release 1.15.2 (#578) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e630327cc0..1b36ea309e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +### [1.15.2](https://www.github.com/snakemake/snakemake-wrappers/compare/v1.15.1...v1.15.2) (2022-10-12) + + +### Performance Improvements + +* update bio/adapterremoval/environment.yaml. ([#573](https://www.github.com/snakemake/snakemake-wrappers/issues/573)) ([8cb0391](https://www.github.com/snakemake/snakemake-wrappers/commit/8cb03915ba46d0a7bf186b54882aa23c4b78f7ed)) +* update bio/assembly-stats/environment.yaml. ([#575](https://www.github.com/snakemake/snakemake-wrappers/issues/575)) ([2c12db0](https://www.github.com/snakemake/snakemake-wrappers/commit/2c12db04b2afae3e5ac1c56ee36baff66a8aff0e)) +* update bio/bellerophon/environment.yaml. ([#576](https://www.github.com/snakemake/snakemake-wrappers/issues/576)) ([fd06157](https://www.github.com/snakemake/snakemake-wrappers/commit/fd06157a4daec8fb6146bccb8925b00d025231e5)) +* update bio/bgzip/environment.yaml. ([#577](https://www.github.com/snakemake/snakemake-wrappers/issues/577)) ([36720ca](https://www.github.com/snakemake/snakemake-wrappers/commit/36720ca9a0d2c6093c7b8ebe26e0b78b5e90227b)) +* update bio/busco/environment.yaml. ([#581](https://www.github.com/snakemake/snakemake-wrappers/issues/581)) ([9825a5f](https://www.github.com/snakemake/snakemake-wrappers/commit/9825a5f882228f6a663408c21e9647ae31c00e53)) +* update bio/clustalo/environment.yaml. ([#582](https://www.github.com/snakemake/snakemake-wrappers/issues/582)) ([dc322c8](https://www.github.com/snakemake/snakemake-wrappers/commit/dc322c898466341a292b06354301f83f51c005cc)) +* update bio/delly/environment.yaml. ([#584](https://www.github.com/snakemake/snakemake-wrappers/issues/584)) ([0eb8ebc](https://www.github.com/snakemake/snakemake-wrappers/commit/0eb8ebc51a1f312836c4a3a7d3d2cfc16a4853c8)) +* update bio/fastp/environment.yaml. ([#585](https://www.github.com/snakemake/snakemake-wrappers/issues/585)) ([a573035](https://www.github.com/snakemake/snakemake-wrappers/commit/a573035813ba39d6bf47eb3bb9c5c68aecf074e0)) +* update bio/fastq_screen/environment.yaml. ([#586](https://www.github.com/snakemake/snakemake-wrappers/issues/586)) ([73a3d45](https://www.github.com/snakemake/snakemake-wrappers/commit/73a3d450ae1d7eff884eae89195758039aadd9c4)) +* update bio/fastqc/environment.yaml. ([#587](https://www.github.com/snakemake/snakemake-wrappers/issues/587)) ([9a0b30e](https://www.github.com/snakemake/snakemake-wrappers/commit/9a0b30e8131560d705c35d9a2eb68b986c743812)) +* update bio/fasttree/environment.yaml. ([#588](https://www.github.com/snakemake/snakemake-wrappers/issues/588)) ([b9b8a4e](https://www.github.com/snakemake/snakemake-wrappers/commit/b9b8a4e6ada4e3e2fcf6e266d7430ab51ab978eb)) +* update bio/filtlong/environment.yaml. ([#589](https://www.github.com/snakemake/snakemake-wrappers/issues/589)) ([3394085](https://www.github.com/snakemake/snakemake-wrappers/commit/33940856b332699f73410b5b49d6b387b817bd1b)) +* update bio/freebayes/environment.yaml. ([#590](https://www.github.com/snakemake/snakemake-wrappers/issues/590)) ([17c9581](https://www.github.com/snakemake/snakemake-wrappers/commit/17c95816b6158eb7c2db56bc1b7c257357359441)) +* update bio/genefuse/environment.yaml. ([#591](https://www.github.com/snakemake/snakemake-wrappers/issues/591)) ([63c620d](https://www.github.com/snakemake/snakemake-wrappers/commit/63c620d40435fc9306d0c5e63e06c79287e537c8)) +* update bio/genomepy/environment.yaml. ([#592](https://www.github.com/snakemake/snakemake-wrappers/issues/592)) ([4cfb29b](https://www.github.com/snakemake/snakemake-wrappers/commit/4cfb29b97770555af53b16523b14b033d0a1f2fb)) + ### [1.15.1](https://www.github.com/snakemake/snakemake-wrappers/compare/v1.15.0...v1.15.1) (2022-10-11) From 141e09e7114641ecc94eb83bc394ee1f8e669af9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20M=C3=B6lder?= Date: Thu, 13 Oct 2022 11:42:49 +0200 Subject: [PATCH 24/40] fix: set RG tag (#593) --- .../meta.yaml | 0 .../test/Snakefile | 1 + .../test/mapped/sampleA.marked.bam | Bin .../test/resources/genome.fa | 0 .../test/resources/genome.fa.amb | 0 .../test/resources/genome.fa.ann | 0 .../test/resources/genome.fa.bwt | Bin .../test/resources/genome.fa.pac | Bin .../test/resources/genome.fa.sa | Bin .../used_wrappers.yaml | 0 test.py | 2 +- 11 files changed, 2 insertions(+), 1 deletion(-) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/meta.yaml (100%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/test/Snakefile (98%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/test/mapped/sampleA.marked.bam (100%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/test/resources/genome.fa (100%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/test/resources/genome.fa.amb (100%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/test/resources/genome.fa.ann (100%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/test/resources/genome.fa.bwt (100%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/test/resources/genome.fa.pac (100%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/test/resources/genome.fa.sa (100%) rename meta/bio/{rbt_calc_consensus => calc_consensus_reads}/used_wrappers.yaml (100%) diff --git a/meta/bio/rbt_calc_consensus/meta.yaml b/meta/bio/calc_consensus_reads/meta.yaml similarity index 100% rename from meta/bio/rbt_calc_consensus/meta.yaml rename to meta/bio/calc_consensus_reads/meta.yaml diff --git a/meta/bio/rbt_calc_consensus/test/Snakefile b/meta/bio/calc_consensus_reads/test/Snakefile similarity index 98% rename from meta/bio/rbt_calc_consensus/test/Snakefile rename to meta/bio/calc_consensus_reads/test/Snakefile index c67346e17e6..f1df2b95629 100644 --- a/meta/bio/rbt_calc_consensus/test/Snakefile +++ b/meta/bio/calc_consensus_reads/test/Snakefile @@ -29,6 +29,7 @@ rule map_consensus_reads: output: temp("results/consensus_mapped/{sample}.{read_type}.bam"), params: + extra=r"-R '@RG\tID:{sample}\tSM:{sample}'", index=lambda w, input: os.path.splitext(input.idx[0])[0], sort="samtools", sort_order="coordinate", diff --git a/meta/bio/rbt_calc_consensus/test/mapped/sampleA.marked.bam b/meta/bio/calc_consensus_reads/test/mapped/sampleA.marked.bam similarity index 100% rename from meta/bio/rbt_calc_consensus/test/mapped/sampleA.marked.bam rename to meta/bio/calc_consensus_reads/test/mapped/sampleA.marked.bam diff --git a/meta/bio/rbt_calc_consensus/test/resources/genome.fa b/meta/bio/calc_consensus_reads/test/resources/genome.fa similarity index 100% rename from meta/bio/rbt_calc_consensus/test/resources/genome.fa rename to meta/bio/calc_consensus_reads/test/resources/genome.fa diff --git a/meta/bio/rbt_calc_consensus/test/resources/genome.fa.amb b/meta/bio/calc_consensus_reads/test/resources/genome.fa.amb similarity index 100% rename from meta/bio/rbt_calc_consensus/test/resources/genome.fa.amb rename to meta/bio/calc_consensus_reads/test/resources/genome.fa.amb diff --git a/meta/bio/rbt_calc_consensus/test/resources/genome.fa.ann b/meta/bio/calc_consensus_reads/test/resources/genome.fa.ann similarity index 100% rename from meta/bio/rbt_calc_consensus/test/resources/genome.fa.ann rename to meta/bio/calc_consensus_reads/test/resources/genome.fa.ann diff --git a/meta/bio/rbt_calc_consensus/test/resources/genome.fa.bwt b/meta/bio/calc_consensus_reads/test/resources/genome.fa.bwt similarity index 100% rename from meta/bio/rbt_calc_consensus/test/resources/genome.fa.bwt rename to meta/bio/calc_consensus_reads/test/resources/genome.fa.bwt diff --git a/meta/bio/rbt_calc_consensus/test/resources/genome.fa.pac b/meta/bio/calc_consensus_reads/test/resources/genome.fa.pac similarity index 100% rename from meta/bio/rbt_calc_consensus/test/resources/genome.fa.pac rename to meta/bio/calc_consensus_reads/test/resources/genome.fa.pac diff --git a/meta/bio/rbt_calc_consensus/test/resources/genome.fa.sa b/meta/bio/calc_consensus_reads/test/resources/genome.fa.sa similarity index 100% rename from meta/bio/rbt_calc_consensus/test/resources/genome.fa.sa rename to meta/bio/calc_consensus_reads/test/resources/genome.fa.sa diff --git a/meta/bio/rbt_calc_consensus/used_wrappers.yaml b/meta/bio/calc_consensus_reads/used_wrappers.yaml similarity index 100% rename from meta/bio/rbt_calc_consensus/used_wrappers.yaml rename to meta/bio/calc_consensus_reads/used_wrappers.yaml diff --git a/test.py b/test.py index 5148b7e5d05..3b4304f8996 100644 --- a/test.py +++ b/test.py @@ -4851,6 +4851,6 @@ def test_collapse_reads_to_fragments_bam(): @skip_if_not_modified def test_calc_consensus_reads(): run( - "meta/bio/rbt_calc_consensus/", + "meta/bio/calc_consensus_reads/", ["snakemake", "--cores", "1", "--use-conda", "-F", "results/consensus/sampleA.bam"], ) \ No newline at end of file From 278f5086057b2c1c16e6f42c6c0830943483d24b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Thu, 13 Oct 2022 11:45:20 +0200 Subject: [PATCH 25/40] Update conventional-prs.yml --- .github/workflows/conventional-prs.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/conventional-prs.yml b/.github/workflows/conventional-prs.yml index 9ee4613cc3f..c777f4b2de4 100644 --- a/.github/workflows/conventional-prs.yml +++ b/.github/workflows/conventional-prs.yml @@ -14,4 +14,3 @@ jobs: - uses: amannn/action-semantic-pull-request@v3.4.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - validateSingleCommit: true \ No newline at end of file From de6ce8530baa67eaa14474890018ea9bdaa808eb Mon Sep 17 00:00:00 2001 From: "snakedeploy-bot[bot]" <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Date: Thu, 13 Oct 2022 12:42:10 +0200 Subject: [PATCH 26/40] perf: autobump bio/deepvariant (#583) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Automatic update of bio/deepvariant. Co-authored-by: snakedeploy-bot[bot] <115615832+snakedeploy-bot[bot]@users.noreply.github.com> Co-authored-by: Johannes Köster --- bio/deepvariant/environment.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bio/deepvariant/environment.yaml b/bio/deepvariant/environment.yaml index 983e6a53b4a..a8b89466955 100644 --- a/bio/deepvariant/environment.yaml +++ b/bio/deepvariant/environment.yaml @@ -1,6 +1,7 @@ channels: - conda-forge - bioconda + - nodefaults dependencies: - deepvariant =1.4 - - numpy + - numpy =1.23 From f9332c21e5781ce8adecf20913c1caa4bd86d265 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christopher=20Schr=C3=B6der?= Date: Thu, 13 Oct 2022 13:59:03 +0200 Subject: [PATCH 27/40] feat: bazam wrapper (#580) ### Description ### QC * [x] I confirm that: For all wrappers added by this PR, * there is a test case which covers any introduced changes, * `input:` and `output:` file paths in the resulting rule can be changed arbitrarily, * either the wrapper can only use a single core, or the example rule contains a `threads: x` statement with `x` being a reasonable default, * rule names in the test case are in [snake_case](https://en.wikipedia.org/wiki/Snake_case) and somehow tell what the rule is about or match the tools purpose or name (e.g., `map_reads` for a step that maps reads), * all `environment.yaml` specifications follow [the respective best practices](https://stackoverflow.com/a/64594513/2352071), * wherever possible, command line arguments are inferred and set automatically (e.g. based on file extensions in `input:` or `output:`), * all fields of the example rules in the `Snakefile`s and their entries are explained via comments (`input:`/`output:`/`params:` etc.), * `stderr` and/or `stdout` are logged correctly (`log:`), depending on the wrapped tool, * temporary files are either written to a unique hidden folder in the working directory, or (better) stored where the Python function `tempfile.gettempdir()` points to (see [here](https://docs.python.org/3/library/tempfile.html#tempfile.gettempdir); this also means that using any Python `tempfile` default behavior works), * the `meta.yaml` contains a link to the documentation of the respective tool or command, * `Snakefile`s pass the linting (`snakemake --lint`), * `Snakefile`s are formatted with [snakefmt](https://github.com/snakemake/snakefmt), * Python wrapper scripts are formatted with [black](https://black.readthedocs.io). * Conda environments use a minimal amount of channels, in recommended ordering. E.g. for bioconda, use (conda-forge, bioconda, nodefaults, as conda-forge should have highest priority and defaults channels are usually not needed because most packages are in conda-forge nowadays). --- bio/bazam/environment.yaml | 7 ++++++ bio/bazam/meta.yaml | 10 +++++++++ bio/bazam/test/Snakefile | 28 ++++++++++++++++++++++++ bio/bazam/test/genome.fasta | 2 ++ bio/bazam/test/mapped/a.bam | Bin 0 -> 334 bytes bio/bazam/test/mapped/a.bam.bai | Bin 0 -> 24 bytes bio/bazam/test/mapped/a.cram | Bin 0 -> 955 bytes bio/bazam/test/mapped/a.cram.crai | Bin 0 -> 41 bytes bio/bazam/wrapper.py | 34 ++++++++++++++++++++++++++++++ test.py | 14 ++++++++++++ 10 files changed, 95 insertions(+) create mode 100644 bio/bazam/environment.yaml create mode 100644 bio/bazam/meta.yaml create mode 100644 bio/bazam/test/Snakefile create mode 100644 bio/bazam/test/genome.fasta create mode 100644 bio/bazam/test/mapped/a.bam create mode 100644 bio/bazam/test/mapped/a.bam.bai create mode 100644 bio/bazam/test/mapped/a.cram create mode 100644 bio/bazam/test/mapped/a.cram.crai create mode 100644 bio/bazam/wrapper.py diff --git a/bio/bazam/environment.yaml b/bio/bazam/environment.yaml new file mode 100644 index 00000000000..8ae1bbb412d --- /dev/null +++ b/bio/bazam/environment.yaml @@ -0,0 +1,7 @@ +channels: + - conda-forge + - bioconda + - nodefaults +dependencies: + - bazam =1.0 + - snakemake-wrapper-utils ==0.5 \ No newline at end of file diff --git a/bio/bazam/meta.yaml b/bio/bazam/meta.yaml new file mode 100644 index 00000000000..2abe5a5d517 --- /dev/null +++ b/bio/bazam/meta.yaml @@ -0,0 +1,10 @@ +name: "bazam" +description: Bazam is a smarter way to realign reads from one genome to another. If you've tried to use Picard SAMtoFASTQ or samtools bam2fq before and ended up unsatisfied with complicated, long running inefficient pipelines, bazam might be what you wanted. Bazam will output FASTQ in a form that can stream directly into common aligners such as BWA or Bowtie2, so that you can quickly and easily realign reads without extraction to any intermediate format. Bazam can target a specific region of the genome, specified as a region or a gene name if you prefer. +url: https://github.com/ssadedin/bazam +authors: + - Christopher Schröder +input: + - BAM/CRAM file + - reference genome +output: + - fastq file diff --git a/bio/bazam/test/Snakefile b/bio/bazam/test/Snakefile new file mode 100644 index 00000000000..38464056209 --- /dev/null +++ b/bio/bazam/test/Snakefile @@ -0,0 +1,28 @@ +rule bazam_interleaved: + input: + bam="mapped/{sample}.bam", + bai="mapped/{sample}.bam.bai", + output: + reads="results/reads/{sample}.fastq.gz", + resources: + mem_mb=12000, + log: + "logs/bazam/{sample}.log", + wrapper: + "master/bio/bazam" + + +rule bazam_separated: + input: + bam="mapped/{sample}.cram", + bai="mapped/{sample}.cram.crai", + reference="genome.fasta", + output: + r1="results/reads/{sample}.r1.fastq.gz", + r2="results/reads/{sample}.r2.fastq.gz", + resources: + mem_mb=12000, + log: + "logs/bazam/{sample}.log", + wrapper: + "master/bio/bazam" diff --git a/bio/bazam/test/genome.fasta b/bio/bazam/test/genome.fasta new file mode 100644 index 00000000000..11d25dda641 --- /dev/null +++ b/bio/bazam/test/genome.fasta @@ -0,0 +1,2 @@ +>Sheila +GCTAGCTCAGAAAAAAAAAA diff --git a/bio/bazam/test/mapped/a.bam b/bio/bazam/test/mapped/a.bam new file mode 100644 index 0000000000000000000000000000000000000000..243bc19d34af48ee291f96ff4b05f4462a632d81 GIT binary patch literal 334 zcmb2|=3rp}f&Xj_PR>jWPZ&ZcIA$Mm5NK6jzG>m{e+@sGH=A)UP4&Mhwj{x6mVVQC708#?AP}U`1oyKV#WK9X_u8MeHcDHJ8iNwe_P`A^vxQ3tNlJ#<=NTW%wG0k z&aJ@fRpevit^Z?k`B?zKVs-IR~^ zA9l^&aF*@g?oHA^C*9eY(erzq|Gt;6*14u_p1$$eQ|A8N1x`wL`L_M&5((Uqd${UQ z+0iDKj|<*9W-51W&YY;m@PUEhvBU=!hV%r+H?8W73=HyUp7deZoRpC8gP+xhN6v|d zXCKcSk0c%-Xyb9x>*D1Rcp&lSjDR2zKarbyBB6ER?&&Od88&CF-B|++D0IW58JNKV G2qFLsfQxAW literal 0 HcmV?d00001 diff --git a/bio/bazam/test/mapped/a.bam.bai b/bio/bazam/test/mapped/a.bam.bai new file mode 100644 index 0000000000000000000000000000000000000000..a9b9979fed416428b1762d263d09d49bb00e5119 GIT binary patch literal 24 RcmZ>A^kigYKmaBv695vP0MP&d literal 0 HcmV?d00001 diff --git a/bio/bazam/test/mapped/a.cram b/bio/bazam/test/mapped/a.cram new file mode 100644 index 0000000000000000000000000000000000000000..0499f5980cb387f62bdc0e03c8516f00deb0bb1d GIT binary patch literal 955 zcmZ<`a`a_p&}F~`HyL4KOiT=oCd%re`aqFJ&BjOa-5e09|F!+Td4~){T3%k7^C`uTJoFzn^^u+2Fi#CqiYqTMr>FaMcVmv1#!rCzym)u){+ zr+K)ooU}dVPIzJDH0GWXlgX_bzJgyD{os3i&w+c-^^Gd>GapHBe`0#APyF+;PX`O* zA0LW{k=T`6u+^yd`L3dv$NW)pJ^X)8UpXgb<}ANqc8c?-PirPTNp8KHvZ=VL`-+tI zNfq0d=R-WzW-9nEek{0VqXRQfL)wIt!X_UU+5XEk_nNd#u*mWDV zb)D{iS+KAie00@qPsd82WB&sI zKLaBZ10N@2!;KrVcU2h}85+(uoRwe+abb51c8&;kW(f9`27w?yM#ligh8`g&H%3N& zXE$aRMrKBaARi#j&dA^x0HlGMgWMssFG!w=k-;yRnS&8*4Ui306A}zj69Uo;)Z^*L z%EZ9yl9}$f)WY2$2i|Npc4UGcxi7c_PdTb_NRbsWLqPx{!qjsFV?C z5(|j;0O)Ka5g>1_Gv^%!CI%fHxOdsvxOw>HV5%X)XtAUlVS1i{6)33B{^uhD3pWdk zA%h_UpV9mV1{NMZK2+7uW_Wfou<$c8`!@7mdHU=r1B)CVpQE$8yR%~ml$zq=Yrp_@ zATVn&y!-DV2;>1B2jYEJ<9o~xG!g8O2d@5ZAk!HcSohxa2U2Wopg>||c$duR4FJsz B^`-y- literal 0 HcmV?d00001 diff --git a/bio/bazam/test/mapped/a.cram.crai b/bio/bazam/test/mapped/a.cram.crai new file mode 100644 index 0000000000000000000000000000000000000000..b34400a88428f3344ef07241df382706c32385af GIT binary patch literal 41 scmb2|=3oE==1ZneOdgm#F)`ipz{JSpv5ATC6DAG=h9idYuY`dr0QyM`Q2+n{ literal 0 HcmV?d00001 diff --git a/bio/bazam/wrapper.py b/bio/bazam/wrapper.py new file mode 100644 index 00000000000..a9447429728 --- /dev/null +++ b/bio/bazam/wrapper.py @@ -0,0 +1,34 @@ +__author__ = "Christopher Schröder" +__copyright__ = "Copyright 2022, Christopher Schröder" +__email__ = "christopher.schroeder@tu-dortmund.de" +__license__ = "MIT" + +from snakemake.shell import shell +from snakemake_wrapper_utils.java import get_java_opts + +java_opts = get_java_opts(snakemake) + +log = snakemake.log_fmt_shell(stdout=False, stderr=True) +bam = snakemake.input.bam + +# Extra parameters default value is an empty string +extra = snakemake.params.get("extra", "") + +if bam.endswith(".cram"): + if not (reference := snakemake.input.get("reference", "")): + raise ValueError( + "input 'reference' is required when working with CRAM input files" + ) + reference_cmd = f"-Dsamjdk.reference_fasta={reference}" +else: + reference_cmd = "" + +# Extract arguments. +if reads := snakemake.output.get("reads", ""): + out_cmd = f"-o {reads}" +elif (r1 := snakemake.output.get("r1", "")) and (r2 := snakemake.output.get("r2", "")): + out_cmd = f"-r1 {r1} -r2 {r2}" +else: + raise ValueError("either 'reads' or 'r1' and 'r2' must be specified in output") + +shell("(bazam {java_opts} {reference_cmd} {extra} -bam {bam} {out_cmd}) {log}") diff --git a/test.py b/test.py index 3b4304f8996..575571f57e7 100644 --- a/test.py +++ b/test.py @@ -4853,4 +4853,18 @@ def test_calc_consensus_reads(): run( "meta/bio/calc_consensus_reads/", ["snakemake", "--cores", "1", "--use-conda", "-F", "results/consensus/sampleA.bam"], + ) + +@skip_if_not_modified +def test_bazam_interleaved(): + run( + "bio/bazam", + ["snakemake", "--cores", "1", "--use-conda", "-F", "results/reads/a.fastq.gz"], + ) + +@skip_if_not_modified +def test_bazam_separated(): + run( + "bio/bazam", + ["snakemake", "--cores", "1", "--use-conda", "-F", "results/reads/a.r1.fastq.gz"], ) \ No newline at end of file From 39c488da6354d2dc0e6c8924ecedabdd2bba2cb2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Oct 2022 14:04:37 +0200 Subject: [PATCH 28/40] chore: release 1.16.0 (#596) :robot: I have created a release \*beep\* \*boop\* --- ## [1.16.0](https://www.github.com/snakemake/snakemake-wrappers/compare/v1.15.2...v1.16.0) (2022-10-13) ### Features * bazam wrapper ([#580](https://www.github.com/snakemake/snakemake-wrappers/issues/580)) ([17e58e6](https://www.github.com/snakemake/snakemake-wrappers/commit/17e58e6f254ce429b3b76b841df29b573949e278)) ### Bug Fixes * set RG tag ([#593](https://www.github.com/snakemake/snakemake-wrappers/issues/593)) ([506a083](https://www.github.com/snakemake/snakemake-wrappers/commit/506a08391b56d4b53edda2c6555b9b9d404d4f94)) ### Performance Improvements * autobump bio/deepvariant ([#583](https://www.github.com/snakemake/snakemake-wrappers/issues/583)) ([9b7c4fe](https://www.github.com/snakemake/snakemake-wrappers/commit/9b7c4feec69d05fc7d6286dcdfdc65802cb93317)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b36ea309e4..802608bf48f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [1.16.0](https://www.github.com/snakemake/snakemake-wrappers/compare/v1.15.2...v1.16.0) (2022-10-13) + + +### Features + +* bazam wrapper ([#580](https://www.github.com/snakemake/snakemake-wrappers/issues/580)) ([17e58e6](https://www.github.com/snakemake/snakemake-wrappers/commit/17e58e6f254ce429b3b76b841df29b573949e278)) + + +### Bug Fixes + +* set RG tag ([#593](https://www.github.com/snakemake/snakemake-wrappers/issues/593)) ([506a083](https://www.github.com/snakemake/snakemake-wrappers/commit/506a08391b56d4b53edda2c6555b9b9d404d4f94)) + + +### Performance Improvements + +* autobump bio/deepvariant ([#583](https://www.github.com/snakemake/snakemake-wrappers/issues/583)) ([9b7c4fe](https://www.github.com/snakemake/snakemake-wrappers/commit/9b7c4feec69d05fc7d6286dcdfdc65802cb93317)) + ### [1.15.2](https://www.github.com/snakemake/snakemake-wrappers/compare/v1.15.1...v1.15.2) (2022-10-12) From 77a2f4c468c6a5d8a5ae1ce666a441efc34f6a7c Mon Sep 17 00:00:00 2001 From: tdayris Date: Tue, 11 Apr 2023 09:23:15 +0200 Subject: [PATCH 29/40] revert --- utils/datavzrd/environment.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datavzrd/environment.yaml b/utils/datavzrd/environment.yaml index 3024650a12f..19eb1b9e578 100644 --- a/utils/datavzrd/environment.yaml +++ b/utils/datavzrd/environment.yaml @@ -1,5 +1,5 @@ channels: -- conda-forge -- nodefaults + - conda-forge + - nodefaults dependencies: - datavzrd =2.18.1 From 939082e86212ec58f64fc93e60c04bf43bb75db6 Mon Sep 17 00:00:00 2001 From: tdayris Date: Fri, 14 Apr 2023 13:52:40 +0200 Subject: [PATCH 30/40] revert --- utils/datavzrd/environment.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datavzrd/environment.yaml b/utils/datavzrd/environment.yaml index 3024650a12f..19eb1b9e578 100644 --- a/utils/datavzrd/environment.yaml +++ b/utils/datavzrd/environment.yaml @@ -1,5 +1,5 @@ channels: -- conda-forge -- nodefaults + - conda-forge + - nodefaults dependencies: - datavzrd =2.18.1 From ed2c80d89c4f7cfc5489eed1172c874a44cbedf9 Mon Sep 17 00:00:00 2001 From: tdayris Date: Thu, 7 Nov 2024 08:15:20 +0100 Subject: [PATCH 31/40] makesnvpattern --- .../makesnvpattern/environment.yaml | 6 ++ bio/ngscheckmate/makesnvpattern/meta.yaml | 21 ++++++ .../makesnvpattern/test/Snakefile | 27 ++++++++ .../makesnvpattern/test/genome.fasta | 10 +++ .../makesnvpattern/test/genome_bwt.1.ebwt | Bin 0 -> 4194777 bytes .../makesnvpattern/test/genome_bwt.2.ebwt | Bin 0 -> 84 bytes .../makesnvpattern/test/genome_bwt.3.ebwt | Bin 0 -> 17 bytes .../makesnvpattern/test/genome_bwt.4.ebwt | 1 + .../makesnvpattern/test/genome_bwt.rev.1.ebwt | Bin 0 -> 4194777 bytes .../makesnvpattern/test/genome_bwt.rev.2.ebwt | Bin 0 -> 84 bytes .../makesnvpattern/test/variants.bed | 4 ++ bio/ngscheckmate/makesnvpattern/wrapper.py | 61 ++++++++++++++++++ test.py | 8 +++ 13 files changed, 138 insertions(+) create mode 100644 bio/ngscheckmate/makesnvpattern/environment.yaml create mode 100644 bio/ngscheckmate/makesnvpattern/meta.yaml create mode 100644 bio/ngscheckmate/makesnvpattern/test/Snakefile create mode 100644 bio/ngscheckmate/makesnvpattern/test/genome.fasta create mode 100644 bio/ngscheckmate/makesnvpattern/test/genome_bwt.1.ebwt create mode 100644 bio/ngscheckmate/makesnvpattern/test/genome_bwt.2.ebwt create mode 100644 bio/ngscheckmate/makesnvpattern/test/genome_bwt.3.ebwt create mode 100644 bio/ngscheckmate/makesnvpattern/test/genome_bwt.4.ebwt create mode 100644 bio/ngscheckmate/makesnvpattern/test/genome_bwt.rev.1.ebwt create mode 100644 bio/ngscheckmate/makesnvpattern/test/genome_bwt.rev.2.ebwt create mode 100644 bio/ngscheckmate/makesnvpattern/test/variants.bed create mode 100644 bio/ngscheckmate/makesnvpattern/wrapper.py diff --git a/bio/ngscheckmate/makesnvpattern/environment.yaml b/bio/ngscheckmate/makesnvpattern/environment.yaml new file mode 100644 index 00000000000..e523940994e --- /dev/null +++ b/bio/ngscheckmate/makesnvpattern/environment.yaml @@ -0,0 +1,6 @@ +channels: + - conda-forge + - bioconda + - nodefaults +dependencies: + - ngscheckmate=1.0.1 diff --git a/bio/ngscheckmate/makesnvpattern/meta.yaml b/bio/ngscheckmate/makesnvpattern/meta.yaml new file mode 100644 index 00000000000..5375a0a1202 --- /dev/null +++ b/bio/ngscheckmate/makesnvpattern/meta.yaml @@ -0,0 +1,21 @@ +name: NGSCheckMate MakeSNVPattern +url: https://github.com/parklab/NGSCheckMate?tab=readme-ov-file#1-patterngenerator +description: Generate SNP pattern file +authors: + - Thibault Dayris +input: + - bed: Path to bed intervals + - fasta: Path to fasta genome sequence + - bowtie: List of paths to bowtie index files +output: + - pattern: Path to binary pattern file. Main output file. + - pattern_text: Path to genomic regions extracted from bed intervals + - fasta: Path to fasta-formatted regions extracted from bed intervals + - bowtieout: Path to bowtie aligned extracted regions + - ntm: Path to parsed bowtie output + - uniq: Path to filtered bowtie output (used for internal patterns checks only) + - txt_sorted: Path to sorted filtered bowtie output (used for internal patterns checks only) + - pattern_text: Path to extracted patterns (used for internal patterns checks only) + - pattern_sorted: Path to sorted extracted patterns (used for internal patterns checks only) +notes: | + This script uses 4 threads while running bowtie and does not allow user to change this value. diff --git a/bio/ngscheckmate/makesnvpattern/test/Snakefile b/bio/ngscheckmate/makesnvpattern/test/Snakefile new file mode 100644 index 00000000000..387cba22729 --- /dev/null +++ b/bio/ngscheckmate/makesnvpattern/test/Snakefile @@ -0,0 +1,27 @@ +rule text_ngscheckmate_makesnvpattern: + input: + fasta="genome.fasta", + bed="variants.bed", + bowtie=multiext( + "genome_bwt", + ".1.ebwt", + ".2.ebwt", + ".3.ebwt", + ".4.ebwt", + ".rev.1.ebwt", + ".rev.2.ebwt", + ), + output: + pattern="genome.pt", + pattern_text=temp("genome.txt"), + fasta=temp("genome.pt.fasta"), + bowtie=temp("genome.pt.bowtie"), + ntm=temp("genome.pt.ntm"), + uniq=temp("genome.pt.ntm.uniq"), + txt_sorted=temp("genome.txt.sorted"), + pattern_sorted=temp("genome.pt.txt.sorted"), + threads: 4 + log: + "makesnvpattern.log", + wrapper: + "master/bio/ngscheckmate/makesnvpattern" diff --git a/bio/ngscheckmate/makesnvpattern/test/genome.fasta b/bio/ngscheckmate/makesnvpattern/test/genome.fasta new file mode 100644 index 00000000000..31fdf75b9cc --- /dev/null +++ b/bio/ngscheckmate/makesnvpattern/test/genome.fasta @@ -0,0 +1,10 @@ +>21 +TCTTCTGGCTTAGAGGTAGATCATCTTGGTCCAATCAGACTGAAATGCCTTGAGGCTAGATTTCAGTCTT +TGTGGCAGCTGGTGAATTTCTAGTTTGCCTTTTCAGCTAGGGATTAGCTTTTTAGGGGTCCCAATGCCTA +GGGAGATTTCTAGGTCCTCTGTTCCTTGCTGACCTCCAATTTTGTCTATCCTTTTGCTGAGAGGTCTGCT +TAACTTCCTTTTAGTCAGGTAGCTCCATTTTATGCTAAGCTTCTTAGTTGCTCACCTTCTGCAGCTAAAG +AATCAGAAAATGCTGTGAAGGAAAAACAAAATGAAATTGCATTGTTTCTACCGGCCCTTTATCAAGCCCT +GGCCACCATGATAGTCATGAATTCCAATTGTTGTCTATGCAGGCCTACCAGATTTCTAACATCTCTGAGC +TACCATTTTCTTCTTAGCTATCTGCTCAGCAAATGTATCCAAATGAAAGGCTGTGGAGAATGTTGAAATC +ACTTCAATGTGTTTCTCTTCTTTCTGGGAGCTTACACACTCAAGTTCTGGATGCTTTGATTGCTATCAGA +AGCCGTTAAATAGCTACTTATTTTTAATTAATTTTACCCAGCTTTCATAATTGTTCTTGCCAGGTGGGAT diff --git a/bio/ngscheckmate/makesnvpattern/test/genome_bwt.1.ebwt b/bio/ngscheckmate/makesnvpattern/test/genome_bwt.1.ebwt new file mode 100644 index 0000000000000000000000000000000000000000..a4fbcd6e5b16e36684ed60b61e55f96748ca8f0d GIT binary patch literal 4194777 zcmeF)3D{)=;m7gw8pdEqQi-%^RjEi(V$dq2Qc0mj|91K#Btu0cC8cPy)wHjYB3nwO zg%F7lZIm!HjeXqz?|u5uGn(yP?m73K<>Pt2PwO!Adq3~F=bn4+eMgF-*k_rdn3{hb zNz0`bQ!jsw{^!yEZS-I7``7Nf-?ZKlhi|a!9S2-7XSbW@?RDwgL$^P1>OsW@J6&|v z^sTo$;rb)@xct;DZaaSU-R|6I+bd5S*<#DnZe8Q3O%B~Sf0K>Ub!W`lZ&vU28*Z3# z*1p&8vTkqsjGI@PHRa^lhs`+n{5dyHJNNVh&pChEO0y2W>*U!N%(>+1nLDqw|J7IR zxar#K=htqY7W}o%suy2%ZWWy2lT zIbyFl^Y)z8JM*%2W{;emUwFuZUp(P|H#5KD+H~Fj4{~(={hImr$E4An{AB?PbbEo( zLxXI<00Rs#zyJdbFu*|f42)h9kPR4MfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=XqJH~x&Ke?-C)^#ePsg%7+`>behiF$?t*N<00Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L=w7XwrCc^I+*0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}PDE!1B4@NH$=A0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_2HIg@TJ8mr4H#g60R|XgU}*+c$oYb7zyJdbFu(u<3^2d|0}L>* zI0Gx@Ipe~ul>bgPV1NMznq^>mj@@eR1}o?5CmS%p00aMRV3iyjWdjBnV1NMz7+`<_ z1{f&Q!2R+(LpET50R|Xgpne8c&11A|zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFfd*N_s{#%WCI2mV1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h%AKL%DSib6JEfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= z=%RrKiG;R z*?<8C7B=v}92;Z<1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+|0~ z1|F3AMP!5f8hCI_$Oa5BzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|15Gfn zMqcBV4H#g60R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgVAQ}vWCI2mV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0S1<8V9o3!8!*5C0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu=f|4Xl-W7ADd|^Zy@4Yv-RU8!*5C0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?GTmuiwdj-qx z;rV;Y1`II300Rs#zyJdbFu(u<3^2d|0}L?000WQ6_2MS>$o#%#0|ppifPt*C-DaT3KVAuxMi$mFf0S4-7;K?~g$p#ECzyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rt6&cIXh`5m$W0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdb)Xl(CbFZ^(zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(ubt{d1ikB71W0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJf~7}zZL=gI~QFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#z(9Kq%*g#AvH=4OFu(u<3^2d|0}L?0KobmXp69T#0Rs#$zyJf~8rY&J z3fX`G1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfPv;2*fQ@GmJJwSfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgU~vYXllLE~{0*L) zU1b9X7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+|101JBES zS+W5G3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L=w zoq^})e$Be|g8ZIFd!cN=00RuP+Q3%%`pO0jFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0~0auqI|}+Y`_2m3^2d|0}L?0 z00Rs#zyJef8Q4148e{_o7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=XtRNB^7)Ih0Rs#)&A_%fcF6{HG4SGelnt6{V7vI04Hzibz)SLdB^xln z00Rs#@E-#&&EukMzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFi?eom*pC?Y`_2m3=H4E z_BkHQ1`II300T`i@bWxv$p#ECz(92dUXkOhY*04?uZ+tw+97`**?<8C7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~fqEEt zRX#slHei4O1{h#~0R|XgfB^;=V1NMz7+`<_2AXYP$6V``4H#g60R|XgfPr!iygKJt zvH=4OFu(u<3^2d|0}L?GpMlrpxs`0d00Rs#up|RJ<#9qbV1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0S3BdVCTG6EE_Pu00Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFi?(xUGn-{*L!U?kPR4MfB^;=V1NMz7+`>bdKh?Jo}~zjn>f5|a%Wn7n~E=6gssV1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^=|G4MZmuZC>E00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^1@b18>S_+RFwEFu(u<3^33H18>fGi)_FE0}L?0 z00Rs#zyJdbFu(u<3^1^;fw$zkk!-*K0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z16?xk)_m@YY`_2m3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000V6@@V0yoyKKM!0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00R>>@bT7+`<_1{h#~0R|XgfB^;=V1NMz7+`>b_8QnD*MVgN1{h#~0R|Z8 zf`L7A-Xj|@zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}Rx`z+QO|yllV#0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb4Bx=J z^7-+y0Rs#$zyJdbF!0|7_RcwyY`_2m3^2d|0}L?000Rs#zyJdbFu*|d2KLFdIN5*! z1{h#~fo2-mH;?1$e}i{tN7;Y@1{h#~0R|XgfPwN2?3Z(G*?<8C7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1R+i8F)|bzmW|XV1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7^u#`{<#(}8!*5C0}L?000Rs#zyJdbFu(u<42;LX%v?*74ccnpfcTaT z7+`<_1{h#~0R|XgfB^;=V4!OT4$L(X*?<8C7+`<_1{h$VO$OeZb6nYg0S4ZeV}WeI z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3@qNj`-`HG4H#g6 z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_2C6V{Q0`5U4H#g60R|Xg zU}**p&iR6DzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu*|b416Hh_+)NzLIN_vH=4OFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#Fn$AH&HWY{&IVu0_Oby33^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#z(5-fd_DKf%Lcb%90R|XgV95qf$z!E#zyJdbENbBUIX=n;3^2d|0}L?GCIdgn`HgJA00Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L=wwSiOfb24ND1{h#~0R|XgfB^;==#qic@;pcjHuz!okPR4MfB^;=V1NMz z7+`<_1{mm$fzxv>KsI220R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|YDjDa(951MSi00V6|aAuBmvH=4OFfcp=XXQBDwa(6;SvFvR0R|XgfB^;= zV1NMz7+`<_1{h#qI0k-{>vOUJ0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJg7G;mJdPb?cSzyJdb zFu(u<3^2d|0}L?GJ_A24ib6JEfB^;=V1NMz7+`<_1{i3XfuH30tZcvl0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z17jIDH}6G~4H#g60R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=XrFgB0|ppifB^;=V1NMz7+`<_1{h#~0R|XgU@!(Q$TeBn zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V4zM0ev^CK zWCI2mV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`>b zVH>zG_qECf3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?GB?A}b{z=(@0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^=YZs6j)XHqs`fPu0M{5HoF*?<8C+HByG z9Oq;M1{h#~0R|XgfB^>TZ{X6LyUPX)Fu(u<3^2ezwFZ8dbFM*lS^jw{cZ1(&Q`vw4 z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_2HIrc@}ekY0|ppifB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPwi2 zt|*E^Hei4O1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{i3wfj{K4c4Pwv7+`<_ z1{h#~0S3lr;L4mo%LWWEzyJdbFu(u<3^2d|0}L?000Rs#(2s$ua-C5&V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{j!c;Og98s^)I+ z$9(-{0|ppifPu0MT$9HY*?<8C7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V4!LP*XBMI*?<8C7+`<_1{h#~0R|XgfB^;=V4z6`{!|o&Y`_2m3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|19dU*=e%}Nb$`h}LpET5fngc=YmPy(0Rs#$zyJdbFu(u< z3^2d|0}L?GT?2p1^S0R|XgfB^;=V1NMz7+`<_1{h$VOas^Dnv-n600Rtk!@%`9 z=F0{QFu(u6a1{h#~0R|XgfB^;=V1NMz7+`>b`Wcv$Yj?5%0}L?000Rs#zyJf~ z8Tfb3v1J1W7^uR)+#FwI0|ppifB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~fk7C!E%&O(1`II300Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJfoGH`qDXO#^YV1NMz7#N;`JMvg88!*5C0}L?000Rs#zyJdbFu(u< z3{2L*ow>dw8!*5C1MM(ySB~kj0Rs#$zyJdbFu*`l4cwjcS=oSr@(tXR?=9JY0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|YTpMiO~ek&U=zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu=gV2JX#0hOz+z3^2d|1MM=<%j3IjzyJdbFu(u< z3^2d|0}NDWpcu&$FWG=R>^s< zY`_2m3^2d|0}L=Q9s~Ewxua~r00Rs#zyJdbly6|woM*`f3^2d|0}L?000Rs#zyJdb zEHH5YJXe+t7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=sE2{o@;bh3 zzyJdbbko2C@)#f+Fu(u<3^2d|0}L=QJOiueoLn|wfB^<3XW)T3hROyEFu(u<3^2d| z19dd;pq#791`IGT83PZ_@k8y{V2yk&WdjBnU|@0v9+G3IY|wNAYsRr`zyJef8dxjG z71@9R1{h#~0R|XgfB^;=sLsGc^SnzoV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#q@&?wy~0Rs#$zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#z(5rS9+#h? zD;qGt00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbRAJ!p`B_=A0Rs#$zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2ez)dtqh{p+#;0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdblwsfrdHqo~V1NMz7+`<_1{h#~0R|Xg zfB^;=V4z(Fo|x-?vH=4OFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#FdPF<%6mIx0|ppifB^;=V1R+P8(1&ry|MuV3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbj2d{dY`_2m3^2d|0}L?000Rs# zzyJdbFu(u<3=Gx4Q?kEozyJdbRA=C+InK%k3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^33%1MBB!v&sexFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#FiZm*3Q8$Hei4O1{h#~0R|XgfB^=oH}H%+|B?;LGO$rRjn&5a|HuXmFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3=G!5yk4*OtX!j)4H#g60R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=U|=i* zn~W5NY|s<~&yH8wfB^;=V4%weHqB$9Y`_2m3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3=H4EX8F8W*?<8C7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_2AXPMMqcZX4H#g60R|XgfB^;=V1NMz7+`<_1{h#~0S4-7VDntZmJJwS zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_2Id>sBA-(y8!*5? zTMcZPW1MWj00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(uV5>aN%LWWEzyJdbFu(u*)7+`<_1}1A@+dPiQ1`II300Rs#zyJdiG4SG?L&^pWENWo8d~e7G3^2d|0}L?0 z00Rs#zyJf2HSm%=uapfKD2kWndqFl}fB^;=V1NMz80dn5m*w17Hei4O1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz25(^d zystwxXq$nT$F*$000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00RsxYTy;Qze+Y>fB^;=V1NMz7#KD1N_BFB9rAUT4H#g60R|XozJXWeFgS8!*5C0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2ez(+%9y>-FB0_e;qJ3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#z(BbM-kjHBWdjBnV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`>bDh<3PuSv-U3^2d|0}L?000Rs#zyJdbFu*`H2Hu)$FR}px3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|14Z$+d}gm~zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb^k?Ahxfe?|V4$7` z-jVN5*?<8C7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=7>t44@?H+vfPr=x*gfCRvH=4OFu(u<3^2d|0}L?000Rs#zyJdb zG|9j_b6rz5V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+|1T z2JY_ldVAz&6w3w-Fu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Ruv$H1O> zEnhZZfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_2I_BMuY7)- zY`{Qw4ZJJI0NH>61{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|Wtzk$7T|D|leK(z+;$@iITzyJdbFu(u<4Ak4ezBy-;4H#g60R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=Xpez+=QTjtfB^;=V1NMz80eOP{c;W{8!*5C0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L=Qegk*)dcFNeib6JEfB^;=V1NMz7+`<_1{h$Vn+9g)x`1rJ00Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#P_}^s^8Pj1fB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=U|>)N4$SA`$_5NDzyJdbFu(u<3^34T1MkiABH4fe1{h#~0R|Xg zpo<3Hmvdp+fB^;=V1NMz7+`<_1{fHwf%oURnQXuS0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L=w7Xt_7zBbu_0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XY)WE^{{MNSgf&5uy0|ppifB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V4!~khvan^*?<8C7+`<_1{h#~0R|XgfB^;=V1NMz z7+|2Q1`f@2a@l|Z1{h#~0R|Xgpz8)cnDb)UfB^;=XqSP*a%`6k7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{fHefe+wP3YV@oz*fB^<3Z{Ua= zM`Z&B7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0S20F;G_B6aoKb{tSFJ_vgz73^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu*`_4SX*5f5-+5Fu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#&}IY2=JOY20|ppifB^;=V1R+P7&tEHx3U2P6EkppzHej$1{h#~0R|XgfB^;= zV1NMz7+`>bIvO}3*REs(1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~fhHR`G4GX=4H#g60S3Ba;PZLhlMRM# z;0tjm8!*5C0}L?000Rs#zyJdbFu(u<3^2d|0}M3Hz^q)~mJJwSfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1R-8 z82I8yQOE`iFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(uTYT%^2rrD;xn?H|izyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFmQ72CzA~rU|`q=zL#T>Y`_2m3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu=fI4V;qC{g4e9V1R+<8~A>X=du9<3^2d|0}T8i=LE6= z0}L?000Rs#zyJdbFu(u<^)_&7p1;cm3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 zK>ZDzme+M;0|ppifB^;=V1NMz7+`<_1{h#~0R|XgfB^;=sGETw<~0o2fB^;=V1NMz z7#N;`({ny18!*5C0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<42)&qjQpGn*?<8C7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+_#&2F}dAX0ibT3^2d|0}L?G9Rp|O{7*Ju zfB^;=V1NMz7+`>b@ftWg&mm+31{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1_p27N4a-LHei4O1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^=o zF>p>^la&n^7~8;)^SvS)EXlx6;zKrIfB^=UY~b7+CuIW$7+`<_1{i39fuH8QMK)l7 z0R|XgfB^;=V1R)t4E!w5H)I0_7+`<_1{h#~0R|XgfB^>DXW-{~&MzA&B^wg{94(70R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`>b z!5g?R_w>sK3^d!oMfpCK4H#g60R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^=^ zYvAIMqL2+3V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_2AXK#w|T8gHei4O2KqB_ zNsgt1?9%-6WCI2mV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^<3XW(}uMIjq7zyJdbFu(u<3^2d|0}L?000Z?ia9OU~ z$Oa5BzyJdbFu(u<3^2d|0}L?000Rs#P-g?b&vi`MfB^=EY2fl4hhzf=7+`>b`3A1Y zbIvcnq z=d5b)2G{26D;qGtK%ETyDaR$*fB^=^GVtddE85my@@J9_7+`<_1{h#~0R|XgfB^;= zV1NMz7+|1@2L77so3a4|3^2d|0}L?000Rt6#=zh5d_p!@*uZshAsaBj00Rs#zyJdb zFu(u<3^2d|0}Ry7!1cLqRfqnb-$xVsM}FV30Rs#$(4T=Dax9e%7+`<_29{*tpLv{+ z4H#g60R|XgfB^;=V4xoZH|BYTY`{SG4BV9Oec6Bk1{h#~0R|XgfB^;=V4#TxZq9RB z*`Uq_X2+-|zriipPZQhV)@&vlFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2ezKL-Al z*BfL51{h#~0R|XgfB^;=V1NMz7+`<_1{h#qQ3G>w{Zuv>uYrHZi)_FE0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdb)X%`&yq+r?Fu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000aFQxGnc)%LWWEzyJdbFu(u< z3^2d|0}L?0K)D8P&ovj>fB^;=V1NMz7+|2O2JXoDtZcvl0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2ez`wiTgdxc~J1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1R+K4BVCb&t(G!7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XotAV?7&$MhX zC|Kv@>vzK0Rs#$zyJdbFu*{a3{1&6s%*dj17#anHpiBxw_N@VvH=4O zFu(u<3^2d|0}L?000WB}n40IzO>6o5o@E0D7+`<_1{h#~0S4M(U|P=aWrIN)SRv+Q z0|ppifB^;=V1NMz7+|3O23E}TH`#yz1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+_#f23E@bDzX6s3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}Qm;!1TNx zA{#Kk00Rs#zyJdbFu(u<3^33h11smbzHGn%0}L?0K=}q%$z!Z+zyJgP*Up_jH&Fm! z91dUkBA{}qSWXqsl&cMgKm|nbsy7N!Xr&x&%Hc5ZC%{+yTlHIf9qd%b(u+;An|+x1 z4KTyedHd`pyGhFc0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000VU}@KWA8D;qGt00Rs#zyJdbFu(u<#Ti(a>nz!T0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=sE&cZI-Smjd=DwvfB^;=V1NMz7+`<_2C8J>QLE8F{vX+Z0R|XgfB^;= zV1NMz7+`<_1{h#~0S4-5V0-S5$_5NDzyJdbFu(u<3^2d|0}L?000U(;up{@cWCI2m zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{kPh2Fu(u<3^2d|164P$H_vNj0|ppi zfB^;=V4(U2-p%tm*?<8C7+`<_1{kQGf%oz}PBvhG0R|XgfB^;=V1NMz7+`<_2I_0z z{oEgt4H#g60R|XgfB^;=V1NMz7+`<_1{h#~0S1aN@Imf5%LWWEzyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFi-{qALexn*?<8C7+`<_1{h#~0R|XgfPpy!ALUwEHei4O1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~fms91ymlZPFu(u<4D^G6!91qP26Z&BFZN{v1{h#~ z0R|XgfB^;=V1NMz7+`>beloB>_q=2S1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfPwi89LU$As<;gf zW>49G0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_2I^wqP`=lKY`_2mt6^X$=Ns980R|XY z+`w?oms)s(RyL9i7+`<_1{h#~0R|XgfB^;=V1NMz80emX!?_118!*5C1OGR0Bbl^8gk_n^rJ3^2d|0}L?000Rs#zyJdbFu(u<3^343 z17~udQZ`_K0R|XgfB^;=V1NMz7+`<_29{>v)7(pu4eDs%Z0ySh3^2d|0}L?000Rs# zz`()=KFhU}Y`_2m3^2d|0}L?000Rs#zyJdbFu=gl4V=q8H9fn*`D`K^Fi=kepXc~r zYG35f$_5NDzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3@|Wj;LCgsvTVQr0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0KyM6umG|-ex3BYi*?<8C7+`<_1{h#~ z0S1<0U^LecvH=4OFu(u<3^2d|0}L?0K-mp^lj~R6fPvl{_%_F)Y*3_u?_x?eV1NMz z7+`<_1{h#~0R|XgfB^;;H}HM#qsRsfFu(uUg7>`xifPwBBn8bl^OW6)9H*g8jUOI zN%|uVt!Xrd(|DRl?KG1fq=)HIdYsnfdTjl_*JSte^X!ko=D_&$SnKNKo%U4wZhLBC kVD6W#GovGu`wq1Ro2_PR|4?&qcxd=Qt2r=w>h#*i-&0(rfdBvi literal 0 HcmV?d00001 diff --git a/bio/ngscheckmate/makesnvpattern/test/genome_bwt.2.ebwt b/bio/ngscheckmate/makesnvpattern/test/genome_bwt.2.ebwt new file mode 100644 index 0000000000000000000000000000000000000000..842545e4c1d08485eaa4b5362f1798b6775f606a GIT binary patch literal 84 zcmZQ%U|`T?WMI$+(szLLNg#a$NGAeuC=&yNIgoz=i1mQ%NT66RkX;YNOMq-CAQlIT P#{>DMK>8Puo&>}If9wet literal 0 HcmV?d00001 diff --git a/bio/ngscheckmate/makesnvpattern/test/genome_bwt.3.ebwt b/bio/ngscheckmate/makesnvpattern/test/genome_bwt.3.ebwt new file mode 100644 index 0000000000000000000000000000000000000000..5e04e7b2dab05fe53aba9d1775f3b0b3384e866b GIT binary patch literal 17 ScmZQ%U|?VbVh|`}006=?~o \ No newline at end of file diff --git a/bio/ngscheckmate/makesnvpattern/test/genome_bwt.rev.1.ebwt b/bio/ngscheckmate/makesnvpattern/test/genome_bwt.rev.1.ebwt new file mode 100644 index 0000000000000000000000000000000000000000..871306ca1f7918f69288b1a5ea63c6b29c84603c GIT binary patch literal 4194777 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 z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7^s$kE%O;svH=4OFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJfyHSqkAqL2+3V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= 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 bf!=7h*X`{a>yD0(jqmSuM<$OQU)FgBZY-z# literal 0 HcmV?d00001 diff --git a/bio/ngscheckmate/makesnvpattern/test/genome_bwt.rev.2.ebwt b/bio/ngscheckmate/makesnvpattern/test/genome_bwt.rev.2.ebwt new file mode 100644 index 0000000000000000000000000000000000000000..e5041dafc595342404dd151931f933d478cd8166 GIT binary patch literal 84 zcmZQ%U|?`zWME(h;#438B8GcFd>)AZ192Kq;0qAf0&yl21H&w!m=cf<24X`X+ZIUI O0BH-Ld Date: Tue, 26 Nov 2024 10:18:19 +0100 Subject: [PATCH 32/40] coderabbit --- .../makesnvpattern/test/Snakefile | 2 +- bio/ngscheckmate/makesnvpattern/wrapper.py | 51 ++++++------------- 2 files changed, 17 insertions(+), 36 deletions(-) diff --git a/bio/ngscheckmate/makesnvpattern/test/Snakefile b/bio/ngscheckmate/makesnvpattern/test/Snakefile index 387cba22729..68797540db7 100644 --- a/bio/ngscheckmate/makesnvpattern/test/Snakefile +++ b/bio/ngscheckmate/makesnvpattern/test/Snakefile @@ -1,4 +1,4 @@ -rule text_ngscheckmate_makesnvpattern: +rule test_ngscheckmate_makesnvpattern: input: fasta="genome.fasta", bed="variants.bed", diff --git a/bio/ngscheckmate/makesnvpattern/wrapper.py b/bio/ngscheckmate/makesnvpattern/wrapper.py index 6d9befece38..43b92503e24 100644 --- a/bio/ngscheckmate/makesnvpattern/wrapper.py +++ b/bio/ngscheckmate/makesnvpattern/wrapper.py @@ -24,38 +24,19 @@ ) # Ensure user can name each file according to their need - bowtieout = snakemake.output.get("bowtie") - if bowtieout: - shell("mv --verbose '{tempdir}/snake_out.bowtieout' {bowtieout} {log}") - - fasta = snakemake.output.get("fasta") - if fasta: - shell("mv --verbose '{tempdir}/snake_out.fasta' {fasta} {log}") - - ntm = snakemake.output.get("ntm") - if ntm: - shell("mv --verbose '{tempdir}/snake_out.ntm' {ntm} {log}") - - pattern = snakemake.output.get("pattern") - if pattern: - shell("mv --verbose '{tempdir}/snake_out.pt' {pattern} {log}") - - pattern_text = snakemake.output.get("pattern_text") - if pattern_text: - shell("mv --verbose '{tempdir}/snake_out.pt-txt' {pattern_text} {log}") - - pattern_sorted = snakemake.output.get("pattern_sorted") - if pattern_sorted: - shell("mv --verbose '{tempdir}/snake_out.pt-txt.sorted' {pattern_sorted} {log}") - - text = snakemake.output.get("text") - if text: - shell("mv --verbose '{tempdir}/snake_out.txt' {text} {log}") - - uniq = snakemake.output.get("uniq") - if uniq: - shell("mv --verbose '{tempdir}/snake_out.uniq.txt' {uniq} {log}") - - txt_sorted = snakemake.output.get("txt_sorted") - if txt_sorted: - shell("mv --verbose '{tempdir}/snake_out.uniq.txt.sorted' {txt_sorted} {log}") + output_mapping = { + "bowtie": f"'{tempdir}/snake_out.bowtieout'", + "fasta": f"'{tempdir}/snake_out.fasta'", + "ntm": f"'{tempdir}/snake_out.ntm'", + "pattern": f"'{tempdir}/snake_out.pt'", + "pattern_text": f"'{tempdir}/snake_out.pt-txt'", + "pattern_sorted": f"'{tempdir}/snake_out.pt-txt.sorted'", + "text": f"'{tempdir}/snake_out.txt'", + "uniq": f"'{tempdir}/snake_out.uniq.txt'", + "txt_sorted": f"'{tempdir}/snake_out.uniq.txt.sorted'", + } + + for output_key, temp_file in output_mapping.items(): + output_path = snakemake.output.get(output_key) + if output_path: + shell("mv --verbose '{temp_file}' '{output_path}' {log}") From d50c9f4d61cc213976e739a241bf1eef28ad417d Mon Sep 17 00:00:00 2001 From: tdayris Date: Fri, 29 Nov 2024 09:19:47 +0100 Subject: [PATCH 33/40] pinning --- .../environment.linux-64.pin.txt | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 bio/ngscheckmate/makesnvpattern/environment.linux-64.pin.txt diff --git a/bio/ngscheckmate/makesnvpattern/environment.linux-64.pin.txt b/bio/ngscheckmate/makesnvpattern/environment.linux-64.pin.txt new file mode 100644 index 00000000000..71eb31f1a53 --- /dev/null +++ b/bio/ngscheckmate/makesnvpattern/environment.linux-64.pin.txt @@ -0,0 +1,116 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +# created-by: conda 24.9.2 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda#c27d1c142233b5bc9ca570c6e2e0c244 +https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda#ad8527bf134a90e1c9ed35fa0b64318c +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.39-hcc3a1bd_1.conda#737be0d34c22d24432049ab7a3214de4 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-9.5.0-h0a57e50_19.tar.bz2#ab924f432810933b22bac6803733574d +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-9.5.0-h0a57e50_19.tar.bz2#110182af718f862c43ac3be597a02c8a +https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda#8ac3367aafb1cc0a068483c580af8015 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda#cc3573974587f12dda90d96e3e55a702 +https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h4a8ded7_18.conda#0ea96f90a10838f58412aa84fdd9df09 +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/binutils_impl_linux-64-2.39-he00db2b_1.conda#3d726e8b51a1f5bfd66892a2b7d9db2d +https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.39-h5fc0e48_13.conda#7f25a524665e4e2f8a5f86522f8d0e31 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda#3cb76c3f10d3bc7f1105b2fc9db984df +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda#ee228789a85f961d14567252a03e725f +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda#db833e03127376d461e1e13e76f09b6c +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda#e39480b9ca41323497b05492a63bc35b +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda#9822b874ea29af082e5d36098d25427d +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda#234a5554c53625688d51062645337328 +https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda#33405d2a66b1411db9f7242c8b97c9e7 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda#b3c17d95b5a10c6e64a21fa17573e70e +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda#19608a9656912805b2b9a2f6bd257b04 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda#77cbc488235ebbaab2b6e912d3934bae +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda#8035c64cb77ed555e3f150b7b3972480 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda#7c21106b851ec72c037b162c216d8f05 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda#1d6afef758879ef5ee78127eb4cd2c4a +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda#fcd2016d1d299f654f81021e27496818 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h0b41bf4_3.conda#c7a069243e1fbe9a556ed2ec030e6407 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.14-h166bdaf_0.tar.bz2#fc84a0446e4e4fb882e78d786cfb9734 +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda#efab66b82ec976930b96d62a976de8e7 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda#f1fd30127802683586f768875127a987 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-9.5.0-h2f262e1_19.tar.bz2#ec1a30921d0fac7d7b0a89686fa507ef +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda#8371ac6457591af2cf6159439c1fd051 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda#b26e8aa824079e1be0294e7152ca4559 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#92ed62436b625154323d40d5f2f11dd7 +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-h4ab18f5_6.conda#27329162c0dc732bcf67a4e0cd488125 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda#70caf8bb6cf39a0b6b7efc885f51c0fe +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1w-hd590300_0.conda#301e70057a3bd399640bb16bbdf87995 +https://conda.anaconda.org/conda-forge/linux-64/sed-4.8-he412f7d_0.tar.bz2#7362f0042e95681f5d371c46c83ebd08 +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/gcc_impl_linux-64-9.5.0-h99780fb_19.tar.bz2#da185e537a469401ff741c5028b9320c +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda#f87c7b7c2cb45f323ffbce941c78ab7c +https://conda.anaconda.org/conda-forge/linux-64/icu-67.1-he1b5a44_0.tar.bz2#7ced6a5e5c94726af797d2b5a2b09228 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda#4fab9799da9571266d05ca5503330655 +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/libffi-3.2.1-he1b5a44_1007.tar.bz2#11389072d7d6036fd811c3d9460475cd +https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda#9aba7960731e6b4547b3a52f812ed801 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_1.conda#0a7f4cd238267c88e5d69f7826a407eb +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.51.0-hdcd2b5c_0.conda#c42b460bae0365fb9777b1ff9d09a554 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda#62857b389e42b36b686331bec0922050 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda#18aa975d2094c34aef978060ae7da7d8 +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-haa6b8db_3.tar.bz2#89acee135f0809a18a1f4537390aa2dd +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa +https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda#f2cfec9406850991f4e3d960cc9e3321 +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2020.2-h4bd325d_4.tar.bz2#850df84d9b8261b73102a8fce99f820f +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/xorg-libsm-1.2.4-he73a12e_1.conda#05a8ea5f446de33006171a7afe6ae857 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda#0b666058a179b744a622d0a4a0c56353 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-h4ab18f5_6.conda#559d338a4234c2ad6e676f460a093e67 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 +https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.9.14-ha770c72_1.tar.bz2#5746d6202ba2abad4a4707f2a2462795 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-9.5.0-h4258300_13.conda#942a9833d5a5930ca7b3722dbc4ca9c0 +https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-9.5.0-hf1096a2_19.tar.bz2#77749a2835210e114d95a34d88d8d22a +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-9.5.0-h99780fb_19.tar.bz2#2715a43223661e9cee63bc977e42e55e +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.17.2-h926e7f8_0.tar.bz2#926325c11478d6e781e76072c117763b +https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda#1091193789bb830127ed067a9e01ac57 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda#8ea26d42ca88ec5258802715fe1ee10b +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-h82bc61c_5.conda#e712a63a21f9db647982971dc121cdcf +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-h68273f3_2.tar.bz2#0315cae0468a1e17f1e7fad5b13d53f8 +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.36-h032f7d1_1.tar.bz2#ffc35300e65074a386aa151f135986b8 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.46.0-h6d4b2fc_0.conda#77ea8dff5cf8550cc8f5629a6af56323 +https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8bc8fbc_6.conda#dff3627fec2c0584ded391205295abf0 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda#febbab7d15033c913d53c7a2c102309d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda#a7a49a8b85122b49214798321e2e96b4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda#279b0de5f6ba95457190a1c459a64e31 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda#c7f243bbaea97cd6ea1edd693270100e +https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-9.5.0-hdb51d14_13.conda#61b7cae3f6924e45af68c7ffc48bc214 +https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-9.5.0-h43f449f_13.conda#2acc0f10529a57cb166ce6bfd61bab10 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda#5dbd1b0fc0d01ec5e0e1fbe667281a11 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.76.1-hc4aaa36_1.tar.bz2#349a288d04af695b639e5f947df3c2d0 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda#4dc03a53fc69371a6158d0ed37214cd3 +https://conda.anaconda.org/conda-forge/linux-64/python-2.7.15-h5a48372_1011_cpython.tar.bz2#d1824ac0987155f58a03b7ffda01db38 +https://conda.anaconda.org/conda-forge/linux-64/curl-7.76.1-h979ede3_1.tar.bz2#28e9133d2ad9ba3081e52548ea20c870 +https://conda.anaconda.org/conda-forge/linux-64/gsl-2.6-he838d99_2.tar.bz2#d54a10784d331d7b13f8af19acf297b7 +https://conda.anaconda.org/bioconda/linux-64/htslib-1.12-h9093b5e_1.tar.bz2#50992d90a43601fc3e77b48c76aca3f0 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2#d5a09a9e981849b751cb75656b7302a0 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-2.7-1_cp27mu.tar.bz2#02d6ad6bce3a798e6ee85494cd9b3d8d +https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 +https://conda.anaconda.org/bioconda/linux-64/bcftools-1.12-h45bccc9_1.tar.bz2#f1a250774b39eed81ea9027205ffbf15 +https://conda.anaconda.org/bioconda/linux-64/bowtie-1.2.3-py27h2bce143_2.tar.bz2#7ebec80bbb03ace67315dd03736c425a +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h9f066cc_1006.tar.bz2#9f8ef44d205f35056dccc1a92fbe6592 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2019.11.28-py27h8c360ce_1.tar.bz2#a345324a2547908c1f9ca4b65d93f5ba +https://conda.anaconda.org/bioconda/linux-64/samtools-1.6-hb116620_7.tar.bz2#cce66eac7c57bd1a400ade017ed19d2d +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-2.7.2-ha5b49bf_1.tar.bz2#71644db5e3e9a0bd6e04439d06e5190b +https://conda.anaconda.org/conda-forge/linux-64/setuptools-44.0.0-py27_0.tar.bz2#a1dcb0ca393c777d0611faf5b86602be +https://conda.anaconda.org/conda-forge/linux-64/pango-1.42.4-h69149e4_5.tar.bz2#9e325ab71e743c57955e73172d1db615 +https://conda.anaconda.org/conda-forge/noarch/pip-20.1.1-pyh9f0ad1d_0.tar.bz2#cd67a20c73ff2514cf5f34cae28fc867 +https://conda.anaconda.org/conda-forge/linux-64/r-base-4.0.3-ha43b4e8_3.tar.bz2#8d0313987e021b34d6539de08a4ee344 +https://conda.anaconda.org/bioconda/noarch/ngscheckmate-1.0.1-py27pl5321r40hdfd78af_1.tar.bz2#a0557c7159a568002624b19964f0f277 From ea9bcc87e6629b95b1e1856f419f5de42f44b9a2 Mon Sep 17 00:00:00 2001 From: tdayris Date: Mon, 2 Dec 2024 13:14:55 +0100 Subject: [PATCH 34/40] Update bio/ngscheckmate/makesnvpattern/wrapper.py Co-authored-by: Filipe G. Vieira <1151762+fgvieira@users.noreply.github.com> --- bio/ngscheckmate/makesnvpattern/wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/ngscheckmate/makesnvpattern/wrapper.py b/bio/ngscheckmate/makesnvpattern/wrapper.py index 43b92503e24..c0c5612f568 100644 --- a/bio/ngscheckmate/makesnvpattern/wrapper.py +++ b/bio/ngscheckmate/makesnvpattern/wrapper.py @@ -39,4 +39,4 @@ for output_key, temp_file in output_mapping.items(): output_path = snakemake.output.get(output_key) if output_path: - shell("mv --verbose '{temp_file}' '{output_path}' {log}") + shell("mv --verbose {temp_file:q} {output_path:q} {log}") From fa5f2fb10b22088854ad17884253207492970971 Mon Sep 17 00:00:00 2001 From: tdayris Date: Mon, 2 Dec 2024 14:07:10 +0100 Subject: [PATCH 35/40] Fix quotes --- bio/ngscheckmate/makesnvpattern/wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/ngscheckmate/makesnvpattern/wrapper.py b/bio/ngscheckmate/makesnvpattern/wrapper.py index c0c5612f568..0553fabb423 100644 --- a/bio/ngscheckmate/makesnvpattern/wrapper.py +++ b/bio/ngscheckmate/makesnvpattern/wrapper.py @@ -39,4 +39,4 @@ for output_key, temp_file in output_mapping.items(): output_path = snakemake.output.get(output_key) if output_path: - shell("mv --verbose {temp_file:q} {output_path:q} {log}") + shell(f"mv --verbose {temp_file:q} {output_path:q} {log}") From c488618478d391e2109c345a2f60f189a13a21f8 Mon Sep 17 00:00:00 2001 From: tdayris Date: Mon, 2 Dec 2024 14:40:24 +0100 Subject: [PATCH 36/40] quotes --- bio/ngscheckmate/makesnvpattern/wrapper.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bio/ngscheckmate/makesnvpattern/wrapper.py b/bio/ngscheckmate/makesnvpattern/wrapper.py index 0553fabb423..1045acd6898 100644 --- a/bio/ngscheckmate/makesnvpattern/wrapper.py +++ b/bio/ngscheckmate/makesnvpattern/wrapper.py @@ -25,18 +25,18 @@ # Ensure user can name each file according to their need output_mapping = { - "bowtie": f"'{tempdir}/snake_out.bowtieout'", - "fasta": f"'{tempdir}/snake_out.fasta'", - "ntm": f"'{tempdir}/snake_out.ntm'", - "pattern": f"'{tempdir}/snake_out.pt'", - "pattern_text": f"'{tempdir}/snake_out.pt-txt'", - "pattern_sorted": f"'{tempdir}/snake_out.pt-txt.sorted'", - "text": f"'{tempdir}/snake_out.txt'", - "uniq": f"'{tempdir}/snake_out.uniq.txt'", - "txt_sorted": f"'{tempdir}/snake_out.uniq.txt.sorted'", + "bowtie": f"{tempdir}/snake_out.bowtieout", + "fasta": f"{tempdir}/snake_out.fasta", + "ntm": f"{tempdir}/snake_out.ntm", + "pattern": f"{tempdir}/snake_out.pt", + "pattern_text": f"{tempdir}/snake_out.pt-txt", + "pattern_sorted": f"{tempdir}/snake_out.pt-txt.sorted", + "text": f"{tempdir}/snake_out.txt", + "uniq": f"{tempdir}/snake_out.uniq.txt", + "txt_sorted": f"{tempdir}/snake_out.uniq.txt.sorted", } for output_key, temp_file in output_mapping.items(): output_path = snakemake.output.get(output_key) if output_path: - shell(f"mv --verbose {temp_file:q} {output_path:q} {log}") + shell("mv --verbose {temp_file:q} {output_path:q} {log}") From 75b9da4539410f9ef736cfc5f9eeae104e59a65e Mon Sep 17 00:00:00 2001 From: tdayris Date: Mon, 2 Dec 2024 14:51:24 +0100 Subject: [PATCH 37/40] No extra parameters --- bio/ngscheckmate/makesnvpattern/wrapper.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bio/ngscheckmate/makesnvpattern/wrapper.py b/bio/ngscheckmate/makesnvpattern/wrapper.py index 1045acd6898..dbebb2ba4cc 100644 --- a/bio/ngscheckmate/makesnvpattern/wrapper.py +++ b/bio/ngscheckmate/makesnvpattern/wrapper.py @@ -11,7 +11,6 @@ # Optional parameters log = snakemake.log_fmt_shell(stdout=True, stderr=True, append=True) -extra = snakemake.params.get("extra", "") index = commonprefix(snakemake.input.bowtie).rstrip(".") From a7f3cd9c7aad81f02189c7b56e0cc3d95f051045 Mon Sep 17 00:00:00 2001 From: tdayris Date: Tue, 3 Dec 2024 10:19:17 +0100 Subject: [PATCH 38/40] Remove temporary files, describe pattern file --- bio/ngscheckmate/makesnvpattern/meta.yaml | 14 ++++---------- bio/ngscheckmate/makesnvpattern/test/Snakefile | 9 ++------- bio/ngscheckmate/makesnvpattern/wrapper.py | 9 +-------- 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/bio/ngscheckmate/makesnvpattern/meta.yaml b/bio/ngscheckmate/makesnvpattern/meta.yaml index 5375a0a1202..34f37a8c40f 100644 --- a/bio/ngscheckmate/makesnvpattern/meta.yaml +++ b/bio/ngscheckmate/makesnvpattern/meta.yaml @@ -6,16 +6,10 @@ authors: input: - bed: Path to bed intervals - fasta: Path to fasta genome sequence - - bowtie: List of paths to bowtie index files + - index: List of paths to `bowtie` index files output: - - pattern: Path to binary pattern file. Main output file. - - pattern_text: Path to genomic regions extracted from bed intervals - - fasta: Path to fasta-formatted regions extracted from bed intervals - - bowtieout: Path to bowtie aligned extracted regions - - ntm: Path to parsed bowtie output - - uniq: Path to filtered bowtie output (used for internal patterns checks only) - - txt_sorted: Path to sorted filtered bowtie output (used for internal patterns checks only) - - pattern_text: Path to extracted patterns (used for internal patterns checks only) - - pattern_sorted: Path to sorted extracted patterns (used for internal patterns checks only) + - fasta: Path to fasta-formatted regions extracted from bed intervals. Unique numeric names are given to each region. + - pattern_uncompressed: Path to uncompressed patterns, used for internal patterns checks only. Col1 = Sequence, Col2 = reference max count, Col3 = variant max count. + - pattern: Path to compressed (binary) pattern file. Main output file. notes: | This script uses 4 threads while running bowtie and does not allow user to change this value. diff --git a/bio/ngscheckmate/makesnvpattern/test/Snakefile b/bio/ngscheckmate/makesnvpattern/test/Snakefile index 68797540db7..10dac5f8803 100644 --- a/bio/ngscheckmate/makesnvpattern/test/Snakefile +++ b/bio/ngscheckmate/makesnvpattern/test/Snakefile @@ -2,7 +2,7 @@ rule test_ngscheckmate_makesnvpattern: input: fasta="genome.fasta", bed="variants.bed", - bowtie=multiext( + index=multiext( "genome_bwt", ".1.ebwt", ".2.ebwt", @@ -13,13 +13,8 @@ rule test_ngscheckmate_makesnvpattern: ), output: pattern="genome.pt", - pattern_text=temp("genome.txt"), fasta=temp("genome.pt.fasta"), - bowtie=temp("genome.pt.bowtie"), - ntm=temp("genome.pt.ntm"), - uniq=temp("genome.pt.ntm.uniq"), - txt_sorted=temp("genome.txt.sorted"), - pattern_sorted=temp("genome.pt.txt.sorted"), + pattern_uncompressed=temp("genome.pt.txt.sorted"), threads: 4 log: "makesnvpattern.log", diff --git a/bio/ngscheckmate/makesnvpattern/wrapper.py b/bio/ngscheckmate/makesnvpattern/wrapper.py index dbebb2ba4cc..ecdcb2a4179 100644 --- a/bio/ngscheckmate/makesnvpattern/wrapper.py +++ b/bio/ngscheckmate/makesnvpattern/wrapper.py @@ -9,7 +9,6 @@ from tempfile import TemporaryDirectory from os.path import commonprefix -# Optional parameters log = snakemake.log_fmt_shell(stdout=True, stderr=True, append=True) index = commonprefix(snakemake.input.bowtie).rstrip(".") @@ -24,15 +23,9 @@ # Ensure user can name each file according to their need output_mapping = { - "bowtie": f"{tempdir}/snake_out.bowtieout", "fasta": f"{tempdir}/snake_out.fasta", - "ntm": f"{tempdir}/snake_out.ntm", "pattern": f"{tempdir}/snake_out.pt", - "pattern_text": f"{tempdir}/snake_out.pt-txt", - "pattern_sorted": f"{tempdir}/snake_out.pt-txt.sorted", - "text": f"{tempdir}/snake_out.txt", - "uniq": f"{tempdir}/snake_out.uniq.txt", - "txt_sorted": f"{tempdir}/snake_out.uniq.txt.sorted", + "txt_uncompressed": f"{tempdir}/snake_out.uniq.txt.sorted", } for output_key, temp_file in output_mapping.items(): From 92d1276911ba054b93f735d6b618cddd1108e79b Mon Sep 17 00:00:00 2001 From: tdayris Date: Tue, 3 Dec 2024 10:28:10 +0100 Subject: [PATCH 39/40] fix attribute error --- bio/ngscheckmate/makesnvpattern/wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/ngscheckmate/makesnvpattern/wrapper.py b/bio/ngscheckmate/makesnvpattern/wrapper.py index ecdcb2a4179..c47fbf8b8ba 100644 --- a/bio/ngscheckmate/makesnvpattern/wrapper.py +++ b/bio/ngscheckmate/makesnvpattern/wrapper.py @@ -11,7 +11,7 @@ log = snakemake.log_fmt_shell(stdout=True, stderr=True, append=True) -index = commonprefix(snakemake.input.bowtie).rstrip(".") +index = commonprefix(snakemake.input.index).rstrip(".") with TemporaryDirectory() as tempdir: shell( From a31e0ccb98aaa96cbf290756de911b579c259c53 Mon Sep 17 00:00:00 2001 From: tdayris Date: Tue, 3 Dec 2024 10:30:00 +0100 Subject: [PATCH 40/40] Fix WorkflowError --- bio/ngscheckmate/makesnvpattern/wrapper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bio/ngscheckmate/makesnvpattern/wrapper.py b/bio/ngscheckmate/makesnvpattern/wrapper.py index c47fbf8b8ba..dd5c3c47b9f 100644 --- a/bio/ngscheckmate/makesnvpattern/wrapper.py +++ b/bio/ngscheckmate/makesnvpattern/wrapper.py @@ -25,7 +25,7 @@ output_mapping = { "fasta": f"{tempdir}/snake_out.fasta", "pattern": f"{tempdir}/snake_out.pt", - "txt_uncompressed": f"{tempdir}/snake_out.uniq.txt.sorted", + "pattern_uncompressed": f"{tempdir}/snake_out.uniq.txt.sorted", } for output_key, temp_file in output_mapping.items():