Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
824 lines (764 loc) · 58 KB
/
Copy pathindex.html
File metadata and controls
824 lines (764 loc) · 58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PROTACXtend — An evidence-grounded autonomous research system for targeted protein degradation | Ahuja Lab · IIIT Delhi</title>
<meta name="description" content="PROTACXtend couples scientific literature retrieval with component-aware PROTAC design, controlled chemical-space search, ternary-complex and ubiquitination-feasibility modeling, hook-effect equilibrium, DC50/Dmax degradation prediction and transcriptomic cell-context reasoning — every step auditable. Saveena Solanki & Ahuja Lab, IIIT Delhi.">
<meta name="author" content="Saveena Solanki & Ahuja Lab (IIIT Delhi)">
<meta name="keywords" content="PROTAC, targeted protein degradation, ternary complex, hook effect, ubiquitination, DC50, Dmax, chemprop, agentic science, computational biology">
<meta property="og:title" content="PROTACXtend — evidence-grounded autonomous research for targeted protein degradation">
<meta property="og:description" content="KNOW → REASON → DESIGN → DISCOVER. Literature-backed PROTAC design, mechanistic modeling, degradation & cell-context prediction with explicit provenance and status.">
<meta property="og:image" content="assets/og-cover.png">
<meta property="og:type" content="website">
<link rel="icon" type="image/png" href="assets/logo-square.png">
<link rel="preload" as="image" href="assets/AA.webp" type="image/webp" fetchpriority="high">
<link rel="stylesheet" href="styles.css">
<script defer src="app.js"></script>
</head>
<body>
<!-- ═══════════ NAVBAR ═══════════ -->
<div class="scroll-progress" id="scroll-progress"></div>
<nav class="navbar" id="top-navbar">
<div class="container nav-inner">
<a href="#home" class="nav-brand" aria-label="PROTACXtend home">
<span class="brand-logo"><img src="assets/logo-mark.png" alt="PROTACXtend mark" width="420" height="217"></span>
<span class="brand-word">PROTAC<span class="brand-accent">Xtend</span></span>
</a>
<div class="nav-links" id="nav-links">
<a href="#about" class="nav-link">About</a>
<a href="#capabilities" class="nav-link">Capabilities</a>
<a href="#mechanism" class="nav-link">Mechanism</a>
<a href="#prediction" class="nav-link">Models</a>
<a href="#workflows" class="nav-link">Workflows</a>
<a href="#validation" class="nav-link">Validation</a>
<a href="#docs" class="nav-link">Docs</a>
</div>
<div class="nav-actions">
<a class="btn-github-nav" href="https://github.com/the-ahuja-lab/PROTACXtend" target="_blank" rel="noopener noreferrer">
<svg viewBox="0 0 24 24" width="15" height="15" fill="currentColor" aria-hidden="true"><path d="M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.55v-2.15c-3.2.7-3.87-1.36-3.87-1.36-.52-1.33-1.28-1.68-1.28-1.68-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.03 1.76 2.69 1.25 3.35.96.1-.75.4-1.25.72-1.54-2.55-.29-5.24-1.28-5.24-5.69 0-1.26.45-2.28 1.18-3.09-.12-.29-.51-1.46.11-3.05 0 0 .96-.31 3.15 1.18a10.9 10.9 0 0 1 2.87-.39c.97 0 1.95.13 2.87.39 2.19-1.49 3.15-1.18 3.15-1.18.62 1.59.23 2.76.11 3.05.73.81 1.18 1.83 1.18 3.09 0 4.42-2.7 5.39-5.26 5.68.41.36.78 1.05.78 2.13v3.15c0 .3.21.66.8.55A11.5 11.5 0 0 0 23.5 12C23.5 5.65 18.35.5 12 .5z"/></svg>
GitHub
</a>
<button class="nav-burger" id="nav-burger" aria-label="Menu">
<span></span><span></span><span></span>
</button>
</div>
</div>
</nav>
<main>
<!-- ═══════════ HERO ═══════════ -->
<section class="hero" id="home">
<div class="hero-bg" aria-hidden="true">
<span class="orb orb-a"></span>
<span class="orb orb-b"></span>
<span class="orb orb-c"></span>
<span class="grid-fade"></span>
</div>
<div class="container hero-inner">
<div class="hero-copy reveal">
<div class="kicker">
<span class="kicker-dot"></span>
Ahuja Lab · IIIT Delhi · Targeted protein degradation
</div>
<h1 class="hero-title">
An evidence-grounded autonomous research system for
<em>targeted protein degradation</em>
</h1>
<p class="hero-lede">
PROTACXtend couples scientific literature and biochemical databases with
component-aware molecular design and controlled chemical-space search. It then
models ternary-complex physics and mechanistic degradation with
DC<sub>50</sub>/D<sub>max</sub> prediction under cell-context reasoning — every
candidate decision carries explicit provenance, uncertainty and
applicability-domain checks.
</p>
<div class="hero-ctas">
<a href="#playground" class="btn btn-primary">Pipeline walkthrough
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4"><path d="M5 12h14M13 6l6 6-6 6"/></svg>
</a>
<a href="#docs" class="btn btn-ghost">Read the docs</a>
</div>
</div>
<figure class="hero-art reveal">
<picture>
<source type="image/webp" srcset="assets/AA.webp">
<img src="assets/AA.png" alt="PROTACXtend research-system overview — evidence retrieval, component-aware molecular design, ternary-complex reasoning and degradation prediction" width="1672" height="941" decoding="async" fetchpriority="high">
</picture>
</figure>
<div class="loop-grid" aria-label="KNOW REASON DESIGN DISCOVER scientific loop">
<a class="loop-card loop-know" href="#capabilities">
<span class="loop-idx">01</span>
<span class="loop-body">
<span class="loop-title">KNOW</span>
<span class="loop-desc">Literature & database evidence before inference</span>
</span>
</a>
<a class="loop-card loop-reason" href="#capabilities">
<span class="loop-idx">02</span>
<span class="loop-body">
<span class="loop-title">REASON</span>
<span class="loop-desc">Evidence into explicit design decisions</span>
</span>
</a>
<a class="loop-card loop-design" href="#capabilities">
<span class="loop-idx">03</span>
<span class="loop-body">
<span class="loop-title">DESIGN</span>
<span class="loop-desc">Constrained chemical & structural search</span>
</span>
</a>
<a class="loop-card loop-discover" href="#capabilities">
<span class="loop-idx">04</span>
<span class="loop-body">
<span class="loop-title">DISCOVER</span>
<span class="loop-desc">Converging evidence into prioritization</span>
</span>
</a>
</div>
<p class="hero-note">
<strong>A research system, not a demo</strong> — every stage runs with its own tools,
models and an explicit evidence type, and walkthrough values are illustrative unless
marked otherwise.
</p>
</div>
<div class="container hero-quickstart reveal">
<div class="quickstart-bar">
<span class="quickstart-label">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M4 17l6-6-6-6M12 19h8"/></svg>
Quick start
</span>
<div class="install-tabs" role="tablist">
<button class="tab-pill active" data-tool="git">git clone</button>
<button class="tab-pill" data-tool="docker">docker</button>
</div>
<code class="install-cmd" id="install-command">git clone https://github.com/the-ahuja-lab/PROTACXtend.git</code>
<button class="copy-btn" id="install-copy-btn" title="Copy command" aria-label="Copy command">
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="12" height="12" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
</button>
<span class="install-note">Run from source — PyPI publishing on the roadmap.</span>
</div>
</div>
<div class="hero-stats container reveal">
<div class="stat"><span class="stat-num" data-count="23">0</span><span class="stat-lab">core scientific nodes</span></div>
<div class="stat"><span class="stat-num">+8</span><span class="stat-lab">search & feedback extensions</span></div>
<div class="stat"><span class="stat-num" data-count="5">0</span><span class="stat-lab">live retrieval APIs</span></div>
<div class="stat"><span class="stat-num" data-count="7">0</span><span class="stat-lab">committed ML artifacts</span></div>
<div class="stat"><span class="stat-num" data-count="73">0</span><span class="stat-lab">chemistry-engine methods</span></div>
</div>
</section>
<!-- ═══════════ ABOUT ═══════════ -->
<section class="section" id="about">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>ABOUT · 01</p>
<h2 class="sec-title">PROTAC design is a coupled biological, structural and chemical <em>optimization problem</em></h2>
<p class="sec-desc">No single molecular descriptor predicts degrader success. PROTACXtend makes every contributing layer independently inspectable.</p>
</div>
<div class="about-layout">
<div class="about-abstract reveal">
<p>
A PROTAC cannot be optimized from molecular structure alone. Potency depends
jointly on warhead engagement, E3 recruitment, linker geometry,
ternary-complex topology, cooperativity, accessible ubiquitination geometry,
intracellular concentration, cellular ubiquitin–proteasome context and
developability. These factors interact nonlinearly and can generate
counterintuitive behaviours including the <strong>hook effect</strong>.
</p>
<p>
PROTACXtend decomposes this coupled problem into independently inspectable
evidence and modeling layers. <strong>Research agents</strong> retrieve and verify
evidence; <strong>chemistry modules</strong> construct and validate candidates;
<strong>structure-aware modules</strong> evaluate ternary and ubiquitination
feasibility; <strong>degradation models</strong> estimate DC<sub>50</sub> and
D<sub>max</sub>; <strong>transcriptomic context models</strong> condition
predictions on cellular state; and <strong>ranking modules</strong> combine
potency, uncertainty, novelty, ADMET and synthetic feasibility without hiding
missing evidence.
</p>
<figure class="sys-figure">
<img src="assets/00_PROTACXtend_hero_visual.png"
alt="PROTACXtend system map: evidence retrieval, controlled search, molecular design, mechanistic modeling and degradation prediction">
<figcaption>
<span class="badge eb-calc">CALCULATED</span>
<span class="badge eb-retr">RETRIEVED</span>
<span class="badge eb-learn">LEARNED PREDICTION</span>
<span class="cap-text">System map — evidence retrieval and component-aware search feed mechanistic modeling (ternary, ubiquitination, hook equilibrium) and degradation/cell-context prediction. Illustrative overview; see Validation matrix for per-layer status.</span>
</figcaption>
</figure>
</div>
<aside class="about-side reveal">
<h3>Research positioning</h3>
<ul class="tick-list">
<li><strong>Evidence before inference</strong> — literature & database retrieval with DOI/title verification precedes molecular design.</li>
<li><strong>Mechanism-aware, not score-collapsed</strong> — ternary, ubiquitination, cooperativity, hook effect, degradation and cell context stay separate model layers.</li>
<li><strong>Conservative by design</strong> — surrogate status, applicability domain and OOD state are exposed, not hidden.</li>
</ul>
<h3 style="margin-top:28px;">Maintained by</h3>
<div class="author-card">
<div class="author-avatar" style="background:linear-gradient(135deg,#8683DD,#1792A2);">SS</div>
<div>
<div class="author-name">Saveena Solanki</div>
<div class="author-role">Lead developer · computational biology, IIIT Delhi</div>
<a class="author-link" href="https://github.com/SaveenaSolanki" target="_blank" rel="noopener noreferrer">@SaveenaSolanki</a>
</div>
</div>
<div class="author-card">
<div class="author-avatar" style="background:linear-gradient(135deg,#0F2280,#5AB9CD);">AL</div>
<div>
<div class="author-name">Ahuja Lab</div>
<div class="author-role">The Chemosensory Lab — IIIT Delhi</div>
<a class="author-link" href="https://github.com/the-ahuja-lab" target="_blank" rel="noopener noreferrer">@the-ahuja-lab</a>
</div>
</div>
<div class="release-card">
<div class="rel-line"><span class="rel-k">Software</span><span>v0.3 core release</span></div>
<div class="rel-line"><span class="rel-k">Status</span><span>active research development</span></div>
<div class="rel-line"><span class="rel-k">License</span><span>MIT · open source</span></div>
<div class="rel-line"><span class="rel-k">CI</span><span class="ok-dot">●</span> smoke · full-offline · security all green</div>
<p class="rel-note">Software release status ≠ scientific validation status — see the Validation matrix.</p>
</div>
</aside>
</div>
</div>
</section>
<!-- ═══════════ CAPABILITIES — KNOW·REASON·DESIGN·DISCOVER ═══════════ -->
<section class="section section-tint" id="capabilities">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>SCIENTIFIC LOOP · 02</p>
<h2 class="sec-title">One scientific loop from <em>evidence to degrader prioritization</em></h2>
<p class="sec-desc">The platform is organised around the research workflow a degradation biologist actually follows — not around "agents". Each stage names its sources, models and statuses.</p>
</div>
<div class="krdd-grid">
<article class="krdd know reveal">
<header><span class="krdd-idx">01</span><h3>KNOW</h3><p>Evidence before inference</p></header>
<ul>
<li>Europe PMC · PubMed · OpenAlex retrieval</li>
<li>Crossref citation graph</li>
<li>SearXNG web search (self-hosted, configurable)</li>
<li>Robots-aware full-text retrieval / crawling</li>
<li>DOI & title verification</li>
<li>Claim-level evidence grading</li>
</ul>
<footer><span class="badge eb-retr">RETRIEVED</span><span class="src-code">research/sources.py</span></footer>
</article>
<article class="krdd reason reveal">
<header><span class="krdd-idx">02</span><h3>REASON</h3><p>Evidence into explicit design decisions</p></header>
<ul>
<li>Target resolution (UniProt / ChEMBL)</li>
<li>Binder & warhead evidence ranking</li>
<li>E3 ligase recruitment selection</li>
<li>Exit-vector reasoning</li>
<li>Applicability domain & uncertainty/OOD checks</li>
<li>Scientific critic + stop / revise / insufficient-evidence gates</li>
</ul>
<footer><span class="badge eb-calc">CALCULATED</span><span class="src-code">agents/graph.py · nodes 1–23 core</span></footer>
</article>
<article class="krdd design reveal">
<header><span class="krdd-idx">03</span><h3>DESIGN</h3><p>Constrained chemical & structural search</p></header>
<ul>
<li>Component-aware warhead · linker · recruiter representation</li>
<li>Curated + rule-based + generative linker design (73-method engine)</li>
<li>Stereochemistry-aware assembly & RDKit validation</li>
<li>Retrosynthetic feasibility & synthetic filters</li>
<li>ADMET profiling (hERG · AMES · BBB · Lipinski/Veber)</li>
<li>Ternary-complex modeling (P4ward, SE(3) feasibility)</li>
</ul>
<footer><span class="badge eb-calc">CALCULATED</span><span class="src-code">protac_toolbox.py</span></footer>
</article>
<article class="krdd discover reveal">
<header><span class="krdd-idx">04</span><h3>DISCOVER</h3><p>Prioritize by converging independent evidence</p></header>
<ul>
<li>Hook-effect equilibrium · lysine ubiquitination feasibility · cooperativity feasibility</li>
<li>Independent predictors: Module 4, Module 5, TACK, SynGlue</li>
<li>Model disagreement & uncertainty/OOD surfacing</li>
<li>Pareto ranking across potency · novelty · ADMET · synthetic feasibility</li>
<li>Experimentally actionable candidate dossiers</li>
<li>Active learning: CLI surface exists; BO loop planned (Module 7)</li>
</ul>
<footer><span class="badge eb-learn">LEARNED PREDICTION</span><span class="src-code">modules/* · data/tack · data/synglue</span></footer>
</article>
</div>
</div>
</section>
<!-- ═══════════ MECHANISM ═══════════ -->
<section class="section" id="mechanism">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>MECHANISTIC LAYERS · 03</p>
<h2 class="sec-title">From ternary formation to <em>cellular degradation</em></h2>
<p class="sec-desc">PROTACXtend models distinct mechanistic determinants instead of collapsing degrader efficacy into a single score.</p>
</div>
<div class="mech-chain reveal" aria-label="mechanistic cascade">
<span class="mech-step">Ternary-complex ensemble</span><span class="mech-a">→</span>
<span class="mech-step">E2–lysine geometry</span><span class="mech-a">→</span>
<span class="mech-step">Ubiquitination feasibility</span><span class="mech-a">→</span>
<span class="mech-step">Cooperativity feasibility</span><span class="mech-a">→</span>
<span class="mech-step">Hook-effect equilibrium</span><span class="mech-a">→</span>
<span class="mech-step">DC50 / Dmax prediction</span><span class="mech-a">→</span>
<span class="mech-step">Cell-context conditioning</span><span class="mech-a">→</span>
<span class="mech-step mech-verdict">Degradation verdict</span>
</div>
<div class="mech-grid">
<article class="mech-card reveal">
<div class="mech-head"><span class="badge eb-calc">CALCULATED · EQUILIBRIUM</span><span class="mech-status ok">VALIDATED BASELINE</span></div>
<h3>Hook-effect modeler</h3>
<p>Mass-action three-body equilibrium over binary and ternary species: peak and maximum ternary occupancy, hook onset and severity, dose window — with seeded Monte-Carlo uncertainty propagation.</p>
<p class="limit"><strong>Limitation:</strong> equilibrium modeling, not degradation kinetics; input affinities come from experiment or upstream layers.</p>
<footer><span class="src-code">modules/hook_effect_modeler · 13/13 tests</span></footer>
</article>
<article class="mech-card reveal">
<div class="mech-head"><span class="badge eb-struct">STRUCTURAL SURROGATE</span><span class="mech-status warn">PARTIAL</span></div>
<h3>Lysine ubiquitination feasibility</h3>
<p>Static-geometry scorer of E2 catalytic-site accessibility to POI lysines: Shrake–Rupley SASA, distance, approach angle, steric occlusion and the productive fraction of an ensemble.</p>
<p class="limit"><strong>Limitation:</strong> static-geometry baseline; real-PDB benchmark is pending — synthetic-fixture validated today.</p>
<footer><span class="src-code">modules/lysine_ubiquitination_feasibility</span></footer>
</article>
<article class="mech-card reveal">
<div class="mech-head"><span class="badge eb-struct">STRUCTURAL SURROGATE</span><span class="mech-status warn">DATA-GATED</span></div>
<h3>Cooperativity feasibility</h3>
<p>A feasibility score, not a trained experimental-α predictor. Surrogate mode until a curated experimental cooperativity dataset exists; grouped-split benchmark harness (constant / ridge / RF / XGB / GP) is ready.</p>
<p class="limit"><strong>Limitation:</strong> experimental cooperativity (α) prediction is data-gated.</p>
<footer><span class="src-code">modules/cooperativity_alpha_predictor</span></footer>
</article>
<article class="mech-card reveal">
<div class="mech-head"><span class="badge eb-learn">LEARNED PREDICTION</span><span class="mech-status ok">TRAINED</span></div>
<h3>Degradation & cell context</h3>
<p>pDC<sub>50</sub> / D<sub>max</sub> regression trained on a curated set of 64/32 published labels with grouped splits; a separate transcriptomic cell-context model conditions pDC<sub>50</sub> on DepMap 24Q4 expression.</p>
<p class="limit"><strong>Limitation:</strong> small curated label set; transcriptomic only — proteotype coverage is not claimed; unseen-cell-line transfer is not claimed.</p>
<footer><span class="src-code">modules/degradation_ml · modules/cell_context_selector</span></footer>
</article>
</div>
</div>
</section>
<!-- ═══════════ PREDICTION — model panel ═══════════ -->
<section class="section section-tint" id="prediction">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>MODEL PANEL · 04</p>
<h2 class="sec-title">Independent degradation models, <em>one auditable evidence layer</em></h2>
<p class="sec-desc">Predictors are kept independent with their provenance shown — models are never averaged silently, and any unified integration is labelled "under evaluation".</p>
</div>
<div class="model-table-wrap reveal">
<table class="model-table">
<thead>
<tr><th>Predictor</th><th>Endpoint</th><th>Type</th><th>Training-data provenance</th><th>Validation regime</th><th>Status</th></tr>
</thead>
<tbody>
<tr><td><strong>Module 4 — degradation ML</strong></td><td>pDC<sub>50</sub> · D<sub>max</sub></td><td><span class="badge eb-learn">LEARNED PREDICTION</span></td><td>64/32 curated published labels</td><td>grouped splits: random · scaffold · unseen-target · E3 · PROTAC; 9/9 audit tests</td><td><span class="st ok">TRAINED</span></td></tr>
<tr><td><strong>Module 5 — cell context</strong></td><td>cell-context pDC<sub>50</sub></td><td><span class="badge eb-learn">LEARNED PREDICTION</span></td><td>PROTAC-Degradation-DB (1913 rows) + DepMap 24Q4 transcriptomics (1512 rows)</td><td>grouped A–G; leg D > leg B on unseen-PROTAC pDC<sub>50</sub> (R² 0.605 vs 0.513); 16 tests</td><td><span class="st ok">TRAINED</span></td></tr>
<tr><td><strong>TACK — DC<sub>50</sub></strong></td><td>DC<sub>50</sub></td><td><span class="badge eb-learn">LEARNED PREDICTION</span></td><td>TACK dataset</td><td>calibration parquet + meta committed</td><td><span class="st ok">TRAINED</span></td></tr>
<tr><td><strong>TACK — D<sub>max</sub> / binary</strong></td><td>D<sub>max</sub> · active/inactive</td><td><span class="badge eb-learn">LEARNED PREDICTION</span></td><td>TACK dataset</td><td>calibration parquet + meta committed</td><td><span class="st ok">TRAINED</span></td></tr>
<tr><td><strong>SynGlue — DC<sub>50</sub> / D<sub>max</sub></strong></td><td>DC<sub>50</sub> · D<sub>max</sub></td><td><span class="badge eb-learn">LEARNED PREDICTION</span></td><td>GROVER / multitask-transformer encodings</td><td>RF regressors + transformer committed</td><td><span class="st ok">TRAINED</span></td></tr>
<tr class="row-eval"><td><strong>Unified degradation engine</strong></td><td>ensemble verdict</td><td><span class="badge eb-heur">HEURISTIC</span></td><td>— (integration layer)</td><td>model-disagreement & uncertainty-aware integration in evaluation</td><td><span class="st ev">UNDER EVALUATION</span></td></tr>
</tbody>
</table>
<p class="table-note">Each predictor ships with its artifact path (e.g. <span class="mono">modules/degradation_ml/models/pdc50_model.joblib</span>, <span class="mono">data/tack/tack_dc50_model.joblib</span>, <span class="mono">data/synglue/models/rf_dc50.joblib</span>). Verdicts cite which model produced them and with what applicability-domain state.</p>
</div>
</div>
</section>
<!-- ═══════════ ARCHITECTURE ═══════════ -->
<section class="section" id="architecture">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>ARCHITECTURE · 05</p>
<h2 class="sec-title">A governed scientific graph with <em>explicit evidence and model gates</em></h2>
<p class="sec-desc">23-node core scientific workflow + 8 controlled-search and feedback extensions = 31 documented agent nodes. The orchestration graph executes nodes in sequence and stops only at terminal evidence or error gates.</p>
</div>
<div class="count-band reveal">
<div class="count-item"><span class="count-big">23</span><span>core scientific workflow nodes<br><small>supervisor → planning → discovery → assembly → evaluation → ranking</small></span></div>
<span class="count-plus">+</span>
<div class="count-item"><span class="count-big">8</span><span>controlled-search & feedback extensions<br><small>expensive-modeling selection → ternary/cooperativity/hook gates → final ranking → learning → report → memory</small></span></div>
<span class="count-eq">=</span>
<div class="count-item"><span class="count-big grad">31</span><span>documented agent nodes<br><small>production path: <span class="mono">agents/graph.py</span></small></span></div>
</div>
<div class="pipeline reveal">
<div class="phase">
<div class="phase-head"><span class="phase-idx">CORE</span><div><div class="phase-name">Governance & planning</div><div class="phase-sub">nodes 1–4 · core</div></div></div>
<div class="nodes"><span class="node">parse_user_request</span><span class="node">create_design_plan</span><span class="node">control_np_hard_search</span><span class="node node-warn">safety_precheck</span></div>
</div>
<div class="phase">
<div class="phase-head"><span class="phase-idx">CORE</span><div><div class="phase-name">Discovery — evidence grounding</div><div class="phase-sub">nodes 5–9 · core</div></div></div>
<div class="nodes"><span class="node">resolve_target</span><span class="node">retrieve_target_binders</span><span class="node">select_warheads</span><span class="node">select_e3_ligands</span><span class="node">detect_exit_vectors</span></div>
</div>
<div class="phase">
<div class="phase-head"><span class="phase-idx">CORE</span><div><div class="phase-name">Component-aware assembly</div><div class="phase-sub">nodes 10–14 · core</div></div></div>
<div class="nodes"><span class="node">generate_linkers</span><span class="node">construct_protacs</span><span class="node">expand_stereoisomers</span><span class="node">validate_protacs</span><span class="node">score_cell_context</span></div>
</div>
<div class="phase">
<div class="phase-head"><span class="phase-idx">CORE</span><div><div class="phase-name">Evaluation & reflection</div><div class="phase-sub">nodes 15–23 · core</div></div></div>
<div class="nodes"><span class="node">predict_admet</span><span class="node">check_novelty</span><span class="node">assess_applicability_domain</span><span class="node">cheap_filter_candidates</span><span class="node">predict_degradation</span><span class="node">initial_ranking</span><span class="node">diversity_clustering</span><span class="node">reflection_review</span><span class="node">evolution_refinement</span></div>
</div>
<div class="phase phase-ext">
<div class="phase-head"><span class="phase-idx">EXT</span><div><div class="phase-name">Controlled-search & feedback extensions</div><div class="phase-sub">nodes 24–31 · extensions</div></div></div>
<div class="nodes"><span class="node node-ext">select_expensive_modeling_finalists</span><span class="node node-ext">optional_ternary_feasibility</span><span class="node node-ext">predict_cooperativity</span><span class="node node-ext">predict_hook_effect</span><span class="node node-ext">final_ranking</span><span class="node node-ext">active_learning_update</span><span class="node node-ext">generate_report</span><span class="node node-ext">update_memory</span></div>
</div>
</div>
<div class="arch-cols">
<div class="arch-text reveal">
<h3>The scientific contract</h3>
<p>Each executed scientific step records its input, output, evidence source, tool/model version, confidence, applicability-domain status, warning state and limitation. No agent silently mutates another node's conclusions.</p>
<ul class="tick-list">
<li>Shared typed workflow state; one falsifiable task per node; evidence written back to state.</li>
<li>Retry and escalation gates pause the run when evidence is missing — never fabricate.</li>
<li>Deterministic state-machine path and an optional LangGraph path share one node registry (<span class="mono">agents/graph.py</span>).</li>
<li>Dossiers and decision traces are inspectable via <span class="mono">protacxtend contract</span>.</li>
</ul>
</div>
<div class="terminal reveal">
<div class="terminal-topbar"><span class="fig-dot"></span><span class="fig-dot"></span><span class="fig-dot"></span><span class="fig-title mono">protacxtend · research shell</span></div>
<div class="terminal-body">
<p><span class="t-prompt">$</span> <span class="t-cmd">protacxtend contract --target BRD4 --e3 CRBN</span></p>
<p class="t-out">→ KNOW-REASON-DESIGN-DISCOVER dossier: sources cited, gates passed</p>
<p><span class="t-prompt">$</span> <span class="t-cmd">protacxtend structure --smiles "<PROTAC>" --pose model_0</span></p>
<p class="t-out">→ lysine ubiquitination feasibility + cooperativity feasibility (surrogate)</p>
<p><span class="t-prompt">$</span> <span class="t-cmd">protacxtend dose --smiles "<PROTAC>"</span></p>
<p class="t-out">→ ternary dose-response · hook onset & severity · MC uncertainty</p>
<p><span class="t-prompt">$</span> <span class="t-cmd">protacxtend context --smiles "<PROTAC>" --cell-line HeLa</span></p>
<p class="t-out">→ cell-context-aware degradation verdict (Module 5), with model tag</p>
</div>
</div>
</div>
</div>
</section>
<!-- ═══════════ WORKFLOWS ═══════════ -->
<section class="section section-tint" id="workflows">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>WORKFLOWS · 06</p>
<h2 class="sec-title">Reproducible workflows from <em>research question to candidate dossier</em></h2>
<p class="sec-desc">One CLI, real subcommands, structured JSON/CSV output — each workflow names the models and evidence types it touches.</p>
</div>
<div class="wf-grid">
<article class="wf-card reveal">
<header class="wf-head"><code class="wf-cmd">design</code><span class="wf-badge">core pipeline</span></header>
<p>Deterministic end-to-end candidate generation: target resolution → assembly → validation → ADMET/novelty → ranking → report.</p>
<pre class="wf-ex">protacxtend design \
--target BRD4 --e3 CRBN \
--num-candidates 16</pre>
</article>
<article class="wf-card reveal">
<header class="wf-head"><code class="wf-cmd">structure</code><span class="wf-badge">structural surrogate</span></header>
<p>Pose-backed lysine ubiquitination geometry scoring and cooperativity feasibility for one candidate.</p>
<pre class="wf-ex">protacxtend structure \
--smiles "<PROTAC>" \
--target-pdb 3U5L</pre>
</article>
<article class="wf-card reveal">
<header class="wf-head"><code class="wf-cmd">dose</code><span class="wf-badge">equilibrium</span></header>
<p>Ternary dose-response simulation: hook onset, severity, occupancy window — equilibrium, with MC uncertainty.</p>
<pre class="wf-ex">protacxtend dose \
--smiles "<PROTAC>"</pre>
</article>
<article class="wf-card reveal">
<header class="wf-head"><code class="wf-cmd">context</code><span class="wf-badge">cell context</span></header>
<p>Cell-context-aware degradation prediction (Module 5, transcriptomic) — model and applicability domain reported.</p>
<pre class="wf-ex">protacxtend context \
--smiles "<PROTAC>" \
--cell-line HeLa</pre>
</article>
<article class="wf-card reveal">
<header class="wf-head"><code class="wf-cmd">validate</code><span class="wf-badge">chemistry gate</span></header>
<p>RDKit validation and scoring of a single PROTAC SMILES: sanitization, exit vectors, ADMET profile.</p>
<pre class="wf-ex">protacxtend validate \
--smiles "O=C1NC(=O)..."</pre>
</article>
<article class="wf-card reveal">
<header class="wf-head"><code class="wf-cmd">ask · learn · api</code><span class="wf-badge">research surface</span></header>
<p>Search databases & literature (<span class="mono">ask</span>), recommend next experiments (<span class="mono">learn</span>, partial), or serve the FastAPI backend (<span class="mono">api</span>).</p>
<pre class="wf-ex">protacxtend ask "HMGB2 E3 ligases"
protacxtend api --port 8001</pre>
</article>
</div>
</div>
</section>
<!-- ═══════════ WALKTHROUGH (was "simulator") ═══════════ -->
<section class="section" id="playground">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>BROWSER WALKTHROUGH · 07</p>
<h2 class="sec-title">Interactive <em>pipeline walkthrough</em></h2>
<p class="sec-desc">Explore the shape of a PROTACXtend run — including retrosynthesis and mechanistic module stages. This browser-only walkthrough uses precomputed illustrative values; it does not execute the scientific backend.</p>
</div>
<div class="demo-banner reveal">
<span class="demo-tag">ILLUSTRATIVE DEMO — NOT A LIVE SCIENTIFIC PREDICTION</span>
<span>Run the CLI or API (<span class="mono">protacxtend design</span>, <span class="mono">protacxtend api</span>) for model-backed results.</span>
</div>
<div class="sim-shell reveal">
<div class="sim-side">
<div class="sim-field">
<label class="sim-label" for="target-select">Target protein</label>
<select id="target-select">
<option value="BRD4">BRD4 — bromodomain 4</option>
<option value="HMGB2">HMGB2 — high-mobility group box 2</option>
<option value="EGFR">EGFR — epidermal growth factor receptor</option>
</select>
</div>
<div class="sim-field">
<label class="sim-label" for="e3-select">E3 ligase recruiter</label>
<select id="e3-select">
<option value="CRBN">CRBN — cereblon / pomalidomide</option>
<option value="VHL">VHL — von Hippel–Lindau</option>
<option value="MDM2">MDM2 — RING-finger ligase</option>
</select>
</div>
<button class="btn btn-primary btn-block" id="run-sim-btn">
<span class="btn-glyph">▶</span><span id="run-btn-label">Run walkthrough</span>
</button>
<p class="sim-note">ILLUSTRATIVE trace. Stages shown: KNOW retrieval · REASON · linker design · retrosynthesis · assembly · ADMET · ternary · ubiquitination · cooperativity · hook effect · degradation (M4) · cell context (M5) · Pareto ranking.</p>
</div>
<div class="sim-main">
<div class="sim-trace-head">
<span>Node-by-node trace (illustrative)</span><span class="trace-live" id="trace-live">STANDBY</span>
</div>
<div class="trace-output" id="trace-output" aria-live="polite">
<div class="trace-row standby">
<span class="trace-node">WalkthroughReady</span>
<span class="trace-msg">Choose target + E3 and press “Run walkthrough”.</span>
<span class="trace-st">STANDBY</span>
</div>
</div>
</div>
</div>
<div class="res-shell reveal">
<div class="res-head">
<h3>Illustrative Pareto-ranked candidates</h3>
<span class="res-meta mono" id="res-meta">awaiting run</span>
</div>
<div class="table-wrap">
<table class="data-table">
<thead>
<tr><th>Rank</th><th>PROTAC candidate</th><th>M4 pDC50</th><th>Ternary feas.</th><th>Retro. feas.</th><th>ADMET</th><th>Status</th></tr>
</thead>
<tbody id="results-table-body">
<tr><td colspan="7" class="empty-row">Run the walkthrough to see an illustrative output shape.</td></tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
<!-- ═══════════ VALIDATION STATUS MATRIX ═══════════ -->
<section class="section section-tint" id="validation">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>SCIENTIFIC VALIDATION · 08</p>
<h2 class="sec-title">Know exactly what is measured, modeled, inferred <em>or still missing</em></h2>
<p class="sec-desc">Source of truth: <span class="mono">config/scientific_status.yaml</span>. Statuses are per capability, not page-level. Green is not used alone — every claim carries a caveat column.</p>
</div>
<div class="legend reveal">
<span class="st ok">VALIDATED BASELINE</span>
<span class="st ok">TRAINED</span>
<span class="st warn">PARTIAL</span>
<span class="st warn">STRUCTURAL SURROGATE</span>
<span class="st warn">DATA-GATED</span>
<span class="st ev">UNDER EVALUATION</span>
<span class="st pl">PLANNED</span>
</div>
<div class="model-table-wrap reveal">
<table class="model-table matrix">
<thead>
<tr><th>Capability</th><th>Implemented</th><th>Evidence type</th><th>Data source</th><th>Validation</th><th>Current limitation</th><th>Public claim</th></tr>
</thead>
<tbody>
<tr><td><strong>Deep-research retrieval</strong></td><td>✓</td><td><span class="badge eb-retr">RETRIEVED</span></td><td>Europe PMC · PubMed · OpenAlex · Crossref · SearXNG</td><td>live-API smoke + tests</td><td>SearXNG needs self-hosted instance</td><td><span class="st ok">YES</span></td></tr>
<tr><td><strong>Hook-effect modeler</strong></td><td>✓</td><td><span class="badge eb-calc">CALCULATED</span></td><td>validated mass-action equations</td><td>13/13 tests, QA 2026-09-02</td><td>equilibrium only — no kinetics</td><td><span class="st ok">YES</span></td></tr>
<tr><td><strong>Lysine ubiquitination feasibility</strong></td><td>✓</td><td><span class="badge eb-struct">STRUCTURAL SURROGATE</span></td><td>pose geometry (SASA, angles)</td><td>synthetic fixtures</td><td>real-PDB benchmark pending</td><td><span class="st warn">PARTIAL</span></td></tr>
<tr><td><strong>Cooperativity</strong></td><td>✓ (surrogate)</td><td><span class="badge eb-struct">STRUCTURAL SURROGATE</span></td><td>feasibility scoring</td><td>harness ready (ridge/RF/XGB/GP)</td><td>experimental α dataset absent — prediction data-gated</td><td><span class="st warn">DATA-GATED</span></td></tr>
<tr><td><strong>Degradation ML (M4)</strong></td><td>✓</td><td><span class="badge eb-learn">LEARNED PREDICTION</span></td><td>64/32 curated published labels</td><td>grouped splits; audit 9/9</td><td>small label set</td><td><span class="st ok">YES</span></td></tr>
<tr><td><strong>Cell-context degradation (M5)</strong></td><td>✓</td><td><span class="badge eb-learn">LEARNED PREDICTION</span></td><td>PROTAC-Degradation-DB + DepMap 24Q4 RNA</td><td>grouped A–G; 16 tests</td><td>transcriptomic only; unseen-line transfer & proteotype not claimed</td><td><span class="st ok">YES</span></td></tr>
<tr><td><strong>Unified degradation engine</strong></td><td>±</td><td><span class="badge eb-heur">HEURISTIC</span></td><td>integration layer</td><td>disagreement/uncertainty checks</td><td>not production — under evaluation</td><td><span class="st ev">NO</span></td></tr>
<tr><td><strong>Novel E3 opportunity</strong></td><td>✗</td><td><span class="badge eb-na">NOT AVAILABLE</span></td><td>—</td><td>—</td><td>Module 6 planned</td><td><span class="st pl">NO</span></td></tr>
<tr><td><strong>Active learning</strong></td><td>±</td><td><span class="badge eb-heur">HEURISTIC</span></td><td>CLI surface only</td><td>—</td><td>BO + feedback module not built (Module 7)</td><td><span class="st pl">NO</span></td></tr>
</tbody>
</table>
</div>
<div class="evidence-key reveal">
<h4>Evidence-type badges used across this site</h4>
<span class="badge eb-meas">MEASURED</span><span class="badge eb-retr">RETRIEVED</span>
<span class="badge eb-calc">CALCULATED</span><span class="badge eb-learn">LEARNED PREDICTION</span>
<span class="badge eb-struct">STRUCTURAL SURROGATE</span><span class="badge eb-heur">HEURISTIC</span>
<span class="badge eb-illu">ILLUSTRATIVE</span><span class="badge eb-na">NOT AVAILABLE</span>
</div>
</div>
</section>
<!-- ═══════════ DOCS ═══════════ -->
<section class="section" id="docs">
<div class="container">
<div class="sec-head reveal">
<p class="kicker"><span class="kicker-dot"></span>DOCUMENTATION · 09</p>
<h2 class="sec-title">Reproduce, inspect and <em>extend every layer</em></h2>
<p class="sec-desc">Technical how-to for what ships in the repository: databases, live APIs, tools, models and spreadsheet assets — with source paths for each.</p>
</div>
<div class="docs-shell reveal">
<div class="docs-nav" role="tablist">
<button class="docs-tab active" data-target="pane-getting-started">Getting started</button>
<button class="docs-tab" data-target="pane-assets">Technical assets</button>
<button class="docs-tab" data-target="pane-modules">Modules & models</button>
<button class="docs-tab" data-target="pane-cli">Workflows & CLI</button>
<button class="docs-tab" data-target="pane-api">API & data</button>
<button class="docs-tab" data-target="pane-github">GitHub & collaborators</button>
</div>
<div class="docs-content">
<div class="docs-pane active" id="pane-getting-started">
<h3>Getting started</h3>
<p>Python 3.10+ with conda is recommended for RDKit / PyTorch isolation. Two supported install paths — both run from the repository source; PyPI publishing is on the roadmap.</p>
<h4>Option A — git clone</h4>
<pre><code>git clone https://github.com/the-ahuja-lab/PROTACXtend.git
cd PROTACXtend
conda create -n protacxtend python=3.10 -y
conda activate protacxtend
pip install -r requirements.txt
pip install -e .</code></pre>
<h4>Option B — docker</h4>
<pre><code>docker build -t protacxtend https://github.com/the-ahuja-lab/PROTACXtend.git
docker run -p 8501:8501 -p 8001:8001 protacxtend</code></pre>
<h4>Verify the environment</h4>
<pre><code>protacxtend status # runtime status
protacxtend capabilities # terminal + scientific capabilities
protacxtend scenarios # example runs & cost estimates</code></pre>
<p>Committed model artifacts and curated data are checked by the CI security job; nothing model-sized needs re-downloading to run offline tests.</p>
</div>
<div class="docs-pane" id="pane-assets">
<h3>Technical assets — what you get, and how to use it</h3>
<p>Machine-readable status source: <span class="mono">config/scientific_status.yaml</span>. Full module docs live beside each module under <span class="mono">docs/{README,ARCHITECTURE,USAGE,VALIDATION,LIMITATIONS,REFERENCES}.md</span>.</p>
<h4>Databases & live APIs</h4>
<div class="ep-row"><code class="ep">UniProt</code><span>target resolution · protein metadata (live API)</span></div>
<div class="ep-row"><code class="ep">ChEMBL · PubChem</code><span>binders, warheads, bioactivity evidence (live API)</span></div>
<div class="ep-row"><code class="ep">BindingDB</code><span>affinity evidence (live API / TSV mode)</span></div>
<div class="ep-row"><code class="ep">Europe PMC · PubMed · OpenAlex · Crossref</code><span>research retrieval + citation graph (<span class="mono">research/sources.py</span>)</span></div>
<h4>Tools (agents call these)</h4>
<ul class="doc-ul">
<li><strong>Chemistry engine</strong> — <span class="mono">tools/protac_toolbox.py</span>: 73 methods (parse/validate, exit vectors, assembly, enumeration).</li>
<li><strong>Retrosynthesis</strong> — <span class="mono">tools/retrosynthesis*.py</span>: engines + filter; heavy backends optional/guarded.</li>
<li><strong>ADMET</strong> — hERG · AMES · BBB · Lipinski/Veber radar.</li>
<li><strong>Ternary / docking</strong> — P4ward SE(3) feasibility; external docking adapters guarded.</li>
<li><strong>Module tools</strong> — hook-effect, lysine-ubiquitination, cooperativity, degradation, cell-context (JSON in/out, graph-safe).</li>
</ul>
<h4>Spreadsheet assets (xlsx/csv) shipped in-repo</h4>
<ul class="doc-ul">
<li><span class="mono">data/benchmark/PROTAC-DB_3.0_protacs.xlsx</span> — benchmark + training provenance.</li>
<li><span class="mono">Agent_Toolkit.xlsx</span> & <span class="mono">data/toolkit/Agent_Toolkit_EXPANDED.xlsx</span> — agent/module capability registry (load with <span class="mono">openpyxl</span>).</li>
<li><span class="mono">TOOL_AUDIT.xlsx</span> — tool audit log.</li>
<li><span class="mono">data/protac_repos/protac_repo_registry.xlsx</span> — upstream PROTAC repo registry.</li>
<li><span class="mono">protacxtend/modules/cell_context_selector/data/context_joined.csv</span> — Module 5 features (DepMap 24Q4).</li>
</ul>
<pre><code># read an xlsx asset
from openpyxl import load_workbook
wb = load_workbook("Agent_Toolkit.xlsx")</code></pre>
</div>
<div class="docs-pane" id="pane-modules">
<h3>Modules & models — status at a glance</h3>
<p>Built sequentially, each module gated by tests, a demo output, documented limitations and agent integration. Tracker: <span class="mono">protacxtend/modules/PROTACXTEND_MODULE_BUILD.md</span>; status YAML: <span class="mono">config/scientific_status.yaml</span>.</p>
<div class="ep-row"><code class="ep">M1</code><span><strong>Hook Effect Modeler</strong> — three-body equilibrium, hook onset/severity · <span class="st ok">VALIDATED BASELINE</span></span></div>
<div class="ep-row"><code class="ep">M2</code><span><strong>Lysine Ubiquitination Feasibility</strong> — static-geometry scorer · <span class="st warn">PARTIAL</span> (real-PDB benchmark pending)</span></div>
<div class="ep-row"><code class="ep">M3</code><span><strong>Cooperativity</strong> — feasibility/surrogate mode · <span class="st warn">DATA-GATED</span></span></div>
<div class="ep-row"><code class="ep">M4</code><span><strong>Degradation ML</strong> — pDC50/Dmax, curated 64/32 labels · <span class="st ok">TRAINED</span></span></div>
<div class="ep-row"><code class="ep">M5</code><span><strong>Cell-context selector</strong> — transcriptomic (DepMap 24Q4) · <span class="st ok">TRAINED</span> (proteotype not claimed)</span></div>
<div class="ep-row"><code class="ep">M6</code><span><strong>Novel E3 opportunity engine</strong> · <span class="st pl">PLANNED</span></span></div>
<div class="ep-row"><code class="ep">M7</code><span><strong>Active learning / experiment selection</strong> · <span class="st pl">PLANNED</span> (CLI surface exists)</span></div>
<h4>Model artifacts (committed)</h4>
<pre><code>protacxtend/modules/degradation_ml/models/pdc50_model.joblib
protacxtend/modules/cell_context_selector/models/cell_context_model.joblib
data/tack/tack_{dc50,dmax,bin}_model.joblib (+ calibration parquet)
data/synglue/models/rf_{dc50,dmax}.joblib
data/synglue/models/multitask_transformer.pt · data/synglue/models/grover_fixed.pt
outputs/benchmark/chemprop_multitarget/model_0/best.pt</code></pre>
<p class="doc-inline">Models are invoked through tagged tools; verdicts report which model(s) produced them. The unified engine is under evaluation and is never presented as production.</p>
</div>
<div class="docs-pane" id="pane-cli">
<h3>Workflows & CLI</h3>
<p>Every workflow writes structured output and cites its evidence/model layer.</p>
<h4>End-to-end design</h4>
<pre><code>protacxtend design --target "BRD4" --e3 "CRBN" \
--num-candidates 16 --output ./results/brd4_run.json</code></pre>
<p class="doc-inline">Core 23-node path: resolution → binders/warheads/E3 → exit vectors → linkers → construction → stereoisomers → validation → ADMET · novelty · applicability domain → degradation ML → ranking; controlled-search extensions follow when their gates open.</p>
<h4>Mechanistic & context layers</h4>
<pre><code>protacxtend structure --smiles "<PROTAC>" --target-pdb 3U5L --e3-pdb 4CIW
protacxtend dose --smiles "<PROTAC>" # hook equilibrium
protacxtend context --smiles "<PROTAC>" --cell-line "HeLa"
protacxtend validate --smiles "<PROTAC>"</code></pre>
<h4>Research surface</h4>
<pre><code>protacxtend ask "HMGB2 degradation E3 options" # search tools/databases/literature
protacxtend contract --target BRD4 --e3 CRBN # KNOW-REASON-DESIGN-DISCOVER dossier
protacxtend learn # recommend next experiments (partial)</code></pre>
<h4>Serving</h4>
<pre><code>protacxtend api # FastAPI backend (default :8001)
protacxtend ui # Streamlit frontend (default :8501)</code></pre>
</div>
<div class="docs-pane" id="pane-api">
<h3>API & data access</h3>
<h4>Python workflow entrypoint</h4>
<pre><code>from protacxtend.agents.graph import run_syn_glue_workflow
state = run_syn_glue_workflow(
request="Design 10 CRBN PROTAC candidates for HMGB2 with low hERG risk",
config={"persistent": True, "max_iterations": 3})
dossier = state.get("report_markdown", "")</code></pre>
<h4>Chemistry engine</h4>
<pre><code>from protacxtend.tools.protac_toolbox import PROTACMasterToolbox
tb = PROTACMasterToolbox()
vectors = tb.detect_exit_vectors(warhead_smiles="...")
protac_sm = tb.assemble_protac(warhead_smiles="...", linker_smiles="...", e3_smiles="...")</code></pre>
<h4>REST endpoints (FastAPI)</h4>
<div class="ep-row"><code class="ep">POST /design</code><span>structured end-to-end design run</span></div>
<div class="ep-row"><code class="ep">POST /mode</code><span>agentic mode routing</span></div>
<div class="ep-row"><code class="ep">GET /health</code><span>backend liveness</span></div>
<pre class="json-pre"><code>curl -X POST http://localhost:8001/design \
-H "Content-Type: application/json" \
-d '{"request":"Design 20 CRBN PROTAC candidates for BRD4","num_candidates":20}'</code></pre>
</div>
<div class="docs-pane" id="pane-github">
<h3>GitHub & collaborators</h3>
<p><strong>Repository:</strong> <a href="https://github.com/the-ahuja-lab/PROTACXtend" target="_blank" rel="noopener noreferrer">github.com/the-ahuja-lab/PROTACXtend</a> — canonical Ahuja Lab home (full code + Pages)<br>
<strong>Live site:</strong> <a href="https://the-ahuja-lab.github.io/PROTACXtend/" target="_blank" rel="noopener noreferrer">the-ahuja-lab.github.io/PROTACXtend</a><br>
<strong>Development mirror:</strong> <a href="https://github.com/SaveenaSolanki/PROTACXtend" target="_blank" rel="noopener noreferrer">github.com/SaveenaSolanki/PROTACXtend</a><br>
<strong>Lead developer:</strong> <span class="mono">@SaveenaSolanki</span> · <strong>Lab:</strong> <span class="mono">@the-ahuja-lab</span> (IIIT Delhi)</p>
<h4>Continuous testing on GitHub</h4>
<p>Every push runs CI: compile + asset-free smoke, fast offline units, the full offline suite (including the agentic E2E benchmark), plus gitleaks full-history scan, ruff and committed-artifact checks.</p>
<h4>Repository hygiene & contribution</h4>
<ul class="doc-ul">
<li>Status changes start in <span class="mono">config/scientific_status.yaml</span> and the module tracker — not in website copy.</li>
<li>PRs run the full CI matrix; scientific-claim PRs must include the evidence and validation section.</li>
<li>Spreadsheet/registry updates go through the xlsx assets listed under Technical assets.</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- ═══════════ FOOTER ═══════════ -->
<footer class="footer">
<div class="container footer-grid">
<div class="footer-brand">
<a class="nav-brand" href="#home">
<span class="brand-logo"><img src="assets/logo-mark.png" alt="PROTACXtend mark" width="420" height="217"></span>
<span class="brand-word">PROTAC<span class="brand-accent">Xtend</span></span>
</a>
<p>An evidence-grounded autonomous research system for targeted protein degradation. KNOW → REASON → DESIGN → DISCOVER.</p>
</div>
<div class="footer-col">
<h5>Platform</h5>
<a href="#about">About</a><a href="#capabilities">Capabilities</a>
<a href="#mechanism">Mechanistic layers</a><a href="#prediction">Model panel</a>
<a href="#validation">Validation status</a>
</div>
<div class="footer-col">
<h5>Resources</h5>
<a href="#docs">Documentation</a><a href="#workflows">Workflows</a>
<a href="#playground">Walkthrough</a>
<a href="https://github.com/the-ahuja-lab/PROTACXtend/blob/main/documentation/API_REFERENCE.md" target="_blank" rel="noopener noreferrer">API reference</a>
</div>
<div class="footer-col">
<h5>People</h5>
<a href="https://github.com/SaveenaSolanki" target="_blank" rel="noopener noreferrer">Saveena Solanki</a>
<a href="https://github.com/the-ahuja-lab" target="_blank" rel="noopener noreferrer">Ahuja Lab</a>
<a href="https://ahuja-lab.in/" target="_blank" rel="noopener noreferrer">ahuja-lab.in</a>
</div>
</div>
<div class="container footer-base">
<span>© <span id="year">2026</span> Saveena Solanki & Ahuja Lab, IIIT Delhi · MIT License · v0.3 core release, active research development</span>
<span class="mono">scientific status: config/scientific_status.yaml</span>
</div>
</footer>
</body>
</html>