{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","results":{"codes":[]},"settings":"","params":[]},"next":{"description":"","pages":[]},"title":"About the SDK","type":"basic","slug":"sdk-overview","excerpt":"","body":"##Overview\n\nCavatica allows you to bring your own tools and execute them on the Platform. This is done through our Software Development Kit (SDK) and the process consists of the following steps:\n1. Create a [Docker](#section-docker) image containing the tool and its dependencies. Push the image to [the Cavatica Image Registry](doc:the-image-registry).\n2. Use the [tool editor](#section-the-tool-editor) on Cavatica to create a description of the tool's functionalities. The description is automatically transcribed into the [Common Workflow Language (CWL)](#section-the-common-workflow-language). This process is also known as *wrapping*.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/82494cf-cavatica_sdk_flow.png\",\n        \"cavatica_sdk_flow.png\",\n        1587,\n        784,\n        \"#a2acad\"\n      ]\n    }\n  ]\n}\n[/block]\nThis means that there is no need to reconfigure your existing command line tools to meet any proprietary format. Additionally, the tools remain runnable across a diverse range of infrastructures should you want to use them on different platforms.\n\nA list of common terms and concepts related to bringing your own tools to Cavatica is provided in the following sections.\n\n## Docker\nYou can use [Docker](doc:docker-basics) to build and run Docker containers containing your tools, along with their dependencies. Then, you can push snapshots of these containers, called images, to the [Cavatica Image Registry](doc:the-image-registry), which is housed on our computational platform, or to Docker hub – Docker's own image registry. The tools you have installed will be run inside the containers on Cavatica.\n\n## The Tool Editor\nHaving uploaded a Docker image containing your tool to the image registry, you can specify its behavior, including its inputs and outputs, runtime requirements, and execution semantics. The specification is entered using the [Tool Editor](doc:about-the-tool-editor). It allows the tool to be used on Cavatica to interface with other arbitrary tools.\n\n## The Common Workflow Language\n\nThe specification of your tool that you enter using the [Tool Editor](doc:about-the-tool-editor) will be automatically transcribed into the Common Workflow Language (CWL). This is a community developed, open specification for bioinformatics workflows.\nWorkflows constructed on Cavatica can also be described using the CWL. This supports reproducibility of workflows in two ways:\n\n**1. CWL specifications are exhaustive:**\n\nThe CWL specifies all configurable details of a workflow execution, right down to each tool's parameterization and the configuration of the environment in which the tools are executed.\nThis information is provided and stored for every workflow you run on Cavatica. It allows you to easily reference any results obtained, and to provide colleagues with all the information they need to run identical executions.\n\n**2. CWL specifications are platform-agnostic:**\n\nSince the CWL is an open specification, workflows described using it can be executed on any platform that supports the specification.\n[block:callout]\n{\n  \"type\": \"success\",\n  \"body\": \"If you are familiar with the Common Workflow Language you are free to upload your own Common Workflow Language description of the tool's behavior.\",\n  \"title\": \"An alternative to the Tool Editor\"\n}\n[/block]","updates":[],"order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"589dcf9aa8c63b3b00c37050","version":{"version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["5773dcfc255e820e00e1cd51","5773df36904b0c0e00ef05ff","577baf92451b1e0e006075ac","577bb183b7ee4a0e007c4e8d","577ce77a1cf3cb0e0048e5ea","577d11865fd4de0e00cc3dab","578e62792c3c790e00937597","578f4fd98335ca0e006d5c84","578f5e5c3d04570e00976ebb","57bc35f7531e000e0075d118","57f801b3760f3a1700219ebb","5804d55d1642890f00803623","581c8d55c0dc651900aa9350","589dcf8ba8c63b3b00c3704f","594cebadd8a2f7001b0b53b2","59a562f46a5d8c00238e309a","5a2aa096e25025003c582b58","5a2e79566c771d003ca0acd4","5a3a5166142db90026f24007","5a3a52b5bcc254001c4bf152","5a3a574a2be213002675c6d2","5a3a66bb2be213002675cb73","5a3a6e4854faf60030b63159","5c8a68278e883901341de571","5cb9971e57bf020024523c7b","5cbf1683e2a36d01d5012ecd","5dc15666a4f788004c5fd7d7","5eaff69e844d67003642a020","5eb00899b36ba5002d35b0c1","5eb0172be179b70073dc936e","5eb01b42b36ba5002d35ebba","5eb01f202654a20136813093","5eb918ef149186021c9a76c8","5f0839d3f4b24e005ebbbc29"],"_id":"5773dcfc255e820e00e1cd50","__v":34,"createdAt":"2016-06-29T14:36:44.812Z","releaseDate":"2016-06-29T14:36:44.812Z","project":"5773dcfc255e820e00e1cd4d"},"__v":0,"project":"5773dcfc255e820e00e1cd4d","category":{"sync":{"isSync":false,"url":""},"pages":[],"title":"BRING YOUR TOOLS","slug":"sdk-overview","order":6,"from_sync":false,"reference":false,"_id":"5eb00899b36ba5002d35b0c1","createdAt":"2020-05-04T12:20:41.310Z","version":"5773dcfc255e820e00e1cd50","project":"5773dcfc255e820e00e1cd4d","__v":0},"createdAt":"2017-02-10T14:35:06.330Z","githubsync":"","parentDoc":null,"user":"575e85ac41c8ba0e00259a44"}
##Overview Cavatica allows you to bring your own tools and execute them on the Platform. This is done through our Software Development Kit (SDK) and the process consists of the following steps: 1. Create a [Docker](#section-docker) image containing the tool and its dependencies. Push the image to [the Cavatica Image Registry](doc:the-image-registry). 2. Use the [tool editor](#section-the-tool-editor) on Cavatica to create a description of the tool's functionalities. The description is automatically transcribed into the [Common Workflow Language (CWL)](#section-the-common-workflow-language). This process is also known as *wrapping*. [block:image] { "images": [ { "image": [ "https://files.readme.io/82494cf-cavatica_sdk_flow.png", "cavatica_sdk_flow.png", 1587, 784, "#a2acad" ] } ] } [/block] This means that there is no need to reconfigure your existing command line tools to meet any proprietary format. Additionally, the tools remain runnable across a diverse range of infrastructures should you want to use them on different platforms. A list of common terms and concepts related to bringing your own tools to Cavatica is provided in the following sections. ## Docker You can use [Docker](doc:docker-basics) to build and run Docker containers containing your tools, along with their dependencies. Then, you can push snapshots of these containers, called images, to the [Cavatica Image Registry](doc:the-image-registry), which is housed on our computational platform, or to Docker hub – Docker's own image registry. The tools you have installed will be run inside the containers on Cavatica. ## The Tool Editor Having uploaded a Docker image containing your tool to the image registry, you can specify its behavior, including its inputs and outputs, runtime requirements, and execution semantics. The specification is entered using the [Tool Editor](doc:about-the-tool-editor). It allows the tool to be used on Cavatica to interface with other arbitrary tools. ## The Common Workflow Language The specification of your tool that you enter using the [Tool Editor](doc:about-the-tool-editor) will be automatically transcribed into the Common Workflow Language (CWL). This is a community developed, open specification for bioinformatics workflows. Workflows constructed on Cavatica can also be described using the CWL. This supports reproducibility of workflows in two ways: **1. CWL specifications are exhaustive:** The CWL specifies all configurable details of a workflow execution, right down to each tool's parameterization and the configuration of the environment in which the tools are executed. This information is provided and stored for every workflow you run on Cavatica. It allows you to easily reference any results obtained, and to provide colleagues with all the information they need to run identical executions. **2. CWL specifications are platform-agnostic:** Since the CWL is an open specification, workflows described using it can be executed on any platform that supports the specification. [block:callout] { "type": "success", "body": "If you are familiar with the Common Workflow Language you are free to upload your own Common Workflow Language description of the tool's behavior.", "title": "An alternative to the Tool Editor" } [/block]