Science Flask is a web-app template for online scientific research tools, built with Python Flask, JavaScript and Bootstrap CSS. It allows you to build a modern web-app from your research tool in a matter of hours (as opposed to a few weeks).

It comes with batteries included:

  • admin panel
  • robust form validation
  • secure user management
  • uploading and checking of data files
  • asyncronous job submission and handling
  • email notifications of job status
  • detailed tutorial for deployment
  • nicely designed user-interface
  • logging to email and files
  • compatible with Python3

It's also open-source and free.

This demo app runs on AWS on a t2.micro instance. Check the deployment.md which explains the necessary steps to get your app to this stage. For more info, documentation and source code please go to

Github repo

Try the demo with these Example datasets

If you end up using Science Flask for your project please make sure to cite our work.

Read the paper

To demonstrate the various features of Science Flask, this demo implements a really simple scientific app which does the following:

  • Users can register with an academic email address.
  • Upload one or two datasets as .csv or .txt files.
  • A series of checks are performed on the uploaded datasets:
    • all columns have to be numerical
    • each dataset must have a feature and sample number that is between a predefined minimum and maximum
    • if we have two datasets uploaded by the user, they need a minimum number of intersecting samples.
    • missing values are imputed with their column-wise median
  • Then the user can submit an analysis using the uploaded files. During the analysis the app will select a user defined number of columns with the highest variance.
  • These columns/features are then used to calculate a correlation matrix between them.
  • If there's only one dataset uploaded, the correlations are calculated between the features of this one dataset. If two datasets are uploaded then three matrices/plots are produced: two for the features of the individual datasets and another that shows the correlation between the features of the two disperate datasets.
  • The resulting p-values of the correlation matrix are filtered using one of the user selected corrrection for multiple testing methods: Bonferroni or Benjamini Hochberg. The user can also specify the the alpha-level for hypothesis testing. Only correlations that pass both of these will be displayed.
  • The tables and heatmap of correlations can be downloaded by the user or checked online.