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

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯��飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多