내가 보고 공부하기 위한 포스팅
RDKit은 PosgrSQL용 DataBase Cartridge를 제공.
해당 글의 최종 산출물은 Docker 기반 PostgreSQL 컨테이너를 띄우고 해당 환경에서 최신 ChemBL 데이터베이스를 생성 하고자 함.
$ docker run --name mypostgres -p 5432:5432 -e POSTGRES_PASSWORD=mypassword -d mcs07/postgres-rdkit
--name: 컨테이너 이름
--POSTGRES_PASSWORD: PostgreSQL 비밀 번호 설정
-d : 백그라운드로 컨테이너 실행
mcs07/postgres-rdkit: 불러올 docker image 이름
결과
$ docker exec -it mypostgres /bin/bash
$ wget ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/latest/chembl_30_postgresql.tar.gz
$ psql -U postgres
docker exec -it mypostgres /bin/bash : PostgreSQL 컨테이너 접속
wget 명령어로 ChEMBL_30 데이터 다운로드
psql -U postgres: PostgreSQL Shell로 접속
결과
create database chembl_30;
$ tar -vxf chembl_30_postgresql.tar.gz
$ cd chembl_30/chemb_30_postgresql
$ pg_restore --no-owner -h localhost -p 5432 -U postgres -d chembl_30 chembl_30_postgresql.dmp
$ psql -U postgres chembl_30
$ create extension if not exists rdkit;
$ create schema rdk;
$ select * into rdk.mols from (select molregno,mol_from_ctab(molfile::cstring) m from compound_structures) tmp where m is not null;
$ create index molidx on rdk.mols using gist(m);
$ alter table rdk.mols add primary key (molregno);
$ select molregno,torsionbv_fp(m) as torsionbv,morganbv_fp(m) as mfp2,featmorganbv_fp(m) as ffp2 into rdk.fps from rdk.mols;
$ create index fps_ttbv_idx on rdk.fps using gist(torsionbv);
$ create index fps_mfp2_idx on rdk.fps using gist(mfp2);
$ create index fps_ffp2_idx on rdk.fps using gist(ffp2);
$ alter table rdk.fps add primary key (molregno);
$ select * from rdk.mols where m@>'c1cccc2c1CNCCN2' limit 100;