Coder Social home page Coder Social logo

caleydo / vials Goto Github PK

View Code? Open in Web Editor NEW
13.0 10.0 4.0 557 KB

Vials is a Caleydo Web application for visualizing alternative splicing based on mRNAseq data.

Home Page: http://vials.io

License: BSD 3-Clause "New" or "Revised" License

JavaScript 10.35% CSS 5.15% HTML 5.21% TypeScript 79.28%
vials phovea phovera-application alternative-splicing alternative-splicing-analysis d3

vials's Introduction

vials Phovea NPM version Build Status Dependency Status

Vials visualizes alternative splicing based on mRNAseq data. You can try out vials at http://vials.io/.

Installation

git clone https://github.com/caleydo/vials.git
cd vials
npm install

Testing

npm test

Building

npm run build

This repository is part of Phovea, a platform for developing web-based visualization applications. For tutorials, API docs, and more information about the build and deployment process, see the documentation page.

vials's People

Contributors

alexsb avatar bilalsal avatar hendrikstrobelt avatar jrbotros avatar mccalluc avatar mstreit avatar sgratzl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vials's Issues

Allow comparison of how conditions behave across junctions of an isoform

In this image on the left, we see the default state on the left, and a new state on the right:

image

The state on the right shows a "fanned out version" where only the junctions of one specific isoform is visible. (this could also be part of the details junction view instead of the overview junction view).

The points are sorted in x by their y value for the selected junction, for all other junction the sort order of the selected junction is preserved. This will make it easy to spot any deviating patterns of conditions in junction reads.

Fix consistency fo gene data

Curently, the AltSpliceGUI module injects specific gene data into the other modules and shows the parameters (chromosome, start position, base width) in the header as non-editable information (Chr 17, 45814875, 1500).

The two JSON files provided by Joseph
pileup ENSG00000149557
pileup ENSG00000150782
contain jxn weights between Exons not within the above range mandated by AltSpliceGUI, there are Exons for example at position 112014540 and 125316007 in the above files.

This makes the "altspice-junctions" module unable to match the weights to the exons, and fails to create the visualization (with a lot of error messages).

How should we fix this? I can temporarily ignore the gene information injected by AltSpliceGUI and infer the actual exon locations from the data file itself, which might makes the jxn modlue work, but this does not solve the problem (esp. w.r.t to coordination between the views).

label in reads view

image

truncate the string at a maximum length.
if string is longer than threshold replace last 2 chars with '...'

Collapsing rows based on categories

Similar to what we do right now with collapsing based on groups, we want to collapse based on general categories (see #31). If we have multiple categorical dimensions, we will only be able to collapse based on one of these at a time. This figure shows the collapsing of the rows based on the gender dimensions:

2015-03-11 16 25 37

Normalize junction frequency to exon frequency?

One comment we got in our discussion was whether we could somehow normalize the junction frequency based on the exon frequency. This does make sense - you'd expect more junctions if both exons involved have more reads. However, there are some challenges:

  • it's not clear to what we should normalize - average reads per base across both exons? average reads of the less frequent exon?
  • this is an additional abstraction that users have to understand and we have to communicate
  • the design is not obvious

We probably could switch the junction frequency view between the two options on-demand.

Implement sample comparison for junctions

One of the comments by the domain experts was that it would be important to compare the junction reads across groups of conditions. I suggest to use colors in the view showing all junctions, but to use a spatial separation (also colored) for each condition in the details view. This way we could show independent boxplots and reads for hundreds of samples and 5-10 conditions efficiently.

Change junction view from exon-specific to doner/acceptor sites

Our initial understanding of the data was wrong. Exons are not just permuted, exons on different isoforms can occupy the same region but begin and end at different positions. Therefore we have to adapt our junction view. Here is a sketch:

2015-03-17 18 21 28

The sketch contains three isoform examples below. The donor and acceptor sites are indicated by triangles. Donor sites show up-pointing triangles, acceptor sites down-pointing triangles.

The idea is that we now have one "box" per donor site (i.e., the end of an exon), and within that box we show all the connections to the acceptor sites. In contrast to our current design we don't show all possible acceptor sites, just those where we actually have data, i.e., they can be of varying width. And we don't keep a column free for the donor.

Within the boxes we have a miniature version of the sequence.

When an isoform is selected we show its exons on the sequence belwo and proceed as we do now, fading all others.

Coordination between Isoform View and Jxn View

  1. Enable selecting an isoform in the Isoform View, to be examined in the Jxn view.
    Entry point is selectIsoform() method in Jxn view.
  2. Enable deselection of an isoform
  3. Enable comparision between two isoforms in the jxn view by allowing selecting a
    max of 2 isoforms in the isoform view

Color code the groupings of samples

I suggest we use the 10-class paired color scale from ColorBrewer.org and pick the saturated colors.

We should draw all the lines/areas in the track view and the dots in the junction view in these colors.

We decided that for more than five groups we will switch to a non-colored version and color by selection.

Here are the colors:

a6cee3

1f78b4

b2df8a

33a02c

fb9a99

e31a1c

fdbf6f

ff7f00

cab2d6

6a3d9a

Unify design of junction view and isoform view

Specifically, we should:

  • reduce height of isoform bars in junction view to the height in the isoform view (global variable?)
  • change color to the one used in the isoform view (global variable in sass)
  • change the colors of the isoform representation in the edge view in the same way.

Fix initialization state of junction view

It looks like the jnct view is initialized as no groups, show all dots, no jitter. This state is not accurately reflected in the checkboxes.

Also, I suggest the following default state:

  • Show all dots on
  • Jitter dots on

Implement the details-only view for the junctions

Implement the junctions details view per the design. The details only view should transition out of the overview (i.e., it should be the same view, just with updated positions and faded-out elements).

The transition should fade all edges not part of the isoform, then reposition these junctions, then add the arcs.

If a different isoform is selected we should consider going back to the full view first to pull out the new isoforms.

Redesign how grouping is activated

This feature can't be discovered at the moment. Following suggestion: Add radios with three options:

Junction View (i)

  • Compact
  • Separate Groups
  • Show Correlations

When hovering over the Junction View title it should display "You must select an isoform for separating groups or showing correlations"

It should not be necessary to click anything in the junction view.

For the scatterplot version, the first view should be selected by default.

Visualize Categorical Attributes of Samples

Categorical Attributes should be treated identical to the manually defined groups. We will use colored cells to visualize category memberships, or histograms when groups are collapsed:

2015-03-11 16 25 37

We want to show the actual classes on mouse-over, but we should also figure out a legend for these.

Enable Group comparison in isoform view

We should allow group comparison in the isoform view. I suggest two levels:

  • Color coding by groups
  • spatial separation for selected groups, on demand, as drawn here:
    2015-03-11 14 46 42

The latter could use the same backbone as we have it in the jnct view right now. We could also use the same features: box plots, x-separation, etc.

handle exon overlap in bodymap data

For most genes in the larger data set, multiple exons are present that cover the same span (usually off by only a few base pairs)โ€”we should handle this by merging them into a single exon view for the viz and talk with Novartis about the biological basis for doing so.

Improve Grouping of samples

Here is a sketch to improve the grouping of the samples:

2015-03-11 16 03 21

On the far left we see the state with no grouping and the first two rows are selected. Once the mouse is released, a new column for the group is created and the cells for the selected rows are filled. The other cells still have the circular selection widget.

When creating a new group, a new column is created, as shown in state 3.

When clicking a single selection widget inside a group, or when using the brush operation, these rows are added to the group.

Duplicate group membership is allowed.

Make configuration bar a single line

image

There aren't that many UI elements here.

  • make project selection and gene selection 200 px each
  • make chromosome/start position/base width 150 px each
  • remove sort iso (this makes more sense as direct manipulation and works just as well)

Clarify how/whether we get isoform abundace

In our meeting on Thursday it was not clear whether we have an obvious measure for a predicted isoform abundance. It seems like MISO is mainly about predicting exon frequency, but should also have some measeure of general isoform abundance. In our design we rely on isoform abundance and this was also judged as critical by the domain experts.

It seems like the Psi value of Miso isn't quite the right thing though.

Sorting/Filtering isoform view

We should be able to sort the isoform by:

  • overall average abundance
  • abundance of a group
  • abundance of a sample
  • containment of an exon, tie-breaking by abundance

The domain experts explained that they usually want to understand all isoforms related to one exon. They typically are guided to explore isoforms through an abnormal behavior in one exon. They want to see all isoforms that contain that exon.

Consequently, we should make it easy to see all isoforms containing a specific exon. I would suggest to re-sort the isoform view to have those of the selected (one or multiple) exons on top. Break ties by average abundance of the isoform.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.