-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSnakefile
105 lines (92 loc) · 3.18 KB
/
Snakefile
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from snakemake.utils import min_version
import os
import pandas as pd
import re
min_version("6.4.1")
configfile: "config/config.yaml"
""" Allen samples """
allen_readtable = pd.read_csv(config['allen_metadata'], header = 0)
allen_readtable.set_index(config['allen_SRR'], inplace = True, drop = False)
allen_SAMPLES = allen_readtable[config['allen_sample_id']].unique().tolist()
allen_readtable.set_index(config['allen_sample_id'], inplace = True, drop = False)
""" Hugo samples """
hugo_readtable = pd.read_csv(config['hugo_metadata'], header = 0)
hugo_readtable.set_index(config['hugo_SRR'], inplace = True, drop = False)
hugo_SAMPLES = hugo_readtable[config['hugo_sample_id']].unique().tolist()
hugo_readtable.set_index(config['hugo_sample_id'], inplace = True, drop = False)
#include: "workflow/rules/download_and_make_ubam.smk"
include: "workflow/rules/download_raw_allen.smk"
include: "workflow/rules/align_star.smk"
include: "workflow/rules/sort_cram.smk"
include: "workflow/rules/telescope.smk"
include: "workflow/rules/stringtie.smk"
localrules: allen_sample_download
rule allen_sample_download:
input:
expand("results/ubam/{sample_id}.bam", sample_id=allen_SAMPLES)
localrules: hugo_sample_download
rule hugo_sample_download:
input:
expand("runs/{sample_id}_2.fastq.gz", sample_id=hugo_SAMPLES)
## when job completed, remove the ubam to save
localrules: star_align
rule star_align:
input:
"results/align_multi/{sample_id}/Aligned.out.bam",
"results/align_multi/{sample_id}/ReadsPerGene.out.tab",
"results/align_multi/{sample_id}/Aligned.sortedByCoord.out.cram",
"results/ubam/{sample_id}.bam",
"runs/{sample_id}.org.bam"
output:
touch("results/complete/{sample_id}_star_align.txt")
shell:
'''
rm {input[3]}
rm {input[4]}
'''
## Or fastq in hugo's case
#localrules: star_align
#rule star_align:
# input:
# "results/align_multi/{sample_id}/Aligned.out.bam",
# "results/align_multi/{sample_id}/ReadsPerGene.out.tab",
# "results/align_multi/{sample_id}/Aligned.sortedByCoord.out.cram",
# "runs/{sample_id}_1.fastq.gz",
# "runs/{sample_id}_2.fastq.gz"
# output:
# touch("results/complete/{sample_id}_star_align.txt")
# shell:
# '''
#rm {input[3]}
#rm {input[4]}
# '''
localrules: star_complete_allen
rule star_complete_allen:
input:
expand("results/complete/{s}_star_align.txt", s=allen_SAMPLES)
localrules: star_complete_hugo
rule star_complete_hugo:
input:
expand("results/complete/{s}_star_align.txt", s=hugo_SAMPLES)
localrules: sample_complete
rule sample_complete:
input:
"results/align_multi/{sample_id}/Aligned.out.bam",
rules.telescope.output,
rules.stringtie.output
output:
touch("results/complete/{sample_id}.txt")
shell:
'''
rm {input[0]}
'''
localrules: allen_all_complete
rule allen_all_complete:
input:
expand("results/complete/{s}.txt", s=allen_SAMPLES)
localrules: hugo_all_complete
rule hugo_all_complete:
input:
expand("results/complete/{s}.txt", s=hugo_SAMPLES)