You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ggplot2拟合SPR动力学数据的1:1 Langmuir模型?

用ggplot2结合pbm包拟合1:1 Langmuir模型的SPR动力学数据

步骤1:安装并加载依赖包

先确保所需工具包已安装,未安装则执行:

install.packages(c("pbm", "ggplot2", "dplyr", "tidyr", "purrr"))

加载包:

library(pbm)
library(ggplot2)
library(dplyr)
library(tidyr)
library(purrr)

步骤2:整理SPR数据

假设你导入的数据框名为spr_data,需包含以下核心列:

  • time:时间点数值
  • response:SPR响应信号值
  • concentration:小分子浓度(建议设为因子类型,如"32nM"、"8nM")

步骤3:用pbm拟合1:1 Langmuir模型

pbm包的fitLangmuir函数专门适配SPR的1:1结合解离模型,按浓度分组拟合:

# 按浓度分组执行拟合
fit_results <- spr_data %>%
  group_by(concentration) %>%
  do(fit = fitLangmuir(.$time, .$response, start = list(kass = 1e5, kdiss = 1e-3, rmax = 100)))

# 提取拟合预测值,整理为ggplot可用格式
pred_data <- fit_results %>%
  mutate(pred = map(fit, ~data.frame(
    time = .$data$time,
    fitted = .$fitted.values
  ))) %>%
  select(concentration, pred) %>%
  unnest(pred)

注:start参数需根据你的数据设置合理初始值,kass(结合速率)、kdiss(解离速率)、rmax(最大响应)可参考同类型实验的典型值调整,初始值不合理会导致拟合不收敛。

步骤4:用ggplot绘制原始数据+拟合曲线

模仿你提到的多浓度示例图样式(分色展示不同浓度,原始散点+拟合线):

ggplot() +
  # 绘制原始数据点
  geom_point(data = spr_data, aes(x = time, y = response, color = concentration), size = 1, alpha = 0.6) +
  # 绘制拟合曲线
  geom_line(data = pred_data, aes(x = time, y = fitted, color = concentration), linewidth = 1) +
  # 可选:添加结合/解离阶段分隔虚线
  geom_vline(xintercept = 你的结合阶段结束时间, linetype = "dashed", color = "gray50") +
  # 调整标签与主题
  labs(x = "Time (s)", y = "Response (RU)", color = "Ligand Concentration") +
  theme_bw() +
  theme(legend.position = "top")

关键补充

  • 1:1 Langmuir模型的核心逻辑:结合阶段响应随时间趋近饱和值,解离阶段响应指数下降,fitLangmuir会自动分阶段拟合两个过程
  • 若拟合不收敛,优先调整start参数的初始值,或检查数据是否包含完整的结合-解离阶段
  • 如需展示拟合参数(如解离常数KD=kdiss/kass),可从fit_results$fit中提取后用annotate()添加到图中

内容的提问来源于stack exchange,提问作者Shubham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:01:00