-
Notifications
You must be signed in to change notification settings - Fork 664
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
Add a web UI that allows a user to launch and monitor a workflow execution #88
Comments
@pditommaso It's great that you created this issue and I would really like to contribute to this feature. But since I'm still new to nextflow it is not clear to me how you want to build such an application. I think there are two ways:
If you thought of a different way to implement this, please let me know.
If you want to implement it according to the first point, my first thought was using play framework. It is stateless (no servlet container (glassfish,tomcat,...etc)) and it allows you to package the whole application in a debian and different other package formats. If you want to implement it according to the second point I think all of the above frameworks have sufficient functionality but I think I would choose Spark or Ratpack. However this is an important point so maybe a pros cons list would help. |
I was thinking to implement it as a subproject, in this way it could take advantage of the implicit download mechanism already implemented in Nextflow. See how works the It could be done both as a new command (e.g. I'm more in favour for having a new command because this would simplify to handle specific parameters related to the web server (for example: port number, etc). I know Play framework but I think is oversized for this use case. Spark and Ratpack are interesting alternative but they requires Java 8. Not sure I want drop the support for Java 7 at this time. In my opinion it should not be discard the Native HTTP server implemented in the JRE. At the end it only needs to manage a very few requests. Also I guess most part of the UI will be managed on the client side using one of these modern template engine like Ember, Angular or React JS. Unfortunately I don't know any of them, do you have any experience with these tools? Anyway I agree that we should list pros/cons both for the server and the template engines. I will create a new branch, trying to put together a skeleton. Then we could work together on this. Thanks! |
Per request on twitter I'm detailing a situation we have at UTSW. We have a requirement that will result in us developing a web-interface for nextflow - although the web app will not be limited to that. Here's the scenario: Use Case We have a variety of groups on campus implementing bioinformatics (and other biomedical) workflows. Typically these groups have a few local bioinformaticians who are putting together existing tools, their own R and python code, with bash scripts to direct the workflow. Many of these groups are now using our HPC facility to run these workflows. There is a wish to provide a standardized web-based means to run data through many of the workflows, using our cluster. The web-interface must be as simple as possible for users, to support execution of workflows by users who have no experience of, and no expectation of learning any command-line interaction This is a solution for standardized workflows with minimal parameters. It is not intended to provide complex parameter options / modular workflows that can be built from components etc. We have other solutions for that type of approach. The infrastructure used to provide the solution needs to be such that the existing bash-scripted workflows can be translated without major effort (rules out approaches needing tool wrapping etc). Reflecting the experience level of the intended final users, the web app must present documentation about the workflow, and have some facility for providing a simple results visualization if desired. The approach needs to be generic - not limited to a particular domain within bioinformatics etc. The approach At present we are moving toward: A loose definition of a 'workflow package', which is a git repo containing:
The web app will then:
For us it's going to be a python/django project. |
Thanks a lot for your detailed comment. Your use case has a bit broader scope than the goal of this feature, above all because I guess it needs to be customized/integrated with your infrastructure. In any case do you have any plan to release it as a FOSS project? |
Yes, had no doubt it would be outside the general scope. it'll be a pretty customized solution. Open Source release will likely be attempted, and will depend on our Technology Development Office. |
I am very interested in this feature and willing to help if you need help to implement this feature. |
As far as I know @emi80 has made some very little progress thought I think he stopped to work in it. Any contribution is more than welcome. Are you comfortable with Java/Groovy and HTML5 development? Thanks for your interest/support. |
I am more than happy to help out and implement this functionality. |
Having some experience in Java you can be fully proficient with Groovy in a few days. I'm very happy you are interested to contribute to this feature. I will rebase the webui branch to synchronise it with the latest changes. Also let's wait a feedback from @emi80 to update us on any progress he may have done. Feel free to start playing with the code and ask questions if needed. |
Of course! |
Hi @joshuabhk! Of course any contribution on this is very welcome. No reservation has been made on the feature. I just started to exepriment a bit with the components for the interface using Foundation (gist here). Though, after playing a bit with it, I think Bootstrap would probably be a better choice. Of course any suggestion on a better way to implement the components is welcome, as long as we keep things simple. So, please go ahead and keep us posted on the progress! 👍 |
I've rebased the |
Thanks! I will take a look at it! |
Hi @pditommaso, Another offer of help here - I can't write Java or Groovy to save my life (yet!), but I have a fair bit of experience of building HTML interfaces. If you can draw what you want on a piece of paper I'd be happy to put together static pages for you. Phil |
@emi80 - I recreated your form using bootstrap, code is here and web preview is here. Bit flat and boring currently, but hopefully gives a useful starting point. Note that I used the v4 beta version of Bootstrap. Let me know if you have any questions / ideas. @joshuabhk - apologies, hope I didn't tread on your toes! |
ps. @pditommaso - minor suggestion, your commit contains the following line: if( opts.containsKey('hint'))
this.hint = opts.hint Personally, I'd change this to Also note that some stuff I put into my static page wouldn't be easy / possible with the nextflow config option. For instance, the example dropdown box and 'free HTML' generally. Also grouping / fieldsets. |
@ewels Thanks for your contribution and suggestions. Soon or latter we will work on this. |
Not a problem at all. Actually I am glad that you can work on it. I am Best, Bong-Hyun On Wed, Nov 2, 2016 at 7:29 PM Phil Ewels notifications@github.com wrote:
|
Is this web UI feature now available in Nextflow? |
No, unfortunately no. |
we have dolphinnext, if anybody wants to try. |
Nice! need to find time to try it. |
I would definitely help if you need. We also have a web version dolphinnext.umassmed.edu. |
The goals of this enhancement is to provide nextflow with a web graphical user interface that allows a user to:
Input parameters
Nextflow already implements an input parameters mechanism that allows a user to provide input values as command line options.
The same will be used to display an input form allowing a user to provide a workflow inputs. However in order to render an input field are required extra metadata that currently are not available. The required metadata will be a subset of the HTML5 field input types and validation attributes (to be defined).
UI input fields will be defined in the
nextflow.config
files, using a built-in method calledfield
(temporary name). For example:The first argument will define the field default value (for consistency with the current mechanism). The other named attributes will define the input field metadata.
Web server
Nextflow will need to embed an web server container that will take care of render the user interface and display the workflow/processes runtime informations.
Possible candidates are:
The web server instance will need also to manage a nextflow session, run it in the background, capture the standard output and display in as a web page for monitoring purpose.
The text was updated successfully, but these errors were encountered: