滑动窗口核心算法:局部零膨胀 Poisson 背景估计 + Skellam 显著性检验。
SlidingWindow
00 Remarks
本模块严格移植 Resources\TSSAR.pl 所生成的 R 脚本逻辑:
- 以
winSize为窗口、ceil(winSize/10)为步长滑动; - 窗口内分别对 [+] / [-] 文库执行 Winsorize 与零膨胀 Poisson 建模, 得到期望的结构零个数;任何一侧建模失败(MLE 不收敛)则整个窗口被丢弃;
- 取两侧期望结构零个数的平均值作为参考,按概率随机剔除各文库的结构零, 对剩余的"采样零 + 正计数"求均值得到 Skellam 的 lambda 参数,并做文库归一化;
- 逐位置计算计数差
D,使用 Skellam 分布计算P(X >= D)作为 p 值, 但仅记录 [+] 库原始计数不小于噪声阈值的位置; - 每个位置被多个窗口覆盖,最终 p 值取这些窗口 p 值的几何平均。
01 Syntax
SMRUCC.genomics.Analysis.RNA_Seq.TSSAR.Statistics.SlidingWindow
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| Run | 1 | 对单条链执行完整的滑动窗口 Skellam 分析。 |
| FitWindow | 1 | 窗口内的零膨胀 Poisson 建模(对应 R 实现之中的三个分支)。 |
| Winsorize | 1 | Winsorize 缩尾处理:把最大值替换为第二大值、最小值替换为第二小值, 以抵抗错配 read 或 rRNA 等高丰度离群值。 |
| RemoveStructuralZeros | 1 | 按概率随机剔除窗口内的结构零,返回剩余"采样零 + 正计数"的均值, 作为 Skellam 分布的 lambda 参数(尚未乘归一化因子)。 |
03 Fields
| Name | Overloads | Summary |
|---|---|---|
| NotModeled | 1 | 表示"未建模"的哨兵值,与 R 参考实现之中的 9999 一致。 |
04 Members
Run(
Double(), Double(), Double, Double, Int32, Int32, Int32, Int32)对单条链执行完整的滑动窗口 Skellam 分析。
Parameters
| Name | Type | Description |
|---|---|---|
plus | Double() | [+] 文库该链的逐位置 read 起始覆盖度(1-based)。 |
minus | Double() | [-] 文库该链的逐位置 read 起始覆盖度(1-based)。 |
normalizePlus | Double | [+] 文库的归一化因子。 |
normalizeMinus | Double | [-] 文库的归一化因子。 |
genomeSize | Int32 | 基因组长度。 |
winSize | Int32 | 滑动窗口大小。 |
minPeakSize | Int32 | 噪声阈值。 |
seed | Int32 | 结构零随机剔除所用的随机数种子。 |
FitWindow(
Double(), Double(), Int32)窗口内的零膨胀 Poisson 建模(对应 R 实现之中的三个分支)。
Parameters
| Name | Type | Description |
|---|---|---|
source | Double() | 窗口内的原始计数。 |
winsorized | Double() | 输出缓冲区:Winsorize 之后的计数。 |
n | Int32 | 窗口内有效元素个数。 |
Winsorize(
Double(), Double(), Int32)Winsorize 缩尾处理:把最大值替换为第二大值、最小值替换为第二小值, 以抵抗错配 read 或 rRNA 等高丰度离群值。
RemoveStructuralZeros(
Double(), Int32, Double)按概率随机剔除窗口内的结构零,返回剩余"采样零 + 正计数"的均值, 作为 Skellam 分布的 lambda 参数(尚未乘归一化因子)。
Parameters
| Name | Type | Description |
|---|---|---|
winsorized | Double() | Winsorize 之后的窗口计数。 |
n | Int32 | 窗口长度。 |
expectedTotal | Double | 两侧文库期望结构零个数的平均值。 |
NotModeled
表示"未建模"的哨兵值,与 R 参考实现之中的 9999 一致。