Custom app
In many cases the Platform allows you to use apps and workflows you’ve developed in another environment. This page provides a rundown on how to import apps or workflows of a wide variety of types.
Last updated
Was this helpful?
In many cases the Platform allows you to use apps and workflows you’ve developed in another environment. This page provides a rundown on how to import apps or workflows of a wide variety of types.
Last updated
Was this helpful?
If you haven’t already, download and install the dx-toolkit, and familiarize yourself with basic dx commands. When working from the CLI, you’ll use the dx-toolkit to perform various tasks in the course of importing, configuring, and running apps and workflows.
Your apps and workflows must have access to any files they need as inputs. If any input file is not already in the project in which you intend to use a particular app or workflow, upload that file to the project in question.
Learn about the basic steps for how to build an app following these instructions. Additional information on the infrastructure that you'll need to know to build your app can be found here.
The Platform supports executing Docker images. Using a Docker image to package and run your app ensures your app can access, and you have full control over, dependencies, configurations settings, and all needed files. See these instructions for a detailed explanation of how to set up and run Docker images on the Platform.
If your app can run on 64-bit Ubuntu Linux, you can package it to run on the Platform. Follow these instructions from the DNAnexus Platform documentation, to import, configure, test, and run your app. You’ll use the dx-app-wizard to set up the proper directory structure to run your app on the platform.
The “Apps” section of the DNAnexus Platform documentation provides further guidance on how to configure your app, and how to upload and ensure it has access to dependencies and input files.
You can run your R/-Shiny app on the Platform by wrapping it as a special DNAnexus web app, then accessing it using a web browser. See these instructions on how to do so.
The Stata app itself does not run on the Platform. If you have a Stata license, you can use stata_kernel to access Stata commands and functionality within a Jupyter notebook running on the Platform. See these instructions on how to do this.
To ssh into your Platform project, then run a script on the command line, use the Cloud Workstation app.
There are third-party tools available that can compile a C++ app to run on 64-bit Ubuntu Linux. Once you’ve done so, you can then wrap the newly created Linux app as a Platform app or applet, following the instructions above.
To facilitate reproducibility in working with data, the DNAnexus Platform supports the use of WDL and Nextflow workflows.
Converting scripts to WDL workflows ensures reproducibility and allows your workflows to be easily published and shared. Use dxCompiler to compile WDL workflows so that they can be run on the Platform.
Nextflow workflows can be run from the command line in a Cloud Workstation session, or in a Jupyter notebook.
Using a Docker image, you can configure and package your Bash script, along with its dependencies and inputs, then run it on the Platform.
Bash scripts can also be run on the Platform using the Cloud Workstation app, which provides command-line access via ssh, or in a Jupyter notebook. To ensure reproducibility of results and make your workflow more easily shareable, convert it to WDL or Nextflow format, before uploading it to the Platform.
For general tips on troubleshooting, see guide.
Could not find input
Could not find index of <file name>
Make sure that your input file is specified in the section in the dxapp.json
file, under inputSpec
Also make sure that you add these lines to the echo
and dx download
sections in the code.sh
Timeout exceeded
job timeout 48.000h has been exceeded
If the analysis/process needs a larger number of cores or requires a longer processing time then there are a couple of options:
At the time of execution, you can extend the timeout policy or specify the instance type (see example for extending the timeout for the REGENIE app):
dx run app-regenie --instance-type mem2_ssd1_x2 --extra-args '{
"timeoutPolicyByExecutable": {
"app-MAIN_REGENIE_APP_ID": {
"*": { "hours": 12 }
},
"app-STEP1_APP_ID": {
"*": {"hours": 200}
},
"app-STEP2_APP_ID": {
"*": {"hours": 200 }}}}'
When building the applet, you can set the timeout policy and instance type in the dxapp.json file when you build the applet:
"timeoutPolicy": {
"main": {
"hours": 72 },
…
"systemRequirements": {"*": {"instanceType": "mem2_ssd1_x2"}}
More about dxapp.json parameters can be found here.