PostgreSQL & RDKit Cartridge & Docker

Wook Kim·2022년 3월 12일
1

RDKit

목록 보기
1/2
post-thumbnail
내가 보고 공부하기 위한 포스팅


RDKit은 PosgrSQL용 DataBase Cartridge를 제공.


해당 글의 최종 산출물은 Docker 기반 PostgreSQL 컨테이너를 띄우고 해당 환경에서 최신 ChemBL 데이터베이스를 생성 하고자 함.


  1. Docker Image 다운 및 컨테이너 실행
$ 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 이름

결과

  1. 컨테이너 접속 및 ChEMBL 데이터 다운로드
$ 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로 접속

결과

  1. ChEMBL_30 데이터 테이블 생성
create database chembl_30;
  1. ChEMBL_30 파일 압축해제 및 dmp 파일 데이터 베이스에 저장 (시간 소요)
$ 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
  1. 생성된 Chembl_30 DB에 접근 및 테이블 생성
$ 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);
  1. 확인
$ select * from rdk.mols where m@>'c1cccc2c1CNCCN2' limit 100;

참조 링크
RDKit_Docker_image 자료
ChEMBL 데이터 생성 자료
RDKit 자료

profile
#인공지능에 관심있는 #비전공 #생물학도

0개의 댓글