机器之心专栏
机器之心编辑部
在药物研发的机器学习平台TorchDrug一年后,Mila唐健团队开放了一个新的蛋白质机器学习平台TorchProtein,这是第一个致力于蛋白质研究的开源机器学习库。
它是蛋白质有机体的重要组成部分。了解蛋白质的结构和生化特性,对于药物研发和人类健康具有不可估量的意义。基于传统生物学实验的蛋白质研究不仅周期长,而且成本高。相比之下,机器学习技术可以大大缩短蛋白质研究的周期和支出,给新药的研发带来革命性的影响。然而,基于机器学习的蛋白质研究涉及生物知识、机器学习算法、并行实现等多个方面。,且准入门槛较高。市场上也缺乏合适的开源库来支持这项研究,阻碍了机器学习技术在蛋白质研究中的发展。
最近,米拉·汤集安团队与英伟达、英特尔、IBM和蛋白质设计初创公司鳌拜几何公司共同开发了TorchProtein,这是一个蛋白质方面的机器学习平台。TorchProtein在之前开源平台TorchDrug的基础上,为蛋白质打造了一套专用的模块组件。TorchProtein不仅提供了处理蛋白质的数据结构和主流算法模型,还包括标准数据集和任务评估接口。所有接口都具有很强的可扩展性,可以满足开发各种机器学习算法的需要。无论是图机器学习、蛋白质语言模型还是自监督训练,都可以基于TorchProtein轻松实现。
https://torchprotein.ai/tutorials,官网教程
基于火炬蛋白的相关研究;
齿轮网(https://arxiv.org/abs/2203.06125)
同行基准(https://arxiv.org/abs/2206.02096)
唐坚教授表示,未来在机器学习辅助下的蛋白质RD有赖于丰富开源社区的培育。“我们期待这个平台在未来成为蛋白质机器学习RD的主要开源平台,推动这一领域的进步。”唐建说。
TorchProtein平台的四大核心优势:
分子、序列和结构信息的统一数据结构
考虑到不同的任务需要蛋白质分子、序列和结构等不同的信息,TorchProtein设计了一种统一不同模态信息的数据结构。蛋白质可以在分子、序列或结构水平上操作,并在模式之间无缝切换。
灵活的算法构建模块,基于
该平台提供了多种基于蛋白质序列和结构的模型。只需要一两行代码就可以调用TorchProtein中的标准模型来分析蛋白质序列和结构数据。针对蛋白质结构复杂的合成,TorchProtein还提供了灵活的即时合成模块,支持在GPU上动态合成。
大量基准测试结果
TorchProtein引入了大量的蛋白质数据集和相关的基准测试任务,记录了主流机器学习算法在这些测试任务上的测试结果,为新算法研究提供代码和实验支持。
蛋白质预训练模型
针对基于蛋白质序列和结构的预测任务,平台提供了许多大规模的预训练模型,将有效推动蛋白质机器学习在实践中的应用,并大大降低计算成本。
平台功能详解
我们将从数据结构到算法模型依次介绍TorchProtein的功能:
蛋白质数据结构
基于的统一蛋白质数据结构
TorchProtein使用统一的图形数据结构来表示蛋白质序列和结构,这是TorchDrug中图形数据结构的一种专门化。我们可以通过蛋白质结构PDB文件来构造数据,并指定原子、氨基酸残基和化学键的特征。
从torchdrug导入数据,utilsfrom rdkit导入chem import ngl view pdb _ file = utils . download(" https://files . rcsb . org/download/2lwz . pdb ","。/)摩尔=化学。MolFromPDBFile(" 2lwz . pdb ")view = ngl view . show _ rd kit(mol)view protein = data。Protein.from_pdb ( pdb_file,atom_feature="position ",bond_feature="length ",residue _ feature = " symbol ")print(protein)
蛋白质(原子数=445,键数=916,残基数=57)
有了这种数据结构,我们可以很容易地获得蛋白质序列的信息,TorchProtein也支持从蛋白质序列构建数据结构。
aa _ seq = protein . to _ sequence()print(aa _ seq)seq _ protein = data。protein . from _ seq(aa _ seq,atom_feature="symbol ",bond_feature="length ",residue _ feature = " symbol ")print(seq _ protein)
fvnqhlcgsdlvaelylvcgergffytdptgggprrgiveqcchssicslyqlenycnprotein(num _ atom = 445,num_bond=910,num_residue=57)
蛋白质的运作
为了充分利用GPU资源,TorchProtein支持封装多个蛋白质,数据可以在CPU和GPU之间自由切换。
蛋白质= [蛋白质]* 3蛋白质=数据。Protein.pack(蛋白质)proteins = proteins.cuda ( ) print(蛋白质)
PackedProtein ( batch_size=3,num_atoms= [ 445,445,445 ],num_bonds= [ 916,916,916 ],num _ residuals =[57,57,57 ],device='cuda:0 ')
与PyTorch中的张量类似,TorchProtein的蛋白质数据结构支持根据氨基酸残基的位置进行索引、分割和重组。
段= [蛋白质[ :2 ],蛋白质[ 2:4 ],蛋白质[ 4:6 ],蛋白质[ 6:8 ] ]段=数据。protein . pack(segments)segments . visualize()
TorchProtein还提供动态作图、蛋白质序列和结构分割、原子水平和氨基酸水平的结构切换等功能。详细说明请参考官网教程。
蛋白质序列特性分析
TorchProtein为蛋白质序列性质分析提供了许多数据集、任务和模型,尽可能避免重复编码,帮助用户快速评估每个模型在每个数据集上的性能。
以蛋白质在细胞中的位置预测数据集(亚细胞定位)为例,我们可以通过两行代码构造数据集,得到它的训练集、验证集和测试集。
从torchdrug导入数据集数据集=数据集。子单元定位(" ~/protein-datasets/",residue_only=True ) train_set,valid_set,test_set = dataset.split()
然后,我们可以定义一个简单的两层CNN模型作为蛋白质序列编码器,并基于这个CNN定义一个任务模型来预测蛋白质细胞的位置。
从torchdrug导入核心、模型、任务模型=模型。ProteinCNN ( input_dim=21,hidden_dims= [ 1024,1024 ],kernel_size=5,padding=2,readout="max" ) task = tasks。PropertyPrediction ( model,task=dataset.tasks,criterion="ce ",metric= ( "acc "," mcc "),num_mlp_layer=2)
TorchProtein提供了一个多功能求解器来执行模型训练、评估和模型参数保存。
导入torch optimizer = torch . optim . Adam(task . parameters()、lr=1e-4 ) solver = core。Engine ( task,train_set,valid_set,test_set,optimizer,batch_size=64,GPU =[0])solver . train(num _ epoch = 100)solver . evaluate(" valid ")solver . save(" subloc _ CNN . PTH ")
在TorchProtein平台上,RD团队评估了每个蛋白质序列机器学习模型在每个基准任务上的性能,在蛋白质细胞位置预测基准上的结果如下。有关详细的基准测试结果,请参见同行基准测试报告(https://arxiv.org/abs/2206.02096)。
蛋白质结构特性的分析
TorchProtein还为蛋白质的结构性质分析提供了多种数据集和模型,可供用户进行模型评估,从而促进蛋白质结构分析的实际应用。
以酶委员会(EC)蛋白质功能预测数据集为例,我们可以很容易地通过两行代码构造数据集并获得其训练集、验证集和测试集。
数据集=数据集。enzyme commission(" ~/protein-datasets/")train _ set,valid_set,test_set = dataset.split()
TorchProtein提供了各种蛋白质结构编码器的实现。这里,我们选择目前最好的编码器之一GearNet-Edge作为蛋白质结构编码器,并在此基础上构建任务模型,解决EC数据集中的多个二元分类问题。
模特=模特。GearNet ( input_dim=21,hidden_dims= [ 512,512,512,512,512,512 ],num_relation=7,edge_input_dim=59,num_angle_bin=8,batch_norm=True,concat_hidden=True,short_cut=True,readout="sum" ) task = tasks。multiplebinary classification(model,num_mlp_layer=3,criterion="bce ",task =[_ for _ in range(len(dataset . tasks))],metric= [ "auprc@micro "," f1_max" ])
同样,我们可以使用TorchProtein的多功能求解器来训练、评估和保存模型参数。
导入torch optimizer = torch . optim . Adam(task . parameters()、lr=1e-4 ) solver = core。Engine ( task,train_set,valid_set,test_set,optimizer,batch_size=4,GPU =[0])solver . train(num _ epoch = 100)solver . evaluate(" valid ")solver . save(" EC _ gear net _ edge . PTH ")
TorchProtein团队在EC和GO蛋白质功能预测基准上评估了各种蛋白质结构编码模型的性能,结果如下。有关实施和评估的详细信息,请参见GearNet论文(https://arxiv.org/abs/2203.06125)。
开发团队
这个平台的项目负责人是加拿大蒙特利尔学习算法研究所(Mila)副教授、终身教授唐建。研究领域包括几何深度学习、图形表示学习、图形神经网络、药物发现和知识图谱。唐剑2014年毕业于eecs,博士学位,2014-2016年在微软亚洲研究院担任副研究员,2016-2017年为密歇根大学和卡内基梅隆大学联合培养的博士后。他获得了2014年机器学习顶级会议ICML的最佳论文。唐坚是图形表征学习领域的代表学者。他的网络表示学习算法LINE应用广泛,其他代表作还有RotatE等。
Mila Lab是一个人工智能实验室(https://mila.quebec/),由深度学习的先驱Yoshua Bengio教授领导。主要从事深度学习、强化学习、优化算法等人工智能不同领域的基础研究和应用。TorchProtein的整个项目由博士生张作柏、徐明浩、朱兆承和袁新玉,以及来自蛋白质设计初创公司鳌拜几何、IBM研究院、英特尔和英伟达的多位行业合作伙伴,以及来自剑桥大学、清华大学和北京大学的实习生共同完成。
剧终
授权请联系本微信官方账号。
投稿或寻求报道:content@jiqizhixin.com