第3章:序列获取与质量评估

解读完InterProScan的结果,下一步就是动手验证。但在设计PCR引物或合成基因之前,你得先把手里的序列摸透。说白了,序列质量不过关,后续实验全是白搭。我个人就吃过这个亏——一次项目里用了某个公共数据库的序列,结果扩增出来的片段跟预测差了好几百个碱基,一查才发现是拼接错误。从那之后,我养成了拿到序列必先做质量评估的习惯。

3.1 序列获取的途径与标准流程

获取目标序列,通常有这几种路子:

  • 公共数据库下载:NCBI、UniProt、Ensembl 是最常用的来源。我个人习惯优先选 UniProt 的 reviewed(Swiss-Prot)条目,注释质量有保障。
  • 本地测序数据提取:如果课题是自己做的组学项目,需要从 fasta/fastq 里拼接出目标区域。
  • 实验室前期克隆:从已有的质粒或菌株里重新测序确认。

不管哪种途径,拿到序列后第一步是核对 ID。你想想看,InterProScan 结果里给出的序列 ID 是 UniProt 的 Accession,比如 P68871。下载时千万别把版本号搞混。我建议用 esearch 和 efetch 工具自动获取:

esearch -db protein -query "P68871" | efetch -format fasta > hb_human.fasta

拿到 fasta 文件后,立刻用 grep 检查序列头是否包含完整元数据:

grep "^>" hb_human.fasta

输出应该类似这样:

>sp|P68871|HBB_HUMAN Hemoglobin subunit beta OS=Homo sapiens OX=9606 GN=HBB PE=1 SV=2

如果头信息里缺少物种名或基因名,我通常会补上注释,避免后期跟合作者交接时产生歧义。

3.2 质量问题:一看二算三比对

拿到序列后,质量评估我习惯分三步走。为什么这么分?因为在实际项目中,坑往往藏在最不起眼的地方。

评估步骤 检查内容 常见陷阱
一看:基础特征 长度、GC含量、碱基组成 序列断裂、含有不明碱基 N
二算:编码完整性 ORF 是否存在提前终止、起始密码子是否对齐 5'端缺失,导致结构域预测不完整
三比对:一致性验证 与同源序列做 BLAST,确认物种特异性 序列污染,混杂了其他物种的片段

避坑指南:我曾经遇到一个 case,序列长度完全正确,InterProScan 也预测了完整的结构域,但扩增出来的蛋白就是不溶。后来重新比对才发现,序列在第 120 位附近有一个连续的 N 区域,实际上是测序拼接时的 gap。所以不要只看结构域,要逐段检查碱基的连续性和质量值。

快速评估,可以在命令行里用 BioPython 写几行脚本:

from Bio import SeqIO
for record in SeqIO.parse("target.fasta", "fasta"):
    seq = str(record.seq)
    length = len(seq)
    gc = (seq.count("G") + seq.count("C")) / length * 100
    n_count = seq.count("N")
    print(f"{record.id}: len={length}, GC={gc:.1f}%, N={n_count}")

输出示例:

P68871: len=147, GC=39.5%, N=0
Q9Y6N6: len=521, GC=41.2%, N=3  # 需要排查!

看到 N 数量不是 0,就得警惕。3 个 N 对于 500 多 bp 的序列来说,可能是测序低质量区域。我会建议去 NCBI 查看原始 trace 文件,或者再找一条独立来源的序列做交叉验证。

3.3 在线数据库的序列核查

你以为从 UniProt 下载就万无一失?其实没那么简单。同一个蛋白在不同数据库中,序列版本可能有差异。我有一次做结构域验证,发现 Ensembl 和 UniProt 的序列差了 2 个氨基酸。怎么回事?一个是基于参考基因组预测的,另一个是直接测序的转录本。

具体的核查流程如下:

  1. 交叉核对 Accession 版本:确保 UniProt 的 Accession 与 NCBI 的 GI 或 RefSeq 一致。
  2. 比对全长序列:用 blastp 或 water(EMBOSS)做双序列比对。
  3. 检查注释日期:旧版本的序列往往缺乏后续的纠错更新。

一段实用的比对命令:

water -asequence uniprot.fasta -bsequence ncbi.fasta -gapopen 10 -gapextend 0.5 -outfile alignment.txt

输出的比对文件会显示差异位点。如果差异出现在结构域内部,那就不能直接拿来做实验设计,必须进一步确认哪一个版本是功能正确的。

3.4 核心流程的完整总结

好了,上面聊了不少细节。为了让思路更清楚,我画了一张流程图,把序列获取到质量评估的整个决策链串起来。你对照着这张图,能更快找到自己卡在哪一步。

序列获取与质量评估核心流程 公共数据库/本地测序 基础特征检查 编码完整性 (ORF检查) BLAST/双序列比对 人工核查与交叉验证 通过 → 进入实验验证 常见问题 • 序列污染 • 版本不一致 • 5'/3'端缺失 核查工具 • esearch/efetch • blastp/water • BioPython

我的小习惯:拿到序列后,我一般先跑一个QuickCheck脚本(上面那个BioPython的加强版),然后才去看InterProScan的结构域注释。若基础特征就不及格,后续讨论结构域位置毫无意义。反之,如果序列通过了前三步,基本可以放心拿去做引物设计或基因合成。

在实际项目里,我还会多做一件小事——把通过评估的序列保存成一个专用的“实验级序列库”,跟原始数据库下载的分开放。这样设计引物时永远不会拿错版本。你可以试试看,组织得越清楚,后续验证就越不容易翻车。