postgresql+rdkit的搭建和处理 - Wangxiaoman/tech-note GitHub Wiki

RDkit介绍

目的

在postgresql中构建大数量的分子表,对于这些分子表利用RDKit对smiles进行处理之后,能够实现一些特定功能的分子查询和计算。比如查询分子库中带有苯环的分子,对于某个小分子进行相似性搜索

postgresql+rdkit的安装

  1. 使用docker进行安装
  • https://hub.docker.com/r/mcs07/postgres-rdkit/
  • 拉取镜像:docker pull mcs07/postgres-rdkit
  • 发布服务:docker run --name mypostgres -p 5432:5432 -e POSTGRES_PASSWORD=xxx -e POSTGRES_USER=xxx -e POSTGRES_DB=molecule -d mcs07/postgres-rdkit
  1. 连接postgresql
  • 连接命令
psql -U postgre -h localhost -p 5432 -d molecule

创建rdkit扩展:

create extension rdkit ;
  1. 具体应用
  • 建表
create table mols(id serial primary key,SMILES text);
  • 写入数据
insert into mols(smiles) values('Cc1cc(C)cc(N(Cc2ccc(CO)cc2)c2cc(C(=O)N3CCCC3)n(C)c2)c1');
  • 利用rdkit计算成mol对象写入新表
select * into rdk_mols from (select id, mol_from_smiles(smiles::cstring) m from mols) tmp where m is not null;
  • 分子相关搜索
# 包含苯环的分子数量
select count(*) from rdk_mols where m@>'c1ccccc1';
 count
-------
   101
(1 row)
 
# smarts子结构搜索
select * from rdk_mols where m@>'c1[o,s]ncn1'::qmol;
# 搜索结果如下
 id |                           m                          
----+-------------------------------------------------------
  3 | Cc1cc(C)cc(N(Cc2ccc(CO)cc2)c2cc(C(=O)N3CCCC3)n(C)c2)c1
(2 rows)
 
 
# 取代基搜索
select id, m from rdk_mols where m@>mol_adjust_query_properties('CCCOC(=O)c1ccc(*)cc1') limit 10;
# 搜索结果如下:
 id |                      m                     
----+---------------------------------------------
 10 | CCCOC(=O)c1ccc(-c2cncc(C3=C(CC)CN=C3)n2)cc1
(1 row)

相似性搜索

参考

⚠️ **GitHub.com Fallback** ⚠️