PSP - 蛋白质结构预测 OpenFold Multimer 模型训练参数与配置

news2024/10/7 14:33:04

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/132575709

Img
OpenFold Multimer 是用于预测蛋白质多聚体结构的计算方法。基于OpenFold 的单体预测框架,利用深度学习技术,结合序列、进化和互作信息,来推断蛋白质之间的相互作用界面和空间排列。Openfold Multimer 可以处理不同类型的多聚体,包括同源二聚体、异源二聚体、同源多聚体和异源多聚体,优势在于可以在没有任何实验数据或模板的情况下,生成高质量的多聚体结构预测。

工程:GitHub: aqlaboratory/openfold

其他参考文章:

  • 蛋白质结构预测 OpenFold Multimer 训练过程的特征预处理
  • 开源框架 OpenFold 模版 (Template) 逻辑与 HHsearch 搜索模版
  • 基于开源框架 OpenFold Multimer 蛋白质复合物的结构预测与BugFix
  • 基于开源框架 OpenFold 训练的 Finetuning 模型与推理逻辑评估
  • 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置

1. 预处理

准备已搜索完成的 MSA 文件,使用脚本 scripts/precompute_alignments.py

1.1 准备 mmcif_cache.json

使用 scripts/generate_mmcif_cache.py 脚本,处理 mmcif 文件的缓存:

nohup python3 -u scripts/generate_mmcif_cache.py [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ mmcif_cache.json --no_workers 128 > nohup.mmcif_cache.out &

tail -f nohup.mmcif_cache.out

其中, generate_mmcif_cache.py 运行耗时大约 40min,mmcif_cache.json 的 size 是252M。mmcif_cache.json 输出结果,包括PDB信息,即:

{
    "4ewn": {
        "release_date": "2012-12-05",
        "chain_ids": ["D"],
        "seqs": [
            "MLAKRI..."
        ],
        "no_chains": 1,
        "resolution": 1.9
    },
    "5m9r": {
        "release_date": "2017-02-22",
        "chain_ids": ["A", "B"],
        "seqs": [
            "MQDNS...",
            "MQDNS..."
        ],
        "no_chains": 2,
        "resolution": 1.44
    },
# ...

1.2 准备 chain_data_cache.json

使用 scripts/generate_chain_data_cache.py 脚本,处理 mmcif chain 文件的缓存:

nohup python3 -u scripts/generate_chain_data_cache.py [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ chain_data_cache.json --cluster_file clusters-by-entity-40.txt --no_workers 128 > nohup.chain_data_cache.out &

tail -f nohup.chain_data_cache.out

其中,generate_chain_data_cache.py 运行耗时大约 2h,chain_data_cache.json 的 size 是 292 M。chain_data_cache.json 输出结果,包括单链信息,即:

{
    "1p2g_A": {
        "release_date": "2003-09-02",
        "seq": "SRPLS...",
        "resolution": 2.3,
        "cluster_size": -1
    },
    "7u5p_A": {
        "release_date": "2022-06-22",
        "seq": "MGAAA...",
        "resolution": 3.14,
        "cluster_size": -1
    },
# ...

2. 配置训练脚本

基础训练脚本 train_openfold.py

python3 train_openfold.py mmcif_dir/ alignment_dir/ template_mmcif_dir/ output_dir/ \
    2021-10-10 \ 
    --template_release_dates_cache_path mmcif_cache.json \ 
    --precision bf16 \
    --gpus 8 \
    --replace_sampler_ddp=True \
    --seed 4242022 \ # in multi-gpu settings, the seed must be specified
    --deepspeed_config_path deepspeed_config.json \
    --checkpoint_every_epoch \
    --resume_from_ckpt ckpt_dir/ \
    --train_chain_data_cache_path chain_data_cache.json \
    --obsolete_pdbs_file_path obsolete.dat

具体参数如下:

具体参数:

  • mmcif_dir[your folder]/af2-data-v230/pdb_mmcif/mmcif_files/
  • alignment_dir:特征文件夹
  • template_mmcif_dir[your folder]/af2-data-v230/pdb_mmcif/mmcif_files/
  • output_dir/:输出文件夹
  • max_template_date:默认2021-10-10,模版时间
  • template_release_dates_cache_path:预处理完成
  • precision:精度
  • gpus:GPU数量
  • replace_sampler_ddp:参数
  • seed:种子
  • deepspeed_config_path:deepspeed 配置,工程配置为主
  • checkpoint_every_epoch:缓存
  • resume_from_ckpt:训练恢复,初次训练不需设置
  • train_chain_data_cache_path:预处理完成
  • obsolete_pdbs_file_path[your folder]/af2-data-v230/pdb_mmcif/obsolete.dat

其中,obsolete.dat (过时的) 主要是 PDB 的一些更新与映射,即:

 LIST OF OBSOLETE COORDINATE ENTRIES AND SUCCESSORS
OBSLTE    31-JUL-94 116L     216L
OBSLTE    15-APR-98 125D     1AW6
OBSLTE    20-SEP-99 14PS     1QJB
OBSLTE    30-OCT-78 151C     251C
OBSLTE    15-JAN-91 156B     256B
# ...

更新之后的训练逻辑 train_openfold.py (Monomoer),如下:

python3 train_openfold.py \
	--train_data_dir [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ \
	--train_alignment_dir mydata/alignment_dir/ \
	--template_mmcif_dir [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ \
	--output_dir mydata/output_dir/ \
    --max_template_date "2021-10-10" \
    --template_release_dates_cache_path mmcif_cache.json \
    --precision bf16 \
    --gpus 1 \
    --replace_sampler_ddp=True \
    --seed 42 \
    --deepspeed_config_path deepspeed_config.json \
    --checkpoint_every_epoch \
    --train_chain_data_cache_path chain_data_cache.json \
    --obsolete_pdbs_file_path [your folder]/af2-data-v230/pdb_mmcif/obsolete.dat

训练日志:

# ...
Loading extension module utils...
Time to load utils op: 0.0003807544708251953 seconds

  | Name  | Type          | Params
----------------------------------------
0 | model | AlphaFold     | 93.2 M
1 | loss  | AlphaFoldLoss | 0     
----------------------------------------
93.2 M    Trainable params
0         Non-trainable params
93.2 M    Total params
372.916   Total estimated model params size (MB)
/opt/conda/envs/openfold/lib/python3.9/site-packages/torch/utils/data/dataloader.py:563: UserWarning: This DataLoader will create 16 worker processes in total. Our suggested max number of worker in current system is 10, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.
  warnings.warn(_create_warning_msg(
/opt/conda/envs/openfold/lib/python3.9/site-packages/pytorch_lightning/trainer/data_loading.py:489: UserWarning: One of given dataloaders is None and it will be skipped.
  rank_zero_warn("One of given dataloaders is None and it will be skipped.")
Epoch 0:   0%|                   | 54/10000 [26:31<81:25:01, 29.47s/it, loss=132, v_num=]

Multimer 的 train_openfold.py 参数配置,额外增加参数如下:

  • --config_preset "model_1_multimer_v3",Multimer 配置
  • --train_mmcif_data_cache_path mmcif_cache.json,PDB 配置

即:

python3 train_openfold.py \
  --train_data_dir [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ \
  --train_alignment_dir mydata/alignment_dir/ \
  --train_mmcif_data_cache_path mmcif_cache.json \
  --template_mmcif_dir [your folder]/af2-data-v230/pdb_mmcif/mmcif_files/ \
  --output_dir mydata/output_dir/ \
  --max_template_date "2021-10-10" \
  --config_preset "model_1_multimer_v3" \
  --template_release_dates_cache_path mmcif_cache.json \
  --precision bf16 \
  --gpus 1 \
  --replace_sampler_ddp=True \
  --seed 42 \
  --deepspeed_config_path deepspeed_config.json \
  --checkpoint_every_epoch \
  --train_chain_data_cache_path chain_data_cache.json \
  --obsolete_pdbs_file_path [your folder]/af2-data-v230/pdb_mmcif/obsolete.dat

3. Bug

Bug: docker shared memory limit

日志:

RuntimeError: DataLoader worker (pid 30285) is killed by signal: Bus error. It is possible that dataloader's workers are out of shared memory. Please try to raise your shared memory limit.

修改之后的 Docker 启动程序,添加 --shm-size 参数:

nvidia-docker run -it --name openfold-v3 --shm-size 72G -v [nfs]:[nfs] openfold:v1.03

缓存 Docker

docker ps -a | grep openfold

# 提交 Tag
docker ps -l
docker commit [container id] openfold:v1.03

# 准备远程 Tag
docker tag openfold:v1.03 harbor.[ip].com/openfold:v1.03
docker images | grep "openfold"

# 推送至远程
docker push harbor.[ip].com/openfold:v1.03

参考:

  • CSDN - Docker之通过资源控制来限制风险
  • 知乎 - Dataloader中的num_workers设置与docker的shared memory相关问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

指针与空间按钮的交互

文章目录 原理案例&#xff1a;“直线指针”和“点击按钮”的交互1、效果2、步骤 原理 指针不能直接和空间按钮交互&#xff0c;得借助一个中间层——分发器——它分发指针的进入、退出、选择事件&#xff0c;空间按钮自动监听这些事件 案例&#xff1a;“直线指针”和“点击…

SQLServer审计功能配置

一. SQL Server审计功能介绍 SQL Server审计功能&#xff08;Audit&#xff09;是SQL Server 2008之后才有的功能&#xff0c;审计(Audit)用于追踪和记录SQL Server实例&#xff0c;或者单个数据库中发生的事件(Event)&#xff0c;审计运作的机制是通过捕获事件(Event)&#x…

Vector 动态数组(迭代器)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组&#xff08;模板语法&#xff09; 本文目标 1 熟悉迭代器设计模式&#xff1b; 2 实现数组的迭代器&#xff1b; 3 基于迭代器的容器遍历&#xff1b; 迭代器语法介绍 对迭…

3分钟上手Python的命令行参数解析

1 简介 处理命令行参数对许多程序来说都是必不可少的功能。今天为大家介绍 Python 中的 argparse 模块&#xff0c;它是 Python 标准库中的一个模块&#xff0c;它可以让开发者非常简单地为程序添加命令行参数接口&#xff0c;包括位置参数、可选参数、标志等&#xff0c;并自…

测试左移——代码审计SonarQube 平台搭建

一、sonarqube代码分析技术体系 1、代码分析工具 IDE 辅助功能 xcode、android studio阿里巴巴 java 开发手册 ide 插件支持 独立的静态分析工具 spotbugs、findbugs、androidlint、scan-build、Checkstyle、FindSecBugspmd 阿里巴巴 java 开发手册 pmd 插件 综合性的代码…

说说FLINK细粒度滑动窗口如何处理

分析&回答 Flink的窗口机制是其底层核心之一&#xff0c;也是高效流处理的关键。Flink窗口分配的基类是WindowAssigner抽象类&#xff0c;下面的类图示出了Flink能够提供的所有窗口类型。 Flink窗口分为滚动&#xff08;tumbling&#xff09;、滑动&#xff08;sliding&am…

DWA算法学习

一、DWA概念  DWA(动态窗口法)属于局部路径规划方法&#xff0c;为ROS中主要采用的方法。其原理主要是在速度空间&#xff08;v,w&#xff09;中采样多组速度&#xff0c;并模拟这些速度在一定时间内的运动轨迹&#xff0c;再通过一个评价函数对这些轨迹打分&#xff0c;最优的…

2023年全国职业院校技能大赛网络系统管理赛项 模块B:服务部署 卷II

2023年全国职业院校技能大赛 GZ073网络系统管理赛项 模块B&#xff1a;服务部署 卷II 目 录 一、Windows项目任务描述 1 &#xff08;一&#xff09;拓扑图 1 &#xff08;二&#xff09;网络地址规划 1 二、Windows项目任务清单 2 &#xff08;一&#xff09;服务器IspSrver…

数据库(一) 基础知识

概述 数据库是按照数据结构来组织,存储和管理数据的仓库 数据模型 数据库系统的核心和基础是数据模型&#xff0c;数据模型是严格定义的一组概念的集合。因此数据模型一般由数据结构、数据操作和完整性约束三部分组成。数据模型主要分为三种:层次模型&#xff0c;网状模型和关…

【云原生】Ansible自动化批量操作工具playbook剧本

目录 1.playbook相关知识 1.1 playbook 的简介 1.2 playbook的 各部分组成 2. 基础的playbook剧本编写实例 2.1 playbook编写Apache安装剧本&#xff08;yum方式安装&#xff09; 报错集&#xff1a; 实例2&#xff1a;playbook编写nginx 的yum安装并且能修改其监听端口的…

QT基础教程之四QMainWindow

QT基础教程之四QMainWindow QMainWindow是一个为用户提供主窗口程序的类&#xff0c;包含一个菜单栏&#xff08;menu bar&#xff09;、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)&#xff0c;是许多应用程序…

13、监测数据采集物联网应用开发步骤(9.2)

监测数据采集物联网应用开发步骤(9.1) TCP/IP Server开发 新建TCP/IP Server线程类com.zxy.tcp.ServerThread.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 import socket,threading,time from com.zxy.tcp.TcpServer import …

业务流程与逻辑编排的低代码平台,一文全方位了解它的轻应用信息

JVS低代码开发平台提供了大量的可配置组件和预先集成的功能&#xff0c;开发人员可以通过拖拽和设置属性的方式&#xff0c;快速搭建应用程序的前端界面和交互逻辑。同时&#xff0c;低代码平台也提供了丰富的后端服务和集成能力&#xff0c;可以轻松地与现有的系统和第三方服务…

vulnhub靶机02-Breakout

主机发现 arp-scan -l 扫描端口 nmap --min-rate 10000 -p- 192.168.21.143 扫描端口信息 nmap -sV -sT -O -p80,139,445,10000,20000 192.168.21.143 漏洞扫描 nmap --scriptvuln -p80,139,445,10000,20000 192.168.21.143 先看网站 什么都没有看看f12 找到点好东西 解码…

被遗弃的多重继承

问题 C 是否允许一个类继承自多个父类&#xff1f; C 支持编写多重继承的代码 一个子类可以拥有多个父类 子类拥有所有父类的成员变量 子类继承所有父类的成员函数 子类对象可以当作任意父类对象使用 多重继承的语法规则 多重继承的本质与单继承相同&#xff01; 通过多重…

ChatRWKV 学习笔记和使用指南

0x0. 前言 Receptance Weighted Key Value&#xff08;RWKV&#xff09;是pengbo提出的一个新的语言模型架构&#xff0c;它使用了线性的注意力机制&#xff0c;把Transformer的高效并行训练与RNN的高效推理相结合&#xff0c;使得模型在训练期间可以并行&#xff0c;并在推理…

基于Java的代驾管理系统 springboot+vue,mysql数据库,前台用户、商户+后台管理员,有一万五千字报告,完美运行

基于Java的代驾管理系统 springbootvue&#xff0c;mysql数据库&#xff0c;前台用户、商户后台管理员&#xff0c;有一万五千字报告&#xff0c;完美运行。 系统完美实现用户下单叫车、商户接单、管理员管理系统&#xff0c;页面良好&#xff0c;系统流畅。 各角色功能&#x…

GPT能否辅助数学学习

GPT4.0的数学能力怎么样&#xff1f;我们使用镜像站进行实验&#xff0c;通过不同水平的数学看看GPT4.0的数学能力得到进步没有。镜像站的地址我们放在了最后&#xff0c;各位读者也可以自行去测试。 笔者在ChatGPT镜像站进行测试&#xff0c;我们的实验是让GPT4.0自行出数学题…

记本地新建一个gradle方式springboot项目过程

打算使用gradle在idea新建个springboot项目&#xff0c;然后坑很多&#xff0c;记录一下 原来我的idea应该是社区版&#xff0c;新建项目时候没有可以选择spring相关配置&#xff0c;然后卸载了重装&#xff0c;之前问题是启动是启动起来了&#xff0c;但是状态栏那边一直显示…

招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本

功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外部…