Skip to content

Commit 397769d

Browse files
authored
Merge pull request #463 from common-workflow-language/hmenager-patch-1
Create cli-description-languages-comparison.md
2 parents 0cd5307 + cab882c commit 397769d

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Comparison of Command Line Interface description languages
2+
3+
## Compared languages
4+
5+
* Galaxy v17.05: https://github.com/galaxyproject/galaxy/blob/release_17.05/lib/galaxy/tools/xsd/galaxy.xsd
6+
* CTD v1.7.0 : https://github.com/WorkflowConversion/CTDSchema/blob/Version_1_7_0/CTD.xsd
7+
* CWL v1.0: http://www.commonwl.org/v1.0/CommandLineTool.html / https://github.com/common-workflow-language/common-workflow-language/blob/master/v1.0/CommandLineTool.yml
8+
9+
## Summary
10+
11+
### Tool description
12+
CTD reflects the perspective of a tool author targetting the KNIME processing unit approach ("nodes"), whereas
13+
Galaxy reflects the perspective of a platform centered around non-developer users interacting with a graphical interface.
14+
15+
### Parameters description
16+
17+
### Data/parameter types
18+
The typing system for parameters in CTD itself is simpler than the other two, providing mainly support for simple types and input/output files, but excluding arrays/lists and complex types. Galaxy adds GUI specific features (`select`, `drill_down`), domain specific features (`color`, `genome_build`, `data_column`), configuration of web services (`base_url`), and tighter integration with workbench internal data management (`library_data`).
19+
20+
### Command line generation
21+
All of the specifications include a flexible set of possibilities for the generation of command lines, reflecting the effective heterogeneity of the bioinformatics tools ecosystem ;)
22+
23+
## Comparison table
24+
25+
### Tool level
26+
27+
|Galaxy information |Optional |CTD information |Optional |CWL information |Optional |
28+
|---|---|---|---|---|---|
29+
|*description* |X |description |X |label |X |
30+
|*help* |X |*manual* |X |*doc* |X |
31+
|*citation* |X |*citation* (for the underlying tool, DOI or doc URL) |X |*SoftwareRequirement.name.specs* (URI) |X |
32+
| | |*ExecutableName* (overrides the name attribute) |X |*SoftwareRequirement.name.baseCommand[0]* |X |
33+
| | |*ExecutablePath* (specific path to the executable) |X | | |
34+
|*command*+*argument* under parameter | |*CLItype* list of input commands with elements mapping |X | *arguments* and/or *inputBindings* |X |
35+
| | |*logs* (retrospective on execution information - if so probably out of scope)|X | | |
36+
|*tool/outputs/data/@from_work_dir* (name of file to consume) |X |*relocators* (list of parameters, path pairs)|X |*outputBinding* |X |
37+
|*@version* (version of wrapper) |X |*@version* (apprarently version of the tool itself)| |*SoftwareRequirements.name.version* (list of known compatible versions of the underlying tool |X |
38+
|*@name* (just an identifier, not used to build the command itself)||*@name* (also used to build the command itself, unlesss *ExecutableName* is provided)| |baseCommand[0]|X|
39+
|often part of the *help* text|X|*docURL* (URL to documentation)||||
40+
|*edam_topics* and *edam_operations* - categories are external to tool definition, in per-server config (toolconf.xml)|X|*category* (any string)|X|can use EDAM or other 3rd party annotation or derive via identifier from external registry or datatype|
41+
|(often part of help text)|X|*tags*|X|||
42+
43+
### Parameter level
44+
45+
**Important remark** The structure of the CTD file is slightly different, because it explicitely allows the definition of "sub-tools" through a nested structure of NODE/ITEM elements. A node is a subgroup of parameters, and ITEM is a parameter.
46+
Therefore, to focus on Parameter-level information, we consider only the ITEM element here for parameter description in CTD.
47+
48+
|Galaxy information |Optional |CTD information |Optional |CWL information |Optional |
49+
|---|---|---|---|---|---|
50+
| *param* or *data* | | *ITEM* | | *inputs[n]* or *outputs[n]* | |
51+
|*@name*||*@name*||key of *inp|uts* or *outputs* entry||
52+
|*@type*||*@type* (Defines the possible types available in the type attribute of ITEM and ITEMLIST.)||type||
53+

0 commit comments

Comments
 (0)