A few days ago I uploaded a software paper to the bioRxiv introducing FRETBursts, an open source burst analysis python software for single-molecule FRET data. In this post I highlight the aims of the manuscript and a few strengths of FRETBursts.
We wrote the manuscript not only as an introduction to the FRETBursts software but also as an accessible introduction to burst analysis for smFRET data. While writing the paper we had several target readers in mind. Primarily, it should help newbies to familiarize with the conceptual steps of the analysis while at the same time learning how to perform them in FRETBursts. Additionally, users with previous experience in smFRET data analysis, can find the detailed description helpful to clarify exactly where FRETBursts implementation differs from (or improves upon) commonly used algorithms. Finally, users with familiarity with the python programming language can appreciate the software architecture and data structures used to implement FRETBursts.
In order not to scare away readers with no python experience we relegated most of the language-specific details to special paragraphs marked as “Python details”.
FRETBursts execution model
FRETBursts is primary executed through the Jupyter notebook environment. One advantage of Jupyter Notebook is that it binds together a narrative description of the analysis, the code commands and the results in a single interactive document that can be shared, modified and re-executed. If you have never heard of Jupyter notebook you should definitely check it out (see also this paper which provides a demo).
You can start using FRETBursts by simply executing pre-made notebooks (we provide several examples). But, as you gain more confidence, you can customize the analysis by changing parameters, invoking different analysis methods or making different plots. The Jupyter environment allows a smooth transition from beginner to power-user.
Additionally, for users with deep experience in smFRET data analysis, FRETBursts provides well-tested low-level methods for processing timestamps and burst data.
As an example, SangYoon Chung (a Ph.D. candidate in our lab), recently wrote a notebook implementing the Burst Variance Analysis (BVA) using FRETBursts, with no previous experience in programming (and only some elementary notions of python). This, of course, speaks volumes about SangYoon’s abilities to learn new topics (his expertise is molecular biology and biophysics). But it gave us a great example of how to use core FRETBursts routines for manipulating timestamps and burst data for implementing a new analysis.
SangYoon’s notebook has been now added to FRETBursts. Moreover, we have a section dedicated to the BVA implementation in the FRETBursts manuscript.
All software have bugs. In biology or biophysics a software usually gain “respect” when it is used in several publication and yields “reasonable” results. While this type of “field” validation is very important, it is not enough to demonstrate the correctness of a given software implementation. In many cases we mis-place our trust in the correctness of a software only because it is widely used.
Conversely, modern software engineering practices such as defensive programming and unit testing, allow to minimize the presence of bugs, catch rare error conditions and avoid regressions. In FRETBursts I use such common techniques. All the core analysis functions, for example, have extensive unit tests that are automatically executed at each commit though the TravisCI service. So, you don’t have to trust my infallibility, but rather trust the “bug traps” (i.e. tests) I put in place to protect you against my own errors.
In the spirit of open science we are eager to receive comments about the software and/or the manuscript. We also are enthusiastically adopting and supporting the immediate publications (i.e. pre-prints) for fast dissemination of scientific knowledge. So, in this spirit, if you find something is not clear or you think there is some glaring omission please let us know. We will soon send the manuscript for formal peer-review, but in the meanwhile we are also probing the ground with the “internet community”.
Thanks to Eitan Lerner for critical reading of an early draft of this post.