在深度学习,尤其是大模型流行的今天,我就一直在想一个问题,为什么基因组注释上没有对应的工具呢?我一开始想的是,或许传统的模型已经表现的足够好了?
但从我的使用体验来看,并非如此,有如下几个痛点
- 没有良好的并行,这通常需要你自己拆分基因组
- 可能没有现成的模型,可能需要自己单独训练
- 在某些区域表现不佳,例如串联重复
另外,我还有一个想法,会不会传统模型表现不佳是因为参数量少呢?深度学习模型动辄百万的参数或许更适合复杂的生物学模型。
最近,我接触到了一个工具Helixer, 它一个基于深度神经网络的基因预测工具。从我目前使用来看,这跟当初深度学习网络在手写字识别中秒杀一众传统模型一样,Helixer的出现,让我直接放弃了AUGUSTUS等工具。你可以拿你的基因组到他提供的在线工具 https://plabipd.de/helixer_main.html中进行测试,当然需要排队。
如果不想排队,只需要准备一张24G显存以上的显卡,在本地部署,步骤如下
装docker和nvidia-docker2
# 需要装docker
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
# 同时需要装 nvidia-docker2
sudo apt-get install nvidia-docker2
# 必须运行, 让docker读取配置文件
sudo pkill -SIGHUP dockerd
获取镜像
docker pull gglyptodon/helixer-docker:helixer_v0.3.3_cuda_11.8.0-cudnn8
这一步是难的一步,因为处于某些原因,你可能无法访问docker的网站,甚至镜像站点也无法使用,所以我导出了,方便大家加载,链接是 https://pan.baidu.com/s/1jL5vJSdPy2E7Pd7pbhp_Jw?pwd=zgnh , 提取码:zgnh
docker load helixer-docker.tar
创建分析目录,并启动docker(注意mount)
# additionally, set up a shared directory and mount it, e.g.:
# on host:
mkdir -p data/out
# 必须赋予权限
chmod o+w data/out # something the container can write to
把数据移动在data下
mv /path/to/your.fasta data
启动你的docker
# mount directory and run interactively:
docker run --runtime=nvidia -it --name helixer_testing_v0.3.3_cuda_11.2.0-cudnn8 --rm --mount type=bind,source="$(pwd)"/data,target=/home/helixer_user/shared gglyptodon/helixer-docker:helixer_v0.3.3_cuda_11.8.0-cudnn8
在Docker内部下载模型
# Download models (models will be saved to ~/.local/share/Helixer/models/ )
Helixer/scripts/fetch_helixer_models.py
在~/shared/
目录下处理数据
cd ~/shared/
Helixer.py --fasta-path your.fasta --lineage land_plant --gff-output-path out/helixer.gff3
其中 --lineage land_plant
用于设置模型,例如land_plant就是陆地植物,另外还支持 vertebrate, invertebrate和 fungi.
这个速度非常快,一个10多G的基因组,不用一天就行。
给大家举个例子,大基因组通常由非常大的intron,我下载的文章里提供的注释就没有注释对,而Helixer就对了。
参考资料