RDKit | 操作与实践

RDKit|在PostgreSQL中进行分子结构搜索与查询

2020-05-30  本文已影响0人  最会设计的科研狗

文章目录
一、环境搭建
二、数据表准备
三、结构搜索与查询

一、环境搭建

本文以windows为例进行操作和演示。假设都已经安装好了postgresql,下面依次进行用户切换、启动服务端、创建数据库、导入数据、连接数据库、加载插件、函数测试。在windows上安装带rdkit插件的postgresql以及基本操作可以参考这篇文章

runas /user:postgres cmd
postgres -D d:\postgresql\data
createdb molecules
psql molecules
select column_name from information_schema.columns WHERE table_name ='info';
create extension rdkit;
select id, mol_from_smiles(smiles::cstring) mol_col from info limit 5;

二、数据表准备

数据库、rdkit插件都没问题后,接下来依次新建schema、转换mol对象、建立数据表。

create schema rdk;
drop schema rdk cascade;
select nspname from pg_namespace;
select * into rdk.mols from (select id, mol_from_smiles(smiles::cstring) m from info) tmp where m is not null;
select table_name from information_schema.tables WHERE table_schema = 'rdk';
create index molidx on rdk.mols using gist(m);
alter table rdk.mols add primary key (id);

三、结构搜索与查询

终于进入正题了,准备俩小时,查询五分钟。

1.smiles子结构搜索

- select count(*) from rdk.mols where m@>'c1ccccc1';
- select id, m from rdk.mols where m@>'C1(NC=C2)=C2C=CC=C1' limit 5;

2.smarts子结构搜索

 select count(*) from rdk.mols where m@>'c1[o,s]ncn1'::qmol;

3.立体信息的结构搜索

set rdkit.do_chiral_sss=true;
select * from rdk.mols where m@>'NC(=O)[C@@H]1CCCN1C=O' limit 10;

4.带取代基的结构搜索

  1. 将"*"匹配为任意原子
  2. 对环中的原子加入连接度的匹配,也就是只能匹配明确的环结构或指定了取代基的环结构
  3. 匹配芳香性
select id, m from rdk.mols where m@>mol_adjust_query_properties('*c1cccc(*)n1') limit 10;
select id, m from rdk.mols where m@>mol_adjust_query_properties('*c1cccc(*)n1', '{"adjustDegree":false}') limit 10;

本文参考自rdkit官方文档

上一篇下一篇

猜你喜欢

热点阅读