Skip to main content

AlphaFold 3

/fs00/software/alphafold/3.0.0/AlphaFold-v3.0.0.sif

0. 基本信息

alphafold3是Google DeepMind开发的、用于生物分子复合体结构预测的人工智能模型,该模型接受一个json形式的、用于描述生物分子体系的文件,输出预测结构与置信度打分信息。结构预测过程主要分为两步:

  • data pipeline: 在一定参数控制下,基于输入的序列信息进行生物信息学搜索,得到结构预测所需的共进化信息 (multi-sequence alginment, msa) 与结构模板 (templates),并将这些信息与输入信息整合,将整合信息作为json文件输出
  • inference: 读取整合入msa和templates的json文件,转化为模型输入特征进行推理,输出mmcif格式的预测结构与confidence score

此处部署的是基于官方github库打包的apptainer容器。容器内包含alphafold3程序本体和依赖,不包含程序运行所需的数据库与预训练权重——这些需要在运行时以命令行参数传入。集群上部署有生信搜索所需数据库,模型权重的使用受term of use控制,请自行向Google DeepMind申请。

1. 使用方法

为避免冗长的路径和指令重复出现,定义变量

path_to_af3db="/bbfs/data/alphafold/3"
path_to_af3container="/fs00/software/alphafold/3.0.0/AlphaFold-v3.0.0.sif "

io_dir=</path/to/your/input/and/output>
weights_dir=<path/to/directory/containing/your/af3-weights>

RUN_ALPHAFOLD="apptainer run --nv --bind \
   ${path_to_af3db}:/databases,${io_dir}:/host_iopath,${weights_dir}:/af3_weights \
   ${path_to_af3container} python run_alphafold.py"

其中${path_to_af3db}是集群上alphafold3数据库地址,${io_dir}是输入文件所在的、及希望结果输出的目录,${weights_dir}是自己申请的alphafold3权重文件所在目录。run_alphafold.py官方github库提供的接口文件。本页面后续出现的指令均默认这些变量存在。

输出帮助信息 (包括参数说明)

${RUN_ALPHAFOLD} --help

将输入文件input.json放在${io_dir}目录下,如下指令可使用alphafold3预测此文件描述体系的结构

${RUN_ALPHAFOLD} --db_dir=/databases/ --model_dir=/af3_weights/ \
  --json_path=/host_iopath/input.json --output_dir=/host_iopath/ 

程序将根据input.json中的name字段值,在${io_dir}下创建同名子目录,data pipeline结束时补全的json文件、预测结构文件和confidence score都会被保存在这个子目录中。运行时log信息通过stderr输出 (这是python logging模块的行为)。

input.json中可以包含一个json格式的分子体系,也可以是多个分子体系的列表。如果是列表,alphafold3将对每个分子体系分别预测,并将结果输出到${io_dir}下各体系name字段对应的子目录下。

2. 分步运行data pipeline与inference

如前所述,程序运行主要分为data pipeline和inference两步。其中,data pipeline只使用cpu计算且耗时很长,如果在gpu队列上运行会导致gpu资源长期空置,可能导致高额费用和gpu资源浪费。因此,推荐先在cpu队列上运行data pipeline,得到中间结果 (也就是补全的json) 退出,然后再到gpu队列上进行结构预测

为满足上述需求,可以用bool型命令行参数--run_data_pipeline--run_inference控制模型只运行其中一步,两参数默认值均为True.

分步运行指令示例:

  • data pipeline (cpu job)
    ${RUN_ALPHAFOLD} --db_dir=/databases/ --model_dir=/af3_weights/ \
      --json_path=/host_iopath/input.json --output_dir=/host_iopath/ \
      --run_inference=False
    
  • inference (gpu job)
    ${RUN_ALPHAFOLD} --db_dir=/databases/ --model_dir=/af3_weights/ \
      --json_path=/host_iopath/input.json --output_dir=/host_iopath/ \
      --run_data_pipeline=False
    

另外,出于研究或加速计算的目的,用户可能希望使用自行准备的msa或templates,因而需要跳过alphafold3搜索步骤,此时需要手动将msa和templates写进输入json文件,然后带--run_data_pipeline=False参数运行模型,进行结构预测。关于如何将msa和templates写入json文件,请自行参考DeepMind-input documentation

3. 其他命令行参数说明

4. 队列兼容性、测试中的运行耗时

5. 运行结果准确性评估