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

news/2024/12/28 0:10:59/

在 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/news/1558643.html

相关文章

Go的初级核心实用开发

Go 语言因其简洁、高效和强大的并发支持而广受欢迎,尤其适合构建网络服务、分布式系统和高性能应用。以下是 Go 编程中的一些实用技巧,帮助你编写更高效、更简洁且易于维护的代码。 1. 使用 defer 简化资源管理 defer 是 Go 中非常有用的特性&#xff…

寻找适合小户型的开源知识库open source knowledge base之路

寻找一个开源的知识库,为了把以前花很多时间收集的信息或是项目/课程资料放到一个容易归类和管理的私有自主系统中,以便更容易查阅,花更少时间收集、对比版本及分享等一系列管理工作,同时确保在需要时可以相对快速找到有用的资料&…

易语言 OCR 文字识别

一.引言 文字识别,也称为光学字符识别(Optical Character Recognition, OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技…

Vivado 编译(单核性能对比+高性能迷你主机+Ubuntu20.04/22.04安装与区别+20.04使用远程命令)

目录 1. 简介 2. 单核性能对比 2.1 PassMark 2.2 geekbench 2.3 CPU-7 2.4 选择 UM790 pro 3. Ubuntu 22.04 物理机 3.1 安装 Ubuntu 22.04 3.2 安装 Vitis 2022.1 3.3 缺点 4. Ubuntu 20.04 物理机 4.1 安装 Ubuntu 20.04 4.2 实用命令 4.2.1 SSH 保持活跃 4.2…

docker部署微信小程序自动构建发布和更新

通过 Jenkins 和 Docker 部署微信小程序,并实现自动构建、发布和版本更新,主要涉及以下几个步骤: 设置 Jenkins 环境配置 GitLab 与 Jenkins 的集成构建 Docker 镜像部署和发布微信小程序配置 Jenkins 自动构建 以下是详细的步骤说明&#…

redis与aerospike性能及数据结构对比与分析

Redis 和 Aerospike 都是高性能的 NoSQL 数据库,但它们在性能、数据结构和使用场景上有显著差异。以下是对两者的性能和数据结构进行详细对比与分析。 1. 性能对比 Redis 性能: 内存存储: Redis 将所有数据存储在内存中,因此读写…

鸿蒙之路的坑

1、系统 Windows 10 家庭版不可用模拟器 对应的解决方案【坑】 升级系统版本 直接更改密钥可自动升级系统 密钥找对应系统的(例:windows 10专业版) 升级完之后要激活 坑1、升级完后事先创建好的模拟器还是无法启动 解决:删除模拟…

1919C. Grouping Increases

问题描述 序列 X X X&#xff0c;划分成两个字序列 A , B A,B A,B&#xff0c;其中惩罚是 A , B A,B A,B之中&#xff0c; A [ i ] < A [ i 1 ] , B [ i ] < B [ i 1 ] A[i] < A[i1], B[i] < B[i1] A[i]<A[i1],B[i]<B[i1]的个数 思路 拆分 X X X&#xf…