Viral lineages and variants pose high risk to global public health.
VIRUS-MVP is a heatmap-centric visualization web application that encodes mutational information across multiple groups, including SARS-CoV-2 lineages. The data visualized by VIRUS-MVP is generated by two external projects:
You can find deployed versions of this application (without user upload functionality) at https://virusmvp.org/.
If you plan to run the app locally, you need local installations of both Nextflow and Docker for file uploads.
If you plan to run the app inside a Docker container, you only need Docker.
$ git clone [email protected]:cidgoh/VIRUS-MVP.git --recurse-submodules
You can use either venv or Conda for this step.
Using venv:
$ python3 -m venv myenv
$ source myenv/bin/activate
(myenv) $ pip install -r requirements.txt
Using Conda:
$ conda create --name=VIRUS-MVP
$ conda activate VIRUS-MVP
(VIRUS-MVP) $ pip install -r requirements.txt
(myenv) $ python app.py
Go to http://0.0.0.0:8050/.
Note: if you do not run the application from the root directory, some of the JavaScript assets will not be compiled.
It is a relatively simple setup.
$ docker-compose build
$ docker-compose up
Warning: our docker setup bind mounts the host socket to the container. You should use a socket proxy prior to deployment.
One currently unresolved issue: If you upload a file while the application
is deployed through Docker, and then later attempt to upload a file while the
application is deployed locally, the application will likely run into
permission issues related to the nf-ncov-voc cache. You can fix this by
removing all cache files in the nf-ncov-voc/
directory:
$ rm -r results work .nextflow .nextflow.log* capsule framework plugins secrets tmp
You may have to use sudo
.
Click the help button at the top for an in-app explanation of the heatmap view.
The left axis encodes viral lineages. Lineages belonging to VOC are in
bold, and lineages belonging to VOI are in italics. Actively circulating
lineages are denoted with
The right axis encodes the number of genomic sequences analyzed for each lineage.
The top axis encodes the nucleotide position of lineage mutations, with respect to the reference genome.
The bottom axis encodes the amino acid position of lineage mutations, in the following format:
Genic mutations: {GENE}.{AMINO ACID POSITION WITHIN THAT GENE}
Intergenic: {NEAREST DOWNSTREAM GENE}. {NUMBER OF NUCLEOTIDES UPSTREAM}
The heatmap cells encode the presence of mutations. The color of these cells encodes mutation frequency. Insertions, deletions, functional mutations, and lineages with a sample size of one are encoded as follows:
Hovering over cells displays detailed mutation information. Clicking cells opens a modal with detailed mutation function descriptions, and their citations.
The histogram bars encode the total number of mutations across all visualized lineages every 100 nucleotide positions.
There are several tools in the top of the interface that can be used to edit the visualization.
Clicking the select lineages btn opens a modal that allows you to rearrange and hide variants.
The mutation frequency slider allows you to filter heatmap cells by mutation frequency.
The clade defining switch allows you to filter in and out heatmap cells corresponding to non-clade defining mutations.
The upload button allows you to upload your own genomic data in
FASTA
or VCF
format. You can find examples of files users can upload in
test_data/.
You must have Nextflow and Conda installed to upload files.
Your first upload will take a while. Subsequent uploads will be faster.
The download button allows you to download a zip object containing surveillance reports for each reference variant. You can find examples of these reports in surveillance_reports/.
Nextflow-wrapped workflow for variant calling.
Repository for mutation functions.
We encourage you to add any problems with the application as an issue in this repository, but you can also email us at [email protected].
@ivansg44: Visualization development
@anwarMZ: Genomic analysis
@Anoosha-Sehar: Functional annotation
@miseminger: Functional annotation and data standardization
@despean: Application deployment
William Hsiao, Gary Van Domselaar, and Paul Gordon
The results here are in whole or part based upon data hosted at the Canadian VirusSeq Data Portal: https://virusseq-dataportal.ca/. We wish to acknowledge the following organisations/laboratories for contributing data to the Portal: Canadian Public Health Laboratory Network (CPHLN), CanCOGGeN VirusSeq, Saskatchewan - Roy Romanow Provincial Laboratory(RRPL), Nova Scotia Health Authority, Alberta ProvLab North(APLN), Queen's University / Kingston Health Sciences Centre, National Microbiology Laboratory(NML), BCCDC Public Health Laboratory, Public Health Ontario(PHO), Newfoundland and Labrador - Eastern Health, Unity Health Toronto, Ontario Institute for Cancer Research(OICR), Manitoba Cadham Provincial Laborator, and Manitoba Cadham Provincial Laboratory.