OmicNavigator

bioinformatics

Open-source software for omic data analysis and visualization

John Blischak https://jdblischak.com
12-03-2021

tl;dr We built an interactive web app for exploring the results of genomics assays: OmicNavigator. You input your data with R, and then OmicNavigator instantly creates a dynamic web app for you to use and share with your collaborators! Available from CRAN and GitHub.

Overview: Facilitating collaborative omics research

The motivation to build OmicNavigator arose from the desire to improve research projects at AbbVie that involved high-throughput omics assays. These are highly collaborative projects that require expertise of both disease specialists and bioinformaticians. The disease specialists need to explore the results in-depth, but they are often dependent on the bioinformaticians to query and visualize the data. And the bioinformaticians’ time is best spent on performing statistical analyses and generating custom visualizations. Any time spent generating generic boxplots or yet another basic Shiny app is time they could have spent on more high-value activities. OmicNavigator to the rescue! OmicNavigator aims to facilitate these routine interactions and streamline the research project for all participants:

App features

The app has two main panes: one for differential expression results and one for enrichment results.

The differential expression pane includes:

Screenshot of differential expression pane (R package version 1.8.0 and web app version 1.4.0)
Screenshot of differential expression pane (R package version 1.8.0 and web app version 1.4.0)

The enrichment analysis pane includes:

Screenshot of enrichment analysis pane (R package version 1.8.0 and web app version 1.4.0)
Screenshot of enrichment analysis pane (R package version 1.8.0 and web app version 1.4.0)

There are even more existing features, e.g. custom plots for visualizing multiple features at once, and more features in development, but the above should give you a good sense of the app’s capabilities.

Create an OmicNavigator study with your own data

After performing the statistical analysis, the bioinformatician deposits the data into an OmicNavigator study. This should require minimal data manipulation since OmicNavigator provides helper functions to ingest data frames directly in R. Once assembled, OmicNavigator exports the data as an R package for consumption by the web app.

And you don’t need to include every single piece of potential data. The app only enables the features that are supported based on the available data. For example, if you didn’t perform an enrichment analysis, you can still use OmicNavigator to share differential expression results.

Below is a quick start guide to give you an idea of how this works. To learn more, check out the extensive User’s Guide and example study.

# Install and load the package
install.packages("OmicNavigator", dependencies = TRUE)
library(OmicNavigator)

# Create a very minimal study with a single results table
quickstart <- createStudy("quickstart")
data("RNAseq123")
head(basal.vs.lp)
resultsTable <- basal.vs.lp[, -2:-3]
quickstart <- addResults(quickstart, list(model = list(test = resultsTable)))
installStudy(quickstart)

# (optional) Install the example study RNAseq123 which demos many of the app's
# available features
install.packages(c("gplots", "viridis"))
tarball <- "https://github.com/abbvie-external/OmicNavigatorExample/releases/latest/download/ONstudyRNAseq123.tar.gz"
install.packages(tarball, repos = NULL)

# Install and start the web app
installApp()
startApp()

Architecture

The central piece of infrastructure is OpenCPU, an amazing framework for creating web apps with R. The basic idea behind OpenCPU is that is exposes all the functions in the R packages installed on the machine via a uniform HTTP API. This makes it possible for web apps to harness the power of R without R developers having to perform extra steps to make their code deployable.

This is an incredibly powerful paradigm. It lets me as the R developer use all the tools I am familiar with. My code is organized as an R package, my functions are documented, and I’m able to easily test my functions since they return standard R objects like lists and data frames. Then my collaborators developing the front-end JavaScript app are able to call my R functions via HTTP and request JSON formatted data in return. They don’t have to worry about R-specific things like data frames and factors; in fact, they don’t even need to install R! They are able to focus on the front-end using whichever tools they prefer, in this case React and D3.

And because OpenCPU is serving the R functions via a standard HTTP API, other developers can query and access the data for inclusion in other apps throughout the organization. By default OpenCPU provides many options for output formats, including JSON, NDJSON, and protocol buffers.

In summary, OpenCPU allows us to take advantage of the best of the R and JavaScript ecosystems.

Comparison to other dashboard-like tools

There are lots of options for creating dashboards. OmicNavigator aims to complement these existing options. OmicNavigator provides dynamic web app capabilities to the R user while also allowing them to customize the app with bespoke plotting functions.

To best illustrate how OmicNavigator fits in, below I compare it to some other available options:

Acknowledgements

OmicNavigator is the brain child of Brett Engelmann. The web app has been primarily developed by Paul Nordlund, Terry Ernst, and Joe Dalen. Additional contributors include Justin Moore, Akshay Bhamidipati , and Marco Curado.

And of course thanks to AbbVie for supporting the development of this open source tool!

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. Source code is available at https://github.com/jdblischak/blog.jdblischak.com, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

Citation

For attribution, please cite this work as

Blischak (2021, Dec. 3). John Blischak's blog: OmicNavigator. Retrieved from https://blog.jdblischak.com/posts/omicnavigator/

BibTeX citation

@misc{blischak2021omicnavigator,
  author = {Blischak, John},
  title = {John Blischak's blog: OmicNavigator},
  url = {https://blog.jdblischak.com/posts/omicnavigator/},
  year = {2021}
}