化学空间可视化(chemical space visualization)开源软件ChemPlot的安装及使用

文章目录

  • 前言
  • 一、ChemPlot是什么?
  • 二、conda环境安装ChemPlot
    • 1. 创建conda环境
    • 2. 安装chemplot及需要的包
    • 3. 检验安装
  • 三、使用步骤
    • 1. 化合物数据库可视化使用方法
      • BBBP数据库的t-SNE降维后可视化:
      • BBBP数据库的PCA降维后可视化:
      • BBBP数据库的UMAP降维后可视化:
      • BBBP数据库的t-SNE降维后Hexagonal Bin Plot:
      • LOGP数据库的聚类后可视化:
    • 2. 实例:小分子上市药物与临床药物化学空间可视化
  • 总结
  • 参考资料


前言

在当前人工智能(AI)引导的化学设计时代,可视化经常被用来描述数据驱动模型的适用范围。在分子数据科学中,存储在由图形、文本表示、原子坐标或其任何组合形成的化学分子表示的高维空间是的分子数据库的可视性变得复杂而不可琢磨,因此,开发化学信息数据可视化方法和工具非常必要。

数据可视化提供了将高维分子数据减少到二维(2D)或三维(3D)空间的实用手段。在低维化学空间中的数据的视觉检查使得能够更真实地筛选具有用户期望的性质的分子,用于化学库设计,高通量筛选,多样性分析和离群值检测。

本文介绍开源化学空间可视化工具ChemPlot从conda环境在本地安装及使用方法,避免化学信息数据上传,帮助化学工作者使用不同的降维方法可视化数据库。


一、ChemPlot是什么?

ChemPlot
ChemPlot是一个开源的Python库工具(用户手册),可以通过多种降维实现化学空间的可视化,支持按相似性展示、多种降维方法、静态和动态可视化等。
ChemPlot提供在线网页版本,但需要上传分子数据库,上传规模有5000条的限制;对于商业用户数据上传其保密性也存在担忧。

ChemPlot具有结构和定制的相似性方法,包括分子指纹structural similarity(当基于结构相似性) 和 描述符tailored similarity(基于定制的相似性)。通过定制的相似性,化学空间以考虑目标特性的监督方式构建。
当基于结构相似性计算化学空间可视化时,分子列表被转换为扩展连接指纹(ECFP)。ECFP是位向量,其中每个位表示特定子结构的存在或不存在。从主结构中提取子结构,从每个非氢原子开始,延伸到相邻原子,直到达到指定的距离。提取的子结构被散列并映射到固定大小的位向量ChemPlot使用RDKit库将SMILES和InChI符号转换为位向量长度为2048位、半径为2个相邻原子的ECFP。在转换每个分子之后,对于所有分子,从位向量中移除仅包含0或仅包含1的位。 剩余的位数决定了维度的总数,它们被用作降维阶段的输入。
当基于定制的相似性计算化学空间可视化时,分子列表被转换为通过使用Mordred库计算的一组描述符。最初,总共计算了201个物理化学描述符。在无法成功计算描述符的情况下,从数据集中删除分子。描述符列表然后用于形成矩阵,其中行表示化合物,列表示描述符。接下来,通过使用用于数字目标值的套索回归或通过使用用于分类目标值的逻辑回归来选择与目标属性相关的描述符。Lasso回归使用0.05 alpha(正则化乘数)的L1正则化,最大迭代次数为10000。逻辑回归使用L1正则化,C为0.3(正则化强度的倒数),liblinear作为优化方法。所选描述符的所得矩阵用作降维阶段的输入。

ChemPlot以三种不同的降维方法PCA,t-SNE和UMAP
PCA 主成分分析:PCA 是一种线性降维算法,通过最大化方差将数据点投影到主成分上。ChemPlot使用scikit-learn 库中的PCA和默认参数。在可视化步骤中,两个最重要的主成分被用作减少的维度。
t-SNE t-分布式随机邻域嵌入:t-SNE 是一种非线性降维算法,可将数据点之间的相似性转换为联合概率。然后,它最小化高维数据和低维嵌入的联合概率分布之间的差异。这是一个随机过程,不同的初始化参数会产生不同的结果。除了复杂度参数,ChemPlot使用其默认参数应用scikit-learn 库中的t-SNE。如下所述,困惑度参数由预训练模型自动计算。
UMAP 一致流形逼近与投影:UMAP 是一种非线性降维算法,它为给定的数据点构建一个特定的加权k-近邻图,然后计算该图的低维布局。它是基于一个随机过程,产生不同的结果,从不同的初始化参数。ChemPlot使用UMAP库提供的默认参数应用UMAP,除了由下面描述的预训练模型自动计算的n_neighbors和min_dist。

ChemPlot聚类:允许您通过使用sklearn中实现的KMeans 算法来识别数据中的不同聚类。

ChemPlot使用户能够以静态和交互式方式可视化分子数据集的化学空间,动态展示可以看到分子结构信息;也可以使用Kernel Density Estimate Plot(只支持Static Plot)和Hexagonal Bin Plot。

二、conda环境安装ChemPlot

1. 创建conda环境

需要指定python=3.9或者3.8:

conda create -n chemplot_env python=3.9
conda activate chemplot_env

2. 安装chemplot及需要的包

将以下内容保存进 requirements.txt文件:

pandas>=1.1.3
numpy>=1.19.2
matplotlib==3.3.2
seaborn==0.11.1
umap-learn>=0.5.1
scikit-learn==0.24.2
bokeh==2.4.3
scipy>=1.5.2
mordred>=1.2.0
networkx>=2.5
pytest>=6.2.5
pytest-cov>=3.0.0
rdkit

安装chemplot,及需要的包:

pip install -r requirements.txt
pip install chemplot

NOTE: bokeh版本过高(bokeh≥3.0),会有错误提示:ImportError: cannot import name ‘Panel’ from ‘bokeh.models’

3. 检验安装

检验pip安装:

pip show chemplot

在这里插入图片描述

用chemplot中test文件检验安装:

python -m pytest --pyargs chemplot

在这里插入图片描述**NOTE:**结果会显示有5项未通过,来自于SMILES读取的fromsmiles_test.py和打印interactive_plot_test.py,忽略。

三、使用步骤

感兴趣的小伙伴可查看:ChemPlot用户手册

1. 化合物数据库可视化使用方法

这里使用ChemPlot test数据库:BBBP:blood-brain barrier penetration,数据为药物分子的血脑屏障可透过性,1代表可以,0代表透过性低。该文件位于conda环境的chemplot/data/目录下。
激活conda环境(conda activate chemplot_env),交互式打开Python:

import chemplot as cp
data_BBBP = cp.load_data("BBBP")
plotter = cp.Plotter.from_smiles(data_BBBP["smiles"], target=data_BBBP["target"], target_type="C")

降维并交互式展示:

plotter.tsne()
plotter.interactive_plot(show_plot=True)

plotter.interactive_plot(show_plot=True)之后,Bokeh Plot将打开,示例如下。
如果不能生效,可尝试切换默认浏览器到Chrome。

BBBP数据库的t-SNE降维后可视化:

在这里插入图片描述

BBBP数据库的PCA降维后可视化:

plotter.pca()
plotter.interactive_plot(show_plot=True)

在这里插入图片描述

BBBP数据库的UMAP降维后可视化:

plotter.umap()
plotter.interactive_plot(show_plot=True)

在这里插入图片描述

BBBP数据库的t-SNE降维后Hexagonal Bin Plot:

使用Interactive Plot模式:

plotter.tsne(random_state=0)
plotter.interactive_plot(kind="hex", show_plot=True) 

在这里插入图片描述

LOGP数据库的聚类后可视化:

加载数据LOGP:(数据库文件位置与BBBP相同,是化合物酯水分配系数log P数值,与BBBP分类不同,LOGP属于连续的数值,需要设置 target_type=“R”)

from chemplot import Plotter, load_data
data_LOGP = load_data("LOGP")
plotter = Plotter.from_smiles(data_LOGP["smiles"], target=data["target"], target_type="R")

UMAP降维,聚类:

plotter.umap(random_state=500)
plotter.cluster()

使用Interactive Plot模式:

plotter.interactive_plot(clusters=True, show_plot=True)

在这里插入图片描述六边形箱图

2. 实例:小分子上市药物与临床药物化学空间可视化

利用ChemPlot,这里展示了2325个上市小分子药物(Target 1)与9350个正在临床研究中的药物(Target 0)的化学空间,展示两者在化学空间中的情况。

在这里插入图片描述在这里插入图片描述在这里插入图片描述
从t-SNE和UMAP降维方法能直观看到,临床药物的化学空间都是围绕上市药物展开,可以看出来临床药物与上市药物有接近的化学空间;
同时也可以看到有空白区,代表仍有一些化学空间未被探索,是目前来看尚未成药的化学空间,或者是不可成药的空间,亦或是目前化学合成不能探索到的空间。
不禁想到一个问题:药物的化学空间是有限的,或是无限的?进一步,类药的化学空间是有限或无限的?


总结

数据可视化是化学家揭示隐藏在高维数据中的信息内涵,以及解释这些信息,并将其传达给其他专家或者非专业人士的重要工具。
本文介绍化学空间可视化开源工具ChemPlot的安装及应用,帮助化学工作者对化学数据库进行降维、聚类以及可视化展示。

参考资料

  1. https://chemrxiv.org/engage/chemrxiv/article-details/617180aaff3ba991f99af550

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

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

相关文章

shapely 笔记:基本方法

1 线性方法 1.1 object.interpolate(distance[, normalizedFalse]) print(LineString([(0, 0), (0, 1), (1, 1)]).interpolate(1.5)) #POINT (0.5 1)print(LineString([(0, 0), (0, 1), (1, 1)]).interpolate(0.75, normalizedTrue)) #POINT (0.5 1) LineString([(0, 0), (0…

JimuReport积木报表 v1.7.0 变革版本发布,低代码报表设计工具

项目介绍 一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报…

从零开始的 dbt 入门教程 (dbt core 开发进阶篇)

引 在上一篇文章中,我们花了专门的篇幅介绍了 dbt 更多实用的命令,那么我们继续按照之前的约定来聊 dbt 中你可能会遇到的疑惑以及有用的概念,如果你是 dbt 初学者,我相信如下知识点一定会对你有极大的帮助: 了解 dbt_…

java基础训练题(2)

一、题目 1. 以下程序输出(D) public static void main(String[] args) {int num 2;switch (num) {case 1:num;case 2:num;case 3:num;default:num;break;}System.out.println(num);} } A:2 B:3 C:4 D&#xff…

STM32 TIM输入捕获测频率占空比库函数

目录 一、输入捕获初始化函数 TIM_ICInit TIM_PWMIConfig TIM_ICStructInit 二、主从触发模式对应函数 TIM_SelectInputTrigger TIM_SelectOutputTrigger TIM_SelectSlaveMode 三、配置分频器函数 TIM_SetIC1Prescaler TIM_SetIC2Prescaler TIM_SetIC3Prescaler T…

Kubernetes基础(二十二)-K8S的PV/PVC/StorageClass详解

1 概述 先来个一句话总结:PV、PVC是K8S用来做存储管理的资源对象,它们让存储资源的使用变得可控,从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则:先规…

蓝牙BLE安全-SSP简单安全配对

SSP的配对过程由于可以根据设备的IO能力选择不同的关联模型,因此十分灵活,其提供了四种方式:Numeric Comparison、Passkey Entry、Just Works以及Out of Band (OOB) 。这里关联方式的选择实质上对后面的流程是有一定影响的,如Just…

使用动态网格的流体动画 Fluid Animation with Dynamic Meshes 论文阅读笔记

目录 引言背景方法离散化离散化的导数算子速度插值 广义的半拉格朗日步重新网格化双向流固耦合和质量守恒 原文: Klingner, Bryan M., et al. “Fluid animation with dynamic meshes.” ACM SIGGRAPH 2006 Papers. 2006. 820-825. 引言 使用 [Alliez et al., 20…

openai公司的chatgpt-3.5参数库内还未增加sora的语料信息

openai公司的chatgpt-3.5参数库内还未增加sora的语料信息!我想通过openai公司的chatgpt3.5来了解一下关于sora的技术信息,结果呢,它竟然回答不知道sora是什么。看来,sora的语料库信息还未来得及加入chatgpt3.5的训练模型中。 如图…

每日学习总结20240219

每日总结 20240219 1.文件类型.csv CSV文件是一种以逗号分隔值(Comma-Separated Values)为标记的文本文件,它可以用来存储表格数据。每一行表示一条记录,而每一条记录中的字段则使用逗号或其他特定的分隔符进行分隔。 常用场景…

HTTP特性

大家好我是苏麟 , 今天说说HTTP特性. 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 到目前为止,HTTP 常见到版本有 HTTP/1.1,HTTP/2.0,HTTP/3.0,不同版本的 HTTP 特性是不一样的。 这里先用 HTTP/1.1 版本给大家介…

Golang - 使用CentOS 7 安装Golang环境

文章目录 操作步骤 操作步骤 为在CentOS 7上安装Go语言环境,可以按照以下步骤进行操作: 下载Go语言包: 从官方网站 https://golang.org/dl/ 下载适用于Linux的Go语言包。 解压缩Go语言包: 使用以下命令解压缩下载的Go语言包 […

CyberDAO:web3时代的引领者

Web3.0正在改写着世界运行的规则,AGI将为人类未来的生产效率、工作方式与目标带来改变,区块链经过十余年发展开启了去中心化新格局,带来生产关系的变革。人类正在从过往以时间换取收入、听命完成工作,转变为以个性化、自主追求人生…

OpenAI Sora视频模型技术原理报告解读

▌01. OpenAI Sora 视频生成模型技术报告总结 •不管是在视频的保真度、长度、稳定性、一致性、分辨率、文字理解等方面。 •技术细节写得比较泛(防止别人模仿)大概就是用视觉块编码(visual patch)的方式,把不同格…

数据采集三防平板丨三防平板电脑丨停车场应用

随着现代科技的不断发展,三防平板已经成为许多人工作和生活的必备工具。在停车场这个场景中,三防平板的应用可以大大提高停车场管理的效率和安全性。 停车场是现代城市交通管理的重要组成部分,它直接关系到城市交通的流畅和公共安全。停车场…

RK3588平台开发系列讲解(视频篇)ffmpeg 的移植

文章目录 一、ffmpeg 介绍二、ffmpeg 的组成三、ffmpeg 依赖库沉淀、分享、成长,让自己和他人都能有所收获!😄 📢ffmpeg 是一种多媒体音视频处理工具,具备视频采集功能、视频抓取图像、视频格式转换、给视频加水印并能将视频转化为流等诸多强大的功能。它采用 LGPL 或 G…

Rofin罗芬Laser激光DQ80设备操作说明书

Rofin罗芬Laser激光DQ80设备操作说明书

计算机视觉的应用23-OpenAI发布的文本生成视频大模型Sora的原理解密

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用23-OpenAI发布的文本生成视频大模型Sora的原理解密。本文概况性地将Sora模型生成视频主要分为三个步骤:视频压缩网络、空间时间潜在补丁提取以及视频生成的Transformer模型。 文章目录…

【lesson62】网络通信UdpSocket版

文章目录 UdpSocketUdpServer.hppUdpServer类成员变量解释成员函数解释 UdpServer的实现ServerIinit的实现socketbindhtonsinet_addr具体实现 ServerStart的实现recvfromsendtontohsinet_ntoa具体实现 ~UdpServer函数实现UdpServer.hpp整体完整代码 UdpServer.ccUdpClient.ccTh…

CDP和Chrome

CDP和Chrome CDP和WebDriver Protocol WebDriver和 Chrome DevTools Protocol(CDP) 是用于自动化浏览器的两个主要协议,大多数的浏览器自动化工具都是基于上述其中之一来实现的。可以通过这两种形式来和浏览器交互,通过代码来控…