澄清MATLAB中的seqneighjoin函数

时间:2015-04-15 21:17:06

标签: matlab

我是MATLAB的新手,如果这个问题很简单,请耐心等待。

我最近遇到了函数seqneighborjoin。我正在努力找出它的伪代码解释,并找出函数调用返回值的数据结构到底是什么。

例如,z = seqneighborjoin(D, treemethod)。什么是z?我知道所有这些都可以通过检查函数seqneighborjoin本身来回答。但功能本身有点复杂。

我在这里发帖,只是想知道有没有其他方法可以获得明确的伪代码解释?我感谢你的时间和关注。

编辑:好的。这就是我今天所做的。这是代码。

names=arrayfun ( @num2str, 1:4, 'unif', 0);
d=[0,2,5,4,5,5];
z=seqneighjoin(d,'equivar',names);
get(z,'pointers')
squareform(pdist(z))

这就是我得到的:

ans =

     2     3
     1     5
     4     6


ans =

         0    3.0000    3.5000    5.0000
    3.0000         0    0.5000    5.0000
    3.5000    0.5000         0    5.5000
    5.0000    5.0000    5.5000         0

我理解第一个矩阵在那里做什么。令我惊讶的是,对于第二矩阵,即使节点1和2之间的距离为0,这里该矩阵的(1,2)对根本不为零。有谁理解为什么?我们有两个完全相同的物种(序列),如果稍后应用集群功能,它们是否有机会进入不同的集群?

2 个答案:

答案 0 :(得分:0)

seqneighjoin的文档页面提供了三个参考资料,详细解释了它使用的算法:

  

[1] Saitou,N。和Nei,M。(1987)。邻接法:一种重建系统发育树的新方法。分子生物学与进化4(4),406-425。

     

[2] Gascuel,O。(1997)。 BIONJ:基于简单的序列数据模型的NJ算法的改进版本。分子生物学与进化14 685-695。

     

[3] Studier,J.A.,Keppler,K.J。 (1988)。关于Saitou和Nei的邻接算法的注记。分子生物学与进化5(6)729-731。

seqneighjoin的输出是phytree对象,其中包含有关树结构,叶子和分支的名称,距离等的所有信息。

如果您输入doc phytree,您会找到一个描述如何直接构建phytree对象的页面(而不是seqneighjoin);在页面底部,您会找到一个链接phytree object,该链接提供phytree对象本身的文档,例如如何从中提取上述信息,如何查看,等等上。

答案 1 :(得分:0)

NJ假设可加性(从i到j的距离应等于树中从i到j的路径的分支长度之和)。 在您的情况下,d(a,b)= 0,但d(a,c)= 2不等于d(b,c)= 4。因此矩阵不是加法的,并且得到的树不准确。