* prototyping
* render histos on open gene set
* prototyping
* render histos on open gene set
* factor out add genes to own component
* remove unused import
* mock reducer
* color by geneset stub
* menus and buttons
* geneset dialogue stub
* remove heatmap mock
* componetize histogram
* reenable add genes
* re-add isuserdefined
* test data
* remove have fetched
* add isExpanded state to gene, and pass to histogram
* expand button
* toggleable
* mini
* bump number of genes to 50
* don't clear diffexp on subset
* move create category to top
* render diffexp as geneset
* geneset show mean expression
* gene set reducer
* add geneset UI reducer
* wire e2e gene set loading prototype
* fix sniffing bug
* fix typo
* add gene modals
* client/src/actions/
* add autosave
* rename data-dir cli param
* add geneset, add gene, delete set
* prototype: remove csv upload placeholder
* handle delete gene from set
* prepopulate geneset with genes from modal
* add geneset: rename action
* icons, language consistency
* chevron after
* handle empty string case on genes for create geneset
* edit geneset
* fix language on create
* copy correction
* add popper2
upgrade react popper
upgrade react popper
adding popover2 package
* truncate uses tooltip2
* gene set button text typo
* remove logging
* moving server over
* remove test imports
* don't try to destructure map, use array.from
* fix add gene map datastructure error
* Revert "fix add gene map datastructure error"
This reverts commit b0eed45952.
* name --> genesetName, genes --> geneSymbols
* add gene to geneset, temporary format
* handle empty case, clear form input
* lint -- genesets wasn't passed via props
* userinfo
* move genes string to object conversion to action
* remove tmp gene description
* emptystring default for description
* remove empty string
* remove top level package json
* remove package lock as well
* remove flag for feature toggle
* remove comments in geneset
* comment cleanup
* remove comment
* revert diffexp genes to 10
* color by gene set
* disable color by gene set
* Gene menus are now inline, remove dead prototype code
* remove todo, magic number to variable
* remove jshint in rightsidebar
Co-authored-by: Severiano Badajoz <sbadajoz@chanzuckerberg.com>
* remove unused geneset validation code
* tmp format pending geneset description
* move magic number into variable
* reorganize genesetsUI reducer pending tests
* rewire edit given new action name
* add basic validation and feedback for geneset name uniqueness
* mv annoDialog
* mv label, repair paths
* Update client/src/components/brushableHistogram/header.js
Co-authored-by: Severiano Badajoz <sbadajoz@chanzuckerberg.com>
* add imports for icon in histo
* update jest snapshots given blueprint/tooltip2 usage of index -1
* ensure no empty paragraph
* intent from blueprint
* remove remainder of jshint references
* do not push undo when autosave fires
* fix autosave bugs
* remove todos
* clamp to util
* scient to util
* revert clearing diffexp
* rename value to be more specific stacked bar
* clean up logging and commetns
* remove gene entry tests pending rewrite
* tab index -1
* update jest snapshot, blueprint tooltip 2
* caret margin
* snapshot update
* ensure histogram is centered
* add geneset actions to config
* comment maybeScientific
* comment clamp
* comment ui reducer
* remove prototype code
* remove error log
* remove references to bl.ocks
* componetize parseBulkGeneString
* catch case where geneset rename same name
* genesetui reducer tests
* add geneset ui to index reducer config
Co-authored-by: bkmartinjr <bruce@chanzuckerberg.com>
Co-authored-by: Severiano Badajoz <sbadajoz@chanzuckerberg.com>
an interactive explorer for single-cell transcriptomics data
cellxgene (pronounced "cell-by-gene") is an interactive data explorer for single-cell transcriptomics datasets, such as those coming from the Human Cell Atlas. Leveraging modern web development techniques to enable fast visualizations of at least 1 million cells, we hope to enable biologists and computational researchers to explore their data.
Whether you need to visualize one thousand cells or one million, cellxgene helps you gain insight into your single-cell data.
Getting started
The comprehensive guide to cellxgene
The cellxgene documentation is your one-stop-shop for information about cellxgene! You may be particularly interested in:
- Seeing what cellxgene can do
- Learning more about cellxgene installation and usage
- Preparing your own data for use in cellxgene
- Checking out our roadmap for future development
- Contributing to cellxgene
Quick start
To install cellxgene you need Python 3.6+. We recommend installing cellxgene into a conda or virtual environment.
Install the package.
pip install cellxgene
Launch cellxgene with an example anndata file
cellxgene launch https://cellxgene-example-data.czi.technology/pbmc3k.h5ad
To explore more datasets already formatted for cellxgene, check out the Demo data or see Preparing your data to learn more about formatting your own data for cellxgene.
Supported browsers
cellxgene currently supports the following browsers:
- Google Chrome 61+
- Edge 15+
- Firefox 60+
- Safari 10.1+
Please file an issue if you would like us to add support for an unsupported browser.
Finding help
We'd love to hear from you!
For questions, suggestions, or accolades, join the #cellxgene-users channel on the CZI Science Slack and say "hi!".
For any errors, report bugs on Github.
Developing with cellxgene
Contributing
We warmly welcome contributions from the community! Please see our contributing guide and don't hesitate to open an issue or send a pull request to improve cellxgene. Please see the dev_docs for pull request suggestions, unit test details, local documentation preview, and other development specifics.
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to opensource@chanzuckerberg.com.
Reuse
This project was started with the sole goal of empowering the scientific community to explore and understand their data. As such, we encourage other scientific tool builders in academia or industry to adopt the patterns, tools, and code from this project. All code is freely available for reuse under the MIT license.
Before extending cellxgene, we encourage you to reach out to us with ideas or questions. It might be possible that an extension could be directly contributed, which would make it available for a wider audience, or that it's on our roadmap and under active development.
See the cellxgene extensions section of our documentation for examples of community use and cellxgene extensions.
Security
If you believe you have found a security issue, we would appreciate notification. Please send email to security@chanzuckerberg.com.
Inspiration
We've been heavily inspired by several other related single-cell visualization projects, including the UCSC Cell Browser, Cytoscape, Xena, ASAP, GenePattern, and many others. We hope to explore collaborations where useful as this community works together on improving interactive visualization for single-cell data.
We were inspired by Mike Bostock and the crossfilter team for the design of our filtering implementation.
We have been working closely with the scanpy team to integrate with their awesome analysis tools. Special thanks to Alex Wolf, Fabian Theis, and the rest of the team for their help during development and for providing an example dataset.
We are eager to explore integrations with other computational backends such as Seurat or Bioconductor

