| import streamlit as st |
| import base64 |
|
|
| |
| |
| |
| st.set_page_config( |
| page_title="Cellect Epitope", |
| page_icon="assets/team_icon.png", |
| layout="wide", |
| initial_sidebar_state="expanded" |
| ) |
|
|
| st.image("assets/team_icon.png", width=150) |
| st.title("Cellect Epitope") |
| st.markdown(""" |
| ๋ณธ ํ๋ซํผ์ **๋จ๋ฐฑ์ง ์ธ์ด ๋ชจ๋ธ(PLM) ๊ธฐ๋ฐ 2๋จ๊ณ ํ์ดํ๋ผ์ธ**์ ํตํด, ์คํ ์ ๋จ๊ณ์์ ์ต์ ์ **B-cell epitope ํ๋ณด**๋ฅผ ์ ๋ณํฉ๋๋ค. |
| ์ค์ ์คํ ํ๊ฒฝ์์ ๋ฐ์ํ๋ **๋์ ๋น์ฉ ๋๋น ๋ฎ์ ์ฑ๊ณต๋ฅ ๋ฌธ์ **๋ฅผ ์ํํ๊ณ , **๋ฐ์ดํฐ ๊ธฐ๋ฐ ํฉ๋ฆฌ์ ์คํ ์์ฌ๊ฒฐ์ **์ ์ง์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. |
| """) |
|
|
| |
| |
| |
| images = ["assets/method1.png", "assets/method2.png", "assets/method3.png"] |
| titles = [ |
| "1. ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฐ ํน์ง ์ถ์ถ", |
| "2. PLM ๋ชจ๋ธ์ ํตํ ๋งฅ๋ฝ ์ ๋ณด ํ์ต", |
| "3. ์ต์ข
ํ๋ณด ์ ๋ณ ๋ฐ ๊ฒฐ๊ณผ ์ ๊ณต" |
| ] |
| details = [ |
| "ํญ์ ์์ด์ 16์๋ก ์๋ผ ์ํผํ ํ ์์ฑ", |
| "ProtT5/ESM-2 ์๋ฒ ๋ฉ ๋ชจ๋ธ ์ ์ฉ", |
| "Epitope ํ๋ณด๊ตฐ ๊ฒฐํฉ ๊ฐ๋ฅ์ฑ ๊ณ์ฐ" |
| ] |
|
|
| st.markdown(""" |
| <div style="margin:auto; min-width:2500px; max-width:2500px; text-align:center;"> |
| """, unsafe_allow_html=True) |
|
|
| col1, col2, col3 = st.columns(3, gap="large") |
| for i, col in enumerate([col1, col2, col3]): |
| with col: |
| with st.container(): |
| st.image(images[i], width=300) |
| st.markdown( |
| f''' |
| <div style="text-align:center; margin-top:5px;"> |
| <strong>{titles[i]}</strong> |
| <p style="margin:0;">{details[i]}</p> |
| </div> |
| ''', |
| unsafe_allow_html=True |
| ) |
|
|
| st.markdown("</div>", unsafe_allow_html=True) |
|
|
| st.markdown(""" |
| |
| """) |
|
|
| st.markdown( |
| """ |
| <div style="text-align:center; color:#9aa0a6; font-size:0.85rem; margin-top:8px;"> |
| <strong>๐ก Tip:<strong> ์ํํ ๋์๋ณด๋ ์ฌ์ฉ์ ์ํด ์๋จ ์นด๋๊ฐ ๊ท ํ ์๊ฒ ํ์๋๋๋ก ๋ธ๋ผ์ฐ์ ์ฐฝ์ ์ ์ ํ ๋ง์ถฐ ์ฌ์ฉํด ์ฃผ์ธ์. |
| </div> |
| """, |
| unsafe_allow_html=True |
| ) |
| st.divider() |
|
|
| |
| |
| |
| st.header("์ฐ๊ตฌ ์ค์์ฑ") |
| st.markdown(""" |
| B-cell ์ํผํ ํ ์คํ์ **์ฑ๊ณต ํ๋ฅ ์ด ๋ฎ๊ณ ๋น์ฉ์ด ๋ง์ด ์์**๋ฉ๋๋ค. |
| ์ผ๋ฐ์ ์ธ ์คํ ์ํฌํ๋ก์ฐ์์๋ ๊ฒฐํฉ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ ํ๋ณด์ ๋์ ํ๋ณด๊ฐ ๋์ผํ ๋น์ฉ๊ณผ ์๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋์ด **์์ ๋ญ๋น**๊ฐ ์ฌ๊ฐํฉ๋๋ค. |
| """) |
|
|
| st.markdown( |
| '<p style="background-color:#d4edda; color:#000000; font-weight:bold; ' |
| 'padding:1px 3px; border-radius:1px; display:inline-block; font-size:17px;">์ฃผ์ ๋ฌธ์ ์ </p>', |
| unsafe_allow_html=True |
| ) |
| st.markdown(""" |
| - ์ค์ ์ํผํ ํ ๋น์จ์ด ์ ์ฒด ์์ด์ 1% ๋ฏธ๋ง โ ๊ทน๋จ์ ๋ฐ์ดํฐ ๋ถ๊ท ํ |
| - ๋ฌด์์ ์คํ ์ 99% ์ด์ ์์ ๋นํจ์จ์ ์๋ชจ |
| """) |
|
|
| st.markdown( |
| '<p style="background-color:#d4edda; color:#000000; font-weight:bold; ' |
| 'padding:1px 3px; border-radius:1px; display:inline-block; font-size:17px;">ํ์ค์ ์๊ตฌ</p>', |
| unsafe_allow_html=True |
| ) |
| st.markdown(""" |
| - ์ค์ํ epitope๋ ๋์น์ง ์์ผ๋ฉด์ **์คํ ๋น์ฉ๊ณผ ์๊ฐ์ ์ต์ํ**ํ ์ ์๋ ์ฌ์ ํํฐ๋ง ์ ๋ต ํ์ |
| """) |
|
|
| st.divider() |
|
|
| |
| |
| |
| st.header("ํ์ดํ๋ผ์ธ ์ค๊ณ") |
|
|
| st.markdown(""" |
| > **์ฐ๊ตฌ ๊ฐ์ค**: โ1์ฐจ ๋ชจ๋ธ๋ก ๋
ธ์ด์ฆ 90% ์ ๊ฑฐ ํ, 2์ฐจ ๋ชจ๋ธ๋ก ๊ฒฐํฉ ํ์ ๋ ๊ฒ์ฆ โ ์คํ ์ฑ๊ณต๋ฅ ๊ทน๋ํโ |
| """) |
|
|
| st.markdown("๋จ๋ฐฑ์ง ์์ด์ ์
๋ ฅ๋ฐ์ 2-stage ํ์ดํ๋ผ์ธ์ ๋ฐ๋ผ **B-cell epitope ํ๋ณด๋ฅผ ๋จ๊ณ์ ์ผ๋ก ์ ๋ณ**ํฉ๋๋ค.") |
|
|
| st.markdown( |
| '<p style="background-color:#d4edda; color:#000000; font-weight:bold; ' |
| 'padding:1px 3px; border-radius:1px; display:inline-block; font-size:17px;">Step 1. ๊ตฌ์กฐยท๋งฅ๋ฝ์ ์๋ฒ ๋ฉ</p>', |
| unsafe_allow_html=True |
| ) |
| st.markdown(""" |
| - **ProtT5-XL-U50:** ์๋ฏธ๋
ธ์ฐ ์์ด์ ์ธ์ดยท๋ฌธ๋งฅ์ ์ ๋ณด ์ถ์ถ |
| - **ESM-2:** ๋จ๋ฐฑ์ง 3์ฐจ์ ๊ตฌ์กฐ ๋ฐ ์งํ์ ์๊ด๊ด๊ณ ๋ฐ์ |
| """) |
|
|
| st.markdown( |
| '<p style="background-color:#d4edda; color:#000000; font-weight:bold; ' |
| 'padding:1px 3px; border-radius:1px; display:inline-block; font-size:17px;">Step 2. High Recall ๊ธฐ๋ฐ 1์ฐจ ํํฐ๋ง</p>', |
| unsafe_allow_html=True |
| ) |
| st.markdown(""" |
| - **CatBoost ๋ชจ๋ธ:** ์ ์ฌ์ ํ๋ณด๋ฅผ ์ต๋ํ ๋์น์ง ์๊ณ ์ ๋ณ |
| """) |
|
|
| st.markdown( |
| '<p style="background-color:#d4edda; color:#000000; font-weight:bold; ' |
| 'padding:1px 3px; border-radius:1px; display:inline-block; font-size:17px;">Step 3. High Precision ๊ธฐ๋ฐ 2์ฐจ ์ ์ </p>', |
| unsafe_allow_html=True |
| ) |
| st.markdown(""" |
| - **XGBoost ๋ชจ๋ธ:** ์๋ฌผํ์ ๋งฅ๋ฝ ๋ด ํญ์ฒด ๊ฒฐํฉ ํ์ ๋ ์ ๋ฐ ํ๊ฐ |
| """) |
|
|
| st.divider() |
|
|
| |
| |
| |
| st.header("๋ชจ๋ธ ์ค๊ณ ์ ๋ต") |
| st.markdown(""" |
| - **Accuracy ์ค์ฌ ์ค๊ณ ๋ฐฐ์ ** โ ๊ทน๋จ์ ๋ถ๊ท ํ ํ๊ฒฝ์ ์ ํฉํ MCC ํ๊ฐ ์งํ ์ฑํ |
| - **๋ฐ์ดํฐ ๋ถ๊ท ํ ๊ณ ๋ ค ํ์ต** โ Class Weight ๊ธฐ๋ฐ, ์๋ณธ ๋ถํฌ ์ ์ง |
| - **์๊ณ๊ฐ ์ ๋ต์ ํตํฉ** โ ์คํ ์คํจ ๋น์ฉ ์ต์ํ |
| - **์คํ ์ํฌํ๋ก์ฐ ์นํ์ ๊ตฌ์กฐ** โ ๋จ๊ณ์ ํํฐ๋ง ์ค๊ณ |
| """) |
|
|
| st.markdown( |
| '<p style="background-color:#d4edda; color:#000000; font-weight:bold; ' |
| 'padding:1px 3px; border-radius:1px; display:inline-block; font-size:17px;">ํ์ฉ ๋์</p>', |
| unsafe_allow_html=True |
| ) |
| st.markdown(""" |
| - **Wet-lab ์ฐ๊ตฌ์:** ๋ค์ ํ๋ณด ์ค ์ค์ ์คํ์ ํฌ์
ํ **์ฐ์ ์์ ํ๋ณด ์ ๋ณ**, ์คํจ ๋ฆฌ์คํฌ ์ต์ํ |
| - **Bioinformatics ์ฐ๊ตฌ์:** ๊ทน๋จ์ ๋ฐ์ดํฐ ๋ถ๊ท ํ ํ๊ฒฝ์์์ ๋ชจ๋ธ๋ง ์ ๋ต, **์๋ฌผํ์ ํน์ฑ์ ๋ฐ์ํ ํ๊ฐ ์งํ ์ค๊ณ** ๊ด์ฌ |
| """) |
| st.divider() |
| st.caption("๋ณธ ํ๋ซํผ์ ๋ชจ๋ธ ๊ตฌ์กฐ, ์๊ณ๊ฐ ์ค์ ๊ทผ๊ฑฐ, ์์ธ ํ๊ฐ ์งํ๋ฅผ ํฌ๋ช
ํ๊ฒ ๊ณต๊ฐํ์ฌ ์ฐ๊ตฌ์๊ฐ ํ๋จ์ ๋นํ์ ์ผ๋ก ๊ฒํ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.") |
|
|
| st.markdown("<div style='height:12px;'></div>", unsafe_allow_html=True) |
| col1, col2, col3 , = st.columns([2, 1, 3]) |
| with col1: |
| st.image("assets/team_logo_h.png", width=250) |
| with col2: |
| st.image("assets/team_sparta_logo.png", width=100) |
|
|