Snakefile "ymp/rules/sickle.rules"
Env(name="sickle", base="bioconda", packages="sickle-trim")
with Stage("trim_sickle") as S:
S.doc("""
Perform read trimming using Sickle
>>> ymp make toy.trim_sickle
>>> ymp make toy.trim_sickleQ10L10
>>> ymp make mpic.trim_sickleL20
""")
S.add_param("Q", typ="int", name="qual", default=20)
S.add_param("L", typ="int", name="length", default=20)
rule sickle:
message:
"Sickle: Trimming {wildcards.sample}"
input:
"{:prev:}/{sample}.{:pairnames:}.fq.gz"
output:
"{:this:}/{sample}.{:pairnames:}.fq.gz",
"{:this:}/{sample}.unpaired.fq.gz",
log:
"{:this:}/{sample}.log"
params:
arg_pe="pe",
inout2="-r {input[1]} -p {output[1]} -s {output[2]}"
threads:
1
conda:
"sickle"
shell:"""
sickle {params.arg_pe} \
-f {input[0]} \
-o {output[0]} \
{params.inout2} \
--qual-type=sanger \
--length-threshold={params.length} \
--qual-threshold={params.qual} \
--gzip-output \
--no-fiveprime \
> {log} 2>&1
"""
rule sickle_se: # ymp: extends sickle
input:
["{:prev:}/{sample}.{:pairnames[0]:}.fq.gz"]
output:
["{:this:}/{sample}.{:pairnames[0]:}.fq.gz"]
params:
arg_pe = "se",
inout2 = ""
rule sicke_all:
message:
"Sickle: complete"
output:
touch("{:this:}/all_targets.stamp")
input:
"{:this:}/{:fq_names:}.fq.gz"