基因组注释笔记——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
相关推荐
Rabitebla11 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
爱分享的康康12 小时前
康谋矿山机械多传感器数采方案:矿山自动驾驶数据采集落地实践分析
经验分享
Gary移动存储固件12 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
一个天蝎座 白勺 程序猿12 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
楚山之石13 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
坤坤子吖15 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
光视界17 小时前
从汞灯到 UV-LED:ALE 如何助力光刻机完成环保升级
经验分享
联蔚盘云17 小时前
DevOps 正在从“交付工具”进化为企业级生产力引擎
经验分享
YLCHUP19 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
LGL6030A19 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习