PSP - RoseTTAFold2 的 PDB 结果预处理

news2024/10/7 18:28:42

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

RoseTTAFold2

RoseTTAFold2 是蛋白质结构预测算法,利用了深度学习和三维几何建模的技术,能够快速准确地预测蛋白质的三级结构。RoseTTAFold2 是在 RoseTTAFold 的基础上改进的,增加了对多肽段的处理,提高了对复杂蛋白质的预测能力,同时也降低了计算资源的需求。

Paper: Efficient and accurate prediction of protein structure using RoseTTAFold2,2023.5.25

预测结果的数据路径:output/rf2-monomer/,56个样本

T1104-D1_A117为例,具体格式如下:

hhblits/
log/
models/
T1104-D1_A117_1.atab*
T1104-D1_A117_1.fa*
T1104-D1_A117_1.hhr*
T1104-D1_A117_1.msa0.a3m*

PDB模型,位于models,PDB数据文件名,即model_00_pred.pdb

model_00.json
model_00.npz
model_00_pred.pdb

结果导出脚本:main_rf2_results_parser.py

python scripts/main_rf2_results_parser.py -i output/rf2-monomer/ -o mydata/results_v2/casp15-fasta-56-outputs-rf2-results

源码如下:

#!/usr/bin/env python
# -- coding: utf-8 --
"""
Copyright (c) 2022. All rights reserved.
Created by C. L. Wang on 2023/6/14
"""
import argparse
import collections
import json
import os
import shutil
import sys
from pathlib import Path

from tqdm import tqdm

p = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if p not in sys.path:
    sys.path.append(p)

from protein_utils.pdb_utils import get_plddt_from_pdb
from myutils.project_utils import traverse_dir_files, mkdir_if_not_exist


class MainRf2ResultsParser(object):
  """
  RoseTTAFold2 的结果处理,以利于后续评估
  """
  def __init__(self):
    pass

  def process(self, input_dir, output_dir):
    print(f"[Info] 输入文件夹: {input_dir}")
    print(f"[Info] 输出文件夹: {output_dir}")
    mkdir_if_not_exist(output_dir)
    path_list = traverse_dir_files(input_dir, ext="pdb")
    print(f"[Info] 样本数量: {len(path_list)}")

    fasta_dict = collections.defaultdict(list)
    for path in tqdm(path_list, desc="[Info] PDB"):
      tmp_items = path.split("/")
      fasta_name = tmp_items[-3]
      fasta_dict[fasta_name].append(path)
    print(f"[Info] FASTA数量: {len(fasta_dict.keys())}")

    for fasta_name in tqdm(fasta_dict.keys(), desc="[Info] FASTA"):
      fasta_path_list = fasta_dict[fasta_name]

      # 构建文件夹
      out_fasta_dir = os.path.join(output_dir, fasta_name)
      mkdir_if_not_exist(out_fasta_dir)

      pdb_score_list = []
      for path in fasta_path_list:
        file_name = os.path.basename(path)

        # 复制文件
        shutil.copy(path, os.path.join(out_fasta_dir, file_name))

        # 写入文件
        plddt_val = float(get_plddt_from_pdb(path))
        pdb_name = file_name.split(".")[0]
        pdb_score_list.append((pdb_name, plddt_val))

      # 写入评估结果的JSON文件
      pdb_score_list = sorted(pdb_score_list, key=lambda x: x[1], reverse=True)
      score_map_path = os.path.join(out_fasta_dir, "ranking_debug.json")
      with open(score_map_path, 'w') as f:
        score_map_dict = {
          "plddts": dict(pdb_score_list),
          "order": [x[0] for x in pdb_score_list],
        }
        json.dump(score_map_dict, f, indent=4, sort_keys=True)


def main():
  parser = argparse.ArgumentParser()
  parser.add_argument(
    "-i",
    "--input_dir",
    help="the dir from rosettafold2 output.",
    type=Path,
    required=True,
  )
  parser.add_argument(
    "-o",
    "--output-dir",
    help="output dir path.",
    type=Path,
    required=True
  )

  args = parser.parse_args()

  input_dir = str(args.input_dir)
  output_dir = str(args.output_dir)
  mkdir_if_not_exist(output_dir)

  assert os.path.isdir(input_dir) and os.path.isdir(output_dir)

  rrp = MainRf2ResultsParser()
  rrp.process(input_dir, output_dir)


if __name__ == '__main__':
  main()

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

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

相关文章

【社区图书馆】《看漫画学Python:有趣、有料、好玩、好用(全彩修订版)》

背景 Python是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要,成为国家计算机等级考试科目,某些中小学也开设了Python编程课程。本书秉承有趣、有料、好玩…

【方法】PDF文档可以转图片吗?如何操作?

需要把PDF文档转换成图片,你会怎么做呢? 有些小伙伴可能会直接截图保存,确实是一个快捷的方法,但这种方法容易造成图片质量的损失,也可能遇到无法截图整个页面的情况,或者文档页面多,截图耗费很…

【Android -- JNI 和 NDK】JNI 基础知识以及如何使用

JNI 基础知识 我们来系统梳理一下JNI中涉及的基本知识。 JNI定义了以下数据类型,这些类型和Java中的数据类型是一致的: Java原始类型:jint, jbyte, jshort, jlong, jfloat, jdouble, jchar, jboolean这些分别对应这 java 的int, byte, shor…

java反射调用get/set方法

1 前言 最新工作中,遇到了通过反射调用get/set方法的地方,虽然反射的性能不是很好,但是相比较于硬编码的不易扩展,getDeclareFields可以拿到所有的成员变量,后续添加或删除成员变量时,不用修改代码&#x…

Vue组件——动态、缓存、异步组件

1. 动态组件 component 语法&#xff1a;静态&#xff1a;<component is"组件名"></component> 动态&#xff1a;<component :is"组件名"></component> 可以用来实现页面的切换&#xff1a; // 模板<component :is"n&q…

目标检测数据集---三星工业缺陷数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

如何利用工业RFID识别设备帮助企业提高产品质量?

ANDEAWELL作为国内知名的工业识别设备厂家&#xff0c;今天就跟大家一起来了解一下&#xff0c;企业如何利用工业RFID识别设备帮助企业提高产品质量。 1. 严格的质量控制流程 在生产过程中&#xff0c;我们需要建立一套严格的质量控制流程。这个流程应该包括原材料的采购、生产…

【前端 - CSS】第 16 课 - 伪类选择器(鼠标悬停状态)

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、伪类选择器 3、伪类 - 超链接&#xff08;拓展&#xff09; 4、总结 1、缘起 在 CSS 中&#xff0c;我们使用 hover…

4、nacos服务的linux部署

1、下载nacoz注册中心 Nacos 快速开始通过这个里面查找地址进行下载, 2、下载之后通过xshell的xftp上传到服务器上&#xff0c;比如上传到home下的soft&#xff0c;如果没有soft进行创建 chmod对文件夹进行授权&#xff0c;不然xftp应该上传不到这个文件夹 3、解压缩 解压缩之…

【笔试强训选择题】Day26.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

100种思维模型之复利原理-77

关于复利&#xff0c;有一个广为流传的故事&#xff0c;相信大家都听过&#xff1a;在国际象棋的棋盘上&#xff0c;第一个格子放1粒米&#xff0c;第二格翻倍放2粒&#xff0c;第三格再翻倍放4粒&#xff0c;以此类推&#xff0c;下一格都是前一格的一倍&#xff0c;一直放到最…

Stimulsoft Reports用户手册:Report Designer介绍

Stimulsoft Reports.Net是一个基于.NET框架的报表生成器&#xff0c;能够帮助你创建结构、功能丰富的报表。StimulReport.Net 的报表设计器不仅界面友好&#xff0c;而且使用便捷&#xff0c;能够让你轻松创建所有报表&#xff1b;该报表设计器在报表设计过程中以及报表运行的过…

005、体系结构之TiKV_Raft日志

Raft日志 1、Raft与Multi Raft2、Raft 日志复制2.1、复制流程总览2.2、Propose2.3、Append2.3、Replicate(Append)2.4 Committed2.4 Apply 3、Raft Leader 选举3.1、原理3.2、节点故障Leader&#xff08;主副本&#xff09;选举⽇志复制 1、Raft与Multi Raft 一个region的大小是…

MPI期末复习指南

&#x1f34e; 博客主页&#xff1a;&#x1f319;披星戴月的贾维斯 &#x1f34e; 欢迎关注&#xff1a;&#x1f44d;点赞&#x1f343;收藏&#x1f525;留言 &#x1f347;系列专栏&#xff1a;&#x1f319; C/C专栏 &#x1f319;那些看似波澜不惊的日复一日&#xff0c;…

国家版权局正版化检查工具添加自定义检查软件及问题处理

使用国家版权局正版化检查工具进行软件正版化检查时&#xff0c;根据各个单位购买的正版化软件的不同&#xff0c;需要将自购软件和禁用软件增加到检查清单&#xff0c;本文件介绍添加自定义检查软件的方法及问题处理。 一、检查清单文件介绍及修改方法 国家版权局正版化检查工…

SpringMVC Controller 接收页面传递的中文参数出现乱码

问题描述 今天在使用SpringMVC做项目时候 controller 参数出现乱码 按照网上的搜索结果 对tomcat的server.xml和项目中的web.xml做出配置如下 在tomcat的server.xml中找到Connector标签然后对他重新配置 <Connector port"8080" protocol"HTTP/1.1"co…

Falcon 登陆 Hugging Face 生态

引言 Falcon 是由位于阿布扎比的 技术创新研究院 (Technology Innovation Institute, TII) 创建的一系列的新语言模型&#xff0c;其基于 Apache 2.0 许可发布。值得注意的是&#xff0c;Falcon-40B 是首个“真正开放”的模型&#xff0c;其能力可与当前许多闭源模型相媲美。这…

MySQL | 深入了解如何最大化利用 MySQL 函数(一)

前言 ✨欢迎来到小K的MySQL专栏&#xff0c;本节将为大家带来MySQL字符串函数和数学函数的讲解✨ 目录 前言一、字符串函数二、数学函数三、总结 一、字符串函数 函数作用UPPER(列|字符串)将字符串每个字符转为大写LOWER(列|字符串)将字符串每个字符转为小写CONCAT(str1,str2,…

AI 写作,30 秒上手,可别再说写作没思路了

你经常要与文字打交道吗&#xff0c;是不是也会有以下困惑&#xff1f; 写作难下笔写不好&#xff1f;课程制作难缺灵感&#xff1f;营销文案没吸引力&#xff1f;PPT制作耗时费力&#xff1f;短视频脚本没创意&#xff1f; ChatGPT 出现以后&#xff0c;嗅觉灵敏的先行者&…

线程同步(三)

目录 条件变量 条件变量操作函数函数原型&#xff1a; 线程阻塞函数&#xff1a; 唤醒阻塞线程&#xff1a; 生产者和消费者模型 信号量函数 生产者和消费者模型 总结 条件变量 条件变量是一种线程间同步的机制&#xff0c;用于协调线程之间的操作。当一个线程正在等待某…