首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SMARTS的生物等位替代物(KNIME和RDKit)

使用SMARTS的生物等位替代物(KNIME和RDKit)
EN

Stack Overflow用户
提问于 2020-10-13 17:11:41
回答 1查看 308关注 0票数 1

我正在尝试创建一个KNIME工作流,它将接受一个化合物列表,并自动执行生物等位空间替换(我们将在这里使用以下示例:羧酸到四唑)。

注意:我使用以下工作流作为灵感:RDKit-生物异构物(myexperiment.org)。这使用文本文件作为智能输入。我似乎不能复制这里使用的SMARTS格式。

为此,我计划使用Rdkit单组分反应节点,它使用一组化合物作为输入来执行反应,并使用一个智能字符串来定义该反应。

我的问题是生成一个描述反应的工作智能字符串。

我想输入两个SDF文件(或另一种格式,不是特别附在SDF上):一个与取代的基团(羧酸)和一个可能的生物异甾体替代物(四唑)清单。然后,我会将这两者结合在一起,并生成一个智能字符串,以便在Rdkit One组件反应节点中使用该反应。

注意:输入的SDF文件有一个附加点(例如,羧酸的*COOH),它定义了要替换的组的附加位置。我怀疑这是我所经历的许多问题的原因。

到目前为止,我可以使用Indigo节点包中的反应生成器节点轻松地生成RXN格式的反应。然而,将此反应转换为被Rdkit单组分反应节点接受的智能字符串已被证明是很棘手的。

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

  1. 将RXN转换为SMARTS (分子型铸造节点):给出以下错误代码:scanner: BufferScanner::read() error
  2. 将源分子和目标分子转换为SMARTS (分子类型转换节点):给出以下错误代码:SMILES loader: unrecognised lowercase symbol: y
代码语言:javascript
复制
- showing this as a string in KNIME shows that the conversion is not carried out and the string is of SDF format : `*filename*.sdf 0 0 0 0  0 0    0 V3000M V30 BEGIN` etc.
  1. 首先将源和目标分子转换为RDkit (分子RDkit节点),然后从RDkit转换为智能(RDkit到分子节点,SMARTS选项)。这将输出以下智能字符串:
代码语言:javascript
复制
- Carboxylic acid : `[#6](-[#8])=[#8]`
- Tetrazole : `[#6]1:[#7H]:[#7]:[#7]:[#7]:1`

这是我所能得到的。然后,我可以在这两个smarts字符串之间加入>> (output:[#6](-[#8])=[#8]>>[#6]1:[#7H]:[#7]:[#7]:[#7]:1)来创建SMARTS反应字符串,但这不被接受为Rdkit One组件反应节点的输入。

KNIME控制台中的错误消息:错误RDKit单组分反应0:40从SMARTS值创建反应失败:空警告RDKit一个组件反应0:40无效反应智能:缺失

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

因此,我正在寻找一种方法,在我自己的一组代换子上生成在示例中使用的智能字符串。显然不是一种选择。我还希望这个工作流只使用KNIME中可用的开源节点,而不使用专有节点(Schrodinger等)。

希望有人能帮我解决这个问题。如果你需要我当前的工作流程,我很乐意上传源文件,如果需要的话。

提前感谢你的帮助,

保持安全和健康!

-Antoine

EN

回答 1

Stack Overflow用户

发布于 2020-11-15 09:10:37

您所描述的是模板生成,这是一个在化学反应预测和/或化学信息学中的反向合成方面的一致工作领域。我自己也不太熟悉KNIME,尽管我对RDKit有广泛的了解:您的最后一个选项(3)最接近于我认为可以使用的工作流。我会这么做的:

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

不幸的是,您为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]的意思是“任何原子”,相当于有机化学中的wavey线 (并且映射到#1)。

我只能想到[#6](-[#8])=[#8][*:1][C:2]([OH])=O可能有两种不同的情况:

  • 你可以用甲基酸作为潜在的替代品(前者可能与后者相匹配,后者可能不一样--我不记得在这种情况下如何处理隐含的氢原子)。
  • 输入结束/在质子化下。(COO- != COOH)

将这些反应智能转化为RDKit反应对象,并在输入分子对象上运行它们,可能会产生许多替代产品。注意:通常,在广泛的项目中,会有一些智能模板需要一定程度的手动干预--指示附件点、指定显式氢原子等等。如果您需要任何帮助或有任何问题,请不要犹豫地放弃评论,我会尽我所能帮助您解决具体问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64339972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档