기능 상세 보고
Serum Stability 모듈 종합 성능평가 (3부)
2026-03 회의 제안 혈청 반감기 예측 툴(A-02) + 우리 자체 모듈 — 실제 조사·실행·성능평가 종합 · 2026-06-19 독자: PI(서호성) + RI팀 신뢰등급 범례: 실측 HIGH 실제 실행 산물·문헌 직접검증 / surrogate-상대 MED 상대순위 벤치 검증 / surrogate-절대 LOW 변별력 부족·calibration 부재 절대 원칙: 모든 사실 주장 끝에 인라인 근거 [근거: file:line] / [출처: URL] / [데이터: 경로]. 근거 없으면 [미검증]. 성능 숫자는 실제 실행 산물만 — 못 돌린 툴은 "미평가/실패+사유"로 정직 기록(fail-closed).
① 외부 제안 툴 7종 중 임상 혈청 반감기를 변별하는 도구는 0개 — HLP는 장(腸)내 전용(ρ=−0.40 무효), PlifePred2는 무변별(raw ρ≈0.00~0.06), ProtParam N-end rule만 L-aa 한정 보조 변별(raw ρ=+0.62), pepMSND·CAMSOL·PeptideRanker·PeptideStability는 서버다운/웹전용/미식별로 실행 자체 불가. [근거: TOOL_hlp.md §2, TOOL_plifepred.md §3-1, TOOL_protparam.md §4-1]
② 모든 외부 툴이 D-아미노산 0종 지원 — 방사성의약품 후보(Octreotide 계열 D-Phe/D-Trp)가 전량 사각지대. 이것이 A-02의 구조적 블로커. [근거: TOOL_camsol_pepranker.md §배경, TOOL_pepmsnd.md §3-3]
③ 실사용 채택 = 우리 자체 step08 휴리스틱(raw ρ=+0.396 N=32, D-aa군 +0.436로 외부 최고) + RF 앙상블 보조. 단 절대 t½는 임상 해석 금지, 게이트는
relative_percentile(상대순위)로만 작동. [데이터: _workspace/report_site/_analysis/BENCH_halflife_v2_results.json — all_raw=0.396/N=32, D_raw=0.436/N=9] [근거: AG_src/pipeline/step08_stability.py:526-568] ※ TOOL_our_step08.md는 Insulin A-chain 1종을 추가한 N=33 재실행값(raw +0.366, L-aa +0.150)을 보고하나, 해당 N=33 run은 커밋된 결과 JSON이 없어 헤드라인은 검증 가능한 N=32 JSON 값을 사용한다(05_biotech §6과 동일 권위값). N=33 차이는 §3에 분리 기록.
0. 9개 모듈 한눈에 (성능 = Spearman ρ, raw headline)
| 모듈 | 분류 | 실행 | raw ρ (headline) | 신뢰등급 | 채택 |
|---|---|---|---|---|---|
| our step08 (log-mult 휴리스틱) | 자체 | ✅ | +0.396 (N=32, 커밋된 결과 JSON) | MED 상대 | 적용 중 |
| our RF 앙상블 (PEPlife2) | 자체 | ✅ | +0.371 (N=37) | MED 상대 | 보조 |
| ProtParam N-end rule | 외부 | ✅ | +0.622 (L-aa, N=23) | HIGH 실측 | 보조(L-aa) |
| ProtParam Instability Index | 외부 | ✅ | +0.160 (L-aa, 무효) | LOW | 필터만 |
| PlifePred2 | 외부 | ✅ | +0.055~0.004 (무변별) | HIGH 실측 | 미적용 |
| HLP | 외부 | ✅ | −0.403 (장내·무효) | LOW | 미적용 |
| pepMSND | 외부 | ❌ 서버다운 | 미평가 | — | 미적용 |
| CAMSOL / PeptideRanker / PeptideStability | 외부 | ❌ 실행불가 | 미평가 | — | 미적용 |
| GAT self-train (pepmsnd_peplife2) | 자체 | ✅ | +0.48 (상수붕괴) | HIGH 실측 | 미적용 |
- 주장: 외부 제안 7종은 임상 혈청 반감기 변별에 모두 실패하고, 실효 모듈은 자체 휴리스틱뿐이다. 근거: 실행 성공 외부 툴(ProtParam·PlifePred2·HLP) 중 임상 t½ 양의 변별은 ProtParam N-end rule(L-aa 한정)뿐이며, 나머지는 무변별·역상관 [근거: TOOL_protparam.md §4-1, TOOL_plifepred.md §3-1, TOOL_hlp.md §5]. 함의: A-02 액션아이템의 결론은 "외부 툴 도입 불가, 자체 모듈 유지"다.
- raw vs meta 동급비교 금지: 본 표의 ρ는 전부 raw(서열 고유 실력 헤드라인). 변형 메타데이터(아실화·D-aa 등) 주입 meta ρ는 고정 배수 버킷팅 효과라 동급 비교 불가 — §4에서 별도 격리. [근거: MEMORY.md §"반감기 raw vs meta 정직 입장"; AG_src/pipeline/step08_stability.py:115-121]
1. 7열 종합 성능평가표
형식: ① 툴/모듈 ② 출처 ③ 실행결과(성공/실패+사유) ④ 적용여부+사유 ⑤ 구현모듈(file:line) ⑥ 성능지표(값+등급) ⑦ 결론·권고 성능지표는 모두 raw Spearman ρ(headline). 벤치 ground-truth = 문헌 33종 [데이터: _workspace/report_site/_analysis/BENCH_halflife_v2.md].
1-A. 자체 모듈 (적용 후보)
| ① 모듈 | ② 출처 | ③ 실행결과 | ④ 적용여부+사유 | ⑤ 구현모듈 | ⑥ 성능지표 | ⑦ 결론·권고 |
|---|---|---|---|---|---|---|
| step08 log-mult 휴리스틱 | in-house, 외부 API 없음 | ✅ 성공 (bio-tools env, 6/6 pytest) | 적용 중 — 후보 간 상대순위 게이트 | AG_src/pipeline/step08_stability.py:195-275 |
raw ρ +0.396 (N=32, 커밋 JSON), D-aa +0.436·L-aa +0.128 MED | 채택. 절대 t½ 임상해석 금지, relative_percentile 게이트로만 사용 |
| RF 앙상블 (PEPlife2) | in-house, PEPlife2 2,418건 학습 | ✅ 성공(조건부) — 37/37 추론, sklearn 1.8↔1.9 경고 | 부분 적용 — stability_norm 안정화 보조 |
pyrosetta_flow/halflife_ensemble.py:35-46,81-108; halflife_model/halflife_gbr.joblib |
raw ρ +0.371 (N=37); in-domain CV ρ=+0.784 MED | 보조 유지. 단독 사용 불가(OOD gap 큼, D-aa ρ=−0.08 역변별) |
| GAT self-train (pepmsnd_peplife2) | in-house self-train, PEPlife2 REST | ✅ 성공 — 11종 예측, 전체 ~1.87h 상수붕괴 | ❌ 미적용 — 상수붕괴(변별 불가) known failure | _workspace/pepmsnd_local/checkpoints/pepmsnd_peplife2_20260520_0723.pth |
raw ρ +0.48 (N=11, p=0.13); 체크포인트 meta ρ=−0.119 HIGH | 채택 불가. RF-v2(CV ρ=0.78)가 우월 |
1-B. 외부 제안 툴 (실행 성공)
| ① 툴 | ② 출처 | ③ 실행결과 | ④ 적용여부+사유 | ⑤ 구현모듈 | ⑥ 성능지표 | ⑦ 결론·권고 |
|---|---|---|---|---|---|---|
| ProtParam N-end rule | BioPython BSD-3 [출처: https://biopython.org/wiki/ProtParam]; Bachmair 1986 Science 234:179 | ✅ 성공 — 33/33 실행, 오류 0 | 부분 적용 — L-aa 순위 추론 보조만 | 미통합 (pharmacology_guards.py LITERATURE_VALUES 참조 가능) |
raw ρ +0.622 (L-aa N=23, p=0.0015) HIGH; D/mixed −0.359(무효) | L-aa 단독 보조 지표. cyclic/D-aa 적용 금지(SS bond에서 계통적 과예측) |
| ProtParam Instability Index | Guruprasad 1990 Protein Eng 4:155 | ✅ 성공 (동상) | 필터만 — II<40=안정 분류 | 동상 | raw ρ +0.160 (L-aa, p=0.47, 무효) LOW | 반감기 예측 불가. 서열 불안정성 이분 필터로만 |
| PlifePred2 v1.0 | PyPI plifepred2==1.0; Mathur 2018 PLOS ONE 13(6):e0196829 |
✅ 성공 (peptools env, RF/QSO) | ❌ 미적용 — L-aa도 무변별, D-aa/len<12 전면불가 | pipeline_local/scripts/predict_halflife_pepmsnd.py:139-276 |
raw ρ +0.055 (N=13, p=0.86) / 재측정 +0.004 (N=14, p=0.99) HIGH | rank-only triage P4 등급 유지. 스코어 단위 불명(시간 아님) |
| HLP | Sharma 2014 BMC Bioinformatics 15:282 [출처: https://webs.iiitd.edu.in/raghava/hlp/] | ✅ 서버응답 성공 (HTTP 200) — L-aa 20/23, D-aa 0/9 | ❌ 미적용 — 도메인 미스매치(장내≠혈청) | 해당없음(미적용) | raw ρ −0.403 (L-aa N=20, p=0.08) — 무효 LOW | 장내 protease 전용. 예측값 전범위 1.1~3.3초로 붕괴. 미적용 |
1-C. 외부 제안 툴 (실행 불가 — fail-closed)
| ① 툴 | ② 출처 | ③ 실행결과(실패+사유) | ④ 적용여부+사유 | ⑤ 구현모듈 | ⑥ 성능지표 | ⑦ 결론·권고 |
|---|---|---|---|---|---|---|
| pepMSND | Wang 2025 Digital Discovery DOI:10.1039/D5DD00118H | ❌ 실패 — 웹서버 Connection refused(port80) + ConnectTimeout(443); 공식 가중치 미공개(*.pth 0건) |
❌ 미적용 — 서버다운+가중치없음 | predict_halflife_pepmsnd.py:391-423 (web stub) |
미평가(실행불가); 논문 AUC 0.912는 독립검증 미확인 LOW | 사용 불가. 가중치 공개/서버복구 시 재평가. 이진분류라 연속 t½ 불가 |
| CAMSOL-PTM | Oeller 2023 Nat Commun 14:7475 (PMID 37978172) | ❌ 실패 — HTTP 302 user_not_registered; PyPI 미존재; 계수 미공개 |
❌ 미적용 — 등록필요 웹전용 + 용해도 전용(반감기≠용해도) | 미등록 (scope 외) | 미평가(실행 미수행) | 반감기 미적용 유지. 등록 후 D-aa 용해도 보조로만 재검토 가능 |
| PeptideRanker v2 | Mooney 2012 PLoS ONE 7(10):e45012 (PMID 23056189) | ❌ 실패 — 구버전 POST 미응답, 신버전 SPA API 405; PyPI 미존재 | ❌ 미적용 — 생물활성 ranking 전용(t½ 미출력) | pharmacology_guards.py:1028-1036 (P4, t½ 아님 경고) |
미평가; 원논문 생물활성 AUC~0.85(t½ 무관) | 반감기와 혼동 금지(P4). 생물활성 1차 screening 보조로만 |
| PeptideStability | 미식별 — PubMed 0건, GitHub/PyPI 0건 | ❌ 실패 — 툴 실체(논문/저장소/URL) 미확인 | ❌ 미적용 — 실체 검증 불가 | 미구현 | 미평가(툴 미식별) | 3월 회의 원본 PDF에서 원명 재확인 필요(오기 가능성) |
2. 외부 툴이 전부 실패한 3대 원인 (정직 기록)
2-A. D-아미노산 지원 0종 (구조적 블로커)
- 주장: 외부 제안 7종 전부 D-아미노산 미지원이라 방사성의약품 후보가 전량 사각지대다.
- 근거: PlifePred2 소스
if not set(seq).issubset(VALID_AA): rejected[근거: TOOL_plifepred.md §2-1]; D-aa 소문자 FASTA 입력 시 plifepred2 CLINo valid sequences found[근거: TOOL_pepmsnd.md §3-3]; HLP 단일문자 코드로 D-aa 구분 불가 → L-aa로 오처리 [근거: TOOL_hlp.md §3 사유2]; ProtParam은 D-aa 대문자 강제변환 시 GHRP-6 II=−46.6 오계산 [근거: TOOL_protparam.md §5-2]. - 함의: SSTR2 선택성 리더보드 상위 후보 다수가 D-aa 변형 → 외부 툴 평가 불가 [데이터: runs/pyrosetta_flow/global_selectivity_leaderboard.json]. 자체 step08만이 D-aa modification 배수(×35)로 부분 처리 [근거: TOOL_our_step08.md §1].
2-B. 도메인 미스매치 (장내 vs 혈청, 용해도 vs 반감기, 생물활성 vs 반감기)
- 주장: 실행된 외부 툴 상당수가 애초에 혈청 반감기 도구가 아니다.
- 근거: HLP = 장내(intestinal protease) 전용 [근거: TOOL_hlp.md §3 사유1, PMC4150950]; CAMSOL = 용해도 전용 [근거: TOOL_camsol_pepranker.md §CAMSOL 상세]; PeptideRanker = 생물활성 0~1 스코어, t½ 미출력 [근거: TOOL_camsol_pepranker.md:22]. LOW
- 함의: ⑥ 성능 ρ 수치 자체가 무의미(HLP ρ=−0.40은 도메인 불일치 산물). 미평가/무효로 정직 격하.
2-C. 서버 다운 / 웹 전용 / 미식별 (실행 자체 불가)
- 주장: 4종(pepMSND·CAMSOL·PeptideRanker·PeptideStability)은 성공/실패 이전에 실행 자체가 불가능했다.
- 근거: pepMSND
Connection refused+ConnectTimeout(2026-06-19 실측) [근거: TOOL_pepmsnd.md §3-1]; CAMSOL HTTP 302 등록요구 [근거: TOOL_camsol_pepranker.md §실행로그]; PeptideRanker SPA API 405 [근거: 동 §]; PeptideStability PubMed/GitHub 0건 [근거: 동 §]. HIGH (실측 실패 로그) - 함의: fail-closed 원칙대로 "미평가/실패"로 기록. 성능 숫자 지어내기 없음.
3. 채택 모듈 상세 — step08 휴리스틱 (실효 1순위)
- 주장: 외부 툴이 전부 무력한 가운데, 자체 step08 휴리스틱이 외부 최고 수준의 raw 변별력(D-aa군 +0.436)을 보인다.
- 근거(커밋 JSON, N=32): step08 raw ρ — 전체 +0.396, L-aa +0.128, D-aa +0.436(외부 D-aa는 전부 실행불가) [데이터: _workspace/report_site/_analysis/BENCH_halflife_v2_results.json — all_raw=0.396, L_raw=0.128, D_raw=0.436, all_meta=0.662]. MED
- N=33 재실행 차이(분리 기록): TOOL_our_step08.md는 Insulin A-chain 1종을 추가한 N=33 재실행에서 raw 전체 +0.366·L-aa +0.150·D-aa +0.436을 보고한다 [근거: TOOL_our_step08.md §3-1]. 단 이 N=33 run의 결과 JSON은 커밋되지 않아 헤드라인에는 채택하지 않고, N 1종 추가에 따른 자연 변동(raw −0.030)으로만 기록. 두 run 모두 D-aa +0.436·방향 동일. 미검증 JSON 부재
- 알고리즘:
log10(t½)=log10(base) − proteolysis_penalty + Σ mod_log_mult, base=0.05h, 배수 fatty_acid×2800·pegylation×2200·d_amino_acid×35·cyclization×1.8 [근거: AG_src/pipeline/step08_stability.py:111,115-121]. - SST-14 검증: lit 0.033h → raw 0.042h(과대예측 없음, <1h 통과) [근거: TOOL_our_step08.md §3-2, test_sst14_not_overpredicted].
3-A. 채택 모듈의 한계 (정직)
- 바닥 클램프 min=0.02h — L-aa 단반감기군이 동일값에 몰려 L-aa raw ρ=+0.128(N=32 JSON; N=33 재실행 +0.150)로 하락 [데이터: BENCH_halflife_v2_results.json L_raw=0.128; 근거: TOOL_our_step08.md §4].
- 비표준 aa 미지원 — Pasireotide(Hyp)·Cetrorelix(D-Nal)·Degarelix·Icatibant(Tic) 서열 파싱 불가로 제외 [근거: TOOL_our_step08.md §5].
- 절대 calibration 부재 — in-vitro 혈청 어세이 없음, 절대 t½ 임상 해석 금지 [근거: step08_stability.py:536-540]. LOW 절대값
4. raw vs meta 정직 격리 (동급 비교 금지)
헤드라인은 raw. meta ρ는 변형 메타데이터(아실화·D-aa·cyclization)를 고정 배수로 손으로 주입한 버킷팅 효과 — 모델 예측 실력이 아니다. 동급 비교 금지. [근거: MEMORY.md §"반감기 raw vs meta 정직 입장 2026-06-18"]
수치 = 커밋된 결과 JSON(N=32) [데이터: _workspace/report_site/_analysis/BENCH_halflife_v2_results.json]. TOOL_our_step08.md의 N=33 재실행값(전체 raw +0.366/meta +0.669, L-aa raw +0.150/meta +0.368)은 JSON 미커밋이라 괄호로만 병기.
| step08 군 | raw ρ (headline, N=32 JSON) | meta ρ (조건부·격리) | N |
|---|---|---|---|
| 전체 | +0.396 (N=33재실행 +0.366) MED | +0.662 (N=33재실행 +0.669) 조건부 | 32 |
| L-aa | +0.128 (N=33재실행 +0.150) MED | +0.344 (N=33재실행 +0.368) 조건부 | 23 |
| D-aa | +0.436 MED | +0.277 조건부 | 9 |
- 주장: meta가 raw보다 높아 보이는 것(전체 +0.66 vs +0.40)은 모델이 똑똑해진 게 아니라 변형 배수 버킷팅 때문이다.
- 근거: meta 향상은 fatty_acid×2800 등 고정 배수가 Ghrelin(아실화)·Octreotide(D-aa+cyclic)를 상위로 강제 분리한 결과 [근거: TOOL_our_step08.md §3-3 — Ghrelin meta 37.57h vs raw 0.02h]. 공식 부재가 아닌 메타데이터 부재가 원인 [근거: 본 사이트 05_biotech §6, _analysis/14 벤치].
- 함의: 실사용 시 변형이 旣知인 조건에서만 meta 참고. 헤드라인 보고·게이트는 raw 및
relative_percentile상대순위로만. LOW 조건부
5. 게이트 운영 — relative_percentile (상대순위)
- 주장: 반감기 surrogate는 절대값이 아니라 상위 N% 통과(상대순위) 게이트로만 작동한다.
- 근거: step08 게이트 모드
relative_percentile— 후보 풀 내 상대 백분위로 통과 판정 [근거: AG_src/pipeline/step08_stability.py:526-568; test_stability_gate_relative_percentile_mode PASSED]. RF도half_life_h표시값은 휴리스틱 절대스케일, RF는stability_norm순위 안정화에만 기여 [근거: TOOL_our_rf.md §5, pyrosetta_flow/halflife_ensemble.py:101]. - 함의: "24h/72h TPP KPI 직접 충족" 같은 절대 주장 불가 — H-06 가드(계산 불가능을 계산 가능한 척 금지) 적용 필수 [근거: TOOL_plifepred.md §4]. 의사결정은 native 대비 상대 우위·rank-order로만. MED 상대
6. 권고 (A-02 종결)
| # | 권고 | 근거 |
|---|---|---|
| 1 | 외부 7종 도입 불가 확정 — 자체 step08+RF 유지 | §1, §2 — 외부 변별 0~보조, D-aa 0종 |
| 2 | ProtParam N-end rule을 L-aa 보조 지표로 선택 통합 검토 | raw ρ=+0.622 [근거: TOOL_protparam.md §4-1] — 단 cyclic/D-aa 금지 |
| 3 | D-aa 반감기는 미해결 공백 — wet-lab 혈청 어세이 또는 D-aa 학습 모델 필요 | 외부·자체 모두 D-aa 절대값 신뢰 불가 [근거: TOOL_our_rf.md §8] |
| 4 | PeptideStability 원명 재확인 — 3월 회의 원본 PDF 대조 | 툴 실체 미식별 [근거: TOOL_camsol_pepranker.md §다음단계] |
| 5 | wrapper D-aa 감지 결함 수정 — check_d_aa() 소문자 통과 버그 |
[근거: TOOL_pepmsnd.md §6, predict_halflife_pepmsnd.py:119-131] |
부록 — 실행 환경·재현
- 실행 환경: 외부 툴·자체 모듈 =
~/miniforge3/envs/bio-tools/bin/python(Python 3.11.15); PlifePred2 =~/miniforge3/envs/peptools[근거: TOOL_our_step08.md §2-1, TOOL_plifepred.md §2-1]. - 벤치 ground-truth: 문헌 33종 t½ [데이터: _workspace/report_site/_analysis/BENCH_halflife_v2.md, _results.json].
- 회귀 테스트:
AG_src/tests/test_halflife_benchmark.py6/6 PASSED [근거: TOOL_our_step08.md §2-3]. - 툴별 원본 보고서:
_evidence/TOOL_protparam.md,TOOL_hlp.md,TOOL_plifepred.md,TOOL_pepmsnd.md,TOOL_camsol_pepranker.md,TOOL_our_step08.md,TOOL_our_rf.md.