Repository navigation
v0.1.5 — Critical Fixes: Autodiff Test Suite & URL Migration
What's Changed
🔴 Critical Fixes
Repository URLs migrated to elkins-lab org
All references in README.md and pyproject.toml updated from github.com/elkins/ to github.com/elkins-lab/:
- CI badge and codecov badge (were showing as broken/stale)
- Both Colab notebook launch links (were returning 404)
- Contributing link, Related Projects section, BibTeX citation URL
Missing autodiff test coverage — now added
The library's core promise is JAX auto-differentiability, but there were previously zero tests verifying that jax.grad works on any kernel. This release adds 68 new tests across 4 new files.
🆕 New Test Files
tests/conftest.py — Shared fixtures
Canonical biophysically-meaningful geometries (ideal α-helix, β-strand, Fibonacci N–H vectors, Gaussian density maps) shared across all test files.
tests/test_autodiff.py — 46 differentiability tests
Every kernel tested for: gradient exists, is finite (no NaN/Inf), is non-zero, has correct shape, and works inside jax.jit. Plus physics-correctness assertions:
- SAXS Debye: grad + JIT + solvent subtraction + Hessian (
jacfwd∘grad) - Karplus:
dJ/dθsign check at θ=5° - RDC: grad w.r.t. bond vectors and Saupe tensor; RDC = 0 at the magic angle (54.74°)
- Chemical shifts:
dδ/dφ,dδ/dψ; helix mean shift > sheet mean shift - Ring currents: shielding above ring (δ < 0), deshielding in-plane (δ > 0)
- Rg: translation invariance, mass-weighted, single-atom edge case
- NeRF: grad w.r.t. all four internal coordinates
- Torsions, Kabsch RMSD, CD matrix method, FSC
tests/test_geometry_roundtrip.py — 11 round-trip tests
NeRF ↔ torsion round-trip is near-identity for helix, strand, and random geometries. Includes sign-convention and 2π-periodicity checks.
tests/test_e2e_gradient_descent.py — 10 integration tests
Real Adam gradient descent loops verifying the full pipeline works end-to-end: SAXS χ² refinement, NMR φ/ψ torsion refinement, Rg compaction/expansion, composite multi-observable joint loss.
🔧 Other
pyproject.toml: addedoptax>=0.1.0todevextras;mypyoverride for test files
Full Changelog: v0.1.4...v0.1.5