-
Notifications
You must be signed in to change notification settings - Fork 0
/
sc-ref-indices-wf.cwl
216 lines (185 loc) · 5.87 KB
/
sc-ref-indices-wf.cwl
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
cwlVersion: v1.0
class: Workflow
requirements:
- class: SubworkflowFeatureRequirement
- class: StepInputExpressionRequirement
- class: InlineJavascriptRequirement
- class: MultipleInputFeatureRequirement
inputs:
genome_fasta_file:
type: File
doc: |
Reference genome FASTA file that includes all chromosomes
annotation_gtf_file:
type: File
doc: |
Reference genome GTF annotation file that includes refGene
and mitochondrial DNA annotations
threads:
type: int?
default: 4
doc: |
Number of threads for those steps that support multithreading
memory_limit:
type: int?
default: 20
doc: |
Maximum memory used (GB). The same will be applied to virtual memory
outputs:
indices_folder:
type: Directory
outputSource: cellranger_mkref/indices_folder
doc: |
Cell Ranger reference genome indices folder
arc_indices_folder:
type: Directory
outputSource: cellranger_arc_mkref/indices_folder
doc: |
Cell Ranger ARC reference genome indices folder
stdout_log:
type: File
outputSource: cellranger_mkref/stdout_log
doc: |
stdout log generated by cellranger mkref
stderr_log:
type: File
outputSource: cellranger_mkref/stderr_log
doc: |
stderr log generated by cellranger mkref
arc_stdout_log:
type: File
outputSource: cellranger_arc_mkref/stdout_log
doc: |
stdout log generated by cellranger-arc mkref
arc_stderr_log:
type: File
outputSource: cellranger_arc_mkref/stderr_log
doc: |
stderr log generated by cellranger-arc mkref
steps:
cellranger_mkref:
doc: |
Builds Cell Ranger compatible reference folder from the
custom genome FASTA and gene GTF annotation files
run: ../tools/cellranger-mkref.cwl
in:
genome_fasta_file: genome_fasta_file
annotation_gtf_file: annotation_gtf_file
threads: threads
memory_limit: memory_limit
output_folder_name:
default: "cellranger_ref"
out:
- indices_folder
- stdout_log
- stderr_log
sort_annotation_gtf:
doc: |
Cell Ranger ARC fails to run with UCSC Refgene annotation
if records are not grouped by gene_id - due to duplicates
in gene_ids, so we need to sort them first.
run:
cwlVersion: v1.0
class: CommandLineTool
hints:
- class: DockerRequirement
dockerPull: python:3.8.6
inputs:
script:
type: string?
default: |
#!/usr/bin/env python3
import re
import fileinput
class Gtf(object):
def __init__(self, gtf_line):
self.gtf_list = gtf_line.split("\t")
self.attribute = self.gtf_list[8]
tmp = map(lambda x: re.split("\s+", x.replace('"', "")), re.split("\s*;\s*", self.attribute.strip().strip(";")))
self.attribute = dict([x for x in tmp if len(x)==2])
def __str__(self):
return "\t".join(self.gtf_list)
records = []
for gtf_line in fileinput.input():
records.append(Gtf(gtf_line))
records.sort(key=lambda x: (x.attribute["gene_id"]))
for l in records:
print(l, end="")
inputBinding:
position: 5
annotation_gtf_file:
type: File
inputBinding:
position: 6
outputs:
sorted_annotation_gtf_file:
type: stdout
baseCommand: ["python3", "-c"]
stdout: "sorted.gtf"
in:
annotation_gtf_file: annotation_gtf_file
out:
- sorted_annotation_gtf_file
cellranger_arc_mkref:
doc: |
Builds Cell Ranger ARC compatible reference folder from the
custom genome FASTA and gene GTF annotation files
run: ../tools/cellranger-arc-mkref.cwl
in:
genome_fasta_file: genome_fasta_file
annotation_gtf_file: sort_annotation_gtf/sorted_annotation_gtf_file
exclude_chr:
default: ["chrM"] # as recommended in Cell Ranger ARC manual
output_folder_name:
default: "cellranger_arc_ref"
threads: threads
memory_limit: memory_limit
out:
- indices_folder
- stdout_log
- stderr_log
$namespaces:
s: http://schema.org/
$schemas:
- https://github.com/schemaorg/schemaorg/raw/main/data/releases/11.01/schemaorg-current-http.rdf
label: "Single-cell Reference Indices"
s:name: "Single-cell Reference Indices"
s:alternateName: |
Builds Cell Ranger and Cell Ranger ARC compatible reference folders from
the custom genome FASTA and gene GTF annotation files
s:downloadUrl: https://raw.githubusercontent.com/Barski-lab/sc-seq-analysis/main/workflows/sc-ref-indices-wf.cwl
s:codeRepository: https://github.com/Barski-lab/sc-seq-analysis
s:license: http://www.apache.org/licenses/LICENSE-2.0
s:isPartOf:
class: s:CreativeWork
s:name: Common Workflow Language
s:url: http://commonwl.org/
s:creator:
- class: s:Organization
s:legalName: "Cincinnati Children's Hospital Medical Center"
s:location:
- class: s:PostalAddress
s:addressCountry: "USA"
s:addressLocality: "Cincinnati"
s:addressRegion: "OH"
s:postalCode: "45229"
s:streetAddress: "3333 Burnet Ave"
s:telephone: "+1(513)636-4200"
s:logo: "https://www.cincinnatichildrens.org/-/media/cincinnati%20childrens/global%20shared/childrens-logo-new.png"
s:department:
- class: s:Organization
s:legalName: "Allergy and Immunology"
s:department:
- class: s:Organization
s:legalName: "Barski Research Lab"
s:member:
- class: s:Person
s:name: Michael Kotliar
s:email: mailto:[email protected]
s:sameAs:
- id: http://orcid.org/0000-0002-6486-3898
doc: |
Single-cell Reference Indices
Builds a Cell Ranger and Cell Ranger ARC compatible reference
folders from the custom genome FASTA and gene GTF annotation
files