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

news2025/1/12 20:36:13

文章目录

  • 前言
  • 一、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.coloradmin.cn/o/1459457.html

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

相关文章

【.NET Core】常见C#代码约定

【.NET Core】常见C#代码约定 文章目录 【.NET Core】常见C#代码约定一、概述二、代码预定的目标三、代码约束工具和分析器四、C#语言准则五、字符串约定5.1 使用字符串内插来连接短字符串5.2 插入大文本时,使用System.Text.StringBuilder对象 六、数组约定七、委托…

【Java】上传图片至阿里云oss服务器,文件上传以及图片base64上传

目录 引入maven依赖编写ossUtil编写Controller使用接口工具进行测试测试表单文件上传测试base64文件上传 首先需要在阿里云上开通oss服务,并获取到以下四个信息 endpoint: 购买的服务器节点地址accessKeyId: 接入的keyIdaccessKeySecret: 接入的key秘钥bucketName&…

Nginx操作

文章目录 Nginx使用操作1. 安装nginx2. docker启动nginx3. 目录介绍4. 更改站点内容,初试一下(此步骤可以省略)5. nginx配置文件结构5.1 http配置示例5.2 server配置 Nginx使用操作 服务器: ubuntudocker内操作nginx 1. 安装nginx # 1. 查询nginx版本 sudo docker…

ubuntu分辨率更改、开机被重置、ubuntu屏幕小

ubuntu分辨率更改 分辨率改成:1920x1200 xrandr --size 1920x1200 在此之前可以先输入 xrandr 看支持哪些分辨率 开机被重置 我已经设置成这样了, 一开机变回这个 ubuntu屏幕小 输入命令行 xrandr --size 1920x1200 这个下次重启ubuntu又会重置…

idea代码review工具Code Review Helper使用介绍

之前在团队里面遇到一个关于代码review的问题,使用gitlab自己的还是facebook的Phabricator,很难看到整体逻辑,因为业务逻辑代码可能不在这次改动范围内,在去源库中找不好找。针对这个刚需,在网上找了一个idea的代码工具…

LeetCode算法实践——前缀和从入门到入土

前缀和算法 对于一个数组a,和为s数组;其每一个下标的前缀和为s[0]0,s[i]s[i-1]a[i]。 从上面可以推导出left到right之间的前缀和为是s[right1]-s[left]。 例如a[3,2,1,2],对应的前缀和数组为s[0,3,5,6,8]。a的子数组[2,1,2]的和就可以用s[…

MybatisPlus多表联查-分页关联查询+根据id获取多表联查后的单行数据

分页关联查询 需求分析 有两张表w以及d,需要w的一些字段以及d的一些字段在前端显示 此时就需要用到关联查询,查询到的数据放入视图类,显示在前端 项目结构 视图类 package com.wedu.modules.tain.entity.vo;import lombok.Data;import ja…

深度学习基础——U-Net图像分割

图像分割,就是根据图像的某种相似性特征(如亮度、颜色、纹理、面积、形状、位置、局部统计特征或频谱特征等)将医学图像划分为若干个互不相交的“连通”区域。 相关特征在同一区域内表现出一致性或相似性,而在不同区域间表现出明显的…

阿赵UE学习笔记——16、渲染性能相关

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的使用。上一篇说了灯光的移动性问题,这一篇来看看怎样去辨别灯光性能的好坏。   虚幻引擎里面有一组显示模式是专门用来看场景当前的灯光和网格渲染的,叫做优化试图模式&#x…

动态内存管理(中)

动态内存管理(上)-CSDN博客(malloc, realloc, calloc, free函数的用法以及注意事项等知识点) 目录 1.对空指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态内存开辟空间使用free空间…

SpringBoot + Nacos 实现动态化线程池

1.背景 在后台开发中,会经常用到线程池技术,对于线程池核心参数的配置很大程度上依靠经验。然而,由于系统运行过程中存在的不确定性,我们很难一劳永逸地规划一个合理的线程池参数。 在对线程池配置参数进行调整时,一…

网络:SNMP协议

1. SNMP技术原理 SNMP的结构包括网管站NMS(Network Management Station)和Agent两部分。SNMP协议是规定NMS和Agent之间如何传递管理信息的应用层协议(UDP协议,使用162端口)。 2. SNMP版本 SNMPv1:方便实现&#xff0c…

怎么在电脑上做工作笔记?电脑桌面电子笔记软件

在繁忙的职场中,随时随地记录工作笔记是许多职场人士的日常需求。这不仅包括了会议记录、项目进展,还有一些灵感、规划和工作要点,都需要随手记下,以便随时查看和回顾。那么我们如何在电脑上做工作笔记更高效、便捷呢?…

Python实现线性逻辑回归和非线性逻辑回归

线性逻辑回归 # -*- coding: utf-8 -*- """ Created on 2024.2.20author: rubyw """import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import classification_report from sklearn import preprocessing from sklearn…

jmeter 命令行启动 动态参数化

[Jmeter命令行参数] 一、在linux中,使用非gui的方式执行jmeter。若需更改参数,必须先编辑jmx文件,找到对应的变量进行修改,比较麻烦。因此,可以参数化一些常用的变量,直接在Jmeter命令行进行设置 二、参数…

信息安全法律法规体系

信息安全法律法规体系 我国信息安全法规体系可以分为4层。 法律层面具体对应的法律、法规一般性法律规定宪法、国家安全法、国家秘密法、治安管理处理条例等虽然没有专门针对信息安全的条款,但约束了信息安全相关的行为规范和惩罚信息网络犯罪的法律《中华人名共和国刑法》《…

专家之路上的Flow高级秘籍

公众号「稀有猿诉」 原文链接 专家之路上的Flow高级秘籍 『君不见,黄河之水天上来,奔流到海不复回。』 学习与河流一样,一方面学无止境,又是逆水行舟,不进则退,因为其他人都在卷。前文一篇文章讲了F…

单片机02_寄存器_GPIO设置

芯片概述 C51:0口、1口、2口、3口,P00~p07、P10~P17、P20~P27、P30~P37 STM32:A口、B口、C口、D口,PA0~PA15/PA5 GPIOA.5 STM32F407ZGT6有7组GPIO端口,分别是:A B C D E F G,每组均有16个GPIO端…

com.alibaba.fastjson.JSONException: toJSON error的原因

问题: 导出接口报错,显示json格式化异常 发现问题: 第一个参数为HttpResponse,转换成json的时候报错 修改方法: 1.调换两个参数的位置 2.在aop判断里边 把ServletAPI过滤掉 Before("excudeWebController()")pub…