技术文章和通讯

构建可部署的应用程序(PK / PD)评估药物疗效

安妮塔Gajjala和Asawari Samant MathWorks


药代动力学/药效学(PK / PD)和系统药理学模型评估药物开发的重要工具。使用MATLAB®和SimBiology®,研究人员可以构建和描述此类模型在图形环境或使用编程工具。他们可以使用临床前数据数学描述的动态在活的有机体内新药候选人的行为,作出预测和推断人类基于模型模拟。他们可以分享这些模型,使临床医生,生物学家,和研究人员更好地评估各种剂量策略的有效性和安全性指标,探索假定场景在不同病人的亚种。

在某些情况下,它可能不是实际直接共享SimBiology模型。例如,你的同事可能缺乏,或不熟悉,MATLAB和SimBiology,或者您可能希望锁定的模型及其表征,这样其他用户不能无意中改变它。

MATLAB编译器™可以部署一个SimBiology模型作为独立的MATLAB应用程序的一部分。您可以构建一个自定义的图形界面,其他研究人员可以使用它来设置和运行模型模拟。然后你可以编译应用程序使研究人员能够使用它没有安装MATLAB或SimBiology。

使用一个肿瘤模型由科赫、Walz拉祜族,Schropp1作为一个例子,本文描述了一个工作流为模拟机械的开发和部署一个应用程序使用SimBiology PK / PD模型建立2

样例模型和可部署的应用程序可用下载

肿瘤模型概述

本文中的示例基于科赫等人肿瘤模型,用于描述肿瘤的生长随着时间的推移,在应对单一疗法与单一药物治疗,或涉及同时管理两种药物的联合治疗。

科赫等人的SimBiology实现肿瘤模型如图1所示3。描述这两种药物的血浆浓度是由独立的单舱PK模型与线性消除路线。肿瘤生长模型中肿瘤的隔间。衰变反应的速率取决于药物的血浆浓度和药物B和交互参数。当药物的血浆浓度下降为零,肿瘤肿瘤生长动力学描述的过程。肿瘤重量被定义为肿瘤生长和衰减状态的总和,即x1 + x2 + x3 + x4。

ConsultingSensitivityAnalysis_fig1_w.jpg
图1所示。SimBiology科赫等人的模型肿瘤生长模型。上图:独立的PK模型药物和药物b .底部:肿瘤生长模型用来模拟肿瘤大小的变化。

模型模拟能够分析各种剂量组合策略对肿瘤抑制的影响(图2)。

ConsultingSensitivityAnalysis_fig2_w.jpg
图2。情节的肿瘤重量和时间不同的疗法,在SimBiology模拟。联合治疗(红线)比不治疗更有效地抑制肿瘤生长或单方(灰色线)。

准备部署模型

使用MATLAB编译器为了分享SimBiology模型我们首先创建一个导出的模型4

我们SimBiology模型加载到MATLAB使用sbioloadproject

> > sbioloadproject (“TumorGrowthModel.sbproj”);%加载模型

我们使用出口保存创建导出SimBiology模型并将其保存为垫文件,将加载到已部署的应用程序。

> > exportedModel =出口(m1);%创建导出的模型> >保存modelFile。垫exportedModel%保存导出的模型

注意SimBiology模型导出一组有限的访问属性。此外,一些模型功能,包括反应,规则,和事件,不能改变在导出的版本。

建立一个接口模型

创建一个导出SimBiology模型后,我们构建一个定制的MATLAB接口。接口将使non-modelers和研究人员没有使用MATLAB来调整模型参数,应用剂量时间表,并运行模拟(图3)。

ConsultingSensitivityAnalysis_fig3_w.jpg
图3。MATLAB接口与SimBiology交互模型。

使用MATLAB图形用户界面的设计环境(指南)工具,我们摆出了从面板中拖动组件接口的布局区域(图4)。

ConsultingSensitivityAnalysis_fig4_w.jpg
图4。样品界面,用MATLAB指导创建工具,显示面板(左)和布局区域(中心)。

我们需要修改个人每个组件的属性。例如,我们需要更新标签属性的界面元素,这些元素可以很容易通过编程方式访问。使用一个命名约定,等<名称> _ <类型>,提高代码的可读性(图5)。

ConsultingSensitivityAnalysis_fig5_w.jpg
图5。编辑接口控制对象属性的属性检查器。标签属性细胞系的弹出菜单组件设置为CellLine_POPUP。

编程函数来访问导出的SimBiology模型

在MATLAB桌面工作流应用程序编码访问non-exported SimBiology模型。在准备部署,我们需要更新代码使用导出SimBiology模型。

第一步是表明MATLAB编译器,应用程序使用一个出口SimBiology模型。我们通过添加指令(通过% #函数编译指示)GUIDE-generated MATLAB文件,TumorGrowthInhibition.m,与导游FIG-file我们得救。

函数varargout = TumorGrowthInhibition(变长度输入宗量)% #函数SimBiology.export.Model

当最终用户与界面交互控制对象,如一个菜单或按钮,在您的应用程序特定的功能,或回调调用。接下来,我们将修改回调函数使用导出的模型。

在样例应用程序,我们将修改五回调模型准备部署:
TumorGrowthInhibition_OpeningFcn, CellLine_POPUP_Callback,InitialTumorWeight_EDIT_Callback Dosage1_EDIT_Callback,SimTumorGrowth_PUSHBUTTON_Callback

TumorGrowthInhibition_OpeningFcn是函数的示例应用程序。它加载并初始化剂量的模型,模型参数和其他属性在代码中。最初的(没有部署的)版本使用sbioloadproject在MATLAB和加载模型sbiodosegetdose创建或编辑现有剂量对象。

函数TumorGrowthInhibition_OpeningFcn (hObject eventdata处理,变长度输入宗量)% <剪> %创建和初始化剂——没有部署的版本%加载项目项目= sbioloadproject (“TumorGrowthModel.sbproj”);m1 = proj.m1;%得到剂量1d1 = getdose (m1,“药物”);%得到剂量2d2 = getdose (m1,“药物B”);% <剪>

对于部署的应用程序,我们负载从垫文件导出的模型(而不是使用sbioloadproject)。我们使用getdose更新现有的剂量对象附加到导出的模型由于新的剂量对象不能被添加到导出的模型。

函数TumorGrowthInhibition_OpeningFcn (hObject eventdata处理,变长度输入宗量)% <剪> %创建并初始化剂——部署版本%负载模型项目=负载(“modelFile.mat”);m1 = proj.exportedModel;%得到剂量1d1 = getdose (m1,“药物”);%得到剂量2d2 = getdose (m1,“药物B”);% <剪>

CellLine_POPUP_Callback当用户调用从弹出菜单中选择一个细胞系。这个函数负责设置细胞系适当参数根据用户的选择。在non-exported版本的模型中,这是通过选择合适的变体与一个调用sbioselect

函数CellLine_POPUP_Callback (hObject eventdata处理)% <剪> %设置适当的细胞系名称不变,没有部署的版本cellLine = sbioselect(模型,“类型”,“变异”,“名字”,cellLineName);% <剪>

SimBiology模型变体模型不能用于出口。对于导出的模型,我们使用ValueInfogetIndex获取和设置单独的模型参数,模型变体。

函数CellLine_POPUP_Callback (hObject eventdata处理)% <剪> %设置适当的细胞系参数——部署版本%获取当前L1和L0值L1 = model.ValueInfo (getIndex(模型,“L1”));L0 = model.ValueInfo (getIndex(模型,“10”));开关cellLineName情况下“细胞株1”10。InitialValue = 0.141;L1。InitialValue = 0.282;情况下《细胞株2》10。InitialValue = 0.142;L1。InitialValue = 0.284;情况下'细胞株3 '10。InitialValue = 0.143;L1。InitialValue = 0.286;否则%结束% <剪>

InitialTumorWeight_EDIT_Callback当用户调用指定一个初始肿瘤重量(w0)。就像CellLine_POPUP_Callback这个回调使用的,没有部署的版本sbioselect在模型中设置参数值。

函数InitialTumorWeight_EDIT_Callback (hObject eventdata处理)% <剪> %设定值的w0模型——没有部署的版本w0 = sbioselect(模型,“类型”,“参数”,“名字”,“w0”);w0。值= str2double (get (hObject,“字符串”));% <剪>

CellLine_POPUP_Callback,我们使用ValueInfogetIndex在导出的设置值SimBiology部署的应用程序模型。

函数InitialTumorWeight_EDIT_Callback (hObject eventdata处理)% <剪> %设定值的w0模型——部署版本w0 = model.ValueInfo (getIndex(模型,“w0”));w0。InitialValue = str2double (get (hObject,“字符串”));% <剪>

Dosage1_EDIT_Callback当用户调用指定剂量时间单位。这个回调更新剂量对象。最初这是通过设置TimeUnits时间间隔直接属性。

函数Dosage1_EDIT_Callback (hObject eventdata处理)% <剪> %设置剂量组对象的设置——没有部署的版本% TimeUnits和直接间隔dose1。TimeUnits = TimeUnits;dose1。间隔= str2double (get (handles.EveryValue1_EDIT,“字符串”));%将开始时间从每天新TimeUnitsdose1。开始时间= sbiounitcalculator (“天”、dose1.TimeUnits str2double (get(处理。StartTime1_编辑,“字符串”)));% <剪>

在已部署的应用程序中,TimeUnits是一个只读属性的剂量对象,所以它不能直接设置。我们使用sbiounitcalculator和剂量间隔的剂量转换现有的时间单位。

函数Dosage1_EDIT_Callback (hObject eventdata处理)% <剪> %设置剂量对象的设置——部署版本%不能设置TimeUnits;使用sbiounitcalculator转换时间间隔dose1。间隔= sbiounitcalculator (“天”、dose1.TimeUnits str2double (get(处理。EveryValue1_编辑,“字符串”)));%将开始时间从每天新TimeUnitsdose1。开始时间= sbiounitcalculator (“天”、dose1.TimeUnits str2double (get(处理。StartTime1_编辑,“字符串”)));% <剪>

SimTumorGrowth_PUSHBUTTON_Callback当用户单击调用吗模拟肿瘤的生长按钮。这个回调运行仿真与适当的参数值和计量计划计算肿瘤重量随时间进化。在没有部署的版本的模型中,它调用sbiosimulate

函数SimTumorGrowth_PUSHBUTTON_Callback (hObject eventdata处理)% <剪> % &模拟模型得到肿瘤轮廓,没有部署的版本sd = sbiosimulate(模型,(cellLine phiVar]、[dose1 dose2]);[currResults.Time, currResults。肿瘤]= selectbyname (sd,' w ');% <剪>

对于导出的模型,我们替换sbiosimulate模拟

函数SimTumorGrowth_PUSHBUTTON_Callback (hObject eventdata处理)% <剪> % &模拟模型得到肿瘤概要文件,部署的版本sd =模拟(模型、initValues [dose1 dose2]);[currResults.Time, currResults。肿瘤]= selectbyname (sd,' w ');% <剪>

设置报告生成

使用MATLAB报告生成器™我们生成一个文档(PK / PD)捕获模型的响应,模型参数,计量的时间表。我们的应用程序将生成一个PDF文档称为“myreport.pdf”。这个回调使用新的文档对象模型(DOM) API中可用MATLAB 4.0报告生成器(R2014b),它可以让我们以编程方式构建报告。

% - - - - - -执行在Export_PUSHBUTTON按钮按下。函数Export_PUSHBUTTON_Callback (hObject eventdata处理)% hObject句柄Export_PUSHBUTTON(见GCBO) % eventdata保留——在将来的版本定义MATLAB %处理结构处理和用户数据(见GUIDATA) % <剪> %生成报告% % % % % % % % % % % % %进行初始化导入DOM设置进口mlreportgen.dom。*;%与MATLAB编译器使其可用于部署makeDOMCompilable ();%创建文档rpt =文档(“myReport”,“pdf”);% % % % % %创建主要部分% % % % % % % <剪>h =标题(2“模拟联合治疗对肿瘤生长的影响”);b =边界();b。BottomStyle =“单一”;b。BottomColor =浅灰色的;b。BottomWidth =“1分”;h。风格= [h。风格{颜色(“DarkOrange”),b});追加(rpt, h);p = append (rpt,段(‘*使用MATLAB 4.0报告生成器自动生成(R2014b)。”));p。风格= {FontFamily (“天线”)、字形大小(“10 pt”)};% % % % % % % % % % % %创建设置部分% <剪>tableData = {…“细胞系:”,cellLineName {1};最初的肿瘤重量(g):“initialTumorWeight};表=表(大小(tableData, 1));追加(rpt、表);% % % % % %创建结果部分% % % % % % % <剪>hFig =图;%的肿瘤重量轴hax = copyobj(处理。TumorWeight_AXES hFig);集(hax,“单位”,“归一化”);集(hax,“位置”(0.15 - 0.30 0.7 - 0.6));%剂量轴hax = copyobj(处理。Dose_AXES hFig);集(hax,“单位”,“归一化”);集(hax,“位置”(0.15 - 0.15 0.7 - 0.15));%设置维度英寸集(hFig,“单位”,“英寸”);Pos =得到(hFig,“位置”);集(hFig,“位置”,(Pos (1:2) 6 5));集(hFig,“PaperPosition”[0 0 6 5]);%打印和附加报告打印(hFig“-dmeta”,“plot1.emf”);img =图像(“plot1.emf”);img。宽度=“6”;img。身高=“5”;追加(rpt,段落(img));% %视图报告关闭(rpt);rptview (“myReport”,“pdf”);% <剪>

在MATLAB环境下测试应用程序

我们执行TumorGrowthInhibition在MATLAB命令来启动应用程序。当应用程序启动时,我们指定细胞系,最初的肿瘤重量,和剂量时间表,然后单击模拟肿瘤的生长按钮开始仿真。

情节显示仿真结果四个不同的治疗(图6)。

ConsultingSensitivityAnalysis_fig6_w.jpg
图6。完成应用程序与仿真结果对联合治疗。治疗以红色突出显示代表两种药物联合治疗,假设没有药物相互作用。

我们点击出口按钮来生成PDF文件的接口显示结果(图7)。

ConsultingSensitivityAnalysis_fig7_w.jpg
图7。PDF报告显示仿真结果。

我们现在准备创建一个独立的应用程序,我们可以分发给研究人员没有MATLAB安装。

部署应用程序

以下MATLAB命令查找所有文件和路径依赖性和调用MATLAB编译器命令来编译TumorGrowthInhibition.m应用程序部署:

%,这假设所有其他适用的文件路径additionalFiles = [{“modelFile.mat”,“Summary.rpt”}……exportedModel.DependentFiles];%的这个例子中,我们以编程方式构建| mcc | %命令:mccCommand = [“mcc - m TumorGrowthInhibition.m”…sprintf (“——% s”,additionalFiles {:}));% | mcc |命令执行。eval (mccCommand)

编译完成后,生成一个可执行文件(. exe)的分布与MATLAB编译器运行时(MCR)。MCR是一组共享库,允许用户执行MATLAB编制MATLAB应用程序在计算机上没有安装。

摘要:应用工作流

您可以使用本文中概述的过程来部署一个你自己的SimBiology模型作为一个独立的应用程序。首先加载模型在MATLAB和创建一个导出SimBiology模型出口保存命令。与指导下,构建一个简单的界面,程序回调函数来访问SimBiology模型通过接口控制元素。最后,在MATLAB测试您的应用程序,用MATLAB编译器编译和测试生成的可执行文件在电脑上没有安装MATLAB。

1科赫,G。,Walz A., Lahu, G., and Schropp, J. (2009) Modeling of tumor growth and anticancer effects of combination therapy. Journal of Pharmacokinetics and Pharmacodynamics. 36:179-197.

2这个工作流程的第一步是构建和描述模型。这一步完成了科赫等,而本文概述的方法,它不详细描述。看到在SimBiology建造一个模型(25)更多地了解这一步。

3基本速度方程不是如图1所示。请参阅科赫等人或SimBiology下载应用程序对模型和实现的细节。

4SimBiology项目文件(* .sbproj)与MATLAB编译器不兼容。

关于作者

安妮塔Gajjala是MathWorks顾问。她专门为客户创建定制的MATLAB应用程序在生物技术和制药、能源、航空航天和国防等行业。安妮塔拥有从康奈尔大学电气和计算机工程学士学位和硕士学位从乔治亚理工学院电气和计算机工程。

Asawari Samant MathWorks高级应用工程师。她专注于数据分析和计算生物学应用在生物技术和制药行业。Asawari持有硕士学位特拉华大学的化学工程和化学工程学士学位化学研究所的技术,孟买,印度。

2014 - 92233 v00出版

查看相关文章的能力

为相关行业观点文章