참고를 위한 지난 글 링크를 하나 소개하는 것으로 오늘의 글을 시작해 보련다.
게놈 고물상 영업 시작(2024년 4월 24일)
이번에는 Roche/454 pyrosequencing의 추억을 되살려 보고자 한다. 국내에서 염기서열 해독이라는 업무가 완전히 연구 서비스의 산업의 영역으로 넘어가면서 보통의 연구자들은 장비 자체를 만날 일이 거의 없어진 것은 매우 안타까운 일이다. 내가 GS 20이나 GS FLX를 직접 본 일이 있었던가? 잘 기억이 나지 않는다.
Pyrosequencing이라는 획기적인 기술을 상용화하여 2005년 GS20을 출시했던 454 Life Science라는 기업은 2007년에 Roche에 인수되었다. 당시로서는 대단한(!) 수준의 throughput을 자랑하며 NGS(next-generation sequencing)의 시대를 연 주역으로 큰 찬사를 받았었다. 그도 그럴 것이, 약 10시간의 런타임 동안 무려 400-600 메가베이스의 염기를 생산할 수 있었기 때문이다. 20년이 지난 지금의 기준으로는 보잘것없겠지만.
그러다가 일루미나가 시장을 장악하게 되면서 Roche/454 pyrosequencing은 2013년 공식적으로 단종되었고, 대략 2016년까지는 남아 있는 기계로 서비스를 하다가 이제는 숱한 SFF(standard flowgram file)을 남긴 채 역사의 뒤안길로 사라지게 되었다. SFF는 하나의 서열 단편(read)은 하나의 파일에 저장된다는 기존의 체계를 벗어난 첫 사례이며, Ion Torrent 장비에서 만들어지는 원시 데이터 파일이기도 하다.
게놈 고물상 사업의 일환으로 이미 K-BDS(국가 바이오데이터스테이션)에 방선균(Streptomyces clavuligerus NRRL 3585)의 GS 20 유래 SFF 파일을 등록한 일이 있다. 이것이 왜 공개가 되지 않고 여태 'Private' 상태로 머물러 있는지 관리자에게 물어 보아야 되겠다.
오늘 등록을 준비하는 데이터는 한때 '동해 독도'라는 애칭으로도 불렸던 Donghaeana dokdonensis DSW-6의 유전체 프로젝트에 관한 것이다. Roche/454 pyrosequecing과 fosmid end sequencig(Sanger)에 대한 초기 작업은 내가 직접 하다가 당시 UST 학생이던 권순경 교수(현 국립경상대학교 생명과학부)가 이어받아 완전히 마무리하고 로돕신에 관한 실험을 거쳐서 2013년 논문으로 발표되었었다(PMID: 23292138). 내가 붙인 코드네임은 DD. 던킨 도너츠가 아니다!
당시 NICEM이라는 약칭으로 잘 알려진 서울대학교 농생명과학공동기기원에서 GS FLX로 생산한 데이터 및 gsAssembler로 조립한 결과물을 수령하였었다. gsAssembler와 gsMapper를 포함하는 소프트웨어 패키지를 Newbler라고 불렀던 것 같다. 다음의 DD 리포트를 만들어 준 사람은 누구일까? 혹시 최범순 박사는 아니었을까?
gsAssembler는 '-consed' 옵션과 함께 실행할 경우 Consed에서 열어볼 수 있는 ace 파일을 제공한다는 점에서 매우 유용하(였)다. 이를 바탕으로 PCR 및 그 산물에 대한 Sanger sequencing을 통해 genome finishing을 하면 되므로. 지금이나 PacBio platform으로 한꺼번에 여러 개의 미생물 유전체를 원형 구조로 완성할 수 있지만... Manual finishing으로 contig를 바느질하는 그 수고스러움을 누가 알랴? 새 시대의 연구자들은 이런 일 하지 말고 더 가치 있는 일에 매진하기를 바란다.
454 데이터의 시각화 및 편집은 2007년 9월 공개된 Consed 16.0부터 새 기능으로 추가되었다. 나는 최신(아니, 최후!) 버전에서 바로 직전 것인 28.0(2014년 12월, 거의 10년 전!)을 갖고 있다. 참고로 2008년에 GS data를 이용한 피니싱 (1): consed와 GS data라는 글을 이 블로그에 쓴 일이 있다. 아쉽게도 2편은 나오지 못했다.
Consed에서 454 read를 다루는 법은 (1) 기존의 reference sequence에 454 read를 추가하거나, (2) Newbler assembly가 만든 ace 파일을 활용하는 것의 두 가지로 나뉜다. 두 방법 전부 454의 원본 read를 개별적으로 확인하고 이를 기준으로 contig를 자르거나 붙이는 일이 가능하다. 하지만 나는 실제 프로젝트 수행에서는 454 contig를 적당한 길이의 'overlapping pseudoread'의 assembly로 만들어 ace 파일로 전환한 뒤 finishing을 했던 것으로 기억한다. 아쉽게도 이런 방식에 대해서는 블로그에 글을 거의 남겨 두지 않았다. 오늘 쓰는 글에서는 (2)의 과정을 반복한 것을 기록하려는 것이다.
그러면 정말 오랜만에 Newbler를 돌려보자. 과거에 어느 회사로부터 GS software를 CD-ROM으로 받아 놓은 것이 있어서 내가 지금 사용하는 리눅스 서버에 몇 달 전에 설치를 해 둔 일이 있다.
$ runAssembly -version
runAssembly Software Release: 2.0.00.20
Copyright (C) [2001-2008] 454 Life Sciences Corporation. All Rights Reserved.
버전까지 확인하였으니 실행을 해 보자. 항상 최신 상태의 우분투를 유지하고 있는 서버에서 이 낡은 소프트웨어가 잘 작동을 할지 매우 궁금하다.
$ runAssembly -o DD -consed -p *sff
Initialized assembly project directory DD
1 read file successfully added.
EVJX6DF02.sff
1 read file successfully added as explicit paired-end files.
EVJX6DF01.sff (paired-end)
Assembly computation starting at: Tue Jun 11 13:33:08 2024 (v2.0.00.20)
Indexing EVJX6DF02.sff...
-> 215241 reads, 57026459 bases.
Indexing EVJX6DF01.sff...
-> 221263 reads, 58643490 bases, 0 paired reads.
Setting up overlap detection...
-> 436504 of 436504
Building a tree for 9272433 seeds...
Computing alignments...
-> 436385 of 436385
Detangling alignments...
-> Level 3, Phase 9, Round 2...
Building contigs/scaffolds...
-> 57 large contigs, 98 all contigs
Computing signals...
-> 3988361 of 3988361...
Generating output...
-> 3988361 of 3988361...
Assembly computation succeeded at: Tue Jun 11 13:35:01 2024
$ cd DD
$ 454AlignmentInfo.tsv 454AllContigs.fna 454AllContigs.qual 454LargeContigs.fna 454LargeContigs.qual 454NewblerMetrics.txt 454NewblerProgress.txt 454ReadStatus.txt 454TrimStatus.txt consed sff
$ cd consed
$ ls
chromat_dir edit_dir phd_dir phdball_dir sff_dir
조립이 끝나는 데에는 몇 분 걸리지 않았다. 이제 비로소 기억이 하나 둘 돌아오는 느낌이다. 출력 디렉토리 안에 consed 및 5개의 하위 디렉토리(chromat_dir, phd_dir, phdball_dir, edit_dir, 심볼릭 링크인 sff_dir)가 만들어졌다. 앞의 두 개는 비어 있으며, phdball/phdball.1 파일이 저절로 만들어졌다. consed로 454Contigs.ace.1 파일을 열어서 각 read를 클릭하여 Sanger 스타일의 trace를 보는 것까지 정상적으로 진행이 되었다. 물론 이때 보이는 trace는 sff2scf 유틸리티가 만들어 내는 fake이다.
Consed의 공식 문서를 보면서 하나씩 따라서 할 필요가 없었다. 'runAssembly -consed'만 제대로 옵션을 갖추어 돌리면 Consed 28.0에서 그대로 이용하면 되는 것이었다. 물론 기존의 assembly에 add new reads 형식으로 더하려면 매뉴얼에 대한 약간의 공부가 필요하다.
Consed에서는 일루미나 또은 454 read를 기존의 assembly에 추가하는 기능이 있다. 이는 공식 문서에서 잘 설명해 놓았다. 그러나 454 read의 경우 Newbler의 runMapping을 쓰는 것이 더 낫다. 454가 만든 SFF 파일에서 sequence 및 quality score를 FASTA 파일 형태로 추출한 다음 phrap으로 조립을 하는 것은 물론 가능하지만, 그 결과는 454 전용의 소프트웨어인 Newbler를 쓰는 것보다 좋지 못하다.
고물상에 입고할 물건을 또 하나 찾아서 먼지를 털고 잘 작동하는지 확인하였다. 추억은 방울방울...