Augustus 3.5.0安装与使用--bioinfomatics tools-077
介绍
AUGUSTUS 是一款用于在一个或多个基因组中识别基因及其结构的程序。
https://github.com/Gaius-Augustus/Augustus #官网
安装
Windows
Windows 用户可借助 Windows 子系统 Linux(WSL)安装 AUGUSTUS,安装步骤与下述 Linux 系统的安装方法完全一致。AUGUSTUS 对应的 WSL 配置方法详见此链接。
Ubuntu 18.04、Debian 9 及更高版本
在 Ubuntu 21.04 和 Debian 11 版本之前,仅提供单基因组版本;自该版本起,新增比较基因预测功能。
sudo apt install augustus augustus-data augustus-doc
Docker
通过以下命令基于 Dockerfile 创建 docker 镜像:
git clone https://github.com/Gaius-Augustus/Augustus.git
cd Augustus
docker build -t augustus .
Singularity
通过以下命令基于 Singularity 定义文件创建 Singularity 镜像文件:
git clone https://github.com/Gaius-Augustus/Augustus.git
cd Augustus
singularity build augustus.sif Singularity.def
从源码编译 AUGUSTUS
详细步骤见 INSTALL.md 文件。
从 github 下载源码并编译:
git clone https://github.com/Gaius-Augustus/Augustus.git
cd Augustus
make augustus
编译完成后,bin/augustus 命令应可执行,并会打印使用说明信息。
如需编译辅助工具,请执行:
make auxprogs
本地安装
普通用户可将可执行文件所在目录添加至 PATH 环境变量,示例如下:
export PATH=~/augustus/bin:~/augustus/scripts:$PATH
全局安装
若拥有 root 权限,可将 AUGUSTUS 安装至系统全局路径,示例如下:
sudo make install
此外,你也可执行顶层 Makefile 中 “install” 章节的类似命令,自定义全局安装路径。
可选步骤:设置环境变量 AUGUSTUS_CONFIG_PATH
若设置了环境变量 AUGUSTUS_CONFIG_PATH,augustus 和 etraining 程序会在此路径下查找包含配置文件与参数文件的 config 目录(例如 ~/augustus/config)。你可将以下语句添加至启动脚本(如~/.bashrc)中:
export AUGUSTUS_CONFIG_PATH=/my_path_to_AUGUSTUS/augustus/config/
若未设置该环境变量,程序会在可执行文件所在目录的上级目录中查找 ../config 路径。第三种方式是运行 augustus 时,通过命令行指定该目录:
--AUGUSTUS_CONFIG_PATH=/my_path_to_AUGUSTUS/augustus/config/
WEB-SERVER
你也可通过网页界面运行 AUGUSTUS,地址为:http://bioinf.uni-greifswald.de/augustus/;亦可通过网页服务运行,地址为:http://bioinf.uni-greifswald.de/webaugustus/。
网页版yyds!
直接注释
若存在已经被训练的物种(augustus --species=help查看),则直接使用代码进行预测基因,以拟南芥(arabidopsis)为例:
augustus --speices=arabidopsis test.fa > test.gff
训练注释
若不存在被训练过的物种,则需要进行训练
准备训练集与测试集
根据Augutus的官方教程,应当按如下标准进行基因结构序列准备:
-
提供gene的编码部分,包括上游的部分(kb级别)。通常情况下,基因越多(>200),则效果越好,与此同时,外显子的数量也要足够,以便后续训练内含子;
-
必须保证基因的起始密码子与终止密码子是准确的,并尽量提供较为完整的gene结构和注释信息;
-
防止gene的冗余,根据Augustus教程的建议,如果任意两个gene在氨基酸水平上的相似度高于70%,那么只需保留一条。这一步既可以避免过度拟合现象,也能用于检验预测的准确性;
-
多个gene可以在一条序列中,gene可以在正链,亦可在负链,但gene之间不可存在重叠;
-
每个gene只需要一条转录本,并且以GenBank格式存放
这些注释数据需要随机分为训练集和测试集,为了保证测试集有统计学意义,测试集要足够多的基因(100~200个),并且要足够的随机。
基因结构集的可能来源有:
-
Genbank
-
EST/mRNA-seq的可变剪切联配, 如PASA
-
临近物种蛋白的可变剪切联配,如GeneWise
-
相关物种的数据
-
预测基因的迭代训练
数据集的训练
# 格式转换;基于选取物种的GFF3以及ref.fa 文件将其转换为Genbank格式
perl ~/miniconda2/bin/gff2gbSmallDNA.pl ./Spinach_genome/spinach_gene_v1.gff3 ./Spinach_genome/spinach_genome_v1.fa 1000 genes.raw.gb
# 尝试训练,捕捉错误
etraining --species=generic --stopCodonExcludedFromCDS=false genes.raw.gb 2> train.err
# 过滤掉可能错误的基因结构
cat train.err | perl -pe 's/.*in sequence (\S+): .*/$1/' >badgenes.lst
filterGenes.pl badgenes.lst genes.raw.gb > genes.gb
# 提取上一步过滤后的genes.db中的蛋白
grep '/gene' genes.gb |sort |uniq |sed 's/\/gene=//g' |sed 's/\"//g' |awk '{print $1}' >geneSet.lst
python extract_pep.py geneSet.lst Spinach_genome/spinach_pep_v1.fa
# 将得到的蛋白序列进行建库,自身blastp比对。根据比对结果,如果基因间identity >= 70%,则只保留其中之一,再次得到一个过滤后的gff文件,gene_filter.gff3
makeblastdb -in geneSet.lst.fa -dbtype prot -parse_seqids -out geneSet.lst.fa
blastp -db geneSet.lst.fa -query geneSet.lst.fa -out geneSet.lst.fa.blastp -evalue 1e-5 -outfmt 6 -num_threads 8
python delete_high_identity_gene.py geneSet.lst.fa.blastp Spinach_genome/spinach_gene_v1.gff3
# 将得到的gene_filter.gff3 转换为genbank 格式文件
perl ~/miniconda2/bin/gff2gbSmallDNA.pl gene_filter.gff3 ./Spinach_genome/spinach_genome_v1.fa 1000 genes.gb.filter
# 将上一步过滤后的文件随机分成两份,测试集和训练集。其中训练集的数目根据gb的LOCUS数目决定,至少要有200(100 为测试集的基因数目,其余为训练集)
randomSplit.pl genes.gb.filter 100
# 初始化HMM参数设置(在相应~/minicode/config/species/relative name中形成参数,若之前已经存在该物种名字,则需要删除),并进行训练
new_species.pl --species=spinach
etraining --species=spinach genes.gb.filter.train
# 用测试数据集检验预测效果,这里可以比较我们训练的结果,和近缘已训练物种的训练效果
augustus --species=spinach genes.gb.filter.test | tee firsttest.out
augustus --species=arabidopsis genes.gb.filter.test | tee firsttest_ara.out
训练结果的检查
在 firsttest.out 的尾部可以查看预测结果的统计,首先需要解释几个统计学概念
-
TP(True Positive): 预测为真,事实为真
-
FP(False Positive): 预测为真,事实为假
-
FN(False Negative): 预测为假,事实为真
-
TN(True Negative): 预测为假,事实为假
基于上述,引出下面两个概念:
-
"sensitivity"等于TP/(TP+FP)(预测到的百分率), 是预测为真且实际为真的占你所有认为是真的比例;
-
"specificity"等于TN/(TN+FN)(其中正确的百分率), 是预测为假且实际为假的占你所有认为是假的比例。我们希望在预测中,尽可能地不要发生误判,也就是没有基因的地方不要找出基因,有基因的地方不要漏掉基因。
重训练以优化结果
# 很有可能的一种情况是,我们第一次的训练结果没有已有训练的效果好,所以我们需要进行循环训练找到最优参数;(运行会非常费时间,而且最终的效果一般只能提高准确度几个百分点,慎重使用)
optimize_augustus.pl --species=spinach genes.gb.filter.train
# 再次进行训练,并检验,进行前后比较
etraining --species=spinach genes.gb.filter.train
augustus --species=spinach genes.gb.filter.test | tee secondtest.out
# 如果此时你的gene level的sensitivity还是低于20%说明Trainning set不够大,请添加数据;
# 如果你获得了满意的Trainning结果,请开始prediction吧
氨基酸序列的提取
# 从 firsttest.out 中提取氨基酸序列
sed -n '/^#/p' firsttest.out | sed -n '/start/,/\]/p' | sed 's/# start gene />/g;s/protein sequence \= \[//g;s/#//g;s/\]//g;s/^\s//g' >seq.fa
引用
Mario Stanke, Mark Diekhans, Robert Baertsch, David Haussler (2008). Using native and syntenically mapped cDNA alignments to improve de novo gene finding. Bioinformatics, 24(5), pages 637–644, doi: 10.1093/bioinformatics/btn013
更多参考文献见 docs/REFERENCES.md 文件。
3 个包含命令行实操指南的书籍章节
总结
- AUGUSTUS 支持多系统安装:Windows(依赖 WSL)、Ubuntu/Debian(apt 安装)、Docker/Singularity(容器化)、源码编译(最灵活);
- 安装后需注意配置 PATH 环境变量,可选设置 AUGUSTUS_CONFIG_PATH 指向配置目录;
- 除本地运行外,还可通过官方网页界面 / 服务使用,相关文献与实操指南可参考指定路径。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)