๊ธฐ๋Šฅ ์ƒ์„ธ ๋ณด๊ณ 

๋ถ€๋ก โ€” ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ• ์ „ ๊ณผ์ • (๊ฐœ๋ฐœ์‚ฌ)

ํ•ต์‹ฌ ๊ฒฐ๋ก  (๋‘๊ด„์‹)
โ‘  ๋ณธ ์‹œ์Šคํ…œ์€ "๋ถ„๋ฆฌ๋œ Silo A/B ์„ค๊ณ„๋„(SYSTEM_ARCHITECTURE.md)"๊ฐ€ ์•„๋‹ˆ๋ผ, ์‹ค์ œ๋กœ๋Š” PyRosetta ๊ธฐ๋ฐ˜ ๋‹จ์ผ ํ†ตํ•ฉ ์—”์ง„(ai4sci-kaeri/pyrosetta_flow)์œผ๋กœ ์ง„ํ™”ํ–ˆ์œผ๋ฉฐ โ€” ๋ฌธ์„œ-์‹ค์ œ ๊ดด๋ฆฌ(P5)๋ฅผ ์ •์งํ•˜๊ฒŒ ๋ช…์‹œํ•œ๋‹ค. ์‹ค์ธก HIGH
โ‘ก ๊ฐœ๋ฐœ ๊ถค์ ์€ ํ™˜๊ฒฝ๊ตฌ์ถ• โ†’ real ๋„ํ‚น โ†’ ๋‹ค๋ชฉ์  โ†’ ์„ ํƒ์„ฑ ํ”„๋กœํ† ์ฝœ ์ˆ˜์ • โ†’ home-advantage ฮ”margin โ†’ ๋ฌดํ•œ์—”์ง„ โ†’ ๋ฒค์น˜๋งˆํฌ 7๋‹จ๊ณ„๋กœ, ์„ ํƒ์„ฑ ๋ŒํŒŒ(best ฮ”margin +10.54, ๋ˆ„์  ์ธก์ • 658๊ฑด)๋Š” ๋ˆ„์  ์—”์ง„์˜ ์‚ฐ๋ฌผ์ด๋‹ค. ์‹ค์ธก HIGH
โ‘ข ์ •๋Ÿ‰ ์‹ ๋ขฐ๋Š” ddGยทฮ”margin=HIGH, ๋ฐ˜๊ฐ๊ธฐ=MED, ์ ˆ๋Œ€ ๋…์„ฑ=LOW๋กœ ์ธตํ™”๋˜๋ฉฐ, VR-cycle ๊ฐ€๋“œ๊ฐ€ "๊ณ„์‚ฐ ๋ถˆ๊ฐ€๋Šฅ์„ ๊ฐ€๋Šฅํ•œ ์ฒ™"ํ•˜๋Š” ํ™˜๊ฐ์„ ์ฐจ๋‹จํ•œ๋‹ค. surrogate-์ƒ๋Œ€ MED

1. ๊ฐœ๋ฐœ 7๋‹จ๊ณ„ ์š”์•ฝํ‘œ (๊ฐœ์กฐ์‹)

๋ชจ๋“  ํ–‰: ์ฃผ์žฅ โ†’ ๊ทผ๊ฑฐ โ†’ ํ•จ์˜. ์‹ ๋ขฐ๋“ฑ๊ธ‰ ๋ฐฐ์ง€: ์‹ค์ธก HIGH / surrogate-์ƒ๋Œ€ MED / surrogate-์ ˆ๋Œ€ LOW.

# ๋‹จ๊ณ„ ํ•ต์‹ฌ ๋ณ€ํ™” ๊ทผ๊ฑฐ ์‹ ๋ขฐ
1 ํ™˜๊ฒฝ๊ตฌ์ถ• ์•ฝ๋ฆฌํ•™ 13๊ฐœ ๋ฉ”์„œ๋“œ ๊ฒ€์ฆ(16๊ฑด ๋ฒ„๊ทธ ์ˆ˜์ •), ํ…Œ์ŠคํŠธ 35โ†’62, pepADMET(Tier 1.5) ์ฑ„ํƒ, SSTR1/3/4/5 ๊ตฌ์กฐ ๋กœ์ปฌ ๋“ฑ๋ก [๊ทผ๊ฑฐ: docs/progress_report_20260323.md:20-34]; [๊ทผ๊ฑฐ: docs/progress_report_20260402.md:9-18] HIGH
2 real ๋„ํ‚น PyRosetta FlexPepDock subprocess ๋ถ„๋ฆฌ(P1, 2026-06-09), ddG/clash ์‹ค์ธก ์ถ”์ถœ [๊ทผ๊ฑฐ: pyrosetta_flow/docking_executor.py:1-76] HIGH
3 ๋‹ค๋ชฉ์  cheap objectives(๋ฐ˜๊ฐ๊ธฐ ์•™์ƒ๋ธ”+ADMET surrogate) โ†’ GNINA โ†’ ECR โ†’ NSGA-II Pareto โ†’ BO ์ œ์•ˆ 5๋‹จ๊ณ„ [๊ทผ๊ฑฐ: pyrosetta_flow/scoring_pipeline.py:79-100]; [๊ทผ๊ฑฐ: pyrosetta_flow/multiobjective.py:101-132] MED
4 ์„ ํƒ์„ฑ ํ”„๋กœํ† ์ฝœ ์ˆ˜์ • off-target ๋„ํ‚น ๋น„์šฉ(ํ›„๋ณดร—5์ˆ˜์šฉ์ฒด) ํ†ต์ œ ์œ„ํ•ด ddG ํ”„๋ก์‹œ ๊ฒŒ์ดํŠธ ๋„์ž… โ€” ๋ฆฌ๋”๋ณด๋“œ ๋ฏธ์ถฉ์›/์ตœ์•ฝ์ฒด ์ดˆ๊ณผ ํ›„๋ณด๋งŒ ๋„ํ‚น [๊ทผ๊ฑฐ: pyrosetta_flow/selectivity_loop.py:1-8, 48-56] HIGH
5 home-advantage ฮ”margin ฮ”margin = selectivity_margin โˆ’ native_margin โ€” native ๊ธฐ์ค€์„  ๋ณด์ •, >0 ๋งŒ "native ์ดˆ๊ณผ ์„ ํƒ์„ฑ"์œผ๋กœ ์ธ์ • [๊ทผ๊ฑฐ: pyrosetta_flow/selectivity_loop.py:7]; [๊ทผ๊ฑฐ: pyrosetta_flow/global_leaderboard.py:8] HIGH
6 ๋ฌดํ•œ์—”์ง„ continuous.py STOP๊นŒ์ง€ epoch ๋ฐ˜๋ณต + DiversityPolicy(์ •์ฒด patience=3 ์‹œ ๋ณ€์ด ๋‹ค์–‘์„ฑ ์ƒํ–ฅ, ์ตœ๋Œ€ 6) + ๊ธ€๋กœ๋ฒŒ ๋ฆฌ๋”๋ณด๋“œ ์˜์† ๋ฉ”๋ชจ๋ฆฌ [๊ทผ๊ฑฐ: pyrosetta_flow/continuous.py:57-85]; [๊ทผ๊ฑฐ: pyrosetta_flow/global_leaderboard.py:1-8] HIGH
7 ๋ฒค์น˜๋งˆํฌ ๋ฌผ์„ฑ descriptor rโ‰ˆ1.0 ๊ฒ€์ฆ(HIGH), ์šฉํ˜ˆ ๋…์„ฑ: L-aa AUC=0.146 ์—ญ๋ณ€๋ณ„ ๊ฒฌ๊ณ (LOW), D-aa AUC=0.677 ์–‘์˜๋ณ€๋ณ„(MED) โ€” 52์ข…(50 ํ‰๊ฐ€) ํ™•์žฅ ์™„๋ฃŒ [๋ฐ์ดํ„ฐ: _analysis/BENCH_admet_v2_results.json; ๊ทผ๊ฑฐ: _evidence/EV12_bench_admet.md:29-37] ํ˜ผํ•ฉ

2. ๋‹จ๊ณ„๋ณ„ ์ƒ์„ธ (์ฃผ์žฅ โ†’ ๊ทผ๊ฑฐ โ†’ ํ•จ์˜)

2-1. ํ™˜๊ฒฝ๊ตฌ์ถ• โ€” ์ธก์ • ๊ฐ€๋Šฅ์„ฑ ํ™•๋ณด๊ฐ€ ์„ ํ–‰ ์‹ค์ธก HIGH

  • ์ฃผ์žฅ: ๋„ํ‚นยท์Šค์ฝ”์–ด๋ง ์ด์ „์— ์•ฝ๋ฆฌํ•™ ๋ฉ”ํŠธ๋ฆญ ์ •ํ•ฉ์„ฑ๊ณผ off-target ์ˆ˜์šฉ์ฒด ๊ตฌ์กฐ๋ฅผ ๋จผ์ € ํ™•๋ณดํ–ˆ๋‹ค.
  • ๊ทผ๊ฑฐ:
  • ์•ฝ๋ฆฌํ•™ 13๊ฐœ ๋ฉ”์„œ๋“œ ๊ฒ€์ฆ โ†’ 16๊ฑด ๋ฒ„๊ทธ ์ˆ˜์ •, ํ…Œ์ŠคํŠธ 35โ†’62๊ฐœ, peptides GT ๋Œ€๋น„ 8/8 ์ผ์น˜ [๊ทผ๊ฑฐ: docs/progress_report_20260323.md:20-34]
  • SSTR1/3/4/5 ๊ตฌ์กฐ๋ฅผ AlphaFold API ์˜์กด์—์„œ ๋กœ์ปฌ CIF๋กœ ์ „ํ™˜(pdb_source: alphafoldโ†’local) [๊ทผ๊ฑฐ: docs/progress_report_20260402.md:9-18]; ์ปค๋ฐ‹ ec4982f [๊ทผ๊ฑฐ: docs/progress_report_20260402.md:7]
  • ํ•จ์˜: ๋„คํŠธ์›Œํฌ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ฆ‰์‹œ ๋„ํ‚น ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋ฅผ ๋งŒ๋“  ๊ฒƒ์ด ๋ฌดํ•œ์—”์ง„ ์šด์˜(์—ํญ ๋ฐ˜๋ณต)์˜ ์ „์ œ์˜€๋‹ค.

2-2. real ๋„ํ‚น โ€” surrogate๊ฐ€ ์•„๋‹Œ ์‹ค์ธก ฮ”G ์‹ค์ธก HIGH

  • ์ฃผ์žฅ: ddG/total_score/clash๋Š” PyRosetta FlexPepDock ์‹ค์ธก์ด๋‹ค(ํœด๋ฆฌ์Šคํ‹ฑ ์•„๋‹˜).
  • ๊ทผ๊ฑฐ: subprocess ๋ ˆ์ด์–ด _run_script()๊ฐ€ conda Python์œผ๋กœ ๋„ํ‚น ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰, stdout ๋งˆ์ง€๋ง‰ ์ค„ JSON์—์„œ ddGยทclash ํŒŒ์‹ฑ [๊ทผ๊ฑฐ: pyrosetta_flow/docking_executor.py:38-75]. ์‹ ๋ขฐ๋“ฑ๊ธ‰ ํ‘œ์—์„œ ddG=HIGH(์‹ค์ œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜) [๊ทผ๊ฑฐ: _evidence/EV09_silo_b_trace.md:311]
  • ํ•จ์˜: ์‹œ์Šคํ…œ์˜ 1์ฐจ ์‹ ํ˜ธ(ddG)๋Š” ์‹ ๋ขฐ๋“ฑ๊ธ‰ ์ตœ์ƒ์œ„์ด๋ฉฐ, ๋ชจ๋“  ๊ฒŒ์ดํŠธยท์ˆœ์œ„์˜ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค.

2-3. ๋‹ค๋ชฉ์  โ€” ๋น ๋ฅธ surrogate๋กœ ํ›„๋ณด ์„ ๋ณ„, ๋น„์‹ผ ์‹ ํ˜ธ๋Š” ๊ฒŒ์ดํŠธ ํ†ต๊ณผ๋ถ„๋งŒ surrogate-์ƒ๋Œ€ MED

  • ์ฃผ์žฅ: ๋ชจ๋“  ํ›„๋ณด์— ฮผs๊ธ‰ cheap objective(๋ฐ˜๊ฐ๊ธฐยทADMET)๋ฅผ ์ ์šฉํ•˜๊ณ , ๋น„์‹ผ GNINA/๋„ํ‚น์€ ์„ ๋ณ„๋ถ„๋งŒ ์‹คํ–‰ํ•œ๋‹ค.
  • ๊ทผ๊ฑฐ: Layer 0 cheap objectives(๋ฐ˜๊ฐ๊ธฐ ์•™์ƒ๋ธ” = ํœด๋ฆฌ์Šคํ‹ฑ A + RF C, log10 ์ •๊ทœํ™” ํ‰๊ท ; native ~16h) [๊ทผ๊ฑฐ: pyrosetta_flow/multiobjective.py:101-132]; 5๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ(cheapโ†’GNINAโ†’ECRโ†’Paretoโ†’BO) [๊ทผ๊ฑฐ: pyrosetta_flow/scoring_pipeline.py:79-100]
  • ํ•จ์˜: ๋ฐ˜๊ฐ๊ธฐยทADMET surrogate๋Š” ์ƒ๋Œ€์ˆœ์œ„(MED)๋กœ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ ˆ๋Œ€๊ฐ’์€ ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š”๋‹ค(ยง3 ์‹ ๋ขฐ๋“ฑ๊ธ‰ ์ฐธ์กฐ).

2-4. ์„ ํƒ์„ฑ ํ”„๋กœํ† ์ฝœ ์ˆ˜์ • โ€” ๋น„์šฉ ํ†ต์ œ์šฉ ddG ํ”„๋ก์‹œ ๊ฒŒ์ดํŠธ ์‹ค์ธก HIGH

Silo B๋Œ€์•ˆ ์„ ์ • ๊ทผ๊ฑฐ โ€” ๊ธฐ๊ฐ: ๋งค iteration ์ „์ฒด ํ›„๋ณด off-target ๋„ํ‚น(ํ›„๋ณดร—5์ˆ˜์šฉ์ฒดร—~6๋ถ„, ๋น„์šฉ ํญ๋ฐœ). ์ฑ„ํƒ: ddG ํ”„๋ก์‹œ ๊ฒŒ์ดํŠธ โ€” ์„ ํƒ์„ฑ์€ ๋„ํ‚น ์ „ ๋ฏธ์ง€์ด๋ฏ€๋กœ ๋ฃจํ”„ ๋‚ด ์‹ค์ธก ddG(๊ฐ•ํ•œ ์‹ ํ˜ธ)๋ฅผ ์œ ๋ง๋„ ๋Œ€๋ฆฌ๋กœ ์‚ฌ์šฉ, ๋ฆฌ๋”๋ณด๋“œ ๋ฏธ์ถฉ์›์ด๊ฑฐ๋‚˜ ์ตœ์•ฝ์ฒด๋ณด๋‹ค ddG ๊ฐ•ํ•œ ํ›„๋ณด๋งŒ ๋„ํ‚น. [๊ทผ๊ฑฐ: pyrosetta_flow/selectivity_loop.py:1-8]
  • ๊ทผ๊ฑฐ: should_screen() ๊ฒŒ์ดํŠธ โ€” ๊ธฐ๋„ํ‚น ์„œ์—ด ํšŒํ”ผ, ddG_cutoff(-10.0)๋ณด๋‹ค ์•ฝํ•œ binder ๋ฐฐ์ œ, ๋ฏธ์ถฉ์›/์ตœ์•ฝ์ฒด ์ดˆ๊ณผ ์‹œ ๋„ํ‚น; iteration๋‹น ์ตœ๋Œ€ selectivity_max_per_iter(๊ธฐ๋ณธ 2)๊ฑด [๊ทผ๊ฑฐ: pyrosetta_flow/selectivity_loop.py:48-56]
  • ํ•จ์˜: ์„ ํƒ์„ฑ ์‹ ํ˜ธ(off-target ๋„ํ‚น)๋Š” ๋น„์‹ธ์ง€๋งŒ HIGH ์‹ ๋ขฐ์ด๋ฏ€๋กœ, ๊ฒŒ์ดํŠธ๋กœ ์ ์šฉ ๋Œ€์ƒ์„ ์ขํ˜€ ๋น„์šฉ ๋Œ€๋น„ ์‹ ํ˜ธ ํ’ˆ์งˆ์„ ํ™•๋ณดํ•œ๋‹ค.

2-5. home-advantage ฮ”margin โ€” native ๊ธฐ์ค€์„  ๋ณด์ • ์‹ค์ธก HIGH

  • ์ฃผ์žฅ: ๋‹จ์ˆœ margin์ด ์•„๋‹ˆ๋ผ native ๋Œ€๋น„ ์ƒ๋Œ€ ํ–ฅ์ƒ(ฮ”margin)์œผ๋กœ ์„ ํƒ์„ฑ์„ ์ •์˜ํ•œ๋‹ค.
  • ๊ทผ๊ฑฐ: ์ฝ”๋“œ ์ •๋ณธ ์ฃผ์„ "ฮ”margin = margin โˆ’ native_margin (home-advantage ๋ณด์ •, native baseline). >0 = native ์ดˆ๊ณผ ์„ ํƒ์„ฑ" [๊ทผ๊ฑฐ: pyrosetta_flow/selectivity_loop.py:7]; ๋™์ผ ์ •์˜ [๊ทผ๊ฑฐ: pyrosetta_flow/global_leaderboard.py:8]
  • ํ•จ์˜: "native๋ณด๋‹ค ์„ ํƒ์„ฑ์ด ์ข‹์•„์กŒ๋Š”๊ฐ€"๋ผ๋Š” ์ •์งํ•œ ๊ธฐ์ค€์„ ๊ฐ•์ œ โ€” ์ ˆ๋Œ€ margin ๋ถ€ํ’€๋ฆฌ๊ธฐ๋ฅผ ์ฐจ๋‹จํ•œ๋‹ค. best ํ›„๋ณด AGCKNFFWKTDTSC๋Š” ฮ”margin +10.54(native ์ดˆ๊ณผ) [๋ฐ์ดํ„ฐ: runs/pyrosetta_flow/global_selectivity_leaderboard.json:9-12]

2-6. ๋ฌดํ•œ์—”์ง„ โ€” ์ˆ˜๋ ด ํƒˆ์ถœ + ์˜์† ๋ฉ”๋ชจ๋ฆฌ ์‹ค์ธก HIGH

  • ์ฃผ์žฅ: ๋ฐœ๊ตด์€ STOP ํŒŒ์ผ ์ „๊นŒ์ง€ epoch๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉฐ, ์ •์ฒด ์‹œ ๋ณ€์ด ๋‹ค์–‘์„ฑ์„ ์ž๋™ ์ƒํ–ฅํ•œ๋‹ค.
  • ๊ทผ๊ฑฐ: DiversityPolicy.update() โ€” global best ฮ”margin์ด patience(๊ธฐ๋ณธ 3) epoch ์ •์ฒด ์‹œ levelโ†‘(max 6), max_random_mutations = min(6, base 3 + level) [๊ทผ๊ฑฐ: pyrosetta_flow/continuous.py:57-85]; ๊ธ€๋กœ๋ฒŒ ๋ฆฌ๋”๋ณด๋“œ๊ฐ€ epoch ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ(๋„ํ‚น ์„œ์—ด dedupยทbest ๋‹จ์กฐ ์ถ”์ ) ์ œ๊ณต [๊ทผ๊ฑฐ: pyrosetta_flow/global_leaderboard.py:1-8]
  • ํ•จ์˜: local optimum ํƒˆ์ถœ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ฝ”๋“œ ์ˆ˜์ค€์— ๋‚ด์žฅ๋˜์–ด, ๋ˆ„์  ์šด์˜์ด ๋‹จ์ˆœ ๋ฌด์ž‘์œ„ ์žฌ์‹œ์ž‘๋ณด๋‹ค ํšจ์œจ์ ์ด๋‹ค.

2-7. ๋ฒค์น˜๋งˆํฌ โ€” ์ •ํ™•ํ•œ ๊ฒƒ๊ณผ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ๋ถ„๋ฆฌ surrogate-์ ˆ๋Œ€ LOW

  • ์ฃผ์žฅ: ๋ฌผ์„ฑ์€ ๊ฒ€์ฆ ๊ฐ€๋Šฅ(HIGH), ์ ˆ๋Œ€ ์šฉํ˜ˆ ๋…์„ฑ ์˜ˆ์ธก์€ ๊ฒ€์ฆ ์‹œ ์—ญ๋ณ€๋ณ„(LOW)์ž„์„ ์ •์ง ๋…ธ์ถœํ•œ๋‹ค.
  • ๊ทผ๊ฑฐ:
  • ๋ฌผ์„ฑ descriptor(GRAVY/Instability/Aliphatic) r=1.0, pI 0.9968ยทBoman 0.9718 โ€” peptides ์ฐธ์กฐ๋„๊ตฌ ๋Œ€๋น„ [๊ทผ๊ฑฐ: _evidence/EV12_bench_admet.md:29-37]
  • 52์ข…(50 ํ‰๊ฐ€, L32/D18) ์šฉํ˜ˆ ๋ถ„๋ฅ˜: ์ „์ฒด AUC=0.32(์™„ํ™”), L-aa AUC=0.146(n=32, ์—ญ๋ณ€๋ณ„ ๊ฒฌ๊ณ ), D-aa AUC=0.677(n=18, ์–‘์˜ ๋ณ€๋ณ„). LL-37ยทCecropin A ๋“ฑ ๋น„์šฉํ˜ˆ AMP๋ฅผ ์˜คํŒ [๋ฐ์ดํ„ฐ: _analysis/BENCH_admet_v2_results.json; ๊ทผ๊ฑฐ: 15_admet_benchmark.md]
  • ํ•จ์˜: HC50์€ ์ ˆ๋Œ€ ๋‹จ์œ„ ๊ธˆ์ง€, native ๋Œ€๋น„ ์ƒ๋Œ€ ๊ฒŒ์ดํŠธ ์ „์šฉ โ€” ์ด๊ฒƒ์ด ๋ฒค์น˜๋งˆํฌ๊ฐ€ ์‚ฐ์ถœํ•œ ์ •์ฑ… ๊ถŒ๊ณ ๋‹ค [๊ทผ๊ฑฐ: _evidence/EV12_bench_admet.md:138-144].

3. ๋ผ์ด๋ธŒ ์‚ฐ์ถœ ์Šค๋ƒ…์ƒท (์‹ค์ธก ์ง๋…) ์‹ค์ธก HIGH

๋ฌดํ•œ์—”์ง„ ๊ฐ€๋™ ์ค‘ โ€” ์•„๋ž˜ ์ˆ˜์น˜๋Š” ์ง๋… ์‹œ์ ๊ฐ’(์ฆ๊ฐ€ ์ถ”์„ธ). [๋ฐ์ดํ„ฐ: runs/pyrosetta_flow/global_selectivity_leaderboard.json], [๋ฐ์ดํ„ฐ: runs/pyrosetta_flow/discovery_status.json]

ํ•ญ๋ชฉ ๊ฐ’ ๊ทผ๊ฑฐ
best ฮ”margin +10.5351 [๋ฐ์ดํ„ฐ: global_selectivity_leaderboard.json:3]
top-K ๋ณด๊ด€(n_unique) 50 [๋ฐ์ดํ„ฐ: global_selectivity_leaderboard.json:4]
์—ญ๋Œ€ ๋„ํ‚น ์„œ์—ด(n_screened_unique) 628 [๋ฐ์ดํ„ฐ: global_selectivity_leaderboard.json:5]
๋ˆ„์  ์ธก์ •(n_ingested_total) 658 [๋ฐ์ดํ„ฐ: global_selectivity_leaderboard.json:6]
์‹คํ–‰ epoch(epochs_done) 107 [๋ฐ์ดํ„ฐ: discovery_status.json]
best ํ›„๋ณด / ddG AGCKNFFWKTDTSC(F11D) / โˆ’45.11 kcal/mol [๋ฐ์ดํ„ฐ: global_selectivity_leaderboard.json:9-10]
  • ์ฃผ์žฅ: ์„ ํƒ์„ฑ ํ•ต์‹ฌ์€ pos11(Phe11โ†’Asp/Glu) ๋ณ€์ด๋‹ค.
  • ๊ทผ๊ฑฐ: top-2 ์„ ํƒ์„ฑ ํ•ญ๋ชฉ์ด F11D(ฮ”+10.54)ยทF11E(ฮ”+8.97)๋กœ, native T(avg ฮ”+4.30) ๋Œ€๋น„ ํ˜„์ €. FWKT(seq[6:10]) ๋ฌด๊ฒฐ ์œ ์ง€ [๊ทผ๊ฑฐ: _evidence/BIO_biology.md:43-49]
  • ํ•จ์˜: ๊ธฐ์ „ ๋ฏธ๊ฒ€์ฆ(LOW) โ€” pos11 ์Œํ•˜์ „ ๋„์ž…์˜ in-silico ์‹ ํ˜ธ๋Š” ๊ฐ•ํ•˜๋‚˜ ์ˆ˜์šฉ์ฒด ์ž”๊ธฐ ์ ‘์ด‰ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ ์„ค๋ช…์€ ๋ฏธ์ˆ˜ํ–‰ [๊ทผ๊ฑฐ: _evidence/BIO_biology.md:13, 49].

4. ๋ฌธ์„œ-์‹ค์ œ ์•„ํ‚คํ…์ฒ˜ ๊ดด๋ฆฌ (P5) โ€” ์ •์ง ๋งคํ•‘

Silo A๊ดด๋ฆฌ ํ•ต์‹ฌ โ€” docs/SYSTEM_ARCHITECTURE.md์˜ ๋ถ„๋ฆฌ๋œ Silo A/B(pipelines/silo_a|b/)๋Š” ์ตœ์ƒ์œ„์— ๋ถ€์žฌํ•˜๋ฉฐ, ์‹ค์ œ ํ™œ์„ฑ ์ฝ”๋“œ๋Š” ๋…๋ฆฝ ๋ ˆํฌ ai4sci-kaeri/์˜ ํ†ตํ•ฉ ์—”์ง„์ด๋‹ค. [๊ทผ๊ฑฐ: _evidence/EV14_arch_gap.md:7-16]
๊ตฌ์„ฑ ์˜๋„ (์„ค๊ณ„ ๋ฌธ์„œ) ์‹ค์ œ (ํ™œ์„ฑ ์ฝ”๋“œ) ๊ทผ๊ฑฐ
๋””๋ ‰ํ† ๋ฆฌ pipelines/silo_a/, silo_b/ ๋ถ„๋ฆฌ ai4sci-kaeri/pyrosetta_flow/ + AG_src/pipeline/ ํ†ตํ•ฉ [๊ทผ๊ฑฐ: docs/SYSTEM_ARCHITECTURE.md:24-30]; [๊ทผ๊ฑฐ: EV14_arch_gap.md:59-103]
Config Silo๋ณ„ ๋…๋ฆฝ YAML ๋‹จ์ผ AG_src/config/pipeline_config.yaml [๊ทผ๊ฑฐ: EV14_arch_gap.md:107-116]
NIM ํด๋ผ์ด์–ธํŠธ bionemo/ 5์ข…(MolMIMยทDiffDockยทRFdiffยทMPNNยทESMFold) ํ™œ์„ฑ repo์— ๋ถ€์žฌ, ๋ฐฑ์—…์—๋งŒ(_backup/orphaned_20260609/bionemo/); ๋กœ์ปฌ PyRosetta๋กœ ๋Œ€์ฒด [๊ทผ๊ฑฐ: EV14_arch_gap.md:136-147]; [๊ทผ๊ฑฐ: EV08_silo_a_trace.md:43-52]
Silo A ์‹คํ–‰ 3-Arm end-to-end ์‹คํ–‰ ํ”์  ์—†์Œ โ€” outputs/silo_a/ ๋ฏธ์กด์žฌ, NIM ํ‚ค ๋ฏธ์„ค์ •, ๋‹จ์œ„ํ…Œ์ŠคํŠธ(mock) 9๊ฑด๋งŒ ํ†ต๊ณผ [๊ทผ๊ฑฐ: EV08_silo_a_trace.md:14-17, 136-144]
Scoring UnifiedScorer(A) / MultiObjectiveScorer(B) ๋ถ„๋ฆฌ scoring_pipeline.py+multiobjective.py ํ†ตํ•ฉ, Arm ๊ตฌ๋ถ„ ์—†์Œ [๊ทผ๊ฑฐ: EV14_arch_gap.md:151-162]
  • ์ฃผ์žฅ: ๊ดด๋ฆฌ๋Š” ๊ฒฐํ•จ์ด ์•„๋‹ˆ๋ผ ์•„ํ‚คํ…์ฒ˜ ์ง„ํ™”์˜ ๊ฒฐ๊ณผ(ํด๋ผ์šฐ๋“œ NIM โ†’ ์˜จํ”„๋ ˆ๋ฏธ์Šค PyRosetta, monolithic ํ†ตํ•ฉ)์ด๋ฉฐ, ๋ณธ ๋ณด๊ณ ๋Š” ์˜๋„ ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ์ฝ”๋“œ ์œ„์น˜ ๊ธฐ์ค€์œผ๋กœ ๊ธฐ์ˆ ํ•œ๋‹ค.
  • ๊ทผ๊ฑฐ: ๊ทผ๋ณธ์›์ธ 4๊ฐ€์ง€(์•„ํ‚คํ…์ฒ˜ ์ง„ํ™”/์ธํ”„๋ผ ์žฌ๊ตฌ์„ฑ/๋ ˆํฌ ๋…๋ฆฝํ™”/๋ฌธ์„œ ๋ฏธ๋™๊ธฐ) [๊ทผ๊ฑฐ: EV14_arch_gap.md:221-228]
  • ํ•จ์˜: ์‹ ๊ทœ ์ธ๋ ฅ ์˜จ๋ณด๋”ฉ ํ˜ผ๋ž€(P5 Critical) โ€” SYSTEM_ARCHITECTURE.md์˜ ์‹ค์ œ ๊ตฌ์กฐ ๊ธฐ๋ฐ˜ ์žฌ์ž‘์„ฑ์ด ๊ถŒ๊ณ ๋œ๋‹ค [๊ทผ๊ฑฐ: EV14_arch_gap.md:240-244].
flowchart LR subgraph DOC["์„ค๊ณ„ ๋ฌธ์„œ (์˜๋„)"] A1["pipelines/silo_a/
3-Arm NIM"]:::siloA B1["pipelines/silo_b/
๋ณ€์ด+๋„ํ‚น"]:::siloB end subgraph REAL["ํ™œ์„ฑ ์ฝ”๋“œ (์‹ค์ œ)"] AG["ai4sci-kaeri/pyrosetta_flow/
(ํ†ตํ•ฉ ์—”์ง„)"]:::siloB BK["_backup/orphaned_20260609/
silo_a ยท bionemo (๋น„ํ™œ์„ฑ)"]:::siloA end A1 -. "๋ฏธ์‹คํ–‰: outputs/silo_a ๋ถ€์žฌ, NIM ํ‚ค ์—†์Œ" .-> BK B1 == "์ง„ํ™”: monolithic ํ†ตํ•ฉ" ==> AG classDef siloA fill:#eaf2fc,stroke:#1a6fbf,color:#0d3a66; classDef siloB fill:#eafaf0,stroke:#1a8a4a,color:#0d4a26;

5. VR-cycle / Stage ์ง„ํ™” ์ด๋ ฅ (ํ™˜๊ฐ ๊ฐ€๋“œ)

์ถœ์ฒ˜: ํ”„๋กœ์ ํŠธ CLAUDE.md ยง"Stage ์ ์šฉ ์ด๋ ฅ". harness ์–ด๋Œ‘ํ…Œ์ด์…˜(Apache-2.0 revfactory/harness ์ถ”์ถœ)์˜ ์ž๊ธฐ-๊ฒ€์ฆ ์‚ฌ์ดํด.

ํ•ญ๋ชฉ ๋‚ด์šฉ ํ•จ์˜
Stage 5 pharmacology_guards.py + 33โ†’39 ํšŒ๊ท€ ํ…Œ์ŠคํŠธ โ€” ์•ฝ๋ฆฌํ•™ lookup table ํ™˜๊ฐ ์ฐจ๋‹จ(Critical) ์ง€์–ด๋‚ธ ์•ฝ๋ฆฌ ์ˆ˜์น˜ ์ฐจ๋‹จ
Stage 8d~8i End-to-End dogfooding๋กœ ยง๊ฒ€์ฆ ํ•ญ๋ชฉ 10๊ฑด ์ฒ˜๋ฆฌ(5 full+1 ํก์ˆ˜+4 partial), 95/95 tests; GATE-F(echo)ยทGATE-G(ํ† ํฐ) ๋“ฑ ์‚ฌํ›„ ์ฒดํฌ ์ถ”๊ฐ€ ์‚ฌ์ดํด์ด ์ž๊ธฐ ๊ฒ€์ฆํ•ญ๋ชฉ์„ ์ž๊ธฐ-closure
VR-cycle-09 (H-06) "๊ณ„์‚ฐ ๋ถˆ๊ฐ€๋Šฅ์„ ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์ฒ™" ์‹๋ณ„ยท์ฆ‰์‹œ closure โ€” 3-layer(harness+planner+domain). harness ๋ณธ์งˆ = "๋„๋ฉ”์ธ ํ•œ๊ณ„์˜ ์ •์งํ•œ ๋…ธ์ถœ, ์ •ํ™•๋„ ๋ณด์žฅ X" LOW ์‹ ํ˜ธ๋ฅผ HIGH๋กœ ์œ„์žฅํ•˜๋Š” ํ™˜๊ฐ์˜ ๊ทผ์ ˆ
Stage 9 Rosetta Flow E2E dogfood(3 iter, patience early stop) โ€” 6 critical ๊ฒฐํ•จ ์ž๊ฐ€ ๋…ธ์ถœ + VR-cycle-10~14 ๋“ฑ๋ก ๋ฌดํ•œ์—”์ง„ ์šด์˜ ๊ฒฐํ•จ์˜ ์ž๊ธฐ ๋…ธ์ถœ
  • ์ฃผ์žฅ: ๋ณธ ์‹œ์Šคํ…œ์˜ ์‹ ๋ขฐ๋“ฑ๊ธ‰ ์ธตํ™”(HIGH/MED/LOW)๋Š” ์‚ฌํ›„ ์žฅ์‹์ด ์•„๋‹ˆ๋ผ VR-cycle-09(H-06) ๊ฐ€๋“œ๊ฐ€ ์ฝ”๋“œยทํ”Œ๋ž˜๋„ˆยท๋„๋ฉ”์ธ 3๊ณ„์ธต์—์„œ ๊ฐ•์ œํ•˜๋Š” ์›์น™์ด๋‹ค. [๊ทผ๊ฑฐ: CLAUDE.md ยงStage ์ ์šฉ ์ด๋ ฅ, Stage 8h]
  • ํ•จ์˜: "์ ˆ๋Œ€ ๋…์„ฑ LOW", "๋ฐ˜๊ฐ๊ธฐ MED", "ddG/ฮ”margin HIGH" ๋ถ„๋ฅ˜๋Š” ํ™˜๊ฐ ๊ฐ€๋“œ์˜ ์ง์ ‘ ์‚ฐ๋ฌผ์ด๋ฉฐ, ๋ถ€ํ’€๋ ค์ง„ ์ ˆ๋Œ€๊ฐ’ ์ฃผ์žฅ์„ ๋ณธ๋ฌธ์—์„œ ๋ฐฐ์ œํ•œ๋‹ค.

6. ์‹ ๋ขฐ๋“ฑ๊ธ‰ ์š”์•ฝ (์ „ ์ง€ํ‘œ) surrogate-์ƒ๋Œ€ MED

์ง€ํ‘œ ์œ ํ˜• ์‹ ๋ขฐ ๊ทผ๊ฑฐ
ddG (FlexPepDock) ์‹ค์ธก ์‹œ๋ฎฌ๋ ˆ์ด์…˜ HIGH [๊ทผ๊ฑฐ: EV09_silo_b_trace.md:311]
selectivity_margin / ฮ”margin ์‹ค์ธก off-target ๋„ํ‚น + native ๋ณด์ • HIGH [๊ทผ๊ฑฐ: _evidence/EV09_silo_b_trace.md:312-313]; [๊ทผ๊ฑฐ: pyrosetta_flow/selectivity_loop.py:7]
๋ฐ˜๊ฐ๊ธฐ(half_life_h) ์•™์ƒ๋ธ” surrogate, ์ž„์ƒ ๋ฐ์ดํ„ฐ ๋ฏธํฌํ•จ MED [๊ทผ๊ฑฐ: EV09_silo_b_trace.md:314]
ADMET ๋ฌผ์„ฑ(GRAVY/Instability/Boman/pI) ๊ฒฐ์ •๋ก ์  descriptor, rโ‰ˆ1.0 HIGH [๊ทผ๊ฑฐ: _evidence/EV12_bench_admet.md:29-37]
์ ˆ๋Œ€ ์šฉํ˜ˆ ๋…์„ฑ(HC50) โ€” L-aa ๋ฒ”์šฉ ์˜ˆ์ธก ROC-AUC 0.146(n=32) ์—ญ๋ณ€๋ณ„ ๊ฒฌ๊ณ  LOW [๋ฐ์ดํ„ฐ: _analysis/BENCH_admet_v2_results.json]
์šฉํ˜ˆ ๋…์„ฑ(HC50) โ€” D-aa ROC-AUC 0.677(n=18) ์–‘์˜ ๋ณ€๋ณ„ ํ™•์ธ MED [๋ฐ์ดํ„ฐ: _analysis/BENCH_admet_v2_results.json]
pos11 ๋ณ€์ด ๊ธฐ์ „ ๊ตฌ์กฐ ์ ‘์ด‰ ๋ฏธ์ธก์ • [๋ฏธ๊ฒ€์ฆ] [๊ทผ๊ฑฐ: _evidence/BIO_biology.md:13, 49]

7. ๋ฏธ๊ฒ€์ฆ ๊ฒฉ๋ฆฌ (๋ณธ๋ฌธ ๋ฐฐ์ œ ํ•ญ๋ชฉ)

  • [๋ฏธ๊ฒ€์ฆ] 2026-05-28 ํšŒ์˜ ํšŒ์˜๋ก โ€” ์˜ˆ์ƒ ์ผ์ •๋งŒ ํ™•์ธ, ์‹ค์ œ ๊ฒฐ๊ณผ ๋ฏธ์ˆ˜์ง‘ [๊ทผ๊ฑฐ: EV15_timeline_sources.md:190]
  • [๋ฏธ๊ฒ€์ฆ] Silo A diversity ํ”ผ์ฒ˜ โ€” UnifiedScorer 0.10 ๊ฐ€์ค‘์น˜ ์„ค์ •์ด๋‚˜ ์–ด๋–ค Arm๋„ ๊ณ„์‚ฐํ•˜์ง€ ์•Š์Œ [๊ทผ๊ฑฐ: EV08_silo_a_trace.md:130, 188]
  • [๋ฏธ๊ฒ€์ฆ] pos11 ์„ ํƒ์„ฑ์˜ ๊ตฌ์กฐ์  ๊ธฐ์ „ โ€” in-silico ์‹ ํ˜ธ๋งŒ, ์ˆ˜์šฉ์ฒด ์ ‘์ด‰ ์„ค๋ช… ์—†์Œ [๊ทผ๊ฑฐ: BIO_biology.md:49]
  • [๋ฏธ๊ฒ€์ฆ] D-aa ์šฉํ˜ˆ ๋น„๊ต โ€” pepADMET 47์ข… ์žฌ๊ณ„์‚ฐ ์ง„ํ–‰์ค‘, ์„ธ์…˜ ํ•œ๋„๋กœ ๋ฏธ์™„ [๊ทผ๊ฑฐ: _evidence/EV12_bench_admet.md:229-240]

๊ทผ๊ฑฐ ์ •์ฑ…: ๋ชจ๋“  ์‚ฌ์‹ค ์ฃผ์žฅ์— ์ธ๋ผ์ธ ๊ทผ๊ฑฐ(์ฝ”๋“œ path:line / ๋ฌธํ—Œ / ์‚ฐ์ถœ JSON). ๊ทผ๊ฑฐ ๋ฏธํ™•๋ณด ํ•ญ๋ชฉ์€ ยง7์— [๋ฏธ๊ฒ€์ฆ] ๊ฒฉ๋ฆฌ. ๋ผ์ด๋ธŒ ์ˆ˜์น˜๋Š” ๋ฌดํ•œ์—”์ง„ ๊ฐ€๋™ ์ค‘์ด๋ผ ์ง๋… ์‹œ์ ์— ๋”ฐ๋ผ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.