📄 caculatetan.m
字号:
clear;
clc;
trt=1000;
trf=1000;
tet=800;
tef=800;
l=11;
q0=0.5;
q1=0.5;
[train_t,train_f,test_t,test_f]=data_for_tan(trt,trf,tet,tef,l);
[tree,cacu,nn]=sctu(trt,trf,train_t,train_f,l);
for m=1:nn
i=cacu(1,m);
j=cacu(2,m);
[num_t,num_f]=caculatzyp(trt,trf,train_t,train_f,l,i,j);
zyp(1,m)={num_t};
zyp(2,m)={num_f};
end
tp=0;
fn=0;
tn=0;
fp=0;
test=[test_t;test_f];
for m=1:(tet+tef)
i=cacu(1,1);
pp0=zyp{1,1}; %pp0为正例
pp1=zyp{2,1}; %pp1为反例
if test(m,i)=='A'
p0=pp0(1,5)/tet; %p0为是为正例的概率
p1=pp1(1,5)/tef; %p1为是为反例的概率
elseif test(m,i)=='C'
p0=pp0(2,5)/tet;
p1=pp1(2,5)/tef;
elseif test(m,i)=='G'
p0=pp0(3,5)/tet;
p1=pp1(3,5)/tef;
else
p0=pp0(4,5)/tet;
p1=pp1(4,5)/tef;
end
p0=p0*q0;
p1=p1*q1;
for n=1:nn
pp0=zyp{1,n};
pp1=zyp{2,n};
i=cacu(1,n);
j=cacu(2,n);
if test(m,i)=='A'&&test(m,j)=='A'
p0=p0*pp0(1,1)/pp0(1,5);
p1=p1*pp1(1,1)/pp1(1,5);
elseif test(m,i)=='A'&&test(m,j)=='C'
p0=p0*pp0(1,2)/pp0(1,5);
p1=p1*pp1(1,2)/pp1(1,5);
elseif test(m,i)=='A'&&test(m,j)=='G'
p0=p0*pp0(1,3)/pp0(1,5);
p1=p1*pp1(1,3)/pp1(1,5);
elseif test(m,i)=='A'&&test(m,j)=='T'
p0=p0*pp0(1,4)/pp0(1,5);
p1=p1*pp1(1,4)/pp1(1,5);
elseif test(m,i)=='C'&&test(m,j)=='A'
p0=p0*pp0(2,1)/pp0(2,5);
p1=p1*pp1(2,1)/pp1(2,5);
elseif test(m,i)=='C'&&test(m,j)=='C'
p0=p0*pp0(2,2)/pp0(2,5);
p1=p1*pp1(2,2)/pp1(2,5);
elseif test(m,i)=='C'&&test(m,j)=='G'
p0=p0*pp0(2,3)/pp0(2,5);
p1=p1*pp1(2,3)/pp1(2,5);
elseif test(m,i)=='C'&&test(m,j)=='T'
p0=p0*pp0(2,4)/pp0(2,5);
p1=p1*pp1(2,4)/pp1(2,5);
elseif test(m,i)=='G'&&test(m,j)=='A'
p0=p0*pp0(3,1)/pp0(3,5);
p1=p1*pp1(3,1)/pp1(3,5);
elseif test(m,i)=='G'&&test(m,j)=='C'
p0=p0*pp0(3,2)/pp0(3,5);
p1=p1*pp1(3,2)/pp1(3,5);
elseif test(m,i)=='G'&&test(m,j)=='G'
p0=p0*pp0(3,3)/pp0(3,5);
p1=p1*pp1(3,3)/pp1(3,5);
elseif test(m,i)=='G'&&test(m,j)=='T'
p0=p0*pp0(3,4)/pp0(3,5);
p1=p1*pp1(3,4)/pp1(3,5);
elseif test(m,i)=='T'&&test(m,j)=='A'
p0=p0*pp0(4,1)/pp0(4,5);
p1=p1*pp1(4,1)/pp1(4,5);
elseif test(m,i)=='T'&&test(m,j)=='C'
p0=p0*pp0(4,2)/pp0(4,5);
p1=p1*pp1(4,2)/pp1(4,5);
elseif test(m,i)=='T'&&test(m,j)=='G'
p0=p0*pp0(4,3)/pp0(4,5);
p1=p1*pp1(4,3)/pp1(4,5);
elseif test(m,i)=='T'&&test(m,j)=='T'
p0=p0*pp0(4,4)/pp0(4,5);
p1=p1*pp1(4,4)/pp1(4,5);
end
end
if m<tet+1&&p0>p1
tp=tp+1;
elseif m<tet+1&&p0<p1
fn=fn+1;
elseif m>tet&&p1>p0
tn=tn+1;
else
fp=fp+1;
end
end
tp
fn
tn
fp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -