Skip to content
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

feat: add ngsngs wrapper #1808

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions bio/ngsngs/environment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
channels:
- conda-forge
- bioconda
- nodefaults
dependencies:
- ngsngs =0.9.2
11 changes: 11 additions & 0 deletions bio/ngsngs/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: NGSNGS
description: Next-Generation Simulator for Next-Generation Sequencing data
url: https://github.com/RAHenriksen/NGSNGS
authors:
- Filipe G. Vieira
input:
-
output:
-
params:
- tool: tool to use, either "ngsngs" (default), "LenConvert", "MisConvert", "MetaMisConvert", "RandRef", "RandVar", "QualConvert", "VCFtoBED", or "RemoveCodon"
60 changes: 60 additions & 0 deletions bio/ngsngs/test/Snakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
rule ngsngs_fq_se:
input:
"{genome}.fasta",
output:
fq="results/{genome}.SE.fq.gz",
log:
"logs/{genome}.SE.fq.log",
params:
extra="--sequencing SE --lengthdist Norm,50,20 --reads 2",
wrapper:
"master/bio/ngsngs"


use rule ngsngs_fq_se as ngsngs_fq_pe with:
output:
fq1="results/{genome}_R1.fq.gz",
fq2="results/{genome}_R2.fq.gz",
log:
"logs/{genome}.PE.fq.log",
params:
extra="--sequencing PE --lengthdist Norm,50,20 --reads 2",


use rule ngsngs_fq_se as ngsngs_bam_se with:
output:
bam="results/{genome}.SE.bam",
log:
"logs/{genome}.SE.bam.log",


use rule ngsngs_bam_se as ngsngs_bam_pe with:
output:
bam="results/{genome}.PE.bam",
log:
"logs/{genome}.PE.bam.log",
params:
extra="--sequencing PE --lengthdist Norm,50,20 --reads 2",


use rule ngsngs_fq_se as ngsngs_randvar with:
output:
fas="results/{genome}.randvar.fas",
pos="results/{genome}.randvar.pos",
log:
"logs/{genome}.randvar.log",
params:
tool="RandVar",
extra="--modulus 2",


rule ngsngs_randref:
output:
fas="results/{genome}.randref.fas",
log:
"logs/{genome}.randref.log",
params:
tool="RandRef",
extra="--length 1000 --chrNo 2 --NoNt --NoStopCodon",
wrapper:
"master/bio/ngsngs"
2 changes: 2 additions & 0 deletions bio/ngsngs/test/genome.fasta
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
>Sheila
GCTAGCTCAGAAAAAAAAAA
21 changes: 21 additions & 0 deletions bio/ngsngs/wrapper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
__author__ = "Filipe G. Vieira"
__copyright__ = "Copyright 2023, Filipe G. Vieira"
__license__ = "MIT"

from snakemake.shell import shell

log = snakemake.log_fmt_shell(stdout=True, stderr=True)
extra = snakemake.params.get("extra", "")

tool = snakemake.params.get("tool", "ngsngs")
assert tool in ["ngsngs", "LenConvert", "MisConvert", "MetaMisConvert", "RandRef", "RandVar", "QualConvert", "VCFtoBED", "RemoveCodon"], "invalid tool specified"

threads = f"--threads {snakemake.threads}" if tool == "ngsngs" else ""

input = f"--input {snakemake.input[0]}" if len(snakemake.input) else ""

output = ",".join([str(value) for key, value in snakemake.output.items() if key != "pos"])
output_extra = " ".join([f"--{key} {value}" for key, value in snakemake.output.items() if key == "pos"])


shell("{tool} {threads} {input} {extra} --output {output} {output_extra} {log}")
32 changes: 32 additions & 0 deletions test.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,38 @@ def run(wrapper, cmd, check_log=None):
os.chdir(origdir)


@skip_if_not_modified
def test_ngsngs():
run(
"bio/ngsngs",
[
"snakemake",
"--cores",
"2",
"--use-conda",
"-F",
"results/genome.SE.fq.gz",
"results/genome_R1.fq.gz",
"results/genome_R2.fq.gz",
"results/genome.SE.bam",
"results/genome.PE.bam",
],
)

run(
"bio/ngsngs",
[
"snakemake",
"--cores",
"1",
"--use-conda",
"-F",
"results/genome.randvar.pos",
"results/genome.randref.fas"
],
)


@skip_if_not_modified
def test_galah():
run(
Expand Down