Skip to content

📻 diff-epr

diff-epr provides differentiable kernels for simulating EPR distance distributions (DEER/PELDOR) from structural ensembles using JAX.

Quick Start

import jax
import jax.numpy as jnp
from diff_epr import deer_trace

# Distances in Angstroms from a multi-component distance distribution
distances = jnp.array([30.0, 35.0, 40.0])
# Time points in microseconds
time = jnp.linspace(0, 2.0, 100)

# Simulate DEER trace
trace = deer_trace(distances, time)

# Gradient of the sum of the trace w.r.t. inter-spin distances
grad_r = jax.grad(lambda r: jnp.sum(deer_trace(r, time)))(distances)
print(grad_r)  # use to refine distances against an experimental trace