2010년 5월 31일 월요일

Hypothetical Proteins

아직 논의가 완전히 끝난 것은 아니지만, 4월 말에 참석했던 NCBI Prokaryotic Annotation Workshop(NCBI PAW)은 genome project의 결과물을 수시로 등록하는 나에게는 매우 중요한 행사였다.

해묵은 논점 중의 하나가 기능을 모르는 단백질의 이름을 어떻게 붙일 것인가 하는 점이다. 그러면 hypothetical protein은 도대체 무엇인가? 전통적으로 이 명칭은 다음의 세 가지 경우(엄밀히 말하면 모두 다른 의미)에 대해서 쓰여 왔다.

1. A protein whose existance is in question
2. A protein whose function/process is unknown or not predictable
3. Both of above

문법적으로 가장 적합한 것을 고른다면, 1이 되겠다. 그러나 NCBI PAW를 통해서 다음과 같은 합의를 이끌어 낼 수 있었다. 첫째, 단백질의 이름은 그 단백질이 존재함을 주장하는 기구는 아니다. 마찬가지로, 단백질의 이름이란 그 단백질의 실험적 특성 결정 수준을 주장하는 기구도 아니다.

Hypothetical protein, uncharacterized protein, protein of unknown function, protein of unassigned function의 네가지 중에서 protein of unassigned function이 가장 유력하다.

potential, precursor, conserved, unique, protein of unknown function, novel, fragment, similar to...

자, 그렇다면 gene prediction program으로 예측은 되었으나 다른 증거는 하나도 없는 단백질, 그리고 기능을 모르는 단백질에 대해 상동성이 있는 단백질을 서로 구별할 것인가? 그동안 널리 써 오던 명칭으로 부른다면 전자는 hypothetical protein이요, 후자는 conserved hypothetical protein 정도가 되겠다. AutoFACT 식으로 이야기한다면, 전자는 Unclassified, 후자는 Unassigned protein이다. 이를 모두 뭉뚱그려서 protein of unassigned function으로 해도 좋을까?

2010년 4월 12일 월요일

gsAssembler 2.0.0을 이용한 hybrid assembly

Sanger read(screened fasta file and quality file)내부에 각 read의 정보를 넣는 것이 관건이다. 우선 다음과 같은 스크립트를 만들어서 detPair.pl이라 이름을 짓는다. 여기서는 *.f1 또는 *.r1이라는 형식의 read tag을 쓰게 되어있다. 나는 주로 St. Louis convention(*.b1, *.g1)을 사용하므로 이를 약간 수정해야 했다.


그 다음에 할 일은 phred와 cross_match를 통해 screened sequence file을 만드는 것이다. edit_dir에서 phredPhrap 한번만 타이프하면 되지만, 공부를 하자는 의미에서 순서대로 적어 보도록 한다. Sanger ab1 file들이 chromat_dir에 있다고 가정하자.
phred -id chromat_dir -pd phd_dir
(determineReadTypes.perl은 별로 필요하지 않다)
phd2fasta -id phd_dir -os sequence.fasta -oq sequence.fasta.qual
cross_match -minmatch 12 -penalty -2 -minscore 20 -screen sequence.fasta
여기까지 하면 sequence.fasta.screen과 sequence.fasta.screen.qual 파일이 생길 것이다. 이제 다음과 같이 한다.
detPairs.pl sequence.fasta.screen > sanger.acc
fnafile -o sanger.fna -af sanger.acc sequence.fasta.screen
이제 만들어진 sanger.fasta와 sanger.qual을 gsAssembler에 넣어주면 된다.
다른 사용자를 통해 물어보니 Sanger paired end read를 넣어 주면 scaffold는 생성되지만, mate의 정보(clone insert size & direction)를 assembly에 직접 활용하지는 않는 것 같다. 만일 그렇다면, 라이브러리별로 크기에 대한 정보를 넣어 주어야 하나 그런 배려는 없다.
(참고자료: GS FLX software manual 5.5.4)

2010년 3월 29일 월요일

MIRA를 이용한 454+Sanger hybrid assembly

454에 기반한 fungal genome project를 하나 진행하고 있다. Genome size는 9 Mb 남짓이지만, 이것도 eukaryotic genome이라 세균에서는 접하지 못했던 약간의 고난이도의 repeat에 직면하게 되었다. GS assembler가 현재로서는 가장 만만한(?) 도구이지만, repeat에 의해 발생한 misassembly가 눈에 뜨이는 것은 사실이다. 정확도를 높이기 위한 방편으로서 mira를 활용해 보기로 한다.

mira 버전 3이 나오면서 설치 방법도 약간 까다로와졌다. boost C++ library(>=1.35)라는 것을 깔아야 하는데, CentOS 5에는 1.33이 설치되어 있으며 이보다 높은 버전의 rpm package는 아직 없다. 어찌어찌하여 boos 1.42의 소스를 구해서 설치하는데 이것도 쉽지가 않다. 압축만 풀면 단지 헤더 파일만 설치될 뿐이다. 나에게 필요한 것은 boost library binary이다. 설치 디렉토리에 가서 다음의 것을 해 주어야 한다.

$ ./bootstrap.sh --prefix=path/to/installation/prefix
$ ./bjam install

라이브러리 바이너리는 /usr/local/lib으로 하였다. $LD_LIBRARY_PATH를 설정해 주어야 mira의 빌드가 비로소 가능해졌다. mira는 매뉴얼 파일도 전부 tex 소스로 되어 있어서 이것 역시 애를 먹었다. make docs를 해야 man, html 등의 파일이 나오는데, latex2man이라는 유틸이 있어야 한다. 이것은 소스 rpm을 받아다가 설치했다. CenOS로 전환한 이후로 항상 yum으로 대충 패키지를 설치하고는 했는데, 소스 rpm을 풀어서 컴파일한 것은 이번이 처음이다. rpm -ivh <패키지명>을 실행하면 /usr/src/redhat/SOURCES에 tar.gz 파일이 생성된다. 이것을 풀어서 설명 대로 빌드하고 설치하면 된다.

Sanger/454 hybrid assembly

454 data만으로 작업을 하는 것은 비교적 쉽다. 하지만 Sanger data를 같이 섞어서 합체하는 경우 약간의 수고를 들여야 한다. Quality file을 수반한 FASTA sequence file, 그리고 NCBI TRACEINFO XML 파일이 필요하다. 최소한 vector clip은 되어 있어야 한다. 내가 쓰는 방식은 phred/cross_match를 통해 screening을 실시한 다음, PHD file을 참조하여 XML 파일 내에 clip quality left/right 정보를 넣는 것이다. 단, PHD file 내에 trim: -1 -1로 정의된 것은 clip quality position이 무의미하므로, 아예 서열 파일 뭉치에서 제거해 버리는 것이 낫다.

다음의 순서를 따르면 된다.

1. phred/cross_match를 실시하여 screened fasta file 및 qual file을 만든다.

2. trim range가 최소 100 bp인 read만을 골라내어, 즉 successful read만으로 구성된 screened fasta file 및 quality file을 만들어라. 어떻게 하냐고? 이럴 때 바로 BioPerl을 쓰는 거다.

3. traceinfo 파일을 만들어라.

2009년 10월 19일 월요일

Nature에 논문이 나갔다!

Genome evolution and adaptation in a long-term experiment with Escherichia coli
Jeffrey E. Barrick, Dong Su Yu, Sung Ho Yoon, Haeyoung Jeong, Tae Kwang Oh, Dominique Schneider, Richard E. Lenski, Jihyun F. Kim
Nature (18 October 2009) doi:10.1038/nature08480

지난 수년간 공을 들여온 프로젝트가 이제 하나의 논문으로 빛을 보게 되었다. 공저자의 한명으로서 큰 자부심을 느낀다. 대장균 B stain을 모델로 하여 가문(?)의 역사로부터 유전체 서열 결정, 분석에 이르는 세 편의 논문 역시 최근에 Journal of Molecular Biology에 나가게 되었다. 대용량 DNA sequencing을 업으로 삼은지 이제 10년째, 정말 큰 보람을 느끼고 있다.
Genome Sequences of Escherichia coli B strains REL606 and BL21(DE3)
In Press, Corrected Proof, Available online 26 September 2009
Haeyoung Jeong, Valérie Barbe, Choong Hoon Lee, David Vallenet, Dong Su Yu, Sang-Haeng Choi, Arnaud Couloux, Seung-Won Lee, Sung Ho Yoon, Laurence Cattolico, Cheol-Goo Hur, Hong-Seog Park, Béatrice Ségurens, Sun Chang Kim, Tae Kwang Oh, Richard E. Lenski, F. William Studier, Patrick Daegelen, Jihyun F. Kim

Tracing Ancestors and Relatives of Escherichia coli B, and the Derivation of B Strains REL606 and BL21(DE3)
In Press, Corrected Proof, Available online 15 September 2009
Patrick Daegelen, F. William Studier, Richard E. Lenski, Susan Cure, Jihyun F. Kim

Understanding the Differences between Genome Sequences of Escherichia coli B Strains REL606 and BL21(DE3) and Comparison of the E. coli B and K-12 Genomes
In Press, Corrected Proof, Available online 15 September 2009
F. William Studier, Patrick Daegelen, Richard E. Lenski, Sergei Maslov, Jihyun F. Kim

2009년 4월 30일 목요일

Consed 19.0에서 달라진 점

이건 뭐... 뒷북도 한참 뒷북이지만 어쨌든 정리해 보자. 사소한 버그 수정은 중요하지 않고, 새로 더해진 기능 중에서 가장 중요한 것은 Assembly view에서 Solexa read를 볼 수 있다는 것이다. 우리 연구실에서 Solexa data를 생산한 적은 있지만 실제 분석은 지금 ISB에 가 있는 윤성호 박사가 했었다. 당시 Maq(http://maq.sourceforge.net/)를 썼던 것으로 기억하는데, consed 19.0이 이 기능을 대신할 수 있는지는 잘 모르겠다.

엄청난 분량의 README 파일을 읽으려니 엄두가 나지 않는다. 하지만 나 스스로 consed의 고급 사용자라 자부하고 있으므로, 다음의 부분만 읽으면 되겠다.
  • USING SOLEXA READS
  • ADDING SOLEXA READS
  • ALIGNING SOLEXA READS AGAINST A LARGE GENOME AND SELECTING A SMALL REGION FOR VIEWING WITH CONSED
  • USING YOUR OWN SOLEXA DATA
  • USING 454 READS (NEWBLER ASSEMBLY)
  • USING 454'S NEWBLER ON YOUR OWN DATA
  • USING 454 READS (ALIGNING TO REFERENCE SEQUENCE )
  • ADDING ADDITIONAL 454 OR SOLEXA READS
  • SOLEXA AND 454 DATA--WHAT IS HAPPENING BEHIND THE SCENES
  • USING AUTOREPORT

Phred/Phrap/Consed 새 버전 설치하기

2009년도 첫 포스팅이다. 이건 해도 너무했다! :-)

2월 13일에 David Gordon이 새 버젼의 consed(19.0)가 나왔음을 알려왔다. 이와 더불에 phred/phrap도 모르는 사이에 update 판이 나와 있었다. 이번 기회에 새 버전을 설치하도록 하자.

먼저 내 리눅스 박스를 살펴보자. Core2Duo에 4기가 메모리가 설치된 그저 그런 평범한 데스크탑 PC이다. CentOS 5.1(i386)이 운영체제로서 설치되어 있다. 패키지는 오늘 날짜로 전부 업데이트된 상태이다.

[hyjeong@eos ~]$ uname -aLinux eos.kribb.re.kr 2.6.18-128.1.6.el5 #1 SMP Wed Apr 1 09:19:18 EDT 2009 i686 i686 i386 GNU/Linux

그럼 현재 깔린 프로그램의 버젼과 최신 버젼을 나열해 보자.

phred: 0.000925 (020425, 071220 beta)
phrap: 0.990319 (1.080812)
consed: 18.0 (19.0)

Phred update

새로 만든 바이너리를 /usr/local/genome/bin/에 복사하는 것으로 끝난다. phredpar.dat(020425)는 달라진 바가 없어서 그대로 둔다.

Phrap update

이전 버전과는 달리 .longreads나 .manyreads를 할 필요가 없다. make를 실행한 뒤 생성된 실행파일 cluster cross_match loco phrap phrap phrapview swat을 복사하는 것으로 끝난다.

Consed update

이건 딸린 식구(?)가 많아서 조심스럽게 작업해야 한다. 잡다한 부속 스크립트는 커스터마이징이 필요하기도 하고 바이너리와도 호환성 문제가 발생할 수 있다. 예를 들자면 새 버전의 consed는 버전 xyz 이상의 determineReadTypes.perl하고만 작동한다고 명시되어 있을 수도 있으니까.

consed 바이너리는 컴퓨터 아키텍쳐에 따라 다음과 같은 종류가 있다.

consed_linux32bit <- 가장 무난한 이것을 선택
consed_linux32bit_dyn
consed_linux64bit
consed_linux64bit_static
consed_linux_itanium

/usr/local/genome/bin/에 consed_linux32bit를 consed19_linux32bit라는 이름으로 복사한 다음 이를 consed라는 심볼릭 링크를 만들었다. 이 상태에서 적당한 ace 파일을 열어보니 아무런 문제가 없다. Ace file을 여는 속도가 약간 빨라졌다. 그리고 아무 read를 골라서 별개의 contig로 뽑아내기를 해 보니 이전 버전에서는 상당히 시간이 많이 걸렸었는데(20분 이상? 아마 버그였던 듯), 버전 19에서는 순식간에 된다.

이전에 쓰던 스크립트와 호환성에 문제가 있는지는 잘 모르겠다. 사용하다가 불편하면 그때그때 고치도록 하자.

흠, README를 보니 18.0에서 업그레이드하는 경우 tagRepeats.perl만 바꾸면 된다고 한다. 가만! 그런데 내가 쓰던게 16.0이었나보다! 이 복사 작업을 하면서 standard script에 어떤 것들이 추가되어 있는지 확인해 보자.

add454Reads.perl
addSolexaReads.perl
alignSolexaReads2Refs.perl
filter454Reads.perl
catPhdFiles.perl -> makePhdBall.perl
selectRegions.perl

2008년 11월 25일 화요일

Two new words coined by me - "genomebug" or "genome rat"

온라인상에서 내가 종사하고 또 즐기는 일과 관련하여 지을 별명으로서 무엇이 적당할까 고민하다가 두 가지 단어를 떠올리게 되었다.

genomebug (shutterbug를 연상하라)
genome rat (gym rat를 연상하라)

google을 뒤져 보았으나 이런 글은 존재하지 않는다. 따라서 내가 만든 신조어임을 세상에 공표하노라! 하하하...

Two new words were coined by me today, "genomebug" and "genome rat", to describe myself enjoying and working on genomics. So far, I could not find any search result on Google using these words (Nov 25, 2008). Anybody can easily understand the meaning of these words ... based on "shutterbug" and "gym rat."

I prefer the first one (genomebug), and have created an email account from Gmail.