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
|
#!/usr/bin/env cwl-runner
cwlVersion: v1.1
class: Workflow
requirements:
ScatterFeatureRequirement: {}
StepInputExpressionRequirement: {}
inputs:
seqs: File
metadata: File
bin_widths:
type: int[]
default: [ 1, 4, 16, 64, 256, 1000, 4000, 16000]
doc: width of each bin in basepairs along the graph vector
cells_per_file:
type: int
default: 100
doc: Cells per file on component_segmentation
reversed_sort:
type: string
default: "true"
outputs:
odgiGraph:
type: File
outputSource: buildGraph/odgiGraph
odgiPNG:
type: File
outputSource: vizGraph/graph_image
spoaGFA:
type: File
outputSource: induceGraph/spoaGFA
# odgiRDF:
# type: File
# outputSource: odgi2rdf/rdf
readsMergeDedupSortedByQualAndLen:
type: File
outputSource: dedup_and_sort_by_quality_and_len/sortedReadsFA
mergedMetadata:
type: File
outputSource: dups2metadata/merged
# indexed_paths:
# type: File
# outputSource: index_paths/indexed_paths
# colinear_components:
# type: Directory
# outputSource: segment_components/colinear_components
steps:
dedup_and_sort_by_quality_and_len:
in: {readsFA: seqs, reversed_sorting: reversed_sort}
out: [sortedReadsFA, dups]
run: sort_fasta_by_quality_and_len.cwl
induceGraph:
in:
readsFA: dedup_and_sort_by_quality_and_len/sortedReadsFA
out: [spoaGFA]
run: spoa.cwl
buildGraph:
in: {inputGFA: induceGraph/spoaGFA}
out: [odgiGraph]
run: odgi-build-from-xpoa-gfa.cwl
vizGraph:
in:
sparse_graph_index: buildGraph/odgiGraph
width:
default: 50000
height:
default: 500
path_per_row:
default: true
path_height:
default: 4
out: [graph_image]
requirements:
ResourceRequirement:
ramMin: $(15 * 1024)
outdirMin: 10
run: ../tools/odgi/odgi_viz.cwl
# odgi2rdf:
# in: {odgi: buildGraph/odgiGraph}
# out: [rdf]
# run: odgi_to_rdf.cwl
dups2metadata:
in:
metadata: metadata
dups: dedup_and_sort_by_quality_and_len/dups
out: [merged]
run: dups2metadata.cwl
# bin_paths:
# requirements:
# ResourceRequirement:
# ramMin: 3000
# outdirMin: 10
# run: ../tools/odgi/odgi_bin.cwl
# in:
# sparse_graph_index: buildGraph/odgiGraph
# bin_width: bin_widths
# scatter: bin_width
# out: [ bins, pangenome_sequence ]
# index_paths:
# label: Create path index
# requirements:
# ResourceRequirement:
# ramMin: 3000
# outdirMin: 10
# run: ../tools/odgi/odgi_pathindex.cwl
# in:
# sparse_graph_index: buildGraph/odgiGraph
# out: [ indexed_paths ]
# segment_components:
# label: Run component segmentation
# run: ../tools/graph-genome-segmentation/component_segmentation.cwl
# in:
# bins: bin_paths/bins
# cells_per_file: cells_per_file
# pangenome_sequence:
# source: bin_paths/pangenome_sequence
# valueFrom: $(self[0])
# # the bin_paths step is scattered over the bin_width array, but always using the same sparse_graph_index
# # the pangenome_sequence that is extracted is exactly the same for the same sparse_graph_index
# # regardless of bin_width, so we take the first pangenome_sequence as input for this step
# out: [ colinear_components ]
|