DNA序列分类

目录

计算频率

欧氏距离判断法

Fisher判别函数

Bayes判别函数


        针对序列建立模型,对DNA进行分类。DNA序列中存在着局部的和全局性的结构,充分挖掘序列的结构对理解DNA全序列有着重要的意义。


计算频率


 %计算A、C、G、T在序列中出现的频率
clear all
clc
a=[  33    44    19    1530    46    18    1730    50    24     747    20    12    3226    47    26    1239    44    14    1439    40    11    2131    41    18    2123    48    23    1720    45    30    15];b=zeros(10,4);for i=1:10for j=1:4b(i,j)=a(i,j)/(a(i,1)+a(i,2)+a(i,3)+a(i,4));endendb

欧氏距离判断法


Y = inv(X) 计算方阵 X 的 逆矩阵。

  • X^(-1) 等效于 inv(X)

  • x = A\b 的计算方式与 x = inv(A)*b 不同,建议用于求解线性方程组。

%距离判别法中的线性判别函数 
clear all
clc
a= [  0.2973    0.3964    0.1712    0.13510.2703    0.4144    0.1622    0.15320.2703    0.4505    0.2162    0.06310.4234    0.1802    0.1081    0.28830.2342    0.4234    0.2342    0.10810.3514    0.3964    0.1261    0.12610.3514    0.3604    0.0991    0.18920.2793    0.3694    0.1622    0.18920.2072    0.4324    0.2072    0.15320.1818    0.4091    0.2727    0.1364];b=[ 0.3545    0.1000    0.0455    0.50000.3273    0.1455    0.0273    0.50000.2545    0.1273    0.1000    0.51820.3000    0.1182    0.0818    0.50000.2909    0.0636         0    0.64550.3636    0.0909    0.0818    0.46360.3545    0.1364    0.2455    0.26360.2909    0.0909    0.1182    0.50000.2182    0.0727    0.1455    0.56360.2000    0.0636    0.1727    0.5636 ];x=mean(a)';y=mean(b)';d=a';for i=1:10for j=1:4d(j,i)=(d(j,i)-d(j,1));endends1=d*d'e=b';for i=1:10for j=1:4e(j,i)=(e(j,i)-e(j,1));endends2=e*e's=s1+s2;f=s/(10+10-2);njz=inv(f);u=(njz*(x-y))'
v=u*(x+y)/2;
u*v

得出线性判别函数

%判别函数 
function y=fun3(x1,x2,x3,x4)
y=0.0765*x1+7.7047*x2-2.8483*x3-4.4863*x4+0.0204;

使用线性判别函数对DNA序列进行归类,若w(x)>0则为A类,反之为B类。

clear all 
clc
m=[0.2973    0.3964    0.1712    0.13510.2703    0.4144    0.1622    0.15320.2703    0.4505    0.2162    0.06310.4234    0.1802    0.1081    0.28830.2342    0.4234    0.2342    0.10810.3514    0.3964    0.1261    0.12610.3514    0.3604    0.0991    0.18920.2793    0.3694    0.1622    0.18920.2072    0.4324    0.2072    0.15320.1818    0.4091    0.2727    0.1364];
a=[ 0.3545    0.1000    0.0455    0.50000.3273    0.1455    0.0273    0.50000.2545    0.1273    0.1000    0.51820.3000    0.1182    0.0818    0.50000.2909    0.0636         0    0.64550.3636    0.0909    0.0818    0.46360.3545    0.1364    0.2455    0.26360.2909    0.0909    0.1182    0.50000.2182    0.0727    0.1455    0.56360.2000    0.0636    0.1727    0.5636 ];for i=1:10b(i,1)=fun3(a(i,1),a(i,2),a(i,3),a(i,4));c(i,1)=fun3(m(i,1),m(i,2),m(i,3),m(i,4));end
c 
b

Fisher判别函数


得到y0便于后续判断

%fisher判别法 
clear all
clcx=[0.2973    0.3964    0.1712    0.13510.2703    0.4144    0.1622    0.15320.2703    0.4505    0.2162    0.06310.4234    0.1802    0.1081    0.28830.2342    0.4234    0.2342    0.10810.3514    0.3964    0.1261    0.12610.3514    0.3604    0.0991    0.18920.2793    0.3694    0.1622    0.18920.2072    0.4324    0.2072    0.15320.1818    0.4091    0.2727    0.1364];x1=[0.3545    0.1000    0.0455    0.50000.3273    0.1455    0.0273    0.50000.2545    0.1273    0.1000    0.51820.3000    0.1182    0.0818    0.50000.2909    0.0636         0    0.64550.3636    0.0909    0.0818    0.46360.3545    0.1364    0.2455    0.26360.2909    0.0909    0.1182    0.50000.2182    0.0727    0.1455    0.56360.2000    0.0636    0.1727    0.5636];
a=mean(x)';
b=mean(x1)';
x=x';
x1=x1';
for i=1:4for j=1:10x(i,j)=x(i,j)-a(i,1);x1(i,j)=x1(i,j)-b(i,1);end
end
s=x*x';
s1=x1*x1';
c=1/18*(s+s1)
m=inv(c);
for i=1:4n(i,1)=a(i,1)-b(i,1);
end
z=1/18*m*n
y=0;
y1=0;
for i=1:4y=a(i,1)*z(i,1)+y;y1=b(i,1)*z(i,1)+y1;
end
y0=(10*y+10*y1)/20;
y0

根据z的值得到判别函数

%判别函数 
function y=fun5(x1,x2,x3,x4);
y=-873.0364*x1-869.4539*x2-875.4649*x3-875.5247*x4;

归类:y>y0为A类,反之为B类

%调用函数
clear all 
clc
f=[0.2973    0.3964    0.1712    0.13510.2703    0.4144    0.1622    0.15320.2703    0.4505    0.2162    0.06310.4234    0.1802    0.1081    0.28830.2342    0.4234    0.2342    0.10810.3514    0.3964    0.1261    0.12610.3514    0.3604    0.0991    0.18920.2793    0.3694    0.1622    0.18920.2072    0.4324    0.2072    0.15320.1818    0.4091    0.2727    0.1364];
m=[0.3545    0.1000    0.0455    0.50000.3273    0.1455    0.0273    0.50000.2545    0.1273    0.1000    0.51820.3000    0.1182    0.0818    0.50000.2909    0.0636         0    0.64550.3636    0.0909    0.0818    0.46360.3545    0.1364    0.2455    0.26360.2909    0.0909    0.1182    0.50000.2182    0.0727    0.1455    0.56360.2000    0.0636    0.1727    0.5636];
for i=1:10b(i,1)=fun5(f(i,1),f(i,2),f(i,3),f(i,4));h(i,1)=fun5(m(i,1),m(i,2),m(i,3),m(i,4));endbh

Bayes判别函数


 确定函数

%贝叶斯判别法
clear all 
clc
A=[ 0.2973    0.3964    0.1712    0.13510.2703    0.4144    0.1622    0.15320.2703    0.4505    0.2162    0.06310.4234    0.1802    0.1081    0.28830.2342    0.4234    0.2342    0.10810.3514    0.3964    0.1261    0.12610.3514    0.3604    0.0991    0.18920.2793    0.3694    0.1622    0.18920.2072    0.4324    0.2072    0.15320.1818    0.4091    0.2727    0.1364];
a=(mean(A))';
d=A';
B=[0.3545    0.1000    0.0455    0.50000.3273    0.1455    0.0273    0.50000.2545    0.1273    0.1000    0.51820.3000    0.1182    0.0818    0.50000.2909    0.0636         0    0.64550.3636    0.0909    0.0818    0.46360.3545    0.1364    0.2455    0.26360.2909    0.0909    0.1182    0.50000.2182    0.0727    0.1455    0.56360.2000    0.0636    0.1727    0.5636];
b=(mean(B))';
% c=zeros(3);
for i=1:10for j=1:4d(j,i)=(d(j,i)-a(j,1));end
end
S1=d*d'
e=B';
for x=1:10for y=1:4e(y,x)=(e(y,x)-b(y,1));end
end
S2=e*e';
s=S1+S2;
r=inv(s/18);
log(0.5)-0.5*a'*r*a
r*a
log(0.5)-0.5*b'*r*b
r*b

进行分类

%判别函数
clear all
clc
format long;
a=[0.2973    0.3964    0.1712    0.13510.2703    0.4144    0.1622    0.15320.2703    0.4505    0.2162    0.06310.4234    0.1802    0.1081    0.28830.2342    0.4234    0.2342    0.10810.3514    0.3964    0.1261    0.12610.3514    0.3604    0.0991    0.18920.2793    0.3694    0.1622    0.18920.2072    0.4324    0.2072    0.15320.1818    0.4091    0.2727    0.1364];
b=[0.3545    0.1000    0.0455    0.5000 0.3273    0.1455    0.0273    0.50000.2545    0.1273    0.1000    0.51820.3000    0.1182    0.0818    0.50000.2909    0.0636         0    0.64550.3636    0.0909    0.0818    0.46360.3545    0.1364    0.2455    0.26360.2909    0.0909    0.1182    0.50000.2182    0.0727    0.1455    0.56360.2000    0.0636    0.1727    0.5636];
for i=1:10c(i,1)=fun7_1(a(i,1),a(i,2),a(i,3),a(i,4));d(i,1)=fun7_2(a(i,1),a(i,2),a(i,3),a(i,4));e(i,1)=fun7_1(b(i,1),b(i,2),b(i,3),b(i,4));f(i,1)=fun7_2(b(i,1),b(i,2),b(i,3),b(i,4));
end
c
d
e
f

最终分类结果表明,欧式距离法、Fisher判别法、Bayes判别法这三种方法的判对率分别为90%,95%,80%。故用Fisher判别法判别DNA分类较好。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部