Toolshed Yaml File¶
The .shed.yml
file provides a way for developers using the awesome planemo to easily push their tools to
toolshed repositories.
name: package_aragorn_1_2_36
owner: iuc
description: Contains a tool dependency definition that downloads and extract version
1.2.36 of Aragorn.
homepage_url: http://mbio-serv2.mbioekol.lu.se/ARAGORN/
long_description: |
ARAGORN, tRNA (and tmRNA) detection.
http://www.ncbi.nlm.nih.gov/pubmed/14704338
remote_repository_url: https://github.com/galaxyproject/tools-iuc/tree/master/packages/package_aragorn_1_2_36
type: tool_dependency_definition
categories:
- Tool Dependency Packages
Parameter | Value |
---|---|
name | This is the package or tool’s name. It is usually the name of the folder that contains the .shed.yml file. This should be package_$name_$version for packages, and $name for tools |
owner | Your toolshed username |
description | A short description of the package or tool set |
homepage_url | This value is currently under debate, but we recommend reading over #1. |
long_description | A longer README type description of the package, as tool dependencies do no currently support README files. |
remote_repository_url | This should be the path to the folder in your github repository, on the branch you create releases from (usually master). This will eventually be used with the toolshed for update hooks. |
type | The repository type, one of unrestricted , tool_dependency_definition , or repository_suite_definition |
categories | Toolshed categories that are relevant to the tool or package. |
A note on the name
attribute: as periods are disallowed in repository names, we recommend replacing periods in the version number with underscores.
Repository Type | Recommended Name | Examples |
---|---|---|
Data Managers | data_manager_$name |
data_manager_bowtie2 |
Packages | package_$name_$version |
package_aragorn_1_2_36 |
Tool Suites | suite_$name |
suite_samtools |
Tools | $name |
stringtie , bedtools |
Advanced Parameters¶
Currently there exists a tension between what is best for developers (storing all tools in a single repository - e.g.ncbi_blast_plus
orbedtools
) and what is best for Galaxy users (storing a single repository per tool and collecting them together with a suite - e.g.samtools
orgatk
).
Thus a number of advanced parameters were added for helping developers manage suites of tools.
auto_tool_repositories:
name_template: "{{ tool_id }}"
description_template: "Wrapper for samtools application {{ tool_name }}."
suite:
name: "suite_samtools_1_2"
description: "A suite of Galaxy tools designed to work with version 1.2 of the SAMtools package."
long_description: |
SAM (Sequence Alignment/Map) format is a generic format for storing large nucleotide sequence
alignments. This repository suite associates selected repositories containing Galaxy utilities that require
version 1.2 of the SAMTools package. These associated Galaxy utilities consist of a Galaxy Data
Manager contained in the repository named data_manager_sam_fasta_index_builder and Galaxy tools
contained in several separate repositories.
This example assumes the .shed.yml
file is placed in a “flat” directory with each samtools tool
wrapper. Planemo will create and update repositories for each individual tool given the specified
templates in auto_tool_repositories. The suite key here will auto-generate a suite repository for
all of these tools and will automatically created the corresponding repository_dependencies.xml to
populate it with (this is generated during shed_upload and never needs to exist in your repository).
Again this example is admittedly idealized, but if auto_tool_repositories
is
not specified, a repositories list can be specified instead. There are some
examples of this in the planemo’s test data:
- This .shed.yml is a simple example of specifying custom repositories for individual tools.
- This demonstrates complex inclusions files from sub-directories and renaming.
The test data also includes some more advanced usages of the suite key as well - specifically using it without auto_tool_repositories as a generic replacement for repository_dependencies.xml and adding additional dependent repositories in addition to the ones defined by the .shed.yml file.
Shed Upload Includes/Excludes¶
Sometimes it is of interest to have shared data in a single directory, and then to include
that
when needed. A good example of this are the blast
wrappers which take advantage of the feature in order to share test data amongst a number of
directories which all need the data.
include:
- strip_components: 2
source:
- ../../test-data/blastdb.loc
- ../../test-data/blastdb_d.loc
- ../../test-data/blastdb_p.loc
- ../../test-data/blastn_arabidopsis.extended.tabular
This snippet informs planemo that it should include specific datasets from ../../test-data
and
that as part of the include process it should strip the first two path components.
The exclude
functionality works similarly, just specify a list of paths you wish
to exclude:
exclude:
- test-data/my-gigantic-test-dataset.fastq