## Enhancements - [ ] 1) Input - [ ] File upload - [x] Allow upload of pre-generated full dataframe - [x] Allow re-upload of CSV files (implemented in 1f17a81 as part of #21) - [ ] **Extract date + time & use that to determine plate numbers** - [ ] Support other file formats eg messaging or renaming of input columns - [ ] Dilutions - [x] Prevent dilutions table from overwriting plate data dilutions because horizontal dilutions will be required for ELLA - [x] George: app crash when pasting too many dilutions #28 - [ ] Plate data - [x] Make switching plates more intuitive - [x] Change mouse numbers to start from mouse 6 on plate 2 - [x] Prevent plates overwiting one another when switching plates - [x] ~Make all plates the same button~ - [x] Add toggle to go betweeen RLU → types (would be implemented as part of #26) - [ ] Prevent the plate data from switching back to types when the dilutions are updated - [ ] Automatically increment all following plates if a user updates the mouse number in a previous plate - [ ] **Conditional formatting** (see [here](https://stackoverflow.com/questions/58746194/shiny-and-rhandsontable-conditional-cell-column-formatting-based-on-column-sum)) - [ ] Other features - [x] Sort feature levels such as `subject` - [x] Change feature names (#24 ) - [x] Change name from `primary` -> `virus` - [x] **Section not clear to new users and so needs improvement!** - [x] Make app more robust if user hasn't entered all data eg title and report still work - [x] Provide more guidance/feedback on which features need to be entered - [x] Set default dropdown for `incoluate` to `subject` - [ ] Remove button - [x] Make `Submit` button more visible and provide feedback once clicked - [ ] Performance - [ ] Reduce the number of uncessary calls resulting from reactivity - [x] Improve the efficiency of the code which updates the types/subjects etc. - [x] Replace nested for loops with vectors - [x] Only update when changes occur - [x] Add tooltips for help + improve messaging - [ ] **Add example data** (#21) - [x] 2) QC - [x] Display no. of cells + no. of wells in av. luminescence values table - [x] Plate heatmaps - [x] Change row names to letters + add a key (for types) - [x] Improve error handling eg when other features not set - [x] Ask Joanne, Kelly & George re normalisation using cell + virus wells (plate vs global) - [x] Update heatmaps automatically rather than on-click on new tab - [x] Keep colour scheme consistent between plots - [x] Stop errors showing underneath the types boxplot (#27) - [ ] 3) Results - [x] Make plots interactive using plotly - [x] Add `plotly` library declaration to raw R code - [x] **Create a separate plot for each primary!** - [x] Have option to change axis eg from -10 -> 110 - [x] **Syntax hightling for raw R code** - [x] **Support multiple primaries/viruses** - [x] Change `Estimate` -> `IC50 Dilution` in IC50 boxplot - [x] Use multiple lines on the x-axis to show that it's a log scale - [ ] Show a loading spinner while the plots are loading - [ ] Have templates available for reports eg for Cambridge University / DIOSVax (knitr) - [ ] Have the option to update the colours used in the plot eg make PBS black - [ ] Other - [ ] **Refactoring** (see [here](https://www.r-bloggers.com/2019/09/best-practice-development-of-robust-shiny-dashboards-as-r-packages/)) - [ ] Use Shiny modules for each section of the app - [ ] Add a function and tests to ensure that the column types are correct - [x] Create R package - [ ] Add tests (CI/CD) - [ ] Have auto-formatter like prettier - [x] Reduce code duplication for plots in the app + code to display + in the Rmd - [ ] Add `default_dilutions` as parameter - if `NULL` then load `data(defualt_dilutions)` - [x] On the show code tab do `library(autoplate)` and then use autoplate functions to generate the plot(s) - [ ] Improve the experience of using the library within R - [ ] Use Shiny modules for each section of the app - [x] Generate documentation on the homepage from the readme - [ ] Add automatic code styling on PR with `styler` - [ ] Use `shiny::` for all shiny functions so that shiny doesn't need to be loaded when the package is loaded - [ ] **Update the readme** - generate UI from markdown content - [ ] Diff assay types eg ELLA or ELISA or HIA assays - [x] NA assay - [x] ELISA reader input -> CSV - [x] horizontal dilutions - [x] support different and/or user defined custom plate templates - [x] multiple mice per column eg rows C & D = mouse 2 - [ ] Other (larger) plates eg 384-well plates - [ ] Custom features - [ ] Deploy to custom URL? - [ ] Pay for Shiny premium to get more app hours - [x] Add a Rmd documentation web page similar to wpm (see [here](https://bioconductor.org/packages/devel/bioc/vignettes/wpm/inst/doc/wpm_vignette.html))
Enhancements
Make all plates the same buttonsubjectprimary->virusincoluatetosubjectSubmitbutton more visible and provide feedback once clickedplotlylibrary declaration to raw R codeEstimate->IC50 Dilutionin IC50 boxplotdefault_dilutionsas parameter - ifNULLthen loaddata(defualt_dilutions)library(autoplate)and then use autoplate functions to generate the plot(s)stylershiny::for all shiny functions so that shiny doesn't need to be loaded when the package is loaded