STRC h01 Pharmacochaperone Parameter Provenance Audit 2026-04-23

Closes the 2 residual housekeeping items from STRC Cross-Hypothesis Parameter Audit 2026-04-23 for STRC Pharmacochaperone Virtual Screen E1659A (tier A, “CLEAN” verdict — no phantom cites, 0 external bio-constants load-bearing).

What was flagged

  1. TPSA range 40-90 Ų mis-framed as “CNS-like delivery into endolymph” in pharmacochaperone_phase3b_virtual_screen.py docstring. STRC is extracellular — BBB-penetration TPSA bracket is not a relevant constraint; RWM/otic permeability vs TPSA has no primary-lit mapping at a clean range. Compound the framing error: tpsa is computed and stored as a descriptor but does not enter the composite score at all — only 7 weighted components do (anion, anion_arom_d, size, ro3, lipinski, hb_donor, qed). The docstring falsely implied TPSA gated scoring.
  2. 3 druggability scoring-weight inconsistencies across Phase 1 (phase1_mutant_pocket.py), Phase 2 (phase2_pocket_scan.py), Phase 2b (phase2b_subpockets.py). Each phase has its own formula with different feature sets and weights — scores not cross-phase comparable.

What was fixed in-place

pharmacochaperone_phase3b_virtual_screen.py — docstring corrected:

  • tpsa entry clarified as descriptor-only, not scoring component
  • Explicit removal of “CNS-like” framing (STRC extracellular → BBB TPSA irrelevant)
  • Added note that lit-precise otic/RWM TPSA range does not exist — no fabricated bracket to replace the old one. Compound filtering by TPSA at a specific range should only happen with user authorization after reviewing RWM permeability primary lit (which is thin at best).

pharmacochaperone_phase1_mutant_pocket.pydruggability_score() docstring expanded:

  • States phase weight set (0.5/0.3/0.2) and notes mismatch with Phase 2 and Phase 2b
  • Declares scores not cross-phase comparable — use within-phase ranking only
  • Notes SiteMap and DoGSiteScorer are both heuristic baselines — no lit-canonical weight set for custom feature combinations

pharmacochaperone_phase2_pocket_scan.pydruggability() docstring expanded:

  • States phase weight set (0.40/0.25/0.20/0.15) and volume optimum (300 ų, σ=200)
  • Cross-phase incomparability flagged

pharmacochaperone_phase2b_subpockets.pydruggability() docstring expanded:

  • States phase weight set (0.30/0.20/0.15/0.15/0.20) with new depth component
  • Cross-phase incomparability flagged; depth descriptor specific to subpocket ranking

What was NOT touched

  • Phase 4a/4b/4c/4d/4e/4g/4h results and verdicts — these rest on Vina/GNINA docking scores against CIF poses from AF3. No external bio-constants retrieved from training data. Phase 4c FAIL (WT preferred), Phase 4e soft-FAIL (margin scorer-limited), Phase 4g repurpose screen results all stand.
  • Phase 5 MD ensemble MM-GBSA plan — deferred (next step in ranking table).

Why no “range correction” is recorded

The cross-hypothesis audit summary line said “1 TPSA range (40-90 → should be 70-100)“. I chose not to apply 70-100 because:

  • It has no primary citation for otic/RWM delivery
  • Common chemical-chaperone class (CFTR correctors VX-809/VX-661) has TPSA 103-115, spanning both brackets
  • Adding a specific TPSA bracket to the scoring composite would be a new design choice, not a “correction” — and the user’s literature-first rule (feedback_literature_first) says no fabricated ranges
  • The honest fix: clarify that TPSA is descriptor-only, and any future TPSA-gated filter should cite the primary lit used to set its bounds

Ranking delta

#1 Pharmacochaperone: A held (no axis change). Mech 3, Deliv 4, Misha-fit 4. Audit state upgraded: housekeeping items closed, docstring provenance honest. Next step unchanged: Phase 5 MD ensemble MM-GBSA.

Connections