AIDD - 人工智能药物设计 - 在 Docker 上创建和运行 PostgreSQL + RDKit 卡带环境

embedded/2024/12/26 0:40:46/

在 Docker 上创建和运行 PostgreSQL + RDKit 卡带环境

背景

我们将讨论化学数据库。

  • 看起来,如果你在 PostgreSQL 中放置一个 RDKit cartridge (扩展),就可以基于 SQL 进行结构相似性搜索,看起来很有趣。
  • 但是我找不到太多关于构建环境的信息…
  • 我尝试它只是为了创造一个简单的环境

前提

  • 包括 Docker Desktop
  • 它包含 psql(postgreSQL 的客户端),并且还通过 PATH

first part

second part

third part

Dockerfile、映像准备

从头开始创建环境很困难。 Git Hub 上提供了多个 Dockerfile,用于将 RDKit 添加到 Docker 的 PostgreSQL 映像,因此我们将使用它们。

GitHub - rvianello/docker-postgres-rdkit: The PostgreSQL image, just extended with the RDKit cartridge

图片

在撰写本文时,更新是最新的,所以这次我使用了上面的 DockerFile。

将其放在您选择的文件夹中(我们称之为 D:\rdgres),并在 Powershell 中按顺序运行以下命令:

  1. cd D:\rdgres
  2. docker image build -t rdgres

就我而言,构建大约需要 20-30 分钟。成功完成后,下一步是从映像创建容器并运行它。

  1. docker run --name myrdgres -p 5432:5432 -e POSTGRES_PASSWORD=mypassword -d rdgres
  2. # --name コンテナ名 今回はmyrdgres
  3. # -p [ホスト側のポート]:[コンテナ側のポート]
  4. # -e 環境変数
  5. # -d バックグラウンド実行 [イメージ名]

提醒一下,run 命令会从镜像创建一个容器(一个独立的进程)并运行它。

创建数据库并应用扩展

目前,postgreSQL 正在容器 myrdgres 中运行。 接下来,我们将创建一个数据库。(在下文中,原来是 # 的部分已更改为双字节字符,因此不会被注释掉。 )

首先进入集装箱:

  1. docker exec -it myrdgres /bin/bash #まずPowershellでこれを実行すると
  2. >> root@aa0bb1234567:/# #こんな風になりコンテナ(PostgreSQL)のbashを操作できるようになる

创建数据库:

  1. root@aa0bb1234567:/# psql -U postgres #ユーザーpostgresでpostgresqlにログイン
  2. postgres=# create database testdb; #データベース作成
  3. postgres=# \l #データベースが作成できてるか確認

验证是否已添加新数据库(在本例中为testdb)。

图片

接下来,将 RDKit 扩展添加到 testdb。

  1. postgres=# \q #一旦出る
  2. root@aa0bb1234567:/# psql -c ‘CREATE EXTENSION rdkit’ testdb -U postgres #拡張機能適用
  3. CREATE EXTENSION
  4. root@aa0bb1234567:/# psql testdb -U postgres #testdbにログイン
  5. testdb=# \dx #確認

如果它有效,则 rdkit 已添加到 testdb 扩展中。

图片

创建表并向其添加数据

接下来,制作一个表格。 从屏幕中,使用以下命令创建一个表。

创建表:

  1. testdb=# CREATE TABLE compounds (
  2. id serial PRIMARY KEY,
  3. name TEXT,
  4. mol_weight REAL,
  5. xlogp REAL,
  6. smiles TEXT);

接下来,我们将输入包含化学结构信息的数据。

在本例中,我们将使用从 Pubchem 下载的 CSV 数据。 由于我们想要进行结构表达式搜索,因此我们保留了 smiles 列。

图片

此数据通过 docker 命令发送到容器中。 我想从容器外部进行操作,因此我将独立于我一直在使用的 PowerShell 启动 PowerShell。

新推出的PowerShell:

  1. docker cp (ホストPC側のファイルパス)/compound.csv myrdgres(コンテナ名):/tmp/data.csv
  2. #Successfully copied ookB to myrdgres:/tmp/data.csv

然后,我不再使用此 Powershell,因此我关闭它,并使用 Powershell 的 COPY 命令将数据添加到表中,该 Powershell 到目前为止一直在运行 postgreSQL。

将数据复制到表:

  1. testdb=#\COPY compounds(name,mol_weight,xlogp,smiles) FROM ‘/tmp/data.csv’ DELIMITER ‘,’ CSV HEADER;
  2. #COPY 1000

查看数据:

  1. SELECT name,smiles FROM compounds;

图片

结构搜索试验

让我们来试一下 RDKit 磁带盒独有的结构搜索。

子结构搜索:

  1. SELECT * FROM compounds where smiles @> ‘C1=CC=C(C=C1)C(=O)O’
  2. ORDER BY mol_weight ASC;
  3. # 安息香酸骨格を含む構造、分子量小さい順

成功!

图片

相似结构检索:

  1. SELECT *, tanimoto_sml(rdkit_fp(smiles), rdkit_fp(‘CCCCOC(=O)C1=CC=CC=C1C(=O)OCCCC’)) as tani
  2. FROM compounds
  3. WHERE tanimoto_sml(rdkit_fp(smiles), rdkit_fp(‘CCCCOC(=O)C1=CC=CC=C1C(=O)OCCCC’)) > 0.8
  4. ORDER BY tani DESC;
  5. #ジブチルフタレートっぽい構造、似てる順(谷本類似度順)

成功!

图片

如果你连接 RDKit + python 可以做更多的乐趣。


http://www.ppmy.cn/embedded/148754.html

相关文章

【故障处理系列--gitlab的CI流水线下载安装包提示报错】

故障现象: 前端同事一直向我反映使用alpine-node系列的镜像,安装包报错故障原因 在CI文件上配置的代理没有生效,导致流水线无法在gitlab-runner上拉取https://registry.npmmirror.com仓库软件包 后来查资料提示说,在gitlab的CI文…

JMeter 二次开发之环境准备

通过JMeter二次开发,可以充分发挥JMeter的潜力,定制化和扩展工具的能力以满足具体需求。无论是开发自定义插件、函数二次开发还是定制UI,深入学习和掌握JMeter的二次开发技术,将为接口功能测试/接口性能测试工作带来更多的便利和效…

Python中所有子图标签Legend显示详解

在数据可视化中,图例(legend)是一个非常重要的元素,它能够帮助读者理解图表中不同元素的含义。特别是在使用Python进行可视化时,matplotlib库是一个非常强大的工具,能够轻松创建包含多个子图的图表&#xf…

MVCC了解

MVCC(多版本并发控制)学习指南及代码示例 一、学习MVCC前先了解什么 1. MVCC的定义和作用 MVCC是一种并发控制机制,用于解决并发事务访问数据库时可能出现的问题,如脏读、不可重复读和幻读。它通过为每个数据行维护多个版本来实…

uniapp开发微信小程序实现获取“我的位置”

1. 创建GetLocation项目 使用HBuilder X创建一个项目GetLocation,使用Vue3。 2. 在腾讯地图开放平台中创建应用 要获取位置,在小程序中需要使用腾讯地图或是高德地图。下面以腾讯地图为例。 (1)打开腾讯地图开放平台官方网址:腾讯位置服务 - 立足生态,连接未来 (2)注册…

开源模型应用落地-LlamaIndex学习之旅-Agents-用自然语言构建Agent(一)

一、前言 在当今这个信息爆炸的时代,数据如同浩瀚宇宙中的繁星,海量且繁杂。从企业的海量业务数据到学术研究的丰富文献,从互联网上的碎片化信息到个人电脑中的各类文档,数据无处不在,但如何从中高效地获取有价值的信息并加以利用,却成为了摆在人们面前的巨大挑战 。 与此…

链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景

Chainbase AVS 主网的正式上线,正在将 Chainbase 不同的层进行深入的串联,为 Chainbase 数据网络带来了验证和处理方面的应用与拓展的能力,并成为数据体系全面启动的新契机。 在 12 月 4 日,链原生的 Web3 AI 数据网络 Chainbase …

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍11基于XML的SQL注入(XML-Based SQL Injection)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…