GithubHelp home page GithubHelp logo

artic-network / rampart Goto Github PK

View Code? Open in Web Editor NEW
78.0 78.0 32.0 122.56 MB

Read Assignment, Mapping, and Phylogenetic Analysis in Real Time

License: GNU General Public License v3.0

HTML 0.47% JavaScript 86.02% CSS 0.52% Python 12.77% Shell 0.21% Procfile 0.01%

rampart's People

Contributors

aineniamh avatar bsipos avatar iiseymour avatar jameshadfield avatar nickloman avatar rambaut avatar rmp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rampart's Issues

Dynamic inclusion of references in the reference heatmap chart

We will often have many more reference genomes than there is space on the reference heatmap but only a few of them will have any significant number of reads mapping to them. This chart should dynamically adjust to only show top references. Perhaps specify a maximum number plus some cutoff for the minimum number of reads for it to be shown.

Create sample setup front end.

This would probably be a separate app from RAMPART as it would be run at sample receipt before the lab work begins. Would allow you to provide sample IDs, select intended protocols, assign barcodes, specify which RAMPART instance to use (i.e., what virus it is) etc.

Ultimately it should provide a customized protocol ready for lamination (you did bring the laminator didn't you @igoodfel?).

Dig-down display into each channel

Implement a full page stats page with more detailed plots, tables, QC, and stats for any channel. This would be reached by a button on each channel panel (also same page is available for the whole run at the top). This could also have various 'action' buttons such as to assemble the consensus genome and push it to the analysis package.

Dynamically pick colour range for different samples

Currently, at line 77 in processServerData.js, state.sampleColours = createSampleColours(25); creates an array of 25 colours on a spectrum. This allows for the 24 native barcodes + 1 extra (i.e., 'none'). This needs to be dynamic for the number of samples.

If the number samples is greater than this then there is an array out of bounds exception thrown in some of the components that use it. These should probably 'wrap' around to avoid the exception.

Visualise genetic distance from reference

The call to MiniMap2 in map_single_fastq.py returns the %similarity to the mapped reference. It would be good to be able to include this as a chart in each sample panel (either for the majority mapping or selecting a specific reference).

Zero indexing issue for channel names

Channels are index from 1 in the CSV files but when looking up the names in run_info.json these are indexed from 0 causing the names to be off by one and an 'undefined' for the last one.

Daemon process should be able to resume

This would involve mapping any reads that have appeared in the inbox since it was last run. Not entirely clear how to do this? Look at the timestamps of the actual reads?

Need a discrete plot for coverage

The spline curves don't give the detail needed to see the individual amplicons. Use a stepped line chart. For the overview, perhaps a stacked chart to show the channels.

Bin reads from sample including any filters.

Add a button to each sample panel to bin the reads currently displayed into a file or folder (also some way of doing this as a batch across all samples). Appropriate labelling of file.

Read length are messy

The spline smoothing fails with low sample sizes:
image
Kernel Density Estimates would work better if available. Otherwise a column chart?

Add modularity

More of a stretch goal but this should go modular - Being able to plug in a module that does additional read annotation in the server process and also adds additional views/components to visualize this in the browser app.

This could include modules for metagenomics with Kraken or kraken-style classification.

Option to show absolute number of reference matches in heatmap

The Reference Matches heat map currently shows percent reads mapped per reference for each sample. It might be useful to show absolute number of reads mapped per reference to compare sample to sample better. This could also be shown in log scale.

When a set of barcode names are specified, only those should be shown

If barcode names are specified in the command line:
I.e., --barcodeNames BC01=sample1 BC02=sample2 ...
..then only those samples should be shown in RAMPART. At the moment, other barcodes occasionally come up which just add noise to the display. The simplest thing may be to simply pass these to porechop as the search set.

The order in the RAMPART display should probably be the the order specified (currently it is by the order they are first found).

Wrapping of sample names

These sample names have a space in (i.e., BC03="California/07/2009 BC03") and it seems to wrap the line on the space (even though there is enough space on the line):
image

Heatmap colour scale reversed.

Currently the heatmap shows the highest values as dark red and the lowest values as a pale yellow. This isn't the natural scale for a heatmap (hotter is more white). Particularly with the dark background, the brightest colour should represent the highest value. Suggest reverse the colour scale.

๐Ÿ‡ฌ๐Ÿ‡ญ

  • guppy file watcher working & tested 990b3a3
  • config files use relative paths dcabc06
  • out-of-order fast5s are handled appropriately by rampart 54cf01f
  • guppy produces fastqs in (roughly) chronological order (i.e. the fast5 stack fed to guppy is timestamp ordered) This doesn't really matter as long as dogfish is started immediately after MinKNOW
  • denominator of the coverage (for the coverage through time plots) be the total spanned by the amplicons (defined by the primers) rather than to whole genome -- #23
  • For the read-length plots for the samples - the x-axis seems bounded at 1000bp ff2a963
  • the individual barcode panels are missing the line graph 7d1a375
  • clear client memory when daemon starts a83f68b
  • the reads-pre-time graph has a bug
  • if the basecalled path doesn't exist, rampart should wait until it does then begin watching

Add read rate for each channel

As well as total reads per channel, we could have plot of rate of read per unit time (also in the title of each channel panel).

Amplicon caller in annotation script

The annotation script should read the BED file (or similar) and use the MiniMap2 coordinates to infer the amplicon for each read. Some QC could also be done here - I.e. filter multi amplicon chimeras etc. The amplicon number would be added as a column in the annotation CSV file for use by the RAMPART UI.

Filters panel for UI

A new pop-out panel which allows you to add filters on the data being displayed. Filters will include band-pass lengths, reference sets.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.