JPWO2018042609A1 - 文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム - Google Patents

文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム Download PDF

Info

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
Application number
JP2018536629A
Other languages
English (en)
Other versions
JP6622921B2 (ja
Inventor
木村 宏一
宏一 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi High Tech Corp
Original Assignee
Hitachi High Technologies Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi High Technologies Corp filed Critical Hitachi High Technologies Corp
Publication of JPWO2018042609A1 publication Critical patent/JPWO2018042609A1/ja
Application granted granted Critical
Publication of JP6622921B2 publication Critical patent/JP6622921B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/242Dictionaries
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B30/00ICT specially adapted for sequence analysis involving nucleotides or amino acids
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; 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

文字列データ解析装置(1)のマルチコアCPU(101)は、文字列辞書(112)を分割した複数のブロックをメモリ(102)上に展開し、文字列データ(111)の未登録文字列を末尾文字から1文字ずつ各ブロックに新たなエントリとして登録するエントリ登録処理について、互いに独立に実行可能なブロックのグループについて並列に実行し、各ブロックの未登録文字列が無くなった状態で、各ブロックのエントリに登録されている文字列を連結した文字列を文字列データ(111)が登録済みの文字列辞書(112)のBW変換データとして出力する。

Description

本発明は、文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システムに関する。
DNA(DeoxyriboNucleic Acid)シーケンシング技術の進歩により、DNAシーケンサが出力するDNA配列データの量は急速に増大しつつある。そのため、大量に得られたDNA配列データの中に有害な変異配列が含まれていないかを調べる変異解析など、データ解析に要する計算コストも増大しつつある。
データ解析を効率化するためには、計測された順に出力されるDNA配列データ(文字列データ)を、アルファベット順(辞書式順序)にソートすることが有効である。ソートされたデータに対しては、高速な検索が可能になるからである。特に、DNA配列データに適した方法として、BW(Burrows-Wheeler)変換(または、FMインデクス)を用いる方法が知られている(非特許文献1)。
DNA配列データをBW変換したものはDNAと区切り文字($)を要素とする1本の配列として表現され、その各要素は、元のDNA配列データ内にある全ての配列の全ての接尾辞をアルファベット順にソートして列挙したリストの各要素と一対一に対応する。さらに、BW変換した結果を、全ての接尾辞をアルファベット順にソートした辞書として利用することができる効率的な方法が知られている(非特許文献1)。そこで、BW変換結果を文字列辞書ともよぶ。
DNA配列データのサイズは大きいため、文字列辞書の構築にも大きな計算コストがかかる。文字列辞書を高速に構築する方法は知られている(特許文献1、非特許文献2、非特許文献3)。さらに高速化するため、文字列辞書の構築を、塩基の種類(アルファベット文字)A、C、G、Tごとに並列化する方法も用いられている(非特許文献4)。その結果、塩基の種類数(アルファベット・サイズ)にほぼ等しい並列度が得られ、約4倍の高速化率が得られるが、それ以上の並列度は得られていない。
米国特許第8798936号明細書
Ferragina P, Manzini G. Proceedings of the 41st Symposium on Foundations of Computer Science (FOCS 2000). Los Alamitos, CA, USA: IEEE Computer Society; 2000. Opportunistic data structures with applications; p. 390-398. Lippert, Ross A., Clark M. Mobarry, and Brian P. Walenz. "A space-efficient construction of the Burrows-Wheeler transform for genomic data." Journal of Computational Biology 12.7 (2005): 943-951. Ferragina P, Gagie T, Manzini G. "Lightweight Data Indexing and Compression in External Memory." LATIN 2010: Theoretical Informatics. Volume 6034 of the series Lecture Notes in Computer Science, Springer, pp 697-710. Li, Heng. "Fast construction of FM-index for long sequence reads." Bioinformatics (2014): btu541.
一方、近年の計算機では、複数のマルチコア化されたCPUを用いたマルチ・スレッド処理により、数十倍の並列度で数十倍の高速化が可能な場合が多い。しかし、大量の文字列データに対する文字列辞書の構築を文字種ごとに並列化する方法(非特許文献4)では、並列度はアルファベットのサイズ程度(例えば、DNA配列データの場合であれば、塩基は4種類なので、4倍程度)に抑えられる。従って、数十以上のCPUコアを備えた計算機では、全てのコアを有効に使った並列計算による高速化を行うことはできない。
よって、並列度をさらに向上させるような並列計算の手法を検討する。一般に、処理を高速化するために、全体処理を部分処理に分割して並列に実行することはよく行われている。このとき、部分処理の間では、互いの計算結果を参照し合ったり、共有メモリや入出力デバイスなどにアクセスしたりするため、待ち合わせ(同期)が必要となる場合が多い。このような待ち合わせが頻繁に生じると、プロセッサの稼働率が低下し、処理の高速化が妨げられる原因となる。
また、一般に、部分処理に要する計算時間にはバラツキがあり、部分処理の数がCPUコア数程度であれば、CPUコアの計算負荷にはアンバランスが生じ、全てのCPUコアを有効に利用することが難しくなる。そこで、全てのCPUコアへの計算負荷分散を均等化して、効率的な高速化を行うためには、コア数よりも充分に多数の部分処理に細分化することが必要になる。それができれば、マルチ・スレッドによる動的負荷分散により、コア間の計算負荷を均等化でき、全てのコアを有効に使った効率的な並列化による高速化が可能となる。
そこで、本発明は、文字列データを登録する文字列辞書の構築処理において、CPUコアの数を有効に利用した高速化が行えるような並列化の手法を提供することを、主な目的とする。
前記課題を解決するために、本発明の文字列辞書の構築方法は、以下の各処理を実行する方法である。
つまり、本発明は、複数のCPUコアで構成されるマルチコアCPUと、メモリとを備える文字列データ解析装置により実行され、
前記メモリ上に展開される文字列辞書を分割した複数のブロックには、文字列データを構成するアルファベットおよび区切り文字が1文字以上で構成されるラベルとして、各ブロックにそれぞれ異なるラベルが付されており、
前記マルチコアCPUが、
入力される前記文字列データそれぞれについて、区切り文字のラベルが付されているブロックに対して、前記文字列データの末尾文字をブロックのエントリとして登録し、その末尾文字から前記文字列データの残りの文字列を未登録文字列として対応付け、
各ブロックのうちのエントリに前記未登録文字列が対応付けられている登録元ブロックを読み込み、前記登録元ブロックのラベルおよびエントリから特定される登録先ブロックに対して、前記登録元ブロックの前記未登録文字列の末尾文字を前記登録先ブロックに新たなエントリとして登録し、その新たなエントリから前記未登録文字列の残りの文字列を新たな未登録文字列として対応付けるエントリ登録処理について、互いに独立に実行可能なブロックのグループについて並列に実行し、
各ブロックの前記未登録文字列が無くなった状態で、各ブロックのエントリに登録されている文字列について、ブロックのラベルが示すアルファベットおよび区切り文字の順序で連結した文字列を前記文字列データが登録済みの前記文字列辞書のBW(Burrows-Wheeler)変換データとして出力することを特徴とする。
その他の手段は、後記する。
本発明によれば、文字列データを登録する文字列辞書の構築処理において、CPUコアの数を有効に利用した高速化が行えるような並列化の手法を提供することができる。
本発明の一実施形態に関する文字列検索システムを示す構成図である。 本発明の一実施形態に関する図1の文字列検索システムをDNA解析システムに適用した例である。 本発明の一実施形態に関する図1の文字列検索システムの全体処理を示すフローチャートである。 本発明の一実施形態に関する文字列辞書の構築処理の詳細を示すフローチャートである。 本発明の一実施形態に関する処理P(w)および処理I(c)の詳細を示すフローチャートである。 本発明の一実施形態に関する処理Q(w)の詳細を示すフローチャートである。 本発明の一実施形態に関する処理R(w、a)の詳細を示すフローチャートである。 本発明の一実施形態に関する処理Sおよび処理P(w)の具体例を示す説明図である。 本発明の一実施形態に関する図8の後に実行される、処理Q(w)および処理R(w、a)の具体例を示す説明図である。 本発明の一実施形態に関する図9の後に実行される、処理Q(w)および処理R(w、a)の具体例を示す説明図である。 本発明の一実施形態に関する図10の後に実行される、処理Q(w)および処理R(w、a)の具体例を示す説明図である。 本発明の一実施形態に関する図11の後に実行される、文字列辞書の出力処理を示す説明図である。
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
図1は、文字列検索システムを示す構成図である。文字列データ解析装置1は、通常の計算機の構成を有するサーバなどのコンピュータで実現される。
文字列データ解析装置1は、マルチコアCPU(Central Processing Unit)101と、メモリ102と、HDD103と、NIF104と、入力部105と、表示・出力部106とがバス107に接続された構成を備えている。
マルチコアCPU101は、複数のコアを備え並列計算を行うことができる中央処理部である。以下で説明する各種の処理は、マルチコアCPU101によるプログラムの実行を通じて実現される。
メモリ102は、プログラムや種々の作業用データなどが一時的に記憶される記憶部である。
HDD103は、文字列辞書112や種々の作業用データなどを記憶する記憶部として機能するハードディスクドライブである。HDD103に記憶される文字列辞書112は、文字列データ解析装置1に外部接続された記憶装置に記憶してもよいし、ネットワークを介して接続されたデータセンタなどに記憶してもよい。
NIF104は、インターネットなどに接続するためのネットワークインタフェースである。文字列データ解析装置1は、NIF104が接続するLAN(Local Area Network)やインターネットなどを通じて外部装置と接続し、接続先にある文字列データ111にアクセスする。この文字列データ111は、文字列辞書112に登録されるデータである。
入力部105は、コマンド入力やパラメータ入力などを行うキーボードなどの入力手段である。入力部105は、問合せ文字列(query sequence)121の入力を受け付ける。
表示・出力部106は、操作のためのGUI(Graphical User Interface)や、解析結果などを表示する。表示・出力部106は、問合せ文字列121を検索キーとした文字列辞書112からの検索結果122として、問合せ文字列121の出現回数(hits)などを表示する。なお、出現回数とする代わりに、1回以上出現したか(出現あり)、0回の出現か(出現なし)という出現の有無情報としてもよい。
図2は、図1の文字列検索システムをDNA解析システムに適用した例である。なお、文字列データ111としてDNA配列データを用いれば、文字列検索システムをDNA配列データの検索システムに適用できる。また、文字列データ111としてアミノ酸配列(蛋白)データを用いれば、文字列検索システムを蛋白データの検索システムに適用できる。
ここで、患者501から採取したDNAサンプル502をDNAシーケンサ503で解析した結果のDNA配列データ504が、図1の文字列データ111として用いられる。
文字列辞書112は、それぞれの患者501ごとに独立のDNA配列辞書505であり、文字列データ111をもとに構築される。
まず、入力部105は、どの患者に対してどの遺伝子パネルを用いて変異解析を行うかという解析指示521を受け付ける。文字列データ解析装置1は、NIF104を介して、指示された遺伝子パネル511の情報をネットワークに接続されたデータベース512から取得する。遺伝子パネル511の情報には、各遺伝子の野生型配列Wと変異型配列M、各変異に関する付帯情報(その変異が原因となって生じる病状、効果的な治療法や薬剤など)が含まれる。
次に、文字列データ解析装置1は、遺伝子パネル511内の各遺伝子に対して、その野生型配列と変異型配列とを問合せ文字列121として、DNA配列辞書505に問合せ文字列121の各配列が登録されているか否かを調べることによって、問合せ文字列121が患者501のDNAサンプル502に検出されるか否かを判定する。表示・出力部106は、この判定結果を解析結果522として表示または出力する。
また、表示・出力部106は、解析結果522で検出された変異に対しては、遺伝子パネル511に含まれる付帯情報へのリンクをGUI(Graphic User Interface)などにより提供する。このリンクを辿ることにより、患者501の病状の進行を予測するための参照情報や、患者501に適した治療法や薬剤を選択するための参照情報が得られる。
図3は、図1の文字列検索システムの全体処理を示すフローチャートである。
S231として、マルチコアCPU101は、文字列データ111と正整数パラメータrを入力し、文字列辞書112を構築する(詳細は図4)。
S232として、マルチコアCPU101は、問合せ文字列121を入力する。
S233として、マルチコアCPU101は、文字列辞書112を用いた公知の高速検索方法(非特許文献1)を利用して、文字列データ111内での問合せ文字列121の出現回数を調べる。
S234として、マルチコアCPU101は、S233の出現回数を検索結果122として出力または表示する。
以下、文字列辞書112の構築処理(S231)で使用するデータ構造を定義する。
「ブロック」とは、構築中の文字列辞書112を分割したものであり、アルファベット文字または区切り文字を構成要素(エントリ)とするリストとして構成される。「空ブロック」とは、空のリストである。各ブロックは、共有メモリ上に配置される。
「ラベル」とは、ブロックの識別子であり、未登録文字列の登録元や登録先となるブロックを特定するために使用される。ラベルの表記は、長さr(rを正整数パラメータ)のアルファベット文字列、または、長さが0以上r−1以下のアルファベット文字列の末尾に区切り記号$を付加したものである。ラベルwで始まる接尾辞のグループを、「wブロック」と表記する。
「リンク」とは、ブロック内のエントリから、ブロック外の文字列へと接続するものである。1つのエントリ(リンク元)から、1つのリンク先文字列へとリンクが張られる。なお、ブロック内には、リンクがあるエントリも、リンクが無いエントリも存在しうる。なお、リンク先文字列は、以後新たにブロック内のエントリに登録されていくので、リンク先文字列は、現時点でのブロックへの「未登録文字列」とも言える。
1つのブロックには、1つのラベルが付されている。例えば、図8の$ブロック412とは、ラベルが「$」であるブロックである。このように、ブロックを矩形で示し、そのブロックの左側にラベルを示し、そのブロックの右側にリンク先文字列を示す。例えば、$ブロック412の1つめのエントリ「A」からは「AATT」(リンク先文字列413)がリンクされている。
図4は、文字列辞書112の構築処理(S231)の詳細を示すフローチャートである。
S301として、マルチコアCPU101は、正整数パラメータrを入力し、長さr以下の各ラベルに対してメモリ102上に空ブロックを作成する。
S302として、マルチコアCPU101は、処理Sとして、新規の文字列データ111を1本ずつNIF104を介して入力し、その入力文字列の末尾文字を$ブロックに登録し、入力文字列の残りの文字列をその末尾文字にリンクする。入力文字列の末尾文字は、長さ0の接尾辞(空文字列ε)とも言える。
S311として、マルチコアCPU101は、パラメータmを0にセットする。
S312として、マルチコアCPU101は、長さmの全てのアルファベット文字列wに対して、図5の処理P(w)を並列に実行する。
S313として、マルチコアCPU101は、mの値を1つ増やす。
S314として、マルチコアCPU101は、m<rか否かを判定する。S314でYesならS312に戻り、NoならS321に進む。
S321として、マルチコアCPU101は、ブロック内のエントリからリンクされた未登録文字列が残っているか否かを判定する。S321でYesならS322に、NoならS331に進む。
S322として、マルチコアCPU101は、長さr−1の全てのアルファベット文字列wに対して、図6の処理Q(w)を並列に実行する。
S331として、マルチコアCPU101は、各ブロック内の登録されたエントリ文字を連結したブロックごとの連結文字列を作成する。
S332として、マルチコアCPU101は、S331の連結文字列をブロックのラベル順に1本に連結した出力文字列を作成し、その出力文字列を文字列辞書112としてHDD103に出力する。
図5は、S312から呼び出される処理P(w)および処理I(c)の詳細を示すフローチャートである。
まず、処理P(w)について説明する。
S351として、マルチコアCPU101は、ポインタHをw$ブロック先頭にリセットする。
S352として、マルチコアCPU101は、全てのアルファベット文字cに対して処理I(c)を行う。
S361として、マルチコアCPU101は、ポインタHの参照先の登録文字をcとし、その登録文字cからリンクされた文字列(未登録文字列)をuとする。
S362として、マルチコアCPU101は、S361の文字列uが存在するか否かを判定する。S362でYesならS363に、NoならS371に進む。
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つ分進める。
次に、処理I(c)について説明する。
S353として、マルチコアCPU101は、r<m−1か否かを判定する。S353でYesならS354に、NoならS355に進む。
S354として、マルチコアCPU101は、ポインタK(c)をcw$ブロック先頭にリセットする。
S355として、マルチコアCPU101は、ポインタK(c)をcwブロック先頭にリセットする。
図6は、S322から呼び出される処理Q(w)の詳細を示すフローチャートである。
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に進む。
S211として、マルチコアCPU101は、S201と同様に、再びaをアルファベットの最初の文字とする。
S212として、マルチコアCPU101は、図7の処理R(w、a)を逐次的に実行する。
S213として、マルチコアCPU101は、S203と同様に、aをアルファベットの次の文字に更新する。
S214として、マルチコアCPU101は、S204と同様に、S213で代入できるaが存在するか否かを判定する。S214でYesならS212に戻り、Noなら処理Q(w)を終了する。
図7は、S212から呼び出される処理R(w、a)の詳細を示すフローチャートである。
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に進む。
S222として、マルチコアCPU101は、ポインタK(c)を次のエントリに1つ分進める。
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つ分進める。
以上、図3〜図7のフローチャートで説明した各処理について、図8〜図12の具体例で明らかにする。この具体例は、文字列データ111を構成するアルファベット文字はAとTの2種類で、r=2の場合である。
S301(空ブロック生成処理)では、$ブロック、A$ブロック、T$ブロック、AAブロック、ATブロック、TAブロック、TTブロックそれぞれの空ブロックが作成される。
図8は、処理Sおよび処理P(w)の具体例を示す説明図である。
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)として登録する。
枠内420に示すように、S312から呼び出される1回目(m=0)の処理P(w)では、$ブロック412の3エントリからそれぞれ1文字ずつ別のブロックに登録される。なお、長さm=0の文字列wは空文字列εだけなので、m=0のときは処理P(ε)だけ実行される。
・処理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となる。
なお、$ブロック412のAからリンクされるAATT(符号413)を、A$ブロック421の新たなTとそのリンク先のAATとして登録し、その登録後に$ブロック412のAを残しつつ、そのリンク先のAATT(符号413)とそのリンクを削除する例を、図5の処理P(w)に対応付けて説明する。
上記の例での今回の登録対象となる未登録文字列は、「AATT(符号413)」である。この未登録文字列へのリンク元となるエントリが属する登録元ブロックは、「$ブロック412」である。
前記のフローチャートにおいて、処理P(w)では、登録元ブロックをw$ブロック(S351)とし、未登録文字列を文字列u(S361)とし、リンク元のエントリをポインタHが示す位置にある文字c(S361)として説明した。
上記の例での未登録文字列の登録先ブロックは、「A$ブロック421」である。この登録先ブロック内に新たに登録されるエントリ「T」は、未登録文字列「AATT」の末尾文字である。エントリ「T」からのリンク先の文字列「AAT」は、未登録文字列「AATT」の末尾文字を除いた残りの文字である。
前記のフローチャートにおいて、処理P(w)では、登録先ブロックをcw$ブロック(S354)またはcwブロック(S355)とし、新たに登録されるエントリをポインタK(c)が示す位置に挿入される文字d(S363)とし、新たに登録されるリンク先の文字列を文字列v(S363)として説明した。
枠内420に示すように、S312から呼び出される2回目(m=1)の処理P(w)では、長さmの文字列wとしては、AとTの2種類があるので、処理P(A)と処理P(T)とが並列に実行される。換言すると、処理P(A)が扱うブロックの集合と、処理P(T)が扱うブロックの集合とが互いに独立に実行可能な部分処理として2つのグループにグループ化されている。
・処理P(A)として、A$ブロック421のTからリンクされるAATを、TAブロック433の新たなTとそのリンク先のAAとして登録する。その登録後にA$ブロック421のTを残しつつ、そのリンク先のAATとそのリンクを削除する。これにより、A$ブロック421は、エントリTだけが残るA$ブロック482になる。また、AAブロック431は、今回の処理P(A)としては登録先ブロックには該当しないが、次の処理(枠内435)で扱うので、ここではわかりやすくするために記載した。このように登録先ブロックには該当しないブロックも適宜図示することにする。
・処理P(T)として、T$ブロック422のAからリンクされるATAを、ATブロック432の新たなAとそのリンク先のATとして登録する。その登録後にT$ブロック422のAを残しつつ、そのリンク先のATAとそのリンクを削除する。
・処理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が実行される。
図9は、図8の後に実行される、処理Q(w)および処理R(w、a)の具体例を示す説明図である。
枠内440に示すように、S322から呼び出される1回目の処理Q(w)では、長さr−1の全てのアルファベット文字列はAとTの2通りがあるので、処理Q(A)と処理Q(T)とが並列に実行される。
処理Q(A)内のS212では、文字a=A、Tに対して、処理R(A、A)と処理R(A、T)とがこの順序で逐次実行される。
処理Q(A)の入力グループ(枠内435)と、処理Q(A)の出力グループ(枠内437)とを示す。
処理Q(A)の入力グループ側では逐次的に参照すべきブロックを纏めてグループ化されている。処理Q(A)の出力グループ側では同時並行に書き込むべきブロックを纏めてグループ化されている。
・処理Q(A)の処理R(A、A)として、AAブロック431にはリンクを有するエントリが無いので、処理をスキップする。
・処理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ブロック432のAからリンクされるATを、AAブロック441の新たなTとそのリンク先のAとして登録し、その登録後にATブロック432のAを残しつつ、そのリンク先のATとそのリンクを削除する例を、図7のR(w、a)に対応付けて説明する。
上記の例での今回の登録対象となる未登録文字列は、「AT」である。この未登録文字列へのリンク元となるエントリが属する登録元ブロックは、「ATブロック432」である。
前記のフローチャートにおいて、R(w、a)では、登録元ブロックをwaブロック(S220)とし、未登録文字列を文字列u(S221)とし、リンク元のエントリをポインタHが示す位置にある文字c(S221)として説明した。
上記の例での未登録文字列の登録先ブロックは、「AAブロック441」である。この登録先ブロック内に新たに登録されるエントリ「T」は、未登録文字列「AT」の末尾文字である。エントリ「T」からのリンク先の文字列「A」は、未登録文字列「AT」の末尾文字を除いた残りの文字である。
前記のフローチャートにおいて、R(w、a)では、登録先ブロックをawブロック(S202)とし、新たに登録されるエントリをポインタK(c)が示す位置に挿入される文字d(S224)とし、新たに登録されるリンク先の文字列を文字列v(S224)として説明した。つまり、R(w、a)の登録先ブロックは、cwブロックからなるグループ(cは任意の文字)であって、全てのaについて共通であり、また、S202でリセットされた同じポインタK(c)を順に引き継いで利用する。その結果、各cwブロックへの書き込みは辞書順に正しく行われる。
処理Q(T)内のS212では、文字a=A、Tに対して、処理R(T、A)と処理R(T、T)とがこの順序で逐次実行される。
処理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が実行される。
図10は、図9の後に実行される、処理Q(w)および処理R(w、a)の具体例を示す説明図である。
枠内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)の入力グループ(枠内446)と、処理Q(T)の出力グループ(枠内448)とを示す。
・処理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が実行される。
図11は、図10の後に実行される、処理Q(w)および処理R(w、a)の具体例を示す説明図である。
枠内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)の入力グループ(枠内456)と、処理Q(T)の出力グループ(枠内458)とを示す。
・処理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が実行される。
図12は、図11の後に実行される、文字列辞書112の出力処理を示す説明図である。
S331(ブロックごとの連結文字列の作成処理)では、ラベル順にソートした各ブロック($ブロック481、A$ブロック482、AAブロック461、ATブロック462、T$ブロック483、TAブロック463、TTブロック464)に登録されたエントリを、図示した矢印の順に文字列471〜477として抽出する。
S332(文字列辞書112の出力処理)では、枠内490に示すように、文字列471〜477を順に1本に連結した出力文字列を文字列辞書112として作成する。
以上説明した本実施形態では、文字列辞書112の構築処理(S231)として、文字列データ解析装置1は、NIF104を介して入力して、文字列データ111から文字列を入力する。文字列データ解析装置1は、入力された文字列を未登録文字列とし、その全ての接尾辞を短いものから順に、処理P(w)、処理Q(w)、処理R(w、a)で示した各手順に従って、空ブロックに順次登録していく。
ここで、接尾辞をブロックに登録するとは、接尾辞に先行する文字(但し、接尾辞が文字列全体に一致する場合は区切り文字$)をブロックに登録することである。ブロックに登録された各文字に対して、それに後続する接尾辞を復元する効率的な計算方法は公知である(非特許文献1)。また、未登録文字列から接尾辞を除いた残りの文字列を、今回登録した接尾辞にリンクして一時的に保持する。
全ての文字列の全ての接尾辞に対してブロックへの登録処理が完了した後、図12で示した手順に従って、全てのブロックに対して、そこに登録されている文字を連結した文字列を作成し、さらに、それらの文字列をブロックのラベルの辞書式順番に従って連結した文字列辞書112を、BW変換としてHDD103内に出力する。
なお、S301において、既に作成済みの文字列辞書112がHDD103内(または、ネットワークの接続先からNIF104を介して取り込んでHDD103内)にある場合は、空ブロックの代わりに、文字列辞書112を作成したときのブロックの情報をメモリ上にロードしてもよい。この場合、作成済みの文字列辞書112に対して、NIF104を介して新たに入力した文字列データ111を、追加登録することができる。
また、S364,S223,S225で説明したように、メモリ102上のブロックに毎回新たなエントリが追加登録される際、リストであるブロックへの挿入処理が必要となる。そこで、ブロックのデータ構造としては、(非特許文献4に記載された平衡木のような)動的構造を採用してもよいし、あるいは、(特許文献1に記載されているようにリストのコピーを毎回再構築するような)静的構造を採用してもよい。
以下では、本実施形態の文字列辞書112の構築処理について、その並列計算における並列度や待ち合わせなどについて、補足説明する。
前記の例では、アルファベット文字をAとTの2種類としたが、アルファベット文字の種類をh種類(文字a、a、…、a)に拡張する。
まず、処理P(w)の並列度について説明する。
処理P(w)が読み込む登録元ブロックはw$ブロックであり、各mに対して、文字列wが異なれば相異なる。
処理P(w)が書き出す登録先ブロックは、mがr−1未満ならば、aw$ブロック、aw$ブロック、…、aw$ブロックであり、m=r−1ならば、awブロック、awブロック、…、awブロックである。登録先ブロックでは、いずれの場合も、文字列wが異なれば互いに排反である。従って、各mに対して、処理P(w)は互いに干渉することなく、独立に並列に実行可能となる。
次に、処理Q(w)の並列度について説明する。
処理Q(w)が読み込む登録元ブロックはwaブロック、waブロック、…、waブロックであり、文字列wが異なれば互いに排反である。
処理Q(w)が書き出す登録先ブロックは、awブロック、awブロック、…、awブロックであり、これらも、文字列wが異なれば互いに排反である。従って、処理Q(w)は、互いに干渉することなく、独立に並列に実行可能となる。
そして、処理R(w、a)の並列度について説明する。
処理R(w、a)、R(w、a)、…、R(w、a)での登録先ブロックはh個あり、それらは、awブロック、awブロック、…、awブロックで共通である。これらの登録処理はアルファベット順に逐次的に実行されるため、各ブロックへの登録処理もアルファベット順に正しく行われる。
このように、順番を守って逐次実行しなければならない処理R(w、a)の数は、アルファベットのサイズに等しく、パラメータrには依存せず一定である。従って、パラメータrを増やして、並列処理としての粒度を細かくしても、逐次実行の待ち合わせの長さは一定に保たれ、待ち合わせによるCPU稼働率低下を生じることはない。
以上により、互いに独立に行うことができる部分処理に細分化され、処理R(w、a)、R(w、a)、…、R(w、a)を逐次実行する以外に待ち合わせの必要はなく、待ち合わせによるプロセッサ稼働率の低下を回避することができる。
ここで、マルチコアCPU101は、正整数パラメータrの値を入力させてもよいし、マルチコアCPU101の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を自動計算することができる。
正整数パラメータrを増やすとブロック数は指数関数的に増大するので、ブロック数がCPUコア数の数十倍程度となるようにrの値を定めることができる。このとき、マルチ・スレッドによる動的負荷分散を行えば、処理P(w)や処理Q(w)の計算時間のバラツキが生じても、コア間の計算負荷を均等化でき、全てのコアを有効に使った効率的な高速化が可能となる。
例えば、独立に並列実行可能な処理Q(w)の数は、長さr−1の文字列wの数だけある。この数は、アルファベットのサイズをhとすると、hのr−1乗に等しい。従って、DNA配列データのようにh=4の場合であっても、処理Q(w)の数が利用可能なCPUコア数の数十倍程度になるようにrを選ぶことができる。
これにより、CPUコア数の数十倍程度の部分処理に細分化する方法を提供し、また、部分処理どうしの待ち合わせによるプロセッサ稼働率の低下を回避する方法を提供することができる。
なお、本発明は前記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、前記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。
また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。
また、前記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、SSD(Solid State Drive)などの記録装置、または、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)などの記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
1 文字列データ解析装置
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)

  1. 複数のCPUコアで構成されるマルチコアCPUと、メモリとを備える文字列データ解析装置により実行され、
    前記メモリ上に展開される文字列辞書を分割した複数のブロックには、文字列データを構成するアルファベットおよび区切り文字が1文字以上で構成されるラベルとして、各ブロックにそれぞれ異なるラベルが付されており、
    前記マルチコアCPUは、
    入力される前記文字列データそれぞれについて、区切り文字のラベルが付されているブロックに対して、前記文字列データの末尾文字をブロックのエントリとして登録し、その末尾文字から前記文字列データの残りの文字列を未登録文字列として対応付け、
    各ブロックのうちのエントリに前記未登録文字列が対応付けられている登録元ブロックを読み込み、前記登録元ブロックのラベルおよびエントリから特定される登録先ブロックに対して、前記登録元ブロックの前記未登録文字列の末尾文字を前記登録先ブロックに新たなエントリとして登録し、その新たなエントリから前記未登録文字列の残りの文字列を新たな未登録文字列として対応付けるエントリ登録処理について、互いに独立に実行可能なブロックのグループについて並列に実行し、
    各ブロックの前記未登録文字列が無くなった状態で、各ブロックのエントリに登録されている文字列について、ブロックのラベルが示すアルファベットおよび区切り文字の順序で連結した文字列を前記文字列データが登録済みの前記文字列辞書のBW(Burrows-Wheeler)変換データとして出力することを特徴とする
    文字列辞書の構築方法。
  2. 前記マルチコアCPUは、前記メモリ上に展開されるブロックの数を決定するための各ブロックのラベルの長さを、前記マルチコアCPUを構成するコア数をもとに計算することを特徴とする
    請求項1に記載の文字列辞書の構築方法。
  3. 前記マルチコアCPUは、前記エントリ登録処理として、逐次的に読み込む前記登録元ブロックのグループと、同時並行に書き込む前記登録先ブロックのグループとをそれぞれグループ化し、前記登録元ブロックのグループ間では前記登録元ブロックの読み込み処理を並列に実行し、前記登録元ブロックのグループ内では前記登録元ブロックの読み込み処理を逐次的に実行することを特徴とする
    請求項1に記載の文字列辞書の構築方法。
  4. 請求項1ないし請求項3のいずれか1項に記載の文字列辞書の構築方法により構築された前記文字列辞書を記憶する記憶手段と、制御手段とを有する検索装置により実行され、
    前記制御手段は、
    入力手段を介して、問合せ文字列の入力を受け付け、
    前記文字列辞書に登録された前記文字列データにおける前記問合せ文字列の出現回数を検索し、
    出力手段を介して、検索した出現回数を出力することを特徴とする
    文字列辞書の検索方法。
  5. 前記文字列辞書は、前記文字列データとして患者ごとのDNAサンプルをDNAシーケンサで解析した結果のDNA配列データが登録されるDNA配列辞書であり、
    前記入力手段は、あらかじめ遺伝子パネルとして設定されている変異ありのDNA配列データを、前記問合せ文字列として受け付け、
    前記制御手段は、前記文字列辞書に登録された前記文字列データにおける前記問合せ文字列の出現回数を検索することで、前記患者のDNA配列データに変異が発生しているか否かを解析し、
    前記出力手段を介して、出現した変異ありのDNA配列データと、そのDNA配列データに対して前記遺伝子パネルで対応づけられている付帯情報とを出力することを特徴とする
    請求項4に記載の文字列辞書の検索方法。
  6. 請求項1に記載の文字列辞書の構築方法を実行する前記文字列データ解析装置と、
    請求項5に記載の文字列辞書の検索方法を実行する前記検索装置と、
    請求項5に記載の文字列辞書の検索方法において前記患者ごとのDNAサンプルを解析し、その解析結果をDNA配列データとして出力する前記DNAシーケンサとを含めて構成されることを特徴とする
    文字列辞書の処理システム。
JP2018536629A 2016-09-02 2016-09-02 文字列辞書の構築方法、文字列辞書の検索方法、および、文字列辞書の処理システム Active JP6622921B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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