knitr::opts_chunk$set(echo = TRUE)

R/Bioconductor -- with approximately 1,500 software, 325 experiment data and 900 annotation packages and thousands of users -- is highly used in bioinformatics workflows and teaching environments. It is a rich source of both experimental data and annotations, allowing users to quickly connect identifiers that are technology specific to gene/transcript/protein identifiers.

While Bioconductor has many packages for annotation, mapping disease descriptions is a relatively underserved area. An R-based interface to Monarch Ontologies, including the Human Phenotype Ontology (HPO) and the Monarch Disease Ontology (MONDO) would not only increase use of these ontologies, but also enable better open science. Further, we anticipate that the variety of ID and annotation types available in a one-stop manner from Monarch Initiative would be valued by the community.

We are suggesting to develop the monarchr package based on the Bioconductor annotation workflow.

Starting Steps: Using Swagger on the Biolink API

Swagger Codegen is a code generation framework that is helpful in developing API clients for any API that fits the OpenAPI specification. API clients can be developed, tested and deployed in an automated fashion for a number of languages (including R, Python and Rust). In R, we've found a need to further modify the client code. Additionally, we might want to provide additional convenience functions for common tasks that require multiple calls to the API.

Using Swagger Codegen on the Biolink API will be the starting point for the monarchr package, as it generates stubs and auto-documentation in the R Package format. However, putting together the functions into use cases that are useful is the vital next step in development.

Current Mockup: Code and Simple Vignettes

A partially functional example of monarchr with some simple vignettes is available, along with this proposal at:

Development of Monarch Use Cases

Swagger Codegen is just the starting point for monarchr. The core of development will be showcasing uses of monarchr. Especially, but not exclusively, we imagine good use cases exploring phenotype and disease ontologies (esp. MONDO and HPO). This development will be vignette/documentation driven, where Monarch developers and users will describe a use case for monarchr (such as mapping diseases to genes and their homologs). We'll show how to accomplish selected goals in ways that are easily extensible by users.

Submission of monarchr as a Bioconductor annotation package

We are recommending that the package be part of Bioconductor as it has the largest potential audience of users who would want to leverage MONDO and HPO. Doing this would add needed resource/development time to monarchr.

Submission Guidelines to Bioconductor are fairly strict. The data structures output should be current Bioconductor objects (such as ExpressionSet and AnnotatedDataFrame). Bioconductor also has strict instructions on web query packages to ensure that the package continues to work or fails gracefully.

Packages must also pass their nightly build tests on a number of machines. Using a continuous integration framework such as Travis CI will help accomplish this.

Bioconductor is released twice a year. We would target the October 2018 release. Interim releases would be made available on github with easy to follow installation instructions.

Future Directions:

Python Client

Depending on funding, it is possible to use Swagger to generate and showcase an API Client for Python as well. The package community for Python in biology is less organized and less centralized than for Bioconductor. A main set of tools is offered by biopython. We would demonstrate the client in conjunction with many common biopython tasks.

Outreach

Depending on funding, the July 2018 Bioconductor conference BioC 2018 might be a useful place to introduce the R community to monarchr. Additionally it might be the best place to seek feedback and further elaborate on vignette goals.



charlieccarey/monarchr documentation built on Dec. 12, 2023, 12:57 p.m.