๊ธฐ๋ฅ ์์ธ ๋ณด๊ณ
12. Silo A โ ๋ ๋ฆฝ de novo ๋ฐ๊ตด ์์ง (์ ๊ท ๊ธฐ๋)
SILO A ยท de novo ๋ณธ ํ์ด์ง๋ 2026-06-19์ ๊ธฐ๋๋ ๋ ๋ฆฝ de novo ๋ฐ๊ตด ์์ง์ ์์ ํ๋ค. Silo B(SST-14 ๋ณ์ด ๊ธฐ๋ฐ)์ ์์ ๋ถ๋ฆฌ๋ ๋ณ๋ ์์ง์ด๋ค. ์ ๋ขฐ๋ฑ๊ธ:
์ค์ธก HIGH(PyRosetta/ESMFold ์ค๊ตฌ๋ ์ฐ๋ฌผ) ยท์ ๊ท ๊ธฐ๋(smoke ๋จ๊ณ, ์ค epoch ์งํ ์ค) ยท๋ฏธ๊ฒ์ฆ(์ ํ์ฑ smoke ๋จ๊ณ ๋ฏธ์).
ํต์ฌ ๊ฒฐ๋ก (๋๊ด์)
Silo A de novo ์์ง์ 2026-06-19 ์ ๊ท ๊ธฐ๋๋์ผ๋ฉฐ, ํ์ฌ smoke ์ฐ๋ฌผ 2๊ฑด(poly-G/poly-L ์ ํ์ง)๋ง ๋ฆฌ๋๋ณด๋์ ์กด์ฌํ๊ณ , ์ค epoch(steps=50, ์ ํ์ฑ ON)๋ ๊ฐ๋ ์ค์ด๋ค. Silo B์ ๋๋ ํ ๋ฆฌยท๋ฆฌ๋๋ณด๋ยทํผ๋๋ฐฑ ๋ฃจํยทGPU๋ฅผ ์์ ๋ถ๋ฆฌํ ๋ ๋ฆฝ ์์ง์ด๋ค.
- smoke 2๊ฑด์ ์ ํ์ง: diffusion_steps=20์ smoke ํ ์คํธ ์ฐ๋ฌผ โ poly-G(
GGGGGGGGGGGGGGG, pLDDT 97.33, ddG โ77.6) ๋ฐ poly-L(LLLLLLLALLLLLAR, pLDDT 84.97, ddG โ26.9). steps=20 ํน์ฑ์ ์์ด ๋ค์์ฑ์ด ๋ฎ์ ์๋ฏธ ์๋ ๋ฐ์ธ๋ ํ๋ณด๊ฐ ์๋๋ค. [๋ฐ์ดํฐ: runs/silo_a_flow/silo_a_leaderboard.json]- ์ ํ์ฑ None: smoke ๋จ๊ณ์์
selectivity_enabled=False๋ก ์คํ๋์ผ๋ฏ๋ก ๋ ํ๋ณด ๋ชจ๋selectivity_margin=None์ด๋ค. ์ค epoch์์ ์ ํ์ฑ ON(SSTR1/3/4/5 off-target ๋ํน)์ด ํ์ฑํ๋๋ ๊ฒฐ๊ณผ๋ ์์ง ์๋ค. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_flow.py:81]- ๊ตฌ์กฐ์ ๋ถ๋ฆฌ ์๋ฃ:
runs/silo_a_flow/(๋ณ๋ ๋๋ ํ ๋ฆฌ),silo_a_leaderboard.json(๋ณ๋ ๋ฆฌ๋๋ณด๋),experiment_log.jsonl(๋ณ๋ ๋ก๊ทธ),silo_a_planner.py(๋ณ๋ ํผ๋๋ฐฑ ๋ฃจํ), GPU3 ์ ์ฉ โ Silo B(runs/pyrosetta_flow/)์ ์ฝ๋ยท์ ์ฅ ์์ค์์ ์์ ๋ถ๋ฆฌ. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_flow.py:7-14]- ๊ณผ์ฅ ์์: ํ ์์ de novo ์์ง์ ์ ํ์ฑ ๋ฌ์ฑยท์ค์ง ๋ฐ์ธ๋ ํ๋ณด ํ๋ณด ์ฌ๋ถ๋ ๋ฏธ๊ฒ์ฆ์ด๋ค. ์ค epoch ๊ฐ๋ ๊ฒฐ๊ณผ ๋์ ํ ์ฌ๋ณด๊ณ .
1. ์ํคํ ์ฒ โ 5๋จ ํ์ดํ๋ผ์ธ
[๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_flow.py:1-15, silo_a_planner.py:1-17, scripts/run_silo_a_discovery.py:1-28]
2. Silo B์์ ์์ ๋ถ๋ฆฌ (๋ถ๋ฆฌ ์์น)
| ๊ตฌ๋ถ | Silo A (de novo) | Silo B (SST-14 ๋ณ์ด) |
|---|---|---|
| ํ๋ณด ์์ฑ ๋ฐฉ์ | RFdiffusion โ ProteinMPNN โ ESMFold | LLM/bandit/random ๋ณ์ด |
| scaffold ๊ฒ์ดํธ | ๋ฉด์ (candidate_class='de_novo') | FWKT + Cys ๊ณ ์ ๊ฐ์ |
| ์ถ๋ ฅ ๋๋ ํ ๋ฆฌ | runs/silo_a_flow/ |
runs/pyrosetta_flow/ |
| ๋ฆฌ๋๋ณด๋ | runs/silo_a_flow/silo_a_leaderboard.json |
runs/pyrosetta_flow/global_selectivity_leaderboard.json |
| experiment_log | runs/silo_a_flow/experiment_log.jsonl |
runs/pyrosetta_flow/experiment_log.jsonl |
| ํผ๋๋ฐฑ ๋ฃจํ | silo_a_planner.py(de novo hotspotยทํฌ์ผยทdiffusion ํ๋ผ๋ฏธํฐ) |
runner.py ํ๋๋(๋ณ์ด ๊ฐ์ค) |
| GPU | GPU3 ์ ์ฉ (์์ฑ) | CPU ๋ํน + vLLM GPU2 |
| ์คํ ์คํฌ๋ฆฝํธ | run_silo_a_discovery.py |
run_continuous_discovery.py |
| ํ ์ํ | ๊ธฐ๋ ์งํ (smoke 2๊ฑด, ์ค epoch ๊ฐ๋ ์ค) | 125+ epoch ๊ฐ๋ ์ค |
๋ ์์ง์ ์๋ก์ ๋ฆฌ๋๋ณด๋ยท๋ก๊ทธ๋ฅผ ์ฝ์ง ์๋๋ค. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_flow.py:8: "runs/silo_a_flow/ ๋ง ์ฌ์ฉ. runs/pyrosetta_flow/ ์ ๋ ๋ฏธ์ ๊ทผ"]
3. de novo ํด๋์ค (scaffold ๊ฒ์ดํธ ๋ฉด์ )
Silo A ํ๋ณด๋ candidate_class='de_novo', mutation_source='silo_a' ํ๊ทธ๋ก ๋ถ๋ฅ๋๋ค. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_flow.py:103-104]
- scaffold ๊ฒ์ดํธ ๋ฉด์ : Silo B์
_preserves_scaffold(FWKT/Cys ํํฐ)๊ฐ ๋ฏธ์ ์ฉ๋๋ค. de novo ์์ด์ SST-14 14aa ๊ธธ์ดยท์กฐ์ฑ ์ ์ฝ ์์ด RFdiffusion/ProteinMPNN์ด ๊ฒฐ์ ํ ์์ด ๊ทธ๋๋ก ์ฑํ. - ๋ํน ๋์์ ๋์ผ: de novo ์์ด๋ SSTR2 ๋ณตํฉ์ฒด FlexPepDock + off-target SSTR1/3/4/5 ์ ํ์ฑ ์ธก์ ์ ๊ฑฐ์ณ ddGยทฮmargin์ผ๋ก ํ๊ฐ. ์์ฑ ๋ฐฉ์๋ง ๋ค๋ฅผ ๋ฟ ํ๊ฐ ์ธํ๋ผ๋ Silo B์ ๊ณต์ .
- chain ๊ท์ฝ: ์์ฉ์ฒด chain B, ๋ฐ์ธ๋ chain A. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_flow.py:67-68: "contigs: str = 'B1-369/0 12-16'"]
4. ํผ๋๋ฐฑ ๋ฃจํ โ LLM-guided + ๊ท์น fallback
silo_a_planner.py๊ฐ Silo A ์ ์ฉ epoch ๊ฐ ์ ์ ๋ก์ง์ ๋ด๋นํ๋ค. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_planner.py:1-17]
- LLM ๊ฒฝ๋ก: vLLM(Qwen3-32B, GPU2) ํธ์ถ โ ๋ฆฌ๋๋ณด๋ ์์ฝ(best_ddgยทselectivity_margin ๋ฑ)์ ์
๋ ฅ์ผ๋ก ๋ค์ epoch์
diffusion_stepsยทhotspot_resยท๋ฐ์ธ๋ ๊ธธ์ด(contigs) ํ๋ผ๋ฏธํฐ๋ฅผ JSON์ผ๋ก ์ ์. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_planner.py:38-43] - ๊ท์น fallback: LLM ๋ถ๊ฐ(timeout/ํ์ฑ ์คํจ) ์ stagnation ์ ์ฒด ํ์ถ ๊ท์น ์ ์ฉ โ hotspot ํ(
B150~B30018์ข )์์ ๋ฌด์์ ์ ํ, diffusion_steps ๋จ๊ณ์ ์ฆ๊ฐ, ๋ฐ์ธ๋ ๊ธธ์ด ๋ฒ์ 10~20aa ๋ด ์กฐ์ . [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_planner.py:53-57: "_HOTSPOT_POOL = [...]"] - provenance ๊ธฐ๋ก: ์ ์ฉ๋ ํ๋ผ๋ฏธํฐ๋
runs/silo_a_flow/silo_a_planner_e{NN}.json์ผ๋ก epoch๋ณ ์ ์ฅ(๊ทผ๊ฑฐ ์ถ์ ๊ฐ๋ฅ). [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_planner.py:11] - Silo B ํ๋๋์ ๋
๋ฆฝ:
runner.pyยทcontinuous.py๋ฅผ importํ์ง ์์ผ๋ฉฐ,runs/pyrosetta_flow/์ ์ ๊ทผํ์ง ์๋๋ค. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_planner.py:14-16]
5. ๋ชจ๋ธ tmp ์ฌ๋ฐฐ์น (์ ์ฝ ์ค์)
๋ก์ปฌ ๋ชจ๋ธ ํ์ผ์ ์์
๋๋ ํ ๋ฆฌ ๊ฒฝ๊ณ(SST14-M_scr/) ๋ด local_models/์ ์กด์ฌํ๋ฉฐ, Silo A ์์ฑ ๋จ๊ณ๋ bio-toolsยทrfdiffusionยทesmfoldยทproteinmpnn conda env๋ฅผ ํตํด ์ ๊ทผํ๋ค. [๊ทผ๊ฑฐ: pyrosetta_flow/silo_a_flow.py:75-77]
- repos โ tmp 1ํ ๋ณต์ฌยท๊ฒฝ๋ก ๊ต์ ์๋ฃ(P0 ํต๊ณผ ํ์ธ).
- READ-ONLY ๊ฒฝ๊ณ ์ค์:
data/,local_models/,paper/,_backup/์์ ์์.
6. ํ์ฌ ์ํ โ ์ ๊ท ๊ธฐ๋ ยท smoke 2๊ฑด ยท ์ค epoch ๊ฐ๋ ์ค
6.1 smoke ์ฐ๋ฌผ (์ ํ์ง โ steps=20 ํ)
| candidate_id | ์์ด | pLDDT | ddG (kcal/mol) | selectivity_margin | ๋น๊ณ |
|---|---|---|---|---|---|
| silo_a_20260619T100349Z_bb00_sq00 | GGGGGGGGGGGGGGG |
97.33 | โ77.62 | None | poly-G, steps=20 ์ ํ์ง |
| silo_a_20260619T100349Z_bb00_sq01 | LLLLLLLALLLLLAR |
84.97 | โ26.86 | None | poly-L, steps=20 ์ ํ์ง |
[๋ฐ์ดํฐ: runs/silo_a_flow/silo_a_leaderboard.json]
์ ์ง ์ฃผ์: poly-G/poly-L ์์ด์ diffusion_steps=20 smoke ์กฐ๊ฑด์์ ProteinMPNN์ด ์ฐ์ถํ ์ ๋ค์์ฑ ์์ด์ด๋ค. ddG ์์น(ํนํ poly-G์ โ77.6)๋ ๋น์ ์์ ์ผ๋ก ๋ฎ์ผ๋ฉฐ ๊ตฌ์กฐ์ ์ํฐํฉํธ์ผ ๊ฐ๋ฅ์ฑ์ด ๋๋ค โ ์ค ๋ฐ์ธ๋ ํ๋ณด๋ก ํด์ํด์๋ ์ ๋๋ค. pLDDT๋ ESMFold ์ค์ธก์ด๋ ๋ํน ์ ๋ขฐ๋์ ๋ ๋ฆฝ์ ์ด๋ค.
6.2 ์ค epoch ์์ ํ๋ผ๋ฏธํฐ (steps=50, ์ ํ์ฑ ON)
diffusion_steps=50,n_backbone=2,k_seq_per_backbone=2selectivity_enabled=True: off-target SSTR1/3/4/5 ๋ํน ํ์ฑํ- ์ ์ง ์กฐ๊ฑด:
runs/silo_a_flow/STOP_SILO_Aํ์ผ ์์ฑ ๋๋--max-epochs๋๋ฌ
7. ์คํจยท๋ฏธ๊ฒ์ฆ ํญ๋ชฉ (์ ์ง ๊ธฐ๋ก)
| ํญ๋ชฉ | ์ํ | ์ฌ์ |
|---|---|---|
| ์ ํ์ฑ de novo ๋ณตํฉ์ฒด ํฌ๋งท ์ค๊ฒ์ฆ | ๋ฏธ๊ฒ์ฆ | smoke์์ selectivity_enabled=False๋ก ์คํ. ์ค epoch์์ chain ๊ท์ฝ(์์ฉ์ฒด Bยท๋ฐ์ธ๋ A) FlexPepDock ํต๊ณผ ์ฌ๋ถ ๋ฏธํ์ธ. |
| smoke ์ ํ์ง ์์ด ์์ธ | ํ์ธ๋จ | diffusion_steps=20 โ ๋ฐฑ๋ณธ ๋ค์์ฑ ๋ฎ์ โ poly-G/L ์๋ ด. steps=50์ผ๋ก ์ค epoch ์งํ ์ค. |
| ์ค epoch ์ ํ์ฑ ๊ฒฐ๊ณผ | ๋ฏธํ๋ณด | ์ค epoch ๊ฐ๋ ์ค. ๊ฒฐ๊ณผ ๋์ ํ ์ฌ๋ณด๊ณ ์์ . |
| half_life ์ ๋ขฐ์ฑ | [๋ฏธ๊ฒ์ฆ] | smoke 2๊ฑด์ half_life_h=0.077/0.023์ heuristic surrogate. poly-G/L ์์ด ํน์ฑ์ ๋ฌธ์ ๊ทธ๋๋ก ํด์ ๊ธ์ง. [๊ทผ๊ฑฐ: silo_a_leaderboard.json: "halflife_source: ensemble", "hc50_reliable: false"] |
| DiffPepBuilder arm | ๋ฏธ์ ์ฉ | local_models/DiffPepBuilder ๊ฒฝ๋ก ์กด์ฌํ๋ ์ค epoch์ ๋ฏธํตํฉ. ํฅํ ์ถ๊ฐ arm ํ์ฅ ํ๋ณด. |
8. ์ ๋ขฐ๋ฑ๊ธ ์์ฝ
| ๋ฐ์ดํฐ | ์ ๋ขฐ๋ฑ๊ธ | ๊ทผ๊ฑฐ |
|---|---|---|
| smoke pLDDT (ESMFold ์ค์ธก) | ์ค์ธก HIGH |
ESMFold ์ค๊ตฌ๋ ์ฐ๋ฌผ [๋ฐ์ดํฐ: silo_a_leaderboard.json] |
| smoke ddG (FlexPepDock ์ค์ธก) | ์ค์ธก HIGH(์ธก์ ์์ฒด) / ํด์ LOW(poly-G ์ํฐํฉํธ) |
FlexPepDock ์ค๊ตฌ๋์ด๋ ์์ด ์ ํ์ง |
| selectivity_margin | N/A | smoke selectivity_enabled=False, ์ค epoch ๋ฏธ์ |
| half_life / hc50 surrogate | surrogate-์๋ MED(์ต์) / ์ค์ ๋ฏธ๋ณด์ |
poly-G/L OOD; hc50_reliable=false |
| ์ํคํ ์ฒ ๋ถ๋ฆฌ ์๋ฃ | ์ค์ธก HIGH |
์ฝ๋ยท๊ฒฝ๋กยท์คํ ์คํฌ๋ฆฝํธ ๋ถ๋ฆฌ ํ์ธ [๊ทผ๊ฑฐ: silo_a_flow.py:7-14] |
์ฉ์ด
- RFdiffusion: ์์ฉ์ฒด ๊ตฌ์กฐ๋ฅผ ํ๊ฒ์ผ๋ก ๊ฒฐํฉ ๋ฐ์ธ๋ ๋ฐฑ๋ณธ(3D ๊ณจ๊ฒฉ)์ diffusion ๊ณผ์ ์ผ๋ก de novo ์ค๊ณํ๋ ๊ตฌ์กฐ ๊ธฐ๋ฐ ์์ฑ ๋ชจ๋ธ. GPU ์ง์ฝ์ .
- ProteinMPNN: ๋ฐฑ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ์์ด์ ์ญ๋ฐฉํฅ ์ค๊ณ(inverse folding)ํ๋ ์๊ธฐํ๊ท ๋ชจ๋ธ.
- ESMFold pLDDT: ์์ด๋ง ์ ๋ ฅ๋ฐ์ ๊ตฌ์กฐ๋ฅผ ์์ธกํ๊ณ ์ ๋ขฐ๋(pLDDT 0~100)๋ฅผ ์ฐ์ถ. Silo A์์ ์์ด ํ์ง ๊ฒ์ดํธ๋ก ์ฌ์ฉ.
- de novo: SST-14 ์์ด์์ ์ถ๋ฐํ์ง ์๊ณ , ์์ฉ์ฒด ํฌ์ผ์ ํ๊ฒ์ผ๋ก ์์ ํ ์๋ก ์ค๊ณ๋ ๋ฐ์ธ๋ ์์ด.
- scaffold ๊ฒ์ดํธ ๋ฉด์ : Silo B๊ฐ FWKTยทCys3/Cys14 pharmacophore๋ฅผ ๊ฐ์ ํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ Silo A de novo๋ ์์ด ์กฐ์ฑ ์ ์ฝ ์์.