aboutsummaryrefslogtreecommitdiff
path: root/workflows/pangenome-generate/pangenome-generate.cwl
blob: 9118cf8c66a56be7eaaa0fe9bdb5e63469018852 (plain)
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
#!/usr/bin/env cwl-runner
cwlVersion: v1.1
class: Workflow
requirements:
  ScatterFeatureRequirement: {}
  StepInputExpressionRequirement: {}
inputs:
  inputReads: File[]
  metadata: File[]
  metadataSchema: File
  subjects: string[]
  exclude: 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
outputs:
  odgiGraph:
    type: File
    outputSource: buildGraph/odgiGraph
  odgiPNG:
    type: File
    outputSource: vizGraph/graph_image
  seqwishGFA:
    type: File
    outputSource: induceGraph/seqwishGFA
  odgiRDF:
    type: File
    outputSource: odgi2rdf/rdf
  readsMergeDedup:
    type: File
    outputSource: dedup/reads_dedup
  mergedMetadata:
    type: File
    outputSource: mergeMetadata/merged
  indexed_paths:
    type: File
    outputSource: index_paths/indexed_paths
  colinear_components:
    type: Directory
    outputSource: segment_components/colinear_components
steps:
  relabel:
    in:
      readsFA: inputReads
      subjects: subjects
      exclude: exclude
    out: [relabeledSeqs, originalLabels]
    run: relabel-seqs.cwl
  dedup:
    in: {reads: relabel/relabeledSeqs}
    out: [reads_dedup, dups]
    run: ../tools/seqkit/seqkit_rmdup.cwl
  overlapReads:
    in:
      target: dedup/reads_dedup
      query: dedup/reads_dedup
      outputCIGAR: {default: true}
      preset: {default: asm20}
      miniWinSize: {default: 1}
    out: [alignments]
    run: ../tools/minimap2/minimap2_paf.cwl
  induceGraph:
    in:
      readsFA: dedup/reads_dedup
      readsPAF: overlapReads/alignments
    out: [seqwishGFA]
    run: seqwish.cwl
  buildGraph:
    in: {inputGFA: induceGraph/seqwishGFA}
    out: [odgiGraph]
    run: odgi-build.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]
    run: ../tools/odgi/odgi_viz.cwl
  odgi2rdf:
    in: {odgi: buildGraph/odgiGraph}
    out: [rdf]
    run: odgi_to_rdf.cwl
  mergeMetadata:
    in:
      metadata: metadata
      metadataSchema: metadataSchema
      subjects: subjects
      dups: dedup/dups
      originalLabels: relabel/originalLabels
    out: [merged]
    run: merge-metadata.cwl
  bin_paths:
    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
    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 ]