文章目录
- 前言
- 一、准备工作
- 1. 安装CPAT
- 2. 下载物种特异性模型
- 二、准备sORF核酸序列
- 1. 获取sORF的拼接核酸序列
- 示例脚本(假设已获得外显子fasta):
- 三、运行CPAT预测编码潜能
- 1. 准备CPAT模型和hexamer表
- 2. 运行CPAT
- 四、结果解读
- 五、常见问题与排查
- 1. 报“No ORFs found for ...”怎么办?
- 2. 可以直接用基因组区间序列吗?
- 3. 如何批量筛选高编码潜能的sORF?
- 六、总结
前言
**sORF(small Open Reading Frame,小开放阅读框)**在基因组中广泛存在,越来越多研究发现它们具有重要的生物学功能。如何判断一个sORF是否具有编码蛋白的潜能?**CPAT(Coding Potential Assessment Tool)**是目前主流的编码潜能预测软件之一。本文将手把手教你如何用CPAT预测sORF的编码潜能,适合Ribo-seq、转录组等多种场景。
一、准备工作
1. 安装CPAT
CPAT支持Python 2和3,推荐用conda安装:
conda create -n cpat python=3.8
conda activate cpat
pip install CPAT
或直接用pip:
pip install CPAT
2. 下载物种特异性模型
CPAT需要物种特异性的训练模型。人、小鼠、斑马鱼等常见物种可在CPAT官网下载。
如需自建模型,可参考官方文档。
二、准备sORF核酸序列
1. 获取sORF的拼接核酸序列
- 注意:CPAT的输入必须是拼接后的ORF核酸序列(即mRNA区段),不能直接用基因组区间!
- 推荐流程:
- 用RiboCode等工具注释sORF,获得GTF和外显子区间,参照文章 2025.06.11【Ribo-seq】|根据注释文件获取外显子及ORF序列
- 用bedtools和Python脚本拼接外显子,得到每个sORF的完整核酸序列(FASTA格式)。
示例脚本(假设已获得外显子fasta):
from Bio import SeqIO
from collections import defaultdict
import reexon_seqs = list(SeqIO.parse("orf_exons.fa", "fasta"))
orf_exons = defaultdict(list)
for record in exon_seqs:m = re.match(r"(.+?)::(.+?):(\d+)-(\\d+)\\(([-+])\\)", record.id)if not m:continueorf_id, chrom, start, end, strand = m.groups()start = int(start)orf_exons[(orf_id, strand)].append((start, record.seq))with open("orfs.fa", "w") as out:for (orf_id, strand), exons in orf_exons.items():exons.sort(reverse=(strand == "-"))seq = "".join(str(seq) for _, seq in exons)if len(seq) < 300: # 只保留小于300nt的sORFout.write(f">{orf_id}\\n{seq}\\n")
三、运行CPAT预测编码潜能
1. 准备CPAT模型和hexamer表
以人类为例,假设模型和hexamer表为:
Human_logitModel.RData
Human_Hexamer.tsv
2. 运行CPAT
cpat.py -g orfs.fa \-d Human_logitModel.RData \-x Human_Hexamer.tsv \-o cpat_result.txt
参数说明:
-g
:输入的sORF核酸序列(FASTA格式)-d
:物种特异性模型-x
:hexamer表-o
:输出结果
四、结果解读
输出文件cpat_result.txt
包含如下主要字段:
ID | mRNA_size | ORF_size | Fickett_score | Hexamer_score | Coding_prob |
---|---|---|---|---|---|
… | … | … | … | … | … |
- Coding_prob:编码潜能概率,越接近1越可能编码蛋白。
- 一般阈值:人类推荐0.364,具体可参考CPAT官方或文献。
五、常见问题与排查
1. 报“No ORFs found for …”怎么办?
- 检查输入序列是否为拼接后的ORF区段,且包含ATG起始和终止密码子。
- 检查FASTA格式是否正确。
- 检查序列是否过短或有N等不明碱基。
2. 可以直接用基因组区间序列吗?
不可以!
必须用拼接后的ORF核酸序列,否则会混入内含子,导致预测结果不准确。
3. 如何批量筛选高编码潜能的sORF?
awk '$6 > 0.364' cpat_result.txt > cpat_high_coding.txt
六、总结
- CPAT是sORF编码潜能预测的利器,但输入必须是拼接后的ORF核酸序列。
- 推荐结合RiboCode、bedtools、Python脚本等工具,批量提取sORF序列。
- 结果需结合生物学背景和其他证据综合判断。
🌟 非常感谢您抽出宝贵的时间阅读我的文章。如果您觉得这篇文章对您有所帮助,或者激发了您对生物信息学的兴趣,我诚挚地邀请您:
👍 点赞这篇文章,让更多人看到我们共同的热爱和追求。
🔔 关注我的账号,不错过每一次知识的分享和探索的旅程。
📢 您的每一个点赞和关注都是对我最大的支持和鼓励,也是推动我继续创作优质内容的动力。
📚 我承诺,将持续为您带来深度与广度兼具的生物信息学内容,让我们一起在知识的海洋中遨游,发现更多未知的奇迹。
💌 如果您有任何问题或想要进一步交流,欢迎在评论区留言,我会尽快回复您。