集结经典应用案例<br/>用户成功案例解读<br/>分享项目中的实践方案
A classic case
集结经典应用案例
用户成功案例解读
分享项目中的实践方案
12/12
December 12, 2022

WinNonlin案例10:Phoenix友好的兼容性——Phoenix与R语言的链接

背景:

   PhoenixWinNonlin / Phoenix NLME / PhoenixIVIVC等Phoenix系列软件是专为参与药物研究与开发的科学家提供的强有力分析工具,R语言是一个免费、开源、通用型的统计分析与制图工具,使用R语言可以绘制出一些新奇复杂的图表,那有没有什么办法把两者结合起来呢?

   当然是有的,Phoenix作为一个完整的解决方案平台,拥有友好的兼容性,可以把R、SAS、NONMEM、SigmaPlot等第三方分析工具无缝的集成至Phoenix平台,使我们可以像使用Phoenix本身的一些分析工具一样使用它们。

   使用的软件:Phoenix8.1,R3.5.0

   所需授权:PhoenixWinNonlin / Phoenix NLME / PhoenixIVIVC等任意一种授权即可。


操作流程说明:

   1.首先建立Phoenix与R之间的链接,2.案例演示,2.1导入数据,2.2发送至R并映射数据,2.3执行,2.4结果,3.示例中R代码的注释,4.小结


链接设置:

   1.查找当前电脑中“R语言”安装的位置,比如:“C:\Program Files\R\R-3.5.0\bin\x64\R.exe”


9b367834292d51e0faf41752b775792c.png


   2.启动Phoenix软件

   3.点击“编辑(Edit)”菜单→“项(Preferences…)”,打开项对话框

   4.选择菜单中的“R”节点,指定“R语言”的安装位置。

   例如“C:\Program Files\R\R-3.5.0\bin\x64\R.exe”


fd18cfa4b23aad705f4fcc9160a0e611.png



案例演示:

   1.新建Phoenix项目,命名为“R01”

   2.鼠标右击“数据(Data)”文件夹,选择“导入(Import)”。


9ffee7a061f8017cb80f0ad6ce220f42.png


   3.通过导航窗导航至Phoenix安装目录中的“示例(Examples)”文件夹,例如“C:\Program Files (x86)\Certara\Phoenix\application\Examples\R”,选中所有文件,点击“打开”。


54be47241023d6684c1983a23c0bfd2d.png


    

   4.导入后可得到下图所示的结果。


1ff639bbd5caf909f2afcb39060f88f6.png


   5.鼠标右击“代码(Code)”文件夹中的“plotpredtable”文件,选择“发送至(Send To)”→“R”→“RScript”。


451b813166698e92487930700faa82d4.png

   

6.为“RScript”操作对象中的“Residuals”、“Eta”报表选择外部数据源,将原始数据中的“Residuals”、“Eta”表格作为他们的数据源,然后完成映射列表。


31e8513be300f7cd657b294086d13605.png


   7.点击执行按钮,执行“RScript”操作对象,执行过程中可以看到一闪而过的调用“R语言”产生的日志窗口。


7989f3d0ee395c36c9e9113c0da1c759.png


   8.结果,在结果子标签中,我们可以看到一列的结果:图表结果、文本结果和其他结果。


f236e97d0557f91a3d91ee41e7d9006e.png

   6dfef2763b4c6290d0afdc575850b12e.png


(Phoenix不支持中文,所以文本结果中的中文显示为问号,如果想查看正常的文本结果,鼠标右击文本结果,导出为“txt”格式,即可使用记事本查看到正常的结果)


案例中“R语言”代码的注释

   原始代码:


5572f27794eaf662014c36a38f877fa4.png

   

注释(下图中绿色的部分为注释):


6a5ab9cd98085dbb581cc3e52d28eba8.png


R语言代码文本:

   attach(Residuals) #WNL_IN ID IVAR TAD POPPRED INDPRED OBS IRES WTIRES WRES CWRES PCWRES CdfPCWRESCdfDV#

   attach(Eta) #WNL_IN Id nVnCl#

   lo = min(min(Residuals$POPPRED), min(Residuals$OBS) )

   hi = max(max(Residuals$POPPRED), max(Residuals$OBS) )

   jpeg("test.jpg")

   plot(Residuals$POPPRED,Residuals$OBS,

   xlab=" Population fitted values",

   ylab="Observed values",

   xlim=c(lo,hi))

   dev.off()

   jpeg("resvsfit.jpg")

   plot(Residuals$INDPRED,Residuals$WTIRES, 

   xlab="Individual subject fitted values",

   ylab="Standardized within-subject residuals",

   ylim=c(-hi,hi))

   dev.off()

   jpeg("qqnorm.jpg")

   qqnorm(Residuals$WTIRES, ylab="Standardized within-subject residuals")

   dev.off()


小结

   1.在Phoenix中“R语言”通过使用“attach(表格名) #列名1 列名2 ..列名n#”语句来读取Phoenix中的表格。

   2.代码执行完毕后,Phoenix会读取工作空间中的文件(图),把它们展示到结果列表中去。

   如想在“结果”标签中展示“表格”类型的结果,可使用如下语句:

   write.csv(Residuals,file = "foo.csv", row.names = F, quote = F)

   如想在“结果”标签中展示“文本”类型的结果,可使用如下语句:

   write.table(Residuals,file = "foo.txt", row.names = F, quote = F)


   到此本案例就结束了,通过该案例我们可以发现,在Phoenix中使用R非常的方便,可以提高R代码的可重用性,和健壮性,并可以在Phoenix中通过调用“R语言”来实现一些复杂而新奇的功能,是一种对Phoenix的有益补充。