工具笔记 / PK Simulation
摘要
PK Simulation Lab 的目的不是替代 NONMEM、Phoenix 或其他正式建模软件,而是补一个介于纸面公式和正式软件之间的空白:当需要快速展示一室、二室、三室 PK 曲线,解释给药方式、协变量、非线性消除、稳态指标或多方案差异时,传统工具往往过重,静态图又不够直观。
现在这个网站已经形成了一个比较完整的浏览器端 PK 模拟界面。它支持1/2/3 室模型、口服与静脉给药、线性/非线性/混合消除、多次给药、协变量开关、多方案对比、半对数切换、曲线关键点展示、参数与结果导出。整体定位很明确:它是一个用于理解、展示和沟通 PK 结构的小工具,而不是一个用于正式估计参数的建模平台。

它适合解决什么问题
做 PK 讨论时,经常有一个很具体但又不太好处理的问题:想解释概念时,正式软件太重;想快速试几个场景时,手算又太慢。比如:
- 给同事解释一室和二室模型的曲线差异;
- 快速展示静脉推注、静脉输注和口服吸收在浓度-时间曲线上的区别;
- 解释多次给药下的稳态指标,如 Cmax,ss、AUCss,τ、Css,trough;
- 演示协变量打开和关闭后,对 CL、V、Vmax 等参数的影响;
- 在开会时临时比较几个给药方案,而不是回去重新跑完整模型。
这个网站就是围绕这些场景设计的。它不追求“全”,而是追求把最常用、最容易讲清楚的部分做得足够直接。
它现在包含哪些内容
目前网站里已经具备以下几个模块。
第一,模型结构。 支持 1CMT、2CMT、3CMT,并把“房室数量”“给药方式”“消除方式”拆开,减少界面理解负担。用户不用先理解复杂术语,只要顺着界面设置即可。
第二,给药与参数设置。 支持口服、静脉推注、静脉输注;支持一级吸收、零级输入、Tlag;也支持线性、非线性和混合消除。对于教学和内部讨论,已经覆盖了大多数常见展示场景。
第三,协变量展示。 WT、eGFR、AGE、SEX 都做成了独立开关。这样做的目的不是追求真实世界的精细拟合,而是让协变量效应变得“可见”。打开某个协变量后,曲线如何改变,可以立刻看到。
第四,结果展示。 除了曲线本身,还保留了 Cmax、Tmax、AUC0-24、AUC0-INF、T1/2,以及多次给药条件下的 Cmax,ss、AUCss,τ、Css,trough。这一点对会中比较不同方案尤其有用。
第五,多方案比较。 可以把当前设置保存成方案,在同一张图上叠加,也能在表格里直接比结果。这比反复截图或手工抄参数有效得多。

最有价值的几个功能
如果只保留几个最值得留下来的点,下面几项最关键。
1. 曲线和参数在同一界面联动。 这是它最基础但也是最有用的能力。很多时候理解 PK 不是靠多看一个公式,而是靠“调一个参数,马上看到曲线怎么变”。
2. 多次给药与稳态指标。 单次给药的示意图很多,但一旦进入多次给药、给药间隔、稳态暴露这类问题,普通图示就不够用了。这个网站可以较快补上这一段。
3. 多方案对比。 对实际沟通非常重要。因为大多数讨论不是问“某条曲线是什么”,而是问“改成另一种方案后差多少”。
4. 中文界面。 这点看起来简单,但很重要。把大部分说明换成中文后,这个工具明显更适合教学、内部讨论和跨背景沟通。参数名保留英文即可,没有必要把所有内容都堆成英文界面。

它明确不做什么
这个工具的边界需要收得比较清楚。
- 它不做参数估计;
- 它不读取真实临床数据做拟合;
- 它不替代 NONMEM、Monolix、Phoenix 这类正式建模工具;
- 它不把浏览器端方程模拟包装成“正式结果”。
后续版本有意识地把 NONMEM 相关措辞从界面里拿掉,也是因为这个原因。这个工具应该诚实地呈现自己的能力边界:它适合做展示、教学、讨论、快速假设比较,但不应该假装自己在做更高一级的事情。
为什么适合放到个人网站上
它适合放到个人网站,而不是只留在本地,原因主要有三点。
第一,它有实际使用场景。 这不是一个单纯为了展示前端技术而做的页面。它服务的是一个具体问题:如何更方便地讲 PK。
第二,它能反映工作方法。 建模相关工作里,很多时候不是缺一个大而全的平台,而是缺几个顺手的小工具。这个网站恰好体现了这种偏务实的工作习惯。
第三,它有可展示性。 曲线、参数、方案切换都很直观,读者打开后不需要很长说明就能上手。这一点对博客内容很关键。博客上的东西不一定要复杂,但最好要有可读性和可操作性。

如果把它当作一个持续维护的小项目
从现在这个版本往后看,真正值得继续加的,不是再堆更多复杂模型,而是继续把展示和比较这件事做好。比如:
- 更规范的方案保存与导出;
- 更适合教学场景的注释模式;
- 更清楚的参数来源说明;
- 针对不同人群或不同药物场景的预设模板。
相比继续扩大“模型种类”,更值得投入的是把它打磨成一个更稳定、更容易解释、更容易复用的工具。
结语
PK Simulation Lab 不是一个“大项目”,但它解决的是建模讨论里反复出现的小问题:怎么把 PK 结构、给药方式和指标变化更直观地讲清楚。这类工具的价值不在于它有多完整,而在于它是否足够顺手,是否真的能减少沟通成本。
如果后面继续维护,它适合保持现在这个方向:轻、直接、边界清楚、面向真实使用场景。这比把它包装成一个看起来更宏大的系统,更符合它本来的用途。