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