JPWO2018042609A1 - 文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム - Google Patents
文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム Download PDFInfo
- Publication number
- JPWO2018042609A1 JPWO2018042609A1 JP2018536629A JP2018536629A JPWO2018042609A1 JP WO2018042609 A1 JPWO2018042609 A1 JP WO2018042609A1 JP 2018536629 A JP2018536629 A JP 2018536629A JP 2018536629 A JP2018536629 A JP 2018536629A JP WO2018042609 A1 JPWO2018042609 A1 JP WO2018042609A1
- Authority
- JP
- Japan
- Prior art keywords
- character string
- block
- dictionary
- data
- character
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
- G06F40/242—Dictionaries
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- Biophysics (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Analytical Chemistry (AREA)
- Chemical & Material Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
データ解析を効率化するためには、計測された順に出力されるDNA配列データ(文字列データ)を、アルファベット順(辞書式順序)にソートすることが有効である。ソートされたデータに対しては、高速な検索が可能になるからである。特に、DNA配列データに適した方法として、BW(Burrows-Wheeler)変換(または、FMインデクス)を用いる方法が知られている(非特許文献1)。
つまり、本発明は、複数のCPUコアで構成されるマルチコアCPUと、メモリとを備える文字列データ解析装置により実行され、
前記メモリ上に展開される文字列辞書を分割した複数のブロックには、文字列データを構成するアルファベットおよび区切り文字が1文字以上で構成されるラベルとして、各ブロックにそれぞれ異なるラベルが付されており、
前記マルチコアCPUが、
入力される前記文字列データそれぞれについて、区切り文字のラベルが付されているブロックに対して、前記文字列データの末尾文字をブロックのエントリとして登録し、その末尾文字から前記文字列データの残りの文字列を未登録文字列として対応付け、
各ブロックのうちのエントリに前記未登録文字列が対応付けられている登録元ブロックを読み込み、前記登録元ブロックのラベルおよびエントリから特定される登録先ブロックに対して、前記登録元ブロックの前記未登録文字列の末尾文字を前記登録先ブロックに新たなエントリとして登録し、その新たなエントリから前記未登録文字列の残りの文字列を新たな未登録文字列として対応付けるエントリ登録処理について、互いに独立に実行可能なブロックのグループについて並列に実行し、
各ブロックの前記未登録文字列が無くなった状態で、各ブロックのエントリに登録されている文字列について、ブロックのラベルが示すアルファベットおよび区切り文字の順序で連結した文字列を前記文字列データが登録済みの前記文字列辞書のBW(Burrows-Wheeler)変換データとして出力することを特徴とする。
その他の手段は、後記する。
文字列データ解析装置1は、マルチコアCPU(Central Processing Unit)101と、メモリ102と、HDD103と、NIF104と、入力部105と、表示・出力部106とがバス107に接続された構成を備えている。
マルチコアCPU101は、複数のコアを備え並列計算を行うことができる中央処理部である。以下で説明する各種の処理は、マルチコアCPU101によるプログラムの実行を通じて実現される。
メモリ102は、プログラムや種々の作業用データなどが一時的に記憶される記憶部である。
HDD103は、文字列辞書112や種々の作業用データなどを記憶する記憶部として機能するハードディスクドライブである。HDD103に記憶される文字列辞書112は、文字列データ解析装置1に外部接続された記憶装置に記憶してもよいし、ネットワークを介して接続されたデータセンタなどに記憶してもよい。
入力部105は、コマンド入力やパラメータ入力などを行うキーボードなどの入力手段である。入力部105は、問合せ文字列(query sequence)121の入力を受け付ける。
表示・出力部106は、操作のためのGUI(Graphical User Interface)や、解析結果などを表示する。表示・出力部106は、問合せ文字列121を検索キーとした文字列辞書112からの検索結果122として、問合せ文字列121の出現回数(hits)などを表示する。なお、出現回数とする代わりに、1回以上出現したか(出現あり)、0回の出現か(出現なし)という出現の有無情報としてもよい。
ここで、患者501から採取したDNAサンプル502をDNAシーケンサ503で解析した結果のDNA配列データ504が、図1の文字列データ111として用いられる。
文字列辞書112は、それぞれの患者501ごとに独立のDNA配列辞書505であり、文字列データ111をもとに構築される。
S231として、マルチコアCPU101は、文字列データ111と正整数パラメータrを入力し、文字列辞書112を構築する(詳細は図4)。
S232として、マルチコアCPU101は、問合せ文字列121を入力する。
S233として、マルチコアCPU101は、文字列辞書112を用いた公知の高速検索方法(非特許文献1)を利用して、文字列データ111内での問合せ文字列121の出現回数を調べる。
S234として、マルチコアCPU101は、S233の出現回数を検索結果122として出力または表示する。
「ブロック」とは、構築中の文字列辞書112を分割したものであり、アルファベット文字または区切り文字を構成要素(エントリ)とするリストとして構成される。「空ブロック」とは、空のリストである。各ブロックは、共有メモリ上に配置される。
S301として、マルチコアCPU101は、正整数パラメータrを入力し、長さr以下の各ラベルに対してメモリ102上に空ブロックを作成する。
S302として、マルチコアCPU101は、処理Sとして、新規の文字列データ111を1本ずつNIF104を介して入力し、その入力文字列の末尾文字を$ブロックに登録し、入力文字列の残りの文字列をその末尾文字にリンクする。入力文字列の末尾文字は、長さ0の接尾辞(空文字列ε)とも言える。
S312として、マルチコアCPU101は、長さmの全てのアルファベット文字列wに対して、図5の処理P(w)を並列に実行する。
S313として、マルチコアCPU101は、mの値を1つ増やす。
S314として、マルチコアCPU101は、m<rか否かを判定する。S314でYesならS312に戻り、NoならS321に進む。
S322として、マルチコアCPU101は、長さr−1の全てのアルファベット文字列wに対して、図6の処理Q(w)を並列に実行する。
S331として、マルチコアCPU101は、各ブロック内の登録されたエントリ文字を連結したブロックごとの連結文字列を作成する。
S332として、マルチコアCPU101は、S331の連結文字列をブロックのラベル順に1本に連結した出力文字列を作成し、その出力文字列を文字列辞書112としてHDD103に出力する。
まず、処理P(w)について説明する。
S351として、マルチコアCPU101は、ポインタHをw$ブロック先頭にリセットする。
S352として、マルチコアCPU101は、全てのアルファベット文字cに対して処理I(c)を行う。
S361として、マルチコアCPU101は、ポインタHの参照先の登録文字をcとし、その登録文字cからリンクされた文字列(未登録文字列)をuとする。
S363として、マルチコアCPU101は、uの末尾文字をdとし、uから末尾文字dを除いた残りの文字列をvとする。
S364として、マルチコアCPU101は、ポインタK(c)の位置にdを挿入し、その挿入したdからvへのリンクを張る。
S365として、マルチコアCPU101は、u及びそのcからuへのリンクを削除する。
S371として、マルチコアCPU101は、ポインタK(c)を次のエントリに1つ分進める。
S372として、マルチコアCPU101は、Hはw$ブロック末尾か否かを判定する。S372でYesなら処理P(w)を終了し、NoならS373に進む。
S373として、マルチコアCPU101は、ポインタHを次のエントリに1つ分進める。
S353として、マルチコアCPU101は、r<m−1か否かを判定する。S353でYesならS354に、NoならS355に進む。
S354として、マルチコアCPU101は、ポインタK(c)をcw$ブロック先頭にリセットする。
S355として、マルチコアCPU101は、ポインタK(c)をcwブロック先頭にリセットする。
S201として、マルチコアCPU101は、変数aにアルファベットの最初の文字を代入する。例えば、アルファベット文字がAとTの2種類なら、変数aに「A」が代入される。
S202として、マルチコアCPU101は、ポインタK(a)を、処理P(w)がawブロック内に書き込んだ位置の直後の位置にリセットする。
S203として、マルチコアCPU101は、aをアルファベットの次の文字に更新する。例えば、アルファベット文字がAとTの2種類であり、現在の変数aに「A」が代入されているなら、次の「T」が変数aに代入される。
S204として、マルチコアCPU101は、S203で代入できるaが存在するか否かを判定する。S204でYesならS202に戻り、NoならS211に進む。
S212として、マルチコアCPU101は、図7の処理R(w、a)を逐次的に実行する。
S213として、マルチコアCPU101は、S203と同様に、aをアルファベットの次の文字に更新する。
S214として、マルチコアCPU101は、S204と同様に、S213で代入できるaが存在するか否かを判定する。S214でYesならS212に戻り、Noなら処理Q(w)を終了する。
S220として、マルチコアCPU101は、ポインタHをwaブロック先頭にリセットする。
S221として、マルチコアCPU101は、ポインタHの参照先の登録文字をcとし、そのcからのリンク先文字列をuとする。
S221bとして、マルチコアCPU101は、uが存在するか否かを判定する。S221bでYesならS221cに、NoならS222に進む。
S221cとして、マルチコアCPU101は、uが空文字列εか否かを判定する。S221cでYesならS223に、NoならS224に進む。
S223として、マルチコアCPU101は、ポインタK(c)の位置に区切り文字$を挿入する。
S224として、マルチコアCPU101は、uの末尾文字をdとし、uから末尾文字をdを除いた残りの文字列をvとする。
S225として、マルチコアCPU101は、ポインタK(c)の位置にdを挿入し、そのdからvへのリンクを張る。
S226として、マルチコアCPU101は、u及びcからuへのリンクを削除する。
S227として、マルチコアCPU101は、Hはwaブロック末尾か否かを判定する。S227でYesなら処理R(w、a)を終了し、NoならS228に進む。
S228として、マルチコアCPU101は、ポインタHを次のエントリに1つ分進める。
S301(空ブロック生成処理)では、$ブロック、A$ブロック、T$ブロック、AAブロック、ATブロック、TAブロック、TTブロックそれぞれの空ブロックが作成される。
S302(処理S)では、枠内400に示す処理が行われる。つまり空ブロックであった$ブロック412が、処理Sにより以下の3エントリが登録される。なお、枠内411には3行の文字列データ111が読み込まれている。
・処理Sとして、枠内411の1行目「AATTA」を、$ブロック412の新たなAとそのリンク先のAATT(符号413)として登録する。
・処理Sとして、枠内411の2行目「ATAAT」を、$ブロック412の新たなTとそのリンク先のATAA(符号414)として登録する。
・処理Sとして、枠内411の3行目「TATAT」を、$ブロック412の新たなTとそのリンク先のTATA(符号415)として登録する。
・処理P(ε)として、$ブロック412のAからリンクされるAATT(符号413)を、A$ブロック421の新たなTとそのリンク先のAATとして登録する。その登録後に$ブロック412のAを残しつつ、そのリンク先のAATT(符号413)とそのリンクを削除する。
・処理P(ε)として、$ブロック412のTからリンクされるATAA(符号414)を、T$ブロック422の新たなAとそのリンク先のATAとして登録する。その登録後に$ブロック412のTを残しつつ、そのリンク先のATAA(符号414)とそのリンクを削除する。
・処理P(ε)として、$ブロック412のTからリンクされるTATA(符号415)を、T$ブロック422の新たなAとそのリンク先のTATとして登録する。その登録後に$ブロック412のTを残しつつ、そのリンク先のTATA(符号415)とそのリンクを削除する。これにより、$ブロック412は、$ブロック481となる。
上記の例での今回の登録対象となる未登録文字列は、「AATT(符号413)」である。この未登録文字列へのリンク元となるエントリが属する登録元ブロックは、「$ブロック412」である。
前記のフローチャートにおいて、処理P(w)では、登録元ブロックをw$ブロック(S351)とし、未登録文字列を文字列u(S361)とし、リンク元のエントリをポインタHが示す位置にある文字c(S361)として説明した。
前記のフローチャートにおいて、処理P(w)では、登録先ブロックをcw$ブロック(S354)またはcwブロック(S355)とし、新たに登録されるエントリをポインタK(c)が示す位置に挿入される文字d(S363)とし、新たに登録されるリンク先の文字列を文字列v(S363)として説明した。
・処理P(T)として、T$ブロック422のAからリンクされるTATを、ATブロック432の新たなTとそのリンク先のTAとして登録する。その登録後にT$ブロック422のAを残しつつ、そのリンク先のTATとそのリンクを削除する。
その後、m=r=2となり、S314でNoとなるので、3回目(m=2)の処理P(w)は実行されない。
そして、TAブロック433の未登録文字列「AA」などが残っているので、S321でYesとなり、S322が実行される。
枠内440に示すように、S322から呼び出される1回目の処理Q(w)では、長さr−1の全てのアルファベット文字列はAとTの2通りがあるので、処理Q(A)と処理Q(T)とが並列に実行される。
処理Q(A)の入力グループ(枠内435)と、処理Q(A)の出力グループ(枠内437)とを示す。
処理Q(A)の入力グループ側では逐次的に参照すべきブロックを纏めてグループ化されている。処理Q(A)の出力グループ側では同時並行に書き込むべきブロックを纏めてグループ化されている。
・処理Q(A)の処理R(A、T)として、ATブロック432のAからリンクされるATを、AAブロック441の新たなTとそのリンク先のAとして登録する。その登録後にATブロック432のAを残しつつ、そのリンク先のATとそのリンクを削除する。
・処理Q(A)の処理R(A、T)として、ATブロック432のTからリンクされるTAを、TAブロック443の新たなAとそのリンク先のTとして登録する。その登録後にATブロック432のTを残しつつ、そのリンク先のTAとそのリンクを削除する。
上記の例での今回の登録対象となる未登録文字列は、「AT」である。この未登録文字列へのリンク元となるエントリが属する登録元ブロックは、「ATブロック432」である。
前記のフローチャートにおいて、R(w、a)では、登録元ブロックをwaブロック(S220)とし、未登録文字列を文字列u(S221)とし、リンク元のエントリをポインタHが示す位置にある文字c(S221)として説明した。
前記のフローチャートにおいて、R(w、a)では、登録先ブロックをawブロック(S202)とし、新たに登録されるエントリをポインタK(c)が示す位置に挿入される文字d(S224)とし、新たに登録されるリンク先の文字列を文字列v(S224)として説明した。つまり、R(w、a)の登録先ブロックは、cwブロックからなるグループ(cは任意の文字)であって、全てのaについて共通であり、また、S202でリセットされた同じポインタK(c)を順に引き継いで利用する。その結果、各cwブロックへの書き込みは辞書順に正しく行われる。
処理Q(T)の入力グループ(枠内436)と、処理Q(T)の出力グループ(枠内438)とを示す。
・処理Q(T)の処理R(T、A)として、TAブロック433のTからリンクされるAAを、TTブロック444の新たなAとそのリンク先のAとして登録する。その登録後にTAブロック433のTを残しつつ、そのリンク先のAAとそのリンクを削除する。
・処理Q(T)の処理R(T、T)として、TTブロック434にはリンクを有するエントリが無いので、処理をスキップする。
そして、AAブロック441の未登録文字列「A」などが残っているので、S321でYesとなり、S322が実行される。
枠内450に示すように、2回目の処理Q(w)でも、処理Q(A)と処理Q(T)とが並列に実行される。
処理Q(A)の入力グループ(枠内445)と、処理Q(A)の出力グループ(枠内447)とを示す。
・処理Q(A)の処理R(A、A)として、AAブロック441のTからリンクされるAを、TAブロック453の新たなAとそのリンク先のεとして登録する。この登録のための挿入位置439は、ポインタK(T)により指示される。その登録後にAAブロック441のTを残しつつ、そのリンク先のAとそのリンクを削除する。
・処理Q(A)の処理R(A、T)として、ATブロック442にはリンクを有するエントリが無いので、処理をスキップする。つまり、AAブロック451内へのポインタK(A)と、TAブロック453内へのポインタK(T)とを先に進める。
・処理Q(T)の処理R(T、A)として、TAブロック443のAからリンクされるTを、ATブロック452の新たなTとそのリンク先のεとして登録する。この登録のための挿入位置459は、ポインタK(A)により指示される。その登録後にTAブロック443のAを残しつつ、そのリンク先のTとそのリンクを削除する。
・処理Q(T)の処理R(T、T)として、TTブロック444のAからリンクされるAを、ATブロック452の新たなAとそのリンク先のεとして登録する。その登録後にTTブロック444のAを残しつつ、そのリンク先のAとそのリンクを削除する。
そして、TAブロック453の未登録文字列「ε」などが残っているので、S321でYesとなり、S322が実行される。
枠内460に示すように、3回目の処理Q(w)でも、処理Q(A)と処理Q(T)とが並列に実行される。
処理Q(A)の入力グループ(枠内455)と、処理Q(A)の出力グループ(枠内457)とを示す。
・処理Q(A)の処理R(A、A)として、AAブロック451にはリンクを有するエントリが無いので、処理をスキップする。つまり、AAブロック461内へのポインタK(A)とTAブロック463内へのポインタK(T)とを先に進める。
・処理Q(A)の処理R(A、T)として、ATブロック452のTからリンクされるεを、TAブロック463の新たな$として登録する。その登録後にATブロック452のTを残しつつ、そのリンク先のεとそのリンクを削除する。
・処理Q(A)の処理R(A、T)として、ATブロック452のAからリンクされるεを、AAブロック461の新たな$として登録する。その登録後にATブロック452のAを残しつつ、そのリンク先のεとそのリンクを削除する。
・処理Q(T)の処理R(T、A)として、TAブロック453のAからリンクされるεを、ATブロック462の新たな$として登録する。その登録後にTAブロック453のAを残しつつ、そのリンク先のεとそのリンクを削除する。
・処理Q(T)の処理R(T、T)として、TTブロック454にはリンクを有するエントリが無いので、処理をスキップする。つまり、ATブロック462内へのポインタK(A)と、TTブロック464内へのポインタK(T)とを先に進める。
これにより、未登録文字列がすべて解消されたので、S321でNoとなり、S331が実行される。
S331(ブロックごとの連結文字列の作成処理)では、ラベル順にソートした各ブロック($ブロック481、A$ブロック482、AAブロック461、ATブロック462、T$ブロック483、TAブロック463、TTブロック464)に登録されたエントリを、図示した矢印の順に文字列471〜477として抽出する。
S332(文字列辞書112の出力処理)では、枠内490に示すように、文字列471〜477を順に1本に連結した出力文字列を文字列辞書112として作成する。
ここで、接尾辞をブロックに登録するとは、接尾辞に先行する文字(但し、接尾辞が文字列全体に一致する場合は区切り文字$)をブロックに登録することである。ブロックに登録された各文字に対して、それに後続する接尾辞を復元する効率的な計算方法は公知である(非特許文献1)。また、未登録文字列から接尾辞を除いた残りの文字列を、今回登録した接尾辞にリンクして一時的に保持する。
前記の例では、アルファベット文字をAとTの2種類としたが、アルファベット文字の種類をh種類(文字a1、a2、…、ah)に拡張する。
処理P(w)が読み込む登録元ブロックはw$ブロックであり、各mに対して、文字列wが異なれば相異なる。
処理P(w)が書き出す登録先ブロックは、mがr−1未満ならば、a1w$ブロック、a2w$ブロック、…、ahw$ブロックであり、m=r−1ならば、a1wブロック、a2wブロック、…、ahwブロックである。登録先ブロックでは、いずれの場合も、文字列wが異なれば互いに排反である。従って、各mに対して、処理P(w)は互いに干渉することなく、独立に並列に実行可能となる。
処理Q(w)が読み込む登録元ブロックはwa1ブロック、wa2ブロック、…、wahブロックであり、文字列wが異なれば互いに排反である。
処理Q(w)が書き出す登録先ブロックは、a1wブロック、a2wブロック、…、ahwブロックであり、これらも、文字列wが異なれば互いに排反である。従って、処理Q(w)は、互いに干渉することなく、独立に並列に実行可能となる。
処理R(w、a1)、R(w、a2)、…、R(w、ah)での登録先ブロックはh個あり、それらは、a1wブロック、a2wブロック、…、ahwブロックで共通である。これらの登録処理はアルファベット順に逐次的に実行されるため、各ブロックへの登録処理もアルファベット順に正しく行われる。
このように、順番を守って逐次実行しなければならない処理R(w、a)の数は、アルファベットのサイズに等しく、パラメータrには依存せず一定である。従って、パラメータrを増やして、並列処理としての粒度を細かくしても、逐次実行の待ち合わせの長さは一定に保たれ、待ち合わせによるCPU稼働率低下を生じることはない。
S301で説明したように、r=2でアルファベット文字がAとTの2種類のときには、7種類のブロック($ブロック、A$ブロック、T$ブロック、AAブロック、ATブロック、TAブロック、TTブロック)を使用した。つまり、計算式「7=2の3乗−1」を一般化した計算式「(ブロック数)=((hの(r+1)乗−1)/(h−1)」により、ブロック数を求めることができる。そして、マルチコアCPU101は、例えば、(CPUコア数)×K=(ブロック数)、(Kは例えば数十倍を示す10〜90の定数)となるように、CPUコア数からブロック数を求め、そのブロック数を前記の一般化した計算式に代入することにより、パラメータrを自動計算することができる。
例えば、独立に並列実行可能な処理Q(w)の数は、長さr−1の文字列wの数だけある。この数は、アルファベットのサイズをhとすると、hのr−1乗に等しい。従って、DNA配列データのようにh=4の場合であっても、処理Q(w)の数が利用可能なCPUコア数の数十倍程度になるようにrを選ぶことができる。
これにより、CPUコア数の数十倍程度の部分処理に細分化する方法を提供し、また、部分処理どうしの待ち合わせによるプロセッサ稼働率の低下を回避する方法を提供することができる。
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。
また、前記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
101 マルチコアCPU
102 メモリ
103 HDD
104 NIF
105 入力部
106 表示・出力部
107 バス
111 文字列データ
112 文字列辞書
121 問合せ文字列
122 検索結果
501 患者
502 DNAサンプル
503 DNAシーケンサ
504 DNA配列データ
505 DNA配列辞書
521 解析指示
522 解析結果
511 遺伝子パネル
512 データベース
Claims (6)
- 複数のCPUコアで構成されるマルチコアCPUと、メモリとを備える文字列データ解析装置により実行され、
前記メモリ上に展開される文字列辞書を分割した複数のブロックには、文字列データを構成するアルファベットおよび区切り文字が1文字以上で構成されるラベルとして、各ブロックにそれぞれ異なるラベルが付されており、
前記マルチコアCPUは、
入力される前記文字列データそれぞれについて、区切り文字のラベルが付されているブロックに対して、前記文字列データの末尾文字をブロックのエントリとして登録し、その末尾文字から前記文字列データの残りの文字列を未登録文字列として対応付け、
各ブロックのうちのエントリに前記未登録文字列が対応付けられている登録元ブロックを読み込み、前記登録元ブロックのラベルおよびエントリから特定される登録先ブロックに対して、前記登録元ブロックの前記未登録文字列の末尾文字を前記登録先ブロックに新たなエントリとして登録し、その新たなエントリから前記未登録文字列の残りの文字列を新たな未登録文字列として対応付けるエントリ登録処理について、互いに独立に実行可能なブロックのグループについて並列に実行し、
各ブロックの前記未登録文字列が無くなった状態で、各ブロックのエントリに登録されている文字列について、ブロックのラベルが示すアルファベットおよび区切り文字の順序で連結した文字列を前記文字列データが登録済みの前記文字列辞書のBW(Burrows-Wheeler)変換データとして出力することを特徴とする
文字列辞書の構築方法。 - 前記マルチコアCPUは、前記メモリ上に展開されるブロックの数を決定するための各ブロックのラベルの長さを、前記マルチコアCPUを構成するコア数をもとに計算することを特徴とする
請求項1に記載の文字列辞書の構築方法。 - 前記マルチコアCPUは、前記エントリ登録処理として、逐次的に読み込む前記登録元ブロックのグループと、同時並行に書き込む前記登録先ブロックのグループとをそれぞれグループ化し、前記登録元ブロックのグループ間では前記登録元ブロックの読み込み処理を並列に実行し、前記登録元ブロックのグループ内では前記登録元ブロックの読み込み処理を逐次的に実行することを特徴とする
請求項1に記載の文字列辞書の構築方法。 - 請求項1ないし請求項3のいずれか1項に記載の文字列辞書の構築方法により構築された前記文字列辞書を記憶する記憶手段と、制御手段とを有する検索装置により実行され、
前記制御手段は、
入力手段を介して、問合せ文字列の入力を受け付け、
前記文字列辞書に登録された前記文字列データにおける前記問合せ文字列の出現回数を検索し、
出力手段を介して、検索した出現回数を出力することを特徴とする
文字列辞書の検索方法。 - 前記文字列辞書は、前記文字列データとして患者ごとのDNAサンプルをDNAシーケンサで解析した結果のDNA配列データが登録されるDNA配列辞書であり、
前記入力手段は、あらかじめ遺伝子パネルとして設定されている変異ありのDNA配列データを、前記問合せ文字列として受け付け、
前記制御手段は、前記文字列辞書に登録された前記文字列データにおける前記問合せ文字列の出現回数を検索することで、前記患者のDNA配列データに変異が発生しているか否かを解析し、
前記出力手段を介して、出現した変異ありのDNA配列データと、そのDNA配列データに対して前記遺伝子パネルで対応づけられている付帯情報とを出力することを特徴とする
請求項4に記載の文字列辞書の検索方法。 - 請求項1に記載の文字列辞書の構築方法を実行する前記文字列データ解析装置と、
請求項5に記載の文字列辞書の検索方法を実行する前記検索装置と、
請求項5に記載の文字列辞書の検索方法において前記患者ごとのDNAサンプルを解析し、その解析結果をDNA配列データとして出力する前記DNAシーケンサとを含めて構成されることを特徴とする
文字列辞書の処理システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2016/075747 WO2018042609A1 (ja) | 2016-09-02 | 2016-09-02 | 文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2018042609A1 true JPWO2018042609A1 (ja) | 2019-04-18 |
JP6622921B2 JP6622921B2 (ja) | 2019-12-18 |
Family
ID=61309168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018536629A Active JP6622921B2 (ja) | 2016-09-02 | 2016-09-02 | 文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム |
Country Status (6)
Country | Link |
---|---|
US (1) | US10867134B2 (ja) |
JP (1) | JP6622921B2 (ja) |
CN (1) | CN109643322B (ja) |
DE (1) | DE112016007194T5 (ja) |
GB (1) | GB2567390B (ja) |
WO (1) | WO2018042609A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2765686C1 (ru) * | 2021-07-02 | 2022-02-03 | Общество с ограниченной ответственностью «Система-БиоТех» | Способ прогнозирования рисков тяжелого течения респираторных заболеваний вирусной природы |
CN113626593B (zh) * | 2021-07-13 | 2024-04-19 | 深圳希施玛数据科技有限公司 | 一种Excel文件校验方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009116559A (ja) * | 2007-11-06 | 2009-05-28 | Hitachi Ltd | 大量配列の一括検索方法及び検索システム |
WO2014132497A1 (ja) * | 2013-02-28 | 2014-09-04 | 株式会社日立ハイテクノロジーズ | データ解析装置、及びその方法 |
US9137336B1 (en) * | 2011-06-30 | 2015-09-15 | Emc Corporation | Data compression techniques |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0222759A (ja) * | 1988-07-11 | 1990-01-25 | Sharp Corp | 中国語文章作成装置 |
JP2772125B2 (ja) * | 1990-08-08 | 1998-07-02 | 富士通株式会社 | 辞書検索方式 |
JP2997151B2 (ja) * | 1993-08-06 | 2000-01-11 | 松下電器産業株式会社 | 漢字変換装置 |
JPH07129572A (ja) * | 1993-11-02 | 1995-05-19 | Matsushita Electric Ind Co Ltd | 漢字変換装置 |
US6466902B1 (en) * | 1998-12-28 | 2002-10-15 | Sony Corporation | Method and apparatus for dictionary sorting |
US6363174B1 (en) * | 1998-12-28 | 2002-03-26 | Sony Corporation | Method and apparatus for content identification and categorization of textual data |
US7209926B2 (en) * | 2002-10-24 | 2007-04-24 | Research In Motion Limited | Methods and apparatus for lexicographically sorting cyclic data |
EP1611534A4 (en) * | 2003-04-04 | 2010-02-03 | Yahoo Inc | SYSTEM FOR PRODUCING SEARCH RESULTS, INCLUDING SEARCH FOR SUB-DOMAIN NOTES AND PROVIDING SPONSORED RESULTS BY SUB-DOMAIN |
US20150235143A1 (en) * | 2003-12-30 | 2015-08-20 | Kantrack Llc | Transfer Learning For Predictive Model Development |
US8156156B2 (en) * | 2006-04-06 | 2012-04-10 | Universita Di Pisa | Method of structuring and compressing labeled trees of arbitrary degree and shape |
US7961960B2 (en) * | 2006-08-24 | 2011-06-14 | Dell Products L.P. | Methods and apparatus for reducing storage size |
US8112624B2 (en) * | 2006-11-29 | 2012-02-07 | Red Hat, Inc. | Method and system for certificate revocation list compression |
US9362948B2 (en) * | 2008-02-14 | 2016-06-07 | Broadcom Corporation | System, method, and computer program product for saving and restoring a compression/decompression state |
US20090063465A1 (en) * | 2007-08-29 | 2009-03-05 | Yahoo! Inc. | System and method for string processing and searching using a compressed permuterm index |
JP4734363B2 (ja) * | 2008-03-14 | 2011-07-27 | 株式会社東芝 | テキスト検索システム及びプログラム |
US8301437B2 (en) * | 2008-07-24 | 2012-10-30 | Yahoo! Inc. | Tokenization platform |
US8447588B2 (en) * | 2008-12-18 | 2013-05-21 | Palo Alto Research Center Incorporated | Region-matching transducers for natural language processing |
US8356060B2 (en) * | 2009-04-30 | 2013-01-15 | Oracle International Corporation | Compression analyzer |
JP4968306B2 (ja) * | 2009-09-30 | 2012-07-04 | カシオ計算機株式会社 | 電子機器及びプログラム |
US8312026B2 (en) * | 2009-12-22 | 2012-11-13 | At&T Intellectual Property I, L.P. | Compressing massive relational data |
WO2011139687A1 (en) * | 2010-04-26 | 2011-11-10 | The Trustees Of The Stevens Institute Of Technology | Systems and methods for automatically detecting deception in human communications expressed in digital form |
US20120254333A1 (en) * | 2010-01-07 | 2012-10-04 | Rajarathnam Chandramouli | Automated detection of deception in short and multilingual electronic messages |
US8533166B1 (en) * | 2010-08-20 | 2013-09-10 | Brevity Ventures LLC | Methods and systems for encoding/decoding files and transmission thereof |
US8645338B2 (en) * | 2010-10-28 | 2014-02-04 | International Business Machines Corporation | Active memory expansion and RDBMS meta data and tooling |
US8554747B2 (en) * | 2010-11-11 | 2013-10-08 | International Business Machines Corporation | Active memory expansion in a database environment to query needed/uneeded results |
JP5647919B2 (ja) * | 2011-03-07 | 2015-01-07 | 株式会社Nttドコモ | 文字認識装置、文字認識方法、文字認識システム、および文字認識プログラム |
US10025774B2 (en) * | 2011-05-27 | 2018-07-17 | The Board Of Trustees Of The Leland Stanford Junior University | Method and system for extraction and normalization of relationships via ontology induction |
EP2724278B1 (en) | 2011-06-21 | 2020-09-16 | Illumina Cambridge Limited | Methods and systems for data analysis |
US8694474B2 (en) * | 2011-07-06 | 2014-04-08 | Microsoft Corporation | Block entropy encoding for word compression |
US8990217B2 (en) * | 2011-07-13 | 2015-03-24 | International Business Machines Corporation | Lossless compression of high nominal-range data |
US9075816B2 (en) * | 2011-08-24 | 2015-07-07 | Google Inc. | System and method of compressing data in font files |
WO2013072947A1 (ja) * | 2011-11-14 | 2013-05-23 | 株式会社日立製作所 | 秘匿文字列検索システム |
CN103106220B (zh) * | 2011-11-15 | 2016-08-03 | 阿里巴巴集团控股有限公司 | 一种搜索方法、搜索装置及一种搜索引擎系统 |
JP2013174987A (ja) * | 2012-02-24 | 2013-09-05 | Hitachi Consumer Electronics Co Ltd | ネットワーク端末システム、及び端末装置 |
US8874908B2 (en) * | 2012-11-07 | 2014-10-28 | Wolfgang Raudaschl | Process for storing data on a central server |
WO2014116276A1 (en) * | 2013-01-24 | 2014-07-31 | Kantrack Llc | Individualized medicine system |
CN109766890B (zh) * | 2013-06-03 | 2020-11-06 | 支付宝(中国)网络技术有限公司 | 信息识别方法、设备和系统 |
IL283586B2 (en) * | 2013-06-21 | 2023-11-01 | Sequenom Inc | Methods and processes for non-invasive evaluation of genetic variations |
US20150006475A1 (en) * | 2013-06-26 | 2015-01-01 | Katherine H. Guo | Data deduplication in a file system |
US9547588B1 (en) * | 2013-09-10 | 2017-01-17 | Violin Memory Inc. | System and method of data storage in flash memory |
US10235377B2 (en) * | 2013-12-23 | 2019-03-19 | Sap Se | Adaptive dictionary compression/decompression for column-store databases |
AU2015211043A1 (en) * | 2014-01-29 | 2016-08-18 | Relican Analytics, Inc. | Optimized data condenser and method |
US9600599B2 (en) * | 2014-05-13 | 2017-03-21 | Spiral Genetics, Inc. | Prefix burrows-wheeler transformation with fast operations on compressed data |
US9489414B2 (en) * | 2014-05-30 | 2016-11-08 | Spiral Genetics, Inc. | Prefix burrows-wheeler transformations for creating and searching a merged lexeme set |
WO2016139534A2 (en) * | 2015-03-02 | 2016-09-09 | Strand Life Sciences Private Limited | Apparatuses and methods for determining a patient's response to multiple cancer drugs |
US10169362B2 (en) * | 2016-07-07 | 2019-01-01 | Cross Commerce Media, Inc. | High-density compression method and computing system |
US10678613B2 (en) * | 2017-10-31 | 2020-06-09 | Seven Bridges Genomics Inc. | System and method for dynamic control of workflow execution |
-
2016
- 2016-09-02 CN CN201680088917.9A patent/CN109643322B/zh active Active
- 2016-09-02 GB GB1902142.7A patent/GB2567390B/en active Active
- 2016-09-02 JP JP2018536629A patent/JP6622921B2/ja active Active
- 2016-09-02 US US16/325,737 patent/US10867134B2/en active Active
- 2016-09-02 DE DE112016007194.9T patent/DE112016007194T5/de active Pending
- 2016-09-02 WO PCT/JP2016/075747 patent/WO2018042609A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009116559A (ja) * | 2007-11-06 | 2009-05-28 | Hitachi Ltd | 大量配列の一括検索方法及び検索システム |
US9137336B1 (en) * | 2011-06-30 | 2015-09-15 | Emc Corporation | Data compression techniques |
WO2014132497A1 (ja) * | 2013-02-28 | 2014-09-04 | 株式会社日立ハイテクノロジーズ | データ解析装置、及びその方法 |
Also Published As
Publication number | Publication date |
---|---|
GB201902142D0 (en) | 2019-04-03 |
CN109643322A (zh) | 2019-04-16 |
US10867134B2 (en) | 2020-12-15 |
CN109643322B (zh) | 2022-11-29 |
US20190205394A1 (en) | 2019-07-04 |
WO2018042609A1 (ja) | 2018-03-08 |
GB2567390B (en) | 2021-10-06 |
JP6622921B2 (ja) | 2019-12-18 |
DE112016007194T5 (de) | 2019-07-04 |
GB2567390A (en) | 2019-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11810648B2 (en) | Systems and methods for adaptive local alignment for graph genomes | |
Schbath et al. | Mapping reads on a genomic sequence: an algorithmic overview and a practical comparative analysis | |
Elmsallati et al. | Global alignment of protein-protein interaction networks: A survey | |
JP5751251B2 (ja) | 意味抽出装置、意味抽出方法、および、プログラム | |
JP5995409B2 (ja) | コンピュータ解析のためにテキスト文書を表現するためのグラフィカル・モデル | |
US20140344195A1 (en) | System and method for machine learning and classifying data | |
US11062793B2 (en) | Systems and methods for aligning sequences to graph references | |
JP5194818B2 (ja) | データ分類方法およびデータ処理装置 | |
Sadiq et al. | NvPD: novel parallel edit distance algorithm, correctness, and performance evaluation | |
JP6622921B2 (ja) | 文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム | |
Vineetha et al. | SPARK-MSNA: Efficient algorithm on Apache Spark for aligning multiple similar DNA/RNA sequences with supervised learning | |
Gonzalez-Dominguez et al. | MPIGeneNet: parallel calculation of gene co-expression networks on multicore clusters | |
Comin et al. | Efficient parallel construction of suffix trees for genomes larger than main memory | |
US20170169159A1 (en) | Repetition identification | |
Satish et al. | Mapreduce based parallel suffix tree construction for human genome | |
JP2019148859A (ja) | フローダイアグラムを用いたモデル開発環境におけるデザインパターンの発見を支援する装置および方法 | |
Oujja et al. | High-performance computing for SARS-CoV-2 RNAs clustering: a data science‒based genomics approach | |
Al-Absi et al. | Long read alignment with parallel MapReduce cloud platform | |
Bonizzoni et al. | Kfinger: Capturing overlaps between long reads by using lyndon fingerprints | |
Abdullah et al. | Genomics analyser: a big data framework for analysing genomics data | |
Lee et al. | Protein secondary structure prediction using RT-RICO: A rule-based approach | |
Comin et al. | Parallel continuous flow: a parallel suffix tree construction tool for whole genomes | |
Xia | An edit distance algorithm with block swap | |
WO2022130578A1 (ja) | 類似度判定プログラム、類似度判定装置、及び、類似度判定方法 | |
JP7396190B2 (ja) | 抽出プログラム、抽出方法及び抽出装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181207 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20191119 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20191122 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6622921 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |