-
Notifications
You must be signed in to change notification settings - Fork 144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Shiny DADA2 #277
base: master
Are you sure you want to change the base?
Shiny DADA2 #277
Conversation
Try `shinyDADA2()`
I was tracking on this locally and with manual snapshots the last few days, but since it works and I can version control it in a branch on the dada2 repo, I thought that was probably better. Plus I can get your feedback/help earlier rather than later. |
Very cool! Will try this out this week. |
This is now supported as a docker image: https://hub.docker.com/r/joey711/dada2-shiny-devel/ with instructions on dada2docker: |
Some quick notes for myself as I finally get around to testing this:
On first install ran into the following error:
Solved by |
First impressions, I think the basic interface layout looks good. Filter/Learn/Denoise is a good way to factorize the workflow. It would probably be good to add chimera filtering (or just roll it into the Run DADA command with another option). Also a new tab for assigning taxonomy is probably desirable? Testing-wise though, I'm stuck on step 1 -- the Shiny interface won't let me pick a folder in any of the folder select interfaces: I just get blank options there: PS:
|
@benjjneb are you using the docker version? or this branch? For the docker version, the host environment is always the same (so hard-coding it works really well there), and the user just maps their desired sequence files to that location. The details of that are shown in the docker command for dada2docker/shiny-dada2 (or whatever i called it). Update on CLIIn short, I'm using a very effective CLI-generator called docopt (maybe you've heard of it), and rather than just dump a bunch of scripts with if-statements to handle different cases, I've written an R6-based object-oriented class to wrap the different approaches, with a parent generic to define the general features, importers, etc. To formally and generally handle file manifest and pairing, I define a simple tab-delimited manifest file (we could easily support a few other formats if they are natural tables with the columns we expect), as well as a YAML-based file ("parameters.yml") for passing in parameters for different methods in each workflow step. The expected names in that file are the same as in dada2 itself, so no need to re-define parameters or their doc. This keeps it a natural extension of dada2 rather than an end-around using the package. My plan is to also update the shiny-dada2 prototype to use these classes so that both the CLI and shiny workflow behaviors are consistent and more easily maintained. I will try to post a new branch with this CLI code soon just to start tracking and sharing it. Next step would be to merge that with the shiny branch and migrate the shiny code to use those classes before testing and adding these additional features. Comments on your first impressions
|
@benjjneb
Here is a working (on my system) prototype of a Shiny-DADA2 app.
After installing dada2 from this branch, you should be able to just run the following to test it out.
Not really ready to merge it into master. I'm still ironing out some things, like some of the final output data structures and summary plots; and also the on-app doc. It isn't obvious anywhere in the doc, but your folder of fastqFiles must have an
info.txt
file, which has a tab-delimited table with columnsSample
,Direction
, andFile
.Here is a link to a version of the MiSeqSOP data for testing -- which simply means it has the
info.txt file
already created. It also includes a tutorial showing how that file was made:stage.Rmd
andstage.html
.Looking forward to feedback!