bioboxes / rfc

Request for comments on interchangeable bioinformatics containers
http://bioboxes.org
MIT License
40 stars 9 forks source link

Bioboxes should create a GUI for easily running bioboxes #94

Open michaelbarton opened 9 years ago

michaelbarton commented 9 years ago

Creating a graphical user interface (GUI) for bioboxes would be the single fastest thing to accelerate adoption. At present using Docker requires knowledge of Docker and the command line. A GUI that someone can download and then run their data through a biobox would put a huge amount of software in the hands of many biologists.

This is not an immediate priority but I think is something we should eventually consider.

michaelbarton commented 9 years ago

A GUI would also help editors/reviews to enforce the standard too.

pditommaso commented 9 years ago

Are you thinking to something like Kitematic ?

pbelmann commented 9 years ago

@pditommaso something like Kitematic would be great. It should just be a little bit adjusted to bioboxes. With features like:

For a rich client application I would maybe consider

Another option would be to build a browser based app that runs only on your local machine with the full power of web technologies like bootstrap, spring boot, angularjs or nodejs .

avilella commented 9 years ago

@pditommaso it would be great if someone could have a look at http://kitematic.com . I don't use Mac, so I don't have the tools to try it out :-/

Some of the bullet points in @pbelmann comment could be covered by http://arvados.org , although arvados is a lot bigger in its feature set than the minimum we may want to try as a first off.

I have been playing with arvados, and maybe @tetron can give us a brief of how arvados could be used in this, but as a summary, arvados is the open-source stack that @tetron and others at curoverse use in a cloud setting. Taking the open source arvados and installing it locally would be a way of having a GUI for bioboxes apps.

Precisely along those lines, I have been looking into installing arvados locally on a Linux Laptop. It would be super-cool to have a demo ready for BOSC 2015 to show how, for each of the bioboxes we produce, we could execute them as an arvados "pipeline" using the Arvados GUI. I haven't successfully finished the installation, but @tetron and others are helping out with it:

https://arvados.org/issues/5461#note-5

I would be interested in knowing other people's opinion on this matter.

michaelbarton commented 9 years ago

It would be super-cool to have a demo ready for BOSC 2015 to show how, for each of the bioboxes we produce

I think before BOSC 2015 we have to focus on getting some working bioboxes and a website that provides documentation on how to create your own.

jmchilton commented 9 years ago

It might be worth also considering Galaxy as your GUI front-end - it is a great platform for this sort of thing. You could build Galaxy tool descriptions for your boxes and get many of the advantages you mentioned while also plugging into a very active bioinformatics focused developer community. You could plug multiple bioboxes into a pipeline/workflow built with a GUI with today's feature set. I would be happy to work with you on building deployment options that make this more accessible as well (perhaps recipes to build pre-configured Galaxy instances with certain bioboxes on Docker, Vagrant, and Cloud might be a way to make it accessible in many different ways).

pditommaso commented 9 years ago

@avilella I've tried Kitematic some months ago. It has a nice interface that shows the installed images and allows one to search for other images in the Docker hub. Also, it manages the installation of docker+boot2docker+virtualbox transparently, if it's not already installed. This could be a plus for novice users. Quite surely the Docker strategy is to provide an implementation of Kitematic for the Windows platform.

I'm less convinced on using Galaxy as presentation layer. In my opinion a GUI for Bioboxes should be independent from any specific pipeline/workflow platform.

jjkoehorst commented 8 years ago

Sorry for bumping up an old thread but has there been any interest to build an XML file for Galaxy? I personally would be a big fan and can look into the creation of a galaxy xml wrapper but first need to dive into the syntax (all possibilities) of the assemblers and validators for biobox.

michaelbarton commented 8 years ago

@jjkoehorst I think integration for galaxy would be a great idea. What would you need from us to get started?

jjkoehorst commented 8 years ago

I have been thinking of multiple ways, either via the biobox pip module which would require an "installation" or a a simple python script that creates the YAML files and mounts the right input files to the docker container (no folder mounting) see a draft example here:

http://github.com/jjkoehorst/GalaxyBiobox

GalaxyBiobox (master) $ python yamlCreator.py --fastq myReadFolder/reads.fq.gz --type single --id test --output output_data/ --assembler bioboxes/idba --tmp tmp

What I think I need is wether this would be a wise way to go or via one of the already existing modules? Second what are all the YAML options, such that an XML can be created with this information.

edit

I have updated the yamlcreator with some test suits. They only assembler I cannot run at the moment is soap as it requires a fragment size.

edit 2: After a small twitter discussion @michaelbarton would it be possible to let the Galaxy XML file call the docker image directly with a yaml string as system argument or stdin? Such that galaxy does not need to call a python script that calls a docker but directly can communicate with docker. This might be fruitful when running docker swarm but to be honest havent looked into that yet...

dridk commented 7 years ago

I agree . I was thining a similiar tool to make pipeline runnable by biologist. I imagine a REST API server to run bioboxes with websockets to monitor pipelines. ( Bar progression, live log output). The client should looks like a simple file browser where you can upload/download file grouped by pipeline. A pipeline can be described with a description.yaml file which contains, name, logo, description ... You can install the pipeline as a plugins.

Here are some mokup ... If you are interesting.. we can build it ! image

spectacle z26158

dridk commented 7 years ago

I am an expert in Qt/C++ . That's mean I can build a nice user interface using Qml technolgy. That's mean : native application, cross platform and faster than html . And we only need a simple server with python tornado to expose a REST/websocker api. For example, to run a pipeline :

 POST http://api.bioboxes/velvet 
 BODY  { input : "/path/to/fastq/" , optionA : 324, optionB: 342} 

BODY are generated from a formular which follow the Json-form specification.

a Json file in Json-form specification, could describe how to build a form user interface.

field {
  id : "fastq_input"
 name: "fastq input"
 type : "file"
 description : "Put your fastq here "
}

I imagine the client as a simple File browser . Select your pipeline, and from it, you can download/upload files.