Academy Documentation
  • Usage of Academy Documentation
  • Getting Started
    • Background Information
    • For Apollo Users
    • For Titan Users
    • For Scientists
    • For HPC Users
    • For Experienced Users
  • Cloud Computing
    • General Information
    • Cloud Computing for Scientists
    • Cloud Computing for HPC Users
  • Overview of the Platform
    • Overview of the Platform User Interface
    • Tool Library and App Introduction
  • Billing Access and Orgs
    • Orgs and Account Management
    • Billing and Pricing
  • Cohort Browser
    • Apollo Introduction
    • Overview of the Cohort Browser
    • Combining Cohorts
    • Genomic Variant Browser
    • Somatic Variants
  • JSON
    • Introduction
    • JSON on the Platform
  • Command Line Interface (CLI)
    • Introduction to CLI
    • Advanced CLI
  • Building Applets
    • Introduction
    • Bash
      • Example 1: Word Count (wc)
      • Example 2: fastq_quality_trimmer
      • Example 3: samtools
      • Example 4: cnvkit
      • Example 5: samtools with a Docker Image
    • Python
      • Example 1: Word Count (wc)
      • Example 2: fastq_quality_trimmer
      • Example 3: cnvkit
    • Publishing Applets to Apps
  • Building Workflows
    • Native Workflows
    • WDL
      • Example 1: hello
      • Example 2: Word Count (wc)
      • Example 3: fastq_trimmer
      • Example 4: cnvkit
      • Example 5: workflow
    • Nextflow
      • Resources To Learn Nextflow
      • Overview of Nextflow
      • Nextflow Setup
      • Importing Nf-Core
      • Building Nextflow Applets
      • Error Strategies for Nextflow
      • Job Failures
      • Useful Information
  • Interactive Cloud Computing
    • Cloud Workstation
    • TTYD
    • TTYD vs Cloud Workstation
    • JupyterLab
      • Introduction
      • Running a JupyterLab Notebook
  • Docker
    • Using Docker
    • Creating Docker Snapshots
    • Running Docker with Swiss Army Knife
  • Portals
    • Overview of JSON files for Portals
    • Branding JSON File
    • Home JSON File
    • Navigation JSON File
    • Updating Your Portal
  • AI/ ML Accelerator
    • Data Profiler
      • Introduction to Data Profiler
      • Utilizing Data Profiler Navigator
      • Dataset Level Screen
      • Table Level Screen
      • Column Level Screen
      • Explorer Mode
      • Accessing Data Profiler in ML JupyterLab
    • ML JupyterLab
      • Introduction to ML JupyterLab
      • Launching a ML JupyterLab Job
      • In App Features
      • Getting Started with ML JupyterLab
    • MLflow
      • Introduction to MLflow
      • Getting Started with MLflow
      • Using MLflow Tracking Server
      • Model Registry
      • Using Existing Model
      • Utilizing MLflow in JupyterLab
Powered by GitBook
On this page
  • Why would you transition from an applet to an app?
  • Differences between an App and Applet
  • Checklist of items to keep in mind:
  • To Publish the App
  • Helpful Trick
  • Resources

Was this helpful?

Export as PDF
  1. Building Applets

Publishing Applets to Apps

Why would you transition from an applet to an app?

Applet

App

Purpose

Early development, experiment with analyses

Applet is stable, ready to use and possibly moved to a wider audience

Perks of Each

Easy to collaborate, members of the project can edit the code, and publish

Once published, the app cannot be modified version control enforced can carry assets in their own private container.

Goal

Adding executable in to an application for increased efficiency in usage + ability to edit code efficiently

Adding executable in to an application for increased efficiency in usage + enhance reproducibility and minimize risk

Differences between an App and Applet

Applets

Apps

Location

in projects

in the Tool Library, if you are the developer or an authorized user

Naming Structure

project:/applet_ID

project:/folder/name

app-name

Can they be shared?

Through projects, as a data object

App developer manages a list of users authorized to access the app

Updating

Deleting the previous applet with the same name, and creating a new one

New version per release

Versioning

None is present at the applet creation

Each time the app is built, it must be given a new version.

Checklist of items to keep in mind:

When publishing an app, the following items are needed:

  1. A working applet that you have tested

  2. A name that is unique. Generally, the recommendation is to have an abbreviation for your org as part of the name. Example: If the org is named “academy_demos” and the app is for fastqc, then the name of the app could be “academy-fastqc”, “academy_demo-fastqc”, or “academydemo-fastqc”.

  3. Documentation to add to a README.md for users to understand what your app does

  4. Developer notes for you to keep track of version information and added to the Developer README.md

  5. A default spending account set up for yourself as the app author. For published apps, they will require storage for their resources and assets, and the storage will be billed on a monthly basis to the billing account of the original author of each app. You can set multiple authors, but the original author is where the billing is tied to.

  6. Decide if you want the app to be open source. In dxapp.json, add a key called "openSource" with a boolean value of true or false.

  7. A consistent version policy for your meaningful updates. DNAnexus suggests Semantic Versioning.

  8. Add authorized users. In dxapp.json, add a key called "authorizedUsers" with a value being an array of strings, corresponding to the entities allowed to run the app. Entities are encoded as user-username for single users, or org-orgname for organizations.

To Publish the App

  1. Use dx get applet-name to have the most recent version of your applet

  2. Make your changes to the dxapp.json

  3. Then use dx build app_name --publish --app

Helpful Trick

  • Forget to add users or need to add more users? Use:

dx add users USER OR ORG NAME OF APP

Resources

To create a support ticket if there are technical issues:

  1. Go to the Help header (same section where Projects and Tools are) inside the platform

  2. Select “Contact Support”

  3. Fill in the Subject and Message to submit a support ticket.

PreviousExample 3: cnvkitNextBuilding Workflows

Last updated 8 days ago

Was this helpful?

Transitioning from Applets to Apps
App Metadata