化学空间可视化(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,一经查实,立即删除!

相关文章

qt QXlsx操作 excel 单元格

1.单元格设置宽度 m_pxlsx->setColumnWidth(5, 10);//5为列,10为列的宽度,excel表格中默认单元格宽度为9.36英寸 注意:单元格列宽的单位是英寸,默认的单元格列宽为9.36英寸。 注意:单元格列宽单位不是像素。 我之…

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_…

Python数据分析:NumPy、Pandas与Matplotlib库

Python 是一种强大的编程语言,特别适合数据分析,主要得益于其丰富的库生态系统。NumPy、Pandas 和 Matplotlib 是 Python 中最常用的数据分析库。以下是对这三个库的简要介绍以及相应的代码示例。 1. NumPy NumPy 是 Python 的一个基本库,用…

前端 node 常见的包管理工具 npm、npx、Yarn、cnpm、pnpm 的区别有哪些

些工具都是用于管理 Node.js 包和依赖项的 npm (Node Package Manager): npm 是 Node.js 的默认包管理工具,随同 Node.js 安装。主要功能包括安装、发布、管理 JavaScript 包和依赖项。npm 是最常用的包管理工具之一,拥有庞大的包仓库(npm Re…

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…

怎样打开“好运“的开关?

说到运气,正好这个春节,我刚刚看了一本书,咱们得到《人生算法》课的主理人,喻颖正老师今年2月刚刚出的一本新书,叫《好运》。 关于运气的抽象原理,你可能听过不少,咱们就不多说了。我主要想借着…

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

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

WPF大杂烩

1、 <ResourceDictionary Source"pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Dark.xaml" /> 在上面提供的代码中&#xff0c;Source 属性用于指定要加载的资源字典的位置。这里是一个使用了特殊 URI 格式的路径…

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

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

Excel表的内容批量生成个人加水印的Word文档

Excel表的内容批量生成个人加水印的Word文档 以下代码可以直接复制到docm文件里使用 Sub 宏1()Dim MyDialog As FileDialogDim GetStr As String, Adoc As StringDim PsDoc As DocumentApplication.ScreenUpdating FalseSet MyDialog Application.FileDialog(msoFileDialogF…

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

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

SpringBoot+Kafka

文章目录 一、依赖二、配置文件三、API1、生产者2、消费者 一、依赖 <!-- spring-kafka&#xff08;与kafka的版本一致&#xff09; --> <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId>…

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

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

每日学习总结20240219

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

HTTP特性

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

二级 C 语言笔试-16

一、选择题 1. 程序流程图中带有箭头的线段表示的是( )。 A) 图元关系 B) 数据流 C) 控制流 D) 调用关系 2. 下列描述中正确的是( )。 A) 程序就是软件 B) 软件开发不受计算机系统的限制 C) 软件既是逻辑实体&#xff0c;又是物理实体 D) 软件是程序、数据与相关文档的集合 3. …

Nginx https反向代理

接前一篇文章&#xff0c;今天看看https的反向代理怎么配置。 生成自签名证书和私钥 要使用https&#xff0c;首先需要有证书和私钥&#xff0c;这里创建一个测试用的自签名证书和私钥。 使用 openssl 命令生成服务器私钥文件 openssl genrsa -out server.key 2048生成证书…