Quick links: Reference documentation, FRETBursts tutorials
FRETBursts is a software toolkit for burst analysis of confocal single-molecule FRET (smFRET) measurements.
FRETBursts is an effort to bring reproducible computing to the field of single-molecule confocal microscopy. It provides a standard implementation of state-of-the-art algorithms for confocal smFRET analysis. FRETBursts is opensource and contributions are welcome. The authors are committed to promptly fix bugs whenever discovered.
Issues can be reported and discussed on the issue tracker. Fixes or enhancements can be sent with a github pull request. Small corrections can be made directly online by clicking on the GitHub edit button of a specific file.
FRETBursts allows to analyze both single-spot and multi-spot smFRET data. Alternating laser excitation (ALEX) scheme is supported.
Main analysis features includes:
- background estimation as a function of time (for example in 30s windows)
- sliding-window burst search with adaptive (background-dependent) rate-threshold. No timetrace binning required.
- burst corrections: background, D-spectral leakage (bleed-through), A-direct excitation, gamma-factor
- per-burst statistics (# photons, burst duration, E, S, peak rate in burst, etc...)
- post-burst-search selection functions (for ex.: burst size, burst width, E, S, ...). Defining a new burst selection criterium requires only a couple of lines of code.
- fit routines for FRET efficiency (1 and 2-gaussians histogram fit, MLE Poisson models, weighted least squares models, weighted expectation maximization, etc...)
Moreover FRETBursts includes a large set of modular plot functions for background, time-traces, rate-traces, E, S, ALEX histograms, weighted kernel density estimation (KDE) and more. Thanks to the excellent Matplotlib library, FRETBursts can produce publication-quality plots out of the box.
This software aims to be a reference implementation for both established and novel algorithms related to bursts analysis of smFRET data.
Despite the broad diffusion of smFRET experiments on freely diffusing molecules, before FRETBursts, no complete smFRET burst analysis software was freely available on internet. Each group have re-implemented the analysis in-house with little or no code sharing. This is clearly sub-optimal either because specific advances in the burst analysis are not readily available to a wide public of smFRET users and because subtle differences in implementation make the comparison of experiments performed by different groups problematic.
We envision FRETBursts both as a state-of-the-art burst analysis package for smFRET experimenters, and as a benchmark for advanced users willing to explore new algorithms or to compare alternative implementations.
FRETBursts is written in the python programming language using the standard scientific-python stack of libraries (Numpy, Scipy, Matplotlib, IPython). Not only FRETBursts but also the entire software stack on which it is built upon are open-source and freely available to any scientist.
FRETBursts uses consolidated software engineering techniques (version control, unit testing, regression testing) and a workflow based on IPython Notebook to ensure robustness and reproducibility of the results. For example, when loading FRETBursts in an ipython notebook, the current commit ID is always displayed and saved.
We provide a list of tutorials (IPython notebooks) that can be viewed online, edited and re-executed. The reference documentation is generated by Sphinx extracting the docstring from the source.
###External resources
For a comprehensive tutorial on using python for scientific computing:
IPython Notebook is an interactive web-based environment that allows mixing rich text, math and graphics with (live) code. For more info please visit:
##Installation
Briefly, the installation consist in installing a scientific python distribution, downloading FRETBursts sources, and setting up a folder for the FRETBursts notebooks.
FRETBursts is loaded running a small script (load_fretbursts.py
) placed
in the notebooks folder. The first time you download FRETBursts, you need to
run the [FRETBursts Installation.ipynb](http://nbviewer.ipython.org/github/tritemio/FRETBursts/blob/master/notebooks/FRETBursts Installation.ipynb)
notebook that will write a configuration file
containing FRETBursts's source folder.
A detailed description of the installation can be found in:
##How to use The official FRETBursts documentation is built and hosted by ReadTheDocs:
We provide a list of IPython notebooks showing typical workflows for smFRET analysis and illustrating FRETBursts functionalities. These notebooks can be either viewed online or downloaded and executed locally using publically available datasets (see below). You can read the tutorials online at the following locations:
- FRETBursts - us-ALEX smFRET burst analysis (start here)
- FRETBursts - 8-spot smFRET burst analysis
- FRETBursts - ns-ALEX example
You can download the tutorials from the FRETBursts_notebooks repository.
NOTE: We include an unevaluated copy of the tutorials in the FRETBursts sources in the notebooks folder.
We provide a public dataset [1] to test and demonstrate FRETBursts functionalities. These dataset files will be downloaded when running the tutorials.
[1] A. Ingargiola, S. Chung (2014): smFRET example datasets for the FRETBursts software. DOI 10.6084/m9.figshare.1019906
##Development
The documentation is built using Sphinx (1.2.2 or
later) and the napoleon extension.
A notebook that builds the HTML docs can be found in
notebooks/dev/docs/
.
The unit tests are written with pytest.
Notebooks that execute the unit tests can be found in
notebooks/dev/test/
.
In the same folder a notebook for regression testing is provided.
##Acknowledgements
This work was supported by NIH grants R01 GM069709 and R01 GM095904.
##License and Copyrights
FRETBursts - A bursts analysis toolkit for single and multi-spot smFRET data.
Copyright (C) 2014 Antonino Ingargiola - tritemio @ gmail.com
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2, as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You can find a full copy of the license in the file LICENSE.txt