A Multi-Informatic Cellular Visualization tool
MiCV is a python dash-based web-application that enables researchers to upload raw scRNA-seq data and perform filtering, analysis, and manual annotation. It is largely an interactive wrapper for functions provided by scanpy and palantir.
MiCV is being released in advance of our upcoming publication on type-II neurogenesis in Drosophila melanogaster; you can test out this web application at micv.works, or read our pre-print at the biorxiv.
MiCV is still in a beta state and a few bugs here and there are to be expected. We welcome your bug reports on our issue tracker!
MiCV currently supports the following:
- Uploading of 10X mapping directory contents
- Uploading of h5ad formatted scanpy data objects
- Down-sampling UMI counts
- Filtering by min/max genes per cell
- Filtering by min cells per gene
- Identifying a user-defined number of highly-variable genes
- Changing k, the number of neighbors in the neighborhood graph (for projections)
- Using bbknn to do batch corrected neighborhood discovery
- Changing the clustering resolution used by the louvain/leiden clusting algorithm
- Generating UMAP projections
- Calculating a pseudotime trajectory based on a user-selectable starting cell
- Calculating gene expression trends across pseudotime for all genes using PyGAM (no R dependencies)
- Detection of marker genes for arbitrary combinations of clusters
- Use of any scanpy-implemented test for marker gene significance
- Viewing clustering, pseudotime, and gene expression UMAP projections all at once
- Viewing violin plots of gene expression
- Viewing gene expression trends over pseudotime
- Filtering cells based on any combination of the above plots
- (Drosophila only) pulling data from Flybase records for each selected gene
- Download your anndata object in h5ad format, ready to load into scanpy for further analysis outside of the bounds of this app
More features are coming! We welcome your suggestions and pull requests.
There are three main components to the MiCV software package:
- A redis caching backend server
- A celery task queue for long-running tasks
- The gunicorn server that handles web requests and "runs" the MiCV server
Redis will need to be installed manually using your distribution's package manager. It does not require any non-default configuration.
We have provided a requirements.txt file that contains a list of all python packages necessary for running MiCV (including celery and gunicorn). Using pip, install these dependencies: pip install -r requirements.txt
.
You will need to manually create the following directory on your computer:
# mkdir -p /srv/www/MiCV/databases
. Then, make sure it is user-writeable using # chown -R [username_here]:[group_here] /srv/www/MiCV
Then, run the redis, celery, and gunicorn servers all together using the provided ./MiCV.sh
script. Point your browser to the server, and you should be all set to go!
- Be patient! Many functions take time (sometimes considerable amounts of it) to process, especially with larger datasets.
- You need not "recalculate everything" when you just want to change the UMAP projection or clustering parameters. Each of those processing sections has a button enabling them to be calculated independently (and thus more rapidly).
- Pseudotime trajectory inference may fail to converge. You might attempt to retry it with the same parameters/starting cell - it often works the second time around!
- Save your anndata object and load it into scanpy directly for access to any and all of scanpy's extended functionality.
Many helping hands went into the creation of this web application. It was written and is maintained by Nigel S. Michki in the Cai Lab at the University of Michigan.
Other intellectual contributors include:
- Logan A. Walker
- Ye Li
- Dawen Cai
- [ your name here ]
This application relies heavily upon the incredible work done by the authors and maintainers of many critical software packages, including:
- scanpy
- palantir
- bbknn
- louvain/leiden
- dash
- docker
- flask
- python
- numpy
- scipy
- matplotlib
- seaborn
- And many other dependencies down the line
We thank them for their contributions to open scientific computing and discovery.