| """ |
| drug_comsol_params.py โ ์ฝ๋ฌผ๋ณ COMSOL ์
๋ ฅ ํ๋ผ๋ฏธํฐ (v2, ๋ฌผ๋ฆฌ๊ณต์ ๊ธฐ๋ฐ) |
| ============================================================ |
| ์ฝ๋ฌผ ์ ํ ์ ํด๋น ์ฝ๋ฌผ์ 10๊ฐ COMSOL ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐํํ๋ค. |
| |
| โ
v2 ๋ณ๊ฒฝ: BA ์ญ์ฐ(์ํ ๋
ผ๋ฆฌ) ํ๊ธฐ โ ๋ฌผ๋ฆฌ ๊ณต์ยท๋ฌธํ ๊ธฐ๋ฐ ์ฌ์ ๋ |
| ๊ธฐ์กด v1์ k_decay๋ฅผ "๋ฌธํ BA๊ฐ ๋์ค๋๋ก ์ญ์ฐ"ํด ๋ฃ์ด, ๋๋ฆฌ๋ชจ๋ธโBA |
| ๊ณ์ฐ์ด ์ํ(BA๋ฅผ ๋ฃ์ด BA๋ฅผ ์ป์)์ด์๋ค. v2๋ ์ด๋ฅผ ์ ๊ฑฐํ๊ณ ๊ฐ |
| ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ๊ทผ๊ฑฐ๋ก ๋
๋ฆฝ ๊ฒฐ์ ํ๋ค. ๊ทธ ๊ฒฐ๊ณผ BA๋ ์๋ฐฉํฅ ์์ธก๊ฐ์ด ๋๋ค. |
| |
| ํ๋ผ๋ฏธํฐ๋ณ ๊ฒฐ์ ๋ฐฉ๋ฒ: |
| Lp_ve, K ์กฐ์ง ์ฑ์ง(์ฝ๋ฌผ ๋ฌด๊ด) โ ๊ณตํต ์์ (Lp_ve=8e-12, K=1e-15) |
| sigma_ve, sigma_le Curry ๋ฐ์ฌ๊ณ์ ฯ=1-(1-(a/R)ยฒ)ยฒ, a=0.0515ยทMW^0.392 nm |
| (Erickson 2009). ๋ฒฝ ๊ณต๊ทน๋ฐ๊ฒฝ R_ve=6.22, R_le=24.5 nm๋ |
| ํ์ผ 3์ข
(IgG/INS/ALB) ์ค์ธก best-fit. |
| D_gel Stokes-Einstein ์์ ํ์ฐ D=kBT/(6ฯฮทr) ร ECM ๋ฐฉํด์ธ์ |
| f=0.376ยทexp(0.1439ยทr_h[nm]) (ํ์ผ 3์ข
์ค์ธก ํผํ
, 37ยฐC) |
| p_ve, p_le ๋ฒฝ ํ์ฐํฌ๊ณผ๋. ํ์ผ 3์ข
์ค์ธก์ log(MW) ์ ํ ๋ณด๊ฐ. |
| kf_m, kr_m ECM ๊ฒฐํฉ ์์ โ ํ์ผ(250415_Drug_list) ์ค์ธก ๊ทธ๋๋ก. |
| k_decay โ
๋ชฉํ BA ์ฌํ๊ฐ(calibration). ์๋ ค์ง ์ฝ๋ฌผ์ ๋ฌธํ SC BA๋ฅผ |
| ์ฌํํ๋๋ก ์ญ์ฐ๋ ๊ฐ์ด๋ค(์๋ฐฉํฅ '์์ธก'์ด ์๋๋ผ '์ฌํ'). |
| LODO ๊ฒ์ฆ์ ๋ฌผ์ฑ์ผ๋ก ์์ธก ๋ถ๊ฐ(27.9%p)์ด๋ฏ๋ก ๋ฏธ์ง ์ฝ๋ฌผ์ |
| k_decay_physics(MW)(MW ๋ก๊ทธ์ค์ผ์ผ ๋ฌผ๋ฆฌ์ถ์ )๋ฅผ ์ธ ๊ฒ. |
| ๋ฌผ๋ฆฌ๊ฐ ์๋ณธ์ K_DECAY_PHYSICS dict์ ๋ณด์กด. |
| TRA๋ ์ถ์ฒ๋ชจ๋ธ5(ํก์ ์๊ณก)๋ผ model4 ๊ธฐ์ค์ผ๋ก ์ฌํํจ. |
| |
| ํ์ผ ์ค์ธก 3์ข
(IgG/INS/ALB, 251103_revised)์ sigmaยทpยทD_gel์ ์ค์ธก ๊ทธ๋๋ก ์ฌ์ฉ. |
| |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| โ
ํ๋ผ๋ฏธํฐ ๊ทผ๊ฑฐ ๋ฑ๊ธ (์์ฒด๋ฌผ๋ฆฌ ๋ฌธํ ๊ฐ์ฌ, ์์ธ: comsol_params_biophysics_refs_ko.md) |
| ์ฃผ์: ์ด 10๊ฐ๋ ์์ PK ์์(CLยทVยทBA)๊ฐ ์๋๋ผ ์กฐ์ง-๋ถ์ ์์ก ์์ฒด๋ฌผ๋ฆฌ๋์ด๋ผ |
| FDA/PopPK DB์์ ์ฝ๋ฌผ๋ณ๋ก ์ฐพ์ ์ ์๋ค. ๋ฏธ์ธํ๊ด ์๋ฆฌยทECM ํ์ฐยท๊ณต๊ทน์ด๋ก ์ผ๋ก ์ ๋. |
| |
| ๐ฉ ๋ฌผ๋ฆฌ๊ณต์/๋ฌธํ์ค์ธก (5๊ฐ): |
| sigma_ve, sigma_le : Curry-Michel ๊ณต๊ทน์ด๋ก + Rippe & Haraldsson two-pore |
| (two-pore eqs; ์๊ณต๊ทน~4nm/๋๊ณต๊ทน~24nm). ํ์ผ 3์ข
์ฌํ. |
| D_gel : Stokes-Einstein + ECM ๋ฐฉํด(Pluen 2001 PNAS, Ramanujan 2002 BiophysJ). |
| p_ve, p_le : ๋ฏธ์ธํ๊ด ๋จ๋ฐฑ์ง ํฌ๊ณผ๋ ์ค์ธก๊ณผ ์๋ฆฟ์ ์ผ์น |
| (์๋ถ๋ฏผ 1.8e-9, IgG 1.9~4.6e-9 m/s; Yuan 1993 PMID:8321142, PMC2363402). |
| โฌ ์กฐ์ง์์ ๊ณ ์ (์ฝ๋ฌผ ๋ฌด๊ด, 2๊ฐ): |
| Lp_ve : ์ฌ๋ ๋ฏธ์ธํ๊ด ์๋ฆฌ์ ๋๋ ๋ฒ์ ๊ณ ์ . Levick & Michel 2010. |
| K : ์ฌ๋ ๊ฐ์ง Darcy ํฌ๊ณผ๋ ๋ฒ์ ๊ณ ์ . Levick 1987, Q J Exp Physiol 72:409. |
| ๐ง ๊ธฐ์ ์ ๋ฌธํํ์ธ, ์ ๋ ์๋์์ ๋ฏธ๊ฒ์ฆ (3๊ฐ โ ํ์ผ ์ค์ธก ์์กด): |
| kf_m, kr_m : ECM-ํ์ด์๋ฃจ๋ก๋ ์ ์ ๊ธฐ ๊ฒฐํฉ์ ์ค์ฌ ๊ธฐ์ (J Pharm Sci 2020)์ด๋ |
| ์ฝ๋ฌผ๋ณ kon/koff ํ์ค๊ฐ ์์ โ ํ์ผ(250415) ์ค์ธก ์ฌ์ฉ. |
| k_decay : SC presystemic ๋ถํด. ๊ธฐ์ ยท๋ฐฉํฅ(ํฉํ์ด๋โ mAbโ)ยทBA๋ฒ์(52~80%)๋ |
| ๋ฌธํํ์ธ(PMC5613179; FcRn PBPK antibodies 2024 doi:10.3390/antib13030070; |
| FcRn๊ฒฐ์ BA 82.5%โ28.3% PMC6150636)์ด๋ ์ฝ๋ฌผ๋ณ ์๋์์ ์ค์ธก ์์ |
| โ MW ๋๋ฆฌ์ค์ผ์ผ. BA ์ญ์ฐ ์๋(์ํ ํํผ). |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| |
| ํ๋ผ๋ฏธํฐ ์์: |
| Lp_ve, K, p_le, sigma_ve, sigma_le, p_ve, D_gel, k_decay, kf_m, kr_m |
| """ |
|
|
| |
| _COMMON = dict(Lp_ve=8e-12, K=1e-15) |
|
|
| |
| |
| |
| |
| K_DECAY_PHYSICS = { |
| "INS": 3.000e-05, |
| "EXE": 3.925e-05, |
| "ETA": 2.000e-06, |
| "TRA": 2.051e-06, |
| "RIT": 2.070e-06, |
| "IgG": 2.000e-06, |
| "BOC": 2.056e-06, |
| } |
| |
| |
| |
| |
| CALIBRATION_BA = {"INS": 66, "EXE": 100, "ETA": 58, "TRA": 77, "RIT": 64, "IgG": 70, "BOC": 46.5} |
|
|
| DRUG_COMSOL = { |
| "INS": dict(MW=5.80, sigma_ve=0.1000, sigma_le=0.0000, p_ve=1.000e-08, p_le=7.200e-08, D_gel=9.400e-11, k_decay=1.494e-05, kf_m=1.450, kr_m=6.82, **_COMMON), |
| "ALB": dict(MW=66.50, sigma_ve=0.7000, sigma_le=0.0500, p_ve=1.000e-09, p_le=1.000e-08, D_gel=6.200e-11, k_decay=3.937e-06, kf_m=0.170, kr_m=4.77, **_COMMON), |
| "IgG": dict(MW=150.00, sigma_ve=0.9000, sigma_le=0.1000, p_ve=1.000e-09, p_le=1.000e-08, D_gel=4.500e-11, k_decay=4.102e-06, kf_m=0.480, kr_m=4.20, **_COMMON), |
| "EXE": dict(MW=4.20, sigma_ve=0.0927, sigma_le=0.0061, p_ve=1.171e-08, p_le=8.241e-08, D_gel=1.093e-10, k_decay=1.361e-06, kf_m=0.624, kr_m=11.14, **_COMMON), |
| "LYS": dict(MW=14.30, sigma_ve=0.2328, sigma_le=0.0159, p_ve=4.600e-09, p_le=3.700e-08, D_gel=7.628e-11, k_decay=1.415e-05, kf_m=1.451, kr_m=99.70, **_COMMON), |
| "OVA": dict(MW=45.00, sigma_ve=0.5168, sigma_le=0.0389, p_ve=1.920e-09, p_le=1.749e-08, D_gel=5.821e-11, k_decay=5.449e-06, kf_m=0.371, kr_m=6.36, **_COMMON), |
| "RIT": dict(MW=143.90, sigma_ve=0.9417, sigma_le=0.0954, p_ve=7.913e-10, p_le=8.182e-09, D_gel=4.909e-11, k_decay=6.238e-06, kf_m=0.296, kr_m=6.35, **_COMMON), |
| "BOC": dict(MW=145.10, sigma_ve=0.9440, sigma_le=0.0960, p_ve=7.863e-10, p_le=8.137e-09, D_gel=4.905e-11, k_decay=1.140e-05, kf_m=0.311, kr_m=5.99, **_COMMON), |
| "TRA": dict(MW=145.50, sigma_ve=0.9448, sigma_le=0.0962, p_ve=7.846e-10, p_le=8.123e-09, D_gel=4.904e-11, k_decay=2.666e-06, kf_m=0.517, kr_m=8.77, **_COMMON), |
| "ETA": dict(MW=149.99, sigma_ve=0.9531, sigma_le=0.0985, p_ve=7.667e-10, p_le=7.963e-09, D_gel=4.892e-11, k_decay=6.981e-06, kf_m=0.756, kr_m=13.40, **_COMMON), |
| } |
|
|
| |
| FILE_MEASURED = {"IgG", "INS", "ALB"} |
|
|
| PARAM_ORDER = ["Lp_ve", "K", "p_le", "sigma_ve", "sigma_le", |
| "p_ve", "D_gel", "k_decay", "kf_m", "kr_m"] |
|
|
|
|
| def get_comsol_params(drug="IgG"): |
| if drug not in DRUG_COMSOL: |
| raise KeyError(f"์ฝ๋ฌผ '{drug}' ์์. ์ง์: {list(DRUG_COMSOL)}") |
| return DRUG_COMSOL[drug] |
|
|
|
|
| def get_param_vector(drug="IgG"): |
| p = get_comsol_params(drug) |
| return [p[name] for name in PARAM_ORDER] |
|
|
|
|
| def is_file_measured(drug): |
| """ํ์ผ์์ ์ง์ ์ธก์ ๋ ์ฝ๋ฌผ์ธ์ง (vs ๋ฌผ๋ฆฌ๊ณต์ ๊ณ์ฐ).""" |
| return drug in FILE_MEASURED |
|
|
|
|
| def k_decay_physics(mw_kda): |
| """๋ฏธ์ง ์ฝ๋ฌผ์ฉ k_decay (MW ๋ก๊ทธ์ค์ผ์ผ ๋ฌผ๋ฆฌ ์ถ์ , 1/s). |
| BA calibration์ด ์๋ ์ฝ๋ฌผ์ ์ฌ์ฉ. ํฉํ์ด๋(~5kDa)~3e-5, mAb(~150kDa)~2e-6. |
| โ ๋ฌผ๋ฆฌ ์๋ฐฉํฅ ์ถ์ ๊ฐ โ BA ์ฌํ ๋ณด์ฅ ์ ๋จ.""" |
| import math |
| return 10**(-0.8326*math.log10(mw_kda*1000.0) + -1.3896) |
|
|
|
|
| def get_k_decay(drug, mw_kda=None): |
| """์ฝ๋ฌผ k_decay ๋ฐํ. ์๋ ค์ง ์ฝ๋ฌผ์ calibration(๋ชฉํ BA ์ฌํ)๊ฐ, |
| ๋ฏธ์ง ์ฝ๋ฌผ์ k_decay_physics(MW) ๋ฌผ๋ฆฌ ์ถ์ ๊ฐ.""" |
| if drug in DRUG_COMSOL: |
| return DRUG_COMSOL[drug]["k_decay"] |
| if mw_kda is None: |
| raise ValueError("๋ฏธ์ง ์ฝ๋ฌผ์ mw_kda ํ์") |
| return k_decay_physics(mw_kda) |
|
|
|
|
| if __name__ == "__main__": |
| print(f"{'Drug':5s} " + " ".join(f"{n:>9s}" for n in PARAM_ORDER) + " source") |
| for d in DRUG_COMSOL: |
| v = get_param_vector(d) |
| tag = "file" if d in FILE_MEASURED else "calc" |
| print(f"{d:5s} " + " ".join(f"{x:>9.2e}" for x in v) + f" [{tag}]") |
|
|