24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3884  |  回复: 26
【奖励】 本帖被评价18次,作者dbb627增加金币 12.8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

[资源] Matlab 实现DGGE电泳图谱的 泳道多样性指数,相似性指数,泳道聚类分析

前段时间写了一点Matlab的使用心得,大家讨论很热烈,里面关于DGGE分析的部分,很多虫友有兴趣,我在这里完整贴出来,供大家学习参考。有什么不对的地方欢迎大家批评指正。
http://muchong.com/bbs/viewthread.php?tid=4340045
http://www.dxy.cn/bbs/topic/13125577
1,首先 Gel Pro Analyzer或者其他电泳图片分析软件对DGGE图谱数据化
2,Gel Pro Analyzer将DGGE图谱数据导入excel
3,matlab读取excel的数据,用matlab程序分析。
附件中有matlab程序文件和用于计算的数据amout.xls
CODE:
function DGGEdataanalysis(data)
%输入的数据为Gel pro plus或者其他凝胶分析
%软件得到的关于泳道比移值或者各个泳道亮度数据
%为了后续所有分析能继续,建议用各个泳道亮度数据
%Shannon-Wiener多样性指数H=-∑Pln(P)
%相似性指数S=2Lab/(La+Lb) Lab为a,b泳道都存在的条带数
%example
%x1=xlsread('amout.xls')
%DGGEdataanalysis(x1)
%作者:dbb627
%dbb627[at=923817]163.com[/at]
%2012 .6.1
%=========泳道的多样性指数=====
X=data;
[m,n]=size(X);
S=cell(1,n);
for i=1:n
S{1,i}=['Lane',num2str(i)];
end

y1=DGGEdivsityindex(X)
figure;
lane=1:n;
bar(lane,y1)
set(gca,  'XTickLabel',S, 'XTick',lane);
title('各泳道的Shannon-Wiener多样性指数')
%========泳道间的相似性指数====
y2=DGGEsimilaritymatrix(data)
%=====泳道间的聚类分析=====
Z=linkage(y2,'average');
figure;
dendrogram(Z,n,'ORIENTATION','left','LABELS',S)
title('泳道间的聚类分析')

function  y=DGGEsimilaritymatrix(X)
%计算DGGE图谱各泳道间的相似性指数组成相似矩阵
%输入参数x为图谱的泳道的亮度(灰度)或者比移值矩阵
[M,N]=size(X);
Xc=zeros(1,N);
Same=zeros(N,N);
similaritymatrix=zeros(N,N);
for i=1:N
    for j=1:M
        if X(j,i)>0
            Xc(1,i)=Xc(1,i)+1;
        end
    end
end
Xc;
for i=1:N
    for k=1:N
        for j=1:M
            if (X(j,i)>0)&(X(j,k)>0)
                Same(i,k)= Same(i,k)+1;
            end
        end
    end
end
Same;
for i=1:N
    for k=1:N
        similaritymatrix(i,k)=2*Same(i,k)/(Xc(1,i)+Xc(1,k));
    end
end
y=similaritymatrix;

function y=DGGEdivsityindex(x)
%计算DGGE图谱各泳道的多样性指数
%输入参数x为图谱的泳道的亮度(灰度)矩阵
[M,N]=size(x);
divsityindex=zeros(1,N);
for i=1:N
    P=x(:,i);
Sumc(i)=sum(P(P>0));
end
for i=1:N
    for j=1:M-1
        if x(j,i)>0
            divsityindex(1,i)=divsityindex(1,i)-x(j,i)/Sumc(i)*log(x(j,i)/Sumc(i));
        else
         divsityindex(1,i)=divsityindex(1,i)+0;
        end
    end
end
y=divsityindex;

[ 来自科研家族 博士乐园 ][ Last edited by dbb627 on 2012-6-1 at 17:27 ]
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : amout.xls
  • 2012-06-01 16:24:29, 23.5 K
  • 附件 2 : DGGEdataanalysis.m
  • 2012-06-01 17:27:04, 1.88 K

» 收录本帖的淘帖专辑推荐

dgge 学习

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

banyanwr

新虫 (初入文坛)


★★★★★ 五星级,优秀推荐

做个实验就不容易了 分析个数据还这么麻烦……
15楼2013-07-21 16:57:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dbb627 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复(可上传附件)
信息提示
请填处理意见