-
Notifications
You must be signed in to change notification settings - Fork 66
/
metagenomics.rules
54 lines (47 loc) · 2.41 KB
/
metagenomics.rules
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from os.path import join
samples = list(read_samples_file(config.get("samples_metagenomics")))
rule all_metagenomics:
input:
expand(join(config["data_dir"], config["subdirs"]["metagenomics"],
"{sample}.kraken.report"), sample=samples),
# expand(join(config["data_dir"], config["subdirs"]["metagenomics"],
# "{sample}.diamond.m8.gz"), sample=samples),
expand(join(config["data_dir"], config["subdirs"]["metagenomics"],
"{sample}.kraken.krona.html"), sample=samples)
params: LSF='-N'
rule diamond:
input: join(config["data_dir"], config["subdirs"]["source"], "{sample}.bam")
output: join(config["data_dir"], config["subdirs"]["metagenomics"], "{sample}.diamond.m8.gz")
resources: cores=int(config.get("number_of_threads", 1))
params: numThreads=str(config.get("number_of_threads", 1))
shell:
"""
{config[bin_dir]}/metagenomics.py diamond {input} {config[diamond_db]} {output} --numThreads {params.numThreads}
"""
rule kraken:
input: join(config["data_dir"], config["subdirs"]["source"], "{sample}.bam")
output: report=join(config["data_dir"], config["subdirs"]["metagenomics"], "{sample}.kraken.report"),
reads=join(config["data_dir"], config["subdirs"]["metagenomics"], "{sample}.kraken.reads.gz")
resources: cores=int(config.get("number_of_threads", 1))
params: numThreads=str(config.get("number_of_threads", 1))
run:
shell("{config[bin_dir]}/metagenomics.py kraken {input} {config[kraken_db]} --outReads {output.reads} --outReport {output.report} --numThreads {params.numThreads}")
rule krona_import_taxonomy:
input: join(config["data_dir"], config["subdirs"]["metagenomics"], "{sample}.kraken.reads.gz")
output: join(config["data_dir"], config["subdirs"]["metagenomics"], "{sample}.kraken.krona.html")
shell:
"""
{config[bin_dir]}/metagenomics.py krona {input} {config[krona_db]} {output} --noRank
"""
rule pair_fastq:
input: expand(join(config["tmp_dir"], config["subdirs"]["source"], "{{sample}}.{pair}.fastq"), pair=(1,2))
output: temp(join(config["tmp_dir"], config["subdirs"]["source"], "{sample}.both.fastq"))
shell:
"""
echo {input[0]}
echo {input[1]}
paste <(paste - - - - < {input[0]}) \
<(paste - - - - < {input[1]}) \
| tr '\t' '\n' \
> {output}
"""