Reflect라는 프로그램이 있다. 웹 페이지 안에 있는 단백질 혹은 small molecule의 이름에 자동으로 링크를 걸어주는 파이어폭스용 플러그인이다. StringStitch 데이터베이스 안에 들어있는 항목들에 대해서 링크를 걸어주는 것이다.

이 프로그램은 European Molecular Biology Laboratory에서 개발이 되었으며 Elsevier Grand Challenge에서 1등을 차지함으로서 $35,000의 상금을 얻은 프로젝트가 되었다.

말보다는 한 장의 스크린샷이 도움이 될 터...

reflect website

Reflect의 웹사이트 모습이다. 아주 간단하다. 다운로드 링크와 About 페이지 정도가 전부. 현재는 파이어폭스만을 지원하고 있다. 아마 앞으로도 다른 브라우저를 지원하는 것은 쉽지 않을 듯.

reflect button in firefox

이 추가 기능을 추가하면 툴바에 Reflect 버튼이 생긴다. 이 버튼 역시 기능은 간단하다.

reflect setting

사실 Preference 메뉴에서는 특정 organism을 선택할 수 있는 기능이 전부이다. 보통은 특별히 연구 목적이 있지는 않은 한 초기 설정을 바꿀 필요는 없을 것이다.

After installing reflect

Reflect를 설치한 후 firefox에서 Wikipedia의 Lipitor 페이지로 이동한 후 reflect 버튼을 눌렀을 때의 화면이다. 약 이름 혹은 단백질 이름에 (검색 결과와 같은) 하이라이트를 보여준다. 이런 방식으로 브라우저에서 보이는 모든 약 이름과 단백질 이름을, 정보를 담고 있는 링크로 바꾸어준다.

그리고 이 링크를 클릭하면 자그마한 창이 뜨면서 해당 내용과 관련된 정보를 보여준다. 해당 창에 어떤 내용이 보이는지에 대해서는 Reflect 도움말 페이지에서 볼 수 있다. 이 페이지에서는 아래와 같은 내용을 볼 수 있을 것이다.

reflect05

과학에 있어 링크가 얼마나 중요한 것이던가. 이런 움직임들이 계속해서 보여진다는 것은 과학계가 얼마나 소통에 목마른가를 보여주는 것이 아닐 수 없다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/06/08 23:05 2009/06/08 23:05

Rio - 단순한 아름다움

화학정보학 | 2009/01/12 19:59 | lordmiss

루비는 매우 우아한 언어이다.

 3.times {print "Hello Ruby"}

위의 코드는 “Hello Ruby”라는 문자열을 세 번 출력해 준다. 이 정도 되면 루비는 사람의 마음을 잘 이해하고 있다고 해야 할 것이다. 그래서 나는 루비를 배웠고, 그걸 잘 써먹고 있다.

Zinc에서 화합물 데이터베이스 파일을 전부 다운로드받아야 하는 일이 생겼다. 단순하게 0부터 순서대로 160여개의 파일이 있는데, 개당 약 30메가 정도의 크기이고 그걸 다 다운받으면 되는 일이다. 어플리케이션으로 한다면 다운로드 매니저를 쓰면 되고, 유닉스 스타일로 한다면 curl이나 wget으로 간단하게 해결되는 일이지만, 루비로 이 일을 해 보기로 했다. 기본적으로는 웹에서 파일을 다운받는 것이니만큼 net/http 기능을 사용해서 하는 것으로 생각을 했다. 그런데 이게 생각보다 코드가 예쁘지 않고 직관적이지도 않은게 좀 마음에 들지 않는 것이다. 누군가는 분명 이런 문제에 대해 답을 가지고 있을 것이라는 생각으로 검색을 좀 해 봤고, 결국 Rio라는 프로그램을 찾을 수 있었다.

위에서 이야기한 Zinc에서 다운받기는 아래와 같은 12줄짜리 스크립트로 해결할 수 있었다.

require 'rubygems'
require 'rio'

def get_sdfgz(url, res)
    rio(url) > rio(res) #url의 파일을 res 파일로 저장
end

for number in 0..165
    name = "http://zinc.docking.org/subset1/6/6_p0" + number.to_s + ".sdf.gz"
    res = number.to_s + ".sdf.gz"
    get_sdfgz(name, res)
end

특히 다섯번째 줄의 rio(url) > rio(res) 같은 경우에는 정말 아름답지 않은가! 이런 코드로 일을 할 수 있다는건 참 행복이 아닐 수 없다.

알고보니 Rio의 기능은 이 정도에서 끝나는 것이 아니었다. 다음과 같은 예도 가능하다.

rio('dir').files(*.jpg) { |jpg| ... } # dir 디렉토리에 있는 모든 jpg 파일에 대해 작업
rio('dir').files['*.txt'] # dir 디렉토리에 있는 모든 txt 파일의 array
rio('a.txt') > string # a.txt 파일의 내용을 string 변수에 복사
rio('file').lines[0..3,/re/] # file의 처음 세 줄에 대해 정규표현식을 적용
rio('ftp://host/file.gz').gzip.lines[0,3..5] # file.gz의 압축을 푼 후, 0, 3-5 라인을 array에 넣음
ans = rio(?-).print("Input: ").chomp.gets # 사용자 입력을 받아 ans에 돌려줌

위의 예제 정도면 rio가 얼마나 일을 편하게 만들어주는지를 알 수 있을 것이다. 더 많은 예제와 사용법을 원하신다면 홈페이지를 방문해 보시길. 단순한 것이 아름답다는 것을 느끼게 될 것이다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2009/01/12 19:59 2009/01/12 19:59
제가 근무하는 (사)분자설계연구소에서 다음과 같이 교육을 개최합니다. 관심 있으신 분들의 많은 참여를 부탁드립니다.

제목 : 대학생을 위한 과학 통계 및 워크플로우 엔진 활용
일시 : 2008년 1월 7~9일
장소 : 연세대학교 공학원 B118호 교육장
수강료 : 연세대학교 학생 무료, 대학(원)생 30만원, 국공립 연구소 40만원, 회사 50만원

이 교육에서는 대표적인 데이터 시각화 프로그램인 Spotfire, 워크플로우 엔진인 InforSense, Pipeline Pilot, 그리고 통계를 위한 오픈 소스 프로그램인 R, WEKA가 다루어집니다. 이외에도 오픈소스 워크플로우 엔진인 Taverna, KNIME 등에 대해 언급이 있을 예정이며, 교육의 내용은 주로 신약 개발과 관련된 Life Science 위주로 다루어집니다.

수강료 때문에 문제가 되시는 분들도 계실 것입니다. 그런 분들은 따로 제게 연락(메일 lordmiss_AT_lordmiss.com 블로그에서 본 사실을 이야기해 주세요)을 해 주시면 최대한 상황을 고려해 드리도록 하겠습니다. 반드시 위의 수강신청 링크에 수강 신청을 하셔야 합니다.

누군가에게는 도움이 되는 소식이면 좋겠습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
2009/01/03 14:02 2009/01/03 14:02