首页 > 范文大全 > 正文

基于JSP语言实现半数致死量的网络计算

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于JSP语言实现半数致死量的网络计算范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:基于jsp语言,编写半数致死量(LD50)的Bliss法计算程序,实现LD50网络化计算的可视化操作;利用Eclipse作为JSP的开发平台,tomcat作为应用服务器,mysql做后台数据库,根据mvc设计模式,Bliss算法,编写LD50的计算程序;结果:使用该程序对文献数据进行了计算,结果正确,并可以自动描绘回归曲线及校正曲线图;采用该程序进行以Bliss法计算LD50的是可行的,且操作简便,效率高,程序算法可靠有效。

关键词:急毒性试验;LD50;JSP;网络计算;药理学计算;Bliss 算法

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2011)10-2284-03

半数致死量(LD50)是指在一定实验条件下,引起半数实验动物死亡的用药剂量。LD50是描述药物安全性的重要指标之一,在药理学、毒理学、微生物学等领域中,有着广泛的应用。LD50的计算方法有近30种之多,目前测定LD50的方法主要有以下几种:1)简化概率法。此法虽然比较简便,但该法未经加权回归,计算结果受作图者的主观经验影响大,结果不够精确;2)改进寇氏法。此法虽较简便,但对数据要求苛刻,只有数据曲线呈正态分布,最低剂量反应率为0%,最高剂量反应率为100%,才能得到精确结果,应用范围有限;3)Bliss法。该法虽然计算繁琐复杂,但计算非常精确,是目前最可靠的LD50测定方法,该法也是我国卫生部规定的测定新药LD50必须采用的方法。[1]

由于使用Bliss法计算LD50步骤繁杂,一组数据如果使用普通电子计算器计算,大约耗时一天,且容易出错。为了提高Bliss法计算LD50的效率,早在1986年,陈俊秀等人使用可编程的Casio fx 180P和Sharp EL 5100S计算器,编写出可以在10分钟内使用Bliss法计算出LD50的程序[2]。随着电子计算机的普及,又先后出现使用VB编程语言、SAS统计软件和SPSS统计软件等编写使用Bliss法计算出LD50的程序[3],这些计算机程序的出现,虽然给使用Bliss法计算LD50的工作者带来了便捷,但是由于这些程序依赖于相关的软件,不便于初学者使用,也不利于推广。鉴于目前互联网和网络技术已十分成熟,利用网络平台实现LD50的网络化计算十分可行,这将解决以往单机版LD50计算程序给实验工作者带来的不便。

1 LD50计算程序的实现

1.1 Bliss算法实现

首先将给药剂量转换为对数剂量,死亡率通过公式转换为作业概率单位Yem。公式为:

其次通过加权回归法将对数剂量与作业概率单位线性回归。并计算出希望概率单位。将希望概率单位进行校正,得到校算概率单位,并与希望概率单位进行比较,若相差大于0.1则使用校算概率单位进行再一次校正,直到两者相差均小于0.1。由于校正计算时需要查《作业概率单位的极大值、极小值、全距与权重系数表》。为了能够迅速查找所需值,先将此表数据写入MySQL数据库中,校算时通过JDBC连接数据库查询数据。

再将对数剂量对校算概率单位线性回归,将反应率为0.5时的概率单位(Y=5)带入回归方程,即得LD50对数值(m)。m的95%可信限计算方法:

m的95%可信限:m±1.96SLD50

算法流程如图1所示。

1.2 关键代码

public static void cal () {

double max;//判断多次回归是否满足条件的参数

double a,b;//回归方程的斜率、截距

double aveX,aveY,Lxx,Lxy;//回归方程的参数

int i, t;

double m;

/**数据库使用变量*/

ResultSet sqlResult;

String dbURL;

dbURL="jdbc: sqlserver: //localhost";

/**计算x[]*/

//(代码略)

/**计算Yem*/

(代码略)

/**X,Yem回归*/

t=0;

aveX=0;

aveY=0;

Lxx=0;

Lxy=0;

for (i=0; i

if (p[i]>0 && p[i]

t++;

aveX+=x[i];

aveY+=Yem[i];

}

}

aveX=aveX/t;

aveY=aveY/t;

for (i=0; i

if (p[i]>0 && p[i]

Lxx=Math.pow ((x[i]-aveX), 2);

Lxy=(x[i]-aveX)*(Yem[i]-aveY);

}

}

a=Lxy/Lxx;

b=aveY-a*aveX;

/**连接数据库*/

//(代码略)

/**由回归方程计算Y[i]并从数据库中查得相应值*/

//(代码略)

/**多次回归直到满足条件*/

double min=100;//校正后差值的最小值

ci=0;//校正次数

do {

/*校正y得y1*/

ci++;

for (i=0; i

y1[i] =bmin[i] +p[i]*bz[i];

}

/*将各点加权*/

//(代码略)

/*X,Y1线性回归*/

aveX=sumNwx/sumNw;

aveY=sumNwy/sumNw;

b=(sumNwxy-aveY*sumNwx)/(sumNwx2-aveX*sumNwx);

a=aveY-b*aveX;

/*由回归方程计算Y2*/

//(代码略)

/**为下一次校正回归做准备*/

for (i=0; i

tempY[i]=y2[i];

tempY[i] = (Math.round ((y[i]*10)))/10.0;

sqlResult=stat.executeQuery("SELECT *FROM [zhuanti].[dbo].[y_w] where [yp]="+tempY[i]);

sqlResult.next();

bz[i]=sqlResult.getDouble("ranp");

bmin[i]=sqlResult.getDouble("minp");

w[i]=sqlResult.getDouble("wp");

}}while(max>0.2);

m=(5-a)/b;//将p=50%时的Y=5代入方程,得LD50的对数

ste=1/(b*b)*Math.sqrt(Math.pow((5-aveY),2)/(sumNwx2-aveX*sumNwx)+(b*b)/sumNw);

SD=ste*Math.sqrt(total);

SD=Math.pow(10, SD);

s1=Math.pow(10,(m+1.96*ste));

s2=Math.pow(10,(m-1.96*ste));

result=Math.pow(10,m);

}}

2 实验数据的输入与结果输出

用户在客户端浏览器页面中的文本框输入数据,如图2所示。

用户提交表单后,服务器端通过 request. getParamete()方法获取客户端数据,并通过Double.parseDouble()方法将数据转换为Double型,随后JavaBean将数据传递给LD50计算程序,计算后的结果使用Get方法获取并传递给JavaBean,最后JavaBean调用相应的JSP并将结果显示给用户,如图3与4所示。

3 程序测试

根据文献中[1]的实验数据,对程序进行计算测试,根据文献中数据的计算结果和程序计算的结果进行比较,检验其结果正确性。

3.1 输入实验数据

图5为实验数据输入。

3.2 计算结果

图6为实验数据计算结果。

3.3 程序的计算结果与文献结果比较

表1程序的计算结果与文献结果比较

4 结果和结论

根据表1,可以得出结论,使用此程序计算LD50快速、准确。此程序计算LD50,数据的输入输出操作都是通过JSP网页实现的,能够方便地进行网络化推广,在任何操作系统上都可以通过网页浏览器使用Bliss法的快速计算LD50,在一定程度上减轻了药学工作者的工作量。

参考文献:

[1] 黎七雄,汪晕,肖清秋,等.半数致死量(LD50)Bliss法的评价及计算[J].数理医药杂志,1995,8(4):318-320.

[2] 陈俊秀,王甲东.Bliss法半数效量电子计算器程序运算法[J].中国药理学通报,1986,2(1):62-65.

[3] 史丽颖,董鸿晔.VISUAL BASIC在半数致死量测定数据处理中的应用[J].药学进展,2002,26(2):107-109.