⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caculatetan.m

📁 bayes树的针对生物数据剪接位点识别的实现算法
💻 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 + -