Category: Cheminformatics (page 1 of 2)

새 블로그를 개설하다

새로운 블로그를 개설했다.

Agile2Robust.com

이 블로그에서는 일과 관련된 포스팅은 거의 하지 않았었는데, agile2robust에서는 일과 관련된 글들을 좀 포스팅해볼까 한다. 한국에는 (내가 아는 한) 화학정보학이나 분자 모델링과 관련된 블로그가 거의 없는 만큼, 이러한 분류의 블로그로는 처음이 아닐까 하는 생각이 든다.

사실 여러 블로그 툴을 생각을 해 봤는데 그냥 태터툴즈로 선택했다. 사실, 이렇게 내용이 드문 블로그라면 태터툴즈를 기반으로 하고 있는 한국 블로그계에 좀 적극적으로 뛰어들어보는 것도 나쁘지 않겠다는 생각이 들었기 때문이다.

지금 이 블로그만큼 자주 포스팅이 되지는 않겠지만 최대한 자주 포스팅을 해 보도록 노력해 보자!

Similarity by Compression

며칠 전에 Journal of Chemical Information and Modeling에 재미있는 논문이 실렸다. 바로 Similarity by Compression이라는 제목의 논문이다. 제목이 암시하는 것처럼 일반적으로 사용되는 압축 프로그램인 gzip이나 bzip2를 이용해서 화합물의 canonical SMILES를 압축한 후에 그 유사도를 보는 것을 내용으로 하고 있다.

이게 재미있는게, 압축 알고리즘이 반복되는 정보의 패턴을 이용해서 저장 공간을 줄이는 것이기 때문에, canonical SMILES와 같은 line notation을 사용하는 경우에, 특히 그 문자열의 종류와 위치가 중요한 경우에 화합물의 유사도를 나타내는데 쓰기가 좋다는 점이다. 특히나 이런 일에 공개되어 있는 압축 프로그램을 사용한다는 발상 자체가 재미있게 느껴졌다.

그리고 이런 일을 할 수 있는 zippity라는 이름의 프로그램을 루비로 개발해서 공개를 해 놓았다. depth-first 블로그에 이 프로그램 및 논문에 관한 블로그 글이 올라왔다.

역시 연구는 아이디어로 하는거고, 재미있는 아이디어는 누구에게나 재미있는 것이다. 내게 중요해 보이고 좋아보이는 것은 남들에게도 좋아보이는게 당연하다. 오늘 오전에 이 논문으로 접속을 하려고 했는데, 접속이 몰려서 서비스를 이용할 수 없다는 메시지가 나왔었다. 다른 논문들은 문제가 없는걸로 봐서, 이 논문에 대한 요청이 많았던 것이 아닐까 하는 추측을 했다. 좋은 논문은 많은 사람들이 보고싶어 하는게 당연한 일이 아니겠는가… 그치만 서비스가 중지될 정도로 많이?

sdf 다루기

앞의 글에서 이야기한 바와 같이 화합물의 구조와 이와 관련된 정보를 저장하는데 많이 사용되는 포맷이 MDL의 sdf 파일이다. 특히 많은 수의 화합물을 한 파일에 저장해야 할 필요가 있을 때는 sdf 파일이 유리한 점이 많이 있다.

기본적으로 sdf는 mol 파일의 포맷과 동일한 포맷이다. 다만 여러 개의 분자를 담고 있다보니 일반적으로 사용하는 chemical drawing program에서는 다루기가 어렵고 excel과 유사한 형태의 spreadsheet 형태의 인터페이스가 사용되어야 한다. 연구용으로 사용되는 상용 소프트웨어들은 많이 있지만 그런 소프트웨어들을 제외하고, 무료로 사용할 수 있는 소프트웨어들을 보면 다음과 같은 것들이 있다.

  1. ChemFileBrowser (link): sdf 파일을 보고 합치거나 나누기, csv 포맷의 데이터를 병합하기 등의 기능을 가지고 있는 소프트웨어이다. 간단한 분자표현자 계산 기능을 가지고 있다. 원래 0.2대의 버전들이 sdf를 여는데 문제가 있었는데, 최근에 발표된 0.2.8 버전에서는 이런 문제가 없다.

  2. PowerMV (link): 미국의 국립통계과학연구소의 Stan Young 박사가 개발한 소프트웨어이다. 일반에 배포하는 basic version은 0.6.1이고, 2005년 이후로는 업데이트되지 않고 있다. 그러나 affiliate version의 경우에는 0.7.1 버전이 나와 있고 더 많은 기능을 가지고 있다. 이 소프트웨어의 특징은 유명한 공개 통계 소프트웨어인 R을 붙여서 통계 기능을 수행할 수 있게 했다는 점이다. 이외에 간단한 similarity search, pharmacophore search 등을 할 수 있게 되어 있다 (실용적인 수준은 아닌 듯 하다).

  3. DS Visualizer (link): Accelrys사에서 무료로 배포하고 있는 소프트웨어로서 이전에는 DS Vierwer라는 이름을 가지고 있었다. 이전 글에서 언급을 한 바와 같이 리눅스와 윈도우용 버전을 모두 공개하고 있다. 원래 판매되는 소프트웨어였고, 화학 관련 소프트웨어 회사로서는 가장 다양한 소프트웨어를 보유하고 있는 Accelrys사의 제품답게 많은 기능과 편의성을 제공하고 있다. 사실 전에 DS Viewer Pro나 Lite에서는 sdf 파일에 대한 지원이 미약했었는데, 지금은 sdf를 매우 잘 지원하고 있으므로모델링 관련된 부분에서 이 소프트웨어로 볼 수 없는 것이 거의 없다고 말할 수 있을 정도이다.

  4. MayaChemTools (link): Manish Sud에 의해 개발되고 있는 perl 프로그램으로서 sdf를 다루기 위한 거의 모든 기능들을 가지고 있다. 이 이전 글에 관련 내용을 적어 놓았다.

Molecular Representation

화학정보학(Cheminformatics)은 말 그대로 화합물(chemical)의 정보(information)를 다루는 학문이다. 화합물에 있어서 가장 중요한 정보는 역시 화합물의 구조이다. 왜냐하면 물질의 구조가 물질의 성질을 결정하기 때문이다. 화합물의 정보를 저장하고 관리하는 가장 중요한 이유는 화합물의 성질을 결정하는 것이 어떤 요소인지를 정확하게 파악하는 지식(knowledge)을 얻는 것이므로, 물질의 구조를 정확하게 표시하고 이해하는 것이 화학정보학의 가장 중요한 첫 걸음이 된다. 그래서 Handbook of Chemoinformatics: From Data to Knowledge (Representation of Molecular Structures)라는
책에서 가장 먼저 분자의 구조를 어떻게 표시할 것인가(molecular representation)를 다루고 있다. 화합물(특히 유기 화합물)의 구조를 표현하는 포맷에는 다음과 같은 것들이 있다.

  1. Daylight사의 SMILES code는 가장 일반적으로 사용되는 표현 방법이라고 할 수 있다. 이 표현법의 좋은 점은 저장 공간이 매우 적게 든다는 점이다. 한 구조가 여러 개의 SMILES로 표현될 수 있다는 단점은 Canonical SMILES를 사용하여 해결할 수 있다. 분자의 패턴과 특별한 부분구조(substructure)를 표현하기 위한 SMARTS라는 확장도 존재한다.

  2. IUPAC에서 개발한 InCHI code는 SMILES의 여러 단점 (tautomer 문제 등)을 해결하기 위해 만들어진 프로그램으로서 소스 코드 및 모든 필요한 API가 공개되어 있다. 이 소프트웨어는 sourceforge에 등록되어 있기 때문에 여러 오픈소스 프로그램에서 사용되고 있으며, 최근에는 거의 모든 주요한 화학 프로그램에서 지원하고 있다.

  3. mol 및 sdf 파일은 MDL사의 고유 포맷으로서 connection table을 기반으로 한 포맷이다. 포맷은 공개되어 있으며, MDL 홈페이지에서 회원 가입 후 다운로드받을 수 있다. sdf는 구조 정보와 이와 관련된 기타 텍스트 데이터를 저장할 수 있는 포맷으로서, 많은 필드를 가지고 있을 경우에는 용량 대비 비효율적인 문제가 있지만 파싱이 쉽고 많은 데이터를 한 파일에 저장할 수 있으므로 많은 화학정보학 관련 소프트웨어에서 기본적으로 지원하고 있다.

  4. Tripos사의 mol2 포맷은 Sybyl에서 사용되는 기본 포맷으로서 mol 파일과 유사한 기능을 하지만, 일반적으로 이보다 더 많은 정보를 담고 있다. 하나의 mol2 파일 안에 여러 개의 분자 정보를 저장할 수 있다.

이외에도 대부분의 화학 프로그램들은 나름대로 고유의 포맷을 지원하는 경우가 많이 있다. 그러나 어떤 프로그램도 위의 네 포맷 중 하나도 지원하지 않는 프로그램은 없을 것이다. 물론 각 포맷은 장단점이 있으며, 사용시 주의해야 하는 점도 많이 있다. 대량의 화합물 정보를 다루는 화학정보학의 특성상 이러한 포맷들을 잘 이해하고 다룰 수 있는 능력은 매우 중요하며, 모든 화학정보학에서 하게 되는 작업들의 기반이 된다.

Compound enumeration

다량의 화합물을 일일이 손으로 그림을 그리고 있는 것은 참 따분한 일이다. 수십개 수준이라면 어떻게 해 볼 수 있겠지만, 작용기를 세 개 가지고 있고 각각의 작용기에 20개의 가능한 치환기가 있다면 이것만으로도 8000개의 화합물이 된다. 이 많은 화합물을 손으로 그린다는 것은 당연히 불가능한 일이다.

조합화학이 발전하면서 이런 종류의 일들이 실제로 많이 필요하게 되었고 따라서 이를 위한 방법들도 많이 생겨났다. 이렇게 다량의 화합물의 구조를 한번에 만드는 일을 enumeration이라고 한다. Enumeration에는 크게 두 가지의 방법이 있는데, 조합화학을 사용하는 사람들이라면 반응 기반의 enumeration을 주로 하게 될 것이고, 일반적인 medicinal chemist라면 치환기 기반의 enumeration을 주로 하게 될 것이다.

사실 많은 사람들이 enumeration이 어렵다고 생각을 하기 때문에 시도조차 해 보지 않는 경우가 많이 있다. 그러나 생각보다 비싼 전용 프로그램을 사용하지 않고도 쉽게 이 일을 할 수 있는 방법도 있다.

  1. 무료로 제공되는 ISIS/Draw 이용 : ISIS/Draw는 무료로 제공되는 화합물 drawing 프로그램이다. 이 프로그램을 이용하면 화학 반응, 그리고 R 그룹 표시법을 사용하여 rg 파일을 만들 수 있다. 이 파일은 Pipeline Pilot 등의 프로그램을 이용해서 enumeration할 수 있다.
  2. ChemOffice에 들어 있는 CombiChem/Excel 사용
  3. Accord SDK 사용
  4. ChemAxon의 Reactor 사용
  5. PreADMET 2.0 사용 : 우리 연구소에서 곧 출시될 PreADMET 2.0을 이용해서 enumeration을 할 수 있다.

물론 이외에도 많은 방법과 소프트웨어가 있다. 중요한 것은 이런 일을 하면서 다양한 예측 시스템과 scoring 전략을 사용할 수 있는가 하는 면이다. 그런 면에서 단순한 enumeration이 문제가 아니라 그걸 어떻게 실제 과제에 응용할 수 있는가가 중요한 점이라고 할 수 있다.