欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > AIDD - 人工智能药物设计 - 在 Docker 上创建和运行 PostgreSQL + RDKit 卡带环境

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

2024/12/25 5:50:18 来源:https://blog.csdn.net/itwangyang520/article/details/144680978  浏览:    关键词:AIDD - 人工智能药物设计 - 在 Docker 上创建和运行 PostgreSQL + RDKit 卡带环境

在 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 可以做更多的乐趣。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com