chanzuckerberg / cellxgene

An interactive explorer for single-cell transcriptomics data
https://chanzuckerberg.github.io/cellxgene/
MIT License
627 stars 116 forks source link

Volcano plot, possibly as gene selection interface #994

Open colinmegill opened 4 years ago

colinmegill commented 4 years ago
  1. We know that users want more of a sense of the overall structure of the genes in the dataset
  2. We know that users want to see more than 15 results for diffexp
  3. We frequently only surface markers for one of the diffexp populations rather than both
  4. Users are used to using volcano plots
  5. Heatmaps are gigantic and unwieldy

Fig. 1 via: https://galaxyproject.github.io/training-material/topics/transcriptomics/tutorials/rna-seq-viz-with-volcanoplot/tutorial.html

image

Fig. 2 via: https://www.researchgate.net/figure/Volcano-plot-of-RNA-Seq-data-A-volcano-plot-is-a-scatter-plot-that-is-often-used-when_fig4_307915443

image

Rough proposal: cellxgene shows a volcano plot on diffexp, perhaps immediately and as a result of selecting diffexp on 2 categorical metadata labels! This then serves as an intermediary step to selecting the genes to return, which are then populated in a gene list in the right hand side bar.

Fig 1 would seem to show selection cutting off small y axis values, while Fig 2 does the same but also allows the user to remove symmetrically from the center.

We could also add a voronoi overlay to hover and show point labels https://bl.ocks.org/mbostock/8033015

Big open question: how do users want to accomplish the selection?

cc @sidneymbell @ambrosejcarr

A big thank you to Dana Pe'er's lab at Memorial Sloan Kettering for pointing out this plot and process.

colinmegill commented 4 years ago

@ambrosejcarr points out that the click volcano diffexp button --> volcano plot as gene selection interface --> gene list could also be an interface --> to various heatmaps — gene * gene (both heart * lung & heart * heart and cell * gene, see https://github.com/chanzuckerberg/cellxgene/issues/632

colinmegill commented 4 years ago

@ambrosejcarr adds that users might toggle between volcano and dispersion

image

ddemaeyer commented 3 years ago

I'm a little trolling here sorry, but are there currently any plans to develop a plugin infrastructure into cellxgene? Currently we are missing things like volcano plots, violin plots, gene set enrichments, ... to really cover a lot of ground in initial analysis. If there would be a data model/plugin infrastructure other people could also start contributing to cellxgene and be able to exchange plugins. This of course is not trivial but setting out a path would be nice so people can start to contribute.

colinmegill commented 3 years ago

Hi @ddemaeyer — thanks for your question — there are no plans to support plugins.

We'll keep this thread to volcano to stay on topic, but if you want to discuss plugins further than your above comment or desire further justification, or want to offer a concrete proposal for how you think you'd like to see this supported, please do feel free to open a new issue and tag me and I'll try to respond more in depth.

To take these features in order:

  1. Volcano plots are possibly to be added as a way to visualize differential expression results in 2021 — active discussion.
  2. Re: violin plots, it is already possible to color by a gene or other continuous field and see their distribution:

image

Users can also create arbitrary subsets and see a distribution of continuous data. Ie.,: add a gene, lasso, subset, see distribution of subset on gene histogram.

  1. Gene sets are in development and will land in 2021, and #96 proposes adding a tooltip.
atarashansky commented 2 years ago

Thanks @colinmegill for pointing me to this backlogged issue. Love the idea, and it’s pretty straightforward to implement in excellxgene. The specific implementation details might be dependent on how I’ve rearranged the backend (mainly, how the various data types and metadata are saved on the server, read by requests, etc), so looping in this feature to cellxgene will probably require updating the backend as well.

atarashansky commented 2 years ago

Managed to turn this around quickly. Released in excellxgene v2.5.3!

https://user-images.githubusercontent.com/16548075/159178339-95171207-3133-4f76-80db-98c5789aa09b.mp4