基因组注释从0开始(5):预测基因筛选

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