openbabel 安装 生成指纹方法

news2024/12/23 14:32:04

今日踩坑小结:
openbabel 安装:
可以装,但是得在 Linux 环境下,win 环境装会报错(安装不会报错,但是生成指纹的时候会)

指纹:
在下面这个链接里,官方给出了命令行调用 openbabel 生成指纹的方法
https://open-babel.readthedocs.io/en/latest/Fingerprints/fingerprints.html
在下面这个链接里,官方给出了 pybel 生成指纹的方法
https://open-babel.readthedocs.io/en/latest/UseTheLibrary/Python_Pybel.html#fingerprints
其中,pybel 教程中指出,fp 对象有两个属性,bitsfps
fp.bits 会返回 1024 维 one-hot 向量上,值为 1 的位置。注意此处的位置是从 1 开始的

在 Linux 下:

conda install openbabel

随后可以运行下面这段代码拿到 1024 维 one-hot 指纹向量:

from openbabel import pybel


smiles = ['CCCC', 'CCCN']
mols = [pybel.readstring("smi", x) for x in smiles]
fps = [x.calcfp() for x in mols]
example_bits = fps[1].bits


def list_to_binary2(positions, binary_length=1024):
    binary_code = ['0'] * binary_length  # Initialize with all zeros

    for pos in positions:
        if 0 <= pos < binary_length:
            binary_code[pos-1] = '1'

    return ''.join(binary_code)


# start from 1
position_list = example_bits
binary_number_new = list_to_binary2(position_list)
decimal_number_new = int(binary_number_new, 2)
print(decimal_number_new)

除了 bits ,fp 还有一个属性叫 fps
该例中:

fps[1].bits = [83, 261, 349, 671, 907]

我们可以使用 numpy 将其进行转换,我们将得到一个长度为 32 的向量。
如果我们把总向量长度 1024 进行切分,可以切分成 32 块。所以此长度为 32 的向量对应 32 块中每一块的压缩值(十进制),因此将每个十进制数转换成二进制,就能复原总长 1024 对应区块的值。
比如,该例中,

fps[1].fp = [         0          0     262144          0          0          0
          0          0         16          0  268435456          0
          0          0          0          0          0          0
          0          0 1073741824          0          0          0
          0          0          0          0       1024          0
          0          0]

我们可以使用下面这段程序拿到复原后的 1024 维向量:

from openbabel import pybel
import numpy as np


smiles = ['CCCC', 'CCCN']
mols = [pybel.readstring("smi", x) for x in smiles]
fps = [x.calcfp() for x in mols]
example_bits = fps[1].fp


def list_to_binary(number_list, fixed_bits=32):
    all_code = ''
    for idx, a_num in enumerate((number_list)):
        binary_representation = format(a_num, f'0{fixed_bits}b')
        all_code = all_code + binary_representation[::-1]
    return all_code



# start from 1
position_list = np.array(example_bits)
binary_number_new = list_to_binary(position_list)
decimal_number_new = int(binary_number_new, 2)
print(decimal_number_new)

在 Linux 环境下运行上述两脚本
在这里插入图片描述
二者输出相同的十进制数,表示我们前面 bits 从1开始计数 没有问题。我们可以通过上述两种途径将 fingerprint 转换成 1024 维 one-hot 向量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1275789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

袖珍可穿戴手持气象仪是什么?

随着科技的不断发展&#xff0c;我们身边的世界正在变得越来越智能化。近日&#xff0c;一款名为WX-SQ12可穿戴手持气象仪的科技新品引起了人们的广泛关注。这款气象仪不仅具有创新性的可穿戴设计&#xff0c;还具备强大的气象数据监测功能&#xff0c;让用户可以随时掌握天气变…

nvm安装管理nodejs版本

1&#xff1a;如果之前先安装了nodejs先卸载nodejs 2&#xff1a;下载nvm&#xff0c;点击下载路径https://github.com/coreybutler/nvm-windows/releases&#xff0c;选择相应环境下载&#xff0c;如下window环境下载 下载成功后&#xff0c;选择NVM安装在哪个文件目录下&…

【图论】重庆大学图论与应用课程期末复习资料2-各章考点(计算部分)(私人复习资料)

图论各章考点 二、树1、避圈法&#xff08;克鲁斯克尔算法&#xff09;2、破圈法3、Prim算法 四、路径算法1、Dijkstra算法2、Floyd算法 五、匹配1、匈牙利算法&#xff08;最大权理想匹配&#xff08;最小权权值取反&#xff09;&#xff09; 六、行遍性问题1、Fleury算法&…

从 Oracle 到 TiDB,全链路数据迁移平台核心能力和杭州银行迁移实践

作者&#xff1a;邵健 杭州银行数据库专家 王辉 PingCAP 杭州银行在 TMS beta 阶段就进行了深度的测试体验&#xff0c;在过程中提供了大量的宝贵建议&#xff0c;帮助 TMS 进行了快速的优化和迭代。近期杭州银行借助 TMS 进行了多次 Oracle 生产数据库的迁移实践&#xff0c;…

双远心镜头:让视觉检测更精准、高效!

工业镜头是视觉系统中的重要组件&#xff0c;工业镜头的选型影响着整个系统的成像效果。在做视觉检测时&#xff0c;会遇到无法检测空间物体、无法控制视场变化、无法控制图像扭曲、对比度低、畸变大、反光等问题&#xff0c;这时普通的工业镜头并不能有效地解决问题&#xff0…

Electron+Ts+Vue+Vite桌面应用系列:TypeScript常用系统目录文件处理工具

文章目录 1️⃣ TypeScript操作电脑目录和文件1.1 获取磁盘信息1.2 获取目录下所有文件夹和文件1.3 新建文件夹1.4 新建文本1.5 重命名1.6 删除文件夹1.7 删除文件1.8 打开系统文件或系统文件夹1.9 根据字节转换文件大小带单位 优质资源分享 作者&#xff1a;xcLeigh 文章地址&…

JOSEF约瑟 剩余电流保护器 CLJ3-100A+LH30 导轨安装

CLJ3系列剩余电流动作继电器 系列型号&#xff1a; CLJ3-100A剩余电流动作继电器 CLJ3-250A剩余电流动作继电器 CLJ3-400A剩余电流动作继电器 CLJ3-630A剩余电流动作继电器 LH30剩余电流互感器 LH80剩余电流互感器 LH100剩余电流互感器 LH140剩余电流互感器 一、产品概…

Linux5-计划任务、进程

计划任务 一、cron 计划任务 周期性计划任务 cron 任务概述 • 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务 • 软件包&#xff1a;cronie、crontabs • 系统服务&#xff1a;crond • 日志文件&#xff1a;/var/log/crond 管理计划任务策略 • 使用 cro…

Leetcode—1657.确定两个字符串是否接近【中等】

2023每日刷题&#xff08;四十五&#xff09; Leetcode—1657.确定两个字符串是否接近 算法思想 源于灵神 实现代码 class Solution { public:bool closeStrings(string word1, string word2) {int len1 word1.size();int len2 word2.size();if(len1 ! len2) {return fa…

【note: This is an issue with the package mentioned above, not pip.】

安装gym时出现问题&#xff0c;note: This is an issue with the package mentioned above, not pip. 报错原因&#xff1a; 缺失了某些依赖模块&#xff0c;所以安装报错。 Collecting package metadata (current_repodata.json): done Solving environment: failed with in…

阿里云新版公共实例从注册账号到创建设备生成参数教程

1 注册阿里云 打开阿里云官网&#xff0c;点击右上角的登录/注册 打开的界面按照图片输入手机号注册 注册成功后&#xff0c;登录返回第一次打开的界面&#xff0c;点击控制台 点击控制台后界面如下 点击左上角的菜单&#xff0c;弹出新窗口&#xff0c;搜索物联网平台 开通物…

分治算法——75. 颜色分类

文章目录 &#x1f33f;0. 分治&#x1f33b;1. 题目&#x1f33c;2. 算法原理&#x1f334;3. 代码实现 &#x1f33f;0. 分治 分治分治&#xff0c;顾名思义分而治之&#xff0c;将一个大问题转换成若干个子问题&#xff0c;再将这些子问题的基础上继续划分成更小的子问题&a…

springboot+java校园自助洗衣机预约系统的分析与设计ssm+jsp

洗衣服是每个人都必须做的事情&#xff0c;而洗衣机更成为了人们常见的电器&#xff0c;但是单个洗衣机价格不菲&#xff0c;如果每人都买&#xff0c;就会造成资源的冗余。所有就出现了公用设备&#xff0c;随着时代的发展&#xff0c;很多公用都开始向着无人看守的自助模式经…

centOS使用docker部署ElasticSearch和Kibana

一、docker部署ElasticSearch 1、创建网桥 docker network create xybnet 2、下载镜像 docker pull elasticsearch:8.2.0 3、先运行容器 docker run -d \ --name es \ --net xybnet \ -p 9200:9200 \ -p 9300:9300 \ -p 5601:5601 \ -e "discovery.typesing…

笔记二十四、剖析Redux的工作流程

24.1 定义 用做于状态管理的第三方 js 库react框架中使用&#xff0c;也可应用于其他的框架 使用场景 组件间需要共享状态和改变另一个组件的状态在react项目中可以不使用就尽量不用&#xff0c;复杂场景下才使用 24.2 原理图 24.3 代码 安装 yarn add reduxjs/toolkit rea…

【linux】/etc/security/limits.conf配置文件详解、为什么限制、常见限制查看操作

文章目录 一. limits.conf常见配置项详解二. 文件描述符&#xff08;file descriptor&#xff09;简述三. 为什么限制四. 相关操作1. 展示当前资源限制2. 查看系统当前打开的文件描述符数量3. 查看某个进程打开的文件描述符数量4. 各进程占用的文件描述符 /etc/security/limits…

软著项目推荐 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…

JDK21无法导入TimeUnit类

运行环境&#xff1a;windows11、IDEA2023.1.3、JDK21 问题描述&#xff1a;IDEA中无法导入java.util.concurrent.TimeUnit类。 以下截图是问题解决后的截图。有问题的时候未截图&#xff0c;说明一下&#xff0c;有问题的时候TimeUnit类是红色的&#xff0c;无法导入&#x…

ipa应用测试平台怎么开开具发票

控制台-个人中心-发票管理 ●点击申请发票可以开具发票 ●申请发票-填写资料-勾选订单 ●个人发票开具以及公司发票开具 ●提交发票申请 ●等待申请成功开具发票 ●发票开具成功&#xff0c;我们可以开具或者查看发票

什么是死锁?如何产生死锁?死锁的必要条件?怎么解决死锁?

🔒1、什么是死锁 死锁是一个非常让程序猿烦恼的问题,一旦所写的程序有了死锁,那么程序就无法执行下去,会出现严重的 bug,并且死锁非常隐蔽,我们不会轻易发现它,在开发阶段,不经意期间我们就会写出死锁,很难检测出来。 那么什么是死锁呢?竟然让我们如此烦恼。 “死…