基因组注释笔记——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
相关推荐
挪威的深林4 小时前
【ROS笔记5】tf 和 tf2_ros 的使用区别
笔记
weixin_537217064 小时前
英语口语资源合集
经验分享
阿蒙Amon4 小时前
JavaScript学习笔记:7.数字和字符串
javascript·笔记·学习
一语雨在生无可恋敲代码~5 小时前
hello-agents 笔记1
笔记
TL滕5 小时前
从0开始学算法——第十五天(滑动窗口练习)
笔记·学习·算法
江苏世纪龙科技5 小时前
开启汽车实训新维度:基于真实标准的虚拟仿真教学软件
学习
逐辰十七5 小时前
freertos学习笔记12--个人自用-第16章 软件定时器(software timer)
笔记·学习
玩具猴_wjh5 小时前
12.13 学习笔记
笔记·学习
雾岛听风眠5 小时前
运放学习笔记
笔记·学习
肥大毛5 小时前
C++入门学习---结构体
开发语言·c++·学习