[Bioc-devel] IGV - a new package in preparation
Paul Shannon
pshannon at systemsbiology.org
Wed Mar 7 23:15:15 CET 2018
To avoid duplication of effort, and perhaps to attract some early reviewers, I figure I’d let this group know that I plan to submit a new package “IGV” for inclusion in the next Bioconductor release.
The package will provide an interface to the excellent and quite new browser-based genome viewer written by Jim Robison and colleagues, igv.js:
https://github.com/igvteam/igv.js
IGV depends upon RStudio’s httpuv websocket library for passing JSON messages between an R session and igv.js running in the browser. Communication goes both ways - both ends are fully and independently interactive.
My goal with IGV is to support all of the tracks mentioned here
https://github.com/igvteam/igv.js/wiki/Tracks
Note that though igv.js typically gets its track data from CORS/indexed webservers, the IGV package will also support locally created R data.frames describing either bed or wig tracks - annotation and quantitative, respectively - without any need to host those tracks on a pre-existing webserver. httpuv includes a minimal webserver which can adequately serve the temporary files IGV creates from your data.frames.
In the years since the first appearance of my RCyjs package (which has a similarly design, and the same base class, using websockets to communicate between R and the browser), RStudio and Hector Corrado Bravo have added async web socket support for Windows to httpuv. This means IGV (and RCyjs also) will run on all platforms. A refactored BrowserViz package (which might be useful to anyone wishing to do similar R-to-browser communication) will accompany my submission.
For javascript development, I have adopted commonly used strategies and tools, using npm and webpack to build a single, all-libraries-included html/js/css file for loading into the browser. This allows us to control library versioning and to improve browser load times. The single combined html/js/css file is created, not as part of R CMD build, but with a prior and separate, developer-only makefile maintained in the package’s inst/browserCode directory. Only that combined html/js/css file is included in the package tarball, along with configuration files to rebuild it, but not including all of the usually large number of node_modules that contributed to its construction.
Comments and suggestions welcome.
- Paul
More information about the Bioc-devel
mailing list