chroma

chroma

用于蛋白质设计的可编程生成模型

Chroma是一个创新的蛋白质设计生成模型,结合了扩散建模、等变图神经网络和条件随机场技术。它提供多种蛋白质条件器,用于控制子结构、对称性和形状等,并支持自定义条件器开发。Chroma可高效采样全原子结构,实现骨架序列生成、侧链打包等蛋白质建模任务。在普通GPU上,Chroma能快速生成大型蛋白质复合物,为蛋白质设计领域带来新的可能性。

Chroma蛋白质设计生成模型条件控制扩散模型Github开源项目
<img src="https://yellow-cdn.veclightyear.com/835a84d5/2f19f6d4-d565-4831-a627-380d8ba02520.svg" width="280">

开始使用 | 采样 | 设计 | 条件约束 | 许可证

Chroma是一个用于以编程方式设计蛋白质的生成模型。

蛋白质空间复杂且难以驾驭。借助Chroma,蛋白质设计问题可以用可组合的构建模块来表示,从而自动生成多样化的全原子蛋白质结构。作为结构和序列的联合模型,Chroma还可以用于常见的蛋白质建模任务,如根据骨架生成序列、侧链打包和设计评分。

我们提供了各种约束条件的蛋白质条件约束,包括子结构、对称性、形状以及某些蛋白质类别和注释的神经网络预测。我们还提供了一个API,可以让你用几行代码创建自己的条件约束

在内部,Chroma使用扩散建模、等变图神经网络和条件随机场,以亚平方复杂度高效地对全原子结构进行采样。它可以在普通GPU上几分钟内生成大型复合物。你可以在我们的论文用可编程生成模型照亮蛋白质空间(Nature 2023)中了解更多关于Chroma的信息,包括一些早期设计的生物物理和晶体学验证。

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/227e70d1-28af-42c8-8b19-9e5af405e283.png" alt="生成的蛋白质示例" width="700px" align="middle"/> </div>

开始使用

**注意:**下载和使用预训练模型权重需要API密钥。可以在这里获取。

Colab笔记本。开始使用Chroma最快的方法是我们的Colab笔记本,它在预配置的浏览器环境中为各种用例提供了起点

PyPi包。你可以使用以下命令安装最新版本的Chroma:

pip install generate-chroma

从github安装最新的Chroma

git clone https://github.com/generatebio/chroma.git
pip install -e chroma # 使用`-e`可在本地进行编辑。

采样

无条件单体。我们为无条件和有条件蛋白质设计提供了一个统一的入口点,即Chroma.sample()方法。当没有指定条件约束时,我们可以使用以下代码采样一个简单的200个氨基酸的单体蛋白:

from chroma import Chroma chroma = Chroma() protein = chroma.sample(chain_lengths=[200]) protein.to("sample.cif") display(protein)

通常,Chroma.sample()接受设计超参数和条件约束作为输入,并输出表示蛋白质系统全原子结构的Protein对象,这些对象可以以PDB或mmCIF格式从磁盘加载和保存。

无条件复合物。要采样复合物而不是单体,我们只需要:

from chroma import Chroma chroma = Chroma() protein = chroma.sample(chain_lengths=[100, 200]) protein.to("sample-complex.cif")

有条件复合物。我们可以通过条件约束和采样超参数进一步定制采样以达到设计目标。例如,要采样一个每个单体有100个残基的C3对称同源三聚体,我们可以:

from chroma import Chroma, conditioners chroma = Chroma() conditioner = conditioners.SymmetryConditioner(G="C_3", num_chain_neighbors=2) protein = chroma.sample( chain_lengths=[100], conditioner=conditioner, langevin_factor=8, inverse_temperature=8, sde_func="langevin", potts_symmetry_order=conditioner.potts_symmetry_order) protein.to("sample-C3.cif")

由于条件约束的组合本身也是条件约束,即使是相对复杂的设计问题也可以遵循这种基本的使用模式。有关超参数、条件约束和起点的更多信息,请参阅演示笔记本和文档字符串。

设计

稳健设计。Chroma是序列和结构的联合模型,使用共同的图神经网络基础架构来参数化骨架生成和条件序列及侧链生成。这些序列和侧链解码器是扩散感知的,意味着它们不仅被训练来预测扩散时间$t=0$时的自然结构的序列和侧链,还被训练来预测所有扩散时间$t \in [0,1]$上的噪声结构。因此,设计网络的$t$超参数通过扩散增强提供了一种可调节的稳健性,我们在模型尝试设计精确指定的骨架(例如$t=0.0$)和在附近骨架构象的小邻域内进行稳健设计(例如$t=0.5$)之间进行权衡。

虽然Chroma论文中呈现的所有结果都是在$t=0.0$时进行的精确设计,但我们发现在接近$t=0.5$时进行稳健设计经常可以改善一次性重折叠,同时只对目标骨架产生微小的、通常是埃级的弛豫调整。当我们比较这两种设计模式在论文中分析的50,000个无条件骨架集上的表现时,我们看到AlphaFoldESMFold的重折叠性能都有很大改善,这种改善在蛋白质长度、螺旋比例或与已知结构的相似性方面都有很好的分层(参见Chroma补充图14以获取更多背景信息)。

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/dc381ab1-9856-497a-89c6-a3f23f7304fc.png" alt="alt text" width="700px" align="middle"/> </div></br>

扩散时间条件 $t$ 的值可以通过 Chroma.sampleChroma.design 中的 design_t 参数设置。我们发现对于生成的结构,$t = 0.5$ 可以产生高度稳健的重折叠结果,因此是默认设置。对于实验精确的结构,$t = 0.0$ 可能更合适,而介于两者之间的值可能在这两种情况之间提供有用的权衡。

自由设计。可以单独访问 Chroma 的设计网络来设计、重新设计和打包任意蛋白质系统。这里我们从 PDB 加载一个蛋白质并重新设计如下:

# 重新设计一个蛋白质 from chroma import Protein, Chroma chroma = Chroma() protein = Protein('1GFP') protein = chroma.design(protein) protein.to("1GFP-redesign.cif")

子序列重新设计也可用,并与内置的选择代数兼容,同时还可以使用特定位置和突变的掩码约束,如下所示:

# 重新设计一个蛋白质 from chroma import Protein, Chroma chroma = Chroma() protein = Protein('my_favorite_protein.cif') # PDB 格式也可以 protein = chroma.design(protein, design_selection="resid 20-50 around 5.0") # 围绕索引 20-50 的 5 埃半径范围 protein.to("my_favorite_protein_redesign.cif")

我们在演示笔记本中提供了更多设计示例。

条件器

使用 Chroma 进行蛋白质设计是可编程的。我们的 Conditioner 框架允许在任意组合的蛋白质规格下进行自动条件采样,这些规格可以是约束(偏置状态分布)或限制(直接限制底层采样过程的域);参见我们的论文中的补充附录 M。我们预定义了多个条件器,包括用于控制子结构、对称性、形状、语义和自然语言提示的条件器(见 chroma.layers.structure.conditioners),这些可以任意组合使用。

<div align="center">
条件器chroma.conditioners 中的类应用示例
对称性约束SymmetryConditioner, ScrewConditioner大型对称组装体
子结构约束SubstructureConditioner子结构嫁接,骨架强制
形状约束ShapeConditioner分子形状控制
二级结构ProClassConditioner二级结构规定
域分类ProClassConditioner类别规定,如 Pfam、CATH 或分类学
文本说明ProCapConditioner自然语言提示
序列SubsequenceConditioner子序列约束
</div>

工作原理。条件器的核心思想是可组合的状态转换,其中每个条件器都是一个以可微分方式修改蛋白质系统状态和/或能量的函数(补充附录 M)。例如,要将对称性编码为约束,我们可以将不对称单元作为输入,并根据所需的对称群对其进行镶嵌,从而输出一个在结构上对称的蛋白质系统。对于像神经网络约束这样的东西,我们可以通过目标条件的负对数概率来调整总系统能量。对于这两种情况,我们将扩散能量添加到条件器的输出中,然后通过所有中间转换反向传播总能量,以计算与通用采样 SDE(如退火 Langevin 动力学)兼容的无约束力。

我们在下面概述了这个整体条件器框架。

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/80323405-8ed9-4528-b5af-3d6b4c29589f.png" alt="alt text" width="600px" align="middle"/><br> <figcaption><i><code>Conditioner</code> 类是 Chroma 蛋白质设计的可组合构建块。</i></figcaption> </div>

条件器 API

开发新的条件器很简单。Conditioner 是一个 Pytorch nn.Module,它接收系统状态 - 即结构、能量和扩散时间 - 并输出可能更新的结构和能量,如下所示:

class Conditioner(torch.nn.Module): """用于参数化蛋白质设计问题的可组合函数。 """ def __init__(self, *args, **kwargs): super().__init__() # 设置条件器的超参数 def forward( self, X: torch.Tensor, # 输入坐标 C: torch.LongTensor, # 输入链图(用于复合体) O: torch.Tensor, # 输入序列(one-hot,未使用) U: torch.Tensor, # 输入能量(one-hot,未使用) t: Union[torch.Tensor, float], # 扩散时间 ): # 更新状态,例如从无约束映射到有约束的流形 X_update, C_update = update_state(X, C, t) # 更新能量,例如添加约束势能 U_update = U + update_energy(X, C, t) return X_update, C_update, O, U_update, t

大致来说,Conditioner 在结构上是可组合的,因为它们的输入和输出类型签名是匹配的(即它们是自同态)。因此,我们也可以像开发传统神经网络层一样,简单地通过"堆叠"条件器来构建条件器。使用最终的 Conditioner 作为输入,Chroma.sample() 将利用 Pytorch 的自动微分功能自动提供一个扩散退火的 MCMC 采样算法来使用这个条件器进行采样(我们注意到这并不是魔法,适当地缩放和参数化很重要)。

最小条件器:2D 晶格对称性

下面的代码片段展示了如何用几行代码添加一个条件器,该条件器规定生成一个 2D 晶体状对象,其中生成的蛋白质排列在 M x N 的矩形晶格中。

import torch from chroma.models import Chroma from chroma.layers.structure import conditioners class Lattice2DConditioner(conditioners.Conditioner): def __init__(self, M, N, cell): super().__init__() # 设置二维格子的坐标 self.order = M*N x = torch.arange(M) * cell[0] y = torch.arange(N) * cell[1] xx, yy = torch.meshgrid(x, y, indexing="ij") dX = torch.stack([xx.flatten(), yy.flatten(), torch.zeros(M * N)], dim=1) self.register_buffer("dX", dX) def forward(self, X, C, O, U, t): # 在格子上平铺单位晶胞 X = (X[:,None,...] + self.dX[None,:,None,None]).reshape(1, -1, 4, 3) C = torch.cat([C + C.unique().max() * i for i in range(self.dX.shape[0])], dim=1) # 对梯度进行分组平均(简化力的缩放) X.register_hook(lambda gradX: gradX / self.order) return X, C, O, U, t chroma = Chroma().cuda() conditioner = Lattice2DConditioner(M=3, N=4, cell=[20., 15.]).cuda() protein = chroma.sample( chain_lengths=[70], conditioner=conditioner, sde_func='langevin', potts_symmetry_order=conditioner.order ) protein.to_CIF("lattice_protein.cif")
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/f5a83208-6ea1-4a07-9137-787b8aee9764.png" alt="alt text" width="700px" align="middle"/> </div>

关于条件约束器的说明

这个条件约束器框架的一个吸引人的方面是它非常通用,既可以实现约束(涉及对x的操作),也可以实现限制(相当于对U的更改)。同时,在限制条件下的生成仍然可能(而且经常)具有挑战性,因为由此产生的有效能量景观可能变得任意崎岖难以积分。因此,我们建议在使用和开发新的条件约束器或条件约束器组合时要谨慎。我们发现检查扩散轨迹(包括无约束和去噪轨迹,$\hat{x}_t$和$\tilde{x}_t$)可以作为识别积分挑战和定义更好的条件约束器形式或更好的采样方案的有效工具。

引用Chroma

如果您在研究中使用了Chroma,请引用:

J. B. Ingraham, M. Baranov, Z. Costello, K. W. Barber, W. Wang, A. Ismail, V. Frappier, D. M. Lord, C. Ng-Thow-Hing, E. R. Van Vlack, S. Tie, V. Xue, S. C. Cowles, A. Leung, J. V. Rodrigues, C. L. Morales-Perez, A. M. Ayoub, R. Green, K. Puentes, F. Oplinger, N. V. Panwar, F. Obermeyer, A. R. Root, A. L. Beam, F. J. Poelwijk, and G. Grigoryan, "Illuminating protein space with a programmable generative model", Nature, 2023 (10.1038/s41586-023-06728-8).

@Article{Chroma2023, author = {Ingraham, John B. and Baranov, Max and Costello, Zak and Barber, Karl W. and Wang, Wujie and Ismail, Ahmed and Frappier, Vincent and Lord, Dana M. and Ng-Thow-Hing, Christopher and Van Vlack, Erik R. and Tie, Shan and Xue, Vincent and Cowles, Sarah C. and Leung, Alan and Rodrigues, Jo\~{a}o V. and Morales-Perez, Claudio L. and Ayoub, Alex M. and Green, Robin and Puentes, Katherine and Oplinger, Frank and Panwar, Nishant V. and Obermeyer, Fritz and Root, Adam R. and Beam, Andrew L. and Poelwijk, Frank J. and Grigoryan, Gevorg}, journal = {Nature}, title = {Illuminating protein space with a programmable generative model}, year = {2023}, volume = {}, number = {}, pages = {}, doi = {10.1038/s41586-023-06728-8} }

致谢

Chroma代码库是Generate Biomedicines公司许多贡献者的工作成果。我们要感谢:Ahmed Ismail, Alan Witmer, Alex Ramos, Alexander Bock, Ameya Harmalkar, Brinda Monian, Craig Mackenzie, Dan Luu, David Moore, Frank Oplinger, Fritz Obermeyer, George Kent-Scheller, Gevorg Grigoryan, Jacob Feala, James Lucas, Jenhan Tao, John Ingraham, Martin Jankowiak, Max Baranov, Meghan Franklin, Mick Ward, Rudraksh Tuwani, Ryan Nelson, Shan Tie, Vincent Frappier, Vincent Xue, William Wolfe-McGuire, Wujie Wang, Zak Costello, Zander Harteveld。

许可证

版权所有 Generate Biomedicines, Inc.

Chroma代码许可

根据Apache许可证2.0版("许可证")授权;除非遵守许可证,否则您不得使用此代码。您可以在https://www.apache.org/licenses/LICENSE-2.0获得许可证的副本。

除非适用法律要求或书面同意,否则根据许可证分发的软件是基于"按原样"的基础分发的,不附带任何明示或暗示的担保或条件,包括但不限于对所有权、非侵权、适销性或特定用途适用性的任何担保或条件。有关许可证下权限和限制的具体规定,请参阅许可证。

模型权重许可

Chroma权重可供接受并同意受Chroma参数许可条款约束的学术研究人员和非营利实体免费使用。请访问权重下载页面了解更多信息。如果您不符合根据提供的许可使用Chroma参数的资格,或者如果您希望在许可授予的权利范围之外共享和/或使用Chroma参数(包括用于商业目的),您可以通过以下方式联系许可方:licensing@generatebiomedicines.com

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多