当前位置: 首页 > news >正文

AF3 ProteinDataset类的_process方法解读

AlphaFold3 protein_dataset模块 ProteinDataset 类 _process 方法的主要功能是处理单个蛋白质流文件,并将其转换为 ProteinMPNN 所需的特征,最终保存为 pickle 文件。

源代码:

    def _process(
        self,
        filename,
        rewrite=False,
        max_length=None,
        min_cdr_length=None,
        classes_to_exclude=None,
    ):
        """Process a proteinflow file and save it as ProteinMPNN features."""
        input_file = os.path.join(self.dataset_folder, filename)
        no_extension_name = filename.split(".")[0]
        data_entry = ProteinEntry.from_pickle(input_file)
        if self.load_ligands:
            ligands = ProteinEntry.retrieve_ligands_from_pickle(input_file)
        if classes_to_exclude is not None:
            if data_entry.get_protein_class() in classes_to_exclude:
                return []
        chains = data_entry.get_chains()
        if self.entry_type == "biounit":
            chain_sets = [chains]
        elif self.entry_type == "chain":
            chain_sets = [[x] for x in chains]
        elif self.entry_type == "pair":
            if len(chains) == 1:
                return []
            chain_sets = list(combinations(chains, 2))
        else:
            raise RuntimeError(
                "Unknown entry type, please choose from ['biounit', 'chain', 'pair']"
            )
        output_names = []
        if self.cut_edges:
            data_entry.cut_missing_edges()
        for chains_i, chain_set in enumerate(chain_sets):
            output_file = os.path.join(
                self.features_folder, no_extension_name + f"_{chains_i}.pickle"
            )
            pass_set = False
            add_name = True
            if os.path.exists(output_file) and not rewrite:
                pass_set = True
                if max_length is not None:
                    if data_entry.get_length(chain_set) > max_length:
                        add_name = False
                if min_cdr_length is not None and data_entry.has_cdr():
                    cdr_length = data_entry.get_cdr_length(chain_set)
                    if not all(
                        [
                            length >= min_cdr_length
                            for length in cdr_length.values()
                            if length > 0
                        ]
                    ):
                        add_name = False
            else:
                if max_length is not None:
                    if data_entry.get_length(chains=chain_set) > max_length:
                        pass_set = True
                        add_name = False
                if min_cdr_length is not None and data_entry.has_cdr():
                    cdr_length = data_entry.get_cdr_length(chain_set)
                    if not all(
                        [
                            length >= min_cdr_length
                            for length in cdr_length.values()
                            if length > 0
                        ]
                    ):
                        pass_set = True
                        add_name = False

                if self.entry_type == "pair":
                    if not data_entry.is_valid_pair(*chain_set):
                        pass_set = True
                        add_name = False
            out = {}
            if add_name:
                cdr_chain_set = set()
                if data_entry.has_cdr():
                    out["cdr"] = torch.tensor(
                        data_entry.get_cdr(chain_set, encode=True)
                    )
                    chain_type_dict = data_entr

相关文章:

  • 操作系统之进程同步
  • python的flask框架连接数据库
  • 区块链从专家到小白
  • GAS:车载体验的智能革新力量
  • Rag实现流程
  • 软件界面设计:打造用户喜爱的交互体验
  • 新版雷电模拟器过应用检测技术详解
  • leetcode 264. Ugly Number II
  • ReactNative 使用腾讯的MMKV持久化存储
  • 深入浅出:信号灯与系统V信号灯的实现与应用
  • 区块链点燃游戏行业新未来——技术变革与实践指南
  • 【Linux网络与网络编程】08.传输层协议 UDP
  • 互联网三高-数据库高并发之分库分表
  • PostgreSQL 的统计信息
  • 0x02.Redis 集群的实现原理是什么?
  • 80_Pandas如何使用NumPy的函数等(pd.np)
  • 【图像生成之21】融合了Transformer与Diffusion,Meta新作Transfusion实现图像与语言大一统
  • Hadoop文件操作指南:深入解析文件操作
  • 北洋底标印记纪年
  • TDengine 可靠性保障:数据持久化与容灾备份(二)
  • 网站做优化按点击收费/长沙疫情最新消息
  • 精准客户软件/seo发外链工具
  • 怎么做网站弄网盟/网站维护的主要内容
  • 网站开发费用周期/百度开发平台
  • 凡科做网站需要备案吗/中文域名交易网站
  • 提供邢台企业做网站/b2b平台有哪些网站