JP2005500594A - 高速の近似部分文字列検索ための方法および装置 - Google Patents
高速の近似部分文字列検索ための方法および装置 Download PDFInfo
- Publication number
- JP2005500594A JP2005500594A JP2002588186A JP2002588186A JP2005500594A JP 2005500594 A JP2005500594 A JP 2005500594A JP 2002588186 A JP2002588186 A JP 2002588186A JP 2002588186 A JP2002588186 A JP 2002588186A JP 2005500594 A JP2005500594 A JP 2005500594A
- Authority
- JP
- Japan
- Prior art keywords
- database
- query
- sequence
- search
- score
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 67
- 230000008569 process Effects 0.000 claims description 21
- 230000006872 improvement Effects 0.000 claims description 19
- 238000005192 partition Methods 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 abstract description 17
- 238000012856 packing Methods 0.000 abstract description 11
- 238000002869 basic local alignment search tool Methods 0.000 description 110
- 238000012545 processing Methods 0.000 description 26
- 108090000623 proteins and genes Proteins 0.000 description 24
- 102000004169 proteins and genes Human genes 0.000 description 21
- 238000005457 optimization Methods 0.000 description 13
- 108020004414 DNA Proteins 0.000 description 11
- 238000013459 approach Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 9
- 230000035945 sensitivity Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 150000007523 nucleic acids Chemical class 0.000 description 7
- 239000002773 nucleotide Substances 0.000 description 7
- 210000004027 cell Anatomy 0.000 description 6
- 125000003729 nucleotide group Chemical group 0.000 description 6
- 210000000349 chromosome Anatomy 0.000 description 5
- 238000013515 script Methods 0.000 description 5
- 108091028043 Nucleic acid sequence Proteins 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 210000003917 human chromosome Anatomy 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 108020004707 nucleic acids Proteins 0.000 description 4
- 102000039446 nucleic acids Human genes 0.000 description 4
- 108090000765 processed proteins & peptides Proteins 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 150000001413 amino acids Chemical class 0.000 description 3
- 230000027455 binding Effects 0.000 description 3
- 238000009739 binding Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 102000004196 processed proteins & peptides Human genes 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 101100285983 Halobacterium salinarum (strain ATCC 700922 / JCM 11081 / NRC-1) htpX gene Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 101150002000 hsp-3 gene Proteins 0.000 description 2
- 238000002864 sequence alignment Methods 0.000 description 2
- 238000013518 transcription Methods 0.000 description 2
- 230000035897 transcription Effects 0.000 description 2
- 102100036008 CD48 antigen Human genes 0.000 description 1
- 238000001712 DNA sequencing Methods 0.000 description 1
- 241000255581 Drosophila <fruit fly, genus> Species 0.000 description 1
- 101000716130 Homo sapiens CD48 antigen Proteins 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 125000003275 alpha amino acid group Chemical group 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003153 chemical reaction reagent Substances 0.000 description 1
- 239000002299 complementary DNA Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002887 multiple sequence alignment Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000011524 similarity measure Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
- G16B30/10—Sequence alignment; Homology search
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B50/00—ICT programming tools or database systems specially adapted for bioinformatics
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99936—Pattern matching access
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Engineering & Computer Science (AREA)
- Medical Informatics (AREA)
- General Health & Medical Sciences (AREA)
- Theoretical Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- Biophysics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Chemical & Material Sciences (AREA)
- Analytical Chemistry (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本発明は、高速配列データベース検索のためのBLASTアルゴリズムの実装における改良型を実行する、方法およびシステム(例えば、コモディティBeowulf型並列計算ハードウェア)を提供する。本発明はまた、クエリーパッキング、動的データベース分割、および改良型のヒット伸長のための方法およびシステムを提供する。本発明は、単一のデスクトッププロセッサにより実行される従来型のBlastアルゴリズムよりも2桁から3桁の規模で、より高速である改良型BLASTアルゴリズムを実装するための一体型(combined)ハードウェア−ソフトウェアシステムを使用する、方法およびシステムを提供することによって、上記の要求および他の要求に取り組む。
Description
【技術分野】
【0001】
(関連出願)
本出願は、「Method and Apparatus for High−Speed Approximate Sub−String Searches」と題する米国仮特許出願第60/288,465号(2001年5月4日出願)(この全体は、本明細書中にて参考として援用される)の優先権の利益を、米国特許法第119条(e)項に基づき主張する。
【0002】
(発明の分野)
本発明は、文字列検索に関連し、より具体的には、コンピュータに実装された、データベースの文字列検索に関する。
【背景技術】
【0003】
(発明の背景)
核酸(例えば、DNA)またはタンパク質の新規の並びが配列決定されると、その配列は、代表的には、既知の、DNA情報およびタンパク質情報のデータベースに対して比較され、この新規DNAまたは新規タンパク質の機能の予備的な表示を提供する。次いで、研究者は、このデータベース検索の結果を評価するための実験を設計し得る。
【0004】
DNA配列決定技術の甚大な改善の結果として、DNAデータベースの増大する速度は、1989年の1年間当たり150万ヌクレオチドから1999年の1年間当たり16億を超えるヌクレオチドへと、最近の10年に亘って指数関数的に増大した。1999年以降、ショウジョウバエ、マウス、およびヒトのゲノムを含む全ゲノムが、配列決定されている。既知の遺伝的配列情報の量が指数関数的に増大するに従って、この増えつつある配列データベースを検索するための高速な方法の開発がますます重要なものとなった。
【0005】
例えば、ゲノム情報の公的な集積機関である、GenBankは、現在、おおよそ、16GBのデータを所有している。これは、1982年において680Kにすぎなかったものから増大している(Bensonら,Nucleic Acids Research,28(1:15−18(2000)(www.ncbi.nlm.nih.gov/Genbank/genbankstats.htmlもまた参照のこと))。この速度では、データ量は、16.5ヶ月毎に2倍となる。2001年だけでも、総計3GBに及ぶ350万配列の新規配列が、GenBankに入力された。公開配列決定設備または専用配列決定設備の両方とも、24時間体制でデータを生成するウェアハウス標準のファクトリーからなり、これは、試薬の利用および配列決定機器の速度にのみ制限される。
【0006】
より多くの配列データが利用可能になると、最も根本的な問題の1つは、配列アライメント(すなわち、新たに発見された、ヌクレオチド配列またはアミノ酸配列が、それまでに既知でありかつ研究されているデータとどのような関係にあるかということ)である。いずれにしても、配列データ量が2倍になると、可能な比較の数は、4倍になるということに留意されたい。従って、おおよそ同じ時間経過で、コンピュータ速度が指数関数的に倍加する同様の印象があったとしても、配列比較アルゴリズムは、利用可能なデータの中いずれの有意な部分についての相同性を見出す能力において、ますます遅れをとっている。
【0007】
相同性検索における現在の研究の多くは、より感度が高くかつより選択的であるアルゴリズムに集中しており、このアルゴリズムは、偽陽性および偽陰性の割合を低減するため、換言すると、微弱な相同性(例えば、遠縁の2つの生物の遺伝子)を正確に同定するため、例えば、以下に記載される、隠れマルコフモデルにような精巧な技術を使用するアルゴリズムである:Eddy、「Profile Hidden Markov Models」、Bioinformatics,14(9):755〜763(1998)(この全体は、本明細書中で参考として援用される)。このようなアルゴリズムは、利用可能なデータから最大量の情報を得ることのより高いレベルを求め、そして、おおいに研究的に興味深い。本発明は、異なった路線をとる。多くの用途について、既存のアルゴリズムは、十分良好である。特に、アルゴリズムにおけるBLAST(Basic Local Alignment Search Tool)ファミリ(NCBIにより開発された)は、殆どの検索に対して十分に感度が高く、かつ選択的である。例えば、Altschulら,「Gapped BLAST and PSI−BLAST:new generation of protein database search programs」,Nucleic Acids Research,25(17):389−3402(1997)(この全体は、本明細書中で参考として援用される))を参照のこと。
【0008】
(BLAST(Basic Local Alignment Search Tool))
現在、高速データベースの最も一般的な方法は、Altschulら,J.Mol.Biol.,215(3):403−10(1990)(この全体が、本明細書中で参考として援用される)に記載されたBLAST(Basic Local Alignment Search Tool)の改良型である。BLASTおよびその改良型は、高速な、配列のローカルアライメント(局所的アライメント)を提供する。BLASTプログラムは、タンパク質またはDNAのクエリー(問合せ配列)と、タンパク質またはDNAのデータベースとを、任意の組み合わせで比較するように記述されており、ここで、DNA配列は、これらの任意の比較が実行される前に、概念上の翻訳をしばしば受ける。
【0009】
BLASTは、類似性の指標を最適化することを試みるヒューリスティック(発見的)なものである。具体的に、BLASTは、ランダムなアライメントとは統計学的に区別され得る類似性のある全ての局所領域(ハイスコアセグメントペア(High−scoring Segment Pair)(HSP)と呼ばれる)を同定する。BLASTは、「閾値」パラメータであるTを設定することによって、速度と感度との間の折り合いを可能にする。より高い値のTによって、より高速となるが、また、微弱な類似性を取りこぼす可能性も増大させる。このBLASTプログラムは、クエリーの長さと検索されるデータベースの積に比例して時間を必要とする。
【0010】
BLASTアルゴリズムの中心的な概念は、統計的に有意なアライメントは並置されたワードのHSPを含む可能性が高いということである。BLASTは、まずはじめに、このクエリー配列内のいくつかのワードと並置されたときに少なくともTのスコアを持つワード(例えば、タンパク質に対して3、DNAについて12のワード)についてデータベースをスキャンする。この条件を満たす並置された任意のワードペアは、「ヒット」と呼ばれる。このアルゴリズムの第2の工程によって、各ヒットが、アライメントの中に報告されるのに十分なスコアで存在するか否かを評価される。これは、実行中のアライメントのスコアがそれまでに得た最大値からXよりも低下するまで、両方向へヒットを伸長させていくことにより実行される。
【0011】
その殆どの基本的な実装において、このBLASTアルゴリズムは、以下の3つの工程を実行する:(1)クエリー配列から長さwの高いスコアのワードのリストをコンパイルし;(2)データベース中の配列の各々に対して、閾値Tよりも高いスコアを有するワードヒット(すなわち、データベースの配列の中のワードと一致するクエリー配列に由来するワード)をスキャンし;(3)ワードヒットの各々について、S以上のスコアのハイスコアペア(HSP)を形成するように両方向にワードヒットを伸長していく。以下のパラグラフで、これらの工程を詳細に説明する。
【0012】
代表的なBLASTの実装において、ハイスコアワードのリストがi行×j列のルックアップテーブルの中に作成され、ここで、iは、長さwの可能なワードの全ての数であり、そして、jは、(クエリー配列におけるエレメントの数)−wである。値iは、長さwの全ての可能なワードを表すので、このルックアップテーブルにおける行の各々は、長さwの1つのワードに対応する。この行番号は、その対応するワードの字句順序(lexical order)に対応し、そして、これはそのワードに関する「行番号」とみなされ得る。DNA配列に関して、i=4wであり;タンパク質配列に関して、i=20wである。このj値は、クエリー配列の中の、長さwであるワードの開始位置の番号を表す。このルックアップテーブルは、全て0として初期化され、次いで、以下のように配置(populate)される:クエリー中の長さwのワードそれぞれについて、その対応する行を参照する。この行xを呼びだす。クエリー配列yにおけるワードの位置を呼び出す。このルックアップテーブルの(x,y)要素をyに設定する。一旦、このルックアップテーブルが配置されると、次いで、取り除かれる(trim)。全て0を有する行は、クエリーにおいて存在しないワードを表すので、取り除かれる。次いで、残りのワードは、それらのワードを調べてこれらのセルフ類似性スコアが最小閾値Tを満たすか否かを判断することによって、有意性についてスクリーニングされる。類似性スコアは、代表的には、以下に記載されるような置換マトリックス(例えば、PAM120およびBLOSUM62)を使用して計算される:Dayhoffら,Atlas of Protein Sequence and Structure,Vol.5,Suppl.3,Ed.M.O.Dayhoff(1978);Henikoff and Henikoff,Proc.Natl.Acad Sci.USA,89:10915−10519(1992);ならびにHenikoffおよびHenikoff,Proteins,17:49−61(1993)。これらの刊行物は、本明細書中において、参考としてその全体が援用される。T未満のセルフスコアを有するワードを表す行は、削除される。最終的に、ゼロ(0)を有する全ての列が取り除かれる。得られたルックアップテーブルは、有意なワードの字句ワード数(lexical word number)によって、索引付けされ、そして、クエリー配列における有意なワードの位置を戻す。
【0013】
BLASTはヒューリスティックアルゴリズムであり、そして、wおよびTの値は、感度、特異性、および速度の最適な組み合わせについて選択される。所定値Tについてwが増加すると、特異性は向上するが、感度は低下する。同様に、所定値wについてTが減少すると、感度は向上するが、特異性は低下し、実行時間は増大する。wおよびTの例示的な設定は、タンパク質について、w=4、T=17であり、DNAについては、w=12,T=60である。
【0014】
一旦、このルックアップテーブルが構築されると、これは、クエリー配列をこのデータベースに対して比較するために使用される。具体的には、このデータベースは、そのセルフスコアは閾値Tよりも高いクエリー配列の中に存在する長さwの全てのワードに対して検索される。従って、見出された全てのワードは、「ヒット」と称される。データベース検索の出力(アウトプット)は、ヒットのリストを含む。このデータベースが反復して検索されるので、このデータベースは、クエリー配列に対して生成されたルックアップテーブルに類似の、ルックアップテーブルへと前処理される。従って、この検索プロセスは、2つのルックアップテーブルを比較することによって、迅速に実施され得る。
【0015】
この最終工程は、各ヒットを伸長させてハイスコアセグメントペア(HSP)を形成することである。代表的には、このヒットは、クエリー配列およびデータベース配列の対応する並び(ストレッチ)の間の類似性スコアが予め決定した閾値S未満に低下するまで、両方向に伸長される。代表的なBLAST実装の出力は、このデータベースにおいて見出されたヒットの記述を含む。ヒットの各々に対して、この出力は、ヒットが現れた配列についての情報、そのヒットのビットスコア、与えられたHSPが偶然に見出される確率、およびE値(これは、この与えられたスコアに関して、このサイズのデータベースにおいて偶然に見出されたと期待される一致の数の指標である)を含む。
【0016】
(BLASTにおける以前の改良)
BLASTアルゴリズムの実装は、このアルゴリズムが最初に導入されたとき以来、改良を受けている。3つの主要な改良として、ヒット伸長のための「ツー・ヒット(two−hit)」法、ギャップ付きアライメントを生成する能力、および微弱であるが生物学的に関連性にある配列類似性に対して多くの場合においてより感度が高い「PSI−BLAST(Position−Specific iterated BLAST)」が挙げられる。これらの改良型は、例えば、Altschul,「Gapped BLAST and PSI−BLAST:a new generation of protein database search programs」,Nucleic Acids Research,25(17):3389〜3402(1997)に詳細に説明されている。
【0017】
オリジナルのBLASTの実装の性能データは、その伸長工程(ここでは、ヒットが伸長されてHSPを生成する)が処理時間の最大量を費やしたことを示している。ヒットの伸長のための「ツー・ヒット」法は、この工程における改良であり、この改良によって、費やす時間がずっと短い伸長工程が作り出される。実験的証拠によって、目的とする代表的なHSPは、単独のワードペアよりもずっと長く、それに従って、同じ対角線(diagonal)上で互いに比較的短い距離内に複数のヒットを含み得ることが示されている。このツー・ヒット法は、伸長が始まる前に、同じ対角線上にあり、かつ互いに距離Aの内にある、2つの重なっていないワードペアの存在を必要とすることによって、この観察結果を利用する。最も新しいヒット(the most recent one)と重なっているヒットは全て、無視される。この方法は、伸長をすすめるために1つのヒットではなく、2つのヒットを必要とするので、この閾値パラメーターTは、同等の感度を保持するほど低くなければならない。この効果は、多くの単独のヒットが見出されるが、少数の部分のみが、伸長を引き起こす同一の対角成分上において随伴する第2のヒットを有するということである。従って、ヒットのかなり多くの部分は、適切な対角成分について、最も近いヒットの座標(coordinate)を調べ、その最も近いヒットが、そのときのヒットの座標から距離A内にあるか否かを評価し、そして、最後に、新しい座標でこの座標を置換するという僅かな計算の後に、簡単に処理を終了し得る。経験的に、少ない伸長を必要とすることによって省かれる計算量によって、より多くのヒット数を処理するために必要とされる余分な計算量が相殺される。
【0018】
この伸長工程を実施する別の方法が、例えば、以下に記載されている:「Multiple sequence alignment using block chaining」、Zheng Zhang,博士論文,The Pennsylvania State University,UMI Dissertation Services,Ann Arbor(1996);およびZhangら、「Chaining multiple−alignment blocks」,J.of Computational Biology,1:217− 226(1994)。この方法は、有向閉路グラフに関する古典的な最適経路アルゴリズムの特別な場合である、「ブロック連鎖」として知られているコンピュータ科学の既知のクラスの問題に対する伸長工程の類似性に基づいている。上述の方法は、K−Dツリーと称されるより高い次元の計算幾何学の周知の技術を採用する。一般的に、K−Dツリーは、セルが、過剰の入力オブジェクト含まないように、相対的に小さい数のセルへと多次元空間を階層的に分解するために使用される(Bentley,Communications of the ACM,18:509−517,(1975)(これの全体が、本明細書中で参考として援用される)を参照のこと)。Zhangにおいて、K−Dツリーを使用して、可能なブロック鎖の空間を領域へと分解するのに使用され、従って、このブロック連鎖問題を、連鎖領域(chaining region)の計算機的にはそれ程負荷がかからない問題へと単純な形にする。K−Dツリーの使用によって、複数の配列比較(すなわち、2つを超える配列が、互い比較される)にとって有意な計算的利得を提供する。
【0019】
ギャップ付きアライメントを生成する能力によって、BLAST性能における有意な改良が可能となる。オリジナルBLASTプログラムは、一緒に考えた場合のみにおいて、統計学的に有意な単独のデータベース配列を含むいくつかのアライメントをしばしば見出す。これらのアライメントのうちの任意の1つを見落とすことによって、全てを含めた結果に支障をきたす。ギャップ付きアライメントを生成するためのアルゴリズムを導入することによって、有意な全てを含めた結果において、部分的にまとめられたギャップなしのアライメントよりもただ1つののみを見出すことが必然となる。これによって、パラメータTが上昇することを可能にし、初期データベーススキャンの速度を向上させる。ギャップ付きアライメントを生成する1つの方法は、ヒューリスティックアプローチ(これは、HSPを構築するためのBLAST法におけるありふれた生成法である)を使用する。このアプローチの中心的な概念は、50データベース配列ごとに、おおよそ1を超えない伸長が生じるように選択した、中程度のスコアSgを超える任意のHSPについてギャップ付きの伸長を引き起こすことである。統計学的な分析によって、Sgが、代表的な長さのタンパク質クエリーに対して約22ビットで設定されるべきであることが示されている。ギャップ付き伸長は、ギャップのない伸長よりも長く実行するための時間を必要とするが、極少数のギャップ付き伸長を実行することによって、ギャップ付き伸長が費やす、総実行時間に占めるその割合は比較的に低く押さえら得る。さらに、ギャップのないアライメントのコレクションというよりも、単一のギャップ付きアライメントを探索することによって、構成するHSPのうちの1つのみが、首尾よく生成された総合した結果について位置付けられる必要がある。これは、任意の単一の中程度のスコアをもつHSPを失う可能性がずっと高いことを、許容され得ることを意味する。これによって、このアルゴリズムのヒットステージについてのパラメータを実質的に上昇させることを可能にするが、他方、匹敵する感度を保持している。例えば、Tは、オリジナルBLAST実装の1ヒットヒューリスティックに関して、11〜13に向上した。
【0020】
位置特異的スコアマトリクス(プロファイルまたはモチーフとして知られている)に対してBLASTを反復適用することによって、微弱であるが、生物学的に有意な関係がかなり頻繁に検出されるデータベース検索が可能となる。PSI−BLASTと称される位置特異的であって、反復されるBLASTの1つの実装は、最初のBLAST実行の出力から位置特異的スコアマトリックスを構築し、その後のBLAST実行のためのクエリーとしてそのマトリックスを使用する。
【0021】
いくつかの精緻化が、BLASTの現行の実装の、その速度、感度、および特異性を、そのオリジナルと比較したときに3倍を超えるまで向上させてきたが、配列データベースの増大の指数関数的な速度は、このアルゴリズムの実装に対しての絶え間ない改善を必要としている。
【0022】
(並列処理)
大規模データベース検索を高速化するための1つのアプローチは、並列処理を使用することである。高性能並列計算(ハイパフォーマンスパラレルコンピューティング)は、複数のプロセッサにまたがって、大規模で複雑なタスクを分割することによって達成される。1つの単純な例として、配列データベースは、いくつかの部分(パート)へと細分化され得、各部分は、特定の処理単位へと割り当てられ得る。次いで、同じクエリーが、同時に、全ての処理単位において実行され得、各処理単位は、そのデータベースの一部分のみを検索する必要がある。より複雑な例として、タスクがサブタスクに分割される。例えば、BLASTにおける伸長工程は、HSPの選択的な鎖について膨大な吟味を必要としている。この例においては、可能な鎖の空間は、複数の部分空間に細分化され、そして、部分空間の各々は、別個のプロセッサに割り当てられる。
【0023】
様々な方法を使用して、複数の計算機(コンピュータ)における効率の改善が達成され得るが、並列処理を組織化し、かつそれを調整する最も一般的な方法は、目前にある問題を自動的に分解し、そして、プロセッサが、これらの作業を実行している間に、必要とされる場合に相互通信することを可能にするコードを記述することである。上記の第1の例において、プロセッサが、データベースの部分において、クエリーに対するマッチ(一致)を見出すと、このプロセッサは、それらの検索を実行している他のプロセッサに、そのイベントを信号で送信し得る。上記に第2の例において、プロセッサが新たな最大スコアを見出した場合に、そのプロセッサは、そのイベントを信号で送信し得、その結果、他のプロセッサは、それらの閾値を上昇させる。
【0024】
並列処理の殆どのアプリケーションは、通常、プロセッサ間である程度の相互作用を必要とし、したがって、それらのプロセッサは、情報を交換するために相互に通信し得なければならない。例えば、マップ上のセルに対する値は、それらの最近接セルの値に依存し得る。このマップが2つの部分に分解されるとき、各々は、別個のCPU上で処理され、このプロセッサは、セル値を、そのマップの隣接エッジにおけるセル値と交換しなければならない。同様に、配列アライメントがいくつかのローカルアライメントに分解される場合、各ローカルアライメントを取り扱うプロセッサの各々は、その元の境界を越えてアライメントを伸長させるために、隣接するアライメントを取り扱うプロセッサと通信し得なければならない。
【0025】
並列処理に対するいくつかの対照的なアプローチが存在する。例えば、並列処理は、高度に専用化したハードウェアまたは商用既製(commercial off−the−shelf;COTS)ハードウェア上にて実施され得る。BLASTおよび他の配列比較およびデータベース検索のアルゴリズムアルゴリズムは、高度に専用化した、並列処理ハードウェア(例えば、PARACEL’S GENE MATCHERマシン)において実装されている。Ullnerの米国特許第6,112,288号(この全体が、本明細書中で参考として援用される)に記載されるように、PARACEL製GENE MATCHERは、プログラム可能な特別目的のパイプラインプロセシングシステムを使用し、このシステムは、複数のアクセラレータチップを直列接続して備える。このアクセラレータチップの各々は、インストラクションプロセッサを備える。このパイプラインプロセッサセグメントの各々は、複数のパイプラインプロセッサを直列接続して備える。このように専用ハードウェアは、有意な速度向上を提供し得、特に、ダイナミックプログラミング(DP)アルゴリズムに関して有意な速度向上を提供し得る。
【0026】
この専用ハードウェアアプローチと対照的なのは、コモディティ並列処理アプローチであり、これは、安価な商用既製(「COTS」)ハードウェアを使用する。コモディティ並列処理にとって一般に普及しているアプローチは、以下に説明されるようなBeowulfクラスタである:Beckerら,Beowulf:A Parallel Workstation for Scientific Computation.Proceedings,International Conference on Parallel Processing(1995);およびM.S.Warrenら,Parallel supercomputing with commodity comporaents;H.R.Arabnia編,Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications(PDPTA’97),1372−1381頁,1997(これらの刊行物は、本明細書中で、それらの全体が参考として援用される)。Beowulf型クラスタは、専用高速ネットワークによって相互接続されたコモディティハードウェアコンポーネント(LinuxまたはFreeBSDのようなフリーソフトウェアである基本ソフト(OS)を動作させる)から主に構築される、高性能の、大規模並列計算機である。代表的なBeowulf型クラスタは、ハイパフォーマンスコンピューティングタスクの実行専用の、複数の相互接続した、PCまたはワークステーションを備える。これは、通常、シングルノードのみを介して、外部と接続されている。代表的なBeowulf型クラスタは、メッセージパッシングと称されるプロセッサ間通信の一般に普及している方法を使用する。メッセージパッシングの一般に普及している実装は、「PVM(Parallel Virtual Machine)」および「MPI(Message Passing Interface)」を含む。
【発明の開示】
【発明が解決しようとする課題】
【0027】
コモディティ並列処理ハードウェアは、妥当なコストでかなりの性能を提供し、かつ、指数関数的なデータベースの増大がデータベース検索における実質的な改良を必要としているために、コモディティ並列処理ハードウェア上のBLASTアルゴリズムの性能を向上させるようにBLASTアルゴリズムを改良する必要性が存在する。
【課題を解決するための手段】
【0028】
(発明の要旨)
本発明は、単一のデスクトッププロセッサにより実行される従来型のBlastアルゴリズムよりも2桁から3桁の規模で、より高速である改良型BLASTアルゴリズムを実装するための一体型(combined)ハードウェア−ソフトウェアシステムを使用する、方法およびシステムを提供することによって、上記の要求および他の要求に取り組む。本発明システムのソフトウェアコンポーネントは、本明細書中において、Paracel BLASTと称され、そしてそのハードウェアコンポーネントは、本明細書中において、Paracel BlastMachineとして称される。本明細書中で教示される技術に従って、このBlastMachine上でのParacel BLASTによって、ゲノム規模のデータセットの操作が可能であり得る。アルゴリズム的な改良および並列ハードウェアアーキテクチャによって、このBlastMachineが、他の技術を用いて解決可能な問題よりも、重大で大きな問題を解決することを可能とする。1つの実施形態において、このシステムは、ゲノムの第1のパス分析について十分適しており、これにより、その後の段階における、より精巧な遅いアルゴリズムおよび手動による介入を可能にして、この第1のパスが残していたギャップを満たすことを可能にする。
【0029】
1つの局面において、本発明は、データベース検索を並列化するために、動的データベース分割を実行するための、構造体おひよび方法を提供する。
【0030】
別の局面において、本発明は、単一のデータベース検索に対して複数のクエリーを併用するための、構造体および方法を提供する。
【0031】
別の局面において、本発明は、クエリー配列とデータベース配列との間のより長いマッチを生成するためのハイスコアセグメントペアの十分な、連結および伸長のための構造体および方法を提供する。
【0032】
1つの特定の実施形態において、本発明は、配列データベースに対して複数のクエリー配列を比較する為の方法に関し、この方法は、以下の工程を包含する:(a)複数のクエリー配列を、一体型クエリー配列に結合する工程;(b)上記データベースの複数の下位区分を決定する工程;(c)複数の検索を実施する工程であって、ここで、各検索は、上記データベースの複数の下位区分のうちの1つに対して一体型クエリー配列の比較を含む工程であって、これによって、複数のワードマッチを生成した工程;(d)工程(c)において生成された複数のワードマッチの長さを伸長する工程であって、複数のハイスコアセグメントペアを生成する工程;(e)上記の複数のハイスコアセグメントペアを結合する工程;および(f)複数のレーポートを作成する工程であって、各レポートは、複数のクエリー配列の1つに対する最もスコアの高いマッチ(一致)を示す工程。
【0033】
複数の配列は、任意の方法による一体型クエリー配列へと結合され得る。例えば、本発明の方法の工程(a)において、複数に配列は、クエリールックアップテーブルに複数の配列を記憶すること、およびクエリー番号で上記配列の各々について索引作成し、それぞれのクエリー番号と上記の各配列を連結することによって、一体型クエリーに結合される。この結合プロセスは、任意の適切なパラメータ(例えば、長さパラメーター)を使用して、制御またはモニターされ得る。より具体的には、複数の配列は、上記テーブルに記憶されたデータ量が予め決定されていた制限値に達するまで、クエリールックアップテーブルにおいて記憶され得る。別の例において、本発明の方法の工程(a)において、複数の配列は、同時に複数のクエリーのハッシュを構築することによって、結合され得る。
【0034】
このデータベースは、任意の適切な方法によって、複数の下位区分に分割され得る。例えば、このデータベースの複数の下位区分を決定する工程は、塩基数、および上記のデータベース中の配列の数で、上記のデータベースのサイズを特定して、このデータベースを検索することによって生成される結果に関する統計的に有意な値を計算する工程を包含する。他の例において、このデータベースは、BLASTアルゴリズムに対して1以上の、以下の改変を行うことによって複数の下位区分に分割され得る:(i)基礎的なBLASTアルゴリズムの少なくとも1つの統計学的パラメーターは、正しい部分的な結果を生成するように調整され;(ii)データベースにアクセスするための基礎的なBLASTアルゴリズムにおいて使用される入力/出力ルーチンのうちの少なくとも1つが、データベースのサブセットにアクセスすることを支援するように改変され;(iii)中間結果の複数のメモリイメージ(memory image)が生成され;そして/または(iv)このメモリイメージが再結合されて、単一の結合されたBLASTレポートを作成する。特定の実施形態において、この基礎的なBLASTアルゴリズムは、データベースのサイズおよびこのデータベース中の配列数の両方を特定して、このデータベースを検索することによって生成された結果の統計学的な有意性を計算するように調整される。別の特定の実施例において、コマンドラインで引数(−z)を使用して、このデータベース全体の塩基のサイズを特定し、そして、コマンドラインオプション(−s)を使用して、このデータベースにおける配列全体の数を特定する。パラメータ−zおよび−sに関する値は、これらの値が別段提供されない場合は、サブセット化されたデータベースのサイズ全体に基づいて自動的に計算される。このデータベースはまた、このデータベースの対象(subject)の開始を示す第1の序数(ordinal)ID(X)を特定することによって、そして、このデータベースの対象の終端を示す第2の序数ID(y)を特定することによって、複数の下位区分に分割され得、ここで、上記第1の序数IDは、0〜N−1の範囲に及び、ここで、Nは、データベース中の配列数である。このデータベースは、任意の適切なサイズの部分に細分され得る。例えば、このデータベースは、ノードにおけるRAMに適合するように十分小さい部分に細分され得る。
【0035】
複数のワードマッチ(word matche)の長さは、任意の方法を使用して、本発明の方法の工程(d)において伸長され得る。例えば、この伸長工程は、以下の工程を包含し得る:(i)1セットのハイスコアセグメントペアを評価して、第1の基準に従う上記セットにおいて最もスコアの高い鎖を決定する工程であって、ここで、この鎖は、ハイスコアセグメントペアにおける上記セットのサブセットを含む工程;(ii)ハイスコアセグメントペアの上記セットから上記の鎖を取り出す工程;および(iii)このハイスコアセグメントペアが無くなるまで、上記の工程(i)および(ii)を反復する工程。好ましくは、この評価工程(i)は、第2の基準に従って再計算を必要としないハイスコアセグメントペアの上記セットにおけるサブセットを決定する工程を包含する。別の例において、複数のワードマッチの長さは、link_hsps()を用いて伸長される。この複数のワードマッチの長さは、別個のプロセッサ上で伸長され得る。あるいは、この複数のワードマッチの長さは、データベース検索を実行するために使用される、同一のプロセッサ上で伸長され得る。
【0036】
この複数のハイスコアセグメントペアは、任意の適切な方法を使用し、本発明の方法の工程(d)にて結合され得る。例えば、複数のハイスコアセグメントペアは、「pbmerge」プログラムを使用して結合され得る。
【0037】
本発明の方法は、適切な配列ハードウェア上で実行され得る。例えば、本方法は、商用既製(「COTS」)ハードウェア上で実行され得る。好ましくは、本方法は、Beowulf型並列処理アーキテクチャで実行され得る。
【0038】
本方法は、任意の適切なデータベースにおいて、任意のクエリー配列について検索を実行するために使用され得るが、但し、このクエリー配列は、このデータベースに含まれる少なくともいくつかの配列と適合性である。しかし、いくつかの環境においては好ましいのであるが、このクエリー配列がこのデータベースに含まれる全ての配列と適合性である必要はない。例えば、あるタンパク質配列は、核酸配列とに加えて、タンパク質の配列を含むデータベースにおける検索を実行するのためのクエリー配列として使用され得る。同様に、核酸配列(例えば、DNA配列またはRNA配列)は、タンパク質配列に加えて、核酸配列を含むデータベースにおける検索を実行するためのクエリー配列として使用され得る。
【0039】
本発明の方法は、ゲノム配列、cDNA配列、EST配列またはそれらの組み合わせを含むデータベースのような任意の適切な配列データベースにおける検索を実行するために使用され得る。本発明の方法は、公開データベース(例えば、GenBank)または加入者限定データベースにおける検索を実施するのに使用され得る。
【0040】
別の特定の実施形態において、本発明は、以下の工程を使用するBLASTアルゴリズムを用いるデータベースにおける配列検索を実行するための方法に関する:(a)クエリー配列から長さwのハイスコアワードのリストをコンパイルして;(b)このデータベースにおける各配列のついて、閾値Tを超えるスコアを有するワードヒットについてスキャンし;そして(c)各ワードヒットについて、このヒットを両方向に伸長して、S以上のスコアのハイスコアセグメントペア(HSP)を形成し、ここで、改良型は、以下の(i)、(ii)、(iii)のうちの1つ以上を含む:(i)上記検索を実行する前に、複数のクエリー配列を一体型クエリー配列に結合する工程;(ii)上記検索を実行する前に、データベースの複数の下位区分を決定する工程;(iii)可能な何時においても、ハッシュテーブルは、プロセッサとメモリとの間で往来するのではなく、プロセッサキャッシュに留まるようにコードを再構築する工程;および/または(iv)1メガ塩基(100万塩基または100万塩基対)以上のクエリー配列を、上記の検索を実行する前に、より小さい部分に分割する工程(例えば、上記クエリー配列を、重複する部分に分割し、その検索において別々に、各部分を実行することによる)。好ましくは、このクエリー配列は、以下の工程によってより小さい部分に分割される:a)上記クエリー配列を複数の重なり合う(オーバーラップ)配列へと分割する工程;b)重なり合う部分の各々が、唯一の重なり合う配列においてのみ含まれるように、上記における複数の重なり合う配列から、重なり合う部分を取り除く工程;およびc)除去を受けた部分が、上記の重なり合う部分の全体に及ぶ任意のHSPを含むか否かを検出する工程であって、そして、このようなHSPが検出された場合に、上記HSPを生じるオリジナルヒットを見出し、そして分割されていないクエリー配列の状況におけるHSPを伸長する工程。このクエリー配列は、任意の適切なサイズ(例えば、約10キロ塩基(1000塩基または1000塩基対))のより小さい部分へと分割され得る。
【0041】
さらに別の具体的な実施形態において、本発明は、データベースにおける配列検索を実行する為のシステムに関し、このシステムは、マネージャーノードおよび複数のワーカーノードを備え、ここで、上記マネージャーノードは、クライアントステーションおよび上記ワーカーノードの各々に作動可能に接続されて、そして、上記システムは、上記の方法のいずれか1つに従って、データベース中の配列検索を実行することが可能である。1つの例において、ハードウェアのレベルで、このマネージャーモジュールは、デュアルCPUマザーボード、RAM、ディスク、およびネットワークカードを備えるマネージャーノードを備える。他のノード(例えば、ワーカーノード)は、類似のハードウェア(通常は、ディスクは備えない)を備える。1つの好ましい例において、このマネージャノードは、マネージャー「デーモン」(恒久的プロセス(persistent process))ソフトウェアをこのマネージャーノード上で実行させるが、ワーカーデーモンは、ワーカーノード上で実行させる。このマネージャーデーモンは、クライアントプロセスからジョブリクエストを受信する工程を担い、このクライアントプロセスは代表的にはクライアントワークステーションにおいて実行され、そのジョブリクエストを待ち行列にいれ(queuing)、そのジョブリクエストをサブジョブまたはタスクに分割し、これらのタスクのスケジュール管理を行い、そして、それらのタスクをワーカーデーモンへと割り当てることを担っている。このワーカーデーモンは、マネージャーデーモンからのサブジョブをリクエストし、そして、そのマネージャーデーモに結果を戻す。
【0042】
これらの要素(エレメント)およびアルゴリズムの操作の詳細な説明は、以下に提供される。本明細書中で引用される全ての参考文献は、その全体が参考として援用される。
【0043】
(発明の詳細な説明)
開示の明確化のためであって、かつ、限定のためではなく、本発明の詳細な説明は、以下に続く小節に分割される。
【0044】
(定義)
別段定義されない限り、本明細書中で使用される、全ての専門用語および科学用語は、本明細書中において、本発明が属する分野の当業者によって通常理解されるものと同じ意味を有する。本明細書中で参照される、全ての、特許、特許出願、公開された特許出願、および他の刊行物は、それらの全体が参考として援用される。
【0045】
本明細書中で使用される場合、「a」または「an」は、「少なくとも1つ」または、「1つ以上」を意味する。
【0046】
本発明の目的について、別段示されない限り、「BLAST」とは、Altschulら,J.Mol.Biol.,215: 403−410(1990)(これらの全体が、本明細書中で参考として援用される)に記載の「Basic Local Alignment Search Tool」アルゴリズムに基づくアルゴリズムをいう。「NCBI BLAST」とは、BLASTアルゴリズムのNCBI(National Center for Biotechnology Information)版の実装のバージョン2.1.2をいい、これは、当該分野で周知である。
【0047】
本明細書中で使用される場合、「ノード」とは、計算ツリー(computational tree)または計算システムにおける別個のスポット(点)または位置をいう。ノードは、CPU、プロセッサもしくはマイクロプロセッサまたはそれらの機能部分、あるいはそれらの組み合わせであり得る。例えば、コンピューティングクラスタ(計算クラスタ)の状況において、ノードは、単一のコンピュータであり得、これは、1以上のプロセッサ(CPU)および個々に共用された他のハードウェア(例えば、メモリ(RAM)またはネットワークカードなど)からなる。
【0048】
本明細書中で使用される場合、「link_hsps」は、NCBI blastツールのサブルーチンをいう。各クエリー配列および各データベース配列について、このルーチンは、これらの2つの配列の間の、初期段階において計算されたHPSを連結し、これらの2つの配列がどの程度類似しているかを評価する。link_hspsの結果に基づいて、このプログラムは、ギャップ付きアライメントがこれらの配列ペアについて計算されるか否かを決定する。
【0049】
(クエリーパッキング)
BLASTにおいて、配列データベースにおける各クエリーの検索は、その検索を設定するために、計算上のオーバーヘッドを要求する。具体的には、ルックアップテーブルが、このクエリーに対して構築されることが必要とされる。いくつかのクエリーを1つの検索に対して連結することによって、1クエリー当たりの計算上のオーバーヘッドの量が低減され、そして、クエリー処理における全体の処理量は増大される。1つの実施形態において、このBLASTアルゴリズムは、複数のクエリー配列を、このデータベースの単一のスキャニングパスへと圧縮(パッキング)し、従って、複数の小さいなクエリーに対する処理時間を低減するが、一方で、同一の入力用クエリーについてNCBI BLASTで生成された結果と同一の結果を生成するように改変される。具体的には、このクエリールックアップテーブルは、「クエリー番号」と称される必要な索引と共に、いくつかのクエリーに由来する情報を含むように改変され、それぞれのクエリーとその情報を連結する。
【0050】
一体化型クエリーの結果が、それを構成するクエリーの個々の検索によって生成された結果と同一であることは重要である。同一の結果が生成されることを確認するために、各クエリーに対して序数を割り当てかつその序数をハッシュテーブルの記入項目に追加することによって、ハッシュテーブル生成が複数のクエリーに対するスキャニングと組み合わされる。さらに、全てのスキャン後の段階を実行するために、別個の検索構造体が、各クエリーに対して維持されており、そのスキャン後の段階としては、対角成分計算(例えば、ギャップのない伸長、ギャップ付伸長、およびアライメント)が挙げられる。
【0051】
この実施形態において、長さパラメータは、どれほど多くのクエリーデータが結合され得るかを決定するために使用され得る。BLASTの従来技術の実装においては、、メインループが、クエリーをインプットとして受信し、そして、イタレーション(反復)毎に1つのクエリーを処理していた。本実施形態において、このメインループは、一体型クエリーの全長が、長さパラメータに到達するか、またはそれを上回るまで、クエリーを結合する内部ループを有し、そしてデータベース検索をこの一体型クエリーを用いて実行するように改変されている。この一体型データベース検索の結果は、一体型クエリーの全てにおいて有意なワードマッチの全てを含む。次の工程は、HSPへとこれらのワードを伸長することを包含する。この工程の対角成分プロセシング(diagonal processing)は、クエリー特異的であり、そして、全ての対角成分計算は、この内部ループ内でクエリー毎に独立して実行される。
【0052】
1つの好ましい実施形態において、クエリー配列Qの各々およびデータベース配列Dの各々にとって、本発明の方法は、以下の処理工程を実行する。
1.閾値を幾分上回る、QおよびDの全てのローカルアライメントである、A1(Q,D),A2(Q,D)...,An(Q,D)を見つけ出す。
2.上位nのスコアの高いデータベース配列Dについて、全てのアライメントである、A1(Q,D),A2(Q,D)...,An(Q,D)を報告する。
【0053】
このBLASTに特定のものは、その内部工程であり、つまりアライメントを見出す工程である。BLASTヒューリスティックにとって重要であるのは、統計学的に有意なアライメントが、並置されたワードにおけるハイスコアペア(HSP)を含むという可能性があるというこである。このアルゴリズムはまずはじめに、クエリー配列とデータ配列との間の短く正確なマッチ(デフォルトの長さは、ヌクレオチドに対しては、11であり、タンパク質に対しては、3である)について検索する。このような一致は、ヒットと称される。次いで、これらのヒットは、はじめは、ギャップなしで伸長され、次いで、ギャップ付きで伸長され、そして、所定の閾値を越えるこれらのHSPが戻される。完全な伸長工程は、計算的には非常に負荷のかかるものであり、そして、BLASTは、統計的にHSPである可能性が高いそれらのペアについて完全なアライメントを計算することのみにより、不必要な計算を実行することを回避する。
【0054】
Paracel BLASTにおいて最適化されたこのアルゴリズムのうちの1つの部分は、は、ヒット生成が生じる方法である。ヒット生成のためのアルゴリズムは、以下である:
1.クエリーをプリプロセスし、以下のハッシュテーブルを生成する:
(nマー,nマーが存在するクエリーの位置)
2.このデータベース配列を検討し、そして、nマーの各々について、ハッシュテーブルにおけるそのnマーを調べる。このテーブルのインディックスにおける任意の位置が、ヒットである。
【0055】
例えば、このクエリーがMSLPTであると仮定する。従って、この3マーが、1)MSL、2)SLP、および3)LPTである。このハッシュテーブルは、表1に示される。従って、SLPを含むデータベース配列は、例えば、クエリーの第2位におけるヒットを生成する。
【0056】
【表1】
(表1 クエリーMSLPTについてのハッシュテーブル)
アミノ酸の3マー(AAA...YYY)の各々について、このテーブルは、3マーが存在するクエリー内のそれらの位置についてのエントリーを含む。例えば、MSLは、第1位で現れる。
【0057】
BLASTアルゴリズムのうちで最も「費用のかかる」(メモリを消費する)データ構造の1つは、上述のハッシュテーブルである。非常に高いレベルで、このアルゴリズムは、以下のようである:
1.ハッシュテーブルを配置(populate)する。
2.このハッシュテーブルにおけるヒットの各々に対して、さらなるプロセシングを実行する。
【0058】
NCBI BLASTコードは、このハッシュテーブルの任意の特別な管理をなんら行わない。Paracel BLASTは、このコードを再構築し、その結果、可能である何時においても、ハッシュテーブルが、プロセッサとメモリとの間を往来するのではなく、プロセッサのキャッシュにとどまる。このことは、このテーブル中の値をコードすることに幾分関連し、メモリの使用頻度および、従ってテーブルサイズを減少して、その結果、このテーブルは、そのキャッシュに対して最適化する。キャッシュアクセスは、メモリアクセスようりも有意に高速であるので、これは、実質的な速度の向上を生じる。
【0059】
(動的データベース分割)
先行技術において、検索されるべき大規模データベースは、静的に、いくつかのより小さいデータベースに分割され得た。しかし、このような設定は、BLAST検索全体が、これらのより小さいデータベースの各々に関して実施されることを要求し、これらの従属的な検索における結果を結合する静的で効果的な方法は、存在しない。本発明の1つの実施形態において、このBLASTアルゴリズムは、単一の大規模データベースに対する検索を分割して、複数のより小さいデータベースがサブセットを表すように構築することによって、その単一のデータベースのサブセットに対する複数の検索へと分割することを支援するように改変される。この実施形態において、この結果は、自動的に再結合され、分割することなしにこのデータベース全体を検索することによって生成されたレポートと生物学的に等価である単一のBLASTレポートへを作成する。この改変された方法は、本明細書中で「動的データベース分割」と呼ばれ、以下の4つの領域において、その基礎的なBLASTアルゴリズムに対する改変を必要とする:第1に、この静的パラメータは、正確な部分的結果を生成するように調整される必要がある。第2に、このデータベースにアクセスするのに使用される入力/出力ルーチンは、このデータベースのサブセットへのアクセスをサポートするように改変される必要がある。第3に、中間結果のメモリイメージが、生成される必要がある。第4に、これらのメモリイメージが、適切に再結合され、単一のひとつになったBLASTレポート生成する必要がある。
【0060】
BLASTは、データベースのサイズおよびこのデータベースにおける配列数を使用して、このデータベースの検索によって生成された結果の統計学的な有意性を計算する。一貫した結果に到達するために、検索される、塩基におけるサイズおよびデータベース全体の配列数は、特定されなければならない。BLASTの従来の実装は、コマンドライン引数(−z)を提供して、静的な計算において使用されるデータベース全体の塩基のサイズを特定していたが、配列全体の数を特定するための対応する方法を提供していなかった。本発明の1つの実施形態において、新規のコマンドラインオプション(−s)が、この番号を特定するために追加され、このオプションは、検索の間で、このコードによって参照される、このオプションのデータ構造に追加された。この実施形態において、静的パラメータを計算するコードは、このデータベース全体において含まれる実際の配列数によりはむしろ、この−sオプションの値を使用する。さらなる実施形態において、これらの−zおよび−sのパラメータの値は、別段提供されない限り、サブセット化されたデータベースのサイズ全体にもとづて自動的に計算される。
【0061】
1つの実施形態おいて、このBLASTアルゴリズムは、データベースのサブセットを検索するように改変された。さらなる実施形態において、このデータベースのサブセットは、以下の命名法を使用して特定され得る:「database#x−y」、ここで「database」は、データベース名であり、xは、検索において含まれる第1の序数ID(「OID」)であり、そして、yは、この検索において含まれる最後のOIDである。この実施形態において、OIDは、0からN−1の範囲に及び、ここで、Nは、このデータベースにおける配列数である。なおさらなる実施形態において、このデータベースのサブセットは、以下の命名法を使用して、特定され得る:「database#x−y#n」、ここで、nは、この特定されたサブセットにおける塩基数である。nが特定されないと、データベース全体のサイズが使用され、つまり、この数は、そのレポートにおけるサイズ情報にのみ影響する。
【0062】
この実施形態において、readdbサブルーチンにおけるメモリマップファイルの概念に基づき、NCBI BLASTコードは、塩基変化を反映するように改変され得、このサブルーチンは、indexfpファイル、headerfpファイル、およびsequencefpファイルを、基礎的なreaddbデータ構造体ReadDBFILEの中に含む。BLASTの従来技術型の実装は、mmap(2)UNIX(登録商標)システムコールまたはその等価物を使用して(Nlm_MemMapInitを呼び出すことにより)ファイル全体がマップされることを可能にするのみであった。この実施形態において、ここでは、3つまでのファイルの範囲が、これらのインディクスファイル(索引ファイル)における、ヘッダー、配列、および多義性(ambiguity)のセクションについて、マップされることを可能にする。この実施形態において、インディックスファイルが、readdb_new_intenalにおいて読まれると、はじめは、これは、メモリマップを全く使用することなしに、最初にオープンされる。一旦、このファイル中の配列数が決定されると、このインディクスファイルは、クローズされ、そして、特定されたメモリマップについての、2つ(タンパク質)または3つ(DNA)の範囲を用いてリオープンされる。OIDの範囲が使用されると、このヘッダーファイルおよび配列ファイルは、readdb_new_intenalによるReadDBFILE構造体において計算され、そして記憶される。その後、それらは、それらがReadDBOpenMHdrAndSeqFilesでオープンされたときに、このファイルの範囲のみをマップするのに使用される。
【0063】
1つの実施形態において、このBLASTアルゴリズムは、最終的なBLASTレポートのかわりに、出力として中間結果を生成するように改変される。この中間結果は、アライメントを生成する前の、blastallメインループにおける点において、動的データ構造体のメモリイメージの、順番に並べられたコピーである。この実施形態において、この点における動的データ構造体は、移動され、そして、各メモリブロックは、相対インディクスに対する絶対RAMアドレスから、記述されたメモリブロックへと変換される埋め込まれたポインタ(embedded pointer)情報にそって記憶される。この実施形態において、テキスト出力はこの段階においては生成されない。
【0064】
この実施形態において、「pbmerge」と呼ばれるプログラムが、上述のように、膨大なデータベースの複数の部分から中間的結果を読みとるために、そして、このメモリブロックのために動的メモリを割り当て、そして、埋め込まれたメモリレファレンスから、絶対RAMアドレスに対する相対インディクスに変換しも戻すことよって、それらを各々の等価なメモリイメージへと記述するために、書かれた。次いで、pbmergeプログラムは、複数の中間結果を、結果の単一のセットへと結合して、この結合した結果をスコアによってソートし、もっとスコアの低いアライメントを破棄し、リクエストされた数の最良のマッチを生じる。最終的に、pbmergeは、単一の結合されたBLASTレポートを出力として生成するために、上記のように、短く巡回する、blastallメインループの後端部分を実行する。
【0065】
(ハイスコアセグメントペアを連結する工程)
発明の背景で説明したように、実験的証拠によって、BLASTにおける計算時間の大半は、ヒットを伸長することによって、そして、特に、ギャップ付きの伸長を実施する場合に費やされることが実証されている。代表的な実装において、この工程は、link_hsps()と命名された関数によって行われる。発明の背景において説明した改良型をもってしても、BLASTの計算時間の有意な量が、なおも、link_hsps()において費やされている。この関数およびlink_hsps()のコンテキストは、以下に説明される:クエリー配列およびデータベースが与えられると、このデータベース中の配列Sの各々について、HSPのセットHをこの配列Sについて決定する。次いで、lnk_hsps()関数は、この配列SについてのHSPのセットHの統計学的有意性を推定し、統計学的有意性が予め決定された閾値を超えるとき、最も有意性のあるマッチのリストに配列Sを加える。一旦、これらの配列の全てが処理されると、BLASTは、最も有意性のあるマッチにおいてギャップ付き伸長を実施し、そして、そのアライメントを出力する。
【0066】
より詳細には、link_hsps()は、以下のアルゴリズムを実装する:(1)HSPのセットHから最もスコアの高い鎖Cを探し出し;(2)このCについての有意性を計算し;(3)HからCを取り除き;そして(4)Hが無くなるまで反復する。鎖Cについてのスコアは、以下のように計算される:k個のHSPの順列H1,H2,...,Hkからなり、ここで、Hiは、Hi+1よりも前であり、従って:
【0067】
【数1】
である。ここで、score(Hi)は、そのHSPのスコアであって、connect(Hi,Hi+1)は、2つのHSPを結合するためのペナルティである。最大スコア鎖Cの計算は、以下の観察に基づく計算学的有効な様式で実施され得る:S(H)を、HSP Hで終止する最も高いスコアの鎖とする。その結果として、この鎖において、Hは、先行する全てのH’のセットについて、
【0068】
【数2】
である。換言すると、Hで終止する鎖における最も高いスコアは、(その先行する部分のスコアにおける最大値)−(これらのそれぞれの結合ペナルティ)である。その結果として、全てのS(h)の値が、既に計算されていると、S(H)は、容易に計算されるということである。一般に、k個のHSP Hの鎖について、Hに先立つ O(k)HSPが存在し得る。この依存性は、図1において例示される。図1において、各ノードは、HSPを表す。鎖は、有向エッジ(directed edge)によって接続されるノードのセットである。ノードAが取り除かれるとき、ノードXは再計算される必要がある。しかし、CまたはDで終止する最良の鎖は変化せず、S(C)およびS(D)は、ノードAが取り除かれたときに再計算される必要がない。
【0069】
現在、BLASTの代表的な実装は、大規模ギャップ生成(large gap criterion)および小規模ギャップ生成(small gap criterion)として知られている、2つの結合関数を使用する。大規模ギャップ生成によって、おおきなギャップが形成され得、そして、この結合ペナルティをゼロ(0)に設定する。小規模ギャプ生成によって、予め決定されている定数Aを超えるギャップは許容されない。小規模ギャップ生成は、A以下のギャップについて、そのペナルティを0に設定し、Aを超えるギャップについて負の無限大であるとする。現行の実装は、S(h)の各々を計算するのに時間O(k)を必要とし、そして、Hで終る最高スコア鎖を見出すために時間O(k2)を必要とする。全ての鎖を見出すには、時間O(k3)がかかる。kがクエリー長に対して線形的に増大し、そして、BLASTアルゴリズムの残りのものは、固定されたデータベースについて、クエリー長対して線形的に増大するので、link_hsps()は長いクエリー配列においては実行時間のボトルネックになる。この適用において他で議論されるように、本発明の1つの実施形態は、「クエリーパッキング」を使用し、この「クエリーパッキング」はいくつかのクエリーを鎖状に繋いだものを含み、従って、クエリー長を増大させる。実験的証拠は、1Mbクエリーについて、計算時間の80%までが、link_hsps()関数を実行することに費やされ得ることを実証している。HSPのセットHにおいて、同一の開始要素(エレメント)を有するエレメントは、同じクラスの属している称される。上述のように、link_hsps()の1つの工程は、最も高いスコアの鎖Cを、HSPのセットHから取り出すことである。鎖のスコアを計算することは、この鎖における先行する点に依存する様式で、実行されるので、上述したように、HからCを取り出すことは、Hが存続している全てのC依存的なエレメントが再計算されることを要求している。定義によると、鎖における全てのHSPは、同じクラスに属している。鎖が取り除かれると、このクラスの全ての残りのエレメントは、再計算されることが必要とされる。2つの別個のギャップ基準を使用するBLASTの1つの実装において、Hにおける各エレメントは、別個の2つのクラスに属してており;1つの基準に対して最良の鎖は、別の基準における異なるクラスからのエレメントを含み得る。現行の実装において、1つの基準における最良の鎖を取り出すことは、全てのクラスの他の基準が再計算されることを必要とする。本発明の1つの実施形態において、link_hsps()の性能は、この種類の再計算を避けることよって改善される。
【0070】
HSPのセットH、2つのギャップ基準、およびHにおけるエレメント(要素)hが与えらると、link1(h)は、基準1に従った最も高いスコアの鎖におけるhに対するその前のHSPであり、そして、link2(h)は、基準2に従った最も高いスコアの鎖におけるhに対するその前のHSPであることを意味する。フォレスト(forest)F1は、それらの親(ペアレント)にように、link1(h)を有するサブツリーのセットとして定義される。同様にして、フォレストF2は、それらの親(ペアレント)として、link2(h)を有するサブツリーのセットとして定義される。一般に、F1におけるエレメント(要素)hが取り除かれると、hにおいてルートを有する部分ツリー(サブツリー)におけるHSPのみが、変化される必要がある。同様に、F1におけるエレメント(要素)hが取り除かれると、定義によれば、その鎖の中の全てのHSPは、F1の1つのツリーの中にある。hにおいてルートを有する部分ツリー(サブツリー)におけるHSPのみが、変化される必要があり;また、そのツリーのルートがまた取り除かれるので、そのツリーにおける残りのHSPは、再計算される必要がある。しかし、再計算が必要なHSPのセットは、必ずしも、F2について同じツリーにあるわけではない。本発明の1つの実施形態において、鎖全体が1度に全て取り除かれる代わりに、取り除かれる鎖の個々のエレメント(要素)は、個々に取り除かれ、同様にして、このエレメントのサブツリーも取り除かれる。
【0071】
再計算の後に、link_hsps()は、新しいツリー構造における最良の鎖を決定する。このプロセスに対する愚直なアプローチは、ツリーが変化したHSPの全てにアクセスすることが絡むということである。実験的な証拠によると、再計算を必要とするHSPの数は変化したHSPのわずかな部分であるという傾向があるので、このアプローチは、不必要に時間を消費することとなる。より効率的なアプローチでは、各HSPについてのスコアS(h)に基づき、フォレストにおける各ツリーについてヒープ使用する。このヒープによって、このツリーの最もスコアの高い鎖が、O(1)時間内に決定されることを可能にする。再計算を必要とするHSPのみがアクセスされるので、この総実行時間は、最も悪い場合で、O(rm0.5+rlogm)であり、そして、実際には、O(rlogm)であり、ここで、rは、再計算の数であり、mは、HSPの数である。実験的な証拠によって、rは、実際には、ほぼm1.5である。
【0072】
1つの例において、1.1Mbのクエリーを、650Mbの配列データベースに対して実行した。(米国の)全国バイオテクノロジー情報センター(「NCBI」)から利用可能であるBLASTの実装(バージョン2.1.2)は、実行に17時間を必要とした。対照的に、上述のようなlink_hsps()の改良型を使用したBLASTの実装は、同じ条件のもと3時間未満で完了した。
【0073】
上述したように、ハッシュテーブルにおける操作(ハッシュテーブルへの配置およびその繰り返し(looping over it)は、かなりの量の時間を費やす。これは、短いクエリーについては、特に、そのとおりであり、テーブルにおける僅かなエントリーのみが配置される。実際のところ、MegaBlastが多くの小さなクエリーに関してヌクレオチド対ヌクレオチドの検索をより速く提供するように開発された1つの理由は、Zhang,Z.,Schwartz,S.,Wagner,L.and Miller,W.,A greedy algorithm for aligning DNA sequences.Journal of Computational Biology,7(1−2):203−214(2000)(これらの全体は、本明細書において、参考として援用される)に記載されている。例えば、以下のようなウェブ上で利用可能ないくつかのスクリプトがまた存在する:クエリーを一緒に「パック」するスクリプト、例えば、クエリーと間で「留意しない」処理を付す(すなわち、ヌクレオチドについては、N、アミノ酸についてはX)スクリプト、単一の検索を実行して、得られた結果に後処理を行い、一体型クエリー内でオリジナルクエリーのオフセットに対して修正を加えるスクリプト。例えば、クエリーACTGおよびGCGCGが、ACTGNNNNNNNNNGCGCGとしてパックされ得る。留意しない点は、このクエリーに亘ってヒットが生じる可能性がないとすることである。MegaBlastおよびこれらのスクリプトにかかわる問題点は、精度(accuracy)が失われるといことであり、すなわち、その統計値は、単一の長いクエリーと多くの短いクエリーについて相違意味するということである。
【0074】
1つの好ましい実施形態に従って、Paracel BLAST Query Packing Algorithmは、速度の向上を伴って統計学的な妥当性を維持する。1つの実施形態において、このParacel BLAST Query Packing Algorithmは、同じ時間において複数のクエリーのハッシュを構築することによって動作する。位置のみを含むハッシュテーブルの代わりに、これは、(クエリー番号,クエリーにおける位置)という順列ペアを含む。例えば、表1は、クエリーQ1(ここで、Q1=MSLPT)がハッシュされたときに生成されたハッシュテーブルを含む。さらに仮定したときに、クエリーQ2=ALPTVおよびQ3=VMSLICがハッシュされる。この得られたハッシュテーブルは、表2で示される。
【0075】
(表2−クエリーMSLPT、ALPTV、およびVMSLICに対するクエリーパッキングハッシュテーブル)
【0076】
【表2】
この最適化は、このハッシュテーブルが配置される方法、およびヒットがハッシュテーブルから読み出される方法に対する改変を含み、ヒットにおける全てのそれに続く処理は、同一のままである。重要なのは、いくつかのクエリーのパックされたパイプラインからのデータを用いてこのハッシュテーブルに十分に配置し、その結果、このハッシュテーブルは、過剰なることなく相対的に満たされている。これによって、少数のクエリーセットの効率を、有意に、改善する。MegaBlastとは違って、この技術は、ヌクレオチドに加えて、アミノ酸のついても機能し、Paracel BLASTは、全ての改良型BLASTについて統計学的に正確に、より高速検索を実行し得る。
【0077】
(並列アーキテクチャにおける実装)
1つの実施形態において、上述のような改良を組み込んだBLASTアルゴリズムの実装は、Beowulf型並列処理アーキテクチャ上で実行される。この実施形態において、このマシンは、データベース検索を高速度のスループットで実行する。クエリーが受信されると、クエリーは、一体型クエリーサイズが予め決定された閾値に到達するまで、一体型クエリーへとパッキングされる。検索されるデータベースは、分割され、そして、このマシン上のプロセッサの各々は、このデータベースの特定の分割された部分についての一体型クエリー検索を取り扱う。好ましい実施形態において、このデータベースは、動的に分割され、各プロセッサは、ほぼ同じ時間の量での検索を完了する。各データベース検索の出力は、一体型クエリーにおいて、ヒットの各々とそのクエリーとを連結する情報にとともに、複数のヒットを含む。ヒットの各々についての対角成分計算は、クエリー特異的であるので、各クエリーのヒットは、link_hsps()を使用して別個に伸長される。1つの実施形態において、各クエリーのヒットは、別個のプロセッサー上で処理され得る。代替的な実施形態において、各クエリーのヒットは、このデータベース検索を実施するために使用される同一のプロセッサ上で伸長される。データベースの分割のために、全ての一体型クエリーのヒットが、見出され、そして、伸長されたとき、分割の中間結果が記憶される。最後には、全てのデータベース分割についての中間結果は、再結合されて、そして、最終的なBLASTレポートがこの一体型クエリーにおける各クエリーについて生成される。1つの好ましい実施形態において、このBlastMachineは、Beowulf型Linuxクラスターであり、マネージャーノードおよび複数のワーカーノードからなる(図2を参照のこと)。各ノードは、Paracel BLAST、すなわち、最適化したバージョンのNCBI BLASTを実行する。このマネージャーは、ジョブを分割してより小さな部分にし、それらの部分をワーカーに割り当て、それらの結果を回収し、そしてそれらの結果をクライアントに戻すことによって、クライアントBLASTリクエストに応答する。このシステムの多くの困難は、以下にさらに詳細に議論されているような局面(aspect)を、分割およびスケジュール管理することにある。わずか1個のCPUを有するBlastMachinesおよび92個ものCPUを有するBlastMachinesが構築された。1つの実施形態において、各ワーカーノードは、2CPU Pentium(登録商標) IIIシステムである。
【0078】
ジョブを分散させるときの、2つの性能に関連する問題は、1)負荷分散(load balancing)および2)キャッシングである。負荷分散を例示するために、単一のプロセッサで100分かかるジョブを50プロセッサに分散することを仮定する。各プロセッサの負荷が同等であるとすると、これらのジョブは、2分間かかる。あるいは、49のプロセッサが1分間を必要とする部分を受け取るとすると、最後のプロセッサが51分間を必要とする部分を受け取る。次いで、問題全体が、51分間かかるとすると、1つのCPUにおいて必要とされる時間は、大まかに半分である。乏しい負荷分散のために、このジョブが、どんな方法でも、プロセッサの数だけに基いて期待される、50倍近くの速度向上に到達し得ない。この種の異常な実情を改善するために、ジョブを可能な限り多くの部分に分割することが所望される。どの部分が最も時間を費やすかということを、先見的に知ることはできない(この時間の多くの部分が、ヒットの数に依存し、これは、検索を実行することなしには、知ることはできない)ので,より多くの部分に分割することによって、より速い部分がずっと速く完了することが可能され、従って、これらのプロセッサーは、残りの部分のために使用され得る。小部分の限界において、1つのジョブをこのような小部分へと分解して、それによって、プロセッサの数と同等の実際の速度向上を達成し得ることが望まれている。しかし、実際のところ、各部分に関連する、幾分少量のオーバーヘッドが存在し、そして、この分割がどれ程まで細かい単位であり得るかということに関しては限界が存在する。
【0079】
直接的なクエリー分割技術は、各クエリーを、その別個のサブジョブに分割することである。ついで、このような部分の各々は、BLASTアルゴリズムにおいてそれに続く工程で統計値を調整することを必要とせず、独立してスケジュール管理され、そして、異なるプロセッサーに配置され得る。各クエリー部分を独立してスケジュール管理する工程は、正確だが、最適ではないことがわかった。なぜならば、これが、上記のクエリーパッキングアルゴリズムによって提供される最適化したものを損なうためである。そのアルゴリズムは、いかに複数のクエリーが一緒にパックされ得ようとも、速度向上を達成する。そして、Paracel Blastマネージャーノードは、いくつかの分散工程(balancing)を実行し、一方で、そのマネージャーノードは、可能な限り細かく分割することを必要とし、より良好な付加分散を達成し、そして、より効率的な並列処理(parallelism)を使用し;他方で、そのマネージャーノードは、複数のクエリー配列を一緒に維持して、各部分における速度を最適化することを必要とする。待ち時間またはスループットについての重要性に依存して、かつ含まれるデータの特異性(specifics)に依存して、異なったストラテジーが使用され得る。これらのストラテジーは、以下に詳細に議論されている。
【0080】
上記で議論したように、Paracel Blastがクエリーを分割するのと同じ方法で、これは、データベースを分割し得る。1つの実施形態において、各データベースDおよび各クエリーQについて、このParacel BLASTアルゴリズムによって、QとDとの間のアライメントが見出される。しかし、問題点が存在する。アライメントを見出すために、そのデータベース全体における、サイズおよび配列数に依存する統計学的なカットオフが、使用される。1つの実施形態において、強化されたBLASTコードは、プロセスマネージャーアルゴリズムがその情報を各クエリー部分に渡すことを可能にする。アルゴリズムの第2の部分は、同じクエリー部分に対応する全てのデータベース部分を一緒にする。クエリーQの各々について、このアルゴリズムは、以下で詳細が説明されるように、MERGE(D1,D2,...,Dm)と呼ばれる関数にある上位nのデータベース配列を報告する。不運なことに、この一緒にする工程は、ネイティブNCBI BLASTの順位とは異なる順位を、時折生成し得え、これは、同じスコアを有するアライメントが、決定論的に(deterministically)ソートされないためである。しかし、結果の質は、同等であり、これは、統計学的に有効なものである。
【0081】
1つの実施形態において、マージ手順(合わせる手順)は、以下の通りである:データベース部分D1、D2、...、Dm、および各データベースについての上位n個のアライメントを与え、全体として、上位n個のアライメントを見つけ出す。好ましい実施形態において、クエリー分割およびデーターベース分割は、相互に独立しているので、両方の最適化は、同時に適用され得る。
【0082】
データーベース分割の1つの利点は、データベースが、そのノード上のRAMに適合するのに十分な小さい部分に分割され得ることである。これは、以下の2つの利点を提供する:
1.BLASTアルゴリズムは、データベースが、ディスクからまたはネットワークを超えてデータベースにアクセスするよりもむしろメモリー内にとどまり得る場合に有意により速い様な様式で、コードされ、そして
2.データベース(特に、大規模なもの)を移動し回ることは、コストがかかるので、マネージャーは、同じデータベース部分を同じプロセッサに割り当てるように試み、それによって、有意な速度改善を達成する。
【0083】
データベースキャッシュ処理もまた、優れた直線的スピードアップを可能にする。基本的に、(メモリーに実装するには大き過ぎるので)ディスクからデータベースをロードしなければならないジョブは、部分に分けられ得、ここで、各部分は、メモリーに実装するために十分に小さい。単一CPUについての合計時間は、(DBディスクアクセス)+(計算)となる。N個のCPUについて、総時間は、1/N(DB RAMアクセス)+(1/N)・(計算)になる。RAMアクセスがディスクアクセスよりずっと速いので、N個のCPUに対する合計時間は、1つのCPUに対についての時間の1/N未満であり、おそらくはそれよりずっと少なく、そして速度向上は、超直線的(super−linear)であり得る。
【0084】
この効果は、多くの部分に分けられる大きなジョブについて特に著しく、すなわち、第1の部分が、プロセッサの数によってナイーブに(naively)分割することに基づいたときに予期される速度と同じ速度で実行する。それに引き続く部分は、キャッシュされたデータベースを使用し得、そして、ずっと高速である。従って、全体のジョブ(より長いジョブについて)は、ディスクアクセス時間ではなく、RAMアクセス時間に向かう傾向がある。これは、ただ、Paracel Blastマネージャーが同じデータベースを使用する異なるサブジョブを同じプロセッサに割り当てることを試みるので、生じることに注意のこと。
【0085】
上記分割アルゴリズムが1セットのクエリー配列、または一体型クエリー、および複数の配列を含むデータベースに適用することが理解される。個々の配列は、代表的には、分割されない。しかし、利用可能なゲノム配列を用いて、個々の配列は、多くのメガ塩基長であり得る。1つの実施形態において、このような長い個々の配列を操作するために、Paracel Blastは、クエリーチョッピング(Query Chopping)と呼ばれるアルゴリズムを使用する。
【0086】
クエリーチョッピングを行うためのナイーブな方法は、長い配列を重なる部分に手動で分割し、そして図3に示されるように別々に各部分を実行する。これは、BLASTの内部へのアクセスなしで、スクリプトによってなされることさえあり得る。Paracel Blastのクエリーチョッピングは、重なりゾーンにおけるいくつかの潜在的な問題を正す点で、幾分より精巧である。
【0087】
図4を参照して、全てのHSPが生成された後、以下の3種類が存在する:重なり合わない領域に完全に含まれるHSP(HSP1)、重なり合う部分に完全に含まれるHSP(HSP2)、および重なり会う部分に部分的に含まれかつ重なり会わない部分に部分的に含まれるHSP(HSP3およびHSP4)。第1のクラスのHSPは、問題を呈しない。第2のクラスは、2回(左部分にて1回、右部分にて1回)見出される。それらを1回報告するのみという問題以外に、それらは、特別な問題を呈しない。第3のクラスは、少々厄介な問題である。
【0088】
他の全てに優先する設計上の目標は、チョッピングがなく、そして配列全体が全体として処理された場合に得られる結果と同じ結果を提供することである。図4に示されるように、一部重なりを有するが隣接する部分のなかで十分短く停止する任意のアライメント(例えば、HSP3)は、チョッピングが生じなかった場合に、その部分を十分に短く停止する。唯一の問題は、全体の重なりを含むまともなHSP(例えば、HSP4)である。このような(まれな)HSPは、チョッピングによって中断されるが、重なりの両端(実際には、特定の縁効果が存在するので、重なりのいくらかの距離内にある)でヒットするチョップされた配列において、HSPとして検出され得る。
【0089】
Paracel BLASTクエリーチョッピングアルゴリズムは、このようなHSPを検出し、そしてそのHSPに導く元のヒットに戻る。元のヒットは、チョップされないクエリーの状況でHSPに拡張される。この操作はコストがかかるが、これが非常にまれである(重なりに完全にわたるHSPが存在する場合にのみ存在する)ことを注意のこと。1つの好ましい実施形態において、Paracel BLASTは、10キロ塩基のデフォルトの重なりを使用し、そこで再計算するための時間は、代表的に、クエリーをより忠実に分割し、そしてそれを複数のプロセッサに請け負わせ得ることによって得られる節約と比較して、非常に短い。
【0090】
本発明の1つの実施形態において、Paracel BLASTは、マネージャーモジュールを含み、これは、ジョブを部分に分割し、各部分を最も利用可能なワーカー(例えば、プロセッサまたはCPU)に請け負わせ、次いで、部分を再結合する。このマネージメント機能を実行する際に、マネージャーモジュールは、特定の競合する束縛を考慮する。負荷分散の理由のため、できるだけ多くの部分に分割することが最適である。クエリーチョッピングおよびデータベース分割(マージ工程(あわせる工程)を有する)について、過剰な分割は、より多くのマージ(合わせること)を必要とし、従って、非能率的である。クエリー分割について、過剰な分割は、クエリーパッキングによって得られる効率を台無しにする。分割はまた、マシンの数を考慮すべきである。あまりにも少なすぎる部分への分割は、マシンをアイドリングさせ、一方、過剰の分割(マシンよりも多い部分への分割)は、負荷分散を改善することが望ましくあり得る。さらに、ディスクからネットワークを越えて、ワーカーのプロセッサにデータを移動する問題が存在する。十分に大きなデータベースについて、データの移動時間は、有意であり、計算時間を支配し得る。このような場合において、より少ない部分に分割することがより良好であり得る。Paracel BLASTは、これらのスケジューリング問題を扱う良好な(しかし、完全ではない)ジョブを実行するための1セットのヒューリスティックスを使用する。
【0091】
(実験結果)
上記改善は、独立にまたは集団的に観察され得る。以下に考察される実施例において、全てのBlastMachineノードは、他の特に述べない限り、2GBのRAMを有する、933MHzで実行するデュアル Pentium(登録商標) IIIプロセッサからなった。
【0092】
(コード最適化、ハッシュテーブルキャッシング、およびクエリーパッキング)
コード最適化の能力を実証するために、データ構造最適化、およびクエリーパッキング、ヒト第22染色体から取得した50,000の25マー(すなわち、合計1,250,000塩基)のクエリーデータセットを、NCBI(10,239配列、24,300,774塩基)からのヒト参照配列データベースに対して、実行した。933MHzにおいて実行する1つのCPU Pentium(登録商標) IIIシステムにおいて、NCBI BLASTは、3時間16分かかった。同じハードウェアにおいて、Paracel BLASTは、22分35秒かかった(8.7倍の速度向上)。
【0093】
(クエリー分割)
クエリー分割、それ自体は、待ち時間を改善し、スループットを改善しない。しかし、以下に考察されるシステムのベンチマークの全てにおいてある役割を果たす。
【0094】
(データベース分割)
Baylorからのヒト転写データベースの8分の1(5.6メガ塩基を含む10,610配列)を、ヒトアンサンブルデータベース(4.4ギガ塩基を含む30,445配列)に対して実行した。この検索は、実質的な量のメモリーを必要とした。実際、NCBI BLAST2.1.2を、単一のCPU Pentium(登録商標)IIIシステムランのメモリーのアウトで実行し、そして2週間後、失敗する。大規模メモリーにおいて、4CPU Alpha ES40システム、NCBI BLAST2.1.2は、214時間14分(ほぼ9日)で実行する。32CPU BlastMachineでは、同じ検索は、たった3時間17分で完了までで実行する。
【0095】
(クエリーチョッピング)
クエリーチョッピングの能力を説明するために、全てのヒトESTを、第22染色体に対して並置させた。使用されるたESTデータベースは、370万の配列を含み、合計1.8ギガ塩基である。第22染色体(Sanger Centreから入手される)は、34.6メガ塩基の単一の配列を含む。このサイズの問題は、代表的なLinux PCでのNCBI BLASTで実行され得ない(これは、すぐにメモリーをランアウトし、終わる)。Paracel BLASTのクエリーチョッピングを使用して、検索は、19分43秒で、8CPU BlastMachineで実行された。
【0096】
(C.elegansタンパク質 対 NR)
目的のいくつかの問題は、従来のコンピューターでの合理的な時間で完了され得ない。例えば、Wormpep19データベース(C.elegansからの830万ペプチドを含む19,105配列を含む)を、NRデータベース(NCBIからの非冗長タンパク質配列データベース)に対して検索した。NRは、1億8300万のペプチドを含む582,290配列を含む。Wormpep配列のうちの1つが単一の25,000ペプチドタンパク質であることが特に注記される。1CPUシステムにおいて、NCBI BLASTは、4日後に失敗した(おそらく、配列サイズに関連するメモリー問題に起因する)。Paracel BLASTを用いる32CPU BlastMachineにおいて、同じ検索は、1時間57分で完了まで実行した。
【0097】
(全てのヒトEST 対 全ての染色体)
現在までの最も大きな検索実行のうちの1つは、全てのヒトESTと全てのヒト染色体とのアライメントであった。上記のように、使用されたESTデータベースは、370万配列を含み、合計1.8ギガベースである。完全なセットのヒト染色体(UCSCから得られる)は、3,626配列を含み、合計3.3ギガベースである。この検索は、クエリーチョッピングなしでは可能でなく、そして上で網羅される他の最適化の全てなしでは、過度に遅い。48CPU BlastMachineでのParacel BLASTを用いて、85時間49分で完了まで実行された。現在、ESTおよび第22染色体を用いて実施されるような、本発明者らが、結果を詳細に分析し得るのに十分な、ヒト染色体の大部分の注釈が存在していない。
【0098】
(結論)
Paracel BlastMachineは、ゲノムスケールでの相同性検索のためのシステムである。相同性検索の感度および選択性を改善することに焦点を当てるよりもむしろ、以前に可能であったよりも速くそしてより大きなデータについての合理的に良好なジョブをすることを求める。Paracel BLASTは、問題を分割し、そしてできるだけ多くのノードにそれらを請け負わせる、多くの個々の最適化を組み合わせる。各ノードは、CPUをより効率的に使用するように最適化されたコードを実行する。クエリー分割、データベース分割、クエリーチョッピング、クエリーパッキング、データベースキャッシュ処理、ハッシュテーブルキャッシュ処理、およびアセンブリ最適化の組合せによって、BlastMachineが、デスクトップコンピューターよりも、2〜3桁速くなる(実際の数は、問題、およびこれらの最適化が開発され得る程度に依存する)。
【0099】
アルゴリズムの全てがユーザーに対して透過性である。ユーザーは、GUIまたはコマンドラインを介してBLASTジョブを入力し、そしてソフトウェアは、自動的に、ユーザのさらなる介入なしで全ての適用可能な最適化を適用する。BlastMachineは、数週ではなく、数時間でゲノムスケールの問題を解決する(例えば、ヒト転写データベースとヒトアンサンブルデーターベースとの比較は、NCBI BLAST2.1.2を実行するAlphaシステムでの9日間と比較して、BlastMachineでたった3時間かかった)。さらに、Paracel BLASTは、特定のジョブを自動的に管理可能な部分に分割し、そして従って、他のアーキテクチャー(例えば、全てのヒトESTを染色体に配置する)では失敗するような検索を完了するように実行する。さらに多くのゲノムスケールのデータセットが利用可能になるにつれて、本発明者らは、この種の最適化ツールが、大規模なデータ分析およびマイニングについてに有用性は増大する。
【0100】
本発明は、本発明の精神または必須の特徴から逸脱することなく、他の特定の形態で具体化され得る。従って、上記実施形態は、本明細書中に記載される本発明を限定するというよりもむしろ、本発明の例示の全ての局面において考慮されべきである。従って、本発明の範囲は、上記記載によってよりもむしろ、添付の特許請求の範囲によって示され、そして従って、特許請求の範囲に等価な意味および範囲に入る全ての改変は、そのなかに含まれると意図される。さらに、本明細書中に記載される改善が、DNAおよびペプチドのような生物学的情報の配列に制限されず、任意の種の文字列検索に適用可能であることが企図される。
【図面の簡単な説明】
【0101】
【図1】図1は、ハイスコアセグメントペアを表す有向閉路グラフを提供する。
【図2】図2は、本発明の1つの実施形態に従う、BlastMachineシステムアーキテクチャの高レベルのブロックダイアグラムを例示する。
【図3】図3は、クエリーチョッピングの図式的表現を例示し、ここで、オリジナルクエリーは、重なりのある(オーバーラップ)サブクエリーへと切断(チョップ)され、これは、次いで、本発明の実施形態に従って、分散され得る。
【図4】図4は、本発明の1つの実施形態に従って、様々なHSPのタイプをクエリーチョッピングすることの図式表現を例示する。
【0001】
(関連出願)
本出願は、「Method and Apparatus for High−Speed Approximate Sub−String Searches」と題する米国仮特許出願第60/288,465号(2001年5月4日出願)(この全体は、本明細書中にて参考として援用される)の優先権の利益を、米国特許法第119条(e)項に基づき主張する。
【0002】
(発明の分野)
本発明は、文字列検索に関連し、より具体的には、コンピュータに実装された、データベースの文字列検索に関する。
【背景技術】
【0003】
(発明の背景)
核酸(例えば、DNA)またはタンパク質の新規の並びが配列決定されると、その配列は、代表的には、既知の、DNA情報およびタンパク質情報のデータベースに対して比較され、この新規DNAまたは新規タンパク質の機能の予備的な表示を提供する。次いで、研究者は、このデータベース検索の結果を評価するための実験を設計し得る。
【0004】
DNA配列決定技術の甚大な改善の結果として、DNAデータベースの増大する速度は、1989年の1年間当たり150万ヌクレオチドから1999年の1年間当たり16億を超えるヌクレオチドへと、最近の10年に亘って指数関数的に増大した。1999年以降、ショウジョウバエ、マウス、およびヒトのゲノムを含む全ゲノムが、配列決定されている。既知の遺伝的配列情報の量が指数関数的に増大するに従って、この増えつつある配列データベースを検索するための高速な方法の開発がますます重要なものとなった。
【0005】
例えば、ゲノム情報の公的な集積機関である、GenBankは、現在、おおよそ、16GBのデータを所有している。これは、1982年において680Kにすぎなかったものから増大している(Bensonら,Nucleic Acids Research,28(1:15−18(2000)(www.ncbi.nlm.nih.gov/Genbank/genbankstats.htmlもまた参照のこと))。この速度では、データ量は、16.5ヶ月毎に2倍となる。2001年だけでも、総計3GBに及ぶ350万配列の新規配列が、GenBankに入力された。公開配列決定設備または専用配列決定設備の両方とも、24時間体制でデータを生成するウェアハウス標準のファクトリーからなり、これは、試薬の利用および配列決定機器の速度にのみ制限される。
【0006】
より多くの配列データが利用可能になると、最も根本的な問題の1つは、配列アライメント(すなわち、新たに発見された、ヌクレオチド配列またはアミノ酸配列が、それまでに既知でありかつ研究されているデータとどのような関係にあるかということ)である。いずれにしても、配列データ量が2倍になると、可能な比較の数は、4倍になるということに留意されたい。従って、おおよそ同じ時間経過で、コンピュータ速度が指数関数的に倍加する同様の印象があったとしても、配列比較アルゴリズムは、利用可能なデータの中いずれの有意な部分についての相同性を見出す能力において、ますます遅れをとっている。
【0007】
相同性検索における現在の研究の多くは、より感度が高くかつより選択的であるアルゴリズムに集中しており、このアルゴリズムは、偽陽性および偽陰性の割合を低減するため、換言すると、微弱な相同性(例えば、遠縁の2つの生物の遺伝子)を正確に同定するため、例えば、以下に記載される、隠れマルコフモデルにような精巧な技術を使用するアルゴリズムである:Eddy、「Profile Hidden Markov Models」、Bioinformatics,14(9):755〜763(1998)(この全体は、本明細書中で参考として援用される)。このようなアルゴリズムは、利用可能なデータから最大量の情報を得ることのより高いレベルを求め、そして、おおいに研究的に興味深い。本発明は、異なった路線をとる。多くの用途について、既存のアルゴリズムは、十分良好である。特に、アルゴリズムにおけるBLAST(Basic Local Alignment Search Tool)ファミリ(NCBIにより開発された)は、殆どの検索に対して十分に感度が高く、かつ選択的である。例えば、Altschulら,「Gapped BLAST and PSI−BLAST:new generation of protein database search programs」,Nucleic Acids Research,25(17):389−3402(1997)(この全体は、本明細書中で参考として援用される))を参照のこと。
【0008】
(BLAST(Basic Local Alignment Search Tool))
現在、高速データベースの最も一般的な方法は、Altschulら,J.Mol.Biol.,215(3):403−10(1990)(この全体が、本明細書中で参考として援用される)に記載されたBLAST(Basic Local Alignment Search Tool)の改良型である。BLASTおよびその改良型は、高速な、配列のローカルアライメント(局所的アライメント)を提供する。BLASTプログラムは、タンパク質またはDNAのクエリー(問合せ配列)と、タンパク質またはDNAのデータベースとを、任意の組み合わせで比較するように記述されており、ここで、DNA配列は、これらの任意の比較が実行される前に、概念上の翻訳をしばしば受ける。
【0009】
BLASTは、類似性の指標を最適化することを試みるヒューリスティック(発見的)なものである。具体的に、BLASTは、ランダムなアライメントとは統計学的に区別され得る類似性のある全ての局所領域(ハイスコアセグメントペア(High−scoring Segment Pair)(HSP)と呼ばれる)を同定する。BLASTは、「閾値」パラメータであるTを設定することによって、速度と感度との間の折り合いを可能にする。より高い値のTによって、より高速となるが、また、微弱な類似性を取りこぼす可能性も増大させる。このBLASTプログラムは、クエリーの長さと検索されるデータベースの積に比例して時間を必要とする。
【0010】
BLASTアルゴリズムの中心的な概念は、統計的に有意なアライメントは並置されたワードのHSPを含む可能性が高いということである。BLASTは、まずはじめに、このクエリー配列内のいくつかのワードと並置されたときに少なくともTのスコアを持つワード(例えば、タンパク質に対して3、DNAについて12のワード)についてデータベースをスキャンする。この条件を満たす並置された任意のワードペアは、「ヒット」と呼ばれる。このアルゴリズムの第2の工程によって、各ヒットが、アライメントの中に報告されるのに十分なスコアで存在するか否かを評価される。これは、実行中のアライメントのスコアがそれまでに得た最大値からXよりも低下するまで、両方向へヒットを伸長させていくことにより実行される。
【0011】
その殆どの基本的な実装において、このBLASTアルゴリズムは、以下の3つの工程を実行する:(1)クエリー配列から長さwの高いスコアのワードのリストをコンパイルし;(2)データベース中の配列の各々に対して、閾値Tよりも高いスコアを有するワードヒット(すなわち、データベースの配列の中のワードと一致するクエリー配列に由来するワード)をスキャンし;(3)ワードヒットの各々について、S以上のスコアのハイスコアペア(HSP)を形成するように両方向にワードヒットを伸長していく。以下のパラグラフで、これらの工程を詳細に説明する。
【0012】
代表的なBLASTの実装において、ハイスコアワードのリストがi行×j列のルックアップテーブルの中に作成され、ここで、iは、長さwの可能なワードの全ての数であり、そして、jは、(クエリー配列におけるエレメントの数)−wである。値iは、長さwの全ての可能なワードを表すので、このルックアップテーブルにおける行の各々は、長さwの1つのワードに対応する。この行番号は、その対応するワードの字句順序(lexical order)に対応し、そして、これはそのワードに関する「行番号」とみなされ得る。DNA配列に関して、i=4wであり;タンパク質配列に関して、i=20wである。このj値は、クエリー配列の中の、長さwであるワードの開始位置の番号を表す。このルックアップテーブルは、全て0として初期化され、次いで、以下のように配置(populate)される:クエリー中の長さwのワードそれぞれについて、その対応する行を参照する。この行xを呼びだす。クエリー配列yにおけるワードの位置を呼び出す。このルックアップテーブルの(x,y)要素をyに設定する。一旦、このルックアップテーブルが配置されると、次いで、取り除かれる(trim)。全て0を有する行は、クエリーにおいて存在しないワードを表すので、取り除かれる。次いで、残りのワードは、それらのワードを調べてこれらのセルフ類似性スコアが最小閾値Tを満たすか否かを判断することによって、有意性についてスクリーニングされる。類似性スコアは、代表的には、以下に記載されるような置換マトリックス(例えば、PAM120およびBLOSUM62)を使用して計算される:Dayhoffら,Atlas of Protein Sequence and Structure,Vol.5,Suppl.3,Ed.M.O.Dayhoff(1978);Henikoff and Henikoff,Proc.Natl.Acad Sci.USA,89:10915−10519(1992);ならびにHenikoffおよびHenikoff,Proteins,17:49−61(1993)。これらの刊行物は、本明細書中において、参考としてその全体が援用される。T未満のセルフスコアを有するワードを表す行は、削除される。最終的に、ゼロ(0)を有する全ての列が取り除かれる。得られたルックアップテーブルは、有意なワードの字句ワード数(lexical word number)によって、索引付けされ、そして、クエリー配列における有意なワードの位置を戻す。
【0013】
BLASTはヒューリスティックアルゴリズムであり、そして、wおよびTの値は、感度、特異性、および速度の最適な組み合わせについて選択される。所定値Tについてwが増加すると、特異性は向上するが、感度は低下する。同様に、所定値wについてTが減少すると、感度は向上するが、特異性は低下し、実行時間は増大する。wおよびTの例示的な設定は、タンパク質について、w=4、T=17であり、DNAについては、w=12,T=60である。
【0014】
一旦、このルックアップテーブルが構築されると、これは、クエリー配列をこのデータベースに対して比較するために使用される。具体的には、このデータベースは、そのセルフスコアは閾値Tよりも高いクエリー配列の中に存在する長さwの全てのワードに対して検索される。従って、見出された全てのワードは、「ヒット」と称される。データベース検索の出力(アウトプット)は、ヒットのリストを含む。このデータベースが反復して検索されるので、このデータベースは、クエリー配列に対して生成されたルックアップテーブルに類似の、ルックアップテーブルへと前処理される。従って、この検索プロセスは、2つのルックアップテーブルを比較することによって、迅速に実施され得る。
【0015】
この最終工程は、各ヒットを伸長させてハイスコアセグメントペア(HSP)を形成することである。代表的には、このヒットは、クエリー配列およびデータベース配列の対応する並び(ストレッチ)の間の類似性スコアが予め決定した閾値S未満に低下するまで、両方向に伸長される。代表的なBLAST実装の出力は、このデータベースにおいて見出されたヒットの記述を含む。ヒットの各々に対して、この出力は、ヒットが現れた配列についての情報、そのヒットのビットスコア、与えられたHSPが偶然に見出される確率、およびE値(これは、この与えられたスコアに関して、このサイズのデータベースにおいて偶然に見出されたと期待される一致の数の指標である)を含む。
【0016】
(BLASTにおける以前の改良)
BLASTアルゴリズムの実装は、このアルゴリズムが最初に導入されたとき以来、改良を受けている。3つの主要な改良として、ヒット伸長のための「ツー・ヒット(two−hit)」法、ギャップ付きアライメントを生成する能力、および微弱であるが生物学的に関連性にある配列類似性に対して多くの場合においてより感度が高い「PSI−BLAST(Position−Specific iterated BLAST)」が挙げられる。これらの改良型は、例えば、Altschul,「Gapped BLAST and PSI−BLAST:a new generation of protein database search programs」,Nucleic Acids Research,25(17):3389〜3402(1997)に詳細に説明されている。
【0017】
オリジナルのBLASTの実装の性能データは、その伸長工程(ここでは、ヒットが伸長されてHSPを生成する)が処理時間の最大量を費やしたことを示している。ヒットの伸長のための「ツー・ヒット」法は、この工程における改良であり、この改良によって、費やす時間がずっと短い伸長工程が作り出される。実験的証拠によって、目的とする代表的なHSPは、単独のワードペアよりもずっと長く、それに従って、同じ対角線(diagonal)上で互いに比較的短い距離内に複数のヒットを含み得ることが示されている。このツー・ヒット法は、伸長が始まる前に、同じ対角線上にあり、かつ互いに距離Aの内にある、2つの重なっていないワードペアの存在を必要とすることによって、この観察結果を利用する。最も新しいヒット(the most recent one)と重なっているヒットは全て、無視される。この方法は、伸長をすすめるために1つのヒットではなく、2つのヒットを必要とするので、この閾値パラメーターTは、同等の感度を保持するほど低くなければならない。この効果は、多くの単独のヒットが見出されるが、少数の部分のみが、伸長を引き起こす同一の対角成分上において随伴する第2のヒットを有するということである。従って、ヒットのかなり多くの部分は、適切な対角成分について、最も近いヒットの座標(coordinate)を調べ、その最も近いヒットが、そのときのヒットの座標から距離A内にあるか否かを評価し、そして、最後に、新しい座標でこの座標を置換するという僅かな計算の後に、簡単に処理を終了し得る。経験的に、少ない伸長を必要とすることによって省かれる計算量によって、より多くのヒット数を処理するために必要とされる余分な計算量が相殺される。
【0018】
この伸長工程を実施する別の方法が、例えば、以下に記載されている:「Multiple sequence alignment using block chaining」、Zheng Zhang,博士論文,The Pennsylvania State University,UMI Dissertation Services,Ann Arbor(1996);およびZhangら、「Chaining multiple−alignment blocks」,J.of Computational Biology,1:217− 226(1994)。この方法は、有向閉路グラフに関する古典的な最適経路アルゴリズムの特別な場合である、「ブロック連鎖」として知られているコンピュータ科学の既知のクラスの問題に対する伸長工程の類似性に基づいている。上述の方法は、K−Dツリーと称されるより高い次元の計算幾何学の周知の技術を採用する。一般的に、K−Dツリーは、セルが、過剰の入力オブジェクト含まないように、相対的に小さい数のセルへと多次元空間を階層的に分解するために使用される(Bentley,Communications of the ACM,18:509−517,(1975)(これの全体が、本明細書中で参考として援用される)を参照のこと)。Zhangにおいて、K−Dツリーを使用して、可能なブロック鎖の空間を領域へと分解するのに使用され、従って、このブロック連鎖問題を、連鎖領域(chaining region)の計算機的にはそれ程負荷がかからない問題へと単純な形にする。K−Dツリーの使用によって、複数の配列比較(すなわち、2つを超える配列が、互い比較される)にとって有意な計算的利得を提供する。
【0019】
ギャップ付きアライメントを生成する能力によって、BLAST性能における有意な改良が可能となる。オリジナルBLASTプログラムは、一緒に考えた場合のみにおいて、統計学的に有意な単独のデータベース配列を含むいくつかのアライメントをしばしば見出す。これらのアライメントのうちの任意の1つを見落とすことによって、全てを含めた結果に支障をきたす。ギャップ付きアライメントを生成するためのアルゴリズムを導入することによって、有意な全てを含めた結果において、部分的にまとめられたギャップなしのアライメントよりもただ1つののみを見出すことが必然となる。これによって、パラメータTが上昇することを可能にし、初期データベーススキャンの速度を向上させる。ギャップ付きアライメントを生成する1つの方法は、ヒューリスティックアプローチ(これは、HSPを構築するためのBLAST法におけるありふれた生成法である)を使用する。このアプローチの中心的な概念は、50データベース配列ごとに、おおよそ1を超えない伸長が生じるように選択した、中程度のスコアSgを超える任意のHSPについてギャップ付きの伸長を引き起こすことである。統計学的な分析によって、Sgが、代表的な長さのタンパク質クエリーに対して約22ビットで設定されるべきであることが示されている。ギャップ付き伸長は、ギャップのない伸長よりも長く実行するための時間を必要とするが、極少数のギャップ付き伸長を実行することによって、ギャップ付き伸長が費やす、総実行時間に占めるその割合は比較的に低く押さえら得る。さらに、ギャップのないアライメントのコレクションというよりも、単一のギャップ付きアライメントを探索することによって、構成するHSPのうちの1つのみが、首尾よく生成された総合した結果について位置付けられる必要がある。これは、任意の単一の中程度のスコアをもつHSPを失う可能性がずっと高いことを、許容され得ることを意味する。これによって、このアルゴリズムのヒットステージについてのパラメータを実質的に上昇させることを可能にするが、他方、匹敵する感度を保持している。例えば、Tは、オリジナルBLAST実装の1ヒットヒューリスティックに関して、11〜13に向上した。
【0020】
位置特異的スコアマトリクス(プロファイルまたはモチーフとして知られている)に対してBLASTを反復適用することによって、微弱であるが、生物学的に有意な関係がかなり頻繁に検出されるデータベース検索が可能となる。PSI−BLASTと称される位置特異的であって、反復されるBLASTの1つの実装は、最初のBLAST実行の出力から位置特異的スコアマトリックスを構築し、その後のBLAST実行のためのクエリーとしてそのマトリックスを使用する。
【0021】
いくつかの精緻化が、BLASTの現行の実装の、その速度、感度、および特異性を、そのオリジナルと比較したときに3倍を超えるまで向上させてきたが、配列データベースの増大の指数関数的な速度は、このアルゴリズムの実装に対しての絶え間ない改善を必要としている。
【0022】
(並列処理)
大規模データベース検索を高速化するための1つのアプローチは、並列処理を使用することである。高性能並列計算(ハイパフォーマンスパラレルコンピューティング)は、複数のプロセッサにまたがって、大規模で複雑なタスクを分割することによって達成される。1つの単純な例として、配列データベースは、いくつかの部分(パート)へと細分化され得、各部分は、特定の処理単位へと割り当てられ得る。次いで、同じクエリーが、同時に、全ての処理単位において実行され得、各処理単位は、そのデータベースの一部分のみを検索する必要がある。より複雑な例として、タスクがサブタスクに分割される。例えば、BLASTにおける伸長工程は、HSPの選択的な鎖について膨大な吟味を必要としている。この例においては、可能な鎖の空間は、複数の部分空間に細分化され、そして、部分空間の各々は、別個のプロセッサに割り当てられる。
【0023】
様々な方法を使用して、複数の計算機(コンピュータ)における効率の改善が達成され得るが、並列処理を組織化し、かつそれを調整する最も一般的な方法は、目前にある問題を自動的に分解し、そして、プロセッサが、これらの作業を実行している間に、必要とされる場合に相互通信することを可能にするコードを記述することである。上記の第1の例において、プロセッサが、データベースの部分において、クエリーに対するマッチ(一致)を見出すと、このプロセッサは、それらの検索を実行している他のプロセッサに、そのイベントを信号で送信し得る。上記に第2の例において、プロセッサが新たな最大スコアを見出した場合に、そのプロセッサは、そのイベントを信号で送信し得、その結果、他のプロセッサは、それらの閾値を上昇させる。
【0024】
並列処理の殆どのアプリケーションは、通常、プロセッサ間である程度の相互作用を必要とし、したがって、それらのプロセッサは、情報を交換するために相互に通信し得なければならない。例えば、マップ上のセルに対する値は、それらの最近接セルの値に依存し得る。このマップが2つの部分に分解されるとき、各々は、別個のCPU上で処理され、このプロセッサは、セル値を、そのマップの隣接エッジにおけるセル値と交換しなければならない。同様に、配列アライメントがいくつかのローカルアライメントに分解される場合、各ローカルアライメントを取り扱うプロセッサの各々は、その元の境界を越えてアライメントを伸長させるために、隣接するアライメントを取り扱うプロセッサと通信し得なければならない。
【0025】
並列処理に対するいくつかの対照的なアプローチが存在する。例えば、並列処理は、高度に専用化したハードウェアまたは商用既製(commercial off−the−shelf;COTS)ハードウェア上にて実施され得る。BLASTおよび他の配列比較およびデータベース検索のアルゴリズムアルゴリズムは、高度に専用化した、並列処理ハードウェア(例えば、PARACEL’S GENE MATCHERマシン)において実装されている。Ullnerの米国特許第6,112,288号(この全体が、本明細書中で参考として援用される)に記載されるように、PARACEL製GENE MATCHERは、プログラム可能な特別目的のパイプラインプロセシングシステムを使用し、このシステムは、複数のアクセラレータチップを直列接続して備える。このアクセラレータチップの各々は、インストラクションプロセッサを備える。このパイプラインプロセッサセグメントの各々は、複数のパイプラインプロセッサを直列接続して備える。このように専用ハードウェアは、有意な速度向上を提供し得、特に、ダイナミックプログラミング(DP)アルゴリズムに関して有意な速度向上を提供し得る。
【0026】
この専用ハードウェアアプローチと対照的なのは、コモディティ並列処理アプローチであり、これは、安価な商用既製(「COTS」)ハードウェアを使用する。コモディティ並列処理にとって一般に普及しているアプローチは、以下に説明されるようなBeowulfクラスタである:Beckerら,Beowulf:A Parallel Workstation for Scientific Computation.Proceedings,International Conference on Parallel Processing(1995);およびM.S.Warrenら,Parallel supercomputing with commodity comporaents;H.R.Arabnia編,Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications(PDPTA’97),1372−1381頁,1997(これらの刊行物は、本明細書中で、それらの全体が参考として援用される)。Beowulf型クラスタは、専用高速ネットワークによって相互接続されたコモディティハードウェアコンポーネント(LinuxまたはFreeBSDのようなフリーソフトウェアである基本ソフト(OS)を動作させる)から主に構築される、高性能の、大規模並列計算機である。代表的なBeowulf型クラスタは、ハイパフォーマンスコンピューティングタスクの実行専用の、複数の相互接続した、PCまたはワークステーションを備える。これは、通常、シングルノードのみを介して、外部と接続されている。代表的なBeowulf型クラスタは、メッセージパッシングと称されるプロセッサ間通信の一般に普及している方法を使用する。メッセージパッシングの一般に普及している実装は、「PVM(Parallel Virtual Machine)」および「MPI(Message Passing Interface)」を含む。
【発明の開示】
【発明が解決しようとする課題】
【0027】
コモディティ並列処理ハードウェアは、妥当なコストでかなりの性能を提供し、かつ、指数関数的なデータベースの増大がデータベース検索における実質的な改良を必要としているために、コモディティ並列処理ハードウェア上のBLASTアルゴリズムの性能を向上させるようにBLASTアルゴリズムを改良する必要性が存在する。
【課題を解決するための手段】
【0028】
(発明の要旨)
本発明は、単一のデスクトッププロセッサにより実行される従来型のBlastアルゴリズムよりも2桁から3桁の規模で、より高速である改良型BLASTアルゴリズムを実装するための一体型(combined)ハードウェア−ソフトウェアシステムを使用する、方法およびシステムを提供することによって、上記の要求および他の要求に取り組む。本発明システムのソフトウェアコンポーネントは、本明細書中において、Paracel BLASTと称され、そしてそのハードウェアコンポーネントは、本明細書中において、Paracel BlastMachineとして称される。本明細書中で教示される技術に従って、このBlastMachine上でのParacel BLASTによって、ゲノム規模のデータセットの操作が可能であり得る。アルゴリズム的な改良および並列ハードウェアアーキテクチャによって、このBlastMachineが、他の技術を用いて解決可能な問題よりも、重大で大きな問題を解決することを可能とする。1つの実施形態において、このシステムは、ゲノムの第1のパス分析について十分適しており、これにより、その後の段階における、より精巧な遅いアルゴリズムおよび手動による介入を可能にして、この第1のパスが残していたギャップを満たすことを可能にする。
【0029】
1つの局面において、本発明は、データベース検索を並列化するために、動的データベース分割を実行するための、構造体おひよび方法を提供する。
【0030】
別の局面において、本発明は、単一のデータベース検索に対して複数のクエリーを併用するための、構造体および方法を提供する。
【0031】
別の局面において、本発明は、クエリー配列とデータベース配列との間のより長いマッチを生成するためのハイスコアセグメントペアの十分な、連結および伸長のための構造体および方法を提供する。
【0032】
1つの特定の実施形態において、本発明は、配列データベースに対して複数のクエリー配列を比較する為の方法に関し、この方法は、以下の工程を包含する:(a)複数のクエリー配列を、一体型クエリー配列に結合する工程;(b)上記データベースの複数の下位区分を決定する工程;(c)複数の検索を実施する工程であって、ここで、各検索は、上記データベースの複数の下位区分のうちの1つに対して一体型クエリー配列の比較を含む工程であって、これによって、複数のワードマッチを生成した工程;(d)工程(c)において生成された複数のワードマッチの長さを伸長する工程であって、複数のハイスコアセグメントペアを生成する工程;(e)上記の複数のハイスコアセグメントペアを結合する工程;および(f)複数のレーポートを作成する工程であって、各レポートは、複数のクエリー配列の1つに対する最もスコアの高いマッチ(一致)を示す工程。
【0033】
複数の配列は、任意の方法による一体型クエリー配列へと結合され得る。例えば、本発明の方法の工程(a)において、複数に配列は、クエリールックアップテーブルに複数の配列を記憶すること、およびクエリー番号で上記配列の各々について索引作成し、それぞれのクエリー番号と上記の各配列を連結することによって、一体型クエリーに結合される。この結合プロセスは、任意の適切なパラメータ(例えば、長さパラメーター)を使用して、制御またはモニターされ得る。より具体的には、複数の配列は、上記テーブルに記憶されたデータ量が予め決定されていた制限値に達するまで、クエリールックアップテーブルにおいて記憶され得る。別の例において、本発明の方法の工程(a)において、複数の配列は、同時に複数のクエリーのハッシュを構築することによって、結合され得る。
【0034】
このデータベースは、任意の適切な方法によって、複数の下位区分に分割され得る。例えば、このデータベースの複数の下位区分を決定する工程は、塩基数、および上記のデータベース中の配列の数で、上記のデータベースのサイズを特定して、このデータベースを検索することによって生成される結果に関する統計的に有意な値を計算する工程を包含する。他の例において、このデータベースは、BLASTアルゴリズムに対して1以上の、以下の改変を行うことによって複数の下位区分に分割され得る:(i)基礎的なBLASTアルゴリズムの少なくとも1つの統計学的パラメーターは、正しい部分的な結果を生成するように調整され;(ii)データベースにアクセスするための基礎的なBLASTアルゴリズムにおいて使用される入力/出力ルーチンのうちの少なくとも1つが、データベースのサブセットにアクセスすることを支援するように改変され;(iii)中間結果の複数のメモリイメージ(memory image)が生成され;そして/または(iv)このメモリイメージが再結合されて、単一の結合されたBLASTレポートを作成する。特定の実施形態において、この基礎的なBLASTアルゴリズムは、データベースのサイズおよびこのデータベース中の配列数の両方を特定して、このデータベースを検索することによって生成された結果の統計学的な有意性を計算するように調整される。別の特定の実施例において、コマンドラインで引数(−z)を使用して、このデータベース全体の塩基のサイズを特定し、そして、コマンドラインオプション(−s)を使用して、このデータベースにおける配列全体の数を特定する。パラメータ−zおよび−sに関する値は、これらの値が別段提供されない場合は、サブセット化されたデータベースのサイズ全体に基づいて自動的に計算される。このデータベースはまた、このデータベースの対象(subject)の開始を示す第1の序数(ordinal)ID(X)を特定することによって、そして、このデータベースの対象の終端を示す第2の序数ID(y)を特定することによって、複数の下位区分に分割され得、ここで、上記第1の序数IDは、0〜N−1の範囲に及び、ここで、Nは、データベース中の配列数である。このデータベースは、任意の適切なサイズの部分に細分され得る。例えば、このデータベースは、ノードにおけるRAMに適合するように十分小さい部分に細分され得る。
【0035】
複数のワードマッチ(word matche)の長さは、任意の方法を使用して、本発明の方法の工程(d)において伸長され得る。例えば、この伸長工程は、以下の工程を包含し得る:(i)1セットのハイスコアセグメントペアを評価して、第1の基準に従う上記セットにおいて最もスコアの高い鎖を決定する工程であって、ここで、この鎖は、ハイスコアセグメントペアにおける上記セットのサブセットを含む工程;(ii)ハイスコアセグメントペアの上記セットから上記の鎖を取り出す工程;および(iii)このハイスコアセグメントペアが無くなるまで、上記の工程(i)および(ii)を反復する工程。好ましくは、この評価工程(i)は、第2の基準に従って再計算を必要としないハイスコアセグメントペアの上記セットにおけるサブセットを決定する工程を包含する。別の例において、複数のワードマッチの長さは、link_hsps()を用いて伸長される。この複数のワードマッチの長さは、別個のプロセッサ上で伸長され得る。あるいは、この複数のワードマッチの長さは、データベース検索を実行するために使用される、同一のプロセッサ上で伸長され得る。
【0036】
この複数のハイスコアセグメントペアは、任意の適切な方法を使用し、本発明の方法の工程(d)にて結合され得る。例えば、複数のハイスコアセグメントペアは、「pbmerge」プログラムを使用して結合され得る。
【0037】
本発明の方法は、適切な配列ハードウェア上で実行され得る。例えば、本方法は、商用既製(「COTS」)ハードウェア上で実行され得る。好ましくは、本方法は、Beowulf型並列処理アーキテクチャで実行され得る。
【0038】
本方法は、任意の適切なデータベースにおいて、任意のクエリー配列について検索を実行するために使用され得るが、但し、このクエリー配列は、このデータベースに含まれる少なくともいくつかの配列と適合性である。しかし、いくつかの環境においては好ましいのであるが、このクエリー配列がこのデータベースに含まれる全ての配列と適合性である必要はない。例えば、あるタンパク質配列は、核酸配列とに加えて、タンパク質の配列を含むデータベースにおける検索を実行するのためのクエリー配列として使用され得る。同様に、核酸配列(例えば、DNA配列またはRNA配列)は、タンパク質配列に加えて、核酸配列を含むデータベースにおける検索を実行するためのクエリー配列として使用され得る。
【0039】
本発明の方法は、ゲノム配列、cDNA配列、EST配列またはそれらの組み合わせを含むデータベースのような任意の適切な配列データベースにおける検索を実行するために使用され得る。本発明の方法は、公開データベース(例えば、GenBank)または加入者限定データベースにおける検索を実施するのに使用され得る。
【0040】
別の特定の実施形態において、本発明は、以下の工程を使用するBLASTアルゴリズムを用いるデータベースにおける配列検索を実行するための方法に関する:(a)クエリー配列から長さwのハイスコアワードのリストをコンパイルして;(b)このデータベースにおける各配列のついて、閾値Tを超えるスコアを有するワードヒットについてスキャンし;そして(c)各ワードヒットについて、このヒットを両方向に伸長して、S以上のスコアのハイスコアセグメントペア(HSP)を形成し、ここで、改良型は、以下の(i)、(ii)、(iii)のうちの1つ以上を含む:(i)上記検索を実行する前に、複数のクエリー配列を一体型クエリー配列に結合する工程;(ii)上記検索を実行する前に、データベースの複数の下位区分を決定する工程;(iii)可能な何時においても、ハッシュテーブルは、プロセッサとメモリとの間で往来するのではなく、プロセッサキャッシュに留まるようにコードを再構築する工程;および/または(iv)1メガ塩基(100万塩基または100万塩基対)以上のクエリー配列を、上記の検索を実行する前に、より小さい部分に分割する工程(例えば、上記クエリー配列を、重複する部分に分割し、その検索において別々に、各部分を実行することによる)。好ましくは、このクエリー配列は、以下の工程によってより小さい部分に分割される:a)上記クエリー配列を複数の重なり合う(オーバーラップ)配列へと分割する工程;b)重なり合う部分の各々が、唯一の重なり合う配列においてのみ含まれるように、上記における複数の重なり合う配列から、重なり合う部分を取り除く工程;およびc)除去を受けた部分が、上記の重なり合う部分の全体に及ぶ任意のHSPを含むか否かを検出する工程であって、そして、このようなHSPが検出された場合に、上記HSPを生じるオリジナルヒットを見出し、そして分割されていないクエリー配列の状況におけるHSPを伸長する工程。このクエリー配列は、任意の適切なサイズ(例えば、約10キロ塩基(1000塩基または1000塩基対))のより小さい部分へと分割され得る。
【0041】
さらに別の具体的な実施形態において、本発明は、データベースにおける配列検索を実行する為のシステムに関し、このシステムは、マネージャーノードおよび複数のワーカーノードを備え、ここで、上記マネージャーノードは、クライアントステーションおよび上記ワーカーノードの各々に作動可能に接続されて、そして、上記システムは、上記の方法のいずれか1つに従って、データベース中の配列検索を実行することが可能である。1つの例において、ハードウェアのレベルで、このマネージャーモジュールは、デュアルCPUマザーボード、RAM、ディスク、およびネットワークカードを備えるマネージャーノードを備える。他のノード(例えば、ワーカーノード)は、類似のハードウェア(通常は、ディスクは備えない)を備える。1つの好ましい例において、このマネージャノードは、マネージャー「デーモン」(恒久的プロセス(persistent process))ソフトウェアをこのマネージャーノード上で実行させるが、ワーカーデーモンは、ワーカーノード上で実行させる。このマネージャーデーモンは、クライアントプロセスからジョブリクエストを受信する工程を担い、このクライアントプロセスは代表的にはクライアントワークステーションにおいて実行され、そのジョブリクエストを待ち行列にいれ(queuing)、そのジョブリクエストをサブジョブまたはタスクに分割し、これらのタスクのスケジュール管理を行い、そして、それらのタスクをワーカーデーモンへと割り当てることを担っている。このワーカーデーモンは、マネージャーデーモンからのサブジョブをリクエストし、そして、そのマネージャーデーモに結果を戻す。
【0042】
これらの要素(エレメント)およびアルゴリズムの操作の詳細な説明は、以下に提供される。本明細書中で引用される全ての参考文献は、その全体が参考として援用される。
【0043】
(発明の詳細な説明)
開示の明確化のためであって、かつ、限定のためではなく、本発明の詳細な説明は、以下に続く小節に分割される。
【0044】
(定義)
別段定義されない限り、本明細書中で使用される、全ての専門用語および科学用語は、本明細書中において、本発明が属する分野の当業者によって通常理解されるものと同じ意味を有する。本明細書中で参照される、全ての、特許、特許出願、公開された特許出願、および他の刊行物は、それらの全体が参考として援用される。
【0045】
本明細書中で使用される場合、「a」または「an」は、「少なくとも1つ」または、「1つ以上」を意味する。
【0046】
本発明の目的について、別段示されない限り、「BLAST」とは、Altschulら,J.Mol.Biol.,215: 403−410(1990)(これらの全体が、本明細書中で参考として援用される)に記載の「Basic Local Alignment Search Tool」アルゴリズムに基づくアルゴリズムをいう。「NCBI BLAST」とは、BLASTアルゴリズムのNCBI(National Center for Biotechnology Information)版の実装のバージョン2.1.2をいい、これは、当該分野で周知である。
【0047】
本明細書中で使用される場合、「ノード」とは、計算ツリー(computational tree)または計算システムにおける別個のスポット(点)または位置をいう。ノードは、CPU、プロセッサもしくはマイクロプロセッサまたはそれらの機能部分、あるいはそれらの組み合わせであり得る。例えば、コンピューティングクラスタ(計算クラスタ)の状況において、ノードは、単一のコンピュータであり得、これは、1以上のプロセッサ(CPU)および個々に共用された他のハードウェア(例えば、メモリ(RAM)またはネットワークカードなど)からなる。
【0048】
本明細書中で使用される場合、「link_hsps」は、NCBI blastツールのサブルーチンをいう。各クエリー配列および各データベース配列について、このルーチンは、これらの2つの配列の間の、初期段階において計算されたHPSを連結し、これらの2つの配列がどの程度類似しているかを評価する。link_hspsの結果に基づいて、このプログラムは、ギャップ付きアライメントがこれらの配列ペアについて計算されるか否かを決定する。
【0049】
(クエリーパッキング)
BLASTにおいて、配列データベースにおける各クエリーの検索は、その検索を設定するために、計算上のオーバーヘッドを要求する。具体的には、ルックアップテーブルが、このクエリーに対して構築されることが必要とされる。いくつかのクエリーを1つの検索に対して連結することによって、1クエリー当たりの計算上のオーバーヘッドの量が低減され、そして、クエリー処理における全体の処理量は増大される。1つの実施形態において、このBLASTアルゴリズムは、複数のクエリー配列を、このデータベースの単一のスキャニングパスへと圧縮(パッキング)し、従って、複数の小さいなクエリーに対する処理時間を低減するが、一方で、同一の入力用クエリーについてNCBI BLASTで生成された結果と同一の結果を生成するように改変される。具体的には、このクエリールックアップテーブルは、「クエリー番号」と称される必要な索引と共に、いくつかのクエリーに由来する情報を含むように改変され、それぞれのクエリーとその情報を連結する。
【0050】
一体化型クエリーの結果が、それを構成するクエリーの個々の検索によって生成された結果と同一であることは重要である。同一の結果が生成されることを確認するために、各クエリーに対して序数を割り当てかつその序数をハッシュテーブルの記入項目に追加することによって、ハッシュテーブル生成が複数のクエリーに対するスキャニングと組み合わされる。さらに、全てのスキャン後の段階を実行するために、別個の検索構造体が、各クエリーに対して維持されており、そのスキャン後の段階としては、対角成分計算(例えば、ギャップのない伸長、ギャップ付伸長、およびアライメント)が挙げられる。
【0051】
この実施形態において、長さパラメータは、どれほど多くのクエリーデータが結合され得るかを決定するために使用され得る。BLASTの従来技術の実装においては、、メインループが、クエリーをインプットとして受信し、そして、イタレーション(反復)毎に1つのクエリーを処理していた。本実施形態において、このメインループは、一体型クエリーの全長が、長さパラメータに到達するか、またはそれを上回るまで、クエリーを結合する内部ループを有し、そしてデータベース検索をこの一体型クエリーを用いて実行するように改変されている。この一体型データベース検索の結果は、一体型クエリーの全てにおいて有意なワードマッチの全てを含む。次の工程は、HSPへとこれらのワードを伸長することを包含する。この工程の対角成分プロセシング(diagonal processing)は、クエリー特異的であり、そして、全ての対角成分計算は、この内部ループ内でクエリー毎に独立して実行される。
【0052】
1つの好ましい実施形態において、クエリー配列Qの各々およびデータベース配列Dの各々にとって、本発明の方法は、以下の処理工程を実行する。
1.閾値を幾分上回る、QおよびDの全てのローカルアライメントである、A1(Q,D),A2(Q,D)...,An(Q,D)を見つけ出す。
2.上位nのスコアの高いデータベース配列Dについて、全てのアライメントである、A1(Q,D),A2(Q,D)...,An(Q,D)を報告する。
【0053】
このBLASTに特定のものは、その内部工程であり、つまりアライメントを見出す工程である。BLASTヒューリスティックにとって重要であるのは、統計学的に有意なアライメントが、並置されたワードにおけるハイスコアペア(HSP)を含むという可能性があるというこである。このアルゴリズムはまずはじめに、クエリー配列とデータ配列との間の短く正確なマッチ(デフォルトの長さは、ヌクレオチドに対しては、11であり、タンパク質に対しては、3である)について検索する。このような一致は、ヒットと称される。次いで、これらのヒットは、はじめは、ギャップなしで伸長され、次いで、ギャップ付きで伸長され、そして、所定の閾値を越えるこれらのHSPが戻される。完全な伸長工程は、計算的には非常に負荷のかかるものであり、そして、BLASTは、統計的にHSPである可能性が高いそれらのペアについて完全なアライメントを計算することのみにより、不必要な計算を実行することを回避する。
【0054】
Paracel BLASTにおいて最適化されたこのアルゴリズムのうちの1つの部分は、は、ヒット生成が生じる方法である。ヒット生成のためのアルゴリズムは、以下である:
1.クエリーをプリプロセスし、以下のハッシュテーブルを生成する:
(nマー,nマーが存在するクエリーの位置)
2.このデータベース配列を検討し、そして、nマーの各々について、ハッシュテーブルにおけるそのnマーを調べる。このテーブルのインディックスにおける任意の位置が、ヒットである。
【0055】
例えば、このクエリーがMSLPTであると仮定する。従って、この3マーが、1)MSL、2)SLP、および3)LPTである。このハッシュテーブルは、表1に示される。従って、SLPを含むデータベース配列は、例えば、クエリーの第2位におけるヒットを生成する。
【0056】
【表1】
(表1 クエリーMSLPTについてのハッシュテーブル)
アミノ酸の3マー(AAA...YYY)の各々について、このテーブルは、3マーが存在するクエリー内のそれらの位置についてのエントリーを含む。例えば、MSLは、第1位で現れる。
【0057】
BLASTアルゴリズムのうちで最も「費用のかかる」(メモリを消費する)データ構造の1つは、上述のハッシュテーブルである。非常に高いレベルで、このアルゴリズムは、以下のようである:
1.ハッシュテーブルを配置(populate)する。
2.このハッシュテーブルにおけるヒットの各々に対して、さらなるプロセシングを実行する。
【0058】
NCBI BLASTコードは、このハッシュテーブルの任意の特別な管理をなんら行わない。Paracel BLASTは、このコードを再構築し、その結果、可能である何時においても、ハッシュテーブルが、プロセッサとメモリとの間を往来するのではなく、プロセッサのキャッシュにとどまる。このことは、このテーブル中の値をコードすることに幾分関連し、メモリの使用頻度および、従ってテーブルサイズを減少して、その結果、このテーブルは、そのキャッシュに対して最適化する。キャッシュアクセスは、メモリアクセスようりも有意に高速であるので、これは、実質的な速度の向上を生じる。
【0059】
(動的データベース分割)
先行技術において、検索されるべき大規模データベースは、静的に、いくつかのより小さいデータベースに分割され得た。しかし、このような設定は、BLAST検索全体が、これらのより小さいデータベースの各々に関して実施されることを要求し、これらの従属的な検索における結果を結合する静的で効果的な方法は、存在しない。本発明の1つの実施形態において、このBLASTアルゴリズムは、単一の大規模データベースに対する検索を分割して、複数のより小さいデータベースがサブセットを表すように構築することによって、その単一のデータベースのサブセットに対する複数の検索へと分割することを支援するように改変される。この実施形態において、この結果は、自動的に再結合され、分割することなしにこのデータベース全体を検索することによって生成されたレポートと生物学的に等価である単一のBLASTレポートへを作成する。この改変された方法は、本明細書中で「動的データベース分割」と呼ばれ、以下の4つの領域において、その基礎的なBLASTアルゴリズムに対する改変を必要とする:第1に、この静的パラメータは、正確な部分的結果を生成するように調整される必要がある。第2に、このデータベースにアクセスするのに使用される入力/出力ルーチンは、このデータベースのサブセットへのアクセスをサポートするように改変される必要がある。第3に、中間結果のメモリイメージが、生成される必要がある。第4に、これらのメモリイメージが、適切に再結合され、単一のひとつになったBLASTレポート生成する必要がある。
【0060】
BLASTは、データベースのサイズおよびこのデータベースにおける配列数を使用して、このデータベースの検索によって生成された結果の統計学的な有意性を計算する。一貫した結果に到達するために、検索される、塩基におけるサイズおよびデータベース全体の配列数は、特定されなければならない。BLASTの従来の実装は、コマンドライン引数(−z)を提供して、静的な計算において使用されるデータベース全体の塩基のサイズを特定していたが、配列全体の数を特定するための対応する方法を提供していなかった。本発明の1つの実施形態において、新規のコマンドラインオプション(−s)が、この番号を特定するために追加され、このオプションは、検索の間で、このコードによって参照される、このオプションのデータ構造に追加された。この実施形態において、静的パラメータを計算するコードは、このデータベース全体において含まれる実際の配列数によりはむしろ、この−sオプションの値を使用する。さらなる実施形態において、これらの−zおよび−sのパラメータの値は、別段提供されない限り、サブセット化されたデータベースのサイズ全体にもとづて自動的に計算される。
【0061】
1つの実施形態おいて、このBLASTアルゴリズムは、データベースのサブセットを検索するように改変された。さらなる実施形態において、このデータベースのサブセットは、以下の命名法を使用して特定され得る:「database#x−y」、ここで「database」は、データベース名であり、xは、検索において含まれる第1の序数ID(「OID」)であり、そして、yは、この検索において含まれる最後のOIDである。この実施形態において、OIDは、0からN−1の範囲に及び、ここで、Nは、このデータベースにおける配列数である。なおさらなる実施形態において、このデータベースのサブセットは、以下の命名法を使用して、特定され得る:「database#x−y#n」、ここで、nは、この特定されたサブセットにおける塩基数である。nが特定されないと、データベース全体のサイズが使用され、つまり、この数は、そのレポートにおけるサイズ情報にのみ影響する。
【0062】
この実施形態において、readdbサブルーチンにおけるメモリマップファイルの概念に基づき、NCBI BLASTコードは、塩基変化を反映するように改変され得、このサブルーチンは、indexfpファイル、headerfpファイル、およびsequencefpファイルを、基礎的なreaddbデータ構造体ReadDBFILEの中に含む。BLASTの従来技術型の実装は、mmap(2)UNIX(登録商標)システムコールまたはその等価物を使用して(Nlm_MemMapInitを呼び出すことにより)ファイル全体がマップされることを可能にするのみであった。この実施形態において、ここでは、3つまでのファイルの範囲が、これらのインディクスファイル(索引ファイル)における、ヘッダー、配列、および多義性(ambiguity)のセクションについて、マップされることを可能にする。この実施形態において、インディックスファイルが、readdb_new_intenalにおいて読まれると、はじめは、これは、メモリマップを全く使用することなしに、最初にオープンされる。一旦、このファイル中の配列数が決定されると、このインディクスファイルは、クローズされ、そして、特定されたメモリマップについての、2つ(タンパク質)または3つ(DNA)の範囲を用いてリオープンされる。OIDの範囲が使用されると、このヘッダーファイルおよび配列ファイルは、readdb_new_intenalによるReadDBFILE構造体において計算され、そして記憶される。その後、それらは、それらがReadDBOpenMHdrAndSeqFilesでオープンされたときに、このファイルの範囲のみをマップするのに使用される。
【0063】
1つの実施形態において、このBLASTアルゴリズムは、最終的なBLASTレポートのかわりに、出力として中間結果を生成するように改変される。この中間結果は、アライメントを生成する前の、blastallメインループにおける点において、動的データ構造体のメモリイメージの、順番に並べられたコピーである。この実施形態において、この点における動的データ構造体は、移動され、そして、各メモリブロックは、相対インディクスに対する絶対RAMアドレスから、記述されたメモリブロックへと変換される埋め込まれたポインタ(embedded pointer)情報にそって記憶される。この実施形態において、テキスト出力はこの段階においては生成されない。
【0064】
この実施形態において、「pbmerge」と呼ばれるプログラムが、上述のように、膨大なデータベースの複数の部分から中間的結果を読みとるために、そして、このメモリブロックのために動的メモリを割り当て、そして、埋め込まれたメモリレファレンスから、絶対RAMアドレスに対する相対インディクスに変換しも戻すことよって、それらを各々の等価なメモリイメージへと記述するために、書かれた。次いで、pbmergeプログラムは、複数の中間結果を、結果の単一のセットへと結合して、この結合した結果をスコアによってソートし、もっとスコアの低いアライメントを破棄し、リクエストされた数の最良のマッチを生じる。最終的に、pbmergeは、単一の結合されたBLASTレポートを出力として生成するために、上記のように、短く巡回する、blastallメインループの後端部分を実行する。
【0065】
(ハイスコアセグメントペアを連結する工程)
発明の背景で説明したように、実験的証拠によって、BLASTにおける計算時間の大半は、ヒットを伸長することによって、そして、特に、ギャップ付きの伸長を実施する場合に費やされることが実証されている。代表的な実装において、この工程は、link_hsps()と命名された関数によって行われる。発明の背景において説明した改良型をもってしても、BLASTの計算時間の有意な量が、なおも、link_hsps()において費やされている。この関数およびlink_hsps()のコンテキストは、以下に説明される:クエリー配列およびデータベースが与えられると、このデータベース中の配列Sの各々について、HSPのセットHをこの配列Sについて決定する。次いで、lnk_hsps()関数は、この配列SについてのHSPのセットHの統計学的有意性を推定し、統計学的有意性が予め決定された閾値を超えるとき、最も有意性のあるマッチのリストに配列Sを加える。一旦、これらの配列の全てが処理されると、BLASTは、最も有意性のあるマッチにおいてギャップ付き伸長を実施し、そして、そのアライメントを出力する。
【0066】
より詳細には、link_hsps()は、以下のアルゴリズムを実装する:(1)HSPのセットHから最もスコアの高い鎖Cを探し出し;(2)このCについての有意性を計算し;(3)HからCを取り除き;そして(4)Hが無くなるまで反復する。鎖Cについてのスコアは、以下のように計算される:k個のHSPの順列H1,H2,...,Hkからなり、ここで、Hiは、Hi+1よりも前であり、従って:
【0067】
【数1】
である。ここで、score(Hi)は、そのHSPのスコアであって、connect(Hi,Hi+1)は、2つのHSPを結合するためのペナルティである。最大スコア鎖Cの計算は、以下の観察に基づく計算学的有効な様式で実施され得る:S(H)を、HSP Hで終止する最も高いスコアの鎖とする。その結果として、この鎖において、Hは、先行する全てのH’のセットについて、
【0068】
【数2】
である。換言すると、Hで終止する鎖における最も高いスコアは、(その先行する部分のスコアにおける最大値)−(これらのそれぞれの結合ペナルティ)である。その結果として、全てのS(h)の値が、既に計算されていると、S(H)は、容易に計算されるということである。一般に、k個のHSP Hの鎖について、Hに先立つ O(k)HSPが存在し得る。この依存性は、図1において例示される。図1において、各ノードは、HSPを表す。鎖は、有向エッジ(directed edge)によって接続されるノードのセットである。ノードAが取り除かれるとき、ノードXは再計算される必要がある。しかし、CまたはDで終止する最良の鎖は変化せず、S(C)およびS(D)は、ノードAが取り除かれたときに再計算される必要がない。
【0069】
現在、BLASTの代表的な実装は、大規模ギャップ生成(large gap criterion)および小規模ギャップ生成(small gap criterion)として知られている、2つの結合関数を使用する。大規模ギャップ生成によって、おおきなギャップが形成され得、そして、この結合ペナルティをゼロ(0)に設定する。小規模ギャプ生成によって、予め決定されている定数Aを超えるギャップは許容されない。小規模ギャップ生成は、A以下のギャップについて、そのペナルティを0に設定し、Aを超えるギャップについて負の無限大であるとする。現行の実装は、S(h)の各々を計算するのに時間O(k)を必要とし、そして、Hで終る最高スコア鎖を見出すために時間O(k2)を必要とする。全ての鎖を見出すには、時間O(k3)がかかる。kがクエリー長に対して線形的に増大し、そして、BLASTアルゴリズムの残りのものは、固定されたデータベースについて、クエリー長対して線形的に増大するので、link_hsps()は長いクエリー配列においては実行時間のボトルネックになる。この適用において他で議論されるように、本発明の1つの実施形態は、「クエリーパッキング」を使用し、この「クエリーパッキング」はいくつかのクエリーを鎖状に繋いだものを含み、従って、クエリー長を増大させる。実験的証拠は、1Mbクエリーについて、計算時間の80%までが、link_hsps()関数を実行することに費やされ得ることを実証している。HSPのセットHにおいて、同一の開始要素(エレメント)を有するエレメントは、同じクラスの属している称される。上述のように、link_hsps()の1つの工程は、最も高いスコアの鎖Cを、HSPのセットHから取り出すことである。鎖のスコアを計算することは、この鎖における先行する点に依存する様式で、実行されるので、上述したように、HからCを取り出すことは、Hが存続している全てのC依存的なエレメントが再計算されることを要求している。定義によると、鎖における全てのHSPは、同じクラスに属している。鎖が取り除かれると、このクラスの全ての残りのエレメントは、再計算されることが必要とされる。2つの別個のギャップ基準を使用するBLASTの1つの実装において、Hにおける各エレメントは、別個の2つのクラスに属してており;1つの基準に対して最良の鎖は、別の基準における異なるクラスからのエレメントを含み得る。現行の実装において、1つの基準における最良の鎖を取り出すことは、全てのクラスの他の基準が再計算されることを必要とする。本発明の1つの実施形態において、link_hsps()の性能は、この種類の再計算を避けることよって改善される。
【0070】
HSPのセットH、2つのギャップ基準、およびHにおけるエレメント(要素)hが与えらると、link1(h)は、基準1に従った最も高いスコアの鎖におけるhに対するその前のHSPであり、そして、link2(h)は、基準2に従った最も高いスコアの鎖におけるhに対するその前のHSPであることを意味する。フォレスト(forest)F1は、それらの親(ペアレント)にように、link1(h)を有するサブツリーのセットとして定義される。同様にして、フォレストF2は、それらの親(ペアレント)として、link2(h)を有するサブツリーのセットとして定義される。一般に、F1におけるエレメント(要素)hが取り除かれると、hにおいてルートを有する部分ツリー(サブツリー)におけるHSPのみが、変化される必要がある。同様に、F1におけるエレメント(要素)hが取り除かれると、定義によれば、その鎖の中の全てのHSPは、F1の1つのツリーの中にある。hにおいてルートを有する部分ツリー(サブツリー)におけるHSPのみが、変化される必要があり;また、そのツリーのルートがまた取り除かれるので、そのツリーにおける残りのHSPは、再計算される必要がある。しかし、再計算が必要なHSPのセットは、必ずしも、F2について同じツリーにあるわけではない。本発明の1つの実施形態において、鎖全体が1度に全て取り除かれる代わりに、取り除かれる鎖の個々のエレメント(要素)は、個々に取り除かれ、同様にして、このエレメントのサブツリーも取り除かれる。
【0071】
再計算の後に、link_hsps()は、新しいツリー構造における最良の鎖を決定する。このプロセスに対する愚直なアプローチは、ツリーが変化したHSPの全てにアクセスすることが絡むということである。実験的な証拠によると、再計算を必要とするHSPの数は変化したHSPのわずかな部分であるという傾向があるので、このアプローチは、不必要に時間を消費することとなる。より効率的なアプローチでは、各HSPについてのスコアS(h)に基づき、フォレストにおける各ツリーについてヒープ使用する。このヒープによって、このツリーの最もスコアの高い鎖が、O(1)時間内に決定されることを可能にする。再計算を必要とするHSPのみがアクセスされるので、この総実行時間は、最も悪い場合で、O(rm0.5+rlogm)であり、そして、実際には、O(rlogm)であり、ここで、rは、再計算の数であり、mは、HSPの数である。実験的な証拠によって、rは、実際には、ほぼm1.5である。
【0072】
1つの例において、1.1Mbのクエリーを、650Mbの配列データベースに対して実行した。(米国の)全国バイオテクノロジー情報センター(「NCBI」)から利用可能であるBLASTの実装(バージョン2.1.2)は、実行に17時間を必要とした。対照的に、上述のようなlink_hsps()の改良型を使用したBLASTの実装は、同じ条件のもと3時間未満で完了した。
【0073】
上述したように、ハッシュテーブルにおける操作(ハッシュテーブルへの配置およびその繰り返し(looping over it)は、かなりの量の時間を費やす。これは、短いクエリーについては、特に、そのとおりであり、テーブルにおける僅かなエントリーのみが配置される。実際のところ、MegaBlastが多くの小さなクエリーに関してヌクレオチド対ヌクレオチドの検索をより速く提供するように開発された1つの理由は、Zhang,Z.,Schwartz,S.,Wagner,L.and Miller,W.,A greedy algorithm for aligning DNA sequences.Journal of Computational Biology,7(1−2):203−214(2000)(これらの全体は、本明細書において、参考として援用される)に記載されている。例えば、以下のようなウェブ上で利用可能ないくつかのスクリプトがまた存在する:クエリーを一緒に「パック」するスクリプト、例えば、クエリーと間で「留意しない」処理を付す(すなわち、ヌクレオチドについては、N、アミノ酸についてはX)スクリプト、単一の検索を実行して、得られた結果に後処理を行い、一体型クエリー内でオリジナルクエリーのオフセットに対して修正を加えるスクリプト。例えば、クエリーACTGおよびGCGCGが、ACTGNNNNNNNNNGCGCGとしてパックされ得る。留意しない点は、このクエリーに亘ってヒットが生じる可能性がないとすることである。MegaBlastおよびこれらのスクリプトにかかわる問題点は、精度(accuracy)が失われるといことであり、すなわち、その統計値は、単一の長いクエリーと多くの短いクエリーについて相違意味するということである。
【0074】
1つの好ましい実施形態に従って、Paracel BLAST Query Packing Algorithmは、速度の向上を伴って統計学的な妥当性を維持する。1つの実施形態において、このParacel BLAST Query Packing Algorithmは、同じ時間において複数のクエリーのハッシュを構築することによって動作する。位置のみを含むハッシュテーブルの代わりに、これは、(クエリー番号,クエリーにおける位置)という順列ペアを含む。例えば、表1は、クエリーQ1(ここで、Q1=MSLPT)がハッシュされたときに生成されたハッシュテーブルを含む。さらに仮定したときに、クエリーQ2=ALPTVおよびQ3=VMSLICがハッシュされる。この得られたハッシュテーブルは、表2で示される。
【0075】
(表2−クエリーMSLPT、ALPTV、およびVMSLICに対するクエリーパッキングハッシュテーブル)
【0076】
【表2】
この最適化は、このハッシュテーブルが配置される方法、およびヒットがハッシュテーブルから読み出される方法に対する改変を含み、ヒットにおける全てのそれに続く処理は、同一のままである。重要なのは、いくつかのクエリーのパックされたパイプラインからのデータを用いてこのハッシュテーブルに十分に配置し、その結果、このハッシュテーブルは、過剰なることなく相対的に満たされている。これによって、少数のクエリーセットの効率を、有意に、改善する。MegaBlastとは違って、この技術は、ヌクレオチドに加えて、アミノ酸のついても機能し、Paracel BLASTは、全ての改良型BLASTについて統計学的に正確に、より高速検索を実行し得る。
【0077】
(並列アーキテクチャにおける実装)
1つの実施形態において、上述のような改良を組み込んだBLASTアルゴリズムの実装は、Beowulf型並列処理アーキテクチャ上で実行される。この実施形態において、このマシンは、データベース検索を高速度のスループットで実行する。クエリーが受信されると、クエリーは、一体型クエリーサイズが予め決定された閾値に到達するまで、一体型クエリーへとパッキングされる。検索されるデータベースは、分割され、そして、このマシン上のプロセッサの各々は、このデータベースの特定の分割された部分についての一体型クエリー検索を取り扱う。好ましい実施形態において、このデータベースは、動的に分割され、各プロセッサは、ほぼ同じ時間の量での検索を完了する。各データベース検索の出力は、一体型クエリーにおいて、ヒットの各々とそのクエリーとを連結する情報にとともに、複数のヒットを含む。ヒットの各々についての対角成分計算は、クエリー特異的であるので、各クエリーのヒットは、link_hsps()を使用して別個に伸長される。1つの実施形態において、各クエリーのヒットは、別個のプロセッサー上で処理され得る。代替的な実施形態において、各クエリーのヒットは、このデータベース検索を実施するために使用される同一のプロセッサ上で伸長される。データベースの分割のために、全ての一体型クエリーのヒットが、見出され、そして、伸長されたとき、分割の中間結果が記憶される。最後には、全てのデータベース分割についての中間結果は、再結合されて、そして、最終的なBLASTレポートがこの一体型クエリーにおける各クエリーについて生成される。1つの好ましい実施形態において、このBlastMachineは、Beowulf型Linuxクラスターであり、マネージャーノードおよび複数のワーカーノードからなる(図2を参照のこと)。各ノードは、Paracel BLAST、すなわち、最適化したバージョンのNCBI BLASTを実行する。このマネージャーは、ジョブを分割してより小さな部分にし、それらの部分をワーカーに割り当て、それらの結果を回収し、そしてそれらの結果をクライアントに戻すことによって、クライアントBLASTリクエストに応答する。このシステムの多くの困難は、以下にさらに詳細に議論されているような局面(aspect)を、分割およびスケジュール管理することにある。わずか1個のCPUを有するBlastMachinesおよび92個ものCPUを有するBlastMachinesが構築された。1つの実施形態において、各ワーカーノードは、2CPU Pentium(登録商標) IIIシステムである。
【0078】
ジョブを分散させるときの、2つの性能に関連する問題は、1)負荷分散(load balancing)および2)キャッシングである。負荷分散を例示するために、単一のプロセッサで100分かかるジョブを50プロセッサに分散することを仮定する。各プロセッサの負荷が同等であるとすると、これらのジョブは、2分間かかる。あるいは、49のプロセッサが1分間を必要とする部分を受け取るとすると、最後のプロセッサが51分間を必要とする部分を受け取る。次いで、問題全体が、51分間かかるとすると、1つのCPUにおいて必要とされる時間は、大まかに半分である。乏しい負荷分散のために、このジョブが、どんな方法でも、プロセッサの数だけに基いて期待される、50倍近くの速度向上に到達し得ない。この種の異常な実情を改善するために、ジョブを可能な限り多くの部分に分割することが所望される。どの部分が最も時間を費やすかということを、先見的に知ることはできない(この時間の多くの部分が、ヒットの数に依存し、これは、検索を実行することなしには、知ることはできない)ので,より多くの部分に分割することによって、より速い部分がずっと速く完了することが可能され、従って、これらのプロセッサーは、残りの部分のために使用され得る。小部分の限界において、1つのジョブをこのような小部分へと分解して、それによって、プロセッサの数と同等の実際の速度向上を達成し得ることが望まれている。しかし、実際のところ、各部分に関連する、幾分少量のオーバーヘッドが存在し、そして、この分割がどれ程まで細かい単位であり得るかということに関しては限界が存在する。
【0079】
直接的なクエリー分割技術は、各クエリーを、その別個のサブジョブに分割することである。ついで、このような部分の各々は、BLASTアルゴリズムにおいてそれに続く工程で統計値を調整することを必要とせず、独立してスケジュール管理され、そして、異なるプロセッサーに配置され得る。各クエリー部分を独立してスケジュール管理する工程は、正確だが、最適ではないことがわかった。なぜならば、これが、上記のクエリーパッキングアルゴリズムによって提供される最適化したものを損なうためである。そのアルゴリズムは、いかに複数のクエリーが一緒にパックされ得ようとも、速度向上を達成する。そして、Paracel Blastマネージャーノードは、いくつかの分散工程(balancing)を実行し、一方で、そのマネージャーノードは、可能な限り細かく分割することを必要とし、より良好な付加分散を達成し、そして、より効率的な並列処理(parallelism)を使用し;他方で、そのマネージャーノードは、複数のクエリー配列を一緒に維持して、各部分における速度を最適化することを必要とする。待ち時間またはスループットについての重要性に依存して、かつ含まれるデータの特異性(specifics)に依存して、異なったストラテジーが使用され得る。これらのストラテジーは、以下に詳細に議論されている。
【0080】
上記で議論したように、Paracel Blastがクエリーを分割するのと同じ方法で、これは、データベースを分割し得る。1つの実施形態において、各データベースDおよび各クエリーQについて、このParacel BLASTアルゴリズムによって、QとDとの間のアライメントが見出される。しかし、問題点が存在する。アライメントを見出すために、そのデータベース全体における、サイズおよび配列数に依存する統計学的なカットオフが、使用される。1つの実施形態において、強化されたBLASTコードは、プロセスマネージャーアルゴリズムがその情報を各クエリー部分に渡すことを可能にする。アルゴリズムの第2の部分は、同じクエリー部分に対応する全てのデータベース部分を一緒にする。クエリーQの各々について、このアルゴリズムは、以下で詳細が説明されるように、MERGE(D1,D2,...,Dm)と呼ばれる関数にある上位nのデータベース配列を報告する。不運なことに、この一緒にする工程は、ネイティブNCBI BLASTの順位とは異なる順位を、時折生成し得え、これは、同じスコアを有するアライメントが、決定論的に(deterministically)ソートされないためである。しかし、結果の質は、同等であり、これは、統計学的に有効なものである。
【0081】
1つの実施形態において、マージ手順(合わせる手順)は、以下の通りである:データベース部分D1、D2、...、Dm、および各データベースについての上位n個のアライメントを与え、全体として、上位n個のアライメントを見つけ出す。好ましい実施形態において、クエリー分割およびデーターベース分割は、相互に独立しているので、両方の最適化は、同時に適用され得る。
【0082】
データーベース分割の1つの利点は、データベースが、そのノード上のRAMに適合するのに十分な小さい部分に分割され得ることである。これは、以下の2つの利点を提供する:
1.BLASTアルゴリズムは、データベースが、ディスクからまたはネットワークを超えてデータベースにアクセスするよりもむしろメモリー内にとどまり得る場合に有意により速い様な様式で、コードされ、そして
2.データベース(特に、大規模なもの)を移動し回ることは、コストがかかるので、マネージャーは、同じデータベース部分を同じプロセッサに割り当てるように試み、それによって、有意な速度改善を達成する。
【0083】
データベースキャッシュ処理もまた、優れた直線的スピードアップを可能にする。基本的に、(メモリーに実装するには大き過ぎるので)ディスクからデータベースをロードしなければならないジョブは、部分に分けられ得、ここで、各部分は、メモリーに実装するために十分に小さい。単一CPUについての合計時間は、(DBディスクアクセス)+(計算)となる。N個のCPUについて、総時間は、1/N(DB RAMアクセス)+(1/N)・(計算)になる。RAMアクセスがディスクアクセスよりずっと速いので、N個のCPUに対する合計時間は、1つのCPUに対についての時間の1/N未満であり、おそらくはそれよりずっと少なく、そして速度向上は、超直線的(super−linear)であり得る。
【0084】
この効果は、多くの部分に分けられる大きなジョブについて特に著しく、すなわち、第1の部分が、プロセッサの数によってナイーブに(naively)分割することに基づいたときに予期される速度と同じ速度で実行する。それに引き続く部分は、キャッシュされたデータベースを使用し得、そして、ずっと高速である。従って、全体のジョブ(より長いジョブについて)は、ディスクアクセス時間ではなく、RAMアクセス時間に向かう傾向がある。これは、ただ、Paracel Blastマネージャーが同じデータベースを使用する異なるサブジョブを同じプロセッサに割り当てることを試みるので、生じることに注意のこと。
【0085】
上記分割アルゴリズムが1セットのクエリー配列、または一体型クエリー、および複数の配列を含むデータベースに適用することが理解される。個々の配列は、代表的には、分割されない。しかし、利用可能なゲノム配列を用いて、個々の配列は、多くのメガ塩基長であり得る。1つの実施形態において、このような長い個々の配列を操作するために、Paracel Blastは、クエリーチョッピング(Query Chopping)と呼ばれるアルゴリズムを使用する。
【0086】
クエリーチョッピングを行うためのナイーブな方法は、長い配列を重なる部分に手動で分割し、そして図3に示されるように別々に各部分を実行する。これは、BLASTの内部へのアクセスなしで、スクリプトによってなされることさえあり得る。Paracel Blastのクエリーチョッピングは、重なりゾーンにおけるいくつかの潜在的な問題を正す点で、幾分より精巧である。
【0087】
図4を参照して、全てのHSPが生成された後、以下の3種類が存在する:重なり合わない領域に完全に含まれるHSP(HSP1)、重なり合う部分に完全に含まれるHSP(HSP2)、および重なり会う部分に部分的に含まれかつ重なり会わない部分に部分的に含まれるHSP(HSP3およびHSP4)。第1のクラスのHSPは、問題を呈しない。第2のクラスは、2回(左部分にて1回、右部分にて1回)見出される。それらを1回報告するのみという問題以外に、それらは、特別な問題を呈しない。第3のクラスは、少々厄介な問題である。
【0088】
他の全てに優先する設計上の目標は、チョッピングがなく、そして配列全体が全体として処理された場合に得られる結果と同じ結果を提供することである。図4に示されるように、一部重なりを有するが隣接する部分のなかで十分短く停止する任意のアライメント(例えば、HSP3)は、チョッピングが生じなかった場合に、その部分を十分に短く停止する。唯一の問題は、全体の重なりを含むまともなHSP(例えば、HSP4)である。このような(まれな)HSPは、チョッピングによって中断されるが、重なりの両端(実際には、特定の縁効果が存在するので、重なりのいくらかの距離内にある)でヒットするチョップされた配列において、HSPとして検出され得る。
【0089】
Paracel BLASTクエリーチョッピングアルゴリズムは、このようなHSPを検出し、そしてそのHSPに導く元のヒットに戻る。元のヒットは、チョップされないクエリーの状況でHSPに拡張される。この操作はコストがかかるが、これが非常にまれである(重なりに完全にわたるHSPが存在する場合にのみ存在する)ことを注意のこと。1つの好ましい実施形態において、Paracel BLASTは、10キロ塩基のデフォルトの重なりを使用し、そこで再計算するための時間は、代表的に、クエリーをより忠実に分割し、そしてそれを複数のプロセッサに請け負わせ得ることによって得られる節約と比較して、非常に短い。
【0090】
本発明の1つの実施形態において、Paracel BLASTは、マネージャーモジュールを含み、これは、ジョブを部分に分割し、各部分を最も利用可能なワーカー(例えば、プロセッサまたはCPU)に請け負わせ、次いで、部分を再結合する。このマネージメント機能を実行する際に、マネージャーモジュールは、特定の競合する束縛を考慮する。負荷分散の理由のため、できるだけ多くの部分に分割することが最適である。クエリーチョッピングおよびデータベース分割(マージ工程(あわせる工程)を有する)について、過剰な分割は、より多くのマージ(合わせること)を必要とし、従って、非能率的である。クエリー分割について、過剰な分割は、クエリーパッキングによって得られる効率を台無しにする。分割はまた、マシンの数を考慮すべきである。あまりにも少なすぎる部分への分割は、マシンをアイドリングさせ、一方、過剰の分割(マシンよりも多い部分への分割)は、負荷分散を改善することが望ましくあり得る。さらに、ディスクからネットワークを越えて、ワーカーのプロセッサにデータを移動する問題が存在する。十分に大きなデータベースについて、データの移動時間は、有意であり、計算時間を支配し得る。このような場合において、より少ない部分に分割することがより良好であり得る。Paracel BLASTは、これらのスケジューリング問題を扱う良好な(しかし、完全ではない)ジョブを実行するための1セットのヒューリスティックスを使用する。
【0091】
(実験結果)
上記改善は、独立にまたは集団的に観察され得る。以下に考察される実施例において、全てのBlastMachineノードは、他の特に述べない限り、2GBのRAMを有する、933MHzで実行するデュアル Pentium(登録商標) IIIプロセッサからなった。
【0092】
(コード最適化、ハッシュテーブルキャッシング、およびクエリーパッキング)
コード最適化の能力を実証するために、データ構造最適化、およびクエリーパッキング、ヒト第22染色体から取得した50,000の25マー(すなわち、合計1,250,000塩基)のクエリーデータセットを、NCBI(10,239配列、24,300,774塩基)からのヒト参照配列データベースに対して、実行した。933MHzにおいて実行する1つのCPU Pentium(登録商標) IIIシステムにおいて、NCBI BLASTは、3時間16分かかった。同じハードウェアにおいて、Paracel BLASTは、22分35秒かかった(8.7倍の速度向上)。
【0093】
(クエリー分割)
クエリー分割、それ自体は、待ち時間を改善し、スループットを改善しない。しかし、以下に考察されるシステムのベンチマークの全てにおいてある役割を果たす。
【0094】
(データベース分割)
Baylorからのヒト転写データベースの8分の1(5.6メガ塩基を含む10,610配列)を、ヒトアンサンブルデータベース(4.4ギガ塩基を含む30,445配列)に対して実行した。この検索は、実質的な量のメモリーを必要とした。実際、NCBI BLAST2.1.2を、単一のCPU Pentium(登録商標)IIIシステムランのメモリーのアウトで実行し、そして2週間後、失敗する。大規模メモリーにおいて、4CPU Alpha ES40システム、NCBI BLAST2.1.2は、214時間14分(ほぼ9日)で実行する。32CPU BlastMachineでは、同じ検索は、たった3時間17分で完了までで実行する。
【0095】
(クエリーチョッピング)
クエリーチョッピングの能力を説明するために、全てのヒトESTを、第22染色体に対して並置させた。使用されるたESTデータベースは、370万の配列を含み、合計1.8ギガ塩基である。第22染色体(Sanger Centreから入手される)は、34.6メガ塩基の単一の配列を含む。このサイズの問題は、代表的なLinux PCでのNCBI BLASTで実行され得ない(これは、すぐにメモリーをランアウトし、終わる)。Paracel BLASTのクエリーチョッピングを使用して、検索は、19分43秒で、8CPU BlastMachineで実行された。
【0096】
(C.elegansタンパク質 対 NR)
目的のいくつかの問題は、従来のコンピューターでの合理的な時間で完了され得ない。例えば、Wormpep19データベース(C.elegansからの830万ペプチドを含む19,105配列を含む)を、NRデータベース(NCBIからの非冗長タンパク質配列データベース)に対して検索した。NRは、1億8300万のペプチドを含む582,290配列を含む。Wormpep配列のうちの1つが単一の25,000ペプチドタンパク質であることが特に注記される。1CPUシステムにおいて、NCBI BLASTは、4日後に失敗した(おそらく、配列サイズに関連するメモリー問題に起因する)。Paracel BLASTを用いる32CPU BlastMachineにおいて、同じ検索は、1時間57分で完了まで実行した。
【0097】
(全てのヒトEST 対 全ての染色体)
現在までの最も大きな検索実行のうちの1つは、全てのヒトESTと全てのヒト染色体とのアライメントであった。上記のように、使用されたESTデータベースは、370万配列を含み、合計1.8ギガベースである。完全なセットのヒト染色体(UCSCから得られる)は、3,626配列を含み、合計3.3ギガベースである。この検索は、クエリーチョッピングなしでは可能でなく、そして上で網羅される他の最適化の全てなしでは、過度に遅い。48CPU BlastMachineでのParacel BLASTを用いて、85時間49分で完了まで実行された。現在、ESTおよび第22染色体を用いて実施されるような、本発明者らが、結果を詳細に分析し得るのに十分な、ヒト染色体の大部分の注釈が存在していない。
【0098】
(結論)
Paracel BlastMachineは、ゲノムスケールでの相同性検索のためのシステムである。相同性検索の感度および選択性を改善することに焦点を当てるよりもむしろ、以前に可能であったよりも速くそしてより大きなデータについての合理的に良好なジョブをすることを求める。Paracel BLASTは、問題を分割し、そしてできるだけ多くのノードにそれらを請け負わせる、多くの個々の最適化を組み合わせる。各ノードは、CPUをより効率的に使用するように最適化されたコードを実行する。クエリー分割、データベース分割、クエリーチョッピング、クエリーパッキング、データベースキャッシュ処理、ハッシュテーブルキャッシュ処理、およびアセンブリ最適化の組合せによって、BlastMachineが、デスクトップコンピューターよりも、2〜3桁速くなる(実際の数は、問題、およびこれらの最適化が開発され得る程度に依存する)。
【0099】
アルゴリズムの全てがユーザーに対して透過性である。ユーザーは、GUIまたはコマンドラインを介してBLASTジョブを入力し、そしてソフトウェアは、自動的に、ユーザのさらなる介入なしで全ての適用可能な最適化を適用する。BlastMachineは、数週ではなく、数時間でゲノムスケールの問題を解決する(例えば、ヒト転写データベースとヒトアンサンブルデーターベースとの比較は、NCBI BLAST2.1.2を実行するAlphaシステムでの9日間と比較して、BlastMachineでたった3時間かかった)。さらに、Paracel BLASTは、特定のジョブを自動的に管理可能な部分に分割し、そして従って、他のアーキテクチャー(例えば、全てのヒトESTを染色体に配置する)では失敗するような検索を完了するように実行する。さらに多くのゲノムスケールのデータセットが利用可能になるにつれて、本発明者らは、この種の最適化ツールが、大規模なデータ分析およびマイニングについてに有用性は増大する。
【0100】
本発明は、本発明の精神または必須の特徴から逸脱することなく、他の特定の形態で具体化され得る。従って、上記実施形態は、本明細書中に記載される本発明を限定するというよりもむしろ、本発明の例示の全ての局面において考慮されべきである。従って、本発明の範囲は、上記記載によってよりもむしろ、添付の特許請求の範囲によって示され、そして従って、特許請求の範囲に等価な意味および範囲に入る全ての改変は、そのなかに含まれると意図される。さらに、本明細書中に記載される改善が、DNAおよびペプチドのような生物学的情報の配列に制限されず、任意の種の文字列検索に適用可能であることが企図される。
【図面の簡単な説明】
【0101】
【図1】図1は、ハイスコアセグメントペアを表す有向閉路グラフを提供する。
【図2】図2は、本発明の1つの実施形態に従う、BlastMachineシステムアーキテクチャの高レベルのブロックダイアグラムを例示する。
【図3】図3は、クエリーチョッピングの図式的表現を例示し、ここで、オリジナルクエリーは、重なりのある(オーバーラップ)サブクエリーへと切断(チョップ)され、これは、次いで、本発明の実施形態に従って、分散され得る。
【図4】図4は、本発明の1つの実施形態に従って、様々なHSPのタイプをクエリーチョッピングすることの図式表現を例示する。
Claims (9)
- 配列データベースに対して複数のクエリー配列を比較するための方法であって、該方法は、以下の工程:
(a)該複数のクエリー配列を、一体型クエリー配列に結合する工程;
(b)該データベースの複数の下位区分を決定する工程;
(c)複数の検索を実施する工程であって、ここで、各検索は、該データベースの複数の下位区分のうちの1つに対する該一体型クエリー配列の比較を含み、複数のワードマッチを生成する工程;
(d)工程(c)において生成された複数のワードマッチの長さを伸長し、複数のハイスコアセグメントペアを生成する工程;
(e)上記の複数のハイスコアセグメントペアを結合する工程;および
(f)複数のレーポートを作成する工程であって、各レポートは、複数のクエリー配列のうちの1つに対する最もスコアの高いマッチを示す工程、
を包含する、方法。 - 請求項1に記載の方法であって、前記伸長工程(d)は、以下の工程:
(i)1セットのハイスコアセグメントペアを評価して、第1の基準に従う該セットにおいて最もスコアの高い鎖を決定する工程であって、ここで、該鎖は、ハイスコアセグメントペアにおける該セットのサブセットを含む工程;
(ii)ハイスコアセグメントペアの該セットから該鎖を取り出す工程;および
(iii)ハイスコアセグメントペアの該セットが無くなるまで、工程(i)および(ii)を反復する工程、
を包含する、方法。 - 請求項2に記載の方法であって、前記評価工程(i)が、第2の基準に従う再計算を必要としない、前記セットのハイスコアセグメントペアのサブセットを決定する工程を包含する、方法。
- BLASTアルゴリズムを用いて、データベースにおける配列検索を実行するための方法であって、以下の工程:
(a)クエリー配列から長さwの高いスコアのワードのリストをコンパイルする工程;
(b)該データベースにおける各配列について、閾値Tを超えるスコアを有するワードヒットについてスキャンする工程;および
(c)各ワードヒットについて、該ワードヒットを両方向に伸長して、S以上のスコアのハイスコアペア(HSP)を形成する工程、
を使用し、
ここで、改良として、該検索を実施する前に、一体型クエリー配列へと複数のクエリーを結合する工程を包含する、
方法。 - BLASTアルゴリズムを用いて、データベースにおける配列検索を実行するための方法であって、以下の工程:
(a)クエリー配列から長さwの高いスコアのワードのリストをコンパイルする工程;
(b)該データベースにおける各配列について、閾値Tを超えるスコアを有するワードヒットについてスキャンする工程;および
(c)各ワードヒットについて、該ワードヒットを両方向に伸長して、S以上のスコアのハイスコアセグメントペア(HSP)を形成する工程、
を使用し、
ここで、改良として、該検索を実施する前に、該データベースの複数の下位区分を決定する工程を包含する、
方法。 - BLASTアルゴリズムを用いて、データベースにおける配列検索を実行するための方法であって、以下の工程:
(a)クエリー配列から長さwの高いスコアのワードのリストをコンパイルする工程;
(b)該データベースにおける各配列について、閾値Tを超えるスコアを有するワードヒットについてスキャンする工程;および
(c)各ワードヒットについて、該ワードヒットを両方向に伸長して、S以上のスコアのハイスコアセグメントペア(HSP)を形成する工程、
を使用し、
ここで、改良として、該検索を実施する前に、可能な何時においても、ハッシュテーブルが、プロセッサとメモリとの間で往来するのではなく、プロセッサキャッシュに留まるようにコードを再構築する工程を包含する、
方法。 - BLASTアルゴリズムを用いて、データベースにおける配列検索を実行するための方法であって、以下の工程:
(a)クエリー配列から長さwの高いスコアのワードのリストをコンパイルする工程;
(b)該データベースにおける各配列について、閾値Tを超えるスコアを有するワードヒットについてスキャンする工程;および
(c)各ワードヒットについて、該ワードヒットを両方向に伸長して、S以上のスコアのハイスコアセグメントペア(HSP)を形成する工程、
を使用し、
ここで、改良として、該検索を実施する前に、1メガ塩基以上のクエリー配列を、より小さい部分に分割する工程を包含する、
方法。 - 請求項7に記載の方法であって、ここで、前記クエリー配列は、以下の工程:
a)該クエリー配列を複数の重なり合う配列へと分割する工程;
b)重なり合う部分の各々が、唯一の重なり合う配列においてのみ含まれるように、該複数の重なり合う配列から、該重なり合う部分を取り除く工程;および
c)除去を受けた部分が、該重なり合う部分の全体に及ぶ任意のHSPを含むか否かを検出する工程であって、そして、該HSPが検出された場合に、該HSPを生じるオリジナルヒットを見出し、分割されていないクエリー配列の状況において該HSPを伸長する、工程
によって、より小さいな部分に分割される、方法。 - データベースにおいて配列検索を実行するためのシステムであって、該システムは、マネージャーノードおよび複数のワーカーノードを備え、ここで、該マネージャーノードは、クライアントステーションおよび該ワーカーノードの各々に作動可能に接続されて、そして、該システムは、請求項1に記載の方法に従って、データベース中の配列検索を実行することが可能である、システム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US28846501P | 2001-05-04 | 2001-05-04 | |
| PCT/US2002/014535 WO2002090978A1 (en) | 2001-05-04 | 2002-05-06 | Method and apparatus for high-speed approximate sub-string searches |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2005500594A true JP2005500594A (ja) | 2005-01-06 |
Family
ID=23107215
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002588186A Withdrawn JP2005500594A (ja) | 2001-05-04 | 2002-05-06 | 高速の近似部分文字列検索ための方法および装置 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US6931401B2 (ja) |
| EP (1) | EP1402254A1 (ja) |
| JP (1) | JP2005500594A (ja) |
| CA (1) | CA2446262A1 (ja) |
| WO (1) | WO2002090978A1 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2010134694A (ja) * | 2008-12-04 | 2010-06-17 | Fujitsu Ltd | Hsp数推定プログラム、hsp数推定装置、及びhsp数推定方法 |
| JP2011204261A (ja) * | 2004-07-02 | 2011-10-13 | Government Of The United States Of America As Represented By The Secretary Of The Navy | リシークエンシング病原体マイクロアレイ |
Families Citing this family (73)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7238491B1 (en) * | 1998-03-27 | 2007-07-03 | Smithkline Beecham Corporation | Pregnane X receptor method |
| US8725418B2 (en) * | 2002-03-25 | 2014-05-13 | Janssen Pharmaceutica, N.V. | Data mining of SNP databases for the selection of intragenic SNPs |
| US6961733B2 (en) | 2003-03-10 | 2005-11-01 | Unisys Corporation | System and method for storing and accessing data in an interlocking trees datastore |
| WO2004084095A1 (ja) * | 2003-03-18 | 2004-09-30 | Fujitsu Limited | 情報検索システム |
| US20050165765A1 (en) * | 2003-03-18 | 2005-07-28 | Fujitsu Limited | Information search system, information search method, information search apparatus, and recording medium to which information search program, is recorded and which can be read by computer |
| US20050053305A1 (en) * | 2003-09-10 | 2005-03-10 | Yadong Li | Systems and methods for implementing a speckle reduction filter |
| US8516004B2 (en) * | 2003-09-19 | 2013-08-20 | Unisys Corporation | Method for processing K node count fields using an intensity variable |
| US7584092B2 (en) * | 2004-11-15 | 2009-09-01 | Microsoft Corporation | Unsupervised learning of paraphrase/translation alternations and selective application thereof |
| US7412385B2 (en) * | 2003-11-12 | 2008-08-12 | Microsoft Corporation | System for identifying paraphrases using machine translation |
| JP2005190248A (ja) * | 2003-12-26 | 2005-07-14 | Toudai Tlo Ltd | 配列探索システムおよび探索プログラム |
| US7340471B2 (en) * | 2004-01-16 | 2008-03-04 | Unisys Corporation | Saving and restoring an interlocking trees datastore |
| US7996419B2 (en) * | 2004-03-31 | 2011-08-09 | Google Inc. | Query rewriting with entity detection |
| US7840547B1 (en) | 2004-03-31 | 2010-11-23 | Google Inc. | Methods and systems for efficient query rewriting |
| US7536382B2 (en) | 2004-03-31 | 2009-05-19 | Google Inc. | Query rewriting with entity detection |
| US7590620B1 (en) | 2004-06-18 | 2009-09-15 | Google Inc. | System and method for analyzing data records |
| US7593923B1 (en) | 2004-06-29 | 2009-09-22 | Unisys Corporation | Functional operations for accessing and/or building interlocking trees datastores to enable their use with applications software |
| US7213041B2 (en) | 2004-10-05 | 2007-05-01 | Unisys Corporation | Saving and restoring an interlocking trees datastore |
| US7716241B1 (en) | 2004-10-27 | 2010-05-11 | Unisys Corporation | Storing the repository origin of data inputs within a knowledge store |
| US7908240B1 (en) | 2004-10-28 | 2011-03-15 | Unisys Corporation | Facilitated use of column and field data for field record universe in a knowledge store |
| US7676477B1 (en) | 2005-10-24 | 2010-03-09 | Unisys Corporation | Utilities for deriving values and information from within an interlocking trees data store |
| US7499932B2 (en) * | 2004-11-08 | 2009-03-03 | Unisys Corporation | Accessing data in an interlocking trees data structure using an application programming interface |
| US7348980B2 (en) | 2004-11-08 | 2008-03-25 | Unisys Corporation | Method and apparatus for interface for graphic display of data from a Kstore |
| US20070162508A1 (en) * | 2004-11-08 | 2007-07-12 | Mazzagatti Jane C | Updating information in an interlocking trees datastore |
| US7418445B1 (en) | 2004-11-08 | 2008-08-26 | Unisys Corporation | Method for reducing the scope of the K node construction lock |
| US7546235B2 (en) * | 2004-11-15 | 2009-06-09 | Microsoft Corporation | Unsupervised learning of paraphrase/translation alternations and selective application thereof |
| US7552046B2 (en) * | 2004-11-15 | 2009-06-23 | Microsoft Corporation | Unsupervised learning of paraphrase/translation alternations and selective application thereof |
| US7409380B1 (en) | 2005-04-07 | 2008-08-05 | Unisys Corporation | Facilitated reuse of K locations in a knowledge store |
| US7734615B2 (en) * | 2005-05-26 | 2010-06-08 | International Business Machines Corporation | Performance data for query optimization of database partitions |
| US7389301B1 (en) | 2005-06-10 | 2008-06-17 | Unisys Corporation | Data aggregation user interface and analytic adapted for a KStore |
| JP4670496B2 (ja) * | 2005-06-14 | 2011-04-13 | 住友電気工業株式会社 | 光受信器 |
| US7509337B2 (en) * | 2005-07-05 | 2009-03-24 | International Business Machines Corporation | System and method for selecting parameters for data mining modeling algorithms in data mining applications |
| US8386463B2 (en) * | 2005-07-14 | 2013-02-26 | International Business Machines Corporation | Method and apparatus for dynamically associating different query execution strategies with selective portions of a database table |
| US20070027860A1 (en) * | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and apparatus for eliminating partitions of a database table from a join query using implicit limitations on a partition key value |
| US7908132B2 (en) * | 2005-09-29 | 2011-03-15 | Microsoft Corporation | Writing assistance using machine translation techniques |
| US8429177B2 (en) * | 2006-02-08 | 2013-04-23 | Yahoo! Inc. | Using exceptional changes in webgraph snapshots over time for internet entity marking |
| US20070214153A1 (en) * | 2006-03-10 | 2007-09-13 | Mazzagatti Jane C | Method for processing an input particle stream for creating upper levels of KStore |
| TW200734894A (en) * | 2006-03-10 | 2007-09-16 | Univ Chung Hua | Virtual tree searcher using parallel tree search method |
| US20070220069A1 (en) * | 2006-03-20 | 2007-09-20 | Mazzagatti Jane C | Method for processing an input particle stream for creating lower levels of a KStore |
| US20080275842A1 (en) * | 2006-03-20 | 2008-11-06 | Jane Campbell Mazzagatti | Method for processing counts when an end node is encountered |
| US7734571B2 (en) * | 2006-03-20 | 2010-06-08 | Unisys Corporation | Method for processing sensor data within a particle stream by a KStore |
| US7689571B1 (en) | 2006-03-24 | 2010-03-30 | Unisys Corporation | Optimizing the size of an interlocking tree datastore structure for KStore |
| US8238351B2 (en) * | 2006-04-04 | 2012-08-07 | Unisys Corporation | Method for determining a most probable K location |
| US7676330B1 (en) | 2006-05-16 | 2010-03-09 | Unisys Corporation | Method for processing a particle using a sensor structure |
| US7725453B1 (en) | 2006-12-29 | 2010-05-25 | Google Inc. | Custom search index |
| US7987185B1 (en) | 2006-12-29 | 2011-07-26 | Google Inc. | Ranking custom search results |
| US8290986B2 (en) * | 2007-06-27 | 2012-10-16 | Yahoo! Inc. | Determining quality measures for web objects based on searcher behavior |
| US20090013033A1 (en) * | 2007-07-06 | 2009-01-08 | Yahoo! Inc. | Identifying excessively reciprocal links among web entities |
| US7885969B2 (en) * | 2007-09-17 | 2011-02-08 | International Business Machines Corporation | System and method for executing compute-intensive database user-defined programs on an attached high-performance parallel computer |
| CN102084357B (zh) * | 2008-07-01 | 2014-06-04 | 富士通株式会社 | 检索装置以及检索方法 |
| US8214350B1 (en) * | 2009-01-02 | 2012-07-03 | Google Inc. | Pre-computed impression lists |
| US10339139B2 (en) | 2010-08-16 | 2019-07-02 | Cornell University | Computer system and methods for performing data-driven coordination |
| US10068054B2 (en) | 2013-01-17 | 2018-09-04 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
| US9792405B2 (en) | 2013-01-17 | 2017-10-17 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
| US9679104B2 (en) | 2013-01-17 | 2017-06-13 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
| US10847251B2 (en) | 2013-01-17 | 2020-11-24 | Illumina, Inc. | Genomic infrastructure for on-site or cloud-based DNA and RNA processing and analysis |
| US10691775B2 (en) | 2013-01-17 | 2020-06-23 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform |
| US9697327B2 (en) | 2014-02-24 | 2017-07-04 | Edico Genome Corporation | Dynamic genome reference generation for improved NGS accuracy and reproducibility |
| US10006910B2 (en) | 2014-12-18 | 2018-06-26 | Agilome, Inc. | Chemically-sensitive field effect transistors, systems, and methods for manufacturing and using the same |
| US10429342B2 (en) | 2014-12-18 | 2019-10-01 | Edico Genome Corporation | Chemically-sensitive field effect transistor |
| US9618474B2 (en) | 2014-12-18 | 2017-04-11 | Edico Genome, Inc. | Graphene FET devices, systems, and methods of using the same for sequencing nucleic acids |
| US10020300B2 (en) | 2014-12-18 | 2018-07-10 | Agilome, Inc. | Graphene FET devices, systems, and methods of using the same for sequencing nucleic acids |
| US9859394B2 (en) | 2014-12-18 | 2018-01-02 | Agilome, Inc. | Graphene FET devices, systems, and methods of using the same for sequencing nucleic acids |
| US9857328B2 (en) | 2014-12-18 | 2018-01-02 | Agilome, Inc. | Chemically-sensitive field effect transistors, systems and methods for manufacturing and using the same |
| EP3329491A2 (en) | 2015-03-23 | 2018-06-06 | Edico Genome Corporation | Method and system for genomic visualization |
| US20170270245A1 (en) | 2016-01-11 | 2017-09-21 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods for performing secondary and/or tertiary processing |
| US10068183B1 (en) | 2017-02-23 | 2018-09-04 | Edico Genome, Corp. | Bioinformatics systems, apparatuses, and methods executed on a quantum processing platform |
| WO2017201081A1 (en) | 2016-05-16 | 2017-11-23 | Agilome, Inc. | Graphene fet devices, systems, and methods of using the same for sequencing nucleic acids |
| US10600499B2 (en) | 2016-07-13 | 2020-03-24 | Seven Bridges Genomics Inc. | Systems and methods for reconciling variants in sequence data relative to reference sequence data |
| US11392600B2 (en) | 2016-09-22 | 2022-07-19 | Visa International Service Association | Techniques for in memory key range searches |
| CN107766400A (zh) * | 2017-05-05 | 2018-03-06 | 平安科技(深圳)有限公司 | 文本检索方法及系统 |
| CN110134695B (zh) * | 2019-05-21 | 2022-08-16 | 电子科技大学 | 一种面向流水线结构化数据查询的数据库智能分区方法 |
| CN118715566A (zh) | 2022-03-08 | 2024-09-27 | 因美纳有限公司 | 多通道软件加速基因组读段映射引擎 |
| CN115718750B (zh) * | 2022-11-25 | 2025-09-02 | 天津津航计算技术研究所 | 一种基于Cache的多核DSP并行编程优化方法 |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6223186B1 (en) * | 1998-05-04 | 2001-04-24 | Incyte Pharmaceuticals, Inc. | System and method for a precompiled database for biomolecular sequence information |
| US6112288A (en) * | 1998-05-19 | 2000-08-29 | Paracel, Inc. | Dynamic configurable system of parallel modules comprising chain of chips comprising parallel pipeline chain of processors with master controller feeding command and data |
| US6421613B1 (en) * | 1999-07-09 | 2002-07-16 | Pioneer Hi-Bred International, Inc. | Data processing of the maize prolifera genetic sequence |
| AU6611900A (en) * | 1999-07-30 | 2001-03-13 | Agy Therapeutics, Inc. | Techniques for facilitating identification of candidate genes |
| US6691109B2 (en) * | 2001-03-22 | 2004-02-10 | Turbo Worx, Inc. | Method and apparatus for high-performance sequence comparison |
-
2002
- 2002-05-06 CA CA002446262A patent/CA2446262A1/en not_active Abandoned
- 2002-05-06 WO PCT/US2002/014535 patent/WO2002090978A1/en not_active Ceased
- 2002-05-06 JP JP2002588186A patent/JP2005500594A/ja not_active Withdrawn
- 2002-05-06 US US10/139,905 patent/US6931401B2/en not_active Expired - Fee Related
- 2002-05-06 EP EP02725964A patent/EP1402254A1/en not_active Withdrawn
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011204261A (ja) * | 2004-07-02 | 2011-10-13 | Government Of The United States Of America As Represented By The Secretary Of The Navy | リシークエンシング病原体マイクロアレイ |
| JP2010134694A (ja) * | 2008-12-04 | 2010-06-17 | Fujitsu Ltd | Hsp数推定プログラム、hsp数推定装置、及びhsp数推定方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20030033279A1 (en) | 2003-02-13 |
| EP1402254A1 (en) | 2004-03-31 |
| WO2002090978A1 (en) | 2002-11-14 |
| US6931401B2 (en) | 2005-08-16 |
| CA2446262A1 (en) | 2002-11-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2005500594A (ja) | 高速の近似部分文字列検索ための方法および装置 | |
| Holley et al. | Bifrost: highly parallel construction and indexing of colored and compacted de Bruijn graphs | |
| US7231390B2 (en) | Apparatus and method for providing sequence database comparison | |
| Jacob et al. | Mercury BLASTP: Accelerating protein sequence alignment | |
| Krishnamurthy et al. | Biosequence similarity search on the Mercury system | |
| US7761462B2 (en) | Searching queries using database partitioning | |
| US7917299B2 (en) | Method and apparatus for performing similarity searching on a data stream with respect to a query string | |
| US20080133474A1 (en) | Bioinformatics computation using a maprreduce-configured computing system | |
| US20160019339A1 (en) | Bioinformatics tools, systems and methods for sequence assembly | |
| Buhler et al. | Mercury BLASTN: Faster DNA sequence comparison using a streaming hardware architecture | |
| US11580103B2 (en) | System and method for disjunctive joins using a lookup table | |
| Cui et al. | On efficient external-memory triangle listing | |
| US20220391390A1 (en) | System and method for disjunctive joins | |
| Jalili et al. | Next generation indexing for genomic intervals | |
| Langarita et al. | Compressed sparse FM-index: Fast sequence alignment using large K-steps | |
| Deshpande et al. | A platform for biological sequence comparison on parallel computers | |
| Cui et al. | Improving I/O complexity of triangle enumeration | |
| Xiao et al. | K-mer Counting: memory-efficient strategy, parallel computing and field of application for Bioinformatics | |
| KR20040036691A (ko) | 분산 컴퓨팅 환경에서의 유전자 및 단백질 유사서열 검색시스템 및 그 방법 | |
| US20020138464A1 (en) | Method and apparatus to index a historical database for efficient multiattribute SQL queries | |
| Xu et al. | GraphCP: An I/O-efficient concurrent graph processing framework | |
| Aziz et al. | Parallel generalized suffix tree construction for genomic data | |
| AU2002256495A1 (en) | Method and apparatus for high-speed approximate sub-string searches | |
| US12067014B2 (en) | Methods and systems for performing a vectorized delete in a distributed database system | |
| Schatz | High performance computing for DNA sequence alignment and assembly |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20050802 |