프로젝트 7주차 타임라인 (Tue Feb 10 2026)


[21] Cellect Epitope - Summary

Point 1. 왜 이 프로젝트를 시작했나?
항체 신약 개발에서 가장 어려운 단계 중 하나는 항체가 실제로 결합할 수 있는 항원의 Epitope를 찾는 일입니다. 이 과정은 현재도 대부분 Wet-lab 실험에 의존하고 있으며, 반복 실험으로 인한 높은 비용과 후보 선별에 소요되는 긴 개발 기간이라는 현실적인 한계를 안고 있습니다.

기존 AI 기반 epitope 예측 모델도 존재하지만 실제 실험 환경과 맥락을 충분히 반영하지 못한다는 점에서 현장 적용에는 한계가 있었습니다.
Point 2. Cellect Epitope의 접근 방식
Cellect Epitope는 단순 예측 모델이 아니라 “이 Epitope가 왜 유력한가?”를 설명해주는 의사결정 보조 플랫폼입니다. 연구자는 단순 점수뿐 아니라 실험 조건, 구조적 노출 여부, 그리고 화학적 결합 가능성까지 함께 확인하며 납득 가능한 후보를 선택할 수 있습니다.
Point 3. 핵심 모델링 전략
PLM 병행 전략: (a) ProtT5 - 기존 데이터 분포 내에서 epitope 패턴을 정밀 분석
                         (b) ESM-2 - 데이터베이스에 없는 신규 항원에 대한 일반화 성능 확보
                         → 정확도와 확장성을 동시에 확보하기 위한 이중 모델 전략

2-Stage Cascade 예측 파이프라인: (Stage 1) CatBoost - Recall 중심 필터링으로 유망 후보를 최대한 보존
                                                           (Stage 2) XGBoost - Precision 중심 선별로 실제 결합 가능성 높은 후보만 유지
                                                           → 실험 전 단계에서 후보 수를 효율적으로 압축
Point 4. 예측 신뢰성을 높이기 위한 3단계 검증
1. 점수 기반 검증: 다단계 예측 결과를 통합한 Final Score
2. 구조 기반 검증: ESMFold 연동, epitope의 단백질 표면 노출 여부 확인
3. 화학적 검증: In-silico mutagenesis 및 소수성 지표 분석을 통한 hotspot 식별
Point 5. 데이터 기반 성과 및 프로젝트의 가치
전체 후보 중 약 91% 선제 제거, True Positive 유지하면서 실험 대상 범위 대폭 축소, 실험 방식·질병 상태에 따른 결합 편차 학습 성공
연구 비용 절감 & 개발 기간 단축, 점수·구조·화학 지표 기반 설명 가능한 AI, 실제 연구 환경을 반영한 실무 중심 솔루션
구분 내용 링크

프로젝트
개요 및 설계

프로젝트 노션 https://www.notion.so/teamsparta/2d52dc3ef514811a876af52264105da3
SEPHO 팀 노션 https://www.notion.so/teamsparta/4-2fc2dc3ef5148064873dcc776ea0ba95
모델 및 결과 정리 PPT (결과 보고서) https://www.canva.com/design/DAG6VQIGPI8/hh5ZaGcGf7E2NPp4wGdoYQ/edit
대시보드 HuggingFace https://huggingface.co/spaces/yunuk0/epitope

문제 설명 solution.py
#138 Ax + By + C = 0으로 표현할 수 있는 n개의 직선이 주어질 때, 이 직선의 교점 중 정수 좌표에 별을 그리려 합니다. 예를 들어, 직선 5개를 좌표 평면 위에 그린 후, 정수로 표현되는 교점에 별을 그리면 다음과 같습니다.

위의 그림을 문자열로 나타낼 때, 별이 그려진 부분은 *, 빈 공간(격자선이 교차하는 지점)은 .으로 표현하면 다음과 같습니다.

"....*...."  
"........."  
"........."  
"*.......*"  
"........."  
"........."  
"........."  
"........."  
"*.......*"  

직선 A, B, C에 대한 정보가 담긴 배열 line이 매개변수로 주어집니다. 이때 모든 별을 포함하는 최소 사각형을 return 하도록 solution 함수를 완성해주세요.
from itertools import combinations
import math

def solution(line):
     dots_x = []
     dots_y = []
     for f1, f2 in combinations(line, 2):
          a, b, e = f1
          c, d, f = f2
          if a * d - b * c == 0:
               continue
          x = (b * f - e * d) / (a * d - b * c)
          y = (e * c - a * f) / (a * d - b * c)
          if x == int(x) and y == int(y):
               dots_x.append(int(x))
               dots_y.append(int(y))
     a = max(dots_x) - min(dots_x)
     b = max(dots_y) - min(dots_y)
     answer = [['.'] * (a + 1) for _ in range(b + 1)]
     for i in range(len(dots_x)):
          x = dots_x[i] - min(dots_x)
          y = -(dots_y[i] - max(dots_y))
          answer[y][x] = '*'
     return [''.join(a) for a in answer]

+ Recent posts