nuget server logo nuget api documents
↑

API Docs / SMRUCC.genomics.Analysis.SequenceTools.SequencePatterns.MotifFinder / EmModel

EmModel

Full name SMRUCC.genomics.Analysis.SequenceTools.SequencePatterns.Motif.EmMotif.Core.EmModel Assembly SMRUCC.genomics.Analysis.SequenceTools.SequencePatterns.MotifFinder Members 17

01 Syntax

SMRUCC.genomics.Analysis.SequenceTools.SequencePatterns.Motif.EmMotif.Core.EmModel

02 Methods

NameOverloadsSummary
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

NameOverloadsSummary
W 1
K 1
AlphabetRef 1
Model 1
Pwm 1
Background 1
Lambda 1
Pseudocount 1

04 Members

method InitFromSeed #
InitFromSeed(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)。

method EStep #
EStep(Int32(), Boolean)

单序列 E 步:返回全部候选位点的后验 Z(按模型归一化)。 revcomp:返回 (j,+) 与 (j,−) 双倍候选。

method WindowLogR #
WindowLogR(Int32(), Int32, Boolean)

窗口 logR:Σ_k log(θ_{k,a}/θ0,a);含歧义字母 → −∞

method MStep #
MStep(List(Of Int32()), List(Of List(Of SitePosterior)))

M 步:由全部序列的位点后验重估 PWM 与 λ [em.md §3]。

method FullLogLik #
FullLogLik(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]。

method SoftLlr #
SoftLlr(List(Of List(Of SitePosterior)))

软 LLR 检验统计量 = 2·Σ Z_ij·logR_ij(χ² 近似用)

method Consensus #
Consensus

每列最大概率碱基 → 一致序列 [em.md §4 输出]。 argmax 必须遍历完整字母表(Me.K),不能只遍历到列号 [缺陷 #3]。

method MaxDeltaTo #
MaxDeltaTo(EmModel)

PWM 与旧版的最大元素变化(收敛判据之二 [em.md §4])。 必须比较全部 W×K 个格子,不能只比较到列号 [缺陷 #4]。

field W #
W
field K #
K
field AlphabetRef #
AlphabetRef
field Model #
Model
field Pwm #
Pwm
field Background #
Background
field Lambda #
Lambda
field Pseudocount #
Pseudocount
method Clone #
Clone()