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

41 lines
1.1 KiB
Python
Raw Permalink 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.
import numpy as np
from andromeda import andromeda_score
def lp_score(masses, spec_masses, spec_intensities, tol=0.1, p=0.06):
"""
计算局部化概率LP分数。
参数:
- masses: 理论质谱峰列表
- spec_masses: 实验质谱峰列表
- spec_intensities: 实验峰对应的强度
- tol: 质量容差
- p: 匹配概率
返回:
- LP分数
"""
# 初始化匹配计数
k = 0
for mass in masses:
# 找到最近的实验峰并检查匹配
closest_idx = np.abs(np.array(spec_masses) - mass).argmin()
if np.abs(spec_masses[closest_idx] - mass) <= tol:
k += 1
# 计算Andromeda得分
n = len(masses) # 理论峰总数
base_score = andromeda_score(k, n, p)
# 计算LP归一化
lp = np.exp((base_score - 100) * np.log(10) / 10)
lp /= np.sum(lp) # 归一化操作
return lp
# 示例计算
masses = [100, 105, 110, 115, 120] # 示例理论峰
spec_masses = [101, 106, 111, 116, 121] # 示例实验峰
spec_intensities = [10, 20, 30, 40, 50] # 实验峰强度
lp_score(masses, spec_masses, spec_intensities)