Files
l2l/rebuildinpython/README.md
lingyu zeng 253ccd12c6 first add
2024-11-27 08:48:24 +00:00

158 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Andromeda得分计算
`Spec/Pscore.cs` 中实现了Andromeda算法的得分计算包括匹配峰数、质量匹配、和得分的归一化。Score 函数是Andromeda算法的核心。
Andromeda算法的流程包括以下步骤
1. 输入准备:输入理论肽段质量数组和实验质谱数据,包括实验峰的质量和强度。
2. 修饰组合生成:根据修饰位置和修饰类型生成所有可能的组合,例如可能的修饰位置上分别有磷酸化、乙酰化等修饰。
3. 匹配计算对于每个修饰组合的理论质量与实验质谱中的峰质量进行匹配。根据指定的容差Da或ppm计算匹配的峰数
4. 得分计算:基于匹配的峰数 $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(1p)$ 是负值($1p$ 接近 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.组合学中的归一化:
Factlnn是所有理论峰的排列总数。减去这一项是为了归一化得分确保匹配峰的贡献是相对于总峰数的而不是绝对的。如果没有减去 $\mathrm{Factlin}(n),$ 当理论峰总数 $_n$ 较大时,得分会被夸大。
2.匹配和未匹配的相对影响
匹配峰的贡献是正向的,因此 $\mathrm{Factln}(k)$ 为正不匹配峰的贡献也是组合学的一部分,但对得分的贡献是中性的(因为其本质是计算所有可能的排列数),所以它的符号也为正。
$k$:匹配的峰数。
$n$:理论质量数和匹配数的最大值。
$\mathrm{Factln}\left(x\right)$:是阶乘的对数,避免大数的直接计算。
$p$:理论峰匹配到实验峰的概率。
5. 归一化对于所有修饰组合的得分进行归一化计算即将所有组合得分的和作为分母得到每个组合的局部化概率LP分数
6. 输出:最终输出每个修饰组合的得分以及其对应的局部化概率。
## 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。