微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用SMARTSKNIME和RDKit进行生物等位置换

如何解决使用SMARTSKNIME和RDKit进行生物等位置换

我正在尝试创建一个KNIME工作流程,该工作流程将接受化合物列表并进行生物等排代换(我们将在此处使用以下示例羧酸酸自动变成四唑)。

注意:我使用以下工作流程作为灵感:RDKit-bioisosteres (myexperiment.org)。这使用文本文件作为SMARTS输入。 我似乎无法复制此处使用的SMARTS格式。

为此,我计划使用Rdkit One Component Reaction节点,该节点使用一组化合物作为输入进行反应,并使用SMARTS字符串定义反应。

我的问题是生成描述该反应的有效SMARTS字符串。

我想输入两个SDF文件(或另一种格式,未特别附在SDF上):一个带有要替换的组(羧酸),另一个带有可能的生物立体异构替代物列表( 四唑)。然后,我将在KNIME中将这两者结合在一起,并生成一个SMARTS字符串用于反应,然后将其用于 Rdkit单组分反应节点。

注意:输入的SDF文件具有用 连接点(例如* COOH为羧酸) 定义要替换的组的附加位置。我怀疑这是 原因是我遇到的许多问题。

到目前为止,我可以使用Indigo节点包中的Reaction Builder node轻松生成RXN格式的反应。但是,将这种反应转换为Rdkit One Component Reaction节点接受的SMARTS字符串已被证明是棘手的。

到目前为止,我已经尝试过:

  1. 将RXN转换为SMARTS(Molecule Type Cast节点):给出以下错误代码scanner: BufferScanner::read() error

  2. 将源和目标分子转换为SMARTS(节点):给出以下错误代码SMILES loader: unrecognised lowercase symbol: y

    • 在KNIME中将其显示为字符串表示未进行转换并且该字符串为SDF格式:*filename*.sdf 0 0 0 0 0 0 0 V3000M V30 BEGIN等。
  3. 首先将源和目标分子转换为RDkit(RDkit from Molecule节点),然后从RDkit转换为SMARTS(RDkit to Molecule节点,SMARTS选项)。这将输出以下SMARTS字符串:

    • 羧酸:[#6](-[#8])=[#8]
    • 四唑:[#6]1:[#7H]:[#7]:[#7]:[#7]:1

这与我设法获得的接近。然后,我可以使用>>与这两个smarts字符串之间的连接(输出[#6](-[#8])=[#8]>>[#6]1:[#7H]:[#7]:[#7]:[#7]:1)来创建SMARTS反应字符串,但这不能作为Rdkit One Component Reaction节点的输入。

KNIME控制台中的错误消息: 错误RDKit一成分反应0:40从SMARTS值创建反应失败:null WARN RDKit一种成分反应0:40无效反应SMARTS:缺失

请注意,最后一个选项(3.)生成的SMARTS字符串与myexperiments.org example[*:1][C:2]([OH])=O>>[*:1][C:2]1=NNN=N1)中使用的字符串完全不同。通过这些转换,我似乎也丢失了附件点信息,这很可能在其余工作流程中引起问题。

因此,我正在寻找一种方法来在自己的一组取代基上生成myexperiments.org示例中使用的SMARTS字符串。显然,手动执行此操作不是一种选择。我还希望该工作流仅使用KNIME中可用的开源节点,而不使用专有节点(Schrodinger等)。

希望有人可以帮助我解决这个问题。如果您需要当前的工作流程,我很高兴在需要时将其与源文件一起上传

在此先感谢您的帮助,

保持安全健康!

-安东尼

解决方法

您要描述的是模板生成,这是化学信息学中反应预测和/或反合成的长期工作领域。 我对KNIME并不是特别熟悉,尽管我对RDKit相当了解:您的最后一个选择(3)最接近我认为可用的工作流程。我这样做的方式:

  1. 将SDF中的取代对分子加载到RDKit mol对象中。
  2. 将这些RDKit mol对象导出为SMARTS字符串rdkit.Chem.MolToSmarts()
  3. 将这些字符串连接为before_substructure>>after_substructure形式以生成反应SMARTS字符串。
  4. 将此SMARTS字符串加载到反应对象rxn = rdkit.Chem.AllChem.ReactionFromSmarts()
  5. 使用rxn.RunReactants() method来生成生物等位取代的产品。

不幸的是,您为RDKit“一个组件反应”节点输入引用的错误在重要信息之前被消除。在本地运行rdkit.Chem.AllChem.ReactionFromSmarts("[#6](-[#8])=[#8]>>[#6]1:[#7H]:[#7]:[#7]:[#7]:1")不会对我产生任何错误,这使我相信这是特定于KNIME节点功能的。

请注意,[#6](-[#8])=[#8][*:1][C:2]([OH])=O之间的差异相对较小:前者代表O-C=O子结构,后者代表~COOH组。在:num的方括号内,[C:1][C:3].[C:2][C:4]>>[C:1][C:3][C:4][C:2]是指可选的“原子图”数字,该数字允许对反应物和产物原子进行一对一映射。例如,[*:1]使您可以跟踪反应期间可能重要的碳。标记[#6](-[#8])=[#8]的意思是“任何原子”,在有机化学中等效于wavey line(并映射到#1)。
我只能想到两种情况[*:1][C:2]([OH])=OCOO-可能有所不同:

  • 您有甲烷酸作为替代品的潜在输入(前者将匹配,后者可能不匹配-我不记得在这种情况下如何处理隐式氢)
  • 输入的质子过多/不足。 (COOH!= iif

将这些反应SMARTS转换为RDKit反应对象并在输入分子对象上运行它们可能会产生许多取代的产物。注意:通常,在广泛的项目中,会有一些SMARTS模板需要一定程度的手动干预-指示连接点,指定明显的氢原子等。如果您需要任何帮助或有任何疑问,请随时添加评论和我会尽全力帮助您解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。