24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3877  |  回复: 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的回帖
回帖置顶 ( 共有4个 )
计算的结果如下
y1 =

    2.4855    2.9451    2.8280    2.9727


y2 =

    1.0000    0.6341    0.7179    0.6341
    0.6341    1.0000    0.7391    0.7917
    0.7179    0.7391    1.0000    0.7826
    0.6341    0.7917    0.7826    1.0000

各泳道的Shannon-Wiener多样性指数



泳道间的聚类分析

2楼2012-06-01 16:29:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

在雨中

金虫 (著名写手)


★ 一星级,一般

既然已经有excel的DGGE数据了,何必还要matlab呢?
那么多现成的统计软件可以对这些DGGE数据进行分析的啦!
4楼2012-06-04 09:55:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
引用回帖:
4楼: Originally posted by 在雨中 at 2012-06-04 09:55:29
既然已经有excel的DGGE数据了,何必还要matlab呢?
那么多现成的统计软件可以对这些DGGE数据进行分析的啦!

这个看个人使用喜好,如果对Excel VBA熟悉,excel就可以做,只不过我对matlab比较熟悉,编程简单,函数丰富。所以用matlab做也没有什么不可以吧。
5楼2012-06-04 14:12:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xhangela

新虫 (初入文坛)


★ 一星级,一般

学习matlab中~~~~~~~·
6楼2012-06-04 15:39:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫苏云

木虫 (小有名气)


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

多谢楼主指点~
13楼2013-01-13 14:31:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫苏云

木虫 (小有名气)


楼主是否有Gel-Pro Analyzer软件?坛子里面搜不到能下载的。。。
多谢帮忙啊!
14楼2013-01-13 14:42:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

banyanwr

新虫 (初入文坛)


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

做个实验就不容易了 分析个数据还这么麻烦……
15楼2013-07-21 16:57:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sososmile47

新虫 (初入文坛)


★★★ 三星级,支持鼓励

一直以为用quantity one 能直接分析,感谢楼主
20楼2014-03-06 16:45:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chyz_jun

新虫 (初入文坛)


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

一直在找这个~~终于找到了~~~
23楼2014-05-06 11:12:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

康斯坦丁心医

新虫 (著名写手)


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

R也可以做吧
26楼2015-01-26 20:50:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

穿越唐朝

新虫 (初入文坛)


引用回帖:
2楼: Originally posted by dbb627 at 2012-06-01 16:29:51
计算的结果如下
y1 =

    2.4855    2.9451    2.8280    2.9727


y2 =

    1.0000    0.6341    0.7179    0.6341
    0.6341    1.0000    0.7391    0.7917
    0.7179    0.7391    1.0000    0.7 ...

为什么编程之后y=DGGEsimilaritymatrix只出现X的值,same和y的值没出现呢
27楼2015-03-30 09:15:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
2012-06-02 12:01   回复  
五星好评  顶一下,感谢分享!
2012-06-04 19:36   回复  
五星好评  
王金华8楼
2012-06-14 16:22   回复  
五星好评  顶一下,感谢分享!
ericexist9楼
2012-11-29 11:25   回复  
五星好评  顶一下,感谢分享!
ericexist10楼
2012-11-29 11:25   回复  
顶一下,感谢分享!
yzlfjnl11楼
2012-12-08 23:15   回复  
五星好评  顶一下,感谢分享!
yzlfjnl12楼
2012-12-08 23:15   回复  
顶一下,感谢分享!
lance-tan16楼
2013-07-22 17:52   回复  
五星好评  顶一下,感谢分享!
buda71617楼
2014-02-23 21:53   回复  
三星好评  顶一下,感谢分享!
huala201318楼
2014-02-24 08:47   回复  
五星好评  顶一下,感谢分享!
huala201319楼
2014-02-24 08:49   回复  
huala201321楼
2014-03-07 08:29   回复  
顶一下,感谢分享!
feng007hui22楼
2014-03-19 14:49   回复  
五星好评  顶一下,感谢分享!
2014-05-18 10:46   回复  
三星好评  顶一下,感谢分享!
drchenxi25楼
2014-05-22 19:54   回复  
三星好评  顶一下,感谢分享!
相关版块跳转 我要订阅楼主 dbb627 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复(可上传附件)
信息提示
请填处理意见