ialbert / genescape-central

Gene Ontology subgraph visualizations
MIT License
13 stars 0 forks source link

Consider web server #4

Closed j-andrews7 closed 4 months ago

j-andrews7 commented 4 months ago

It feels it'd be straightforward to set up a web server for this, which would improve accessibility and usage greatly. It feels like it'd really be worth the effort if possible.

ialbert commented 4 months ago

Running a publicly facing service is about substantially harder than running the same code locally.

There are always ongoing problems that need to be dealt with, from security issues, to patches, updates, user issues, timeouts, overloads etc. When a server takes outside inputs from anonymous users, these inputs need to be heavily sanitized, both coming in and also the results going out. The web is a very hostile environment and exploits abound, it is a huge responsibility.

It also costs say $20 per month. Again not all that much, but still it means having to pay $20 month from now on.

Finally, in this particular case, the tasks are too easy to abuse, even accidentally. Selecting a genelist of 100 highly annotated genes would take maybe a minute to compute, but during that time it would use substantial amounts of RAM and CPU power, something that I cannot offer to the world.

One of the unique features here is that GeneScape can be installed and run as a standalone package with no command line skill! How many bioinformatics command line programs do that? Not too many right?

So GeneScape is already far ahead of the typical bioinformatics tooling, though I agree that would be awesome if one could just run it with even less effort.

j-andrews7 commented 4 months ago

Hm, some fair points, though most of them have solutions I can see for a demo web server (e.g. limiting input to a reasonable number of genes, AWS free tier hosting, etc).

Regardless, in the future you may want to design such applications with this in mind - Shiny for python is one such option that can be deployed for free to shinyapps.io, and it handles pretty much all of your concerns with regard to scaling, security, etc, without you having to worry much about it.

One of the unique features here is that GeneScape can be installed and run as a standalone package with no command line skill! How many bioinformatics command line programs do that? Not too many right?

Quite true, but I am reviewing this with the mindset of making suggestions to help it be the best it can be rather than just better than its competitors :)

Anywho, I don't consider this a block for acceptance or anything, but it's one of the more noticeable "wishlist" items at this point.

ialbert commented 4 months ago

I did not know Shiny has a Python implementation.

This code is a Shiny-like app after all ... Only that I have also partially re-implemented the Shiny framework itself :-)

I'll look into migrating it to Python version of Shiny.

I would much prefer if I did not have to deal with the server side of things. Plus, as you point it out, it come with free hosting.

j-andrews7 commented 4 months ago

It is quite nice and pretty simple to put together. The UI for your app could be put together quickly - the only thing I'm not sure about is the plotting. It's still a developing framework, and I don't know if it has renderer functions for DiGraph or pydot objects.

ialbert commented 4 months ago

@j-andrews7 I managed to migrate the software to Shiny that can be run via the shinyapps.io:

https://biostar.shinyapps.io/genescape/

Excellent recommendation!

Evidently the paper and screenshots will all change.