-
Notifications
You must be signed in to change notification settings - Fork 205
feat!: Pin wrapper versions in meta-wrappers; add alignoth_report meta-wrapper #4678
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 36 commits
50ad636
f1a2d96
c1372e9
ae08dd8
efe86a8
30b22ef
f87660c
8c3f917
589ca1c
73474c4
13d92f7
8153920
d86cefb
706c152
ff1639b
7f0cdb8
3b22008
60923ac
4a165b9
9d2b65e
147ad2f
0cea9a9
5dd1f75
928c136
23b45e6
977d157
9bfc274
b197187
823146d
0f04ba8
779ba29
ea7f2a5
13b9176
f921508
204814c
ce6df8a
fd8b6b8
5900daf
bbef664
bae161f
a1df503
24019a5
ebc924a
5b793d2
9707385
9285259
4847c28
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,9 @@ | ||||||||||||||||||
| import pandas as pd | ||||||||||||||||||
|
|
||||||||||||||||||
| def get_alignoth_tables(wildcards, results_dir): | ||||||||||||||||||
| count = count_variants(wildcards) | ||||||||||||||||||
| return [f"{results_dir}/alignoth/{{sample}}/{i}/" for i in range(count)] | ||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
| def count_variants(wildcards): | ||||||||||||||||||
| return sum(1 for _ in open(checkpoints.vembrane_table.get(sample=wildcards.sample).output[0], "r")) - 1 | ||||||||||||||||||
|
||||||||||||||||||
| def count_variants(wildcards): | |
| return sum(1 for _ in open(checkpoints.vembrane_table.get(sample=wildcards.sample).output[0], "r")) - 1 | |
| count_variants = lambda wildcards: sum(1 for line in open(checkpoints.vembrane_table.get(sample=wildcards.sample).output[0])) - 1 |
| def count_variants(wildcards): | |
| return sum(1 for _ in open(checkpoints.vembrane_table.get(sample=wildcards.sample).output[0], "r")) - 1 | |
| def count_variants(wildcards): | |
| with open(checkpoints.vembrane_table.get(sample=wildcards.sample).output[0]) as f: | |
| return sum(1 for _ in f) - 1 |
🤖 Prompt for AI Agents
In meta/bio/alignoth_report/common.smk around lines 8-9, replace the def
count_variants(...) one-liner with a lambda that does not leave a file handle
open; e.g. assign count_variants = lambda wildcards:
len(Path(checkpoints.vembrane_table.get(sample=wildcards.sample).output[0]).read_text().splitlines())
- 1 and ensure pathlib.Path is imported at the top of the file if not already
present.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| name: alignoth_report | ||
| description: Export variants via vembrane and create alignment plots with alignoth for a Datavzrd report. | ||
| authors: | ||
| - Felix Wiegand | ||
| - Felix Mölder | ||
fxwiegand marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| include: "common.smk" | ||
|
|
||
| checkpoint vembrane_table: | ||
| input: | ||
| "<results>/{sample}.bcf", | ||
| output: | ||
| "<results>/tables/{sample}.tsv" | ||
| log: | ||
| "<logs>/vembrane_table/{sample}.log" | ||
| params: | ||
| expression="INDEX, CHROM, POS, REF, ALT", | ||
| extra="" | ||
| wrapper: | ||
| "v7.6.1/bio/vembrane/table" | ||
|
|
||
|
|
||
| rule alignoth: | ||
| input: | ||
| bam="<results>/mapped/{sample}.bam", | ||
| bam_idx="<results>/mapped/{sample}.bam.bai", | ||
| reference="resources/genome.fa", | ||
| reference_idx="resources/genome.fa.fai", | ||
| vcf="<results>/{sample}.bcf", | ||
| vcf_idx="<results>/{sample}.bcf.csi", | ||
| overview="<results>/tables/{sample}.tsv" | ||
| output: | ||
| directory("<results>/alignoth/{sample}/{index}/") | ||
| params: | ||
| extra=lambda wc, input: f"--around-vcf-record {wc.index} -f tsv" | ||
| log: | ||
| "<logs>/alignoth/{sample}_{index}.log" | ||
| wrapper: | ||
| "v7.9.1/bio/alignoth" | ||
|
|
||
|
|
||
| rule datavzrd: | ||
| input: | ||
| config=workflow.source_path("resources/template.datavzrd.yaml"), | ||
| overview="<results>/tables/{sample}.tsv", | ||
| plot_tables=lambda wc: get_alignoth_tables(wc, "<results>") | ||
| output: | ||
| report( | ||
| directory("<results>/datavzrd-report/{sample}"), | ||
| htmlindex="index.html", | ||
| ), | ||
| # config = "resources/datavzrd/{sample}.rendered_config.yaml" | ||
| params: | ||
| max_index=lambda wc: count_variants(wc) | ||
| log: | ||
| "<logs>/datavzrd/{sample}.log", | ||
| wrapper: | ||
| "v7.9.1/utils/datavzrd" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| __use_yte__: true | ||
|
|
||
| default-view: variants | ||
|
|
||
| datasets: | ||
| variants: | ||
| path: ?input.overview | ||
| separator: "\t" | ||
| links: | ||
| alignment plot: | ||
| column: INDEX | ||
| view: "{value}" | ||
| ?for i in range(params.max_index): | ||
| ?f"{i}.coverage": | ||
| path: ?f"{input.plot_tables[i]}/{wildcards.sample}.coverage.tsv" | ||
| separator: "\t" | ||
| ?f"{i}.reference": | ||
| path: ?f"{input.plot_tables[i]}/{wildcards.sample}.reference.tsv" | ||
| separator: "\t" | ||
| ?f"{i}.reads": | ||
| path: ?f"{input.plot_tables[i]}/{wildcards.sample}.reads.tsv" | ||
| separator: "\t" | ||
| ?f"{i}.highlight": | ||
| path: ?f"{input.plot_tables[i]}/{wildcards.sample}.highlight.tsv" | ||
| separator: "\t" | ||
| views: | ||
| variants: | ||
| dataset: variants | ||
| render-table: | ||
| columns: | ||
| SAMPLE: | ||
| label: sample | ||
| CHROM: | ||
| label: chromosome | ||
| POS: | ||
| label: position | ||
| INDEX: | ||
| display-mode: hidden | ||
| REF: | ||
| label: reference allele | ||
| spell: | ||
| url: v1.5.0/med/alleles | ||
| ALT: | ||
| label: alternative allele | ||
| spell: | ||
| url: v1.5.0/med/alleles | ||
| ?for i in range(params.max_index): | ||
| ?i: | ||
| hidden: true | ||
| datasets: | ||
| reads: ?f"{i}.reads" | ||
| reference: ?f"{i}.reference" | ||
| coverage: ?f"{i}.coverage" | ||
| highlight: ?f"{i}.highlight" | ||
| render-plot: | ||
| spec-path: ?f"{input.plot_tables[i]}/{wildcards.sample}.vl.json" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| from snakemake.utils import min_version | ||
|
|
||
| min_version("9.13.1") | ||
|
|
||
| module alignoth_report: | ||
| meta_wrapper: "file:../master/meta/bio/alignoth_report" | ||
|
|
||
| use rule * from alignoth_report |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| >1 | ||
| TGTGCACCCAGGCTAATTAATGTTCATGGGAACTAATTAGAGCTGACATGTACAGCCAGCCTTTTGCTTACTCTGCGGGATCTTGTTCTGTGTGATTTCTCTAGGGGGAGCCTGCTCACTTTGAGTATTTGATGTATCCATTGCACTCAGCACCCATCACCGGTCTAGCTACCTGCATCCGCAAACCCCTTATAGCCACCTGTTCTCTGGATCGATCCATCCGCCTTTGGAATTATGAAACAAAGTAAGGAATGAAAGGCTTGCCTACTTTATTATGCAAGACCCCAGTTGTGAATTTATGTGAATTATTTTAATTACAGTGTTCCAAACTTTAATTATTTAGAAGCTTTCAGTTGGAAAAGATTTTTAAAAAATCAAGTCAGTCAACCTACCTGTTTCTCACTCTTGCGTGGGCTAGAAAACTACTTTGTGGTTTATTTAATGCTTACCACATGCTAGACACTGGGGACATGAAGAGATGAAGACAACACCTCAGTCTCTCACCTTCTTACATAAACTCCTGGGTCCCTCCAGCTCTCCTATCCCCTTGTTTCCCACAGGAACTGCTCTTTGCTTCAGGGAGCTCTCCAGACCCTTTCTTCCTCATCTTTCTCCCAGGACATCACTATCTCAACCACCCCCAACTCCCTCCTGACTTTACCTTCCAGCACAGCTTCCCTGGGAAGCTCCAACCCTAGGTGGACCCCCACCCCCTACTGTTTTCTTTGTTCTTATGTACAACTTCTGGGGCTTCTGGGGAAAAAATACTTGGACAATACTCATGAATTTTGGAATATAAACAGAGCTATGTCTTCAGCATCGCTAGACCACACCTTGACCAGTCTCCCTATCTACCATGCTCCACGCTGGACATTATCCCCTAATAACCAAGATCTAGAAAAGAGAGGAACCAACAATTGCAAACAGTAGTGTGTCTCAAATACGATGATAACAATATATATCAGATACAGTAGATGACTGGAAGGATTTAGTGAGCTAAGCTTACAATTCAGTAATTGATCTTTTTCACAGCACCCTGGAACTATTTAAGGAATACCAAGAAGAGGCATATTCCATCAGCCTTCATCCATCTGGACACTTCATTGTAGTAGGGTTTGCTGACAAACTACGCCTCATGAATCTACTCATTGATGATATACGTTCTTTCAAAGAATACTCTGTTAGAGGATGCGGAGAGGTAAAAAAAAAACTGCTGAAGACAAAAGTCCAGTTTCTTAGAAAGCCACGGCTGAAATATCAGGAACTAACATGATCTGGGGAGGTGGGACCAAAATCTGTCTTGGAGAACTACAGTGGCTTAAAAAAAGGGGGAAGGAGGAAATCCAGTTATTTTCCCAGCAACCTTATTGAGTATATGGTTCCATCCCCATATTCTTATGTCCACCAGACTATTTCATTGAACCTAAAACCTTGTGAGATCCCCGCTATGATAAGTCCTGTCTGTAATTGTGGAATATTAACAAATATTTTAAAAGAAAAGTAATCTCAGAATCAGAGTCACAGCTAAGAAGGTGAGGTTGGAGACGGAGGAGCCAGGGAAAAATAAGCATCAATGGTGAGAGGTAATAAAGAGCGCATCAGCTTTCCCTGAGGTGTCTTGCAGAAACAAGGCAATGATTTCAGGAATTACTTCCCCGGCTCTGAAACATGCTTCTACAGGCAAAATGATTGCTTGTGGTCCCAACGGCTTAATGATTTGTGGGCCTGACAGTGTCAGCATCTGGCCACTATGAGTTACAGGAATAATGAAAGTGTCTGAAAATGTCAGCCACTCCTCAGTCTCATTTGCACCTTCCCCCCACTCCCACCCTCACACGTAGTTTCAGTCTGAACTCGTTGGGAAAAGCACCTCTTGACTGTAACCTCTAATTAGACTGCTCACTTCCTGCTTGCTTGCTCTCTTGCTGTCTTTCCCTATAGTGTTCCTTTAGCAATGGAGGTCACCTGTTTGCTGCAGTCAATGGAAATGTGATTCACGTTTACACCACCACGAGCCTAGAGAACATCTCAAGCCTGAAAGGACACACAGGGAAGGTAAGTGAGTGAACAGTCTCTGGGGAAACAAGGGGCACGGAGCCAAGTATGCCGCCAGCCAGTGGGATACAGGTGAACAAAAGAGAGATGGTTCCTTTCCTCATGGGTTCACTGTCTACTTGGGGAAAGAGACAATAAAACAAATGCACAGACAAATGTAGTTACTAATTGCAGTTCCACTGAAAGAAAAACATGGTGTTGTTGTGAGAGAAATAATGAAGGGGGCGGCATAATTTAGGTGGCTGTATTTGCAAAGGCTTGGTCCTATAAGAGTGAGTAGGAGTTAATCAGACACAACTGGTGGGGATAATCACTGCAGATAGGGATCCAAAGGCCAGAGATGGGAGACTCATAGG |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| 1 2411 3 2411 2412 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| wrappers: | ||
| - bio/vembrane/table | ||
| - bio/alignoth | ||
| - utils/datavzrd |
Uh oh!
There was an error while loading. Please reload this page.