最大似然法(ML):给定带分支长度的树 T 与替换模型 M,计算观测数据 D 的条件概率 P(D|T, M),并选择使似然最大的树。
MaximumLikelihoodTree
00 Remarks
实现要点:
- 以 NJ 树作为初始拓扑;
- 使用 计算对数似然;
- 对每条分支做一维(黄金分割)分支长度优化;
- 使用 NNI / SPR 拓扑算子做爬山式树搜索;
- 可选地优化离散 Gamma 的形状参数 α。
01 Syntax
SMRUCC.genomics.Interops.Visualize.Phylip.Evolution.MaximumLikelihood.MaximumLikelihoodTree
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| Build | 1 | 执行最大似然法建树。 |
| SanitizeBranchLengths | 1 | 保证树中所有内部节点的分支长度为一个正数,避免似然计算中出现退化的零长度分支。 |
| OptimizeBranchLengths | 1 | 逐条分支做一维分支长度优化,重复若干轮直至稳定。 |
| OptimizeEdge | 1 | 对单条分支的长度进行一维最大化(黄金分割搜索)。 |
| OptimizeGammaShape | 1 | 通过最大化对数似然估计离散 Gamma 的形状参数 α。 |
| GoldenSection | 1 | 黄金分割搜索(求一维函数的最大值)。 |
03 Members
Build(CharacterMatrix, AminoAcidModel,
Int32, Double, Double, PhyloNode, Int32, Boolean, Boolean, Int32, Int32)执行最大似然法建树。
Parameters
| Name | Type | Description |
|---|---|---|
matrix | CharacterMatrix | 已比对的位点矩阵 |
model | AminoAcidModel | 氨基酸替换模型(默认 LG) |
rateCategories | Int32 | 离散 Gamma 速率类别数目(默认为 4) |
gammaShape | Double | Gamma 形状参数 α(默认为 1,表示无速率异质性) |
invariantProportion | Double | 不变位点比例 I(默认 0) |
initial | PhyloNode | 可选初始树;默认使用 NJ 树 |
maxIterations | Int32 | 拓扑搜索的最大迭代轮次(默认为 10) |
useSpr | Boolean | 是否在 NNI 无法改进时尝试 SPR 移动 |
optimizeShape | Boolean | 是否对 Gamma 形状参数 α 进行最大似然估计 |
edgeOptimizationRounds | Int32 | 分支长度优化的轮次 |
seed | Int32 | 随机种子(用于 SPR 采样) |
SanitizeBranchLengths(PhyloNode,
Double)保证树中所有内部节点的分支长度为一个正数,避免似然计算中出现退化的零长度分支。
逐条分支做一维分支长度优化,重复若干轮直至稳定。
对单条分支的长度进行一维最大化(黄金分割搜索)。
通过最大化对数似然估计离散 Gamma 的形状参数 α。
GoldenSection(
Func(Of Double, Double), Double, Double, Double, Int32)黄金分割搜索(求一维函数的最大值)。