2008년 2월 13일 수요일

TIGR assembler


새삼스럽게 왜 TIGR assembler인가? 사실 나도 AMOS 작업을 하기 전에는 거의 관심을 두지 않았었다. 그러나 조금 느리기는 해도 나름대로 탄탄하고 정확한 결과를 만들어 주는 것 같다. Methods in Molecular Biology(2004년)에 상세한 활용 방법이 나와 있다.
TIGR assembler는 더 이상 JCVI(구 TIGR) 홈페이지의 소프트웨어 목록에 나와있지 않다. 대신 다음의 FTP site를 이용하여 다운로드할 수 있다.

맨 위의 표는 M. Pop, S. L. Salzberg, 그리고 M. Shumway가 2003년도에 쓴 Genome sequence assembly: algorithms and issue에 실린 것이다. 재미나지 않은가?
TIGR assembler가 유용한 점은 소위 'jumpstarting'이 가능하다는 것이다. 이것은 기존의 assembly 정보를 흩뜨리지 않으면서 새로운 서열 단편을 넣어 합체하는 작업을 의미한다. Consed에서 Add New Reads를 실행하는 것과 비슷하지만 더 유리한 점이 많다.
아무 생각 없이 기계적으로 컴퓨터 자판을 두드려서 assembly를 하기에는 phredPhrap만한 것이 없다. 이건 사실이다! 하지만 손이 조금 더 많이 가는만큼 더 정확한 결과물을 얻게 된다는 것도 사실이다. TIGR assembler가 귀찮은 점은 서열 전처리 작업(clear range 구하기)이다. 그러나 EST 혹은 genome survey sequencing 결과의 등록과 같이 말단 부분이 깨끗하게 제거된 서열이 필요하다면, TIGR assembler에 적용되는 전처리 과정(preTA: AMOS 패키지에 포함)을 사용하는 것도 좋겠다.

2008년 2월 4일 월요일

GS data를 주로 이용한 피니싱 (1): consed와 GS data

454, GS... 그냥 혼용하기로 하자. GS data를 주로 사용하여 피니싱을 하려고 한다. 도대체 어떻게 해야 하는가? 이는 target genome의 크기(유전체? BAC? fosmid), reference genome의 존재 여부(identity에 따라서도 달라짐), Sanger read의 혼용 여부에 따라서도 적용할 전략이 달라질 수 밖에 없다. Finishing tool은 consed 16.0, GS 소프트웨어는 GS FLX와 같이 배포된 offInstrumentApps_1.1.02.15(gsAssembler, gsMapper 등)를 쓰는 것으로 가정한다.

먼저 결정해야 할 일은 1) SFF 파일에서 개별 read를 뽑아낸 뒤 다른 assembler로 합체할 것인가, 또는 2) GS assembly 결과를 그대로 수용할 것인가이다. 개별 read의 특성(길이가 짧고 quality가 낮음)을 감안한다면 phrap이나 CelAsm과 같은 전통적인 assembler를 적용하여 다시 합체하는 것은 별로 권고하지 않는다. 사실 2)의 방법을 적용하는 것도 그렇게 단순하지만은 않다. 왜냐하면 크로마토그램 없이는, 좀 더 실제적으로 말하자면 PHD 파일 없이는 consed에서 할 수 있는 일이 별로 많지 않기 때문이다. 예를 들어 보자. GS 실행 결과물로서 contig 서열/quality 파일 및 454Contigs.ace가 기본적으로 제공된다. 하지만 PHD 파일이 없는 상태에서 ace file을 consed로 열게 되면 (consed -nophd 454Contigs.ace) read들이 정렬된 결과만 볼 수 있을 뿐 contig의 연결이나 편집 등 중요한 조작은 거의 하지 못한다. PHD 파일 정보를 생성하려면 gsAssembler 실행시 "complete consed folder" 옵션을 주어서 phd.ball 파일을 만들어야 한다. phd.ball 파일이란 모든 PHD 파일을 하나로 이어붙인 것으로서, edit_dir에 위치시켜 두면 consed 실행시 phd_dir에 있는 모든 PHD 파일을 읽어들이는 것 보다 훨씬 빠르게 진행된다. 게다가 서열 편집을 하려면 trace를 볼 수 있어야 하는데, 이를 위해서 .consedrc의 편집과 더불어 GS가 공급하는 추가 소프트웨어(sff2scf)를 컴파일하여 깔아 두어야 한다. sff2scf는 consed에서 trace view 요청을 할 때 실시간으로 SFF file로부터 해당 read의 fake chromatogram(SCF)을 생성하여 보여준다. 이러한 방법으로 consed에서 454 trace를 보고자 할 때에는 project main directory에 chromat_dir, phd_dir, edit_dir와 더불어 sff_dir이라는 디렉토리를 만들어 SFF 파일을 복사(혹은 심볼릭 링크)해 두고, .consedrc를 다음과 같이 설정해 두어야 한다.

consed.checkIfTooManyWalks: false
consed.alwaysRunProgramToGetChromats: true
consed.programToRunToGetChromats: /usr/local/rig/bin/sff2scf
consed.uncompressedChromatDirectory: /tmp
consed.fakeReadsSpecifiedByFilenameExtension: false
consed.primersBadLibrariesFile: badLibraries.txt

consed 16.0에서도 독자적인 방법으로 454 데이터를 지원하기 시작했다. consed 패키지를 풀면 misc/454 디렉토리에 sffinfo.c와 sff2scf.c라는 두 개의 소스 파일이 생긴다. sffinfo는 SFF 파일에서 read list를 뽑아내는 역할을 하고, sff2scf는 SFF 파일로부터 지정된 read를 추출하여 SCF 형식의 fake trace와 PHD 파일을 만들어낸다(주: consed에 포함된 sff2scf와 GS software에 포함된 sff2scf는 조금 다르다). 이렇게 하면 complete consed folder 옵션 없이 만들어진 454Contigs.ace 파일이라 해도 consed에서 무사히 열릴 것이다. Fake trace와 PHD 파일이 존재하게 되므로 이를 일상적인 read처럼 다루는 것이 가능하다.

Consed 19.0에서 달라진 점 (2009-04-30)

Consed 19.0은 sff2scf 080821 버전과 함께 쓰여야 한다. 이를 확인하고 싶으면 sff2scf -v라고 실행해 보라. 버전 번호가 나와야 정상이다. 만일 "Error: Unable to open SCF file: ../chromat_dir/-v"라고 출력되면 이를 버리고 consed package의 misc/454에 있는 sff2scf를 컴파일하여 설치하라.

두 종류의 sff2scf 유틸리티
기왕 이야기가 나온 김에 두 종류의 sff2scf 유틸리티에 대해서 자세히 알아보자. 먼저 GS software에 포함된 SFF Ttool의 하나인 sff2scf를 알아보자. 기본 설치 위치는 /usr/local/rig/bin/sff2scf가 될 것이다. sff2scf는 consed 환경에서 지정한 trace를 SFF로부터 실시간으로 생성하여 보여주는 도구이다. 사용법은 다음과 같다.

sff2scf locationstring [outputfile]

locationstring이란 read의 trace 정보에 접근하기 위해 사용하는 경로 혹은 명령어를 의미한다. outputfile은 실시간 생성되는 SCF 파일의 경로이다. 그러나 .consedrc를 위에서 소개한 대로 만들어 두면 sff2scf를 사용자가 직접 만질 필요는 없다. 다음은 GS software manual에 나와있는 SFF Tool의 간략한 소개이다.

The Genome Sequencer FLX System off-instrument software package contains six programsrelated to the handling of Standard Flowgram Format (SFF) files or other readdata; for combining files into the Standard Flowgram Format (SFF) and filtering reads inSFF files [sfffile]; for generating NCBI Trace Archive submissions of the data [sffvolume];for accessing SFF file information [sffinfo]; for dynamically generating an SCF trace filesuitable for display by the consed software [sff2scf]; for preparing FASTA files with thenecessary annotations for use by the assembler [fnafile]; and for converting Run dataobtained with older versions of the data analysis software (prior to version 1.0.52) [sffcall].These tools are all evoked at the UNIX command-line level. The descriptions belowassume that the reader is familiar with the Genome Sequencer FLX System data and formats,including the SFF file format.

Consed 16.0에서 새롭게 추가된 454 관련 도구는 sffinfo와 sff2scf 두가지 뿐이다. 사용법은 다음과 같이 비교적 간단하다.

Usage: sffinfo [options...] [- sfffile] [accno...]
Options:
-a or -accno Output just the accessions
-s or -seq Output just the sequences
-q or -qual Output just the quality scores
-f or -flow Output just the flowgrams
-t or -tab Output the seq/qual/flow as tab-delimited lines
-n or -notrim Output the untrimmed sequence or quality scores
-m or -mft Output the manifest text

Usage: sff2scf sff-filename fof

Consed에 포함된 454 관련 도구를 사용한다면, GS assembler를 complete consed folder 옵션 없이 실행시켰다 하여도 SFF 파일에 포함된 모든 read에 해당하는 가상 trace와 PHD 파일을 만들 수 있으므로 consed의 기능을 100% 활용하는 것이 가능하다.

Third party solution (sff_dump)
sff_dump라는 공개 소프트웨어도 있다. 이는 SFF에서 sequence 파일과 quality file을 추출하는 도구이다. 다음의 사이트를 참조하기 바란다.

http://genome.imb-jena.de/software/roche454ace2caf/Poster_UserMeeting_GS20_Munich_070328.pdf

http://genome.imb-jena.de/software/roche454ace2caf/

http://genome.imb-jena.de/software/roche454ace2caf/download/sff_dump-1.02.tar.gz

454 read를 consed에서 직접 확인할 필요가 없다고 생각한다면?

이상에서 소개한 방법은 이론상 아무런 문제가 없으나 assembly에 포함된 SFF file이 많다면 (쉽게 말하여 consed 실행시 읽어들어야 할 PHD 파일의 수가 너무 많다면) 상당히 불편하다. 454 contig를 충분히 신뢰하여 편집을 할 필요가 없다고 판단한다면, 454 contig 서열과 quality를 이용하여 contig 하나에 해당하는 fake trace를 만들고, 이를 contig 정보로 전환하여 ace file을 만들면 된다. 대부분의 454-based genome finishing은 이렇게 하는 것으로 실용상 문제가 없다고 생각한다. 만일 Sanger read가 일부 포함되어 있다면 454 contig의 정확도(서열로서가 아니라 assembly 측면에서)를 확인 가능하므로 좀 더 확신을 가지고 작업할 수 있다.

454 contig를 read로 전환하는 방법은 다음과 같다. mktrace를 실행하여 fake trace와 PHD file을 만든다. PHD file은 phd2Ace.perl을 이용하여 각각 하나씩의 ace file로 전환한 다음, 이를 concatenation하고 header를 정리하면 된다. Sanger read를 섞으려면 consed에서 add new reads 기능을 이용하면 된다. 최신 gsAssembler에서 Sanger read와 SFF를 혼합하여 합체하는 것도 가능하다.

454 contig를 있는 그대로 사용한다면 consed 환경에서 read를 기본 요소로 하여 contig를 나누는 교정 작업이 가능하지만, 이를 하나의 가상 read로 전환하여 single read contig로 만든다면 내부를 끊어내지 못한다는 것에 주의하라.

454 contig를 가상 read로 전환하여 작업한다 해도, 454Contigs.ace는 나름대로 쓸모가 있다. rRNA operon처럼 repeat-induced overcollapsed contig 내에서 어떠한 heterogeneity가 있는지 확인하거나, 이들이 좌우로 어떤 contig에 연결되는지를 알기 위한다면 말이다.

/* 분량이 너무 길어지므로 이하 부분은 시리즈물 (2)로 넘기겠다 */

1) Fosmid, BAC 등의 small target인 경우
BAC의 크기가 100 kb 정도인 것을 감안하면 16분할 구획에서 나온 SFF file 하나로도 충분할 것이다.

2) Reference genome이 있는 경우

3) Reference genome이 없는 경우

/* 계속 작성 중... */

454 pyrosequencing system(GS 20/GS FLX)에서 만들어지는 데이터

454 pyrosequencing의 원리에 대해서는 꽤 잘 알려져 있으므로 여기서는 다루지 않겠다. 다만 엔드 유저(장비 오퍼레이터가 아니라)의 입장에서 알아야 할 철저히 실무적인 이야기만 다루고자 한다.

표준 PicoTiterPlate는 70 x 75 mm의 크기이며, 가스켓을 사용하여 2, 4, 및 16개의 구획으로 나누어 서로 별도의 반응물을 로드할 수 있다. 이러한 구획 하나에서 한개씩의 SFF(Standard Flowgram Format) 파일이 만들어진다. 일반적으로 2분할 가스켓을 쓰게 되므로, 한번의 스탠다드 런을 수행하게 되면 두 개의 SFF file을 얻게 된다. PicoTiterPlate에 존재하는 모든 구멍(well; 직경 44미크론짜리 구멍이 50미크론 피치로 촘촘하게 배열)에 전부 비드를 채우게 되면 인접한 구멍에서 나오는 빛 신호의 간섭이 발생하므로, 구멍을 전부 채우지는 않는다. 하나의 플레이트에서 40만개의 read가 나오게 하는 것이 최적이므로, 표준 조건에서 만들어진 SFF file(2분할)는 각각 20만 read 정도를 포함하고 있다. 그렇다면 하나의 플레이트에서 약 100 Mb가 나온다는 계산은 어디에서 연유하는가?

400,000 reads x 250 bp/read = 100,000,000 bp = 100 Mb.

2008년에 나올 업그레이드 모델에서는 read length 400 bp, 1회 런닝에서 얻어지는 판독량은 1GB를 달성하게 된다고 하니 정말 대단한 발전이 아닐 수 없다!

Sanger sequencing에 의한 whole-genome shotgun project에서는 8-12x 정도의 coverage를 달성하는 것이 표준이었다. 하지만 454 system에서는 같은 coverage로는 충분한 assembly가 되지 않는다. 쉽게 이야기하면 Sanger sequencing에 비해 contig의 수는 더 많고, 길이는 더 짧다는 뜻이 된다. 이는 아마도 454 system에서 얻어지는 read의 길이가 현저히 짧기 때문일 것이다(수학적으로 증명 가능한 것으로 알고 있음). 게다가 454 system의 running cost가 더 적다 보니 여기에서는 20x sequencing coverage를 달성하는 것을 목표로 한다. 따라서 하나의 PicoTiterPlate에서 표준 런닝을 하여 100 Mb 어치의 결과를 얻으면 이는 5 Mb 정도의 세균 유전체에 대해 20배수를 확보한 셈이 된다. 5 Mb라 하면 세균 유전체로서는 중간 이상의 크기인 셈이다. 대장균이 4.6 Mb인 것을 감안한다면.

국내에서 454 시퀀싱을 하려면 마크로젠이나 NICEM, 또는 한국생명공학연구원 유전체연구단을 통하면 된다. 대개 결과는 contig sequence/quality file과 ace file 정도일 것이다. 하지만 조금 더 적극적인 유저라면 raw data인 SFF file을 입수하여 직접 GS assembler로 합체해 보는 것을 권한다. 하지만 소프트웨어의 라이센스 문제는 조금 더 알아보아야 되겠다. GS system을 구입한 곳에만 사용 권한을 주는 것인지...? 어차피 GS assembler에서 다룰 수 있는 데이터는 GS 장비가 있는 곳을 통해서만 생산되므로, GS assembler는 공개해도 별 문제가 없지 않나 하는 순진한 생각을 해 본다. 특히 GS FLX와 함께 2007년도 9월쯤 출시된 GUI 소프트웨어 버젼에서 많은 개선이 이루어진 것 같다. Sanger read와 GS raw data(SFF로서)를 혼합하여 합체하는데 적당한 도구가 없다는 것이 그동안의 어려운 점이었지만, 최신 소프트웨어에서는 이 기능이 추가되었다. 물론 Sanger read(ab1 file)을 그대로 넣는 것이 아니라 sequence/quality file로 전환하여 사용하게 되어 있다.

(그런데 무려 8개의 SFF file과 5만개의 ab1 file을 섞어서 합체했더니 오류가 나고 말았다! )

새 버전의 소프트웨어에 포함된 gsAssembler(GUI)와 runAssembly/runMapping(CLI)가 완전히 동등한지도 좀 더 공부를 해 봐야 되겠다. 똑같은 데이터를 투입했지만 결과가 조금 다르게 나온다던가, GUI에서는 합체에 따르는 몇가지 파라메터를 수정 가능하지만 CLI에서는 매뉴얼을 아무리 보아도 옵션을 통해 설정 변경을 할 수 있는 것 같지가 않다던가... 하지만 이렇게 떠들어 봐야 GS software를 GS 장비 구입자에게만 제공하는 것이 원칙이라고 하면 아무런 소용이 없는 것 아닌가? 이 문제에 대해서는 추후에 로슈 한국 지사에 물어봐야 되겠다.

다음 게시물에서는 GS data를 기반으로 하여 피니싱을 하는 일반적인 방법에 대해서 논해보고자 한다.