当前位置: 首页 > article >正文

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


http://www.kler.cn/a/450293.html

相关文章:

  • dify的ChatFlow自定义上传图片并通过HTTP请求到SpringBoot后端
  • 精准提升:从94.5%到99.4%——目标检测调优全纪录
  • 基于Springboot的在线问卷调查系统【附源码】
  • 第十五章 C++ 数组
  • 使用TC命令模拟弱网丢包
  • 【文档搜索引擎】搜索模块的完整实现
  • Java实现Excel带层级关系的数据导出功能
  • 最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
  • List 集合安全操作指南:避免 ConcurrentModificationException 与提升性能
  • 模型高效微调方式
  • Mysql-索引数据结构选择合理性
  • KingbaseES(金仓数据库)入门学习
  • 如何在 Ubuntu 22.04 服务器上安装 Jenkins
  • 【LuaFramework】LuaFramework_UGUI_V2框架学习
  • 精彩回顾|在2024全球智博会 Semantic Kernel 开发者日中国站开启企业全智能化应用场景
  • 【超详细实操内容】django的身份验证系统之用户登录与退出
  • 转型云,转型AI,转型大模型,微软为什么如此人间清醒?
  • iClient3D for Cesium在Vue中快速实现场景卷帘
  • 202411 第十六届蓝桥杯青少组 STEMA 考试真题 汇总
  • JavaScript--WebAPI查缺补漏
  • 绿盟CSSP靶场-挂载虚拟化磁盘
  • Android Bootable Recovery 中的 `freecache.cpp` 文件详解
  • Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
  • iDP3复现代码数据预处理全流程(二)——vis_dataset.py
  • 解决“SVN无法上传或下载*.so、*.a等二进制文件“问题
  • 汽车经销商门店管理新趋势:信息化工具助力精益运营