跳转至

蛋白质亚细胞定位预测

一句话概述:蛋白质亚细胞定位预测就是回答"这个蛋白质在细胞哪个房间工作"——是在细胞核里当管理层,还是在细胞膜上当保安,还是在线粒体里发电,对理解蛋白质功能至关重要。

核心知识点表

知识点白话解释重要程度
亚细胞定位蛋白质在细胞哪个"房间"工作⭐⭐⭐⭐⭐
信号肽蛋白质N端的"地址标签",指引蛋白去分泌途径⭐⭐⭐⭐⭐
跨膜域蛋白质穿过细胞膜的部分,像"钉子"钉在膜上⭐⭐⭐⭐
核定位信号(NLS)把蛋白质送进细胞核的"通行证"⭐⭐⭐⭐
DeepLoc基于深度学习的亚细胞定位预测工具(最新)⭐⭐⭐⭐⭐
SignalP信号肽预测的金标准工具⭐⭐⭐⭐⭐
TMHMM/DeepTMHMM跨膜域预测工具⭐⭐⭐⭐

一、亚细胞定位基础

细胞 = 一栋大楼,蛋白质 = 大楼里的员工

主要"房间"(亚细胞区室):
──────────────────────────────────
区室              白话解释              常驻蛋白质
──────────────────────────────────
细胞核(Nucleus)   总经理办公室          转录因子、组蛋白
细胞质(Cytoplasm) 开放式办公区          代谢酶、信号分子
细胞膜(Membrane)  大门保安              受体、通道蛋白
线粒体            发电机房              呼吸链复合体
内质网(ER)        快递包装中心          蛋白质折叠酶
高尔基体          快递分发站            糖基化酶
溶酶体            垃圾处理厂            水解酶
过氧化物酶体      危险品处理间          氧化酶
分泌途径          快递出门              分泌蛋白
──────────────────────────────────

"地址标签"(定位信号):
  信号肽 → "请送到分泌途径"(N端,20-30个氨基酸)
  NLS    → "请送进细胞核"(如PKKKRKV)
  NES    → "请送出细胞核"(富含亮氨酸)
  MTS    → "请送进线粒体"(N端,正电荷+两亲性α螺旋)
  跨膜域 → "请钉在膜上"(约20个疏水氨基酸)

二、DeepLoc 2.0 亚细胞定位预测

2.1 在线使用

# DeepLoc 2.0 在线工具
# 网址:https://services.healthtech.dtu.dk/services/DeepLoc-2.0/

# 输入:蛋白质FASTA序列
# 输出:每个亚细胞区室的预测概率

# 支持的定位类别(10类):
# 1. Cytoplasm(细胞质)
# 2. Nucleus(细胞核)
# 3. Extracellular(胞外/分泌)
# 4. Cell membrane(细胞膜)
# 5. Mitochondrion(线粒体)
# 6. Endoplasmic reticulum(内质网)
# 7. Golgi apparatus(高尔基体)
# 8. Lysosome/Vacuole(溶酶体)
# 9. Peroxisome(过氧化物酶体)
# 10. Plastid(质体,植物专用)

2.2 批量预测(Python)

#!/usr/bin/env python3
"""批量进行蛋白质亚细胞定位预测"""

import requests  # HTTP请求
import time  # 延迟
from Bio import SeqIO  # 序列解析
import pandas as pd  # 数据处理

# ========== 使用UniProt注释获取定位信息 ==========
def get_subcellular_location(uniprot_id):
    """从UniProt获取蛋白质的亚细胞定位注释"""

    url = f"https://rest.uniprot.org/uniprotkb/{uniprot_id}.json"  # UniProt API
    response = requests.get(url)  # 发送请求

    if response.status_code != 200:
        return None

    data = response.json()

    # 提取亚细胞定位信息
    locations = []
    comments = data.get("comments", [])
    for comment in comments:
        if comment.get("commentType") == "SUBCELLULAR LOCATION":  # 找亚细胞定位注释
            for loc in comment.get("subcellularLocations", []):
                location = loc.get("location", {}).get("value", "")
                locations.append(location)

    return locations

# ========== 使用示例 ==========
test_proteins = ["P04637", "P00533", "P42336", "Q9UHD2"]  # TP53, EGFR, PIK3CA, TBK1

results = []
for uid in test_proteins:
    locs = get_subcellular_location(uid)
    results.append({"UniProt_ID": uid, "Locations": "; ".join(locs) if locs else "N/A"})
    print(f"{uid}: {locs}")
    time.sleep(0.5)  # 每次请求间隔0.5秒(避免被限流)

# 转为表格
df = pd.DataFrame(results)
print("\n===== 亚细胞定位结果 =====")
print(df.to_string(index=False))

三、SignalP 6.0 信号肽预测

# ========== SignalP在线使用 ==========
# 网址:https://services.healthtech.dtu.dk/services/SignalP-6.0/
# 输入:蛋白质FASTA序列
# 输出:是否有信号肽、切割位点位置

# ========== 命令行安装(需申请license) ==========
# 下载SignalP 6.0
# 注册后从DTU下载

# 运行SignalP
signalp6 \
    --fastafile proteins.fasta \    # 输入文件
    --output_dir signalp_results \  # 输出目录
    --format txt \                  # 输出格式
    --organism eukarya \            # 生物类型:真核/古菌/革兰氏阳性/阴性
    --mode fast                     # 运行模式:fast或slow
#!/usr/bin/env python3
"""解析SignalP结果"""

import pandas as pd  # 数据处理

# ========== 简单的信号肽特征检测 ==========
def check_signal_peptide_features(sequence):
    """基于基本规则检查信号肽特征"""

    # 信号肽的三个区域
    # n-region: N端正电荷区(1-5个氨基酸)
    # h-region: 中间疏水核心(7-15个氨基酸)
    # c-region: C端切割位点区(3-7个氨基酸)

    if len(sequence) < 20:  # 序列太短
        return {"has_sp": False, "reason": "序列太短"}

    n_region = sequence[:5]  # 前5个氨基酸
    h_region = sequence[5:20]  # 5-20位氨基酸

    # 检查N端正电荷(K或R)
    positive_count = sum(1 for aa in n_region if aa in "KR")

    # 检查疏水核心
    hydrophobic = "AILMFVW"  # 疏水氨基酸
    hydro_count = sum(1 for aa in h_region if aa in hydrophobic)
    hydro_ratio = hydro_count / len(h_region)

    # 简单判断
    has_sp = positive_count >= 1 and hydro_ratio > 0.5

    return {
        "has_sp": has_sp,  # 是否可能有信号肽
        "n_positive_charge": positive_count,  # N端正电荷数
        "h_hydrophobicity": round(hydro_ratio, 2),  # 疏水比例
        "n_region": n_region,  # N端序列
        "h_region": h_region  # 疏水核心序列
    }

# ========== 测试 ==========
# 有信号肽的蛋白质(人胰岛素前体)
insulin = "MALWMRLLPLLALLALWGPDPAAA"  # 胰岛素信号肽
result = check_signal_peptide_features(insulin)
print(f"胰岛素前体: {result}")

# 没有信号肽的蛋白质(p53)
p53 = "MEEPQSDPSVEPPLSQETFSDLWKL"
result2 = check_signal_peptide_features(p53)
print(f"p53蛋白: {result2}")

四、TMHMM/DeepTMHMM 跨膜域预测

# ========== DeepTMHMM在线使用 ==========
# 网址:https://services.healthtech.dtu.dk/services/DeepTMHMM-1.0/

# 输入:蛋白质FASTA序列
# 输出:每个残基的拓扑预测
#   i = 细胞内
#   o = 细胞外
#   M = 跨膜区
#   S = 信号肽
#!/usr/bin/env python3
"""简单的跨膜域预测(基于疏水性分析)"""

import matplotlib.pyplot as plt  # 画图
import numpy as np  # 数值计算

# Kyte-Doolittle疏水性量表
KD_SCALE = {
    'A': 1.8, 'R': -4.5, 'N': -3.5, 'D': -3.5, 'C': 2.5,
    'Q': -3.5, 'E': -3.5, 'G': -0.4, 'H': -3.2, 'I': 4.5,
    'L': 3.8, 'K': -3.9, 'M': 1.9, 'F': 2.8, 'P': -1.6,
    'S': -0.8, 'T': -0.7, 'W': -0.9, 'Y': -1.3, 'V': 4.2
}

def hydropathy_plot(sequence, window=19, name="protein"):
    """
    Kyte-Doolittle疏水性图
    跨膜域通常是连续的高疏水性区域(平均值>1.6,长度≥20)
    """
    scores = []
    positions = []

    for i in range(len(sequence) - window + 1):  # 滑动窗口
        window_seq = sequence[i:i+window]  # 取窗口内的序列
        avg_score = np.mean([KD_SCALE.get(aa, 0) for aa in window_seq])  # 计算平均疏水性
        scores.append(avg_score)
        positions.append(i + window // 2)  # 窗口中心位置

    # 找潜在跨膜域(疏水性>1.6的连续区域)
    tm_regions = []
    in_tm = False
    start = 0
    for i, s in enumerate(scores):
        if s > 1.6 and not in_tm:  # 进入跨膜域
            in_tm = True
            start = positions[i]
        elif s <= 1.6 and in_tm:  # 离开跨膜域
            in_tm = False
            if positions[i] - start >= 15:  # 长度≥15个氨基酸才算
                tm_regions.append((start, positions[i]))

    # 画图
    plt.figure(figsize=(14, 5))
    plt.plot(positions, scores, color="steelblue", linewidth=1.5)  # 疏水性曲线
    plt.axhline(y=1.6, color="red", linestyle="--", alpha=0.7, label="TM threshold (1.6)")  # 阈值线
    plt.axhline(y=0, color="gray", linestyle="-", alpha=0.3)  # 零线

    # 标注跨膜域
    for start, end in tm_regions:
        plt.axvspan(start, end, alpha=0.2, color="red", label=f"TM {start}-{end}")

    plt.xlabel("Residue Position", fontsize=12)
    plt.ylabel("Hydropathy Score", fontsize=12)
    plt.title(f"Kyte-Doolittle Hydropathy Plot - {name}", fontsize=14)
    plt.legend()
    plt.tight_layout()
    plt.savefig(f"hydropathy_{name}.png", dpi=300)
    plt.close()

    print(f"预测的跨膜域: {tm_regions if tm_regions else '无'}")
    return tm_regions

# ========== 测试 ==========
# EGFR(有一个跨膜域)
egfr_tm_region = "IATGMVGALLLLLVVALGIGLFMRR"  # EGFR跨膜区附近序列
# 完整序列太长,这里只展示原理
print("跨膜域预测工具:建议使用DeepTMHMM在线版获取准确结果")

常见报错与解决

报错信息原因解决方法
Sequence too long在线工具有序列长度限制分批提交或使用本地版
Invalid characters序列含非标准氨基酸将X/U等替换为标准氨基酸或删除
Server busy在线服务器繁忙过一会再试,或使用本地安装版
No prediction序列格式不是FASTA确保有>开头的标题行
License expiredSignalP本地版license过期重新申请academic license

速查表

========================================
蛋白质亚细胞定位预测 速查表
========================================

【主要预测工具】
DeepLoc 2.0          → 综合定位预测(深度学习,10类)
SignalP 6.0          → 信号肽预测(金标准)
DeepTMHMM            → 跨膜域预测
TargetP 2.0          → 分泌途径/线粒体/叶绿体分选
NucPred              → 核定位预测
MitoFates            → 线粒体定位预测

【定位信号特征】
信号肽               → N端, 20-30aa, 疏水核心
NLS核定位信号        → 富含K/R(如PKKKRKV)
NES核输出信号        → 富含L(LxxxLxxLxL)
MTS线粒体靶向信号    → N端, 正电荷, 两亲性螺旋
GPI锚定信号          → C端, 预测切割位点

【定位信号识别规则】
分泌蛋白             → 有信号肽, 无跨膜域
膜蛋白               → 有信号肽或跨膜域
细胞核蛋白           → 有NLS
线粒体蛋白           → 有MTS
细胞质蛋白           → 无上述信号

【在线工具网址】
DeepLoc              → services.healthtech.dtu.dk
SignalP              → services.healthtech.dtu.dk
DeepTMHMM            → services.healthtech.dtu.dk
UniProt定位注释      → uniprot.org

【面试考点】
Q: 信号肽的结构是什么?
A: 三段式:n区(正电荷)+ h区(疏水核心)+ c区(切割位点)

Q: 怎么区分分泌蛋白和膜蛋白?
A: 分泌蛋白有信号肽但无跨膜域;膜蛋白有跨膜域

Q: DeepLoc用的什么算法?
A: 基于预训练蛋白质语言模型(如ESM)的深度学习分类器
========================================

参考资料:DeepLoc 2.0 | SignalP 6.0 | DeepTMHMM | UniProt | DTU Health Tech