Skip to content

Interactive Ideogram Visualization

João Pedro edited this page Mar 25, 2018 · 14 revisions

Interactive Ideogram Visualization

Background

This project aims to provide a R interface to Ideogram.js, integrate it with bioconductor infrastructures and possibly provide an interactive whole-genome exploring tool combining with other visualization components.

In R, there are already many packages for static visualization of chromosomes, with different levels of flexibility and functionalities. These packages include IdeoViz, chromPlot, ggbio, karyoploteR, and Gviz (showing single chromosome ideogram as a track). Since all these packages are based on R’s graphics system and none of them offer the ability to interactively explore the genome (e.g. with other visualization components).

Ideogram.js is a JavaScript library for chromosome visualization. It can be used for interactive visualization of chromosomes of different species, showing cytobands, showing annotations along the chromosomes, showing position mapping (e.g. homology) between different chromosomes, etc. See the live examples.

There is already a simple R interface to the Ideogram.js library at freestatman/ideogRam as a proof of concept. The main purpose of this project is to improve this interface and integrate it with bioconductor infrastructures (e.g. to support S4 classes like GRanges as annotation data).

Moreover, the most important feature that the package may provide over static visualization is the ability to combine with other visualization packages to interactively exploring the whole genome. This can be accomplished by providing JavaScript callbacks linking to the JavaScript events (e.g. clicking, brushing) in ideogram to send messages from JavaScript to R under the shiny framework and using other visualization packages to explore the genome under the selected locations or chromosomes. One such package that can be combined with to interactively show the genomic features is TnT, which is implemented in GSoC 2017.

Related work

As described above, there are existing R packages for static visualization of chromosomes, including IdeoViz, chromPlot, ggbio, karyoploteR and Gviz.

Details of your coding project

Provide an improved interface as a R package to the Ideogram.js, which should:

  1. Wrapping most of the options in Ideogram api in a user-friendly manner.
  2. Perform checking of the inputs to prevent any error going into the JavaScript side.
  3. Support supplying annotation data with classes defined in bioconductor packages (e.g. GRanges).
  4. Provide functions to generate some specialized visualization, for example, showing mapping of positions between different chromosomes.
  5. With proper documentation and a vignette, as well as unit tests.

If time allows, we can also try to build a tool integrating the functionality of Ideogram.js and TnT. It can be accomplished either under the shiny framework as described in background, or by building a new R interface to JavaScript code that links the two libraries. The first approach would be easier and more generalized.

Expected impact

A R package for chromosome ideogram visualization that allows interactive genome exploration will be created and may be submitted to bioconductor.

Mentors

Students, please contact mentors below after completing at least one of the tests below.

Possible mentors:

  • Jialin Ma <ma95.jl@gmail.com> wrote the TnT package in GSoC 2017.
  • Eric Weitz <eric.m.weitz@gmail.com> is the author of Ideogram.js
  • Freeman S. Wang <shuaicheng.wang@gmail.com> implemented the prototype of R interface.

Tests

Students, please do one or more of the following tests before contacting the mentors above.

  1. Try to use different R packages (IdeoViz, karyoploteR, etc.) to produce static visualizations of chromosomes. Explore their options and usages.
  2. Try to reproduce one or more examples of Ideogram.js using JavaScript, and then using the ideogRam R package.
  3. Try to follow the vignette of htmlwidgets or this tutorial to create a simple htmlwidget package. This is to help you get somehow familiar with htmlwidget package development.

Solutions of tests

Students, please post a link to your test results here.

João Pedro:

Boyu Yu:

Clone this wiki locally