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이 없는 경우

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

댓글 1개:

MJBn :

처음으로 454 sequencing 의 finishing을 하는 중에 구글링을 하다가 들르게 되었습네요. 근데 벌써 2년 전 글이라니..언제 따라가려나요 ㅜㅜ.
consed에서 편집을 하는데 막히더라고요. 혹시 원하는 read만 따로 다시 assembly를 하는 방법이 없을까요. sff파일은 열어보지도 못하겠고.. sff2scf를 써서 scf 파일들로 만든다면 원하는 read만 뽑아낼 수는 있겠다는 생각이 들기는 했는데 전부다 변환하는 거 말고 다른방법이 없을까요?