EmModel
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| InitFromSeed | 1 | 从种子 W-mer 构建 PWM:one-hot + 伪计数 [em.md §5]。 结果:θ_{col,a} = (pc + 1[a = seed_col]) / (1 + K·pc)。 注意:列下标一律用 col,字母表大小一律用 Me.K。VB 不区分大小写, 若把列循环变量写成 K/k,会遮蔽字母表大小字段 Me.K,使内层 「For a… |
| EStep | 1 | 单序列 E 步:返回全部候选位点的后验 Z(按模型归一化)。 revcomp:返回 (j,+) 与 (j,−) 双倍候选。 |
| WindowLogR | 1 | 窗口 logR:Σ_k log(θ_{k,a}/θ0,a);含歧义字母 → −∞ |
| MStep | 1 | M 步:由全部序列的位点后验重估 PWM 与 λ [em.md §3]。 |
| FullLogLik | 1 | 全观测对数似然 [em.md §1/§4]: OOPS : P(S_i) = bg(S_i)·(1/nCand)·Σ_c R_c ZOOPS: P(S_i) = bg(S_i)·[(1−λ) + λ·Σ_c R_c] ANR : P(S_i) = bg(S_i)·Π_j [(1−λ) + λ·Σ_strands R(j,·)] 似然只… |
| SoftLlr | 1 | 软 LLR 检验统计量 = 2·Σ Z_ij·logR_ij(χ² 近似用) |
| Consensus | 1 | 每列最大概率碱基 → 一致序列 [em.md §4 输出]。 argmax 必须遍历完整字母表(Me.K),不能只遍历到列号 [缺陷 #3]。 |
| MaxDeltaTo | 1 | PWM 与旧版的最大元素变化(收敛判据之二 [em.md §4])。 必须比较全部 W×K 个格子,不能只比较到列号 [缺陷 #4]。 |
| Clone | 1 |
03 Fields
| Name | Overloads | Summary |
|---|---|---|
| W | 1 | |
| K | 1 | |
| AlphabetRef | 1 | |
| Model | 1 | |
| Pwm | 1 | |
| Background | 1 | |
| Lambda | 1 | |
| Pseudocount | 1 |
04 Members
Int32())从种子 W-mer 构建 PWM:one-hot + 伪计数 [em.md §5]。 结果:θ_{col,a} = (pc + 1[a = seed_col]) / (1 + K·pc)。
注意:列下标一律用 col,字母表大小一律用 Me.K。VB 不区分大小写, 若把列循环变量写成 K/k,会遮蔽字母表大小字段 Me.K,使内层 「For a = 0 To K - 1」退化为按列号遍历(见 CODE_REVIEW 缺陷 #1)。
Int32(), Boolean)单序列 E 步:返回全部候选位点的后验 Z(按模型归一化)。 revcomp:返回 (j,+) 与 (j,−) 双倍候选。
Int32(), Int32, Boolean)窗口 logR:Σ_k log(θ_{k,a}/θ0,a);含歧义字母 → −∞
List(Of Int32()), List(Of List(Of SitePosterior)))M 步:由全部序列的位点后验重估 PWM 与 λ [em.md §3]。
List(Of Int32()), Boolean)全观测对数似然 [em.md §1/§4]: OOPS : P(S_i) = bg(S_i)·(1/nCand)·Σ_c R_c ZOOPS: P(S_i) = bg(S_i)·[(1−λ) + λ·Σ_c R_c] ANR : P(S_i) = bg(S_i)·Π_j [(1−λ) + λ·Σ_strands R(j,·)]
似然只取决于模型参数(PWM θ、λ)与数据本身,与 E 步给出的后验无关, 因此这里不再接收后验列表,链模式改由调用方显式传入。 旧实现用「后验里有没有负链条目」反推是否双链,导致 EM 首轮 (后验列表为空)按单链计算、次轮起按双链计算,LL 轨迹出现假的跳变, 既破坏了单调性保证也污染了 ΔLL 收敛判据 [缺陷 #7]。
List(Of List(Of SitePosterior)))软 LLR 检验统计量 = 2·Σ Z_ij·logR_ij(χ² 近似用)
每列最大概率碱基 → 一致序列 [em.md §4 输出]。 argmax 必须遍历完整字母表(Me.K),不能只遍历到列号 [缺陷 #3]。
PWM 与旧版的最大元素变化(收敛判据之二 [em.md §4])。 必须比较全部 W×K 个格子,不能只比较到列号 [缺陷 #4]。