AlphaFold3 data_modules 模块的 OpenFoldMultimerDataset
类是 OpenFoldDataset
类的子类,专门用于 多链蛋白质(Multimer) 数据集的训练。它通过引入 AlphaFold Multimer 论文 中描述的过滤步骤,来实现多链蛋白质的训练。这个类扩展了父类的功能,特别是为了处理多链蛋白质的数据预处理和样本过滤。
源代码:
class OpenFoldMultimerDataset(OpenFoldDataset):"""Create a torch Dataset object for multimer training and add filtering steps described in AlphaFold Multimer's paper:https://www.biorxiv.org/content/10.1101/2021.10.04.463034v2.full.pdf Supplementary section 7.1 """def __init__(self,datasets: Sequence[OpenFoldSingleMultimerDataset],probabilities: Sequence[float],epoch_len: int,generator: torch.Generator = None,_roll_at_init: bool = True):super(OpenFoldMultimerDataset, self).__init__(datasets=datasets,probabilities=probabilities,epoch_len=epoch_len,generator=generator,_roll_at_init=_roll_at_init)@staticmethoddef deterministic_train_filter(cache_entry: Any,is_distillation: bool,max_resolution: float = 9.,max_single_aa_prop: float = 0.8,minimum_number_of_residues: int = 200,*args, **kwargs) -> bool:"""Implement multimer training filtering criteria described inhttps://www.biorxiv.org/content/10.1101/2021.10.04.463034v2.full.pdf Supplementary section 7.1"""resolution = cache_entry.get("resolution", None)seqs = cache_entry["seqs"]return all([resolution_filter(resolution=resolution,max_resolution=max_resolution),aa_count_filter(seqs=seqs,max_single_aa_prop=max_single_aa_prop),(not is_distillation or all_seq_len_filter(seqs=seqs,