首页 > 其他分享 >邻接法构建系统发育树中枝长的计算(Least-Square Estimation)

邻接法构建系统发育树中枝长的计算(Least-Square Estimation)

时间:2023-01-18 00:11:18浏览次数:43  
标签:... Square frac 路径 树中枝长 Least 边长 quad array

Least-Square Estimation

刚刚用BioNJ跑完了一波数据,老板和我说这个算法其实挺简单的,你可以自己写一个(主要是BIONJ软件本身和Philip以及MEGA对输入文件要求都比较严,不方便处理),所以我初步学习了一下最原始的NJ树的构建方法

算法源于 The Neighbor-joining Method: A New Method for Reconstructing Phylogenetic Trees

在这一个随笔中只讨论边长的计算方法,不讨论整个算法

假设我们有一棵无根树具有\(n\)个叶节点,\(n-1\)个内部节点,\(2n-3\)条边(edge,边的数量简记为\(N_E\)),以及由两两叶节点构成的\(\frac{n(n-1)}{2}\)条路径(path,路径的数量简记为\(N_P\))

对于边我们可以构建一个向量\(v_E\)(vector of edge)表示每一条边的长度

对于路径我们可以构建一个向量\(v_P\)(vector of path)表示每一条路径的长度

于是我们可以构建一个矩阵(A),它的列数等于\(N_E\),它的行数等于\(N_P\),每一个元素等于1或者0,它表示一条边是否存在于某一个路径当中,或者说一条路径是由哪几个边组成的

\[ \left[\begin{array}{l} 1&1&0&0&0&0\\ 1&0&1&0&0&1\\ 1&0&0&1&0&1\\ 1&0&0&0&1&1\\ 0&1&1&0&0&1\\ 0&1&0&1&0&1\\ 0&1&0&0&1&1\\ 0&0&1&1&0&0\\ 0&0&1&0&1&0\\ 0&0&0&1&1&0\\ \end{array}\right] \]

于是我们可以得到一个关于边长与路径长的线性方程组

\[A\cdot v_{E}=v_{P} \]

\[A^{T}Av_{E}=A^{T}v_{P} \]

我们记

\[B = A^TA \]

B是一个对称矩阵

于是我们能够得到

\[ v_{E} = B^{-1}A^{T}v_{P} \]

这就是我们计算树中各个边长的方法,最理想的方法

但是我们不可能遍历树空间,来找到一个边长之和最小的树结构,所以NJ法中采取的方法是迭代寻找一个局部最优

假设我们有一个初始的star-structure的树,我们需要从中将两个OTU(operational taxonomic unit)提取出,并连接到另一个内部节点上,并计算这样的一棵树的边长之和,遍历所有选择方式,共\(C_n^2\)种,选择边长之和最小的那一种树。

那么之前提到的矩阵B可以写成如下形式

\[v_E = [L_{1X},L_{2X},L_{3Y},L_{4Y},...,L_{NY},L_{XY}]\\ \]

\[v_P = [D_{12},D_{13},D_{14},D_{15},...D_{1N},D_{23},D_{24},...D_{2N},...D_{(N-1)N}] \]

\[ B = \left[ \begin{array}{l} N-1 & 1 & 1 & ... & 1 & N-2\\ 1 & N-1 & 1 & ... & 1 & N-2\\ 1 & 1 & N-1 & ... & 1 & 2\\ ... & ... &... &...&...&...\\ 1 & 1 & 1 & ... & N-1 & 2\\ N-2 & N-2 & 2 & ... & 2 & 2(N-2)\\ \end{array} \right] \]

能力有限,具体解的过程就跳过了

\[ L_{1X} = \frac{1}{2}D_{12}+\frac{1}{2(N-2)}(P-Q)\newline \quad\\* \]

\[L_{1X} = \frac{1}{2}D_{12}+\frac{1}{2(N-2)}(Q-P)\\* \quad\\* \]

\[L_{iY} = \frac{1}{N-2}U_i-\frac{1}{(N-2)^2}(P+Q)-\frac{N-4}{(N-2)^2(N-3)}V,\quad(3\le i \le N)\\* \quad\\* \]

\[L_{XY} = \frac{1}{2(N-2)}(P+Q)-\frac{1}{2}D_{12}-\frac{1}{(N-2)(N-3)}V\\* \quad\\* \]

\[P = \sum^{N}_{j=3}{D_{1j}}\\* \quad\\* \]

\[Q = \sum^{N}_{j=3}{D_{2j}}\\* \quad\\* \]

\[U_i = \sum^{N}_{j=1,j\ne i}D_{ij}(i \ge 3)\\* \quad\\* \]

\[V = \sum_{3\le j < k}D_{jk}\\* \quad\\* \]

上述等式可计算自行验证

标签:...,Square,frac,路径,树中枝长,Least,边长,quad,array
From: https://www.cnblogs.com/mrwang80/p/17058890.html

相关文章

  • CF 1779C Least Prefix Sum 题解
    CF链接:LeastPrefixSumLuogu链接:Least PrefixSum${\scr\color{CornflowerBlue}{\text{Solution}}}$先来解释一下题意:给定一个数组,问最少把多少个数变成相反数,......
  • CF1779C Least Prefix Sum 题解
    可能更好的阅读体验题目传送门题目大意给定一个序列\(a\),长度\(n\)。每次操作可以把\(a_i\)变成\(-a_i\)。要求\(a\)做前缀和之后的序列\(s\)中最小值为\(s......
  • CF1779 Least Prefix Sum
    url:Problem-C-Codeforces题意:给n个数字和一个m给一个操作:每次使得其中一个下标的数字*=-1要求最后在所有前缀和中前m个数字是最小的思路:在所有前缀和中分......
  • Least Prefix Sum(贪心)
    题目链接题目描述:Baltic,afamouschessplayerwhoisalsoamathematician,hasanarray\(a_1,a_2,…,a_n\),andhecanperformthefollowingoperationsevera......
  • Squarespace 和 WordPress 的区别
    博主前些天发现了一个巨牛巨好用的刷题网站,忍不住分享一下给大家,......
  • idea 集成Squaretest
    今天来介绍一款工具Squaretest,它是一款自动生成单元测试的插件,会用到它也是因为最近公司上了代码质量管控的指标,会考评各个项目的单元测试覆盖率,以及sonar扫描出来的各种问......
  • 1812.determine-color-of-a-chessboard-square 判断国际象棋棋盘中一个格子的颜色
    问题描述1812.判断国际象棋棋盘中一个格子的颜色解题思路太简单了,不写代码classSolution{public:boolsquareIsWhite(stringcoordinates){if((co......
  • Ubuntu 18.04 升级 libc Your system has GNU libc version 2.27. The calibre binari
    安装calibre时,提示GNUlibc版本低。(Ubuntu18.04版本是2.27最方便的方法是升级系统到20或22)sudo-v&&wget-nv-O-https://download.calibre-ebook.com/......
  • LeetCode: 221. Maximal Square
    LeetCode:221.MaximalSquare题目描述Givena2Dbinarymatrixfilledwith​​0​​​'sand​​1​​​'s,findthelargestsquarecontainingonly​​1​​'s......
  • Codeforces 1 A. Theatre Square
    题意:给定一块n*m大小的地方,用边长为a的石板全部覆盖。求最少需要多少石块覆盖。公式: (n+a-1)%a注意:数据范围用long运算先后关系,加括号C#10.net6代......