Drylab
Sites

Turn an Analysis into a Reusable App

Turn an analysis you've run once, such as RNA-seq differential expression, into an app that reruns the same method on new data.

Once an analysis works, you'll be asked to run it again on the next dataset, and the next. Turn it into an app instead: the method is fixed, and anyone can run it on new data by picking files and clicking through a form.

Why you'd use it

  • The same request keeps coming back. "Can you run the DE on my new counts?" takes minutes in an app instead of an afternoon of your time.
  • One method for the whole lab. The filters, model and plots are written into the app, so results from different people and months stay comparable.
  • New data, not old results. The app runs on whatever files you give it today. It isn't a snapshot of one past analysis.

Example: RNA-seq differential expression

You ran a paired tumor vs normal DE in a chat with DESeq2 and your lab's gene filter. Wet-lab colleagues get new count tables from the core every month. You turn that chat into an app where they pick their counts and metadata, choose the groups, and get the same volcano plot and gene table, then save the results.

Prompt to build the app

Send it in the chat where you ran the analysis, so Drylab reuses the same method:

Turn the DE analysis we just ran into an app others can run on their own data. Let the user pick counts.csv and metadata.csv from their vault or upload them, choose the condition column and the two groups to compare, and optionally a pairing column. Require raw integer counts and refuse TPM or FPKM tables with a clear message. Run DESeq2 with our filter (genes with at least 10 reads in total). Show a volcano plot with sliders for adjusted p-value and log2 fold change, the number of genes up and down, a PCA and a searchable gene table. Add buttons to download or save de_results.csv and volcano.pdf, a Load example button, and a help panel that lists the required columns.

Proteomics differential abundance:

Build an app where the user picks a MaxQuant proteinGroups.txt from their vault or uploads it, with a sample sheet that assigns each LFQ intensity column to a group. Remove contaminants and reverse hits, log2-transform, keep proteins quantified in at least 3 samples per group, run limma between the two groups, and show a volcano plot and a searchable table. Let them save limma_results.csv.

Gene set enrichment:

Build an app that runs GSEA on a ranked gene list. The user picks or uploads a table with gene and a ranking metric (for example the DESeq2 stat column), chooses human or mouse, whether genes are symbols or Ensembl IDs, and Hallmark or GO Biological Process, and sees the top pathways with enrichment plots. Let them save gsea_results.csv.

Steps for you

  1. Send the prompt. Drylab builds the app and shows it in the chat's Site tab.
  2. Test it on the data you analyzed: the numbers should match the chat. Then try a second dataset with different column names.
  3. Ask for changes in the same chat, for example "add a heatmap of the top 50 genes".
  4. When it's ready, share it. See Share an App with Your Lab or Clients.

Steps for people you share with

  1. Open the app and click Pick from Drylab vault. In "Choose files from your vault", tick counts.csv and metadata.csv and click Use files. Or click Upload from device.
  2. Choose the condition column and the two groups, for example tumor vs normal.
  3. Explore the volcano plot and the gene table, and move the cutoffs.
  4. Save the results to their own Vault. See Save App Results Back to Your Vault.

Tips

  • List the required columns in the app's help panel, with an example, so people format their metadata right the first time. Say that it needs raw counts, not TPM.
  • Record the method. Ask the app to write the tool versions and settings into the saved results, so a reviewer can see how each table was made.
  • Ask for clear errors. "If sample IDs in the counts and metadata don't match, say which ones" saves many support emails.
  • Keep heavy steps out of the app when you can. Settle alignment and quantification in a chat; give the app the count table.

On this page