2015년 5월 21일 목요일

gnuplot 결과물 매만지기(MUMmer)

유전체 수준의 염기서열을 정렬하여 그 결과를 보여주는 MUMmer라는 도구가 있다. 실행 속도가 매우 빠르고 다방면에 응용할 수 있는 매우 유용한 프로그램이다. MUMmer는 커맨드 라인에서 실행되는 전형적인 유닉스/리눅스 프로그램이다. 자체적으로 결과를 그림으로 형상화하는 기능이 들어있지 않아서 gnuplot의 신세를 져야 한다. 다음은 PacBio로 시퀀싱을 끝낸 어떤 미생물의 유전체를 MUMmer로 정렬하여 생성된 포스트스크립트 파일을 리눅스에서 evince로 열어본 것이다. evince로는 PDF 파일도 열 수 있다. JPEG, PNG 등 일반적인 이미지 파일은 eog로 열면 된다. X 윈도우 시스템에서 이미지를 열고 편집하는 프로그램으로 존 브래들리의 xv라는 것이 있었다. 지금은 대부분의 리눅스 배포판에서 사라진지 오래다. 참고로 나는 gimp를 종종 쓰고 xfig는 아주 가끔 쓰는 편이다.


MUMmer에 포함된 여러가지 프로그램이 만들어내는 정렬 결과물은 mummerplot을 거치면서 gnuplot이 그릴 수 있는 형태로 전환된다. 인터랙티브하게 gnuplot을 실행하는 것도 가능하고, 스크립트가 만들어져서 이를 gnuplot에서 실행하면 위 그림과 같은 포스트스크립트 파일이 만들어지게 할 수도 있다. 오늘의 글에서는 이렇게 만들어진 그림을 논문에 실을 정도가 되게 수정하는 방법에 대해서 논해보고자 한다.

위 그림을 만들어준 gnuplot script의 일부분을 발췌해 본다.

set terminal postscript color solid "Courier" 8 # 포스트스크립트 기본 크기는 10"x7"
       # "Helvetica" 10 등으로 바꾸어 보라.
set output "test.ps"
...중간 생략...
set size 1,1  # 그림의 좌우 비율을 다시 결정한다. 
set grid
unset key
set border 0  # default로 하려면 set border라고만 적어라. 기본은 31이다.
set tics scale 0
set xlabel "REF"
set ylabel "QRY"
set format "%.0f" # 이 사례에서는 숫자 대신 서열 ID가 표현된다.
...이후 생략...

먼저 첫줄, 즉 터미널 설정 부분이다. 포스트스크립트가 아니라 일반 이미지 파일로 만들고자 한다면 다음과 같이 하면 된다.

set terminal medium size 640,480   # medium은 글꼴의 크기를 의미

이 정도만 알고 있어도 그림의 크기와 글꼴 등에 대한 많은 설정이 가능하다. 단, 리눅스 시스템에 설치된 인쇄용 글꼴이 얼마나 다양한지는 시스템에 따라 다를 것이다. 

이런 이미지 한 장이 논문의 그림 하나를 다 채운다면 더 이상 바랄 것이 없다. 그러나 요즘은 몇 개의 그림과 그래프 등에 A, B, C 등의 번호를 붙여서 "Figure 1."로 만드는 경우가 많다. 그렇다면 이런 작업은 어떻게 해야 하나? Adobe Illustrator는 잘 모르겠고, 가장 간단하게는 파워포인트를 쓰는 것이다. 그러나 파워포인트에서는 내가 알기로는 포스트스크립트의 해상도를 유지하면서 임포트할 방법이 없다. 좀 더 세련된 방법으로는 eps로 출력하여 xfig로 임포트하여 작업하는 것이다. gnuplot 스크립트의 시작 부분을 다음과 같이 고쳐라.

set terminal postscript eps color solid "Helvetica" 10
set output "test.eps"

오랜만에 xfig를 실행하여 본다. 왼쪽 메뉴 바에 카메라 모양의 아이콘이 있다. 이걸 누르면 다음과 같은 창이 뜨면서 파일을 선택하여 넣을 수 있다. PS/EPS 전부 가능한 것을 보니 gnuplot에서 굳이 eps로 내보낼 필요는 없었다.

 

그러면 eps로 출력한 gnuplot 결과 그림을 xfig에서 불러 보겠다. 정말 새롭고도 반가운 경험이다. 유전체 염기서열 정렬 결과를 직접 프로그램을 짜서 xfig용 데이터 파일로 전환하여 그림으로 만든 적이 있었는데, 그게 벌써 6년 전이다. eps 파일을 임포트하고 글씨도 넣어 보았다. 그런데 gnuplot에서 설정한 터미널(10"x7")의 딱 절반으로 들어간다는 점, 그리고 화면에서는 큰 글꼴을 사용해도 키워지지 않는다는 점이 이상하다. xfig에서 최종 결과물을 만들고 나니 글꼴의 크기는 제대로 변환되어 있었다.


모니터에 나타나는 모습과 인쇄후 모습이 일치하지 않는다면 상당히 불편한데, 아직까지는 해결 방안을 찾지 못하고 있다. 리눅스를 쓴지도 20년이 넘었는데 아직도 X-윈도우에서의 글꼴에 대해서는 잘 이해를 못하는 것이 현실이다. 안타깝지만 절반의 성공이다!



댓글 없음: