-
Notifications
You must be signed in to change notification settings - Fork 1
/
starFusion.wdl
executable file
·152 lines (133 loc) · 4.79 KB
/
starFusion.wdl
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
version 1.0
struct GenomeResources {
String modules
String starFusion
String genomeDir
}
workflow starFusion {
input {
Array[Pair[File, File]] inputFqs
File? chimeric
String reference
String outputFileNamePrefix
}
Map[String, GenomeResources] resources = {
"hg38": {
"modules" : "star-fusion/1.8.1 star-fusion-genome/1.8.1-hg38",
"starFusion": "$STAR_FUSION_ROOT/STAR-Fusion",
"genomeDir": "$STAR_FUSION_GENOME_ROOT/ctat_genome_lib_build_dir"
}
}
## NOTE: if chimeric file is given, the fastq files will not be used for anything, but are still required arguments.
## : starFusion does NOT accept multiple fastq pairs, so in this case, the chimeric file MUST be given.
## TODO: if multiple fastqs are supplied as input, and a chimeric file is NOT: concatenate, and use the concatenated pair as input.
scatter (fq in inputFqs) {
File fastq1 = fq.left
File fastq2 = fq.right
}
parameter_meta {
inputFqs: "Array of fastq read pairs"
chimeric: "Path to Chimeric.out.junction"
reference: "Version of reference genome"
outputFileNamePrefix: "Prefix of outptu file"
}
call runStarFusion {
input:
fastq1 = fastq1,
fastq2 = fastq2,
chimeric = chimeric,
modules = resources[reference].modules,
starFusion = resources[reference].starFusion,
genomeDir = resources[reference].genomeDir,
outputFileNamePrefix = outputFileNamePrefix,
}
output {
File fusions = runStarFusion.fusionPredictions
File fusionsAbridged = runStarFusion.fusionPredictionsAbridged
File fusionCodingEffects = runStarFusion.fusionCodingEffects
}
meta {
author: "Heather Armstrong"
email: "[email protected]"
description: "Workflow that takes a fastq pair or optionally a chimeric file from STAR and detects RNA-seq fusion events."
dependencies: [
{
name: "star-fusion-genome/1.8.1-hg38",
url: "https://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/__genome_libs_StarFv1.8"
},
{
name: "star-fusion/1.8.1",
url: "https://github.com/STAR-Fusion/STAR-Fusion/wiki"
}
]
output_meta: {
fusions: {
description: "Tab-delimited fusion predictions.",
vidarr_label: "fusions"
},
fusionsAbridged: {
description: "Tab-delimited fusion predictions, excluding the identification of the evidence fusion reads.",
vidarr_label: "fusionsAbridged"
},
fusionCodingEffects: {
description: "Fusion predictions with appended column showing effect on coding genes.",
vidarr_label: "fusionCodingEffects"
}
}
}
}
task runStarFusion {
input {
Array[File] fastq1
Array[File] fastq2
File? chimeric
String starFusion
String modules
String genomeDir
Int threads = 8
Int jobMemory = 64
Int timeout = 72
String outputFileNamePrefix
}
parameter_meta {
fastq1: "Array of paths to the fastq files for read 1"
fastq2: "Array of paths to the fastq files for read 2"
chimeric: "Path to Chimeric.out.junction"
starFusion: "Name of the STAR-Fusion binary"
modules: "Names and versions of STAR-Fusion and STAR-Fusion genome to load"
genomeDir: "Path to the STAR-Fusion genome directory"
threads: "Requested CPU threads"
jobMemory: "Memory allocated for this job"
timeout: "Hours before task timeout"
}
String outdir = "STAR-Fusion_outdir"
command <<<
"~{starFusion}" \
--genome_lib_dir "~{genomeDir}" \
--left_fq ~{sep="," fastq1} \
--right_fq ~{sep="," fastq2} \
--examine_coding_effect \
--CPU "~{threads}" --chimeric_junction "~{chimeric}"
mv ~{outdir}/star-fusion.fusion_predictions.tsv ~{outdir}/~{outputFileNamePrefix}.star-fusion.fusion_predictions.tsv
mv ~{outdir}/star-fusion.fusion_predictions.abridged.tsv ~{outdir}/~{outputFileNamePrefix}.star-fusion.fusion_predictions.abridged.tsv
mv ~{outdir}/star-fusion.fusion_predictions.abridged.coding_effect.tsv ~{outdir}/~{outputFileNamePrefix}.star-fusion.fusion_predictions.abridged.coding_effect.tsv
>>>
runtime {
memory: "~{jobMemory} GB"
modules: "~{modules}"
cpu: "~{threads}"
timeout: "~{timeout}"
}
output {
File fusionPredictions = "~{outdir}/~{outputFileNamePrefix}.star-fusion.fusion_predictions.tsv"
File fusionPredictionsAbridged = "~{outdir}/~{outputFileNamePrefix}.star-fusion.fusion_predictions.abridged.tsv"
File fusionCodingEffects = "~{outdir}/~{outputFileNamePrefix}.star-fusion.fusion_predictions.abridged.coding_effect.tsv"
}
meta {
output_meta: {
fusionPredictions: "Raw fusion output tsv",
fusionPredictionsAbridged: "Abridged fusion output tsv",
fusionCodingEffects: "Annotated fusion output tsv"
}
}
}