Practical database searching (실제적인 자료검색)

(By Steven E. Brenner)

어떤 다른 기술보다도 자료검색에 의해 더 많은 서열들의 특성들이 추정되어졌다. BLAST는 빠르고 믿을만하지만 그 서열비교 과정은 실험적인 디자인과 해석의 견지에서 매우 주의깊게 수행되어야만 한다. 자료검색의 기본적인 요건들, 검색결과들에 영향을 미칠 수 있는 요소들, 마지막으로 그 결과들을 해석하는 과정들이 여기서 논의될 것이다.

Database search experiment

BLAST 자료검색의 디자인은 관심있는 질의 서열에 관해서 어떤 정보를 얻어낼 것인가가 고려되어야만 한다. 주 제약은 자료검색은 단지 유사성을 보여줄 뿐이라는 것이다. 그러나 이 유사성으로부터 상동성 (즉 진화적 관계)이 유추될 수 있고, 이것으로부터 기능을 유추할 수 있다는 것이다. 비록 상동성 추론은 주의깊게 수행된 서열비교에서 믿을만하기는 하지만 상동성은 위험을 내포하고 있다. Box 1은 믿을만하고 정밀한 자료검색을 수행하는 지침을 제공하고 있다.

Box 1. Database searching: basic consideration

◆ 전 step을 숙지하라.

◆ 현재 이용가능한 가장 큰 데이터베이스를 검색하라.

◆ DNA 보다는 protein을 비교하라.

◆ Low-complexity 영역들에 대해 query를 여과시켜라.

◆ Score들을 E value들로 해석하라.

◆ 대부분의 homolog들은 pairwise 서열비교로는 찾아지지 않는다는 것을 인식하라.

◆ 느리나 보다 강력한 방법들을 사용하고, 반복적인 프로그램은 주의를 하라.

실험을 제대로 계획하기 위해서는 적용되는 기술에 대한 이해가 필요하다. 근본적으로 자료검색은 간단한 일이다: query 서열은 데이터베이스 안의 서열들 (target이라 불림) 각각과 지역적으로 배열된다. BLAST와 FASTA 같은 대부분의 프로그램들	배열과정의 속도를 높이기 위해 heuristics를 사용한다. 반면 Smith-Waterman 알고리즘 (예를 들어 SSEARCH에서와 같이 증진된)은 query 서열을 데이터베이스의 각 target과 엄밀하게 비교한다.

각 배열로부터 score가 계산되고 가장 좋은 score를 가진 query-target 쌍들이 사용자에게 보고된다. 전형적으로 통계학은 이러한 score들의 해석을 증진시킬 수 있도록 돕기 위해 사용된다. 이러한 과정의 보다 자세한 기술은 앞에서 기술되었다. BLAST가 서열비교에 가장 널리 사용되기는 하지만 다른 프로그램들도 많이 있다.

Databases, programs and comparison types

실험의 조직화는 어떤 유형의 서열들을 비교할 것인가에 대한 결정에서부터 시작된다: DNA, 단백질, 또는 DNA을 단백질로. 고려하는 서열이 단백질이거나 단백질에 대한 code라면 검색은 단백질 수준에서 진행되어야만 할 것이다. 왜냐하면 단백질들은 DNA 보다 훨씬 상동성이 낮은 것도 찾아낼 수 있기 때문이다. 예를 들어, DNA 비교에서는 각 codon에는 빨리 변이가 일어나는 3번째 base와 noncoding frame들 (이것은 DNA를 단백질로 검색하는 데서도 발생하지만)의 비교에서 발생하는 noiserk 있기 때문이다. 그외에도 아미노산들은 동일성과 비동일성의 단순한 인식보다는 어느 정도의 유사성을 확인하게 만드는 화학적인 특성을 가지기 때문이다. 이러한 이유들 때문에 DNA대 단백질 비교 (blastn 프로그램을 사용하여)는 데이터베이스에서 서열의 동일한 영역들을 찾는데만 사용한다. 그러한 검색은 유전자가 이미 발표되었는지 여부를 찾고 어디에서 발현되는지 또는 어느 곳에 splice 연접이 있는지를 결정하기 위해 사용할 것이다. 간단히 말해 단백질 수준의 검색들은 진화적으로 연관된 유전자들을 찾는데 적절하고, 반면에 DNA 검색은 서열상의 거의 동일한 영역들을 알아내는데 좋다.

다음으로 검색할 데이터베이스를 선택하는 것이 중요하다. 상동성 검색에서는 NCBI website 상에서 가장 많이 찾는 테이터베이스는 nr 데이터베이스이다. nr 단백질 데이터베이스는 여러 가지 source들로부터 자료들을 수집하고, 반복되는 동일한 서열들을 제거하여 대부분 알려진 단백질들의 집단을 보여준다. NCBI nr 데이터베이스는 가능한 많은 서열들을 포함시키기 위해 자주 개정된다. 분명히 한번의 검색으로는 데이터베이스에 포함되지 않은 서열을 찾아내지 못할 것이다. 데이터베이스는 매우 빠른 속도로 증가하고 있기 때문에 가장 최신의 것을 사용해야만 한다. 여러 가지 특화된 데이터베이스들도 있다. 그 각각은 nr 데이터베이스의 하위집단이다. E-value 통계학은 데이터베이스의 크기에 영향을 받으므로 알려진 구조의 단백질들을 찾는데 흥미가 있다면 보다 작은 pdb 데이터베이스를 찾는 것이 좋다.

DNA 데이터베이스를 단백질 수준에서 검색하기를 원할 수도 있다. 프로그램은 자동으로 DNA를 6개의 reading frame으로 바꾸어 이들 각각을 비교하는 방법을 사용한다. GSSs, ESTs, STSs, HTGSs를 제외하고 대부분의 알려진 DNA 서열들을 가진 nr DNA 데이터베이스는 새로운 유전자들을 찾는데 유용하다; 이 데이터베이스에서 확인된 유전자들은 이미 단백질 nr 데이터베이스에 있을 것이다. GSS, EST, STS, HTGS 데이터베이스들에 대한 검색들은 새로운 상동성 유전자들을 찾을 수 있으면 발현 자료나 게놈 map 위치를 아는데 특히 유용하다.

Query들과 데이터베이스 유형들의 다른 조합 때문에 여러 가지 변형의 BLAST가 있다 (표 1 참조). Gapped alignments를 지원하는 가장 최신의 BLAST 버전을 사용하는 것이 바람직하다. 오래된 버전들은 느리고, 적은 homolog들을 찾아내며 약간의 통계적인 문제점을 가지고 있다. 이 프로그램들은 WWW에서 운행될 수 있으며 다운로드 받아서 사용할 수도 있다. 또다른 선택은 FASTA package를 사용하는 것이다. FASTA 프로그램은 느리기는 하지만 BLAST 보다 효과적이다. 이 package는 또한 엄밀한 Smith-Waterman algorithm으로 보강된 SSEARCH를 포함하고 있다. PSI-BLAST와 같은 반복적인 프로그램들은 잘못된 결과를 낳을 수 있으므로 운행하는데 각별한 주의가 필요하다. 그러나 순전히 pairwise 방법보다는 더 많은 homolog들을 찾을 가능성이 있다.

표 1. BLAST에서 가능한 검색들a
program	query	database	comparison	common use
blastn	DNA	DNA	DNA level	Seek identical DNA sequences and splicing patterns
blastp	protein	protein	protein level	Find homologous proteins
blastx	DNA	protein	protein level	Analyze new DNA to find genes and seek homologous proteins
tblastn	protein	DNA	protein level	Search for genes in unannotated DNA
tblastx	DNA	DNA	protein level	Discover gene structure
a FASTA에서도 유사한 검색이 이루어진다.

Filtering

데이터베이스 검색들의 통계학은 무관한 서열들은 서로간에 완전히 무작위적인 것으로 본다고 추정한다. 그러나 서열상의 어떤 유형들은 이러한 규칙에 반한다. 가장 일반적인 예외는 몇가지 다른 잔기들이 길게 연결된 경우 (polyalanine과 같은)이다. 그러한 영역들은 매우 높은 match score를 가질 것이다. 이러한 이유 때문에 NCBI BLAST 서버는 만약 'default filtering'을 선택하면 SEG 프로그램을 사용하여 자동적으로 단백질들에서 그러한 부분들을 (X로 대치하여) 제거한다. DNA 서열들도 유사하게 DUST에 의해 가려진다. 이런 프로그램들이 문제가 되는 match들을 자동적으로 제거하기는 하지만 어떤 문제들은 빠져나올 수 있다. 더군다나 일부분의 서열이 가려지면 분명한 hit들이 빠질 수도 있다. 그러므로 다른 masking 변수들을 사용하는 것이 도움이 될 수도 있다.

다른 종류의 filtering도 가끔 바람직하다. 예를 들어 iterative search들은 coiled coil이나 transmembrane helix들을 닮은 단백질 영역들에 의해 오염되기 쉽다. 문제는 이런 일반적인 특성들에서만 유사한 단백질은 초기에 일치할지 모른다는 것이다. 그렇게되면 이런 부적절한 특성들이 강조되어 결국 많은 잘못된 hit들을 야기시킨다. Cysteine이 많은 단백질들도 높은 score들을 얻을 수 있다. 특히 이런 특성들이 여과되지 않으면 배열 결과들을 주의깊게 살펴 부정확한 match가 발생하지 않도록 조심하여야 한다.

Alignment, algorithmic and output parameters

세가지 세트의 다른 변수들 역시 검색 결과에 영향을 미치나 큰 주의를 기울일 필요는 없다. 첫째, matrix와 gap 변수들은 두 서열사이의 유사성이 어떻게 결정되는지를 결정한다. 한 단백질 내의 두 개의 잔기가 배열될 때, 프로그램은 matrix를 사용하여 아미노산들이 유사한지 (그러면 점수를 받는다) 또는 다른지 여부를 결정한다. BLAST에서 default matrix는 BLOSUM62라 불리며 이 프로그램은 현재로서는 다른 matrix들로는 신뢰할만하지 않다.  Gap 변수들은 하나의 배열이 gap을 가질 때 얼마나 감점을 할지 결정한다: existence parameter는 gap을 가지는데 대해 고정된 비용이고 per-position 비용은 길이 (잔기들의 수)에 따르는 것이다. 전형적으로 gap을 넣는데는 큰 비용이 들고 적지만 추가적인 비용이 들기 때문에 긴 gap일수록 나쁘다. 이것들을 변화시켰을 때 얻는 이득은 거의 없다.

두 번째 변수들의 세트는 BLAST가 사용하는 heuristics를 결정한다. 이러한 숫자들을 변화시킴으로써 프로그램은 천천히 돌면서 보다 예민해지거나 또는 더많은 homolog들을 잃어버리면서 빨리 돌 수 있다. BLAST에서 이러한 변수들은 매우 복잡하기 때문에 여기서 완전히 설명하기가 곤란하다. 현재는 사용자들이 이러한 선택사양들을 default로부터 바꾸는 경우는 매우 드물다. FASTA 프로그램은 그러한 변수가 한가지 있는데 그것은 ktup이다. 이 값이 1일 경우는 BLAST 보다 느리나 보다 정밀하고, 2이면 빠르나 덜 효과적이다.

세 번째 변수들의 세트는 얼마나 많은 결과가 보고되는지를 조절한다. 설정값으로 프로그램은 E value가 10까지에 해당하는 match들만을 보고한다. Match들의 전체 수는 최대 500으로 한정되어 있으며, 배열에 관한 자세한 정보는 100개까지이다. 더 많은 match들을 얻으려면 이 값들을 증가시켜야 한다.

Interpretation of results

서열검색결과들의 해석은 우선 match들이 상동성을 의미할 정도로 신뢰할만한 지를 평가하는 것이다. 이것을 수행하는 가장 효과적인 방법은 통계적인 값이나 E value들을 사용하는 것이다. E value들은 raw 또는 bit score들 보다 유용하고 또한 percentage identity 보다도 훨씬 강력하다. 다행스럽게도 FASTA, SSEARCH, NCBI gapped BLAST에서의 E value들은 정확해 보이며, 따라서 해석하기가 쉽다.

어떤 match의 E value는 우연히 주어진 score를 달성할 수 있는 데이터베이스 내의 예상되는 서열들의 수이다. 따라서 평균적인 데이터베이스 검색에서 E value가 10 이하라면 10개의 무작위적인 match들을 찾게될 것으로 기대할 수 있다. 분명히 그러한 match들은 큰 의미가 없다. 그러나 보다 나은 match들이 없다면 그러한 score를 가지는 서열들도 기능이나 새로운 실험에 대한 힌트를 제공해줄 수 있을 것이다. 0.01 보다 낮은 score들은 우연히 나타날 확율이 매우 낮으므로 편향된 것이 아니라면 상동성을 가리킬 것이다.  이제는 1e-50 (1 x 10-50)에 가까운 score도 자주 보인다. 이들은 query 단백질이 데이터베이스 내의 일치된 target과 진화적으로 연관되어 있음을 확신시켜준다.

상동성을 가진 일치된 서열들로부터 기능을 추론하는 것은 문제가 있는 과정이다. 만약 score가 매우 좋고 배열이 두 개의 단백질 전역에 걸쳐서 일어난다면 이들은 동일하거나 거의 같은 기능을 가질 가능성이 매우 높다. 그러나 그렇다고 너무 믿는 것은 위험하다. 생화학적인 기능이 변하지 않았더라도 기능은 분기하고, 생물체 또는 세포에서의 기능도 바뀔 수 있다. 더군다나 데이터베이스들에서 기능에 관한 주석은 많은 것이 잘못된 것들이므로 주의해야만 한다. 또 다른 복잡한 문제도 있다. 예를 들어 단백질의 일부분만 배열된다면 전체 기능 중 한가지 측면에만 기여하는 도메인을 공유할지도 모른다. 많은 경우 가장 높은 score의 hit들은 query의 일부분에만 배열된다. 그래서 다른 영역들에의 match들은 훨씬 낮은 score ranking에서 찾을 필요가 있다. 이런 이유 때문에 query와 target들 각각 사이의 중첩부위를 주의깊게 살펴보아야 한다.

대부분의 상동성 서열들은 너무 분기되어 pairwise 서열비교방법으로는 검출될 수 없을 지 모르기 때문에 데이터베이스 검색 방법들은 제한되어 있다. 따라서 높은 match를 찾지 못하는 것이 데이터베이스에 homolog들이 존재하지 않는다는 것을 가리키지는 않는다. 그보다는 좀더 강력한 전산방법들 (Sean Eddy와 Kay Hofmann에 의해 기술된 방법)이나 실험들이 필요할 지 모른다.