📏 diff-fret
diff-fret provides high-performance, auto-differentiable kernels for modeling Fluorescence Resonance Energy Transfer (FRET) observables from structural ensembles.
Quick Start
import jax
import jax.numpy as jnp
from diff_fret import fret_efficiency, fret_efficiency_av
# Point-to-point efficiency at a single distance
r = jnp.array([45.0, 50.0, 55.0])
e = fret_efficiency(r, r0=50.0)
print(e) # [0.776, 0.500, 0.290]
# Accessible Volume (AV) average over Gaussian dye clouds
pos_donor = jnp.array([0.0, 0.0, 0.0])
pos_acceptor = jnp.array([50.0, 0.0, 0.0])
e_av = fret_efficiency_av(pos_donor, pos_acceptor, r0=50.0)
print(e_av)
# Gradient of efficiency w.r.t. donor position
grad_e = jax.grad(lambda d: fret_efficiency_av(d, pos_acceptor, r0=50.0))(pos_donor)
print(grad_e) # points toward acceptor