프로젝트 5주차 타임라인 (Wed Jan 28 2026)


[13] Hugging Face 기반 대시보드 틀 구축

실시간 임베딩 계산(ProtT5, ESM-2)과 대용량 모델(CatBoost, XGBoost)를 함께 운용해야 하는 구조로 확장되면서

단순 로컬/경량 Streamlit 환경보다 리소스 제약이 적고 베포가 유연한 Hugging Face Spaces가 더 적합하다고 판단

① 메인 페이지

목적: 이 플렛폼이 무엇을 하는지, 왜 이러한 구조로 설계되었는지, 그리고 각 기술 선택의 배경과 맥락을 사용자에게 설명

요소: 전체 파이프라인 요약 - Epitope generation (sliding window), Embedding (ProtT5, ESM-2)

          Cascade 모델 구조 및 Weighted Decision - 실험 데이터 특성(class imbalance)과 2-stage 접근을 선택한 이유

② 실험 결과 분석 [ProtT5]

목적: ProtT5로 임베딩된 데이터 결과를 기반으로 실험 조건별 epitope 예측 결과를 요약하고 해석하는 분석 대시보드

사용 데이터: test_metadata.csv, test_embedding_antigen.npy, final_candidates_weighted.csv

* 현재 용량 제약으로 인해 임베딩 및 모델 추론을 실시간으로 수행하지 않고 사전에 계산된 결과 파일을 활용하여 대시보드를 구성함

   추후 Page 3 구현 시 필수 모델/임베딩 파일을 우선 배치한 뒤, 사용자 업로드 데이터 + 임베딩 동시 입력 구조로 확장할 계획

요소: 실험 조건 기반 필터링 - Assay / Method / Disease / State 선택 후 선택 조건에 해당하는 실험 데이터 범위를 직관적으로 한정

         Top Epitope 시각화 - 선택 조건 내 Final Score 기준 Top 1 Epitope 표시 with 서열, 위치 정보, 수소성 등 물리화학적 특성, etc.

         구조 기반 해석 (3D Visualization) - Antigen code 기반 구조 로딩, 예측된 epitope 영역을 구조 상에서 하이라이트

         후보군 순위표 - Final Score 기준 정렬, 사용자가 Top N을 조절하여 Positive Epitope 세부 정보 확인 가능

장점: 이미 최적화된 임계값를 적용한 결과를 해석, 실험 조건을 명확히 반영한 분석 가능, 구조 정보를 결합한 직관적인 결과 이해

③ 신규 항원 예측 [ESM-2]

목적: 이전에 관측되지 않은 항원 서열에 대해 사용자가 raw sequence를 직접 입력하여 즉석 예측을 수행하는 페이지

흐름: 항원 서열 입력 → Sliding window Epitope 생성 → ESM-2 임베딩 → 2-stage Cascade 예측 → Final Score 계산

요소: 임계값 조절 가능 - 기본적으로 최적화된 임계값을 제공, 사용자가 sensitivity–precision trade-off를 직접 확인 가능

장점: Page 2와 동일한 결과 포맷 유지해 기존 실험 결과와 신규 항원 예측 결과의 직접 비교 가능

         단순 시각화가 아닌 실제 예측 기능 제공 - 연구 파이프라인의 end-to-end 구현

Note
현재 Page 2를 제작 중이며 기본적인 필터링, Top epitope 시각화, 후보군 테이블, 구조 로딩 기능까지 구현된 상태
이후 Page 3 구현이 완료되면 핵심 분석 기능 외에도 UI/UX 개선과 사용자 입장에서 사용하지 편한 대시보드로 다듬을 예정

ProtT5 기반 실험 결과 분석 대시보드 (데이터 요약, Top-ranked Epitope, 3D 구조 기반 Epitope 위치, Epitope 후보 순위표)

 

B-cell Epitope Prediction Dashboard - a Hugging Face Space by yunuk0

This platform identifies specific parts of protein antigens that antibodies can recognize and bind to. Users provide protein sequence data and the system analyzes it to predict potential B-cell epi...

huggingface.co


문제 설명 solution.py
#129 콜라츠 추측이란 어떤 양의 정수 k를 선택하더라도 다음 두 가지 규칙을 반복해서 적용하면 항상 마지막에는 1이 된다는 수학적 가설입니다.

(1) 입력값이 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더함
(2) 결과로 나온 수가 1보다 크다면 1번 작업을 반복함



초항이 k인 우박수열이 있다면, x = 0일때 y = k이고 다음 우박수는 x = 1에 표시합니다. 0 이상의 수 b에 대해 [a, -b]에 대한 정적분 결과는 x = a, x = n - b, y = 0 으로 둘러 쌓인 공간의 면적으로 정의하며, 이때 n은 k가 초항인 우박수열이 1이 될때 까지의 횟수를 의미합니다. 우박수의 초항 k와, 정적분을 구하는 구간들의 목록 ranges가 주어졌을 때 정적분의 결과 목록을 return 하도록 solution을 완성해주세요. 단, 주어진 구간의 시작점이 끝점보다 커서 유효하지 않은 구간이 주어질 수 있으며 이때의 정적분 결과는 -1로 정의합니다.
def solution(k, ranges):
     answer = []
     arr = [k]
     while k > 1:
          if not k % 2: k //= 2
          else: k = k * 3 + 1
          arr.append(k)
          area = [0]
          for i in range(len(arr) - 1):
               area.append(area[-1] + (arr[i] + arr[i + 1]) / 2)
          for a, b in ranges:
               if a >= len(area) or b - 1 < -len(area):
                    answer.append(-
1)
               elif area[b-1] - area[a] < 0:
                    answer.append(-
1)
               else:
                    answer.append(area[b-1] - area[a])
          return answer

 

+ Recent posts