关于 pkpd-modeling
pkpd-modeling 是用于探索性药代动力学和药效学分析的研究技能,涵盖浓度-时间曲线、暴露-反应及给药方案模拟。它提供命令行工作流,并记录假设与临床使用限制。
主要功能
- 01非房室分析
- 02结构与群体 PK 工作流
- 03暴露-反应分析
- 04给药方案模拟
- 05数据集验证与诊断
适用场景
- 01汇总浓度-时间数据
- 02探索暴露-反应关系
- 03为研究模拟给药方案
- 04规划生物等效性分析
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ k-dense-ai/ scientific-agent-skills --skill pkpd-modeling安装后在 Claude Code 中输入/pkpd-modeling确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/nca-reporting-checklist.mdpopk-analysis-plan.mdreferences/antimicrobial-and-tdm.mdbioequivalence.mddataset-standards.mdddi-and-qt.mdnca-conventions.mdpbpk.mdpd-and-exposure-response.mdpopulation-pk.mdregulatory-guidance.mdsoftware-ecosystem.mdsource-ledger.mdspecial-populations.mdstructural-models.mdtmdd-and-biologics.mdscripts/_common.py_models.pyallometry_and_fih.pybioequivalence.pycheck_popk_dataset.pyddi_static.pyexposure_response.pyfit_compartmental.pynca.pysimulate_regimen.pytdm_bayes.py详细介绍
药代动力学与药效学建模
何时使用
用于浓度-时间分析、结构与群体 PK 工作流、暴露-反应、给药方案模拟、生物等效性规划、DDI 筛查以及研究性 TDM 计算。 2.0 版拒绝不支持的单次重复/比例化 BE 以及口服/输注闭式汇总; 模型目标剂量与最低 HED 输出标签取代了临床推荐标签。 本技能计算探索性量并记录假设;它不确立 临床安全性、不推荐患者剂量,也不认证监管申报。
先固定问题与约定
- 记录待测物(游离/总药物、代谢物或复合物)、基质、给药史、实际时间、 单位、人群以及分析方法/LLOQ。当剂量以 mg 计、体积以 L 计、时间以 h 计时,浓度 为 mg/L,CL 为 L/h。拟合前先换算;mg/L 等于微克/mL,而非 ng/mL。
- 预先指定暴露指标:AUC(0-t)、AUC(0-inf) 与稳态 AUC(0-tau) 各不相同。 说明 BLQ 处理、缺失数据规则、终末相选择以及观测/预测 Clast。
- 将结构模型、残差变异模型与协变量模型分开。收敛和较小的残差 平方和并不能确立可识别性。检查敏感性秩、局部不确定性、 相关性、合理边界、多起点以及(必要时)剖面似然。
- 使验证与预期用途相匹配。分析回收率与合成测试可验证数值 行为;它们不能验证患者人群中的模型,也不能确立临床证据。
环境与输出
随附脚本已在 Python 3.13 上使用 NumPy 2.5.3 和 SciPy 1.18.1 运行验证。 使用隔离环境;运行时无需网络、凭据或专有引擎。
cd skills/pkpd-modeling/scripts
所有脚本均接受 --format table|tsv|json。table/TSV 数据输出到 stdout,注释/发现输出到
stderr;JSON 在 stdout 中包含全部四个组成部分,并对不可用的诊断使用 null。
退出码 0 表示无发现,1 表示有发现,2 表示输入无效。数据集验证默认
在错误时失败;--strict 也会在警告时失败。即使退出码为 0 也应检查发现。
以下使用 CSV 输入的命令为调用模板;请提供所示列以及
合适的研究设计。tests/pkpd-modeling/ 下的测试使用小型
合成夹具执行数值路径。不要将示例剂量或目标照搬到临床诊疗中。
工作流
1. 非房室分析
python3 nca.py -i profile.csv --dose 100 --route extravascular --partial-auc 0-24
输入:id,time,conc(id 可选),以及可选的 dose,tau,tinf,blq。时间必须非负,且在每个 profile 内互不相同。BLQ、<LLOQ、空白浓度或 blq=1 会调用所选的 BLQ 约定;因此空白并非通用的缺失样本代码。请单独预处理缺失样本。--blq-rule zero|half-lloq|missing 全局适用,而非按位置分别适用。
选择 --auc-method linear|linup-logdown|log。log 规则接受正的递增或递减端点,对零值/相等值回退为线性。AUC 从第一个保留样本开始;不添加给药时间外推。因此较晚的首个采血点会使报告的 CL/体积产生偏倚;请检查该发现。部分 AUC 边界必须位于采样范围内。
该辅助工具的自动 lambda_z 选择从 Tmax 之后严格满足至少三个正值、非 BLQ 点开始向后延伸,仅当调整 R² 改善超过 0.0001 时才保留更大的窗口。这不是 Phoenix Best Fit,后者在其 0.0001 容差内偏好更长的窗口。手动窗口同样要求至少三个 Tmax 后点以及递减斜率。IV bolus C0 在其他软件中可能符合条件;该辅助工具有意排除 Tmax。
检查所选时间范围、以半衰期计的跨度、残差和外推百分比。20% 外推、0.8 调整 R² 和两个半衰期这些标记是筛查惯例,而非普遍接受规则。对于提前结束的手动尾部,预测的 Clast 在实际最后一个可定量时间点评估。明确报告 AUCinf_obs 或 AUCinf_pred。
--tau 要求采样单个区间 [0,tau],并假定已证明稳态。它报告 AUCtau、Cavg 和 CLss(/F),不提供单次给药的 AUCinf/CL/Vz/Vss,并发出关于该假定的发现。良好的终末回归本身无法证明稳态。
参见 NCA 约定 和 报告清单。
2. 个体房室拟合
python3 fit_compartmental.py -i profile.csv --dose 500 --route iv-bolus --compare 1cmt,2cmt,3cmt
输入:time,conc,可选 id 用于分别进行个体拟合。这不是 NLME 估计。口服拟合识别表观 CL/F 和体积/F;若无外部信息,F 无法分离。正参数在对数尺度上拟合。默认的 1/y2 使用观测浓度,当噪声较大的低观测值获得极端权重时可能使估计产生偏倚。请与 uniform/其他有依据的固定权重进行比较;依赖预测值的 WLS 选项被拒绝,因为完整似然需要被省略的方差归一化项。
加权 SSR 的 AIC/BIC 评分以相同记录和固定权重为条件。房室 F 的 p 值是探索性的:缺失的房室位于边界上,且冗余参数无法识别,因此名义 F 检验不是确证性的房室选择规则。优先考虑残差检查、生理合理性、敏感性/profile 检查以及合适的 bootstrap 或基于模拟的比较。秩亏拟合无法返回可靠的协方差。
非随机的残差符号可能反映结构、序列相关或时间错误。游程检验无法确定原因。局部 Gauss-Newton 区间不是 profile 似然。 参见 结构模型。
3. 群体 PK
python3 check_popk_dataset.py -i nmdata.csv --covariates WT,CRCL --time-varying WT
保持数值 ID 连续,保留实际事件顺序,并使用来自同一受试者或场合起点的 TIME,将 TAD 作为单独派生变量。不要在每次给药后重置 TIME。
NONMEM RATE=-1 使用建模的 rate Rn;RATE=-2 使用建模的 duration Dn。
恒定稳态输注(AMT=0、正 RATE、SS)是正 II 规则的一个例外。
切勿依赖非数值 DV 解析来编码删失。使用数值 DV 加 BLQ/LLOQ 标志,并在模型中指定似然。同一时间的给药前观测应位于给药之前;给药后观测应位于给药之后。不要编造微小偏移来掩盖未知的事件顺序。
该检查器是部分模式/合理性检查,不是 NM-TRAN 模拟器。高级 SS/MDV/reset、安慰剂或纯 PD 数据集需要针对具体模型的审查。使用 NONMEM、Monolix、nlmixr2 或其他合格的 NLME 引擎进行估计,而不是使用个体最小二乘辅助工具。 参见群体 PK、数据集标准和分析计划。
4. 给药方案模拟
python3 simulate_regimen.py --cl 5 --v 40 --dose 500 --interval 12 --n-doses 10 --steady-state
python3 simulate_regimen.py --cl 5 --v 40 --dose 500 --interval 12 --n-doses 10 --simulate 2000 --omega-cl 0.35 --omega-v 0.25 --target-trough 4
线性时不变 PK 允许叠加;Michaelis-Menten PK 需要 ODE 积分。
给药事件和输注边界会分割 ODE 求解。未实现非线性滞后和混合途径输入。闭式 --steady-state 和 --compare 目前仅接受 IV 推注;请使用其实际 ka/F/duration 模拟口服/输注给药方案,并检查各周期之间的收敛性。模拟的最终区间不一定是稳态。
Monte Carlo omega 输入是 CV 分数,内部转换为对数 SD;CL 和 V 抽样相互独立。相比之下,TDM 的 omega 输入是对数 SD。目标达成取决于目标、群体模型、相关性、协变量、参数不确定性和场合间变异。遗漏的变异性可能提高或降低达成率。测定噪声不是真实暴露变异性。
5. 暴露-反应与 QT
python3 exposure_response.py --emax -i er.csv --sigmoid
python3 exposure_response.py --cqtc -i qt.csv --cmax 250
输入:exposure,response。Emax 拟合会标记未观测到的平台和协方差不足。
Logistic 拟合要求两种结局、暴露变异,且不存在完全/准完全分离。
这些是独立观测模型;重复样本需要合适的联合/混合模型。
即使在随机剂量研究中,暴露也是观察性的:评估清除率/预后混杂、时变暴露和暴露估计不确定性。
C-QTc 输入必须已经是安慰剂校正后的相对基线变化。筛选模型报告指定暴露下的双侧 90% CI;上界低于 10 ms 是相关的 E14 排除标准,同时还需具备充分的设计、暴露覆盖和模型评估。普通回归不足以进行监管性的重复测量分析,也不能确定不存在心律失常风险。参见 PD/ER。
6. 生物等效性
python3 bioequivalence.py -i be.csv --design 2x2 --metric AUC
python3 bioequivalence.py --power --cv 0.30 --gmr 0.95 --target-power 0.80
输入:subject,sequence,period,treatment,value;2x2 需要完整的 RT/TR 序列、周期 1/2,
且每个受试者恰好一个 T 和一个 R。平行 ABE 需要每个受试者一个独立值。
限度是预先设定的;--nti 仅更改限度,并不实现 FDA NTI 分析。
重复/参考标度分析和重复检验效能会被此辅助工具拒绝。它们需要 经周期/序列调整的参考方差、处理对比以及设计特定的协方差。 请使用 FDA 2026 年 5 月统计 BE 指南和经过验证的设计特定软件(例如 replicateBE、 PowerTOST);对受试者重复值取平均并不能消除任意的周期效应。 保留的标量 ABEL/RSABE 函数是算术辅助工具,并非对原始重复数据的分析。
对于平衡 2x2、CV 0.30、GMR 0.95 和 80% 检验效能,数值检验效能计算得出 N=40 可评估受试者。它使用有限分位数网格,而非精确的 Owen-Q 例程。检查对 CV/GMR 的敏感性 并针对脱落进行膨胀。参见 BE 指南。
7. 标度与首次人体导向
python3 allometry_and_fih.py --scale --cl 5 --volume 40 --weight-from 70 --weight-to 6 --pma-weeks 44
python3 allometry_and_fih.py --fih --noael rat=50,dog=10 --safety-factor 10
体型与成熟度是分开的,但固定异速标度和通用成熟度曲线均非对每种药物都有效。 默认的 TM50/Hill 值仅作示例;请为通路特异性个体发生、器官功能和参考人群成熟度提供依据。即使此辅助工具 仅将成熟度乘数应用于清除率,分布容积可能仍需发育协变量。
NOAEL/Km/安全系数算术给出一个示例性 MRSD。临床起始剂量选择
整合了物种相关性、暴露、药理学活性剂量、MABEL 和不确定性。
--mabel 仅反演一个简单的 Emax/平衡占据曲线,并返回剂量率。
功能性 EC50 通常不是结合 Kd;浓度乘以 CL 是量/时间,而非初始
推注剂量。参见 特殊人群。
8. 药物相互作用筛查
python3 ddi_static.py --basic --ki 0.5 --imax 2 --fu 0.05 --dose 0.4
python3 ddi_static.py --msm --ki 0.5 --imax 2 --fu 0.05 --dose 0.4 --fm 0.9 --fg 0.7
使用匹配的量/L 单位:对于微摩尔浓度,以微摩尔给出剂量。Ki/KI/EC50 和 转运体 IC50 必须使用适当的游离测定基础。ka、kinact 和 kdeg 以每分钟计; 肝血流 97 L/h 和肠上皮细胞血流 18 L/h 是固定的示例性成人默认值。
ICH M12:TDI 使用 5 × Cmax,u;诱导的基本动力学模型使用 10 × Cmax,u。OAT1/3/OCT2
使用 0.1;MATE1/2-K 和全身性 P-gp/BCRP 使用 0.02;肠道口服 P-gp/BCRP 使用剂量/250 mL
且比值截断值 10。选择 --transporter renal|mate|systemic-efflux|intestinal|hepatic-uptake。
测得的 fu <0.01 需要证明可靠性;否则 CLI 使用 0.01。仅在具备该证据时
使用 --fu-validated。
MSM 使用入口/肠上皮细胞浓度,而非基本模型的肠腔浓度。其 合并抑制上限为 1/[(1-fm)Fg];1/(1-fm) 仅为肝脏组分。应分别以及 联合考察抑制和诱导,以避免相互抵消掩盖风险。 输出是条件性筛查结果;阴性信号不能排除模型之外的机制, 也不能弥补不确定的输入。参见 DDI/QT。
9. 研究治疗药物监测
python3 tdm_bayes.py --model vancomycin-adult --weight 80 --crcl 75 --dose 1500 --interval 12 --doses-given 20 --level [email protected] --level 42@2 --target-auc24 500
浓度水平表示为最新一次给药开始后若干小时的浓度@小时。该辅助函数假设给药为相同、等间隔的静脉给药;默认 20 次给药无法达到稳态。它无法表示漏服、肾功能变化或不规则给药史。请使用合适的基于事件的模型。
MAP 估计将先验与包含对数方差项的高斯似然结合。单个浓度无法独立识别 CL 和 V;先验提供了缺失的信息。内置的万古霉素先验仅为示例说明。输出没有后验区间,不得被描述为经过验证的个体化剂量建议。模型目标剂量计算与临床选择是分开的。400–600 目标是指严重 MRSA 情况下的总药物 AUC24,单位为 mg·h/L,假设肉汤微量稀释 MIC 为 1 mg/L,并非通用的游离 AUC 目标。参见 antimicrobial/TDM。
软件、来源与专家参考
Pharmpy 2.2.0 转换在本地执行;它要求 Python >=3.12(不包括 3.14.1)。set_unit 已变为 annotate_unit;转换会返回新模型,必须进行赋值。授权的 NONMEM/Monolix 和 R/PBPK 工作流是文档验证的参考方向,并非已执行的临床工作流。ICH M13B 现为 EMA Step 5(2026 年 9 月通过,2027 年 3 月生效),M15 自 2026 年 7 月起在欧盟生效。请针对每种预期用途核查各地区的实施情况。
- 软件生态系统和来源账本
- 监管指南
- TMDD 与生物制品:分析物映射与可识别性
- PBPK:使用背景、模型验证与敏感性分析
引用 Scientific Agent Skills
本技能属于 K-Dense 的 Scientific Agent Skills。如果它对某篇稿件、报告、演示或代码发布有实质性贡献,请将该论文添加到参考文献或软件部分,并告知用户你已这样做:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
请始终引用当前版本。DOI 和 https://arxiv.org/abs/2609.00065 会解析到最新的 arXiv 版本,因此切勿附加诸如 v1 之类的版本后缀。当有网络访问时,在撰写参考文献之前获取 https://arxiv.org/abs/2609.00065(或
https://export.arxiv.org/api/query?id_list=2609.00065),并从该记录中获取作者列表、年份和版本。如果该记录列出了期刊参考文献或出版商 DOI,请改为引用已发表的版本。