基因组注释笔记——GeneMark-ES/ET的使用

GeneMark-ES/ET 简介

GeneMark-ES/ET 是一种用于基因预测的计算工具,主要用于从头(ab initio)预测基因结构。
(1)GeneMark-ES(Extrinsic Signal)

功能:主要用于从头预测基因结构,不依赖于外部注释信息(如已知基因或蛋白质序列)。

特点:通过分析基因组序列的统计特性(如密码子偏好、基因结构模式等)来预测基因。

适用场景:适用于新测序的基因组,尤其是那些缺乏已知注释信息的基因组。
(2)GeneMark-ET(Extrinsic Training)

功能:结合外部注释信息(如已知基因、蛋白质序列或转录本信息)来提高基因预测的准确性。

特点:利用外部数据(如 RNA-Seq 数据、蛋白质同源性信息等)对基因预测模型进行训练和优化。

适用场景:适用于已有一定注释信息的基因组,通过结合这些信息来提高预测的准确性和可靠性。

安装

(1)下载软件和密匙、上传到根目录:https://exon.gatech.edu/GeneMark/license_download.cgi

(2)解压

bash 复制代码
tar -zxvf gmes_linux_64_4.tar.gz

(3)将密匙设置为隐藏文件

bash 复制代码
gunzip gm_key.gz
mv gm_key .gm_key

# 创建一个环境
conda create --name genmark perl=5.32 -y
# 安装编译器
conda install annconda::gcc_linux-64 -y
#查看环境变量
echo $PERL5LIB
# 如果不是当前环境需要修改为当前环境下的
export PERL5LIB=~/miniconda3/envs/genmark/lib/perl5:~/miniconda3/envs/genmark/lib/perl5/site_perl:~/miniconda3/envs/genmark/lib/perl5/core_perl:~/miniconda3/envs/genmark/lib/perl5/5.32/site_perl:~/miniconda3/envs/genmark/lib/perl5/5.32/core_perl

# 安装一些模块,不要在conda环境中用cpan\cpanm这些安装,Perl XS 模块(.so)可能和 Conda 的 Perl ABI 不兼容,会导致冲突
conda install -c bioconda perl-yaml perl-hash-merge perl-logger-simple perl-parallel-forkmanager perl-mce perl-threaded perl-math-utils

# 进入软件包,检查,模块是否都安装好了
cd gmes_linux_64_4
./check_install.bash

使用,拆分染色体运行

使用软屏蔽后的基因组

bash 复制代码
INPUT_DIR="~/annotation/022.repeatmasker/split"
# 输出根目录
OUTPUT_ROOT="~/annotation/genemark"
# 遍历所有染色体文件
for chr_file in ${INPUT_DIR}/*; do
    # 提取染色体名称(例如从 genome.fasta.id_chr1.masked 中提取 chr1)
    chr_name=$(basename ${chr_file} | sed 's/genome.fasta.id_//;s/\.masked$//')   
    # 创建染色体专属输出目录
    output_dir=$OUTPUT_ROOT/$chr_name
    mkdir -p ${output_dir}
    echo "perl ~/gmes_linux_64_4/gmes_petap.pl --ES --sequence ${chr_file} --cores 4 --work_dir ${output_dir} " >> workscripts/genemark.sh
done
# 批量投递

常见报错一:使用 GeneMark-ES/ET 时如果依然遇到 Perl 模块缺失 的问题

主要还是环境问题,可以尝试以下解决方法:

bash 复制代码
# (1)查看环境变量的路径,检查自己模块路径是否在其中
find ~/miniconda3/envs/genmark/lib/perl5 -name YAML # 检查模块路径
perl -V #检查环境调用路径
# 如果有缺失添加缺失的模块路径到环境变量
export PERL5LIB=~/miniconda3/envs/genmark/lib/perl5/5.32/core_perl/:$PERL5LIB 
# 取消指定默认编译路径的参数
unset $PERLLIB
# (2)还有一种情况是某一个之前安装的模块可能有问题,需要卸载perl重装
conda install -n genmark --force-reinstall perl

# 关于是否需要修改perl脚本第一行的perl路径问题:
# 显式地使用 /usr/bin/perl 来运行 Perl 脚本时,系统将忽略脚本中的 shebang 行,即使脚本里设置了 #!/path/to/perl,也不会生效。系统会优先使用你在命令行中指定的那个 Perl 解释器。
# 但是运行脚本中涉及到其他脚本,没有指定编译器,会用第一行指定的编译器,所以需要批量修改
cd ~/gmes_linux_64_4
find . -type f -name "*.pl" -exec sed -i '1s|/usr/bin/perl|~/miniconda3/envs/genmark/bin/perl|' {} +

常见报错二:无法编译,或者编译错误等

bash 复制代码
# (1)看gcc版本
ll ~/miniconda3/envs/genmark/lib/gcc/x86_64-conda-linux-gnu
# (2)检查perl的配置文件
vim /public2/home/heyi02/miniconda3/envs/genmark/lib/perl5/5.32/core_perl/Config.pm
# 找到编译和库的路径
:/compilerroot
# 检查这个路径与自己conda的编译环境是否一致
# 比如:如果自己用的gcc版本与脚本中定义的不一致,就可以进行修改,将Config.pm中的12.3.0改为14.2.0
相关推荐
bylander2 分钟前
【论文速读】《Scaling Scaling Laws with Board Games》
人工智能·学习
电子艾号哲1 小时前
STM32单片机入门学习——第49节: [15-2] 读写内部FLASH&读取芯片ID
stm32·单片机·学习
江安的猪猪2 小时前
大连理工大学选修课——机器学习笔记(5):EM&K-Means
笔记·机器学习·kmeans
hnlucky2 小时前
redis 数据类型新手练习系列——List类型
运维·数据库·redis·学习·bootstrap·list
饭九钦vlog2 小时前
Notepad编辑器实现换行符替换
经验分享
虾球xz2 小时前
游戏引擎学习第250天:# 清理DEBUG GUID
c++·学习·游戏引擎
敲敲敲-敲代码2 小时前
【空间数据分析】缓冲区分析--泰森多边形(Voronoi Diagram)-arcgis操作
笔记·arcgis
梦想画家2 小时前
Bash 脚本:让数据库管理更高效
数据库·bash
ghost1432 小时前
C#学习第20天:垃圾回收
开发语言·学习·c#