openbabel 安装 生成指纹方法

今日踩坑小结:
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 向量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一篇博客带你认识泛型

目录 泛型类&#xff08;Generic Class&#xff09;: 泛型方法&#xff08;Generic Method&#xff09;: Java 中的泛型是一种编程机制&#xff0c;允许你编写可以与多种数据类型一起工作的代码&#xff0c;同时提供编译时类型检查以确保类型的安全性。泛型的主要目的是提高代…

外贸获客的几种正确打开方式,还不快来GET!

做外贸还在愁没客户&#xff1f;作为外贸人&#xff0c;开发客户是我们的重要工作内容&#xff0c;想要高效地开发客户&#xff0c;首先就要知道外贸获客的方法有哪些&#xff0c;当下最主流的外贸获客渠道分为线下和线上两种方式&#xff0c;今天东哥就介绍几种获客渠道&#…

YOLOv5项目实战(5)— 算法模型优化和服务器部署

前言:Hello大家好,我是小哥谈。近期,作者所负责项目中的算法模型检测存在很多误报情况,为了减少这种误报情况,作者一直在不断优化算法模型。鉴于此,本节课就给大家详细介绍一下实际工作场景中如何去优化算法模型和进行部署,另外为了方便大家进行模型训练,作者在文章中提…

流量内存cpu使用率使用工具

类似360工具球的工具 我提供了夸克下载喜欢的朋友可以直接下载使用 我用夸克网盘分享了「TrafficMonitor」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan…

wpf devexpress 使用IDataErrorInfo实现input验证

此处下载源码 当form初始化显示&#xff0c;Register按钮应该启动和没有输入错误应该显示。如果用户点击注册按钮在特定的输入无效数据&#xff0c;form将显示输入错误和禁用的注册按钮。实现逻辑在标准的IDataErrorInfo接口。请查阅IDataErrorInfo接口&#xff08;System.Com…

微机原理——定时器学习1

目录 定时类型 8253内部结构框图 8253命令字 六种工作方式及输出波形 计数初值的计算与装入 8253的初始化 定时类型 可编程定时器8253&#xff1a;&#xff08;内部采用的是16位 减法计数器&#xff09; 8253内部结构框图 8253命令字 8253有三个命令字&#xff1a;方式命…

【广州华锐视点】VR云端看车:一键穿越!VR技术让你在家就能试驾各种豪车!

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经逐渐走进我们的生活。在汽车行业&#xff0c;VR线上看车已经成为了一种全新的购车体验。通过这种创新的方式&#xff0c;消费者可以在不出门的情况下&#xff0c;全方位地了解汽车的外观、内饰和性能…

PGSQL(PostgreSQL)数据库安装教程

安装包下载 下载地址 下载后点击exe安装包 设置的data存储路径 设置密码 设置端口 安装完毕&#xff0c;配置PGSQL的ip远程连接&#xff0c;pg_hba.conf&#xff0c;postgresql.conf&#xff0c;需要更改这两个文件 pg_hba.conf 最后增加一行 host all all …

1+x网络系统建设与运维(中级)-练习题

一.给设备重命名 同理可得&#xff0c;所有交换机和路由器都用一下命令配置 <Huawei>sys [Huawei]sysn LSW1 二.配置VLAN LSW1&#xff1a; [LSW1]vlan batch 10 20 [LSW1]int e0/0/1 [LSW1-Ethernet0/0/1]port link-type access [LSW1-Ethernet0/0/1]port default vlan…

P1012 [NOIP1998 提高组] 拼数( 字典序 )

字典序&#xff1a; 在字典中&#xff0c;单词是按照首字母在字母表中的顺序进行排列的 比如 alpha 在 beta 之前。 1.而第一个字母相同时&#xff0c;会 去比较两个单词的第二个字母在字母表中的顺序&#xff0c;比如 account 在 advanced 之前&#xff0c;以此类推。 2. 若…

2023年中国金融科技研究报告

第一章 行业概况 1.1 定义 金融科技&#xff08;FinTech, Financial Technology&#xff09;代表了金融和技术的交汇。这一领域虽然处于发展的初期阶段&#xff0c;但已经展现出深远的影响力。金融科技的业务模式多样&#xff0c;涵盖了从传统金融服务的数字化转型到新兴技术…

使用Xshell启动远程服务器上的tensorboard:本地浏览器打开

在远程服务器上启动的tensorboard产生的localhost网址用本地浏览器一般不能直接打开&#xff0c;我们需要建立本地PC与远程服务器的通信&#xff0c;将tensorboard的映射端口与本地端口连接起来&#xff08;参考解决方案&#xff09;。 一、连接远程服务器设置 二、添加SSH隧道…

MySQL实现(免密登录)

简介: MySQL免密登录是一种允许用户在没有输入密码的情况下直接登录到MySQL服务器的配置。这通常是通过在登录时跳过密码验证来实现的。 1、修改MySQL的配置文件 使用vi /etc/my.cnf&#xff0c;添加到【mysqld】后面 skip-grant-tables #配置项告诉mysql跳过权限验证&#…

运算放大器和常见运放电路

关于运算放大器 运算放大器(Operational Amplifier), 简称运放, 是一种直流耦合, 差模输入, 单端输出(Differential-in, single-ended output)的高增益电压放大器件. 运放能产生一个比输入端电势差大数十万倍的输出电势. 因为刚发明时主要用于加减法等运算电路中, 因而得名运算…

flutter 自定义TabBar 【top 0 级别】

flutter 自定义TabBar 【top 0 级别】 前言一、基础widget二、tab 标签三、barView总结 前言 在日常开发中&#xff0c;tab 标签选项&#xff0c;是一个我们特别常用的一个组件了&#xff0c;往往我们在一个项目中&#xff0c;有很多地方会使用到它&#xff0c;每次单独去写&am…

ESP32-Web-Server编程- 使用表格(Table)实时显示设备信息

ESP32-Web-Server编程- 使用表格&#xff08;Table&#xff09;实时显示设备信息 概述 上节讲述了通过 Server-Sent Events&#xff08;以下简称 SSE&#xff09; 实现在网页实时更新 ESP32 Web 服务器的传感器数据。 本节书接上会&#xff0c;继续使用 SSE 机制在网页实时显…

python中的字符串

字符串 字符串是编程语言中的一种基本数据类型&#xff0c;用于表示一串字符序列。在Python中&#xff0c;字符串是不可变的&#xff0c;也就是说一旦字符串被创建&#xff0c;就无法修改其中的字符。 Python中的字符串可以用单引号或双引号括起来&#xff0c;例如&#xff1…

当异步任务汇聚,你该如何选择:CountDownLatch 与 CompletableFuture 对比

当我们需要执行多个异步任务&#xff0c;并且需要等待它们全部完成才可以继续时&#xff0c;可以使用以下两种实现方案&#xff1a; 一、方案 方案一&#xff1a;CountDownLatch CountDownLatch是一个同步工具类&#xff0c;可以用来实现多个线程之间的同步。它可以让一个线程…

2023最新软件测试八股文,你背得怎样了

今天给大家分享软件测试面试题基础篇&#xff0c;看看大家能答对几题 1、软件测试方法有哪些分类?各自有什么特点?设计测试用例的主要方法有哪些? 白盒: 测试人员利用程序内部的逻辑结构及相关信息&#xff0c;设计或选择型试用例:对程序所有的逻辑路径进行测试。 黑盒: …

【C++】异常抛出变量的生命周期

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。搜…