first add

This commit is contained in:
lingyu zeng
2024-11-27 08:48:24 +00:00
commit 253ccd12c6
27 changed files with 65307 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
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)