摘要:本課題使用MATLAB編寫計(jì)算藥代動(dòng)力學(xué)隔式模型及參數(shù)的函數(shù),并使用MATLAB提供的MATLAB Builder JA接口,將MATLAB函數(shù)轉(zhuǎn)化為Java類,通過(guò)J2EE開(kāi)發(fā)技術(shù)架構(gòu)網(wǎng)站并實(shí)現(xiàn)藥學(xué)數(shù)據(jù)分析功能。
關(guān)鍵詞:藥學(xué)計(jì)算;Java;MATLAB
目前國(guó)內(nèi)外的藥學(xué)計(jì)算軟件已經(jīng)基本能滿足藥學(xué)相關(guān)人員對(duì)藥學(xué)數(shù)據(jù)分析的基本要求,但是不足之處在于使用者必須安裝其軟件,有的軟件甚至需要學(xué)習(xí)者學(xué)習(xí)比較復(fù)雜的編程語(yǔ)言才可使用。如MATLAB繪圖功能比較強(qiáng)大,使用該軟件可以基本滿足使用者對(duì)藥學(xué)數(shù)據(jù)的處理要求,但是同樣需要學(xué)習(xí)MATLAB的編程語(yǔ)言,以及必須安裝該軟件?;赟aaS(軟件即服務(wù))的云計(jì)算思想,作為將來(lái)的重要發(fā)展領(lǐng)域的藥學(xué)計(jì)算網(wǎng)絡(luò)或許可以使使用者免去安裝軟件的麻煩。本研究在藥學(xué)計(jì)算網(wǎng)站建設(shè)中嘗試讓使用者只要連接網(wǎng)絡(luò),就可以借助于MATLAB的強(qiáng)大功能,實(shí)現(xiàn)部分藥學(xué)計(jì)算,而不必學(xué)習(xí)MATLAB的相關(guān)編程語(yǔ)言,也不需要安裝MATLAB軟件,并能隨時(shí)隨地的進(jìn)行藥學(xué)數(shù)據(jù)分析和處理[1]。
1網(wǎng)頁(yè)部分的設(shè)計(jì)
使用HTML超文本標(biāo)記語(yǔ)言制作web網(wǎng)頁(yè),并加入CSS層疊樣式表。應(yīng)用J2EE開(kāi)發(fā)技術(shù)架構(gòu)網(wǎng)站,將網(wǎng)頁(yè)邏輯、網(wǎng)頁(yè)設(shè)計(jì)和顯示分離。應(yīng)用MVC設(shè)計(jì)模式提高應(yīng)用的可擴(kuò)展性及可維護(hù)性。
Apache Tomcat服務(wù)器是一個(gè)免費(fèi)的Web 應(yīng)用服務(wù)器,運(yùn)行時(shí)占用的系統(tǒng)資源非常小,并且擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開(kāi)發(fā)網(wǎng)頁(yè)常用的功能,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。所以在中小型系統(tǒng)和并發(fā)訪問(wèn)用戶不是很多的場(chǎng)合下被普遍使用,因此本課題選擇Apache Tomcat 7.0作為本網(wǎng)站的服務(wù)器。
網(wǎng)站建立了簡(jiǎn)單的數(shù)據(jù)錄入界面,盡可能使操作變的簡(jiǎn)潔以方便非計(jì)算機(jī)專業(yè)人員使用。輸出數(shù)據(jù)時(shí),盡可能完整的將需要的參數(shù)及圖形輸出。應(yīng)用MYSQL6.0數(shù)據(jù)庫(kù)作為后臺(tái)數(shù)據(jù)庫(kù)存儲(chǔ)用戶信息、用戶輸入的數(shù)據(jù)等。使用MATLAB中的接口MATLAB Builder JA將一些能實(shí)現(xiàn)相關(guān)藥學(xué)分析的函數(shù)轉(zhuǎn)化為Java類,以便在網(wǎng)頁(yè)中調(diào)用,實(shí)現(xiàn)藥學(xué)數(shù)據(jù)分析功能,輸出常用的隔式模型的各種參數(shù),并實(shí)現(xiàn)將MATLAB生成的圖形嵌入到HTML中。
2隔式模型方程及參數(shù)
2.1靜脈注射一室模型的藥動(dòng)學(xué)方程及參數(shù)如下:
3 MATLAB編程及Java調(diào)用
3.1根據(jù)隔式模型編寫MATLAB程序 MATLAB以矩陣為基礎(chǔ),具有豐富的函數(shù)庫(kù)和很多線性和非線性擬合方法,如定義非線性方程函數(shù)inline和擬合曲線方程函數(shù)nlinfit、lsqnonlin、lsqcurvefit、curvefit、多項(xiàng)式擬合函數(shù)polyfit等,可用于藥物代謝動(dòng)力學(xué)線性和非線性曲線的擬合。如用極值函數(shù)fmin和fmins求血藥濃度的波谷濃度或峰濃度,函數(shù)quad、quads計(jì)算藥時(shí)曲線下面積AUC等。MATLAB提供了很多圖形控制函數(shù),如對(duì)數(shù)坐標(biāo)命令semilogy、線性坐標(biāo)命令plot等。
該程序與在MATLAB軟件里直接運(yùn)行的程序有所不同,為了使結(jié)果能在Java中處理并返回給客戶端,為MATLAB Web應(yīng)用而編寫的MATLAB函數(shù)的所有的輸出結(jié)果要通過(guò)函數(shù)的返回值返回。為了使網(wǎng)頁(yè)的圖形更生動(dòng),網(wǎng)頁(yè)中還引入了WebFigure庫(kù)。在Web中使用WebFigure可以在網(wǎng)頁(yè)中模擬MATLAB壞境的圖形的旋轉(zhuǎn)縮放等。在使用WebFigure時(shí),需要把WebFigure對(duì)象作為MATLAB函數(shù)的返回值返回[2]。根據(jù)模型編寫的部分MATLAB程序見(jiàn)圖1。
圖1 模型編寫的部分MATLAB程序
3.2構(gòu)建Java組件 在MATLAB命令窗口執(zhí)行\(zhòng)"deploytool\"命令來(lái)新建一個(gè)Deployment工程,其中項(xiàng)目類型選擇MATLAB Builder for Java,設(shè)置工程名、類名和包名,添加M文件,編譯并構(gòu)建java組件。相應(yīng)的Java類及Java與MATLAB聯(lián)用所需的類等也在此過(guò)程中建立起來(lái)。
3.3在JSP頁(yè)面中實(shí)現(xiàn)Java調(diào)用 MATLAB Builder for Java 對(duì)MATLAB Compiler的功能進(jìn)行了擴(kuò)展,允許用戶在MATLAB環(huán)境內(nèi)開(kāi)發(fā)算法,然后自動(dòng)將這些算法以組件的形式發(fā)布到Java應(yīng)用程序中。開(kāi)發(fā)者可以使用MATLAB內(nèi)的圖形和數(shù)據(jù)分析函數(shù)快速的開(kāi)發(fā)、測(cè)試程序。它可以將MATLAB的函數(shù)直接轉(zhuǎn)化成Java類,而其轉(zhuǎn)化的這個(gè)Java類,可以像其他的標(biāo)準(zhǔn)的Java類一樣被調(diào)用、集成到Java應(yīng)用程序中和網(wǎng)頁(yè)中使用。如果用戶在MATLAB中修改了算法,可以重新生成組件,用戶可以在任何時(shí)間修改這些在MATLAB中開(kāi)發(fā)的組件。
在發(fā)布這些組件之前,必須首先在服務(wù)器上安裝 MCR(MATLAB Compiler Runtime)。MCR是一組獨(dú)立的共享庫(kù),可用于在未安裝 MATLAB 的計(jì)算機(jī)上執(zhí)行編譯后的 MATLAB 應(yīng)用程序或組件。 MATLAB、MATLAB Compiler與 MCR 配合使用,可以快速、安全地創(chuàng)建和分發(fā)應(yīng)用程序或軟件組件。安裝完MCR后,用戶就可以在這臺(tái)服務(wù)器上使用由MATLAB Builder for Java生成的Java組件的web應(yīng)用程序。MCR包含在MATLAB Compiler中,提供對(duì)MATLAB語(yǔ)言所有特性的完整支持。
JSP頁(yè)面的頭部需要引用webfigures.tld文件,引用WebFigure庫(kù)javabuilder工具包及剛才編譯好的MATLAB類庫(kù)。引用代碼如下:
<%@ taglib prefix=\"wf\" uri=\"/WEB-INF/webfigures.tld\" %>
<%@ page import=\"draw.*\" %>
<%@ page import=\"com.mathworks.toolbox.javabuilder.webfigures.WebFigure\"%>
<%@ page import=\"com.mathworks.toolbox.javabuilder.*\" %>
4討論
本課題利用網(wǎng)絡(luò)計(jì)算的優(yōu)勢(shì),使藥學(xué)計(jì)算變的方便簡(jiǎn)潔,并能得到直接使用MATLAB時(shí)得到的圖形及數(shù)據(jù)結(jié)果(圖2所示),允許多人同時(shí)計(jì)算,而且并不需要安裝MATLAB軟件就能實(shí)現(xiàn)與使用MATLAB返回同樣的結(jié)果。但是,由于不能預(yù)知用戶想要實(shí)現(xiàn)的全部功能,只能完成一些常用計(jì)算的網(wǎng)絡(luò)實(shí)現(xiàn),因此編寫的程序比較固定,并不能完全像使用MATLAB一樣輸入指令而得到結(jié)果,網(wǎng)站的建設(shè)還有待進(jìn)一步研究。
圖2 得到的圖形與數(shù)據(jù)
參考文獻(xiàn):
[1]鄭波,董鴻曄.基于云計(jì)算的藥學(xué)網(wǎng)絡(luò)教學(xué)平臺(tái)的設(shè)計(jì)[J].中國(guó)醫(yī)藥指南,2013,18:730.
[2]馬景濤,鄭斌,張利益,等.Java Web網(wǎng)站應(yīng)用Matlab問(wèn)題解決方案[J].現(xiàn)代電子技術(shù),2013,06:56-58+62.編輯/申磊