|
| 1 | +--- |
| 2 | +title: "Specifying Software Requirements" |
| 3 | +teaching: 10 |
| 4 | +exercises: 0 |
| 5 | +questions: |
| 6 | +- "How do I specify requirements/dependencies for a job?" |
| 7 | +- "What level of detail should I provide for a software requirement?" |
| 8 | +objectives: |
| 9 | +- "Learn how to write software requirement descriptions." |
| 10 | +- "Learn how to use SciCrunch to retrieve a unique identifier for a tool/version |
| 11 | +that is required." |
| 12 | +keypoints: |
| 13 | +- "Software requirements should be specified under `hints:SoftwareRequirement`." |
| 14 | +--- |
| 15 | +Often tool descriptions will be written for a specific version of a software. To |
| 16 | +make it easier for others to make use of your descriptions, you can include a |
| 17 | +`SoftwareRequirement` field in the `hints` section. |
| 18 | +This may also help to avoid confusion about which version of a tool the |
| 19 | +description was written for. |
| 20 | + |
| 21 | +~~~ |
| 22 | +{% include cwl/custom-types.cwl %} |
| 23 | +~~~ |
| 24 | +{: .source} |
| 25 | + |
| 26 | +In this example, the software requirement being described is InterProScan |
| 27 | +version 5.21-60. |
| 28 | + |
| 29 | +~~~ |
| 30 | +hints: |
| 31 | + SoftwareRequirement: |
| 32 | + packages: |
| 33 | + interproscan: |
| 34 | + specs: [ "https://identifiers.org/rrid/RRID:SCR_005829" ] |
| 35 | + version: [ "5.21-60" ] |
| 36 | +~~~ |
| 37 | +{: .source} |
| 38 | + |
| 39 | +Depending on your CWL runner, these hints may be used to check |
| 40 | +that required software is installed and available before the job is run. To enable |
| 41 | +these checks with the reference implementation, use the [dependency resolvers configuration][dependencies]. |
| 42 | + |
| 43 | +As well as a version number, a unique resource identifier (URI) for the tool is |
| 44 | +given in the form of an [RRID][rrid]. Resources with RRIDs can be looked up in the |
| 45 | +[SciCrunch][scicrunch] registry, which provides a portal for finding, tracking, |
| 46 | +and referring to scientific resources consistently. If you want to specify a |
| 47 | +tool as a `SoftwareRequirement`, search for the tool on SciCrunch and use the |
| 48 | +RRID that it has been assigned in the registry. (Follow [this tutorial][scicrunch-add-tool] |
| 49 | +if you want to add a tool to SciCrunch.) You can use this RRID to refer |
| 50 | +to the tool (via [identifiers.org][identifiers]) in the `specs` field of your |
| 51 | +requirement description. Other good choices, in order of preference, are to |
| 52 | +include the DOI for the main tool citation and the URL to the tool. |
| 53 | + |
| 54 | + |
| 55 | +[rrid]: https://scicrunch.org/resources/about/resource |
| 56 | +[scicrunch]: https://scicrunch.org/ |
| 57 | +[dependencies]: https://github.com/common-workflow-language/cwltool#leveraging-softwarerequirements-beta |
| 58 | +[identifiers]: https://identifiers.org/ |
| 59 | +[scicrunch-add-tool]: https://scicrunch.org/page/tutorials/336 |
0 commit comments