Andromeda得分计算
Spec/Pscore.cs 中实现了Andromeda算法的得分计算,包括匹配峰数、质量匹配、和得分的归一化。Score 函数是Andromeda算法的核心。
Andromeda算法的流程包括以下步骤:
-
输入准备:输入理论肽段质量数组和实验质谱数据,包括实验峰的质量和强度。
-
修饰组合生成:根据修饰位置和修饰类型生成所有可能的组合,例如可能的修饰位置上分别有磷酸化、乙酰化等修饰。
-
匹配计算:对于每个修饰组合的理论质量,与实验质谱中的峰质量进行匹配。根据指定的容差(Da或ppm),计算匹配的峰数
-
得分计算:基于匹配的峰数
k和总峰数 $n$,计算每个组合的得分。得分公式如下:
s=-k\cdot\ln(p)-(n-k)\cdot\ln(1-p)-\mathrm{Factln}(n)+\mathrm{Factln}(k)+\mathrm{Factln}(n-k)
缩放:\mathrm{Score}=\frac{10\cdot s}{\log_{10}(e)}
第一项: -k\cdot\ln(p)
含义:该项计算了匹配的理论峰所贡献的得分
正负号原因:因为我们希望匹配峰增加得分,而匹配概率 p 通常是小值(如 $p=0.06$),因此 ln(p) 是负值,加上负号后整体是正值,表示匹配的理论峰对总得分的正向贡献。
原因:我们希望与实验数据匹配的理论峰越多,总得分越高。这里的 p 是匹配概率的自然对数(一般设定为小值,如 p=0.06 ),用来降低匹配的理论峰数对得分的影响。
逻辑:每个匹配的理论峰都会使得得分增加一个 -\ln(p) 的权重,因此随着匹配数 k 的增加,该项使得得分增加。
第二项: -(n-k)\cdot\ln(1-p)
含义:该项计算了不匹配的理论峰对总得分的贡献
正负号原因:因为不匹配峰会减少得分,ln(1−p) 是负值(1−p 接近 1),乘以负号后为正值,表示不匹配的理论峰对得分的负向影响。
原因:我们需要在得分计算中考虑到不匹配的峰数量,因为在实验数据中,非匹配峰的存在会降低总得分。这里的 1-p 表示不匹配的概率。
逻辑:每个未匹配的峰会导致得分降低一个 -\ln(1-p) 的权重。因此,随着未匹配数 n-k 的增加,该项会进一步降低得分。
第三项:-Factln(n)
含义:该项是对 n 的阶乘的对数(或称为组合项),用于计算总的排列数
正负号原因:这项表示理论峰的总排列数。由于 Factln(n) 是常数,它是所有组合的基数,减去这一项是为了防止总得分因总排列数的增加而不合理地被放大。
原因:该项是组合学的部分,表示从 n 个理论峰中选择 k 个匹配峰的总排列数的一部分。
逻辑:该项是固定的,因此对不同组合之间的相对得分影响不大,但保证了计算的完整性,并在数值上稳定得分计算。
为什么要引入组合学中的对数项?
在Andromeda算法中,得分不仅仅取决于匹配峰的数量,还取决于匹配峰的组合方式。这些对数阶乘项
(\mathrm{Factln}(n)\mathrm{、Factln}(k)\text{ 和 Factln}(n-k))的引入是为了计算所有可能的组合的对数得分,这在统计学和概率论中被广泛用于处理多项式分布和二项式分布的问题。
\mathrm{Factln}(x)=\ln(x!)=\ln(1)+\ln(2)+\ldots+\ln(x)
为什么要这样计算?
在质谱匹配中,我们不仅关心匹配数,还关心匹配的组合方式。引入组合项是为了确保在计算匹配和不匹配对得分的贡献时,能够体现出组合的影响。简单来说,它在计算时考虑了所有可能的匹配和不匹配组合,使得得分更加符合实际的概率分布情况。
第四项:Factln (k)
含义:该项是 k 的阶乘的对数
正负号原因:匹配峰对得分是正向贡献,因此这一项为正值,表示匹配组合的数目会提升得分。
原因:这是组合学中的一部分,表示从 k 个匹配峰中选择匹配组合数
逻辑:该项配合其余项用于组合匹配数的计算,保证得分计算的平衡性。
第五项:Factln (n-k)
含义:这一项是未匹配峰数 n-k 的阶乘的对数
原因:这一项的引入同样是为了计入组合方式的影响。对于未匹配峰来说, n-k 个非匹配峰的排列方式也会影响整体得分的分布。这项确保了非匹配峰的组合方式也对得分有影响,使得得分公式能够更加全面地反映匹配和非匹配峰的概率分布。
逻辑:同样地,该项也是用于组合计算中,保证了不匹配部分在得分计算中的平衡性。
缩放: \frac{10\cdot s}{\log_{10}(e)}
含义:最终得分 s 除以 \log_{10}(e) 并乘以10,使得得分在数值上更易读且更符 合人类认知。
原因:缩放将自然对数的结果转换为常见的对数刻度(以10为底),便于与其他得分系统对比。
逻辑:这种缩放通常会将得分缩放到0-100范围内,便于质谱研究人员解读和分析。
为什么第三项要减,第四和第五项要加?
1.组合学中的归一化:
Factln(n)是所有理论峰的排列总数。减去这一项是为了归一化得分,确保匹配峰的贡献是相对于总峰数的,而不是绝对的。如果没有减去 \mathrm{Factlin}(n), 当理论峰总数 _n 较大时,得分会被夸大。
2.匹配和未匹配的相对影响
匹配峰的贡献是正向的,因此 \mathrm{Factln}(k) 为正不匹配峰的贡献也是组合学的一部分,但对得分的贡献是中性的(因为其本质是计算所有可能的排列数),所以它的符号也为正。
$k$:匹配的峰数。
$n$:理论质量数和匹配数的最大值。
$\mathrm{Factln}\left(x\right)$:是阶乘的对数,避免大数的直接计算。
$p$:理论峰匹配到实验峰的概率。
-
归一化:对于所有修饰组合的得分,进行归一化计算,即将所有组合得分的和作为分母,得到每个组合的局部化概率(LP分数)。
-
输出:最终输出每个修饰组合的得分以及其对应的局部化概率。
MsmsHit.cs 和 Pscore.cs 文件中实现的主要算法
MsmsHit.cs
修饰组合的生成:在质谱分析中,肽段上可能存在多个修饰(如丙酰化或磷酸化),该文件中包含生成修饰组合的算法。这一功能通过修饰状态对象 PeptideModificationState 和组合生成方法实现。
Silac指数计算:涉及稳定同位素标记氨基酸(SILAC)数据处理的算法,用于计算SILAC标签。
峰强度、质量差和注释的提取:包含计算不同修饰状态的质量与实验质谱数据匹配的注释和强度的处理。
序列质量计算:使用修饰后的肽段序列计算单一的“理论质量”值,用于与实验质量匹配。
计算得分的核心部分:该文件包含对PScore算法的调用,用于计算质谱峰的匹配得分和修饰位置的局部化概率。
Pscore.cs
Andromeda得分计算:Pscore.cs 中实现了Andromeda算法的得分计算,包括匹配峰数、质量匹配、和得分的归一化。Score 函数是Andromeda算法的核心。
局部化概率(LP)分数计算:基于Andromeda得分,计算特定修饰组合在多个修饰位点的概率分布,即局部化概率。
匹配数计算:通过 CountMatches 函数,计算理论质量与实验峰的匹配数。
修饰组合生成:通过 ApplyVariableModificationsFixedNumbers 等函数生成所有可能的修饰组合,并计算这些组合的Andromeda得分。
LP 分数介绍
代码逻辑位于:Pscore.cs
局部化概率 (LP) 是用来衡量翻译后修饰 (PTM),例如磷酸化位点,在肽段序列中定位可靠性的指标。
严格复刻 MsmsHit.cs 和 Pscore.cs 的关键是细节的还原,包括修饰生成逻辑、匹配容差、得分公式中的缩放方式等。
单位介绍
Da 或 ppm 单位介绍
Da(道尔顿):是一种质量单位,主要用于分子和原子的质量。1 Da 等于1/12的碳-12原子质量(约为 1.66053906660 × 10⁻²⁷ 千克)。在质谱中,Da 表示质量差,例如某个肽段或离子的理论质量和实验质量之间的差异,以绝对数值表示。
ppm(百万分率):是一种相对单位,用于表示误差或偏差的相对大小。
在质谱中,ppm表示理论质量和实验质量之间的差异相对于理论质量的比例。例如,如果理论质量为 1000 Da,容差为 10 ppm,则允许的误差范围是 1000 × 10⁻⁶ = 0.01 Da。