图表中的微笑

2023-11-26

是否有一种方法或包可以将图(或邻接矩阵)转换为 SMILES 字符串?

例如,我知道原子是[6 6 7 6 6 6 6 8] ([C C N C C C C O]),邻接矩阵是

[[ 0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.],

 [ 1.,  0.,  2.,  0.,  0.,  0.,  0.,  1.],

 [ 0.,  2.,  0.,  1.,  0.,  0.,  0.,  0.],

 [ 0.,  0.,  1.,  0.,  1.,  0.,  0.,  0.],

 [ 0.,  0.,  0.,  1.,  0.,  1.,  0.,  0.],

 [ 0.,  0.,  0.,  0.,  1.,  0.,  1.,  1.],

 [ 0.,  0.,  0.,  0.,  0.,  1.,  0.,  0.],

 [ 0.,  1.,  0.,  0.,  0.,  1.,  0.,  0.]]

我需要一些函数来输出'CC1=NCCC(C)O1'.

如果某个函数可以输出相应的值,它也可以工作"mol"目的。 RDkit 软件有一个'MolFromSmiles'功能。我想知道是否有类似的东西'MolFromGraphs'.


这是一个简单的解决方案,据我所知,RDKit 中没有内置函数。

def MolFromGraphs(node_list, adjacency_matrix):

    # create empty editable mol object
    mol = Chem.RWMol()

    # add atoms to mol and keep track of index
    node_to_idx = {}
    for i in range(len(node_list)):
        a = Chem.Atom(node_list[i])
        molIdx = mol.AddAtom(a)
        node_to_idx[i] = molIdx

    # add bonds between adjacent atoms
    for ix, row in enumerate(adjacency_matrix):
        for iy, bond in enumerate(row):

            # only traverse half the matrix
            if iy <= ix:
                continue

            # add relevant bond type (there are many more of these)
            if bond == 0:
                continue
            elif bond == 1:
                bond_type = Chem.rdchem.BondType.SINGLE
                mol.AddBond(node_to_idx[ix], node_to_idx[iy], bond_type)
            elif bond == 2:
                bond_type = Chem.rdchem.BondType.DOUBLE
                mol.AddBond(node_to_idx[ix], node_to_idx[iy], bond_type)

    # Convert RWMol to Mol object
    mol = mol.GetMol()            

    return mol
Chem.MolToSmiles(MolFromGraphs(nodes, a))

Out:
'CC1=NCCC(C)O1'

该解决方案是一个简化版本https://github.com/dakoner/keras-molecules/blob/dbbb790e74e406faa70b13e8be8104d9e938eba2/convert_rdkit_to_networkx.py

可能需要设置许多其他原子属性(例如手性或质子化状态)和键类型(三重、与格...)。如果可能的话,最好在图表中明确地跟踪这些内容(如上面的链接所示),但如果需要,也可以扩展此函数以合并这些内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图表中的微笑 的相关文章

  • 如果两点之间的距离低于某个阈值,则从列表中删除点

    我有一个点列表 只有当它们之间的距离大于某个阈值时 我才想保留列表中的点 因此 从第一个点开始 如果第一个点和第二个点之间的距离小于阈值 那么我将删除第二个点 然后计算第一个点和第三个点之间的距离 如果该距离小于阈值 则比较第一点和第四点
  • 如何手动计算分类交叉熵?

    当我手动计算二元交叉熵时 我应用 sigmoid 来获取概率 然后使用交叉熵公式并平均结果 logits tf constant 1 1 0 1 2 labels tf constant 0 0 1 1 1 probs tf nn sigm
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • Pandas/Google BigQuery:架构不匹配导致上传失败

    我的谷歌表中的架构如下所示 price datetime DATETIME symbol STRING bid open FLOAT bid high FLOAT bid low FLOAT bid close FLOAT ask open
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • Python zmq SUB 套接字未接收 MQL5 Zmq PUB 套接字

    我正在尝试在 MQL5 中设置一个 PUB 套接字 并在 Python 中设置一个 SUB 套接字来接收消息 我在 MQL5 中有这个 include
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • 使用 xlrd 打开 BytesIO (xlsx)

    我正在使用 Django 需要读取上传的 xlsx 文件的工作表和单元格 使用 xlrd 应该可以 但因为文件必须保留在内存中并且可能不会保存到我不知道如何继续的位置 本例中的起点是一个带有上传输入和提交按钮的网页 提交后 文件被捕获req
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 如何通过索引列表从 dask 数据框中选择数据?

    我想根据索引列表从 dask 数据框中选择行 我怎样才能做到这一点 Example 假设我有以下 dask 数据框 dict A 1 2 3 4 5 6 7 B 2 3 4 5 6 7 8 index x1 a2 x3 c4 x5 y6 x
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 使用特定颜色和抖动在箱形图上绘制数据点

    我有一个plotly graph objects Box图 我显示了箱形 图中的所有点 我需要根据数据的属性为标记着色 如下所示 我还想抖动这些点 下面未显示 Using Box我可以绘制点并抖动它们 但我不认为我可以给它们着色 fig a
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street
  • 更改 Tk 标签小部件中单个单词的颜色

    我想更改 Tkinter 标签小部件中单个单词的字体颜色 我知道可以使用文本小部件来实现与我想要完成的类似的事情 例如使单词 YELLOW 显示为黄色 self text tag config tag yel fg clr yellow s

随机推荐

  • 动态定义在 Spring 中自动装配哪个 bean(使用限定符)

    我有一个 Java EE Spring 应用程序 它更喜欢注释而不是 XML 配置 bean 始终具有原型范围 现在 我的应用程序中的业务规则取决于用户请求所在的国家 地区 所以我会有这样的东西 请记住这个例子被大大简化了 Componen
  • 如何重新排列数组中的数据以使两个相似的项目不相邻?

    只是想重新排列数组中的数据 以便相似的项目不再相邻 数据不应从数组中删除 如果无法重新排列 可以将其放在数组末尾 但保持原来的顺序是必要的 Example 1 1 2 gt 1 2 1 1 1 1 2 3 gt 1 2 1 3 1 1 1
  • 白日梦设置

    我正在尝试为我的设置创建Daydream根据文档 我需要创建一个 xml 文件 如下所示
  • 在 JavaScript 中通过 JSON 对象进行类似 Lucene 的搜索

    我有一个相当大的 JSON 对象数组 它是一个音乐库 具有艺术家 专辑等属性 使用 loadonce true 提供 jqgrid 并且我想通过整个集合实现类似 lucene 类似 google 的查询 但在本地 即在浏览器中 不与网络服务
  • 为什么我收到 UIBarButtonItem 自定义警告?

    我有一个简单的故事板 导航视图控制器内有一个表格视图 该控制器从表格视图推送到另一个具有全屏图像视图的视图控制器 表视图的导航栏中有提示文本 当我点击表格视图中的表格视图单元格时 我收到以下警告 我根本没有自定义后退按钮 我创建了一个示例项
  • Microsoft.Web.Administration.ServerManager 在错误的目录中查找 IISExpress applicationHost.config

    当尝试获取当前计算机上的应用程序池时 我遇到了一个奇怪的问题 看起来 当安装 IISExpress 时 Microsoft 代码除了完整的 IIS 之外还想检查 IISExpress IISExpress 对每个用户使用单独的 applic
  • 在 NodeJS 服务器之间发送文件最有效的方式是什么?

    介绍 假设在同一个本地网络上 我们有两个使用 Express 设置的 Node JS 服务器 用于 API 的服务器 A 和用于表单的服务器 F 服务器 A 是一个 API 服务器 它接收请求并将其保存到 MongoDB 数据库 文件存储为
  • 发送到 NTP 服务器的 '\x1b' + 47 * '\0' 消息是什么意思?

    我正在开发 NTP 客户端 其他一些线程表明包含 x1b 47 0 的消息被发送到 NTP 服务器 但这些线程都没有解释该消息的实际含义或发送原因 我尝试查看 NTP RFC 但也无法在其中找到任何有关它的信息 x1b 47 0 表示48字
  • Java中如何比较两个时刻?

    我想要对比二Instants 查看是否等于或大于 但我不能 我不知道 我如何比较瞬间 private Instant expiration if expiration Instant now expiration gt Instant no
  • 没有大括号的 JavaScript if 语句的简洁语法

    务实地说 我对我正在寻找的东西有一个快速而肮脏的答案here 但为什么使用它不是一个好主意呢 为什么我找不到它的正式文档 它不是规范和标准的一部分吗 不是得到广泛支持吗 仅仅是因为缩小可能会破坏使用该语法的代码吗 如果您能给我提供有关该功能
  • 如何在AWS S3中上传Image Buffer数据?

    我正在尝试将缓冲区数据从图像上传到 S3 它上传得很好 但是当我尝试在 S3 中下载 查看图像时 它会抛出错误 我尝试过以下方法 我可以使用缓冲区格式 JSON 获取该图像 我无法改变这一点 let image type Buffer da
  • 如何从 Windows 任务管理器(“应用程序”选项卡)获取应用程序及其在 Delphi 硬盘上的位置

    我想获取在 Windows 任务管理器的 应用程序 选项卡 不是 进程 选项卡 中运行和可见的程序列表 并获取它们在 HDD 上的位置 我需要在 Delphi 中完成它 有人可以帮忙吗 据我所知 任务管理器中的 应用程序 选项卡是顶级窗口的
  • 为 DataContractSerializer 预定义 XML 命名空间

    我正在构建一个自托管的 WCF 服务 我正在构建一个特殊的数据结构 以实现非常灵活的数据传输 到目前为止 我测试了我的结构是否可以使用 DataContractSerializer 进行序列化 这工作得很好 我对此很高兴 但有一些事情让我烦
  • 如何将用户定义的对象插入STL集中?

    我正在尝试将对象 Point2D 插入 Point2D 集合中 但我无法做到这一点 该集合似乎适用于 int 和 char 但不适用于对象 我需要帮助来了解如何将对象插入集合中 假设我想按 x 值的升序对它们进行排序 class Point
  • 在 xamarin.ios 中使用 LaunchScreen.storyboard 添加启动图像

    我正在 Xamarin ios 上工作并使用 Visual Studio 进行开发 我添加了 LaunchScreen Storyboard 来显示启动图像 因为我也想瞄准新的 iPhoneX 设备 我当前面临的问题是 我无法在设备或模拟器
  • 如何禁用几行代码的 GCC 警告

    在 Visual C 中 可以使用 pragma warning disable 我还发现在海湾合作委员会你可以覆盖每个文件编译器标志 我该如何为 下一行 执行此操作 或者使用 GCC 在代码区域周围使用推送 弹出语义 看来这个可以做到 我
  • lambda 内的 lambda

    只是为了好奇 几天前发现了 Lambda 我只是想知道是否可以做类似的事情 尝试过解释 但我的尝试似乎都不起作用 p lambda x lambda x x 2 2 没有明确的目的 我只是没有找到满意的答案 我可能误解了 Lambda 您可
  • 使用 DOM 循环遍历“body”标签的所有元素

    html file get contents test html doc new DOMDocument doc gt loadHTML html xpath new DOMXPath doc body xpath gt query bod
  • 图/网络数据结构的 Java API 列表

    有哪些好的 Java API 可将图形 边 节点 用作数据结构 请在本 wiki 的评论中添加对类似 SO 问题的引用 请直接编辑此 wiki 条目中的列表 请添加您添加的项目的摘要描述作为答案 每个答案一个项目 为了我的硕士论文 我在网上
  • 图表中的微笑

    是否有一种方法或包可以将图 或邻接矩阵 转换为 SMILES 字符串 例如 我知道原子是 6 6 7 6 6 6 6 8 C C N C C C C O 邻接矩阵是 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 1 0 2 0