当前位置: 移动技术网 > IT编程>脚本编程>Python > 使用python写的调内参的简易程序

使用python写的调内参的简易程序

2018年03月05日  | 移动技术网IT编程  | 我要评论

洪宏星 胡妍淇,儋州市,湖里区人力资源网

根据灰度值来推测调齐内参所需要的蛋白质浓度(以最简单的最小二乘法来计算):一开始上样的时候最好等体积上样(蛋白溶度调成一致)。确保每个样的上样体积一致。多做2个重复取平均值。然后采用灰度分析进行内参调整,从而调整之后的上样量。

自变量与因变量的一系列对应数据,(x1,y1),(x2,y2),(x3,y3),...(xn,yn),分别是已经做好的实验的蛋白质浓度和相对应的灰度值。Input,以数组来存储这些数据,然后的output就是根据最小二乘法得出的调内参的最适浓度。

假设存在和实际数据最拟合的函数,y=f(x),使得实际数据和理论曲线的离差平方和:∑[yi-f(xi)]^2(从i=1到i=n相加)为最小,一般我们假设是线性关系,以线性回归方程表示如Y= a0 + a1 X ;∑(X--X平)(Y--Y平)=∑XY--nX平Y平;∑(X --X平)^2=∑X^2--nX平^2;

当∑[yi-f(xi)]^2(从i=1到i=n相加)最小时,可用函数 φ 对a0、a1求偏导数,令这两个偏导数等于零。得到的两个关于a0、 a1为未知数的两个方程组,解这两个方程组得出:a0 = (∑Yi) / m - a1(∑Xi) / m ;a1 = [∑Xi Yi - (∑Xi ∑Yi)/ m] / [∑Xi2 - (∑Xi)2 / m)]

得到不同孔道对应的不同线性关系,然后我们可以选定一个我们需要的灰度值Y,反过来求解每个孔特定蛋白质的浓度Xi。

我目前只是弄出来最简易的,完全是面向过程的简易程序,需要一个个数据自己敲进去,然后再计算处理理论上想要调齐内参的蛋白质加样浓度;进一步的可以将数据记录在txt或者excel文件中,然后读取出来再进行计算,还是有很大的进步空间嘛!

a=input("请输入该孔道的三次蛋白质加样量,以逗号隔开:")    
b=input("请输入该孔道的三次灰度值,以逗号隔开:")    
aim=int(input("目标内参的灰度值="))    
c=[]    
d=[]    
for i in a.split(','):    
    c.append(float(i))    
for i in b.split(','):    
    d.append(float(i))    
l=0.0    
m=0.0  
n=0.0   
p=0.0  
e=0.0  
f=0.0  
for i in c:    
    l=l+i  #x的加和Σx:l  
for i in d:    
    m=m+i  #y的加和Σy:m  
for i in c:    
    n=n+l*l  #x平方的加和Σx^2:n  
    p=p+l*m  #x*y的加和Σxy:p  
e=(p-l*m/3.0/(n-l*l/3.0)  #最小二乘法公式:a=(Σxy-ΣxΣy/N)/(Σx^2-(Σx)^2/N),a是斜率  
f=m/3.0-e*l/3.0 #b=y(平均)-a*x(平均);b是截距  
aimcon=(aim-f)/e  
print(e,f)  
print("线性回归方程是:y=",e,"x+",f)  
print(aimcon)
b=input("请输入该孔道的三次灰度值,以逗号隔开:")    
aim=int(input("目标内参的灰度值="))    
c=[]    
d=[]    
for i in a.split(','):    
    c.append(float(i))    
for i in b.split(','):    
    d.append(float(i))    
l=0.0    
m=0.0  
n=0.0   
p=0.0  
e=0.0  
f=0.0  
for i in c:    
    l=l+i  #x的加和:l  
    n=sum([ i*i for i in c])#x平方的加和:n  
for i in d:    
    m=m+i  #y的加和:m  
p=sum([c[i]*d[i] for i in range(0,3)])#x*y的加和:p  
e=(p-l*m/3)/(n-l*l/3)  #最小二乘法公式:a=(Σxy-ΣxΣy/N)/(Σx^2-(Σx)^2/N),a是斜率  
f=m/3.0-e*l/3.0 #b=y(平均)-a*x(平均);b是截距  
aimcon=(aim-f)/e  
print(l,m,n,p,e,f)#用于测试各个量是否正确  
print("线性回归方程是:y=",e,"x+",f)  
print("理论上的加样量=",aimcon)

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网