Spaces:
Running
Running
Download drug_comsol_params.py from guminhong/Coef_SC_Model: direct link, hf CLI and curl.
- Browser
- Download file 12.6 kB
-
https://huggingface.co/spaces/guminhong/Coef_SC_Model/resolve/main/drug_comsol_params.py
- Command line
-
hf download hf://spaces/guminhong/Coef_SC_Model/drug_comsol_params.py
-
curl -L -o drug_comsol_params.py https://huggingface.co/spaces/guminhong/Coef_SC_Model/resolve/main/drug_comsol_params.py
12.6 kB
| """ | |
| 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 | |
| """ | |
| import math | |
| # ์ฝ๋ฌผ ๋ฌด๊ด ์กฐ์ง ๊ณตํต๊ฐ | |
| _COMMON = dict(Lp_ve=8e-12, K=1e-15) | |
| # ์ฝ๋ฌผ๋ณ COMSOL ํ๋ผ๋ฏธํฐ | |
| # IgG/INS/ALB: ํ์ผ ์ค์ธก(sigmaยทpยทD_gel) + ๋ฌธํ k_decay | |
| # ๊ทธ ์ธ 7์ข : ๋ฌผ๋ฆฌ๊ณต์(sigmaยทD_gelยทp) + ํ์ผ kf/kr + ๋ฌธํ k_decay | |
| # โโ k_decay ๋ฌผ๋ฆฌ๊ฐ(MW ์ค์ผ์ผ, BA ๋ฏธ๋ณด์ ) โ ๋ฏธ์ง ์ฝ๋ฌผ ํด๋ฐฑยท์ฐธ์กฐ์ฉ ๋ณด์กด โโ | |
| 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, | |
| } | |
| # ์ DRUG_COMSOL์ k_decay๋ ์๋ ๋ชฉํ BA๋ฅผ ์ฌํํ๋๋ก ๋ณด์ ๋ ๊ฐ(calibration)์ด๋ค. | |
| # โ ์ด๋ ์๋ฐฉํฅ '์์ธก'์ด ์๋๋ผ ์๋ ค์ง ๋ฌธํ BA์ '์ฌํ'๊ฐ์ด๋ค. LODO ๊ฒ์ฆ ๊ฒฐ๊ณผ | |
| # ๋ฌผ์ฑ(MWยทsigma_ve)์ผ๋ก ์์ธก ๋ถ๊ฐ(ํ๊ท ์ค์ฐจ 27.9%p)ํ๋ฏ๋ก, ๋ฏธ์ง ์ฝ๋ฌผ์๋ | |
| # k_decay_physics()(MW ๋ก๊ทธ์ค์ผ์ผ)๋ฅผ ์จ์ผ ํ๋ค. ์์ธ: pipeline_validation_report_ko.md | |
| 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), | |
| } | |
| # ํ์ผ์์ ์ง์ ์ธก์ ๋ ์ฝ๋ฌผ (์ค์ธก sigmaยทpยทD_gel, ์ ๋ขฐ๋ ๋์) | |
| 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) | |
| # โโ ๋ฏธ์ง ์ฝ๋ฌผ: ๋ถ์๋(MW)๋ง์ผ๋ก 10๊ฐ ํ๋ผ๋ฏธํฐ ์ถ์ โโโโโโโโโโโโโโโโโโโโโโโ | |
| # ๊ฒ์ฆ(2026-07): sigmaยทD_gel ๊ณต์์ ๋ฌผ๋ฆฌ์ ๋ 7์ข ์ ์๋ฒฝ ์ฌํ, p_ve/p_le๋ | |
| # ์๋ฆฟ์ ์ผ์น. kf_mยทkr_m์ MW์ ๋ฌด๊ดํ๋ฏ๋ก MW ์ต๊ทผ์ ๋ฑ๋ก์ฝ๋ฌผ์์ ์ฐจ์ฉํ๋ค. | |
| _MW_R_VE_NM = 6.22 # ๋ฏธ์ธํ๊ด ์๊ณต๊ทน ๋ฐ๊ฒฝ (Rippe & Haraldsson 1994) | |
| _MW_R_LE_NM = 24.5 # ๋ฆผํ๊ด ๋๊ณต๊ทน ๋ฐ๊ฒฝ (ํ์ผ 3์ข ์ค์ธก best-fit) | |
| _MW_KB = 1.380649e-23 # Boltzmann (J/K) | |
| _MW_T = 310.15 # 37ยฐC (K) | |
| _MW_ETA = 0.0007 # ECM ์ ๋ (Paยทs) | |
| def _solute_radius_nm(mw_da): | |
| """์ฉ์ง Stokes ๋ฐ๊ฒฝ (nm), Erickson 2009: a = 0.0515ยทMW_Da^0.392.""" | |
| return 0.0515 * mw_da ** 0.392 | |
| def _sigma_curry(mw_da, R_nm): | |
| """Curry-Michel ๋ฐ์ฌ๊ณ์ ฯ = 1โ(1โ(a/R)ยฒ)ยฒ.""" | |
| r = _solute_radius_nm(mw_da) / R_nm | |
| return 1.0 - (1.0 - r * r) ** 2 if r < 1.0 else 1.0 | |
| def _d_gel_stokes(mw_da): | |
| """Stokes-Einstein ์์ ํ์ฐ ร ECM ๋ฐฉํด์ธ์ (mยฒ/s).""" | |
| r_nm = _solute_radius_nm(mw_da) | |
| D = _MW_KB * _MW_T / (6.0 * math.pi * _MW_ETA * r_nm * 1e-9) | |
| f = 0.376 * math.exp(0.144 * r_nm) # ECM ๋ฐฉํด(๊ฐ์)์ธ์ | |
| return D * f | |
| def _p_interp_from_anchors(mw_da, key): | |
| """IgG/INS/ALB ์ค์ธก 3์ ์ log(MW)โlog(p) ์ ํ๋ณด๊ฐ (์ธ์ฝ์ ์๋ ๊ณ ์ ).""" | |
| anc = sorted((DRUG_COMSOL[d]["MW"] * 1000.0, DRUG_COMSOL[d][key]) | |
| for d in ("INS", "ALB", "IgG")) | |
| xs = [math.log10(m) for m, _ in anc] | |
| ys = [math.log10(p) for _, p in anc] | |
| x = math.log10(mw_da) | |
| if x <= xs[0]: return 10 ** ys[0] | |
| if x >= xs[-1]: return 10 ** ys[-1] | |
| for i in range(len(xs) - 1): | |
| if xs[i] <= x <= xs[i + 1]: | |
| t = (x - xs[i]) / (xs[i + 1] - xs[i]) | |
| return 10 ** (ys[i] + t * (ys[i + 1] - ys[i])) | |
| return 10 ** ys[-1] | |
| def _nearest_mw_drug(mw_kda): | |
| """MW(kDa)๊ฐ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ฑ๋ก ์ฝ๋ฌผ ์ด๋ฆ.""" | |
| return min(DRUG_COMSOL, key=lambda d: abs(DRUG_COMSOL[d]["MW"] - mw_kda)) | |
| def params_from_mw(mw_kda, kf_m=None, kr_m=None, return_detail=False): | |
| """๋ถ์๋(kDa)๋ง์ผ๋ก ๋ฏธ์ง ์ฝ๋ฌผ์ COMSOL 10๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ์ ํ๋ค. | |
| ์ถ์ ๋ฐฉ์: | |
| Lp_ve, K : ์กฐ์ง ์์ (_COMMON, ์ฝ๋ฌผ ๋ฌด๊ด) | |
| sigma_ve/sigma_le : Curry-Michel ๊ณต๊ทน์ด๋ก (MW โ Stokes ๋ฐ๊ฒฝ โ ฯ). ๊ฒ์ฆ ์๋ฃ. | |
| D_gel : Stokes-Einstein ร ECM ๋ฐฉํด์ธ์. ๊ฒ์ฆ ์๋ฃ. | |
| p_ve, p_le : IgG/INS/ALB ์ค์ธก log(MW) ๋ณด๊ฐ (์๋ฆฟ์ ์ ๋ขฐ). | |
| k_decay : k_decay_physics(MW) ๋ก๊ทธ์ค์ผ์ผ ๋ฌผ๋ฆฌ์ถ์ (๊ทผ์ฌ, BA ๋ฏธ๋ณด์ ). | |
| kf_m, kr_m : MW๋ก ์์ธก ๋ถ๊ฐ โ ์ธ์๋ก ์ฃผ๋ฉด ๊ทธ ๊ฐ, ์์ผ๋ฉด MW ์ต๊ทผ์ | |
| ๋ฑ๋ก์ฝ๋ฌผ์ ๊ฐ์ ์ฐจ์ฉ. | |
| ์ธ์: | |
| mw_kda : ๋ถ์๋ (kDa) | |
| kf_m, kr_m : ์๋ฉด ์ง์ ์ง์ (None์ด๋ฉด ์ต๊ทผ์ ์ฝ๋ฌผ์์ ์ฐจ์ฉ) | |
| return_detail : True๋ฉด (vector, detail dict) ๋ฐํ | |
| ๋ฐํ: | |
| PARAM_ORDER ์์์ list[10] (return_detail=True๋ฉด (list, dict)) | |
| """ | |
| mw_da = mw_kda * 1000.0 | |
| ref = _nearest_mw_drug(mw_kda) # kf_m/kr_m ์ฐจ์ฉ์ | |
| kf = DRUG_COMSOL[ref]["kf_m"] if kf_m is None else kf_m | |
| kr = DRUG_COMSOL[ref]["kr_m"] if kr_m is None else kr_m | |
| p = dict(_COMMON) | |
| p["sigma_ve"] = _sigma_curry(mw_da, _MW_R_VE_NM) | |
| p["sigma_le"] = _sigma_curry(mw_da, _MW_R_LE_NM) | |
| p["D_gel"] = _d_gel_stokes(mw_da) | |
| p["p_ve"] = _p_interp_from_anchors(mw_da, "p_ve") | |
| p["p_le"] = _p_interp_from_anchors(mw_da, "p_le") | |
| p["k_decay"] = k_decay_physics(mw_kda) | |
| p["kf_m"] = kf | |
| p["kr_m"] = kr | |
| vec = [p[k] for k in PARAM_ORDER] | |
| if return_detail: | |
| detail = dict(p) | |
| detail["_kfkr_source"] = ("user" if kf_m is not None else ref) | |
| detail["_mw_kda"] = mw_kda | |
| detail["_solute_radius_nm"] = _solute_radius_nm(mw_da) | |
| return vec, detail | |
| return vec | |
| 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}]") | |