rcdk 사용하기

화학정보학 | 2008/07/25 09:23 | lordmiss

이 글은 Depth-first.com에서 다루어진 rcdk 관련 글을 나름대로 재구성한 글입니다. 관련된 자세한 정보를 얻고 싶은 분들은 원 블로그를 참고하시면 되겠습니다.

0. 들어가기 전에 - rcdk는 무엇이고 왜 다루는가?

rcdkCDK라는 자바로 만들어진 화학정보학 툴킷을 Ruby에서 쓸 수 있도록 해 주는 프로그램이다. CDK는 오픈 소스 화학 관련 툴 중에서 가장 유명한 것이라고 말할 수 있고, 다양한 기능을 포함하고 있다. 실질적으로 많은 오픈 소스 소프트웨어들이 이 툴킷을 기반으로 하여 개발되고 있다. Ruby는 최근에 각광을 받고 있는 스크립트 언어로서, 나는 이 언어의 간결함과 쉬운 문법, 그리고 실용적인 접근 등의 특징에 깊이 감명을 받아서, 화학정보학 관련된 업무에 활용하고 있다.

rcdk를 설치하게 되면, Ruby에서 CDK의 각종 기능을 활용할 수 있다. 이 말은 Rails를 이용한 웹 어플리케이션에서 쉽게 화학 관련 기능을 집어넣을 수 있다는 뜻이다. 따라서, 빠른 시간 안에 화학 관련 기능을 갖는 웹 어플리케이션을 개발하고 싶다면 rcdk를 사용하는 것을 고려해 볼만 하다. 물론 ruby의 강력함이 rails를 통해서만 실현되는 것은 아니므로, 빠르고 쉽게 화학정보를 다루어야 할 필요가 있을 때 역시 (나에게 그랬던 것처럼) 큰 도움이 될 것이다.

1. rcdk 설치

당연히 ruby와 Java는 설치되어 있어야 한다. 이게 설치되어 있지 않은 경우라면 다음 글을 볼 필요가 별로 없을 것이다. 그리고 윈도우에서의 설치는 별도로 다루지 않는다. (왜냐하면 내가 윈도우에서 사용하고 있지 않기 때문이다. 머신이 윈도우 밖에 없다고 해도, 그 윈도우에 VirtualBox를 설치한 후에 적당한 리눅스 배포판을 설치하여, 이 가상 머신에서 작업을 하는 것을 추천한다. 어쨌든 윈도우에서 다른 사람이 배포해 주는 바이너리 설치판을 기다리는 것보다는 리눅스에서 필요한걸 바로 바로 컴파일 해서 쓰는 것이 나은 경우가 많다. 물론 rcdk를 윈도우에서 쓰는데 문제가 있는 것은 아니다)

user@server:~$ sudo gem install rcdk

일반적으로 위와 같은 방법으로 rcdk를 설치할 수 있다. 요즘은 gem install에서 -y 옵션이 기본으로 되어 있으므로 의존성이 걸려있는 rjb도 알아서 잘 설치를 해 줄 것이다. 만약 $JAVA_HOME이 설정되어 있지 않다는 에러를 내는 경우에는 $JAVA_HOME 파라미터를 설정해 줘야 한다. 보통은 /etc/profile 정도에 설정을 해 주면 될 것이고, 우분투라면 /etc/profile.d/ 안에 java_home.sh 정도의 스크립트를 넣어주는 것이 좋다. (sudo를 사용하는 경우 root 사용자의 사용자 환경을 가지고 들어오는 것이 아닌 듯 하다. 내 계정에서는 JAVA_HOME이 잘 설정되었는데 sudo gem install 명령에서 에러가 가는 경우라면 sudo -i 를 이용하여 쉘을 얻은 후에 echo $JAVA_HOME으로 설정 여부를 확인하면 된다. 아마도 .bash_profile이나 /etc/profile 혹은 /etc/environment 에 넣은 내용은 반영이 안될 것이고 /etc/profile.d/에 스크립트를 넣은 경우에는 제대로 작동할 것이다.)

JAVA_HOME이 설정되지 않은 경우 rjb 설치에 실패하는 것이고, rjb 설치가 제대로 되었다면 rcdk 설치에 이상이 없어야 한다.

(주의할 점) rcdk는 쓰여진지 오래되었고, 제작자가 더이상 업데이트를 하지 않겠다고 말한 상태이기 때문에 수동으로 고쳐줘야 하는 부분이 있다. 만약 내가 저자에게 메일을 보내서 반영이 된다면 이 과정이 필요없겠지만, 0.3.0 버전을 쓰는 한은 이 과정이 필요할 것이다. /usr/lib/ruby/gems/1.8/gems/rcdk-0.3.0/lib/rcdk/java.rb 파일의 26 라인 쯤에 있는 require_gem 'rjb' 라인을 주석처리해야 한다. 왜냐하면 이제 require_gem 명령은 에러를 내면서 실행을 거부할 수도 있기 때문이다. 지금은 require 'rubygems' 후에 require 'gem 이름' 하는 것만으로 충분하다.

2. rcdk 사용

이제 당연히 rcdk를 사용해 봐야한다.

user@server:~$ irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'rcdk'
=> true

이제 로딩이 잘 되었다. 간단한 SMILES 문자열을 읽어서 이 분자를 그림으로 바꾸는 일을 해 보자.

irb(main):003:0> smiles = "Oc1ccccc1" # 이 분자는 phenol이다
=> "Oc1ccccc1"
irb(main):004:0> require 'rcdk/util'
=> true
irb(main):005:0> RCDK::Util::Image.smiles_to_png(smiles, "phenol.png", 300, 300)
=> nil

이제 디렉토리에서 phenol.png라는 파일을 한 번 열어보자. 아마 이렇게 보일 것이다.

사용자 삽입 이미지

3. 이게 끝이라고?

이 정도면 무지 간단한 일이다. 그렇지만, 화학정보학에서 화학 구조를 파일로 전환하고 이것을 읽어서 처리하는 일은 항상 가장 중요하면서도 어려운 일이었다. 지금과 같이 rcdk를 사용하는 것은, 가장 중요한 화학 구조를 읽고 처리하는 일을 전적으로 CDK라는 프로그램에 의존한다는 점에서 상당한 제한점이 있다고 볼 수도 있다. 그러나, CDK와 같은 정도의 기능과 안정성을 갖는 툴킷을 개발하는 것은 매우 어려운 일이며, 지금 그런 툴킷을 가지고 있지 않으면서 처음부터 개발을 하려고 한다면 수 년이 걸려도 제대로 될 수 있을지 장담할 수 없다. 따라서, 처음부터 개발하는 접근보다는 이미 개발된 툴킷을 적절히 활용하는 것이 좀더 실용적인 접근이라고 생각할 수 있다. (만약 CDK와 같은 오픈 소스 소프트웨어를 사용하는 것이 부담스럽다면 상용 프로그램을 사용해야 할 것이다. 이런 경우라면 개발한 프로그램을 상용화하는 경우일텐데, 이런 경우라고 해도 차라리 개발 자원을 CDK의 개선에 투자하는 편이 나을 수 있다. 오픈소스 소프트웨어를 상용화할 수 없다는 것은 매우 큰 오해이다. 이 점에 관해서는 자유소프트웨어 관련 문서 페이지에 있는 상용오픈소스의 물결이라는 문서를 참고하시길...)

4. 뭔가 더 해 보고 싶다면...

이 기사를 참고해 보는 것이 도움이 된다. 내 블로그에서 일일히 다루는 것이 어려울 정도로 다양한 응용법이 있다. 이런 예들을 살펴보면 ruby가 이미 존재하는 다양한 java 프로그램들을 통합하고 새로운 응용을 만들어내는데 매우 중요한 역할을 하고 있음을 알 수 있을 것이다. 다양한 형태로 여기저기 흩어져 있는 자원들을 통합해서 빠르게 새로운 어플리케이션을 만드는 용도로 본다면 ruby만큼 좋은 언어는 아마 python을 제외하고는 없을거라는 생각이 든다. (요즘 python을 좀 써 봤는데, 매우 인상적이어다.)

아! 왜 자바 자체를 쓰는 것은 고려하지 않냐고? 프로그래머의 생산성 측면에서 ruby가 java에 비해 수 배 이상 뛰어나다는 사실은 이미 잘 알려져 있다. (참고 글 다이내믹 프로그래밍 언어와 자바의 위기, 왜 자바 개발자가 루비,레일즈를 배워야 할까) 이런 말 처음 들었다고? 그렇다면 공부 좀 하시라!! (백 마디 말보다 나은 한 장의 사진... 루비가 자바보다 좋은 이유

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/07/25 09:23 2008/07/25 09:23

트랙백을 보내세요

트랙백 주소 :: http://agile2robust.com/tc/trackback/38
  1. Carisoprodol.

    Tracked from 5. carisoprodol 350. 2009/09/09 09:35

    Carisoprodol fedex cod. Carisoprodol use in dogs. Buy carisoprodol online lowest price guarantee. Carisoprodol. Carisoprodol phentermine yellow.

  2. Ultram in mexico.

    Tracked from Buy ultram pharmacy online. 2009/10/18 11:39

    Buy ultram cheapest site. Ultram.

  3. Lexapro anxiety.

    Tracked from Lexapro. 2009/10/18 19:41

    Lexapro side effects. Lexapro.

댓글을 달아 주세요

  1. Gravatar Image.
    OpenID Logohongiiv
    2008/07/29 04:18

    http://plindenbaum.blogspot.com/2008/07/feeling-like-newbie-parsing-ncbi.html 여기에는 생물정보학관련 Ruby글이 있는데,,, 사진이 같아서 깜딱 놀랐습니다. 저 사진 꽤나 유명한가보네요 ^^ 2 vs. 16 ??

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)