文章目錄
- 前言
- 一、準備工作
- 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序列。
- 結果需結合生物學背景和其他證據綜合判斷。
🌟 非常感謝您抽出寶貴的時間閱讀我的文章。如果您覺得這篇文章對您有所幫助,或者激發了您對生物信息學的興趣,我誠摯地邀請您:
👍 點贊這篇文章,讓更多人看到我們共同的熱愛和追求。
🔔 關注我的賬號,不錯過每一次知識的分享和探索的旅程。
📢 您的每一個點贊和關注都是對我最大的支持和鼓勵,也是推動我繼續創作優質內容的動力。
📚 我承諾,將持續為您帶來深度與廣度兼具的生物信息學內容,讓我們一起在知識的海洋中遨游,發現更多未知的奇跡。
💌 如果您有任何問題或想要進一步交流,歡迎在評論區留言,我會盡快回復您。