In a previous post, I introduced FRETBursts, an open source burst analysis software for single-molecule FRET (smFRET) data with a strong focus on reproducibility. Today, I talk about a new service (based on MyBinder.org) which allows running FRETBursts on-line, with zero installation.
With this new service you can try FRETBursts without the need to install anything (i.e. python) on your computer. All you need is clicking the following button, which will open a new instance of the FRETBursts environment on the cloud:
The previous button will open a new page in your browser showing the Jupyter Dashboard. There, in the notebooks folder, you will find multiple FRETBursts notebooks for different kind of analysis. All you have to do is pick one and run it.
If you are new to Jupyter Notebook start by clicking on the First Steps notebook.
In the future, publications using FRETBursts will hopefully also deposit the data on a public repository (such as Zenodo or Figshare). This will enable anybody to replicate the computations in a paper simply using FRETBursts on the cloud.
Features and Limitations
At the moment, the notebooks available in the on-line service are the same ones included in FRETBursts source repository. When ran unmodified, they will download a sample data file and run the analysis on it. You can also use your own data file which needs to be uploaded first (see the First Steps notebook). You can even upload your own FRETBursts notebook, if you happen to have one already.
A current technical limitation (that will be soon fixed) is that the Upload button on the dashboard works only form small files (<35MB). For bigger files, you have to upload the data somewhere on the internet and then download it to the server (see explanation in the First Steps notebook).
As a final caveat, note that sessions on MyBinder are not permanent (they are deleted after 1 hour of inactivity). Therefore, if you modify a notebook and want store it for reference or future use, please remember to download it on your own computer.
Feedback and questions are more than welcome. Please open a GitHub Issue to discuss anything related to this service.
Behind the Scenes
Even though MyBinder is an incredibly sophisticated service, setting it up is incredibly easy. So easy that anybody (either using FRETBursts or not) can setup a similar service to complement a publication, for example.
Starting from a repository containing a bunch of notebooks, all I had to do was adding a text file with the list of (conda) packages to be installed on the server (and that file was mostly auto-generated). Then, MyBinder.org did the magic.
Here, I want to briefly highlight some pre-conditions that made possible building such an incredible service.
First and foremost it’s open source. Like continuous integration (an automated testing infrastructure), the service that allows to run FRETBursts on-line exists only because all the FRETBursts software dependencies (python, jupyter, numpy, scipy, lmfit, matplotlib, etc…) are free an open source. If FRETBursts were written in MATLAB, for example, due to licensing cost, running a continuous integration service or a service like MyBinder.org to execute MATLAB code on the cloud would have been prohibitively expensive. Moreover, since it would have been a closed platform, it would not have received the sort or contributions (form individual and companied across the world) that these software have. The technical (and ethical) superiority of open source software for scientific computing cannot be understated (see this paper for more detailed argumentations).
Second, early in development of FRETBursts, I choose to base the execution on Jupyter Notebooks (at the time called IPython Notebook). This allowed me to focus on developing FRETBursts as a library, avoiding wasting time building GUIs or command line interfaces that can easily become bloated or obsolete. On the contrary, the notebook interface represents a semi-graphical interface which is good enough even for non-programmers. Notebooks are also quite good for storing full analysis workflows, drastically simplifying the way we share analysis details and results.
Third, and most importantly, Jeremy Freeman and collaborators built MyBinder, a service to execute on the cloud any Jupyter notebook contained in a GitHub repository. This was possible by recent developments in the Jupyter project (e.g. JupyterHub), together with a clever use of modern cloud technologies (docker + kubernetes). For an introduction to MyBinder in scientific computing see this interesting post from Titus Brown.
Synergies made possible by open source technologies plus skillful individuals can make miracles.
In other words, with FRETBursts, we really stand on giant’s shoulders!
Thanks to Yazan Alhadid for commenting on an early draft of this post.