Scientific graphics

A Q-Q plot written with generalized JavaScript code. I put this together as one of the initial offerings in the BAGET project, but the graphic has yet to make its way into any other production software.

A few different ways to use bar charts written with generalized JavaScript. This code also originated as part of the BAGET project, and is now running in MPG's type 2 diabetes portal.

LVH

The Linked Hierarchies Visualization shown here in currently running in the BARD project. This interactive tool combines a pie chart-driven filtering mechanism with filters based on hierarchy membership. Combining the two representations allows interesting possibilities in set management.

This graphic proposal was never actually implemented in production software. That's too bad, because I still think it presents an interesting twist on the standard notion of comparing columns to rows in a table. In this representation everything is a row, with the diamond in the middle providing the outer product comparisons. The possibilities for interactivity have not been fully explored.

This graphic is called a "Manhattan plot", and it is used to compare the relative impacts of different Single Nucleotide Polymorphisms on a population broken into cases and controls on the basis of phenotype. This graphic will eventually be deployed on the Diabetes Portal, though this version still needs work. The challenge with these plots is the large number of points, which can push up against client memory limits.

This graphic I developed only recently for the diabetes portal. The goal is to take a specified portion of the genome and display a cross-section of Single Nucleotide Polymorphisms (SNPs) associated with various traits which bear relevance to diabetes. The size and direction of effect are also indicated, so that you might look for dependencies between the traits. I've added this to the BAGET project.

Here's a version of the box whisker that I'm still working on. The idea is to provide a representation of the data distribution within each box by superimposing a histogram along the vertical axis. I've move this new version into the BAGET project, though it is not yet running in any production environment (it still needs work).

Here is a dose response curve also used as a part of the CTRP project . This one uses a log scale on the x-axis and includes error bars on the points. The curve is provided by the server in the form of the four standard logistic parameters. The JavaScript code then uses these parameters to generate the curve (which is supposed to match the points, though the regression analysis in this example looks suspect).

I wanted to implement a molecular spreadsheet with virtual scrolling -- that is, instead of moving page to page through multiple entries (while data are pulled from the backend behind the scenes via Ajax). I used a library called jqgrid which unfortunately had a bug that caused the screen to occasionally go blank while scrolling. That's a shame, because in every other way jqgrid is a nice JavaScript library.

Here is a molecular spreadsheet made instead with a JavaScript library called slick grid. We eventually abandoned the Bart Premium project, but not before I made a working version of this spreadsheet with virtual scrolling. It could be prettier, but it works, and it doesn't have the unreliability I found in the jqgrid library.

Here is a presentation that shows the protein classes for every molecule we pushed forward as a probe as part of the Molecular Library Program. The publication has made it past the referees, and will allegedly appeared in Cell in April 2015. The graphic is live and interactive.

Here is another Sunburst, this time characterizing the relationship between in 860 different cancer cell lines. This one arose out of the CTD2 project, which was also the sponsoring project for the CTRP project mentioned above. In this case the graphic is not interactive, but instead a static image.

Here is one last Sunburst, this one different from the others in that you can supply your own data. in principle this process should be applicable to any strictly hierarchical data, limited only by screen real estate. I provide some additional information in this blog post.

Here is an interactive box whisker display that is currently part of the CTRP project. The slider allows the user to define a multiplier of the interquartile (Q3 - Q1) distance as a way of dynamically adjusting the whisker size.

Here is a simple scatter plot also used as a part of the CTRP project . Other than the tooltip over the data points there's no particular interactivity in this example ( though in the live software clicking on the dots brings up the matched dose response curve )

This was a graphic I originally wrote for Bard (go to the actual software to see the graphic in action. In fact the backend passes the browser a series of specifications for the individual bins, so from the perspective of the JavaScript it's really just a bar chart, but the backend is passing the information necessary to present a distribution on-screen.