AlphaFold2与蛋白质三维结构-参数与环境变量篇

随着 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 程序用于其研究需要。

发表评论

匿名网友

拖动滑块以完成验证