405_蛋白基因组学Proteogenomics¶
一句话说明¶
蛋白基因组学(Proteogenomics)就是用质谱数据验证基因组预测的蛋白序列,发现新型蛋白和突变肽段。
核心知识点¶
什么是蛋白基因组学¶
- 传统流程:质谱肽段 → 搜标准蛋白数据库(UniProt)
- 蛋白基因组学:质谱肽段 → 搜基于基因组/转录组定制数据库
- 核心价值:发现标准数据库中没有的蛋白(新ORF、体细胞突变肽段、RNA编辑肽段)
定制数据库来源¶
| 来源 | 内容 | 用途 |
|---|---|---|
| 基因组VCF | 肿瘤体细胞突变 | 新抗原预测 |
| RNA-seq | 样本特异性转录本 | 新ORF发现 |
| Ribo-seq | 翻译组数据 | 验证翻译产物 |
| 三框翻译 | 基因组所有ORF | 非经典蛋白 |
应用场景¶
- 肿瘤新抗原:体细胞突变产生的突变肽段,用于免疫治疗
- 非经典蛋白:lncRNA翻译的小蛋白(micropeptide)
- 数据库更新:验证基因组注释的正确性
实战代码¶
# ========== 蛋白基因组学分析流程示例 ==========
# ========== 1. 从VCF生成突变肽段数据库 ==========
def vcf_to_mutant_peptides(vcf_file, reference_fasta, upstream=10, downstream=10):
"""
从VCF文件生成突变肽段序列
原理:取突变位点前后各10个氨基酸,生成突变版本和野生型版本
"""
# 简化示例,实际使用 pyvcf 或 cyvcf2
mutations = [
{"chrom": "chr1", "pos": 1000, "ref": "G", "alt": "A",
"gene": "TP53", "codon_change": "R175H"},
{"chrom": "chr7", "pos": 2000, "ref": "C", "alt": "T",
"gene": "KRAS", "codon_change": "G12D"},
]
# 氨基酸单字母代码对照表
aa_table = {
"Arg": "R", "His": "H", "Lys": "K", "Asp": "D", "Glu": "E",
"Gly": "G", "Ala": "A", "Val": "V", "Leu": "L", "Ile": "I",
"Pro": "P", "Phe": "F", "Trp": "W", "Met": "M", "Ser": "S",
"Thr": "T", "Cys": "C", "Tyr": "Y", "Asn": "N", "Gln": "Q"
}
peptides = []
for mut in mutations:
# 解析氨基酸变化(例如 "R175H" = 第175位R突变为H)
ref_aa = mut["codon_change"][0] # 野生型氨基酸
mut_aa = mut["codon_change"][-1] # 突变氨基酸
position = int(mut["codon_change"][1:-1]) # 位置
# 模拟蛋白质序列(实际从FASTA文件提取)
mock_protein = "MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGP"
# 确保位置在蛋白范围内
if position <= len(mock_protein):
start = max(0, position - upstream - 1)
end = min(len(mock_protein), position + downstream)
# 提取突变肽段(包含突变位点)
mutant_peptide = mock_protein[start:position-1] + mut_aa + mock_protein[position:end]
wild_peptide = mock_protein[start:end] # 野生型对照
peptides.append({
"gene": mut["gene"],
"mutation": mut["codon_change"],
"mutant_peptide": mutant_peptide,
"wild_type_peptide": wild_peptide
})
return peptides
mutations = vcf_to_mutant_peptides("tumor.vcf", "hg38.fa")
for m in mutations:
print(f"基因: {m['gene']}, 突变: {m['mutation']}")
print(f" 突变肽段: {m['mutant_peptide']}")
print(f" 野生型: {m['wild_type_peptide']}")
# ========== 2. 生成自定义搜库数据库(FASTA格式) ==========
def create_custom_database(mutations, output_fasta="custom_db.fasta"):
"""
将突变肽段写入FASTA格式数据库,用于质谱搜库
格式:>蛋白ID 描述信息
氨基酸序列
"""
with open(output_fasta, "w") as f:
for i, mut in enumerate(mutations):
# 突变肽段条目
f.write(f">MUT_{mut['gene']}_{mut['mutation']} mutant_peptide\n")
f.write(f"{mut['mutant_peptide']}\n")
# 野生型对照条目
f.write(f">WT_{mut['gene']}_{mut['mutation']} wild_type_peptide\n")
f.write(f"{mut['wild_type_peptide']}\n")
print(f"数据库已写入: {output_fasta}")
create_custom_database(mutations)
# ========== 3. 分析质谱搜库结果(PSM过滤) ==========
import pandas as pd
import numpy as np
# 模拟质谱搜库输出(PSM = Peptide-Spectrum Match,肽段-谱图匹配)
psm_results = pd.DataFrame({
"peptide_sequence": ["SVEPPLSQETF", "LMLSPDDIEQW", "MEEPQSDPSVEP", "KLLPENNVLS"],
"protein_id": ["MUT_TP53_R175H", "WT_TP53_R175H", "MUT_KRAS_G12D", "WT_KRAS_G12D"],
"score": [85.2, 72.1, 91.5, 68.3], # 搜库打分
"pep": [0.001, 0.01, 0.0005, 0.02], # Posterior Error Probability(越小越好)
"unique_peptide": [True, True, True, True] # 是否为蛋白特异肽段
})
# ========== 4. 过滤高置信度突变肽段 ==========
# FDR < 1%:PEP < 0.01 且分数足够高
confident_psm = psm_results[
(psm_results["pep"] < 0.01) & # 假阳性率 < 1%
(psm_results["score"] > 75) & # 打分阈值
(psm_results["protein_id"].str.startswith("MUT_")) # 只保留突变肽段
]
print("\n高置信度突变肽段:")
print(confident_psm[["peptide_sequence", "protein_id", "score", "pep"]].to_string(index=False))
# ========== 5. 统计各类别蛋白的分布 ==========
psm_results["category"] = psm_results["protein_id"].apply(
lambda x: "Mutant" if x.startswith("MUT_") else "Wild-type"
)
category_counts = psm_results.groupby("category").size()
print("\n各类别PSM数量:")
print(category_counts)
面试常问点¶
Q: 蛋白基因组学与常规蛋白组学的搜库有什么不同? A: 常规搜UniProt标准数据库;蛋白基因组学搜定制数据库(基于VCF/RNA-seq生成),能发现非标准蛋白序列。
Q: 什么是6框翻译(6-frame translation)? A: 基因组DNA有正负链各3个阅读框,共6个阅读框,全部翻译成蛋白序列用于搜库,可发现未注释的ORF。
Q: 如何验证发现的新型蛋白是真实的? A: 多肽段覆盖验证、正交实验(Western blot/免疫沉淀)、Ribo-seq验证翻译、在独立队列中重现。
Q: 假阳性如何控制? A: 靶-诱饵(target-decoy)策略:在数据库中加入随机序列(decoy),统计匹配到decoy的比例估算FDR。
速查表¶
| 工具 | 功能 |
|---|---|
| MaxQuant | 蛋白组定量搜库 |
| Percolator | PSM打分重校正(半监督学习) |
| ProteoWizard | 质谱文件格式转换 |
| pyteomics | Python解析质谱数据 |
| PGTools | 蛋白基因组学专用流程 |
| Proteomics DB | 人类蛋白图谱数据库 |