Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 19 additions & 13 deletions tools/odgi/build.xml
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
<tool id="odgi_build" name="odgi build" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.05">
<tool id="odgi_build" name="odgi build" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.1">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<tool id="odgi_build" name="odgi build" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.1">
<tool id="odgi_build" name="odgi build" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">

We can introduce above TOKEN in macros.xml

<description>construct a dynamic succinct variation graph</description>
<macros>
<import>macros.xml</import>
</macros>
<expand macro="requirements"/>
<command detect_errors="exit_code"><![CDATA[
cp '$gfa' input.gfa &&

odgi build
-g input.gfa
-o '$odgi_output'
$sort
#if $to_gfa:
--to-gfa > '$gfa_output'
odgi build -g input.gfa -o '$odgi_output' $sort
#if $to_gfa
&& odgi view -i '$odgi_output' $to_gfa > '$gfa_output'
#end if
]]></command>
<inputs>
Expand All @@ -31,19 +27,29 @@ $sort
</data>
</outputs>
<tests>
<test>
<test expect_num_outputs="2">
<param name="gfa" value="t.gfa" />
<param name="sort" value="true" />
<param name="to_gfa" value="true" />
<output name="odgi_output" file="note5_out.og" />
<output name="gfa_output" file="note5.gfa" />
</test>
</tests>
<help><![CDATA[
optimized dynamic genome/graph implementation (odgi)
----------------------------------------------------
<help format="markdown"><![CDATA[
@HELP_HEADER@

`odgi build` converts a GFA file into an ODGI graph, optionally topologically sorting nodes and emitting a companion GFA view.

### Inputs

- **Construct the graph from this GFA input file**: Source GFA file to ingest.
- **Topological sort the graph**: Apply generalized topological sorting before writing the `.og`.
- **Output additional GFA file**: Re-export the resulting graph in GFA format.

### Outputs

Construct a dynamic succinct variation graph (build)
- **odgi**: The constructed graph in ODGI format.
- **GFA**: Optional GFA view of the constructed graph.
]]></help>
<expand macro="citations">
</expand>
Expand Down
76 changes: 76 additions & 0 deletions tools/odgi/cover.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<tool id="odgi_cover" name="odgi cover" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.1">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<tool id="odgi_cover" name="odgi cover" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.1">
<tool id="odgi_cover" name="odgi cover" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">

<description>generate path covers for graph components</description>
<macros>
<import>macros.xml</import>
</macros>
<expand macro="requirements"/>
<command detect_errors="exit_code"><![CDATA[
odgi cover
--idx '$idx'
--out '$output'
#if str($hogwild_depth)
--hogwild-depth $hogwild_depth
#end if
#if str($num_paths_per_component)
--num-paths-per-component $num_paths_per_component
#end if
#if str($node_windows_size)
--node-windows-size $node_windows_size
#end if
#if str($min_node_coverage)
--min-node-coverage $min_node_coverage
#end if
$ignore_paths
#if str($save_coverages)
--write-node-depth '$node_coverages'
#end if
@THREADS@
]]></command>
<inputs>
<expand macro="graph_input_param"/>
<param argument="--hogwild-depth" type="float" optional="true" min="0" label="Cover graph to this average depth" help="Randomly cover the graph until reaching the specified average depth."/>
<param argument="--num-paths-per-component" type="integer" optional="true" min="1" label="Number of paths to generate per component"/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<param argument="--num-paths-per-component" type="integer" optional="true" min="1" label="Number of paths to generate per component"/>
<param argument="--num-paths-per-component" type="integer" optional="true" value="" min="1" label="Number of paths to generate per component"/>

Please add value="" whereever the param is optional

<param argument="--node-windows-size" type="integer" optional="true" min="2" label="Node window size when extending paths"/>
<param argument="--min-node-coverage" type="integer" optional="true" min="1" label="Minimum node coverage to reach"/>
<param argument="--ignore-paths" type="boolean" truevalue="--ignore-paths" falsevalue="" checked="false" label="Ignore embedded paths when initializing coverage"/>
<param argument="--save-coverages" type="boolean" truevalue="true" falsevalue="" checked="false" label="Write node coverages table" help="Generate a tabular file with per-node coverage statistics."/>
</inputs>
<outputs>
<data name="output" format="odgi" label="${tool.name} on ${on_string}"/>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some output label?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<data name="output" format="odgi" label="${tool.name} on ${on_string}"/>
<data name="output" format="odgi" label="${tool.name} on ${on_string}: Output graph"/>

<data name="node_coverages" format="tabular" label="${tool.name} on ${on_string}: node coverages">
<filter>save_coverages</filter>
</data>
</outputs>
<tests>
<test expect_num_outputs="1">
<param name="idx" value="t.og" />
<param name="num_paths_per_component" value="2" />
<output name="output" file="cover_out.og" ftype="odgi" />
</test>
<test expect_num_outputs="2">
<param name="idx" value="t.og" />
<param name="num_paths_per_component" value="2" />
<param name="save_coverages" value="true" />
<output name="output" file="cover_out.og" ftype="odgi" />
<output name="node_coverages" file="cover_node_coverages.tabular" ftype="tabular" />
</test>
</tests>
<help format="markdown"><![CDATA[
@HELP_HEADER@

`odgi cover` generates path covers for each connected component of the graph.

### Inputs

- **Input odgi graph**: Graph to cover.
- **Average depth / Paths per component / Node window size / Minimum node coverage**: Control coverage generation heuristics.
- **Ignore embedded paths**: Start covering from scratch ignoring existing paths.
- **Write node coverages table**: Emit per-node coverage values.

### Outputs

- **odgi**: Graph augmented with generated cover paths.
- **node coverages**: Optional tabular coverage summary.
]]></help>
<expand macro="citations"/>
</tool>
104 changes: 104 additions & 0 deletions tools/odgi/depth.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
<tool id="odgi_depth" name="odgi depth" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.1">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<tool id="odgi_depth" name="odgi depth" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.1">
<tool id="odgi_depth" name="odgi depth" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">

<description>compute path depth statistics</description>
<macros>
<import>macros.xml</import>
</macros>
<expand macro="requirements"/>
<command detect_errors="exit_code"><![CDATA[
odgi depth
--input '$input'
#if $subset_paths
--subset-paths '$subset_paths'
#end if
#if str($path)
--path '$path'
#end if
#if $paths
--paths '$paths'
#end if
#if str($graph_pos)
--graph-pos '$graph_pos'
#end if
#if $graph_pos_file
--graph-pos-file '$graph_pos_file'
#end if
#if str($path_pos)
--path-pos '$path_pos'
#end if
#if $path_pos_file
--path-pos-file '$path_pos_file'
#end if
#if $bed_input
--bed-input '$bed_input'
#end if
$graph_depth_table
$graph_depth_vec
$path_depth
$self_depth
$summarize
#if str($windows_in)
--windows-in '$windows_in'
#end if
#if str($windows_out)
--windows-out '$windows_out'
#end if
@THREADS@
> '$output'
]]></command>
<inputs>
<expand macro="graph_input_param_input"/>
<param argument="--subset-paths" type="data" format="txt" optional="true" label="Subset of paths for depth calculation" help="Text file with one path name per line."/>
<param argument="--path" type="text" optional="true" label="Single path to analyze"/>
<param argument="--paths" type="data" format="txt" optional="true" label="Report depth for these paths" help="Text file with one path name per line."/>
<param argument="--graph-pos" type="text" optional="true" label="Graph position (node[,offset[,strand]])"/>
<param argument="--graph-pos-file" type="data" format="txt" optional="true" label="File of graph positions"/>
<param argument="--path-pos" type="text" optional="true" label="Path position (path[,offset[,strand]])"/>
<param argument="--path-pos-file" type="data" format="txt" optional="true" label="File of path positions"/>
<param argument="--bed-input" type="data" format="bed" optional="true" label="BED intervals to evaluate"/>
<param argument="--graph-depth-table" type="boolean" truevalue="--graph-depth-table" falsevalue="" checked="false" label="Write node depth/unique depth table"/>
<param argument="--graph-depth-vec" type="boolean" truevalue="--graph-depth-vec" falsevalue="" checked="false" label="Write graph depth vector"/>
<param argument="--path-depth" type="boolean" truevalue="--path-depth" falsevalue="" checked="false" label="Write per-base path depth"/>
<param argument="--self-depth" type="boolean" truevalue="--self-depth" falsevalue="" checked="false" label="Write self depth per base"/>
<param argument="--summarize" type="boolean" truevalue="--summarize" falsevalue="" checked="false" label="Summarize depth distribution"/>
<param argument="--windows-in" type="text" optional="true" label="Depth windows inside range (LEN:MIN:MAX)"/>
<param argument="--windows-out" type="text" optional="true" label="Depth windows outside range (LEN:MIN:MAX)"/>
</inputs>
<outputs>
<expand macro="standard_tabular_output"/>
</outputs>
<tests>
<test expect_num_outputs="1">
<param name="input" value="t.og" />
<param name="graph_depth_table" value="true" />
<output name="output" file="depth_graph_table.tabular" ftype="tabular" />
</test>
<test expect_num_outputs="1">
<param name="input" value="t.og" />
<param name="path_depth" value="true" />
<output name="output" file="depth_path.tabular" ftype="tabular" />
</test>
<test expect_num_outputs="1">
<param name="input" value="t.og" />
<param name="summarize" value="true" />
<output name="output" file="depth_summarize.tabular" ftype="tabular" />
</test>
</tests>
<help format="markdown"><![CDATA[
@HELP_HEADER@

`odgi depth` reports depth metrics for selected paths, positions, or intervals.

### Inputs

- **Input odgi graph**: Graph to profile.
- **Subset/path/path lists**: Limit the analysis to specific paths.
- **Positions / BED intervals**: Query exact positions or ranges.
- **Depth summary toggles**: Emit tables or vectors describing depth per node or path.
- **Depth windows**: Report intervals within or outside depth ranges.

### Outputs

- **Tabular**: Depth metrics written in tab-separated form.
]]></help>
<expand macro="citations"/>
</tool>
125 changes: 125 additions & 0 deletions tools/odgi/draw.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
<tool id="odgi_draw" name="odgi draw" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.1">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<tool id="odgi_draw" name="odgi draw" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="24.1">
<tool id="odgi_draw" name="odgi draw" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@">

<description>draw previously-determined 2D layouts of the graph with diverse annotations</description>
<macros>
<import>macros.xml</import>
</macros>
<expand macro="requirements"/>
<command detect_errors="exit_code"><![CDATA[
odgi draw
--idx '$idx'
--coords-in '$coords_in'
#if $png
--png '$png_output'
#end if
#if $svg
--svg '$svg_output'
#end if
#if $tsv
--tsv '$tsv_output'
#end if
#if $path_index
--path-index '$path_index'
#end if
#if str($png_height)
--png-height $png_height
#end if
#if str($png_border)
--png-border $png_border
#end if
$color_paths
#if str($scale)
--scale $scale
#end if
#if str($border)
--border $border
#end if
#if str($line_width)
--line-width $line_width
#end if
#if str($path_line_spacing)
--path-line-spacing $path_line_spacing
#end if
#if $bed_file
--bed-file '$bed_file'
#end if
@THREADS@
]]></command>
<inputs>
<expand macro="graph_input_param"/>
<param argument="--coords-in" type="data" format="txt" label="Layout coordinates file" help="Read the layout coordinates from this .lay format file produced by odgi layout."/>
<param argument="--png" type="boolean" truevalue="true" falsevalue="false" checked="true" label="Output PNG rendering"/>
<param argument="--svg" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Output SVG rendering"/>
<param argument="--tsv" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Output TSV layout"/>
Comment on lines +50 to +52
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we instead have a select param here and allow users to select the required output?

<param argument="--path-index" type="data" format="txt" optional="true" label="Path index file"/>
<param argument="--png-height" type="integer" optional="true" min="1" label="PNG height" help="Height of PNG rendering in pixels (default: 1000)."/>
<param argument="--png-border" type="integer" optional="true" min="0" label="PNG border size" help="Size of PNG border in bp (default: 10)."/>
<param argument="--color-paths" type="boolean" truevalue="--color-paths" falsevalue="" checked="false" label="Color paths in PNG output"/>
<param argument="--scale" type="float" optional="true" min="0" label="Image scaling factor" help="Default: 1.0"/>
<param argument="--border" type="float" optional="true" min="0" label="Image border in approximate bp" help="Default: 100.0"/>
<param argument="--line-width" type="float" optional="true" min="0" label="Line width in approximate bp" help="Default: 0.0"/>
<param argument="--path-line-spacing" type="float" optional="true" min="0" label="Path line spacing in approximate bp" help="Default: 0.0"/>
<param argument="--bed-file" type="data" format="bed" optional="true" label="BED file for node coloring" help="Color nodes based on annotations. Colors from 4th column if present, else from path name."/>
</inputs>
<outputs>
<data name="png_output" format="png" label="${tool.name} on ${on_string}: PNG">
<filter>png</filter>
</data>
<data name="svg_output" format="svg" label="${tool.name} on ${on_string}: SVG">
<filter>svg</filter>
</data>
<data name="tsv_output" format="tabular" label="${tool.name} on ${on_string}: TSV">
<filter>tsv</filter>
</data>
</outputs>
<tests>
<test expect_num_outputs="1">
<param name="idx" value="t.og" />
<param name="coords_in" value="t.lay" />
<param name="png" value="true" />
<param name="svg" value="false" />
<param name="tsv" value="false" />
<output name="png_output" file="draw_out.png" ftype="png" compare="sim_size" delta="5000"/>
</test>
<test expect_num_outputs="2">
<param name="idx" value="t.og" />
<param name="coords_in" value="t.lay" />
<param name="png" value="true" />
<param name="svg" value="true" />
<param name="tsv" value="false" />
<param name="color_paths" value="true" />
<output name="png_output" file="draw_color.png" ftype="png" compare="sim_size" delta="5000"/>
<output name="svg_output" file="draw_out.svg" ftype="svg" />
</test>
<test expect_num_outputs="1">
<param name="idx" value="t.og" />
<param name="coords_in" value="t.lay" />
<param name="png" value="false" />
<param name="svg" value="false" />
<param name="tsv" value="true" />
<output name="tsv_output" file="draw_out.tabular" ftype="tabular" />
</test>
</tests>
<help format="markdown"><![CDATA[
@HELP_HEADER@

`odgi draw` renders previously-computed 2D graph layouts (produced by `odgi layout`) into visual outputs.

### Inputs

- **Input odgi graph**: The graph to draw.
- **Layout coordinates file**: The `.lay` file produced by `odgi layout`.
- **Path index**: Optional path index file.
- **BED file**: Optional annotations to color nodes.

### Outputs

- **PNG**: Rasterized image rendering.
- **SVG**: Vector image rendering.
- **TSV**: Layout coordinates plus annotations as a table.

### Visualization Options

Control the appearance with height, border, scale, line width, path spacing, and path coloring options.
]]></help>
<expand macro="citations"/>
</tool>
Loading
Loading