CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
1.前言
在基因功能注释过程中,部分基因可能因 转座子(TE,Transposable Elements)插入 而失活。尽管这些基因仍然能够被功能注释工具(如 eggNOG-mapper)识别,但实际上它们可能已不具备生物学功能。因此,在进行基因组功能注释前,需 先检测含有转座子序列的基因,并进行筛除,以提高注释结果的准确性。
常用的 TE 检测工具包括:
• TransposonPSI
• TEsorter(本文重点介绍)
2.TEsorter 安装
TEsorter 最初是用于结合 LTR_retriever 鉴定 长末端重复反转座子(LTR-RTs),但其功能可扩展到 其他类型的转座子 鉴定。TEsorter 的核心原理是将输入序列与 TE 序列数据库 进行比对,识别基因中是否包含已知的转座子序列。
目前 TEsorter 支持两种数据库:
1. REXdb(默认):由 viridiplantae_v3.0 + metazoa_v3 整合而成,适用于大部分生物物种。
2. GyDB:用户可选择 GyDB 数据库,官网提供相应的使用参数。
🛠 安装步骤
TEsorter 支持 Conda 安装:
# 1️⃣ 创建新的 Conda 环境
conda create -n TEsorter_env python=3.11 -y
conda activate TEsorter_env
# 2️⃣ 安装依赖(官方要求 Python 版本必须高于 3,否则会报错)
conda install biopython
conda install conda-forge::xopen
conda install bioconda::hmmer
conda install bioconda::blast
conda install -c bioconda tesorter
📥 手动下载与安装 TEsorter
部分环境可能会遇到安装失败的问题。这里推荐使用 新建 Conda 环境后手动安装依赖 的方式进行安装:
# 1️⃣ 克隆 TEsorter 源码
git clone https://github.com/zhangrengang/TEsorter
cd TEsorter
# 2️⃣ 安装 TEsorter
python setup.py install
🛠 测试安装是否成功
TEsorter TEsorter/test/rice6.9.5.liban
3.TEsorter 运行
在使用 BRAKER 进行基因预测 后,我们通常会得到 GTF 和 GFF3 两种格式的基因注释结果。
为了保持数据完整性,这里建议处理 GTF 结果文件并进行基因筛选。
TEsorter 可以接受两种输入:
• 基因序列文件(DNA 序列)
• 蛋白质序列文件(翻译后的氨基酸序列)
通常,我们以 基因序列(核苷酸序列) 为输入进行筛选。
#!/bin/bash
# 运行 TEsorter
TEsorter /data/wangxingbin/00.Project/01.Toona_Annotation/hap1/03.functionalGene/01.braker3/00.softmasking_braker3/braker3_output/braker.codingseq -eval 1e-6 -p 8
-eval 1e-6 设定 E-value 阈值,过滤低置信度匹配
-p 8 指定使用 8 个 CPU 线程进行计算
4.处理 TEsorter 结果
TEsorter 运行完成后,会输出 多个文件:
.tsv
后缀的文件中以列表形式列出了所有预测的TE类型,一个基因可能有多种类型的TE插入,因此需要处理结果文件,统计含有TE的基因,并在gtf
结果文件中将该基因去除。
5.筛选包含 TE 序列的基因
提取含有TE的基因 ID
grep -v "^#" braker.codingseq.rexdb.cls.tsv | cut -f1 | sort | uniq | cut -f1 -d "_" | sort | uniq > TE-genes.txt
• braker.codingseq.rexdb.cls.tsv 是 TEsorter 注释的结果,第一列是 TE 插入的基因 ID。
• 这一步提取 所有含有 TE 的基因 ID,并存入 TE-genes.txt。
去除含有TE的基因
过滤 GTF(去除含有TE的基因):
# 读取TE-genes.txt中的ID,并逐行过滤braker.gff3文件
grep -vFf TE-genes.txt /data/wangxingbin/00.Project/01.Toona_Annotation/hap1/03.functionalGene/01.braker3/00.softmasking_braker3/braker3_output/braker.gff3 > braker_rmTE.gff3
• 这一步删除 TE-genes.txt 里列出的基因,生成去除 TE 的 GTF 文件 braker_rmTE.gtf。
• braker.codingseq.rexdb.cls.tsv 是 TEsorter 预测的 TE 注释结果。
• cut -f1 提取 TE 影响的基因名称(假设 TEsorter 结果的第一列是基因 ID)。
• cut -f1 -d “_” 进一步提取基因编号(去掉 ID 后缀)。
• sort | uniq 让基因 ID 唯一化,得到受 TE 影响的基因列表 TE-genes.txt。 |
提取去除 TE 的 CDS 和蛋白序列
GENOME_PATH="/data/wangxingbin/00.Project/01.Toona_Annotation/hap1_T2T.fasta"
gffread braker_rmTE.gff3 -g $GENOME_PATH -x hap2_rmTE.codingseq
gffread braker_rmTE.gff3 -g $GENOME_PATH -y hap2_rmTE.aa
• -x hap1_rmTE.codingseq 提取 CDS(编码序列)。
• -y hap1_rmTE.aa 提取 蛋白序列。
统计基因信息
awk '$3=="gene" {sum+=($5-$4); count++} END {print "Total length:", sum, "Total genes:", count, "Average length:", sum/count}' braker_rmTE.gff3
示例输出:
hap1: Total length: 110777936 Total genes: 35790 Average length: 3095.22
hap2: Total length: 110503406 Total genes: 35543 Average length: 3109.01