
[9] Streamlit 기반 대시보드 틀 구축
1️⃣ 대시보드 테스트용 예제 입력
B-cell linear epitope prediction 파이프라인을 연구자가 직접 활용할 수 있도록 Streamlit 기반 대시보드 형태로 구현
| 예측 대시보드 링크 | https://b-cell-linear-epitope-prediction.streamlit.app/ |
| 입력 항원 서열 (예시) | EVQLQQSGAELVRPGASVKLSCTTSGFNIKDIYIHWVKQRPEQGLEWIGRLDPANGYTKYDPKFQGKATITVDTSSNTAYLHLSSLTSEDTAVYYCDGYYSYYDMDYWGPGTSVTVSSAKTTAPSVYPLAPVCGDTTGSSVTLGCLVKGYFPEPVTLTWNSGSLSSGVHTFPAVLQSDLYTLSSSVTVTSSTWPSQSITCNVAHPASSTKVDKKIEPR |
| 구조 참조용 PDB ID | 1A3R |
2️⃣ Experimental conditions 및 파라미터 설정
(1) 대시보드 좌측 패널에 experimental condition을 선택할 수 있고
(2) 모델 예측에 사용되는 임계값과 알파 파라미터를 기본값에서 사용자 정의 값으로 변경할 수 있도록 만들 예정
![]() |
![]() |
3️⃣ 예측 결과 요약
모델이 우선순위가 가장 높다고 판단한 epitope candidate가 상단에 요약 형태로 출력됨
(viz. epitope 서열, antigen 내 위치 (start-end position), prediction score, 평균 소수성 (hydrophobicity) 등 화학적 특성 지표)
![]() |
4️⃣ Epitope 후보군 순위 리스트
Top-ranked epitope 하단에는 예측된 epitope 후보군 전체를 점수 기준으로 정렬한 리스트를 제공해 상대적 우선순위 비교 가능
![]() |
5️⃣ 3D 구조 기반 epitope 시각화
선택된 Top-ranked epitope는 입력된 항원의 3D 구조(PDB) 상에서 하이라이트되어 표시되고
구조 뷰어는 확대/축소, 회전, residue 단위 정보 확인이 가능해 표면 노출 여부 및 구조적 위치를 직관적으로 확인할 수 있음
![]() |
![]() |
![]() |
GitHub - yunuk0/epitope: B-cell Linear Epitope Prediction
B-cell Linear Epitope Prediction. Contribute to yunuk0/epitope development by creating an account on GitHub.
github.com
| 문제 설명 | solution.py |
| #125 숫자 카드 더미에는 카드가 총 100장 있으며, 각 카드에는 1부터 100까지 숫자가 하나씩 적혀있습니다. 2 이상 100 이하의 자연수를 하나 정해 그 수보다 작거나 같은 숫자 카드들을 준비하고, 준비한 카드의 수만큼 작은 상자를 준비하면 게임을 시작할 수 있으며 게임 방법은 다음과 같습니다. 준비된 상자에 카드를 한 장씩 넣고, 상자를 무작위로 섞어 일렬로 나열합니다. 상자가 일렬로 나열되면 상자가 나열된 순서에 따라 1번부터 순차적으로 증가하는 번호를 붙입니다. 그 다음 임의의 상자를 하나 선택하여 선택한 상자 안의 숫자 카드를 확인합니다. 다음으로 확인한 카드에 적힌 번호에 해당하는 상자를 열어 안에 담긴 카드에 적힌 숫자를 확인합니다. 마찬가지로 숫자에 해당하는 번호를 가진 상자를 계속해서 열어가며, 열어야 하는 상자가 이미 열려있을 때까지 반복합니다. 이렇게 연 상자들은 1번 상자 그룹입니다. 이제 1번 상자 그룹을 다른 상자들과 섞이지 않도록 따로 둡니다. 만약 1번 상자 그룹을 제외하고 남는 상자가 없으면 그대로 게임이 종료되며, 이때 획득하는 점수는 0점입니다. 그렇지 않다면 남은 상자 중 다시 임의의 상자 하나를 골라 같은 방식으로 이미 열려있는 상자를 만날 때까지 상자를 엽니다. 이렇게 연 상자들은 2번 상자 그룹입니다. 1번 상자 그룹에 속한 상자의 수와 2번 상자 그룹에 속한 상자의 수를 곱한 값이 게임의 점수입니다. 상자 안에 들어있는 카드 번호가 순서대로 담긴 배열 cards가 매개변수로 주어질 때, 범희가 이 게임에서 얻을 수 있는 최고 점수를 구해서 return 하도록 solution 함수를 완성해주세요. |
def solution(cards):
answer = []
for i in range(len(cards)):
tmp = []
while cards[i] not in tmp:
tmp.append(cards[i])
i = cards[i] - 1
answer.append([] if sorted(tmp) in answer
else sorted(tmp)) answer.sort(key=len)
return len(answer[-1]) * len(answer[-2])
|
Summary
단순히 성능 지표가 좋다는 이유만으로 모델을 채택하기보다는 다양한 조건과 조합을 직접 실험해 보며 보다 이상적인 예측 모델을 만드는 데 집중했다. 또한 Streamlit 기반 대시보드 틀을 처음 구현해 보았는데 도메인에 대한 이해와 구현 방향이 명확했던 덕분에 약 30분 만에 내가 원하는 형태의 대시보드를 코드로 완성할 수 있었다. 이러한 경험을 통해 프로젝트를 진행할 때 도메인 지식이 얼마나 중요한 역할을 하는지를 다시 한 번 실감하게 되었다.
'내일배움캠프 QAQC 3기 > 최종 프로젝트' 카테고리의 다른 글
| 최종 프로젝트 20일차: [11] Single-Model Cascade (Modified Framework) (0) | 2026.01.26 |
|---|---|
| 최종 프로젝트 19일차: [10] 피드백 반영과 최종 스토리라인 정리 (0) | 2026.01.23 |
| 최종 프로젝트 17일차: <스마트 팩토리> (0) | 2026.01.21 |
| 최종 프로젝트 16일차: [8] Two-Stage Ensemble (0) | 2026.01.20 |
| 최종 프로젝트 15일차: [7] CB-LGBM 앙상블 (0) | 2026.01.19 |






