AlphaFold2 参数与环境变量篇
随着 AlphaFold2 成为爆款功能预测软件之后,已经有不少极道科技的客户单位尝试运行过 AlphaFold2了。其实在上一篇使用篇的时候,我们已经对AlphaFold2 的基础参数和使用进行了简单的说明,本篇文章,意在更加详细的说明
1. 请采用容器运行模式
AlphaFold2 软件在发布的过程中明确采用了Docker技术发布其相关工具。因此,十分不推荐大家自己搞安装,费时费力不说,用户也有很大概率被后面恶心人的环境变量配置整崩溃。所以请移步极道科技为广大用户提供的Docker源,采用docker pull 命令获取镜像资源。
2. 请准备好数据库
正如之前的文章中所指出的,AlphaFold2的成功很大程度上都要归功于其对已有的数据信息的整理。在获取了镜像资源之后,即可通过AlphaFold2内置的脚本,下载数据库了。直接在命令行中运行镜像中下载脚本 /app/alphafold/scripts/download_all_data.sh
直接运行即可。对于初次使用的用户,建议直接把所有的数据库一次性都下载下来。
3. 运行分析脚本
此部分的目的其实就是运行镜像内的 /app/alphafold/run_alphafold.py
脚本,由于在alphafold发布的官方镜像中,其entrypoint 就是该脚本,因此对于使用者来说,运行起来有点怪异。如果采用直接使用的方式的话,那么需要通过 run_docker.py
命令来实现的。不过这个脚本没有任何调度或资源限制的功能,并且需要以docker 形式运行的话,对用户权限也需要相关设置(所以经常遇到 root 用户运行没问题,但是普通用户就用不了的尴尬情况)。
此时,基于Achelous系统的任务投递就显得非常方便好用,普通用户可以直接通过下面的wdl脚本直接添加流程进而作业投递即可。无需再进一步考虑资源使用冲突和权限配置等复杂问题。
task run_alphafold2{
Array[File] target_fasta_paths
Array[String] model_names
String output_prefix
String max_template_date
String preset
File download_dir
File uniref90_database_path
File mgnify_database_path
File bfd_database_path
File small_bfd_database_path
File pdb70_database_path
File template_mmcif_dir
File obsolete_pdbs_path
File uniclust30_database_path
command{
export NVIDIA_VISIBLE_DEVICES="all"
export TF_FORCE_UNIFIED_MEMORY='1'
export XLA_PYTHON_CLIENT_MEM_FRACTION='4.0'
/app/run_alphafold.sh --fasta_paths=${sep="," target_fasta_paths} --output_dir=${output_prefix} --model_names=${sep="," model_names} --max_template_date=${max_template_date} --preset={preset} --logtostderr --data_dir ${download_dir} --uniref90_database_path ${uniref90_database_path} --mgnify_database_path ${mgnify_database_path} --pdb70_database_path ${pdb70_database_path} --template_mmcif_dir ${template_mmcif_dir} --obsolete_pdbs_path ${obsolete_pdbs_path} --uniclust30_database_path ${uniclust30_database_path} --bfd_database_path ${bfd_database_path} --small_bfd_database_path ${small_bfd_database_path}
}
output {
File alpha_fold2_res = "${output_prefix}"
}
runtime {docker:"alphafold:latest";gpu:"2";cpu:"10";memory:"30G";}
}
4. 环境变量
从上面的wdl脚本中,可以看到,运行AlphaFold2 需要用到三个环境变量
4.1 NVIDIA_VISIBLE_DEVICES="all"
这个参数是为了使用GPU对预测过程进行加速。由于目前的硬件厂商的限制(你懂得),只支持英伟达(NVIDA)公司的出品的GPU.
4.2 TF_FORCE_UNIFIED_MEMORY="1"
这个参数是对统一内存(UM)的相关设置。因此如果有GPU资源的话,也需要进行设置。
4.3 XLA_PYTHON_CLIENT_MEM_FRACTION='4.0'
该参数是针对显卡资源进行调配的,数值可以进行修改,一般而言,4.0 对应显卡资源相对较为丰富,如果平台上显卡资源有限,则可下调至2.0或更低。
5. 参数传递
参数部分需要注意的是,由于AlphaFold2的run_docker.py 的脚本中对参数进行了整合,因此对于执行的必要参数(主要是各类数据库)需要在WDL中进行明确的定义。
以上面的WDL脚本为例,需要对其中各个数据库进行赋值。如果将数据下载至 /mnt/af2-database-download/
下的话,则有效参数如下:
{
"uniref90_database_path":"/mnt/af2-database-download/uniref90/uniref90.fasta",
"mgnify_database_path" : "/mnt/af2-database-download/mgnify/mgy_clusters_2018_12.fa",
"bfd_database_path" :"/mnt/af2-database-download/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt",
"small_bfd_database_path" :"/mnt/af2-database-download/small_bfd/bfd_first_non_consensus_sequences.fasta",
"uniclust30_database_path":"/mnt/af2-database-download/uniclut30/uniclust30_2018_08/uniclust30_2018_08",
"pdb70_database_path" :"/mnt/af2-database-download/pdb70/pdb70",
"obsolete_pdbs_path":"/mnt/af2-database-download/pdb_mmcif/mmcif_files",
"template_mmcif_dir" :"/mnt/af2-database-download/pdb_mmcif/obsolete.dat"
}
此处需注意的是,部分数据库参数,并不是文件,而是文件前缀的形式,在具体使用过程中需要注意。
6.小结
综上,对于多用户平台而言,采用Achelous平台提供的WDL解析功能,可以轻松实现AlphaFold2的使用。目前中科院微生物所的生物信息分析平台已经成功采用Achelous平台,运行AlphaFold2 程序用于其研究需要。