postgresql+rdkit的搭建和处理 - Wangxiaoman/tech-note GitHub Wiki
- RDKit 是开源的化学信息python软件包,功能非常强大
- RDKit官网:http://rdkit.org/
- RDKit中文教程:http://rdkit.chenzhaoqiang.com/overview.html
在postgresql中构建大数量的分子表,对于这些分子表利用RDKit对smiles进行处理之后,能够实现一些特定功能的分子查询和计算。比如查询分子库中带有苯环的分子,对于某个小分子进行相似性搜索
- 使用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
- 连接postgresql
- 连接命令
psql -U postgre -h localhost -p 5432 -d molecule
创建rdkit扩展:
create extension rdkit ;
- 具体应用
- 建表
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)
- rdkit分子指纹提取、应用、比较(https://www.jianshu.com/p/b0148c74e85d)
- 利用分子指纹进行相似性搜索(https://www.jianshu.com/p/a38eb0fa5afd)