VirusMVP is an interactive heatmap-centric app that integrates viral genomic mutations, lineage information and curated functional impact to study the spread and evolution of viruses in Canada and globally.
Toggling clade defining mutations switch on and off, and then resizing the window, resizes the heatmap cells. The bars should stay the same size at all times, with scrollable overflow.
Good place to start investigating would be the clade defining mutations switch callback. There is something different about how the heatmap is first rendered on application launch, outside the callback, because this bug does not happen without toggling the switch.
Heatmaps are pretty good at visualizing a large number of rows and columns, but our cells are pretty big and resource intensive due to marker annotations, hover boxes, heterozygosity spacing considerations, etc.
We might need to limit the number of rows a user can see, while still allowing user to select from a pool of rows exceeding that number from the select lineages modal. Another consideration is whether we want to make the heatmap cells and y-axis scrollable, and then limit the number of rows visible based solely on performance considerations--not screen real estate. Scrolling is easier than having to select lineages.
After #66 and #75 are settled, we may want to display only a subset of lineages to begin with. With all lineages displayed, the heatmap cells callback takes about 1 second to run, which slows things down a bit.
N/A could imply we did not look for a function for a mutation or that we are missing data. We should use something more specific, that more strongly implies a function has not yet been discovered for a mutation.
Currently, data_parser.py is converting VCF to GVF which is then parsed for visualization. Lets move towards integrating nextflow commands now which will require following updates
Allow user to upload .vcf or .fasta or .tsv file.
Need a check to confirm the file type based on which this nextflow command will be structured
nextflow run nf-ncov-voc/main.nf -profile < conda | singularity | docker > --prefix < unique_user_id > --mode user --input_type < vcf | tsv | fasta > --userfile < user_uploaded_file > --outdir < output directory where files will be generated >