Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR adds two functions to the
phasorpy.phasor
module:phasor_from_fret_donor
: Calculate phasor coordinates of a FRET donor channel as a function of frequency, donor lifetime, FRET efficiency, fraction of donors undergoing FRET, and background fluorescence.phasor_from_fret_acceptor
: Calculate phasor coordinates of a FRET acceptor channel as a function of frequency, donor and acceptor lifetimes, FRET efficiency, fraction of donors undergoing FRET, fraction of directly excited acceptors, fraction of donor channel in acceptor channel, and background fluorescence.A new tutorial,
phasorpy_fret.py
, is included.The functionality is inspired by the SimFCS FRET calculator and the vLFD lifetime demo. This implementation does not follow SimFCS, which was found to have several issues. Instead, it is limited to single component FRET donor and acceptor lifetimes. For multi-component lifetimes, it should be possible to linearly combine the phasor coordinates obtained for the single components.
Ideally, the implementation should be tested against a formally derived FRET model. No such model exist to my knowledge.
Implements the FRET calculations proposed in #6.
Release note
Summarize the changes in the code block below to be included in the
release notes:
Checklist