PSP - MetaPredict 预测蛋白质序列的内源性无序区域 (Intrinsically Disordered Regions)

news2024/11/16 13:33:04

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

MetaPredict

MetaPredict 算法简介:

内源性无序区域(IDRs)在所有生命领域中都普遍存在,并发挥着各种功能作用。虽然折叠结构域通常可以用一个三维结构来很好地描述,但是 IDRs 存在于一系列相互转化的状态中,称为集合体。这种结构异质性意味着 IDRs 在 PDB 中大部分缺失,导致缺乏从序列预测集合体构象特性的计算方法。在这里,我们结合了合理的序列设计、大规模的分子模拟和深度学习,开发 ALBATROSS,一个用于从序列预测 IDR 集合体尺寸的深度学习模型。ALBATROSS 能够瞬间预测蛋白质组范围内的集合体平均特性。ALBATROSS 轻量、易用,既可以作为一个本地安装的软件包,也可以作为一个点击式的云端界面。我们首先通过检验IDRs中序列-集合体关系的泛化性,来展示我们的预测器的适用性。然后,我们利用 ALBATROSS 的高通量特性,来表征 IDRs 在蛋白质组内外的新出现的生物物理行为。

使用工具 metapredict

  • GitHub:metapredict: A machine learning-based tool for predicting protein disorder.

  • 使用文档:https://metapredict.readthedocs.io/en/latest/

Paper:Direct prediction of intrinsically disordered protein conformational properties from sequence

  • 更新时间 2023-05-28

在线接口:https://metapredict.net/

参考的测试文档,来自 @盼盼: https://wiki.biomap-int.com/pages/viewpage.action?pageId=100631778

1. 工程配置

测试 T1157s1_A1029.fasta,来自于 CASP15 :

>A
DRVRALRRETVEMFYYGFDNYMKVAFPEDELRPVSCTPLTRDLKNPRNFELNDVLGNYSLTLIDSLSTLAILASAPAEDSGTGPKALRDFQDGVAALVEQYGDGRPGPSGVGRRARGFDLDSKVQVFETVIRGVGGLLSAHLFAIGALPITGYQPLRQEDDLFNPPPIPWPNGFTYDGQLLRLALDLAQRLLPAFYTKTGLPYPRVNLRHGIPFYVNSPLHEDPPAKGTTEGPPEITETCSAGAGSLVLEFTVLSRLTGDPRFEQAAKRAFWAVWYRKSQIGLIGAGVDAEQGHWIGTYSVIGAGADSFFEYALKSHILLSGHALPNQTHPSPLHKDVNWMDPNTLFEPLSDAENSAESFLEAWHHAHAAIKRHLYSEREHPHYDNVNLWTGSLVSHWVDSLGAYYSGLLVLAGEVDEAIETNLLYAAIWTRYAALPERWSLREKTVEGGLGWWPLRPEFIESTYHLYRATKDPWYLYVGEMVLRDITRRCWTPCGWAGLQNVLSGEKSDRMESFFLGETTKYMYLLFDDDHPLNKLDASFVFTTEGHPLILPKPKSARRSRNSPRSSQKALTVYQGEGFTNSCPPRPSITPLSGSVIAARDDIYHPARMVDLHLLTTSKHALDGGQMSGQHMAKSNYTLYPWTLPPELLPSNGTCAKVYQPHEVTLEFASNTQQVLGGSAFNFMLSGQNLERLSTDRIRVLSLSGLKITLQLVEEGEREWRVTKLNGIPLGRDEYVVINRAILGDVSDPRFNLVRDPVIAKLQQLHQVNLLDDTTTEEHPDNLDTLDTASAIDLPQDQSSDSEVPDPANLSALLPDLSSFVKSLFARLSNLTSPSPDPSSNLPLNVVINQTAILPTGIGAAPLPPAASNSPSGAPIPVFGPVPESLFPWKTIYAAGEACAGPLPDSAPRENQVILIRRGGCSFSDKLANIPAFTPSEESLQLVVVVSDDEHEGQSGLVRPLLDEIQHTPGGMPRRHPIAMVMVGGGETVYQQLSVASAIGIQRRYYIESSGVKVKNIIVDDGDGGVDG

安装 Python 包:

 pip install metapredict==2.61

import metapredict as meta

2. 函数调用

2.1 核心函数 Predict Disorder Batch

测试,计算 Residue Disorder 的概率值0~1,值越大表示越可能是 Disorder 位点,阈值取 0.5,映射成0、1二值化,1 表示 disorder,0 表示 fold。

def predict_batch(seq_list):
    if not isinstance(seq_list, list):
        seq_list = [seq_list]

    output = meta.predict_disorder_batch(seq_list)
    assert len(seq_list) == len(output)
    res_list = []
    for sample in output:
        sample_disorder = sample[1]
        print(f"disorder range: {np.min(sample_disorder)}~{np.max(sample_disorder)}")
        sample_disorder_idx = list(np.where(sample_disorder > 0.5, 1, 0))
        print(f"sample_disorder_idx: {sample_disorder_idx}")

        # 获取 disorder 区间
        d_list, tmp_list = [], []
        for i, v in enumerate(sample_disorder_idx):
            if v == 1:  # 无序
                tmp_list.append(i)
            else:
                if tmp_list:
                    d_list.append(copy.copy(tmp_list))
                    tmp_list = []
        domain = []
        for r in d_list:
            if (r[-1] - r[0]) >= 2:
                domain.append([r[0], r[-1]])
        # seq, disorder_idx, domain
        res_list.append([sample[0], sample_disorder_idx, domain])
    return res_list

其中,阈值 0.5,来自于算法建议值。

Altering the disorder theshhold - To alter the disorder threshold, simply set disorder_threshold=my_value where my_value is a float. The higher the threshold value, the more conservative metapredict will be for designating a region as disordered. Default = 0.5 (V2) and 0.42 (legacy).

输出:

disorder range: 0.0~0.9868000149726868
seq:
DRVRALRRETVEMFYYGFDNYMKVAFPEDELRPVSCTPLTRDLKNPRNFELNDVLGNYSLTLIDSLSTLAILASAPAEDSGTGPKALRDFQDGVAALVEQYGDGRPGPSGVGRRARGFDLDSKVQVFETVIRGVGGLLSAHLFAIGALPITGYQPLRQEDDLFNPPPIPWPNGFTYDGQLLRLALDLAQRLLPAFYTKTGLPYPRVNLRHGIPFYVNSPLHEDPPAKGTTEGPPEITETCSAGAGSLVLEFTVLSRLTGDPRFEQAAKRAFWAVWYRKSQIGLIGAGVDAEQGHWIGTYSVIGAGADSFFEYALKSHILLSGHALPNQTHPSPLHKDVNWMDPNTLFEPLSDAENSAESFLEAWHHAHAAIKRHLYSEREHPHYDNVNLWTGSLVSHWVDSLGAYYSGLLVLAGEVDEAIETNLLYAAIWTRYAALPERWSLREKTVEGGLGWWPLRPEFIESTYHLYRATKDPWYLYVGEMVLRDITRRCWTPCGWAGLQNVLSGEKSDRMESFFLGETTKYMYLLFDDDHPLNKLDASFVFTTEGHPLILPKPKSARRSRNSPRSSQKALTVYQGEGFTNSCPPRPSITPLSGSVIAARDDIYHPARMVDLHLLTTSKHALDGGQMSGQHMAKSNYTLYPWTLPPELLPSNGTCAKVYQPHEVTLEFASNTQQVLGGSAFNFMLSGQNLERLSTDRIRVLSLSGLKITLQLVEEGEREWRVTKLNGIPLGRDEYVVINRAILGDVSDPRFNLVRDPVIAKLQQLHQVNLLDDTTTEEHPDNLDTLDTASAIDLPQDQSSDSEVPDPANLSALLPDLSSFVKSLFARLSNLTSPSPDPSSNLPLNVVINQTAILPTGIGAAPLPPAASNSPSGAPIPVFGPVPESLFPWKTIYAAGEACAGPLPDSAPRENQVILIRRGGCSFSDKLANIPAFTPSEESLQLVVVVSDDEHEGQSGLVRPLLDEIQHTPGGMPRRHPIAMVMVGGGETVYQQLSVASAIGIQRRYYIESSGVKVKNIIVDDGDGGVDG
disorder list:
[1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]
disordered domains:
[[224, 230], [553, 570], [772, 810], [832, 880]]

2.2 Disorder Domains (Official)

predict_disorder_domains 的 disorder 预测值与 predict_disorder_batch 一致,只是选择 domains 的条件不同,范围更大。

源码:

output = meta.predict_disorder_domains(seq)
print(output)
print(f"disorder: {output.disorder}")
print(f"disordered_domain_boundaries: {output.disordered_domain_boundaries}")
for boundary in output.disordered_domain_boundaries:
    s = boundary[0]
    e = boundary[1]
    print(f"disorder: {np.min(output.disorder[s:e])} ~ {np.max(output.disorder[s:e])}")
print(f"folded_domain_boundaries: {output.folded_domain_boundaries}")
print(f"disordered_domains: {output.disordered_domains}")
print(f"folded_domains: {output.folded_domains}")

输出:

DisorderObject for sequence with 1029 residues, 2 IDRs, and 3 folded domains
Available dot variables are:
  .sequence
  .disorder
  .disordered_domain_boundaries
  .folded_domain_boundaries
  .disordered_domains
  .folded_domains

disorder: [0.5593 0.5207 0.4646 ... 0.7331 0.7067 0.6378]
disordered_domain_boundaries: [[553, 571], [772, 880]]
disorder: 0.5241 ~ 0.854
disorder: 0.2163 ~ 0.9868
folded_domain_boundaries: [[0, 553], [571, 772], [880, 1029]]
disordered_domains: ['KPKSARRSRNSPRSSQKA', 'DDTTTEEHPDNLDTLDTASAIDLPQDQSSDSEVPDPANLSALLPDLSSFVKSLFARLSNLTSPSPDPSSNLPLNVVINQTAILPTGIGAAPLPPAASNSPSGAPIPVF']
folded_domains: ['DRVRALRRETVEMFYYGFDNYMKVAFPEDELRPVSCTPLTRDLKNPRNFELNDVLGNYSLTLIDSLSTLAILASAPAEDSGTGPKALRDFQDGVAALVEQYGDGRPGPSGVGRRARGFDLDSKVQVFETVIRGVGGLLSAHLFAIGALPITGYQPLRQEDDLFNPPPIPWPNGFTYDGQLLRLALDLAQRLLPAFYTKTGLPYPRVNLRHGIPFYVNSPLHEDPPAKGTTEGPPEITETCSAGAGSLVLEFTVLSRLTGDPRFEQAAKRAFWAVWYRKSQIGLIGAGVDAEQGHWIGTYSVIGAGADSFFEYALKSHILLSGHALPNQTHPSPLHKDVNWMDPNTLFEPLSDAENSAESFLEAWHHAHAAIKRHLYSEREHPHYDNVNLWTGSLVSHWVDSLGAYYSGLLVLAGEVDEAIETNLLYAAIWTRYAALPERWSLREKTVEGGLGWWPLRPEFIESTYHLYRATKDPWYLYVGEMVLRDITRRCWTPCGWAGLQNVLSGEKSDRMESFFLGETTKYMYLLFDDDHPLNKLDASFVFTTEGHPLILP', 'LTVYQGEGFTNSCPPRPSITPLSGSVIAARDDIYHPARMVDLHLLTTSKHALDGGQMSGQHMAKSNYTLYPWTLPPELLPSNGTCAKVYQPHEVTLEFASNTQQVLGGSAFNFMLSGQNLERLSTDRIRVLSLSGLKITLQLVEEGEREWRVTKLNGIPLGRDEYVVINRAILGDVSDPRFNLVRDPVIAKLQQLHQVNLL', 'GPVPESLFPWKTIYAAGEACAGPLPDSAPRENQVILIRRGGCSFSDKLANIPAFTPSEESLQLVVVVSDDEHEGQSGLVRPLLDEIQHTPGGMPRRHPIAMVMVGGGETVYQQLSVASAIGIQRRYYIESSGVKVKNIIVDDGDGGVDG']

2.3 Predict pLDDT

metapredict 支持预测 Residue 的 pLDDT 值,用于评估序列的质量。

源码:

output = meta.predict_pLDDT(seq)
print(f"mean_plddt: {np.mean(output)}")

2.4 绘图 Graph Disorder

直接调用 graph_disorder,即可绘图:

meta.graph_disorder(seq, pLDDT_scores=True)

Disorder Scores 与 pLDDT 成负相关,绘图如下:

pLDDT

3. 测试结构

使用 ChimeraX 测试结构,命令脚本如下:

@classmethod
def get_chimerax_select_cmd(cls, seq_list, mod_num="1"):
    """
    [kaɪˈmɪrə]
    select #1:553-571 #1:772-880
    """
    res_list = cls.predict_batch(seq_list)
    r_str_list = []
    for res in res_list:
        domains = res[2]
        c_list = ["select"]
        for domain in domains:
            c_str = f"#{mod_num}:{domain[0]}-{domain[1]}"
            c_list.append(c_str)
        r_str = " ".join(c_list)
        r_str_list.append(r_str)
    return r_str_list

输出:

ChimeraX: select #1:224-230 #1:553-570 #1:772-810 #1:832-880

测试结构,绿色高亮就是无序区:

Disorder

其他

参考:

  • Paper - Direct Prediction of Intrinsically Disordered Protein Conformational Properties From Sequence

  • metapredict online (v2.3)

  • chimerax-example-scripts-commands

关于 ChatGPT 的翻译 Prompt:

您好,如果你准备好了,请回答“是”,以下是一段蛋白质相关的段落,你作为一个生物学家,帮忙翻译成中文。"[需要翻译的段落]"

源码如下:

#!/usr/bin/env python
# -- coding: utf-8 --
"""
Copyright (c) 2022. All rights reserved.
Created by C. L. Wang on 2023/6/29
"""
import copy
import os

import metapredict as meta
import numpy as np

from protein_utils.seq_utils import get_seq_from_fasta
from root_dir import DATA_DIR


class SeqIdrPredictor(object):
    """
    序列的 IDRs 区域预测
    pip install metapredict==2.61
    """
    def __init__(self):
        pass

    @staticmethod
    def predict_batch(seq_list):
        """
        核心函数
        """
        if not isinstance(seq_list, list):
            seq_list = [seq_list]

        output = meta.predict_disorder_batch(seq_list)
        assert len(seq_list) == len(output)
        res_list = []
        for sample in output:
            sample_disorder = sample[1]
            print(f"disorder range: {np.min(sample_disorder)}~{np.max(sample_disorder)}")
            sample_disorder_idx = list(np.where(sample_disorder > 0.5, 1, 0))

            # 获取 disorder 区间
            d_list, tmp_list = [], []
            for i, v in enumerate(sample_disorder_idx):
                if v == 1:  # 无序
                    tmp_list.append(i)
                else:
                    if tmp_list:
                        d_list.append(copy.copy(tmp_list))
                        tmp_list = []
            domains = []
            for r in d_list:
                if (r[-1] - r[0]) >= 2:
                    domains.append([r[0], r[-1]])
            # seq, disorder_idx, domain
            res_list.append([sample[0], sample_disorder_idx, domains])
        return res_list

    @classmethod
    def get_chimerax_select_cmd(cls, seq_list, mod_num="1"):
        """
        [kaɪˈmɪrə]
        select #1:553-571 #1:772-880
        """
        res_list = cls.predict_batch(seq_list)
        r_str_list = []
        for res in res_list:
            domains = res[2]
            c_list = ["select"]
            for domain in domains:
                c_str = f"#{mod_num}:{domain[0]}-{domain[1]}"
                c_list.append(c_str)
            r_str = " ".join(c_list)
            r_str_list.append(r_str)
        return r_str_list

    @staticmethod
    def predict_disorder_domains(seq, is_print=False):
        output = meta.predict_disorder_domains(seq)
        if is_print:
            output = meta.predict_disorder_domains(seq)
            print(output)
            print(f"disorder: {output.disorder}")
            print(f"disordered_domain_boundaries: {output.disordered_domain_boundaries}")
            for boundary in output.disordered_domain_boundaries:
                s = boundary[0]
                e = boundary[1]
                print(f"disorder: {np.min(output.disorder[s:e])} ~ {np.max(output.disorder[s:e])}")
            print(f"folded_domain_boundaries: {output.folded_domain_boundaries}")
            print(f"disordered_domains: {output.disordered_domains}")
            print(f"folded_domains: {output.folded_domains}")
        return output


def main():
    fasta_dir = os.path.join(DATA_DIR, "CASP15-Monomer-Targets-56", "fasta")
    fasta_path = os.path.join(fasta_dir, "T1157s1_A1029.fasta")
    seq = get_seq_from_fasta(fasta_path)[0]
    sip = SeqIdrPredictor()
    res_list = sip.predict_batch(seq)
    print(f"seq:\n{res_list[0][0]}")
    print(f"disorder list:\n{res_list[0][1]}")
    print(f"disordered domains:\n{res_list[0][2]}")

    sip.predict_disorder_domains(seq, is_print=True)

    output = meta.predict_pLDDT(seq)
    print(f"mean_plddt: {np.mean(output)}")
    meta.graph_disorder(seq, pLDDT_scores=True)

    r_str_list = sip.get_chimerax_select_cmd(seq)
    print(f"ChimeraX: {r_str_list[0]}")


if __name__ == '__main__':
    main()

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

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

相关文章

【GPT】如何拥有离线版本的GPT以及部署过程中的问题

【背景】 目前很多公司由于数据安全的问题,不能使用OpenAI的GPT,同时也没有必要非得使用如此泛用化的GPT。很多公司因此有训练自己的离线GPT的需求,这样的GPT只需要具备专业知识即可。 要使这个成为可能,首先就需要能够让GPT的Mo…

InstructGPT学习

GPT发展历程 在回答这个问题之前,首先要搞清楚ChatGPT的发展历程。 GPT-1用的是无监督预训练有监督微调。GPT-2用的是纯无监督预训练。GPT-3沿用了GPT-2的纯无监督预训练,但是数据大了好几个量级。InstructGPT在GPT-3上用强化学习做微调,内…

企业邮箱如何将一个用户设置到多个部门/群组

1、使用管理员账号postmaster登录企业邮局,点击“邮局管理”。 2、点击“组织与成员”。 3、勾选需要设置的用户,点击“设置所属部门/群”。(例如:我们需要将所属销售分公司的高阳,加入到以下四个分销部中,…

Hive on Zeppelin

** Hive on Zeppelin ** 官网:zeppelin.apache.org 做大数据的人应该对Hive不陌生,Hive应该是大数据SQL引擎的鼻祖。历经多个版本的改进,现在的Hive3已经具备比较完善的ACID功能,能够同时满足交互式查询和ETL 两种场景。 那怎…

Linux内核的编译、安装、调试

这里写目录标题 编译安装内核下载内核安装依赖更改.config编译内核安装首先安装模块安装内核更改引导更改grub重启 其他操作清理内核源目录卸载安装的内核修改内核配置菜单实现对新加入内核源码的控制 常见问题1. Module.symvers is missing2. No rule to make target ‘debian…

Revit三维视图:第一人称的视角看模型,生成局部三维视图

​  一、Revit中怎么以第一人称的视角看空间效果 我们创建一栋完整的楼模型后,会不会想说假设在里面看看是什么效果呢,就是说想看看第一视角的空间效果,那么如何可以看第一人称的空间效果图呢?以下看步骤: 1、 打开楼层平面图 …

系统架构设计师 6:数据库设计

一、数据库系统 数据库系统(DataBase System, DBS)是一个采用了数据库技术,有组织地、动态地存储大量相关联数据,从而方便多用户访问的计算机系统。广义上讲,DBS包括了数据库管理系统(DBMS)。 …

详细认识二叉树【图片+代码】

目录 一、树的概念及结构 1.1树的概念 1.2树的相关概念 1.3树的表示 1.4树在实际中的应用(目录树) 二、二叉树概念及结构 2.1概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树存储结构 三、二叉树的顺序结构及实现 3.1二叉树的顺序结构 3…

Redis6之集群

集群,就是通过增加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态 必要性 单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。而且单个redis的读写能力是有限的。使用redis集群可以强化redis的…

PIL.Image 调色板模式处理标签数据

文章目录 1 使用PIL.Image库进行调色板模式2 转回原来的色彩3 效果参考 1 使用PIL.Image库进行调色板模式 基本步骤: 自定义调色板,数据格式是一个Nx3的二维数组,一维数组的位置为分类的下标数据类型为np.uint8转化为调色板模式后img.conve…

想知道音频怎么转文字吗?

随着数字化技术的不断发展,我们生活中产生的各种音频越来越多,例如会议录音、采访录音等等。虽然音频记录信息方便,但它们在信息处理、存储和分享方面也存在问题。比如当我们需要对音频中的内容进行编辑或整理时,手动打字出现漏字…

Eclipse中项目的配置

1、修改本地运行时Tomcat对应的JRE版本 老项目升级JDK,在eclipse修改了项目的jdk、编译等级,但还是启动失败,报“java.lang.UnsupportedClassVersionError”。 观察发现,启动日志,tomcat还是使用的jdk1.5,…

编程题分享:有⼀堆糖果,其数量为n,现将糖果分成不同数量的堆数

背景 近期面试遇到一家公司的编程题,觉得挺有参考价值 此处使用 PHP语言,进行编码测试, 编码之前要进行思路分析,避免无头苍蝇,走一步看一步 最后,希望后期面试顺利!欢迎指摘 . 题目&#xff1…

形态学操作之膨胀

note // 膨胀原理:操作过程中,若膨胀因子某点是1,且原图该点为1,则锚点位置为1 code // 膨胀 // 膨胀原理:操作过程中,若膨胀因子某点是1,且原图该点为1,则锚点位置为1 typedef e…

gma 2 教程(一)概述:1.GMA 简介

地理与气象分析库(Geographic and Meteorological Analysis. gma),是一个基于 Python 的地理、气象数据快速处理分析和地理制图函数包。构建过程参考了ArcGIS和QGIS的操作逻辑和特点,并添加诸多独创性、独有的功能,具有…

QT Creator上位机学习(三)QString及其相关控件介绍

系列文章目录 文章目录 系列文章目录字符串QStringQLableQLineEditQString的常用功能 字符串QString QSting类,用于处理字符串,进行字符串和数字之间的转化 转换函数: //字符串转数字 QString str......; int numstr.toInt(); float num2s…

微信项目IO优化:Jetpack DataStore 与MMKV实现高效持久化

咱们一起来看看mmkv 腾讯微信团队于2018年9月底宣布开源 MMKV ,原理上基于 mmap的一个高性能key-value 组件,数据的序列化/反序列化使用 protobuf 实现,主打高性能和稳定性,也支持了Android 平台。 **MMKV最新源码托管地址&#…

Mybatis【核心配置文件说明】

配置解析 1、核心配置文件 mybatis-config.xml 注意: 在配置 mybatis-config.xml 时,要注意标签的顺序: 2、环境变量(environments) MyBatis 可以配置成适应多种环境 不过要记住:尽管可以配置多个环境…

现代操作系统(下)

第六章 死锁 在计算机系统中有很多独占性的资源,在任一时刻它们都只能被一个进程使用。两个进程同时使用同一文件系统表中的表项会引起文件系统的瘫痪。正因为如此,操作系统都具有授权一个进程(临时)排他地访问某一种资源的能力。…

【AcWing】夏季每日一题2023 -- 4382. 快速打字 -- Java Version

题目链接:https://www.acwing.com/problem/content/4385/ 1. 题解(4382. 快速打字) y总视频讲解:https://www.acwing.com/video/4743/ 类似题目:AcWing 2816. 判断子序列 1.1 双指针:判断子序列 ⭐ 时间复…