JP2022531790A - Dnaに基づくデータ記憶における探索、算出、および索引付けのためのデータ構造および動作 - Google Patents

Dnaに基づくデータ記憶における探索、算出、および索引付けのためのデータ構造および動作 Download PDF

Info

Publication number
JP2022531790A
JP2022531790A JP2021566244A JP2021566244A JP2022531790A JP 2022531790 A JP2022531790 A JP 2022531790A JP 2021566244 A JP2021566244 A JP 2021566244A JP 2021566244 A JP2021566244 A JP 2021566244A JP 2022531790 A JP2022531790 A JP 2022531790A
Authority
JP
Japan
Prior art keywords
nucleic acid
pool
symbol
identifier
bit
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.)
Pending
Application number
JP2021566244A
Other languages
English (en)
Other versions
JPWO2020227718A5 (ja
Inventor
ナサニエル ロケ,
スワプニル バティア,
パオロ フェラジナ,
Original Assignee
カタログ テクノロジーズ, インコーポレイテッド
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 カタログ テクノロジーズ, インコーポレイテッド filed Critical カタログ テクノロジーズ, インコーポレイテッド
Publication of JP2022531790A publication Critical patent/JP2022531790A/ja
Publication of JPWO2020227718A5 publication Critical patent/JPWO2020227718A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • 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
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • G16B50/50Compression of genetic data
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16HHEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
    • G16H50/00ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics
    • G16H50/30ICT specially adapted for medical diagnosis, medical simulation or medical data mining; ICT specially adapted for detecting, monitoring or modelling epidemics or pandemics for calculating health indices; for individual health risk assessment
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A90/00Technologies having an indirect contribution to adaptation to climate change
    • Y02A90/10Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation

Landscapes

  • Health & Medical Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Physics & Mathematics (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biotechnology (AREA)
  • Evolutionary Biology (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Databases & Information Systems (AREA)
  • Public Health (AREA)
  • Bioethics (AREA)
  • Analytical Chemistry (AREA)
  • Chemical & Material Sciences (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Biomedical Technology (AREA)
  • Pathology (AREA)
  • Epidemiology (AREA)
  • Primary Health Care (AREA)
  • Data Mining & Analysis (AREA)
  • Genetics & Genomics (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Apparatus Associated With Microorganisms And Enzymes (AREA)

Abstract

本開示は、最適化されたデータ構造および関数によってDNAに記憶されたデータの探索および抽出を可能にすることを対象とする。したがって、核酸分子に記憶されたデータに対して特定の関数を実行するシステムおよび方法が、本明細書に提供される。本開示は、少なくとも、(1)核酸分子に記憶された情報への効率的なアクセスおよび探索を提供するデータ構造、(2)核酸分子に記憶された情報の正確かつ迅速な読取り、(3)核酸分子に記憶された情報のサブセットへのアクセスへの標的を絞った手法、(4)核酸分子に記憶された情報のセット内の特定のビットまたはシンボル値のカウントを判定するランク関数、(5)核酸分子に記憶された情報のメッセージにおける特有のパターンの発生の計数、位置付け、および抽出を含む関数、ならびに(6)核酸分子に記憶されたデータを分類するif-then-else演算という関心領域を包含する。

Description

関連出願の相互参照
本出願は、2019年5月9日出願の"NUCLEIC ACID-BASED DATA STORAGE: SEARCH AND COMPUTE"という名称の米国仮特許出願第62/845,638号、2019年6月11日出願の"DATA STRUCTURES FOR DNA STORAGE"という名称の米国仮特許出願第62/860,117号、および2019年8月22日出願の"INDEX AND SEARCH OF INFORMATION STORED IN DNA"という名称の米国仮特許出願第62/890,243号に対する優先権および利益を主張する。上記に参照した出願の内容全体が、参照により本明細書に組み込まれている。
核酸デジタルデータ記憶は、情報を符号化し、長期間にわたって記憶するための安定した手法であり、データは、磁気テープまたはハードドライブ記憶システムより高い密度で記憶される。加えて、低温および乾燥条件で保管された核酸分子に記憶されているデジタルデータは、60,000年またはそれよりも長い年数の後に取り出すことができる。
核酸分子に記憶されたデジタルデータにアクセスするための1つの方法は、核酸分子をシークエンシングすることである。したがって、核酸デジタルデータ記憶は、頻繁にアクセスされるわけではないが、長期間にわたって記憶または格納されるべき大量の情報を有することのあるデータを記憶するための理想的な方法となりうる。
核酸分子にデータを記憶する既存の方法は、デジタル情報(たとえば、2進コード)を塩基ごとの核酸配列に符号化することに依拠しており、したがって、配列内の塩基間の関係が、デジタル情報(たとえば、2進コード)に直接変換される。しかし、そのような塩基ごとのデノボ核酸合成は、エラーを起こしやすい上に高価である。さらに、これらの既存の核酸デジタルデータ記憶方法を介して記憶されたデータでは、単一塩基分解能でデータが符号化されているとき、最初に分子集合全体をデジタル情報に変換させなければ、特定の機能を実行することができない。たとえば、そのような機能には、データセット内で特有の照会パターンが発生したか否か、発生の数、および各発生の場所を含めて、論理関数、加算、減算、および照会探索など、データがディスクに記憶されるときに一般に実行される基本的なタスクが含まれる。
本開示は、最適化されたデータ構造および関数によってDNAに記憶されたデータの探索および抽出を可能にすることを対象とする。したがって、核酸分子に記憶されたデータに対して特定の関数を実行するシステムおよび方法が、本明細書に提供される。本開示は、少なくとも、(1)核酸分子に記憶された情報への効率的なアクセスおよび探索を提供するデータ構造、(2)核酸分子に記憶された情報の正確かつ迅速な読取り、(3)核酸分子に記憶された情報のサブセットへのアクセスへの標的を絞った手法、(4)核酸分子に記憶された情報のセット内の特定のビットまたはシンボル値のカウントを判定するランク関数、(5)核酸分子に記憶された情報のメッセージにおける特有のパターンの発生の計数、位置付け、および抽出を含む関数、ならびに(6)核酸分子に記憶されたデータを分類するif-then-else演算という関心領域を包含する。
本明細書に記載するシステムおよび方法は、あらゆる核酸配列を読み取るために使用することができるが、本開示は、識別子核酸分子(本明細書では、単に「識別子」または「識別子分子」とも呼ぶ)に特定の符号化方法を使用して書かれた核酸配列に記憶された情報の読取り、アクセス、および探索を行うときに特に有利である。各識別子分子の核酸配列は、シンボルストリング(たとえば、ビットストリームまたはシンボルストリーム)内の特定のシンボル値(たとえば、2つのシンボル値「0」および「1」のみが可能であるとき、または別法として3つ以上のシンボル値が可能であるとき、1つまたは一連のビット)、そのシンボルの位置(たとえば、ランクまたはアドレス)、または両方に対応する。たとえば、識別子分子の有無は、それぞれ1または0のビット値を伝えることができる(または逆も同様である)。識別子核酸分子は、成分核酸分子(本明細書では、単に「成分」または「成分分子」とも呼ぶ)の組合せ配置を含む。成分の核酸配列は、固有のセット(層とも呼ばれる)に分離される。識別子分子は、複数の成分分子をともに結合する(または他の方法で組み立てる)ことによって組み立てられており、各成分分子は、各層から選択された配列を有する。いくつかの場合、成分分子は自己組織化して、識別子分子を形成する。可能な識別子配列のセットが、成分配列の様々な可能な組合せの組合せに対応する。たとえば、C個の成分配列がM個の層に分離され、ここでcが第iの各層内の成分配列の数を表す場合、形成することができる可能な識別子配列の数は、c×c×....×cによって表すことができる。一例として、12個の層からなり、各層が10個の成分配列を収容する符号化方式は、1012個の異なる固有の識別子配列をもたらすことができる。各識別子配列がビットストリーム内の1ビットに対応する場合、この符号化方式は、1TBのデータを表すことができる。
DNAから情報を読み取る効率を改善するための1つの方法は、データ構造を使用して、データストリングのデータブロックの場所を記憶して示すことを伴う。たとえば、大きいデータストリングは、2つまたはそれよりも多いコンテナに分離して記憶することができる。ユーザがアクセスしようとする情報をどのコンテナが収容しているかを判定するために、システムは、場所(たとえば、コンテナ番号または配置)を保持するB木またはトリプルストア構造にアクセスすることができる。これにより、ユーザは、データストリングを収容している各コンテナ内の情報を読み取るのではなく、自身が探していた情報に好都合にアクセスすることが可能になる。
データ構造はまた、ビット/シンボル値のランク付けおよびデータ内の特有のパターンの探索などの高速動作を可能にする構成で、核酸分子内にデータを記憶することができる。たとえば、システムは、データストリングにおけるビット/シンボル値の発生のランニングカウントを表すカウンタアレイにアクセスすることができる。これにより、システムは、システム内のすべての単一の核酸分子を読み取ることなく、ビット/シンボル値のランクを判定することが可能になる。個々の各核酸分子または配列を読み取る必要なく、データ内の特有のパターンの効率的な探索を可能にする圧縮に好適な形式でデータを記憶するために、Burrows-Wheeler変換を介して、または接尾辞アレイに、データを変換することができる。
いくつかの態様では、複数のブロックを取得することによって、デジタル情報を核酸分子に記憶するシステムおよび方法が本明細書に提供されており、各ブロックはシンボルストリングを含み、ブロックIDに関連付けられる。そのようなシステムおよび方法は、記憶されたデータまたは関連付けられた核酸分子を特徴付ける情報を記憶または暗示することによって、記憶されたデータの探索を容易にするために、ブロックIDを使用することができることから、利点を提供する。このシステムおよび方法では、ブロックがコンテナに割り当てられ、コンテナに関連付けられるべき複数の識別子核酸配列にマッピングされ、各識別子核酸配列は成分核酸配列を含んでおり、成分核酸配列の少なくとも一部分は、1つまたは複数のプローブに結合するように構成される。システムおよび方法は、複数の識別子核酸配列の個々の識別子核酸分子をさらに構築し、割り当てられたコンテナ内に個々の識別子分子を記憶し、コンテナおよびそのコンテナに関連付けられた複数の識別子核酸配列の識別情報を含む物理アドレスが、関連付けられたブロックIDを使用して判定されるように構成される。
たとえば、ブロックIDは、整数、ストリング、トリプル、属性リスト、または意味注釈である。いくつかの実装形態では、物理アドレスは、関連付けられたブロックIDを使用して物理アドレスにアクセスすることを容易にするように設計されたデータ構造に記憶される。データ構造は、B木、トライ、またはアレイのうちの1つとすることができる。データ構造の少なくとも一部分は、デジタル情報とともに索引内に記憶することができ、索引は、第2のコンテナに関連付けられた第2の複数の識別子核酸配列を含むことができる。索引は、ノードを有するB木またはトライデータ構造とすることができ、ノードは各々、第2の複数の識別子核酸配列のうちの別個の複数の識別子核酸配列に対応する。第1のノードを含む別個の識別子にアクセスすることができ、それに続いてそれらの識別子に関連付けられた値を読み取ることができ、これらのステップを後続のノードに対して繰り返すことができ、ブロックIDを使用して、第1のノードの値に関する後続のノードを含む別個の複数の識別子の識別情報を判定することができる。第1のノードは、B木またはトライの根ノードとすることができ、プロセスは、葉ノードの値が読み取られるまで継続して、ブロックIDに対するブロックが存在するかどうか、および対応する物理アドレスが何であるかを示すことができる。ブロックIDは、シンボルストリングとすることができ、B木またはトライデータ構造の各ノードは、シンボルストリングの可能な接頭辞に対応する。葉ノード自体は、葉ノードによって指定されたシンボルストリングに一致するブロックIDに関連付けられた物理アドレスを表すことができる。
いくつかの実装形態では、データ構造はアレイであり、アレイの各要素は、第2の複数の識別子核酸配列のうちの別個の複数の識別子核酸配列に対応する。アレイの各要素は、ブロックIDに対応することができ、または関連付けられたブロックIDの物理アドレスを記憶することができる。いくつかの実装形態では、物理アドレスは、物理アドレスを追加のデータ構造に記憶する必要なく、ブロックIDが物理アドレスにマッピングするように、ブロックIDに固有に構成される。ブロックIDは、物理アドレスに関連付けられた複数の識別子核酸配列のうちのすべての識別子核酸配列によって共用される複数の成分核酸配列にマッピングすることができる。いくつかの実装形態では、ブロックに関連付けられた複数の識別子核酸配列は、隣接して順序付けられた識別子核酸配列を含み、したがって前記複数の識別子核酸配列は、前記識別子範囲内の第1および最後の識別子核酸分子の識別情報を含む識別子範囲によって、対応する物理アドレスに指定される。前記識別子範囲内の第1および最後の識別子核酸配列は、整数によって表すことができる。
いくつかの実装形態では、ブロックIDは、親シンボルストリングの対応するブロックによって表されるシンボルストリング内の位置である。親シンボルストリングは、別のシンボルストリングにおけるパターンの発生を計数または位置付けするためのデータ構造によって表すことができる。適当なデータ構造には、Burrows-Wheeler変換、接尾辞アレイ、接尾辞木、および転置索引が含まれる。データ構造がアレイである場合、アレイの各要素は、ブロックIDに対応する別個の複数の識別子を含むことができる。アレイの各要素は、関連付けられたブロックIDの物理アドレスを記憶することができる。
いくつかの実装形態では、物理アドレスは、第2の複数の識別子配列を含む識別子のプールから、一連のプローブを使用してアクセスされる。データ構造は、磁気記憶デバイス、光記憶デバイス、フラッシュメモリデバイス、またはクラウドストレージに記憶することができる。一連のプローブを使用して、ブロックに関連付けられた識別子にアクセスすることができる。プローブは、PCRプライマーまたは親和性タグ付きオリゴヌクレオチドとすることができ、それぞれアクセスのためにPCRまたは親和性プルダウンアッセイを使用する。
いくつかの態様では、核酸分子のプールに記憶されたデジタル情報からビットストリングまたはシンボルストリング内の特定の位置における特定のビットまたはシンボル値のランクを取得するシステムおよび方法が本明細書に提供されており、各ビットまたはシンボルは、値および位置を有する。システムおよび方法は、ビットストリングまたはシンボルストリングを表す識別子核酸分子の第1のプールを取得することであって、プールが、粉末、液体、または固体の形態を有し、第1のプール内の各識別子核酸分子が成分核酸分子を含み、成分核酸分子の少なくとも一部分が、1つまたは複数のプローブに結合するように構成される、第1のプールを取得することと、ビットストリングまたはシンボルストリングから導出されたカウンタシンボルストリングを表す識別子核酸分子の第2のプールを取得することであって、各カウンタシンボルが、ビットストリングまたはシンボルストリングのすべてのw個のビットまたはシンボル内の特定のビットまたはシンボル値のランニングカウントを表す、第2のプールを取得することとを伴う。システムおよび方法は、少なくとも(1)特定の位置に先行するw個のビットもしくはシンボルのすべてのブロック、または(2)特定の位置を含むw個のビットもしくはシンボルのブロックを含む、特定の位置に先行するw個のビットもしくはシンボルのすべてのブロックのいずれかに対して、特定のビットまたはシンボル値のランニングカウントを示す対応するカウンタシンボルを表す第2のプール内の識別子核酸分子を標的とするように、第2の一連のプローブを有する第2のプールにアクセスすることによって、第1のカウントを取得することをさらに伴う。(1)特定の位置に先行しもしくは特定の位置を含む、第1のカウントで計数されていないビットもしくはシンボルを表す、または(2)第1のカウントで計数されたが特定の位置に先行しないもしくは特定の位置を含まないビットもしくはシンボルを表す、第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とするように、第1の一連のプローブを有する第1のプールにアクセスすることによって、第2のカウントが取得される。第1のカウントおよび第2のカウントから、ストリング内の特定の位置における特定のビットまたはシンボル値のランクが取得される。
本明細書に記載するランク関数の1つの利点は、ストリング全体を読み取る必要がないことである。代わりに、ランク関数は、選択的アクセス演算を使用して、特有のカウントを提供する核酸分子のサブセットを読み取る。このようにして、本明細書に記載するランク演算は、記憶されたすべての核酸分子の完全な読取りを必要とするブルートフォース演算と比較すると、より時間効率的かつ高い費用効果で実行される。
識別子は、M個の選択された成分核酸分子を物理的に組み立てることによって形成することができ、M個の選択された成分核酸分子の各々は、M個の異なる層に分離された別個の成分核酸分子のセットから選択される。
いくつかの実装形態では、第1のカウントが、特定のビットに先行するw個のビットのすべてのブロックを表すとき、第2のカウント内の第1の一連のプローブは、特定のビットに先行しまたは特定のビットを含む、第1のカウントで計数されていないビットを表す第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とし、ビットストリング内の特定のビットのランクは、第1および第2のカウントを合計することによって取得される。いくつかの実装形態では、第1のカウント内の第1のカウントが、特定のビットを含むw個のビットのブロックを含む、特定のビットに先行するw個のビットのすべてのブロックを表すとき、第1の一連のプローブは、第1のカウントで計数されたが特定のビットに先行しないまたは特定のビットを含まないビットを表す第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とし、ビットストリング内の特定のビットのランクは、第1のカウントから第2のカウントを引くことによって取得される。
いくつかの実装形態では、第1のプールが第2のプールであり、または第1のプールおよび第2のプールが別個である。第1のカウントおよび第2のカウントは、それぞれ第2のプールおよび第1のプールから、標的とされた識別子分子を読み取ることによって取得することができる。第1のカウントの場合、標的とされた識別子に対応するカウンタシンボル値を読み取りまたは判定することができる。ストリング内のw個のビットまたはシンボルのブロックは、第1のプール内の隣接して順序付けられた識別子核酸分子のブロックにマッピングすることができる。たとえば、第1のプール内の識別子分子の有無は、ストリング内の特定の値に直接相関しない。ストリングの固定長のサブストリング(ワード)を、固定数の可能な固有の識別子核酸分子からの固定数の固有の識別子核酸分子を含むコードワードにマッピングすることができる。識別子に記憶された追加の情報を使用して、識別子の書込み、アクセス、および読取りにおけるエラーを検出および補正することができる。
各カウンタシンボルは、b個のカウンタビットのストリングによって表すことができる。いくつかの実装形態では、ストリングは、n個のビットまたはシンボルの長さを有し、bはlog(n+1)の上限である。カウンタシンボルストリングは、nをwで割った上限個のカウンタシンボルを含むことができ、bにnをwで割った上限を掛けた値に対応する長さを有するカウンタビットストリングによって表される。いくつかの実装形態では、特定のビットまたはシンボルが、w個のビットまたはシンボルの第1のブロックの範囲内である場合、w個のビットの第1のブロックに先行するランニングカウントは0である。wの値は、bの値または1に設定することができる。たとえば、第1のカウントは、特定のビットまたはシンボルを含むw個のビットまたはシンボルのブロックに対応するカウンタシンボルを表す第2のプール内の識別子核酸分子を標的とすることによって取得され、ランクは、第1のカウントと同等である。この例では、最後の第2のカウントを取得する必要はない。
いくつかの実装形態では、特定のビットが、w個のビットまたはシンボルの第1のブロック内にない場合、特定のビットまたはシンボルに先行するw個のビットまたはシンボルのすべてのブロックのカウンタシンボルは、0からw*B(x)-1の位置範囲内の特定の値を有するストリング内のビットまたはシンボルの数を表し、0はストリングの第1の位置であり、xはストリング内の特定のビットまたはシンボルの位置に対応し、B(x)はxをwで割った下限である。たとえば、第1のカウントに対する第2のプール内の標的とされた識別子核酸分子は、位置b*B(x)およびb*(B(x)+1)-1によって画定される範囲内であり、0の位置は、ストリング内の第1の位置に対応する。第2のカウントは、位置範囲w*B(x)~x内に特定の値を有するストリング内のビットまたはシンボルの数に対応することができ、ここで、xはストリング内の特定のビットまたはシンボルの位置に対応し、位置0は第1の位置であり、B(x)はxをwで割った下限である。
ストリングがビットストリングであるいくつかの実装形態では、第1のプール内の識別子核酸分子は、ビットストリングを表し、したがって識別子の存在は、ビット位置のビット値「1」を表す。ビットストリングは、シンボルストリングを表すことができ、シンボルストリング内の特定のシンボルに対してランクが取得される。
ストリングがシンボルストリングであるいくつかの実装形態では、第1のプール内の対応する識別子核酸分子の存在は、第1のシンボル値を示し、第1のプール内の対応する識別子核酸分子の不在は、第2のシンボル値を示す。シンボル値は、シンボル値のセット(たとえば、アルファベット)から選択することができ、カウンタシンボルストリングは、特定のシンボル値を有するシンボルの数のランニングカウントを示す。シンボルストリングは、ビットストリングを表すことができる。たとえば、ストリング内の各シンボルは、固定数のビットに対応する。いくつかの実装形態では、識別子核酸分子の異なる第2のプールは、特有のシンボル値のインスタンスの数を計数する異なるカウンタシンボルストリングを表し、異なる各カウンタシンボルストリングが、対応する特有のシンボル値のインスタンスを計数する。
いくつかの態様では、核酸分子のプールからデジタル情報をフェッチするシステムおよび方法が本明細書に提供される。システムおよび方法は、識別子核酸分子の第1のプールを取得することを伴い、プールが、粉末、液体、または固体の形態を有し、第1のプール内の各識別子核酸分子が成分核酸分子を含み、成分核酸分子の少なくとも一部分が、1つまたは複数のプローブに結合するように構成され、識別子核酸分子は、シンボルストリングを表し、したがってシンボル値は、前記第1のプール内の対応する識別子核酸分子の有無によって示される。第1の一連のプローブによって前記第1のプールにアクセスして、前記第1のプールからの識別子核酸分子のサブセットを有する第2のプールを作成し、第1の一連のプローブの各々は、成分核酸分子のうちの少なくとも1つを標的とする。前記第2のプールからの識別子核酸分子の前記サブセットの配列を読み取り、前記配列を使用して、少なくともシンボルストリング内のシンボルのサブセットを取得する。
各識別子核酸分子は、M個の層の各々からの成分核酸配列を有する別個の成分核酸分子を含み、各層は、成分核酸配列のセットを含む。M個の層は、論理的に順序付けることができ、各層の成分核酸配列を論理的に順序付けることができる。いくつかの実装形態では、識別子核酸分子は、識別子核酸配列を第1の層内の対応する成分核酸配列によって分類し、識別子核酸配列を第2の層内の対応する成分核酸配列によって細分し、残りのM-2個の層の各々に対して細分プロセスを繰り返すことによって、論理的に順序付けられた識別子核酸配列に対応する。各識別子配列は、照会木内のパスとして表される一連の成分核酸配列を含むことができ、照会木は、根ノードから開始し、各層に1つのインスタンスでM個のインスタンスにわたって分岐し、葉ノードで終了し、各葉ノードは、識別子核酸配列を表す。したがって、第1の一連のプローブは、照会木内の根ノードからの部分パスまたはフルパスに対応することができる。フルパスは、M個のプローブを含む根から葉までのパスに対応することができ、したがって一連のプローブは、単一の識別子核酸分子を標的とし、部分パスは、M個より少ないプローブに対応し、したがって一連のプローブは、異なる配列を有する識別子核酸分子の複数の母集団を標的とする。異なる配列を有する識別子核酸分子の複数の母集団は、少なくとも第Mの層内の異なる成分核酸分子に対応することができる。
いくつかの実装形態では、第1のプールは、複数の一連のプローブによってアクセスされる。たとえば、システムおよび方法は、第1のプールを少なくとも2つの複製プールに分割し、手法のステップを、一連のプローブの各々を有する前記複製プールの各々で実行することを実行する。第1のプールは、少なくとも2つの複製プールに分割する前に複製することができる(たとえば、PCRを介して)。いくつかの実装形態では、プローブのサブシリーズを有する識別子核酸分子の第1のプールにアクセスして、識別子核酸分子の中間プールを作成する。プローブの後続のサブシリーズを有する中間プールにアクセスして、識別子核酸分子の第2の中間プールまたは識別子核酸分子の第2のプールを形成することができる。少なくとも2つの中間プールを組み合わせて、別の中間プールまたは第2のプールを形成することができる。プローブは、PCRプライマー(PCRを介したアクセスの場合)、または親和性タグ付きオリゴヌクレオチド(親和性プルダウンアッセイを介したアクセスの場合)とすることができる。
いくつかの態様では、長さnのビットストリングを含むメッセージ内の長さpの特定のビットパターンのカウントを取得するシステムおよび方法が本明細書に提供される。システムおよび方法は、ビットストリングLを表す識別子核酸分子の第1のプールを取得し、ビットストリングLは、メッセージのBurrows-Wheeler変換行列の最後の列であり、第1のプールは、粉末、液体、または固体の形態を有し、第1のプール内の各識別子核酸分子は、成分核酸分子を含み、成分核酸分子の少なくとも一部分は、1つまたは複数のプローブに結合するように構成される。ビットストリングLから導出されたカウンタシンボルストリングを表す識別子核酸分子の第2のプールが取得され、各カウンタシンボルは、特有のビット値「1」を有するビットストリングL内のすべてのw個のビットに対するビットの数のランニングカウントを示すb個のカウンタビットのストリングによって表される。一連のプローブを使用して、ビットストリングL内のビット値「1」の発生の総数に対するカウンタシンボルを表す第2のプールからの識別子核酸分子にアクセスする。第2のプールからアクセスされた識別子核酸分子を読み取って、ビットストリングL内のビット値「1」の発生の総数を計数する。各ビット値の発生の総数は、メッセージのBurrows-Wheeler変換行列の第1の列Fを再構築するためのものである。第1の列F内の第pのビット値の範囲を画定する第1の位置hおよび最後の位置zが、hおよびzを含めて判定される。第1の一連のプローブを使用して、第1のプールおよび第2のプールからの識別子核酸分子にアクセスして、L内の位置h-1におけるパターンの第(p-i)のビット値のランクrh-1を計算し、ここでi=1である。第2の一連のプローブを使用して、第1のプールおよび第2のプールからの識別子核酸分子にアクセスして、L内の位置zにおけるパターンの第(p-i)のビット値のランクrを計算する。
h-1がrに等しい場合、メッセージ内のパターンの発生のカウントは0として設定される。そうではなく、rh-1がrに等しくない場合、hは、F内の第(p-i)のビット値の第(rh-1+1)のインスタンスの索引に設定される。zは、F内の第(p-i)のビット値の第rのインスタンスの索引に設定される。ループカウンタiが1だけ増分され、アクセスおよび索引付けステップが、i=p-1になるまで複数回繰り返される。メッセージ内のパターンの発生のカウントは、z-h+1として計数される。本手法によって提供される少なくとも1つの利点は、データセット内のすべての単一のビットを読み取ることなく、大きいデータセットにわたって探索を実行することができることであり、代わりに本開示は、選択的アクセスおよびランク演算を介して、パターンの発生を論理的に位置付ける。本明細書に提供される別の利点は、実行時間を最小にし、処理量を増大させるために、アクセスおよびランク演算を第1および第2のプール上で並列に実行することができることである。
第1のプールは、第2のプールと同じにすることができ、または第2のプールとは別個にすることができる。いくつかの実装形態では、メッセージのBurrows-Wheeler変換から導出された接尾辞アレイを表す識別子核酸分子の第3のプールが取得され、接尾辞アレイの各要素は、メッセージ内のLの対応する要素の位置を示す少なくともlog(n)個のビットのビットストリングによって表される。システムおよび方法は、カウントが0より大きいとき、hおよびzに対する最終値を含むhとzと間の位置における接尾辞アレイ内の要素に対応する第3のプール内の識別子核酸分子にアクセスすることによって、メッセージ内のパターンの発生をさらに位置付けることができる。いくつかの実装形態では、メッセージを表す識別子核酸分子の第4のプールが取得される。システムおよび方法は、前記第1の場所および第1の場所を取り囲む位置の近傍に対応する第4のプール内の識別子核酸分子にアクセスすることによって、パターンの第1の場所のコンテキストをさらに抽出することができる。
いくつかの実装形態では、第1のプール内の対応する識別子核酸分子の存在は、ビット値1を示し、第1のプール内の対応する識別子核酸分子の不在は、ビット値0を示す。bは、log2(n+1)の上限に等しくすることができる。カウンタシンボルストリングは、nをwで割った上限個のカウンタシンボルを含むことができ、bにnをwで割った上限を掛けた値に対応する長さを有するカウンタビットストリングによって表される。L内のw個のビットの第1のブロックに先行するあらゆるビット値のランニングカウントは0である。wは、bの値または1に設定することができる。システムおよび方法は、ビットストリングL内のビットのブロックを、第1のプール内の隣接して順序付けられた識別子核酸分子のブロックにマッピングすることができる。ビットストリングLの固定長のサブストリングを、固有の識別子核酸分子の固定サイズのセットから選択された固定数の固有の識別子核酸分子によって表されるコードワードにマッピングすることができる。追加の情報を使用して、第1および第2のプールからの識別子核酸分子の書込み、アクセス、および読取りのエラーを検出および補正し、追加の情報を識別子に記憶することができる。
いくつかの態様では、メッセージ内の長さpの特定のビットパターンのカウントを取得するシステムおよび方法が本明細書に提供される。システムおよび方法は、ビットストリングLを表す識別子核酸分子の第1のプールを取得し、ビットストリングLは、メッセージのBurrows-Wheeler変換行列の最後の列であり、第1のプールは、粉末、液体、または固体の形態を有し、第1のプール内の各識別子核酸分子は、成分核酸分子を含み、成分核酸分子の少なくとも一部分は、1つまたは複数のプローブに結合するように構成される。特有のビット値を有するビットの数のランニングカウントを表す、ビットストリングLから導出されたカウンタシンボルストリングを表す識別子核酸分子の第2のプールが取得される。メッセージ内の特定のビットパターンのカウントは、第1のプールおよび第2のプールからの識別子核酸分子に選択的にアクセスすることによって取得される。この技法によって提供される少なくとも1つの利点は、データセット内のすべての単一のビットを読み取ることなく、大きいデータセットにわたって探索を実行することができることであり、代わりに本技法は、選択的なアクセスを介してパターンの発生を論理的に位置付けることを伴う。本明細書に提供される別の利点は、実行時間を最小にし、処理量を増大させるために、アクセス演算を第1および第2のプール上で並列に実行することができることである。
いくつかの態様では、長さnsのシンボルストリングを含むメッセージ内の長さpの特定のシンボルパターンのカウントを取得するシステムおよび方法が本明細書に提供され、各シンボルは、r個のシンボル値のセットから選択される。システムおよび方法は、メッセージのBurrows-Wheeler変換行列の最後の列であるシンボルストリングLを表す識別子核酸分子の第1のプールを取得し、第1のプールは、粉末、液体、または固体の形態を有し、第1のプール内の各識別子核酸分子は、成分核酸分子を含み、成分核酸分子の少なくとも一部分は、1つまたは複数のプローブに結合するように構成される。システムおよび方法は、識別子核酸分子のr個の第2のプールをさらに取得し、r個の第2のプールの各々は、Lから導出されたカウンタシンボルストリングCに対応し、ここでv=1、2、...、rであり、これは対応するシンボル値Rを有するL内のシンボルの数のランニングカウントを表す。システムおよび方法は、第1のプールおよびr個の第2のプールからの識別子核酸分子に選択的にアクセスすることによって、メッセージ内の長さpの特定のシンボルパターンのカウントを取得する。この手法によって提供される少なくとも1つの利点は、データセット内のすべての単一のビットを読み取ることなく、大きいデータセットにわたって探索を実行することができることであり、代わりに本手法は、選択的なアクセスを介してパターンの発生を論理的に位置付ける。本明細書に提供される別の利点は、実行時間を最小にし、処理量を増大させるために、アクセス演算を第1および第2のプール上で並列に実行することができることである。
いくつかの実装形態では、本手法は、Burrows-Wheeler変換行列の第1の列Fを再構築することを含む。一連のプローブを使用して、L内の対応する各シンボル値Rの発生の総数を表すr個の第2のプールの各々における最後のカウンタシンボルから、識別子核酸分子にアクセスすることができ、対応する各シンボル値Rの発生の前記総数を使用して、Fを再構築することができる。パターン内の第pのシンボル値を有するF内の位置の範囲を判定することができる。いくつかの実装形態では、本手法は、一連のプローブを使用して、第1のプールおよび対応する第2のプールから識別子核酸分子にアクセスして、範囲にすぐ先行する位置におけるL内の対応するシンボル値の第1のランク、および範囲の末端の位置におけるL内の対応するシンボル値の第2のランクを判定することと、第1のランクおよび第2のランクを使用して、この範囲を、パターン内の後続のシンボルに先行する対応するシンボルのインスタンスを有するF内の位置の範囲に更新することとを含む。
いくつかの実装形態では、第1のランクrh-1は、L内の位置h-1におけるパターン内のそれぞれの先行するシンボル値であり、第2のランクrは、L内の位置zにおけるパターン内のそれぞれの先行するシンボル値である。メッセージ内のパターンの発生のカウントは、第1および第2のランクの最終値に基づいて判定することができる。たとえば、カウントは、第1および第2のランクの最終値間の差である。第1および第2のランクが等しいと判定された場合、カウントを0に設定することができる。
いくつかの実装形態では、本手法は、メッセージのBurrows-Wheeler変換から導出された接尾辞アレイSAを表す識別子核酸分子のプール、SAプールを取得することを含み、SAの各要素は、メッセージ内のLの対応する要素の位置を示す少なくともlog(n)個のビットのビットストリングによって表される。方法およびシステムは、カウントが0より大きいと仮定して、F内の位置の最終範囲によって与えられる位置におけるSAの要素に対応するSAプール内の識別子核酸分子にアクセスすることによって、メッセージ内のパターンの発生を位置付けることができる。本手法は、メッセージを表す識別子のメッセージプールを取得することを含むことができ、前記第1の場所および第1の場所を取り囲む位置の近傍に対応するメッセージプール内の識別子核酸分子にアクセスすることによって、パターンの第1の場所のコンテキストの抽出を可能にする。
いくつかの実装形態では、識別子核酸分子の第1のプールは、r個の第1のプールのうちの1つであり、r個の第1のプールの各々は、ビットストリングLに対応し、ここでv=1、2、...、rであり、したがってLの要素は、シンボル値Rに一致するLの要素に対してビット値「1」、そうでない場合はビット値「0」を有し、または逆も同様である。たとえば、Lに対応する第1のプールが、パターン内のシンボル値Rの第1および第2のランクを判定するために使用される。
いくつかの態様では、核酸分子に記憶されたデジタル情報に対して動作するシステムおよび方法が本明細書に提供される。システムおよび方法は、識別子核酸分子の第1のプールを取得し、プールは、粉末、液体、または固体の形態を有し、第1のプール内の各識別子核酸分子は、成分核酸分子を含み、成分核酸分子の少なくとも一部分は、1つまたは複数のプローブに結合するように構成され、識別子核酸分子は、入力シンボルストリングを表す。第1のプール内の識別子核酸分子でif-then-else演算が実行され、if-then-else演算は、プローブを有する成分核酸分子のうちの少なくとも1つを標的とし、前記第1のプールからの識別子核酸分子のサブセットを有する中間プールを作成する。if-then-else演算が繰り返され、出力シンボルストリングの少なくとも一部分を表す識別子核酸分子の最終プールが作成されるまで、すべての後続のステップにおいて中間プールが第1のプールに取って代わる。
この手法を使用することで、条件付きプログラムを書き込むことが可能になる。たとえば、各「if」演算は、1つまたは複数の識別子の有無を試験し、その有無に応じて、「then」または「else」の分岐へ進む。この演算は、複数の条件および対応する分岐を含むことができる。演算のすべての分岐から、出力を作り出すことができる。この手法により、複数の識別子ライブラリ内の識別子のすべて(たとえば、テラビット規模)を並列に演算することが可能になる。たとえば、ライブラリが数十億のデータオブジェクトを符号化する場合、各オブジェクトを調べて出力を作り出す複素関数を、DNAに基づくプログラムとして設計し、ライブラリ上で並列に実行することができる。
本開示は、所望のプログラムの実行のために識別子ライブラリを複数の入力識別子ライブラリに再配置するビットをシフト、コピー、および移動する方策を含む。物理的に、1つの入力ライブラリを2つの出力ライブラリに変換する反応において、各if-then-else演算を行うことができ、それらのライブラリ内のすべての識別子にわたって多重化することができる。たとえば流体伝達によって、1つの演算の出力ライブラリを別の演算の入力ライブラリへ向けることができる。RAMおよび処理力によって制限される従来のハードウェアとは異なり、本明細書に記載するDNAプラットホームは、大量の入力データオブジェクトにわたって同時に低電力でプログラムを実行することが可能である。
識別子は、M個の層の各々から別個の成分を含むことができ、各層は成分のセットを含む。プローブは、PCRプライマーまたは親和性タグ付きオリゴヌクレオチドとすることができ、それによってそれぞれPCRまたは親和性プルダウンアッセイを介してアクセスが実行される。いくつかの実装形態では、if-then-else演算は、特有の成分核酸分子を含むプール内の識別子核酸分子にアクセスすることを含む。演算は、第1のプール、中間プール、または最終プールのうちの少なくとも1つを少なくとも2つの複製プールに分割または複製し(たとえば、PCRを介して)、少なくとも2つの中間プールを組み合わせて、新しい中間プールもしくは第2のプールまたは両方を形成することを含むことができる。1つまたは複数のプール上で並列に、2つまたはそれよりも多いif-then-else演算を実行することができる。
いくつかの態様では、本明細書に記載する方法のいずれかを実行するように構成されたシステムが本明細書に提供される。システムは、基質上の個別の場所(たとえば、反応コンパートメント)にDNA成分を分注し、結合反応に最適の条件を提供する試薬を分注し、ライブラリを含むDNA識別子のすべてをプールするように構成されたプリンタフィニッシャシステムとすることができる。システムは、コンテナ内に核酸分子を記憶して操作することができる(たとえば、自動化された液体の取扱いを介して)。システムは、コンパートメントまたはコンテナ内へプローブを分注して、核酸分子のサブセットにアクセスすることができる。システムは、核酸分子のプールを等分および複製するように構成することができる。
いくつかの態様では、本明細書に記載する方法のいずれかによるデジタル情報を表す核酸分子を含む組成物が本明細書に提供される。組成物は、成分核酸分子を含む識別子核酸分子を含む。識別子核酸分子は、プール内に収集してデジタル情報にマッピングすることができる。たとえば、識別子の存在は、シンボルストリング内の特定のビットまたはシンボル値を示し、識別子の不在は、シンボルストリング内の別のビットまたはシンボル値を示す。
本開示の上記およびその他の特徴は本開示の性質およびその様々な利点を含めて、添付の図面と併せて以下の詳細な説明を考慮するとより明らかになる。
図1は、核酸配列に記憶されたデジタル情報の符号化、書込み、アクセス、照会、読取り、および復号を行うためのプロセスの概略を概略的に示す図である。
図2Aおよび図2Bは、オブジェクトまたは識別子(たとえば、核酸分子)を使用して「データアットアドレス」と呼ばれるデジタルデータを符号化する例示的な方法を概略的に示す図であり、図2Aは、ランクオブジェクト(またはアドレスオブジェクト)をバイト値オブジェクト(またはデータオブジェクト)と組み合わせて識別子を作成することを示し、図2Bは、ランクオブジェクトおよびバイト値オブジェクト自体が他のオブジェクトの組合せ連結であるデータアットアドレス方法の実装形態を示す。
図3Aおよび図3Bは、オブジェクトまたは識別子(たとえば、核酸配列)を使用してデジタル情報を符号化する例示的な方法を概略的に示す図であり、図3Aは、ランクオブジェクトを識別子として使用してデジタル情報を符号化することを示し、図3Bは、アドレスオブジェクト自体が他のオブジェクトの組合せ連結である符号化方法の実装形態を示す。
図4は、所与のサイズ(等高線)の情報を記憶するように構築することができる可能な識別子の組合せ空間(C、x軸)と識別子の平均数(k、y軸)との間の関係の対数空間の等高線図を示す図である。
図5は、核酸配列(たとえば、デオキシリボ核酸)に情報を書き込むための方法の概略を概略的に示す図である。
図6Aおよび図6Bは、別個の成分(たとえば、核酸配列)を組合せにより組み立てることによって、識別子(たとえば、核酸分子)を構築するための「積方式」と呼ばれる例示的な方法を示す図であり、図6Aは、積方式を使用して構築された識別子のアーキテクチャを示し、図6Bは、積方式を使用して構築することができる識別子の組合せ空間の一例を示す。
図7は、成分(たとえば、核酸配列)から識別子(たとえば、核酸分子)を構築するためのオーバーラップ伸長ポリメラーゼ連鎖反応の使用を概略的に示す図である。
図8は、成分(たとえば、核酸配列)から識別子(たとえば、核酸分子)を構築するための付着末端結合の使用を概略的に示す図である。
図9は、成分(たとえば、核酸配列)から識別子(たとえば、核酸分子)を構築するためのリコンビナーゼアセンブリの使用を概略的に示す図である。
図10Aおよび図10Bは、鋳型指向結合を実証する図であり、図10Aは、成分(たとえば、核酸配列)から識別子(たとえば、核酸分子)を構築するための鋳型指向結合の使用を概略的に示す図であり、図10Bは、1つのプールされた鋳型指向結合反応において6つの核酸配列(たとえば、成分)から組合せにより各々組み立てられた256個の別個の核酸配列のコピー数(存在度)のヒストグラムを示す。 図10Aおよび図10Bは、鋳型指向結合を実証する図であり、図10Aは、成分(たとえば、核酸配列)から識別子(たとえば、核酸分子)を構築するための鋳型指向結合の使用を概略的に示す図であり、図10Bは、1つのプールされた鋳型指向結合反応において6つの核酸配列(たとえば、成分)から組合せにより各々組み立てられた256個の別個の核酸配列のコピー数(存在度)のヒストグラムを示す。
図11は、識別子のトライによるコンパートメント内への溶液の分注の図である。
図12は、層によって組織化されたオペレーティングシステムのシステム図である。
図13は、3つの層を有する層状のプロダクトコンストラクタおよび8つの成分からなる成分ライブラリのシステム図である。
図14は、アーカイブ演算のシステム図である。
図15は、コンテナ内へのデータのブロックの記憶の流れ図である。
図16は、ストリングのBurrows-Wheeler変換を示す図である。
図17は、Burrows-Wheeler行列に対する接尾辞アレイを示す図である。
図18は、核酸に記憶されたBurrows-Wheeler変換の図例である。
図19は、核酸に記憶されたカウンタアレイの図例である。
図20は、照会木の図例である。
図21は、2分木における識別子の隣接範囲の分解の図例である。
図22は、照会指向非循環グラフへの照会木の変換の図例である。
図23は、2進ストリングに対するランク演算の実行の図例である。
図24は、ランク演算の実行のための流れ図である。
図25は、フェッチ演算の実行のための流れ図である。
図26は、2進ストリングに対するカウント演算の実行のための流れ図である。
図27は、2進ストリングに対するカウント演算のための流れ図である。
図28は、図29の方法のステップの実行のための流れ図である。
図29は、任意のストリングに対するカウント演算の実行のための流れ図である。
図30は、LFマッピングのための流れ図である。
図31は、Burrows-Wheeler変換からのストリングの再構築のための流れ図である。
図32は、カウント演算のための流れ図である。
図33は、if-then-else演算のための流れ図である。
本明細書に記載するアセンブリおよび方法の全体的な理解を提供するために、特定の例示的な実装形態について説明する。本明細書に記載する実装形態および特徴は、成分核酸分子から構成された識別子核酸分子におけるデータ記憶に関して具体的に説明されているが、以下に概説するすべての態様および他の特徴は、任意の好適な形で互いに組み合わせることができ、DNAに基づくデータ記憶の他の形式にも適合および適用することができることが理解されよう。
デジタル情報を符号化するための核酸の塩基ごとの合成は、概してすべての新しい情報記憶要求に対して別個の核酸配列の塩基ごとのデノボ合成(たとえば、ホスホロアミダイト合成)を必要とすることから、高価でありかつ時間がかかる可能性がある。本開示は、塩基ごとの合成またはデノボ合成に依拠するのではなく、代わりに成分(または成分核酸配列)の組合せ配置を含む複数の識別子または核酸配列内にデジタル情報を符号化するシステムおよび方法に関する。このようにして、本開示のシステムおよび方法は、デジタル情報記憶の効率および製品化の可能性を改善する。
本開示は、第1の情報記憶要求に対して別個の核酸配列(または成分)の第1のセットを作り出し、その後同じ核酸配列(または成分)を後続の情報記憶要求に対して再利用することができる方法を説明する。これらの手法は、情報からDNAへの符号化および書込みプロセスにおける核酸配列のデノボ合成の役割を低減させることによって、DNAに基づく情報記憶のコストを大幅に低減させる。
さらに、各伸長核酸への各塩基の循環的な送達を使用するホスホロアミダイトの化学的性質または鋳型のないポリメラーゼに基づく核酸伸長などの塩基ごとの合成の実装形態とは異なり、成分からの識別子構造を使用して情報からDNAに書き込むことに関する本開示のシステムおよび方法は、非常に並列化可能なプロセスであり、必ずしも循環的な核酸伸長を使用しない。したがって、本開示は、他の方法と比較すると、DNAにデジタル情報を書き込む速度を増大させる。デジタル情報を核酸分子に書き込む様々なシステムおよび方法は、各々が全体として参照により本明細書に組み込まれている、2017年12月21日出願の"NUCLEIC ACID-BASED DATA STORAGE"という名称の米国特許第10,650,312号(DNAにおけるデジタル情報の符号化について記載)、2019年5月16日に出願され、米国特許出願公開第2019/0362814号として公開された"SYSTEMS FOR NUCLEIC ACID-BASED DATA STORAGE"という名称の米国特許出願第16/461,774号(DNAに基づくデータ記憶のための符号化方式について記載)、2019年5月16日出願の"COMPOSITIONS AND METHODS FOR NUCLEIC ACID-BASED DATA STORAGE"という名称の米国特許出願第16/414,758号、および2019年8月5日出願の"SYSTEMS AND METHODS FOR STORING AND READING NUCLEIC ACID-BASED DATA WITH ERROR PROTECTION"という名称の米国特許出願第16/532,077号(DNA符号化のためのデータ構造ならびにエラーの保護および補正について記載)に記載されている。
以下の説明は、データを核酸分子で符号化する様々なシステムおよび方法の概略から始まり、図1~図10に関連して説明するように、デジタルデータを符号化する核酸分子を印刷および記憶するように構成された様々な書込みおよび格納システムについて説明する。本開示は次いで、図11~図14に関連して様々な符号化方法について説明する。本開示は、上記で参照した特許出願に記載されている核酸分子におけるデジタル情報の書込みおよび読取りを行う方法の改善に関する。具体的には、データ構造を使用してデジタル情報を表すことで、デジタル情報の特有の特性を画定し、DNAにおけるアクセスを容易にするようにそれらの特性を組織化することによって、DNAから情報を読み取る効率を改善することができる。
一例として、大きいデータストリングが2つまたはそれよりも多いサブストリングに分離され、各サブストリングは核酸分子の別個のプールに記憶され、このプールは独自のコンテナ内へ配置される。どのコンテナが所望の情報を収容しているかを判定するための1つの方法は、場所(たとえば、コンテナ数または配置)を識別するデータ構造(たとえば、B木またはトライ構造など)にアクセスすることである。データ構造を使用してどのコンテナが関連するかを参照することによって、ユーザは、各コンテナ内の情報を1つずつ読み取ってからその情報が関連するかどうかを判定するのではなく、所望の情報を収容しているコンテナだけにアクセスすることができる。これにより、核酸分子内のデータストリングにおいて関連する情報にアクセスする効率が改善される。
上記の例の延長として、ユーザがアクセスしたい関連する情報は、コンテナのプール内の核酸分子のサブセットのみから表すことができ、または計算可能とすることができる。この場合、本開示は、核酸分子のプール全体に記憶された情報のすべてにアクセスする必要なく、関連する分子の特有のサブセットのみにアクセスする方法を提供する。そうすることで、効率が増大され、コストが低減されるはずである。プール内の核酸分子の望ましいサブセットのみにアクセスするための1つの方法は、プール内の核酸分子の特有のサブセットを標的とするために使用することができる情報を記憶しているデータ構造(たとえば、B木またはトライ構造など)を参照することである。プール内の(または異なるコンテナ内の異なるプールにわたる)核酸分子の特有のサブセットにアクセスしてそれを探索するために使用することができる特有のデータ構造の例は、図15~図19に関連して説明する。さらに、本開示は、探索、位置付け、および抽出機能など、核酸分子に記憶されたデータに対して特定の演算を効率的に実行するためにデータ構造に依拠するシステムおよび方法に関する。具体的には、核酸分子に記憶された特有のデータ部分にアクセスして、読取り、アクセス、およびランク付けなどの演算を実行するために1つまたは複数のデータ構造に依拠する例示的なシステムおよび方法が、図20~図25に関連して説明されており、核酸分子に記憶された特有のデータ部分にアクセスして、核酸分子に記憶されたデータからの特有のパターンまたは照会の探索、位置付け、および抽出などの演算を実行するための1つまたは複数のデータ構造に依拠するシステムおよび方法が、図26~図32に関連して説明されている。最後に、論理if-then-else演算が、図33に関連して説明されている。
概して、本開示は、データ(1もしく0ビットのストリング、またはシンボルストリングによって表され、各シンボルは、3つ以上のシンボル値のセットから選択される)を、識別子核酸配列(または識別子配列)のセットに符号化し、各固有の識別子配列は、ストリング内に対応するビットまたはシンボルを有する。識別子配列は、ストリング内のビットもしくはシンボルの位置、その値、または位置および値の両方を符号化する。本開示のシステムおよび方法を実施するための1つの方法は、図1~図11に関連して論じるように、事前に作られたDNA成分分子(成分配列によって表される)を、画定された層に基づいて順序付けられた形で結合することによって、識別子配列によって表される各識別子核酸分子(または識別子分子)を作成することである。具体的には、異なる層内の成分配列を複数の層にわたって組合せにより組み合わせて(たとえば、1つの成分配列が層ごとに選択される)、これらを連結(たとえば、結合)し、ストリング内の各シンボルまたはビットに1対1でマッピングされた識別子配列を形成する。
概して、成分核酸配列は、前記配列を含むすべての識別子に対して選択するために使用することができる1つまたは複数のプローブに結合するように構成される。たとえば、成分は、20塩基からなる標的配列を含むことができ、プローブは、標的配列に結合するために、相補的な20塩基のオリゴヌクレオチドを含むことができる。本開示に記載するように、各々固有のプローブに結合することが可能な成分からの識別子核酸配列の組成は、記憶されたデータに対するアクセスおよび動作に関して有益な特徴を提供する。本明細書に提示する識別子を生成する方法は、成分を含む識別子を生成するように特に構成されているが、そのような識別子核酸分子は、複数の代替の方法によって形成することもできることを理解されたい。たとえば、長さ100塩基の核酸配列を生成するデノボ合成を使用して、各識別子が各々20塩基からなる5つの成分を含む識別子核酸配列を作成することができる。塩基のすべての組合せが合成に対して利用可能である場合、各成分に対して最高420の可能な配列を得ることができる。
本明細書では、「シンボル」という用語は概して、デジタル情報の単位の表現を指す。デジタル情報は、シンボルストリングに分けまたは変換することができる。一例では、シンボルは、1ビットとすることができ、ビットは、「0」または「1」の値を有することができる。
本明細書では、「別個」または「固有」という用語は概して、グループ内の他の物体から区別可能な物体を指す。たとえば、別個または固有の核酸配列は、いかなる他の核酸配列とも同じ配列を有していない核酸配列とすることができる。別個または固有の核酸分子は、いかなる他の核酸分子とも同じ配列を有していない。別個または固有の核酸配列または分子は、別の核酸配列または分子と類似領域を共用することができる。
本明細書では、「成分」という用語は概して、核酸配列または核酸分子を指す。成分は、別個の核酸配列を含むことができる。成分は、1つまたは複数の他の成分と連結しまたは組み立てて、他の核酸配列または分子を生成することができる。
本明細書では、「層」という用語は概して、成分のグループまたはプールを指す。各層は、別個の成分のセットを含むことができ、したがって1つの層内の成分は、別の層内の成分とは異なる。1つまたは複数の層からの成分を組み立てて、1つまたは複数の識別子を生成することができる。
本明細書では、「識別子」という用語は概して、より大きいビットストリング内のビットストリングの位置および値を表す核酸分子または核酸配列を指す。より一般には、識別子は、シンボルストリング内のシンボルを表しまたはそれに対応する任意の物体を指すことができる。いくつかの実装形態では、識別子は、1つまたは複数の連結された成分を含むことができる。
本明細書では、「組合せ空間」という用語は概して、成分などの物体の開始セットから生成することができるすべての可能な別個の識別子のセット、および識別子を形成するためにそれらの物体をどのように修正するかに関する許容可能な規則セットを指す。成分を組み立てまたは連結することによって作られる識別子の組合せ空間のサイズは、成分の層の数、各層内の成分の数、および識別子を生成するために使用される特定の組立て方法に依存することができる。
本明細書では、「識別子ランク」という用語は概して、セット内の識別子の順序を画定する関係を指す。
本明細書では、「識別子ライブラリ」という用語は概して、デジタル情報を表すシンボルストリング内のシンボルに対応する1群の識別子を指す。いくつかの実装形態では、識別子ライブラリ内の所与の識別子の不在は、特定の位置におけるシンボル値を示すことができる。1つまたは複数の識別子ライブラリは、識別子のプール、グループ、またはセットに組み合わせることができる。各識別子ライブラリは、識別子ライブラリを識別する固有のバーコードを含むことができる。
本明細書では、「プローブ」という用語は概して、識別子核酸分子上の標的配列に結合する剤を指す。標的配列は、成分の一部分とすることができる。プローブは、その標的配列に一致しまたはそれに相補的な配列を含むことができる。プローブは、前記標的配列を含むすべての識別子核酸分子を分離するためにさらに使用することができる。たとえば、プローブは、標的配列を含むすべての識別子核酸分子を増幅するPCR反応におけるプライマーとすることができる。別法として、プローブは、前記オリゴヌクレオチドに対応する配列を有するすべての識別子核酸分子を選択するために使用することができる親和性タグ付きオリゴヌクレオチド分子を収容することができる。
本明細書では、「核酸」という用語は概して、デオキシリボ核酸(DNA)、リボ核酸(RNA)、またはその変異体を指す。核酸は、アデノシン(A)、シトシン(C)、グアニン(G)、チミン(T)、およびウラシル(U)、またはその変異体から選択された1つまたは複数のサブユニットを含みうる。ヌクレオシドは、A、C、G、T、もしくはU、またはその変異体を含みうる。ヌクレオシドは、成長核酸鎖に組み込むことができるサブユニットを含みうる。そのようなサブユニットは、より相補的なA、C、G、T、もしくはUのうちの1つに特有でありうる、またはプリン(すなわち、AもしくはG、またはその変異体)もしくはピリミジン(すなわち、C、T、もしくはU、またはその変異体)に相補的でありうる、A、C、G、T、もしくはU、または他のサブユニットでありうる。いくつかの例では、核酸は1本鎖または2本鎖とすることができ、いくつかの場合、核酸は環状である。
本明細書では、「核酸分子」または「核酸配列」という用語は概して、様々な長さを有することができるヌクレオシドの高分子形態もしくはポリヌクレオシド、デオキシリボヌクレオシド(DNA)もしくはリボヌクレオシド(RNA)、またはその類似体を指す。「核酸配列」という用語は、ヌクレオシドの順序を画定するポリヌクレオシドのアルファベット表現を指し、「核酸分子」という用語は、ポリヌクレオシド自体の物理インスタンスを指す。このアルファベット表現は、中央処理装置を有するコンピュータ内のデータベースに入力することができ、核酸配列または核酸分子をシンボルまたはビットにマッピングしてデジタル情報を符号化するために使用することができる。核酸配列またはオリゴヌクレオチドは、1つまたは複数の非標準的なヌクレオシド、ヌクレオシド類似体、および/または修飾ヌクレオシドを含みうる。
本明細書では、「オリゴヌクレオチド」は概して、1本鎖核酸配列を指し、典型的には、アデニン(A)、シトシン(C)、グアニン(G)、およびチミン(T)、またはポリヌクレオシドがRNAであるときはウラシル(U)という4つのヌクレオシド塩基の特異配列から構成される。
修飾ヌクレオシドの例には、それだけに限定されるものではないが、ジアミノプリン、5-フルオロウラシル、5-ブロモウラシル、5-クロロウラシル、5-ヨードウラシル、ヒポキサンチン、キサンチン(xantine)、4-アセチルシトシン、5-(カルボキシヒドロキシルメチル)ウラシル、5-カルボキシメチルアミノメチル-2-チオウラジン、5-カルボキシメチルアミノメチルウラシル、ジヒドロウラシル、ベータ-D-ガラクトシルキュエオシン(beta-D-galactosylqueosine)、イノシン、N6-イソペンテニルアデニン、1-メチルグアニン、1-メチルイノシン、2,2-ジメチルグアニン、2-メチルアデニン、2-メチルグアニン、3-メチルシトシン、5-メチルシトシン、N6-アデニン、7-メチルグアニン、5-メチルアミノメチルウラシル、5-メトキシアミノメチル-2-チオウラシル、ベータ-D-メノシルキュエオシン(beta-D-mannosylqueosine)、5’-メトキシカルボキシメチルウラシル、5-メトキシウラシル、2-メチルチオ-D46-イソペンテニルアデニン、ウラシル-5-オキシ酢酸(v)、ワイブトキソシン、シュードウラシル、キュエオシン(queosine)、2-チオシトシン、5-メチル-2-チオウラシル、2-チオウラシル、4-チオウラシル、5-メチルウラシル、ウラシル-5-オキシ酢酸メチルエステル、ウラシル-5-オキシ酢酸(v)、5-メチル-2-チオウラシル、3-(3-アミノ-3-N-2-カルボキシプロピル)ウラシル、(acp3)w、2,6-ジアミノプリンなどが含まれる。核酸分子はまた、塩基部分(たとえば、典型的に相補的ヌクレオシドとの水素結合を形成するために利用可能な1つもしくは複数の原子、および/または典型的に相補的ヌクレオシドとの水素結合を形成することが可能でない1つもしくは複数の原子)、糖部分、またはリン酸主鎖で修飾することができる。核酸分子はまた、N-ヒドロキシスクシンイミドエステル(NHS)などのアミン反応部分の共有結合を可能にするために、アミノアリル-dUTP(aa-dUTP)およびアミノヘキシルアクリルアミド-dCTP(aha-dCTP)などのアミン修飾基を含有することができる。
本明細書では、「プライマー」という用語は概して、ポリメラーゼ連鎖反応(PCR)などの核酸合成開始点として働く核酸の鎖を指す。一例では、DNAサンプルの複製中、複製に触媒作用を及ぼす酵素は、DNAサンプルに取り付けられたプライマーの3’末端で複製を開始し、逆鎖をコピーする。
本明細書では、「ポリメラーゼ」または「ポリメラーゼ酵素」という用語は概して、ポリメラーゼ反応に触媒作用を及ぼすことが可能な酵素を指す。ポリメラーゼの例には、限定ではないが、核酸ポリメラーゼが含まれる。ポリメラーゼは、自然に発生または合成することができる。例示的なポリメラーゼは、Φ29のポリメラーゼまたはその誘導体である。いくつかの場合、ポリメラーゼとともに、またはポリメラーゼの代替として、新しい核酸配列を構築するために、転写酵素またはリガーゼ(すなわち、結合の形成に触媒作用を及ぼす酵素)が使用される。ポリメラーゼの例には、DNAポリメラーゼ、RNAポリメラーゼ、熱安定性ポリメラーゼ、野生型ポリメラーゼ、修飾ポリメラーゼ、E.coli DNAポリメラーゼI、T7DNAポリメラーゼ、バクテリオファージT4 DNAポリメラーゼΦ29(phi29)DNAポリメラーゼ、Taqポリメラーゼ、Tthポリメラーゼ、Tliポリメラーゼ、Pfuポリメラーゼ、Pwoポリメラーゼ、VENTポリメラーゼ、DEEPVENTポリメラーゼ、Ex-Taqポリメラーゼ、LA-Tawポリメラーゼ、Ssoポリメラーゼ、Pocポリメラーゼ、Pabポリメラーゼ、Mthポリメラーゼ、ES4ポリメラーゼ、Truポリメラーゼ、Tacポリメラーゼ、Tneポリメラーゼ、Tmaポリメラーゼ、Tcaポリメラーゼ、Tihポリメラーゼ、Tfiポリメラーゼ、プラチナTaqポリメラーゼ、Tbrポリメラーゼ、Tflポリメラーゼ、Pfutuboポリメラーゼ、Pyrobestポリメラーゼ、KODポリメラーゼ、Bstポリメラーゼ、Sacポリメラーゼ、3’~5’エキソヌクレアーゼ活性を有するKlenow断片ポリメラーゼ、ならびにそれらの変異体、修飾産物、および誘導体が含まれる。
2進コードの形式のコンピュータデータなどのデジタル情報は、シンボル配列またはストリングを含むことができる。2進コードは、たとえば2つの2進シンボル、典型的にはビットと呼ばれる0および1を有する2進法を使用して、テキストまたはコンピュータプロセッサ命令を符号化しまたは表すことができる。デジタル情報は、非2進シンボルの配列を含むことができる非2進コードの形式で表すことができる。符号化された各シンボルは、固有のビットストリング(または「バイト」)に再び割り当てることができ、固有のビットストリングまたはバイトは、バイトまたはバイトストリームのストリングに配置することができる。所与のビットに対するビット値は、2つのシンボル(たとえば、0または1)のうちの1つとすることができる。バイトは、Nビットのストリングを含むことができ、合計2の固有のバイト値を有することができる。たとえば、8ビットを含むバイトは、合計2または256の可能な固有のバイト値を作り出すことができ、256バイトの各々は、バイトによって符号化することができる256個の可能な別個のシンボル、文字、または命令のうちの1つに対応することができる。生データ(たとえば、テキストファイルおよびコンピュータ命令)は、バイトまたはバイトストリームのストリングとして表すことができる。生データを含むZipファイルまたは圧縮データファイルもまた、バイトストリームに記憶することができ、これらのファイルは、圧縮された形式でバイトストリームとして記憶することができ、次いで生データに解凍してから、コンピュータによって読み取ることができる。
「索引」および「位置」という用語は、本開示で区別なく使用され、どちらの用語も、リストまたはストリングなどの順序付けられた群の特有の要素または実体を指すために使用されることを理解されたい。たとえば、索引または位置を使用して、アレイ、ベクトル、ストリング、またはデータ構造内の要素を指定することができる。索引/位置の表記は、付番方式を使用して、各エントリ/実体に公称番号を割り当てる。本開示の例は、当技術分野では公知の第1の索引/位置0を、0に基づく付番として使用することが多い。アレイ/ストリングの第1の位置(第0の位置とも呼ばれる)は、特有の位置を含む算出の目的で、0によって示される。1組の長さnは、0、1、...、n-1の付番方式を有するはずである。本明細書に記載するシステムおよび方法では、他の付番方式を使用することもできることを理解されたい。たとえば、付番方式は、1組の長さnに対して、1で開始し、nまで継続することができる。
本開示は、本出願の図に関連する方法について説明する。これらの方法は、算出ステップを含み、DNAで実行されるように構成されることを理解されたい。本開示の方法およびシステムを使用して、コンピュータデータまたは情報を複数の識別子で符号化することができ、識別子の各々は、元の情報の1つまたは複数のビットを表すことができる。いくつかの例では、本開示の方法およびシステムは、識別子を使用してデータまたは情報を符号化し、識別子の各々は、元の情報の2つのビットを表す。
核酸配列への情報の符号化および書込み
以下の説明では、図1~図10に関連して、核酸分子でデータを符号化する様々なシステムおよび方法の概略を提供し、符号化された核酸分子を印刷および記憶するように構成された様々な書込みおよび格納システムについて説明する。
図1は、例示的な実装形態による核酸配列への情報の符号化、核酸配列への情報の書込み、核酸配列に書き込まれた情報の読取り、および読み取った情報の復号のための概略的なプロセスを示す。デジタル情報またはデータは、1つまたは複数のシンボルストリングとして表される。一例では、シンボルはビットであり、各ビットは「0」または「1」の値を有する。各シンボルは、そのシンボルを表すオブジェクト(たとえば、識別子)にマッピングまたは符号化することができ、したがって各シンボルは、別個の識別子によって表される。別個の識別子は、成分核酸配列(本明細書では、成分と呼ぶことができる)から構築された特異核酸配列を有する1つまたは複数の核酸分子とすることができる。デジタル情報を核酸配列に書き込むために、プロセスは、デジタル情報の各シンボルに対応する識別子を物理的に構築することによって物理的に生成することができる「識別子ライブラリ」を生成する。識別子ライブラリからデジタル情報を読み取るために、プロセスは、識別子をシークエンシングおよび識別することによって、識別子ライブラリ内の識別子のすべてまたはサブセットにアクセスする。次いで、識別された識別子を、対応するシンボルに関連付けて、元のデジタルデータを復号する。概して、本手法は、一度にデジタル情報のすべてまたは任意の部分にアクセスすることを可能にする。
一例では、図1の手法を使用した情報の符号化および読取りのための方法は、ビットストリームを受け取ることと、識別子ランクまたは核酸索引を使用して、ビットストリーム内の各1ビット(「1」のビット値を有するビット)を別個の核酸識別子にマッピングすることとを含む。次いで、プロセスは、1のビット値に対応する識別子のコピーを含む核酸分子のプールとして、識別子ライブラリを構築する(ビット値0の場合は識別子を除外する)。言い換えれば、識別子ライブラリは、ビットストリーム内の特有の位置またはランクにおいて1ビットを表す各識別子の複数のコピーを含み、各識別子は、ビットストリーム内の特有の位置またはランクを表す特異配列を共用するプール内の識別子分子の複数のインスタンスに関連付けられており、ビットストリーム内の0ビットを表す識別子は、プールから除外される。核酸分子のプールからデジタルデータを読み取るために、分子生物学方法(たとえば、シークエンシング、ハイブリダイゼーション、PCRなど)を使用して、どの識別子が識別子ライブラリ内に表されているかを判定することができる。識別子ライブラリ内に存在する識別子の場合、対応する識別子ランク(したがって、ビットストリーム内のビット位置)が判定され、ビット値「1」がその場所に割り当てられる。識別子ライブラリに存在しないあらゆる識別子に対しては、対応する識別子ランク(したがって、ビットストリーム内のビット位置)が判定され、ビット値「0」がその場所に割り当てられる。このようにして、核酸分子のプールを復号して、元の符号化されたビットストリームを判定することができる。
上述した手法は、N個の別個のビットのストリングを符号化することを伴い、等しい数Nの固有の核酸配列を可能な識別子として用いる。情報の符号化に対するこの手法は、記憶すべき情報の新しい各項目(Nビットの別のストリング)に対して、識別子(たとえば、核酸分子)のデノボ合成を使用することができる。他の事例では、記憶すべき情報の新しい各項目に対して識別子(数がNに等しいまたはそれよりも小さい)を新しく合成するコストを低減させて、すべての可能なN個の識別子の1回限りのデノボ合成および後の保守にすることができる。このようにして、情報の新しい項目(たとえば、長さNまたはそれよりも小さいビットストリング)を符号化することは、事前に合成(または事前に製作)された識別子を機械的に選択してともに混合し、識別子ライブラリを形成することを伴う。他の事例では、核酸配列の数(Nより小さい、いくつかの場合はNよりはるかに小さい)を合成および維持し、次いで酵素反応によってこれらの配列を修飾して、記憶すべき情報の新しい各項目に対して最大N個の識別子を生成することによって、(1)記憶すべき情報の新しい各項目に対する最大N個の識別子のデノボ合成、もしくは(2)記憶すべき情報の新しい各項目に対するN個の可能な識別子からの維持および選択、またはその両方のコストを低減させることができる。たとえば、合成および維持される核酸配列は、成分などのN個の識別子を構成する特有の部分に対応することができる。
識別子は、読取り、書込み、アクセス、コピー、および削除演算を容易にするように合理的に設計および選択することができる。識別子は、書込みエラー、突然変異、劣化、および読取りエラーを最小にするように設計および選択することができる。
特有の例として、利用可能な識別子配列のセットは、15の層を含むことができ、そのうち14層は各々、6つの固有のDNA成分配列を収容する。第15の層は、28個のDNA成分配列(6つではない)を含む多重化層とすることができ、これらのDNA成分配列も組み込まれる。したがって、各識別子は、識別子核酸分子の全長にわたって、15個の成分(各層に1成分)を収容することができる。書込みプロセス中、成分分子を反応コンパートメント内にともに組み立てて、識別子分子を形成する。いくつかの実装形態では、「多重化層」のみからの複数の成分が、同じ反応コンパートメント内へ組み合わせられる。
別の例として、86,400秒(24時間)で1テラバイトを書き込むために、約8×1011個の識別子分子を組み立てること(1つの識別子当たり10ビットの情報が符号化されると仮定する)、または約5×1010の液滴反応コンパートメントが必要となりうる。各反応は、28個の識別子の可能なセットから、14個の識別子を組み立てることができる。14個の成分(14層の各々から1つ、各層は6つの可能な成分を有する)は、識別子の「塩基」を指定して組み立てる。多重化層からの28個の可能な成分のうち残りの14個の成分は、どの14個の識別子(28の可能性から)が組み立てられるかを指定する。したがって、各反応コンパートメントは、28個のDNA成分と、リガーゼまたは他の反応混合物とを必要とすることができる。
本明細書に記載する方法は、後述するように、書込みシステムを使用して実施することができる。書込みシステムは、参照により本明細書に組み込まれている、2019年5月16日出願の"Printer-Finisher System for Data Storage in DNA"という名称の米国特許出願第16/414,752号に記載されているものなどのプリンタフィニッシャシステムとすることができる。ライタシステムは、基質上の個別の場所(たとえば、反応コンパートメント)にDNA成分を分注し、結合マスタ混合物を分注し、結合反応に最適の条件を提供し、ライブラリを含むDNA識別子のすべてをプールすることができる。
本明細書に記載する書込みシステムは、識別子を構築するために、結合反応の高処理量の並列化された印刷を実行することが可能である。反応は、ローラの上を動く可撓シート(ウェビングまたは基質とも呼ばれる)上へ印刷されるピコリットル(pL)規模の液滴で実施することができる。上記で参照した出願に記載されているように、書込みシステムは、好適な既製の印刷ヘッド、ドライバ、および機械インフラストラクチャを使用するデジタルインクジェット印刷およびウェブハンドリングなどの技術を組み込むことができる。いくつかの実装形態では、本明細書に記載するシステムおよび方法は、記憶容量および書込み処理量を実現するために、ウェブ速度、印刷ヘッド分注速度、液滴サイズ、および結合の化学的性質などの要因の最適化を含む。この目的で、潜在的な化学的性質およびハードウェアエラーに対するデータ許容度を確保するために、本明細書に記載するシステムおよび方法は、DNA成分配列をどのように層に区画化するか、および各印刷反応においてどれだけの識別子分子を構築するかに関する仕様を含めて、データの符号化および印刷命令の展開のための構成を含む。たとえば、そのような構成は、書込みシステムと通信してその性能を追跡するコンピュータシステムを含むことができる。
図2Aおよび図2Bは、例示的な実装形態によるデジタルデータをオブジェクトまたは識別子(たとえば、核酸分子)に符号化する「データアットアドレス」と呼ばれる例示的な方法を概略的に示す。図2Aは、ビットストリームを識別子ライブラリに符号化することを示し、個々の識別子は、識別子ランクを指定する単一の成分を、バイト値を指定する単一の成分に連結しまたは組み立てることによって構築される。概して、データアットアドレス方法は、2つのオブジェクトを含むことによって情報をモジュール式に符号化する識別子を使用し、1つのオブジェクトは、バイト値を識別する「バイト値オブジェクト」(または「データオブジェクト」)であり、1つのオブジェクトは、識別子ランク(または元のビットストリーム内のバイトの相対位置)を識別する「ランクオブジェクト」(または「アドレスオブジェクト」)である。図2Bは、データアットアドレス方法の一例を示し、各ランクオブジェクトは、成分のセットから組合せにより構築することができ、各バイト値オブジェクトは、成分のセットから組合せにより構築することができる。ランクおよびバイト値オブジェクトのそのような組合せ構造により、オブジェクトが単一の成分のみから作られた場合(たとえば、図2A)より、多くの情報を識別子に書き込むことが可能になる。
図3Aおよび図3Bは、例示的な実装形態によるデジタル情報をオブジェクトまたは識別子(たとえば、核酸配列)に符号化する別の例示的な方法を概略的に示す。図3Aは、ビットストリームを識別子ライブラリに符号化することを示し、識別子は、ビットストリーム内の位置に対応する識別子ランクを指定する単一の成分から構築される。特定のランク(またはアドレス)における識別子の存在は、ビット値「1」を指定し、特定のランク(またはアドレス)における識別子の不在は、ビット値「0」を指定する。このタイプの符号化は、ランク(元のビットストリーム内のビットの相対位置)のみを符号化する識別子を使用することができ、識別子ライブラリ内のそれらの識別子の有無を使用して、それぞれビット値「1」または「0」を符号化することができる。情報の読取りおよび復号は、識別子ライブラリ内に存在する識別子を識別することと、対応するランクにビット値「1」を割り当てることと、そうでない場合はビット値「0」を割り当てることとを含むことができる。この例では、識別子の存在が1ビットを符号化し、識別子の不在が0ビットを符号化するが、本開示の範囲から逸脱することなく、識別子の存在が0ビットを符号化し、識別子の不在が1ビットを符号化することもできることが理解されよう。
図3Bは、図3Aに類似しているが、図3Bの例示的な符号化方法では、各識別子は、可能な各組合せ構造がランクを指定するように、成分のセットから組合せにより構築される。そのような組合せ構造により、識別子が単一の成分のみから作られた場合(たとえば、図3A)より、多くの情報を識別子に書き込むことが可能になる。たとえば、図3Bに描くように、5つの別個の成分からなる成分セットを使用して、長さN=10のビットストリングに対応する10個のアドレスが表される。5つの別個の成分は、10個の別個の識別子を生成するように、組合せによって組み立てられ、各識別子は、5つの成分のうちの2つを含む。10個の別個の識別子は各々、ビットストリーム内のビットの位置に対応するランク(またはアドレス)を有する。識別子ライブラリは、長さ10のビットストリーム内で、ビット値「1」の位置に対応するそれらの可能な10個の識別子のサブセットを含むことができ、ビット値「0」の位置に対応するそれらの可能な10個の識別子のサブセットを除外することができる。
図4は、図3Aおよび図3Bに示す符号化方法を使用してビット単位の所与の元のサイズの情報(D、等高線)を記憶するように物理的に構築される可能な識別子の組合せ空間(C、x軸)と識別子の平均数(k、y軸)との間の関係の対数空間における例示的な実装形態による等高線図を示す。このグラフは、サイズDの元の情報が、C個のビットのストリングに再コード化され(CはDより大きくすることができる)、指定数kのビットがビット値「1」を有すると仮定する。さらに、グラフは、情報から核酸への符号化が、再コード化されたビットストリングで実行され、ビット値が「1」になる位置に対する識別子が構築され、ビット値が「0」になる位置に対する識別子が構築されないと仮定する。この仮定に従って、可能な識別子の組合せ空間は、再コード化されたビットストリング内のすべての位置を識別するためにサイズCを有し、サイズDのビットストリングを符号化するために使用される識別子の数は、D=log2(Cchoosek)になるようになっており、ここでCchoosekは、C個の可能性からk個の順序付けられていない結果を選ぶ方法の数である。したがって、可能な識別子の組合せ空間が情報の所与の項目のサイズ(ビット単位)を超えて増大すると、所与の情報を記憶するために必要な物理的に構築された識別子の数が減少する。
図5は、例示的な実装形態によって核酸配列に情報を書き込む概略的な方法を示す。例示的な実装形態によれば、情報は、核酸分子に書き込まれる前に、シンボルストリングに変換され、複数の識別子配列に符号化される。一例では、核酸分子に情報を書き込むことは、プール内に組み合わせるための識別子分子を作り出すように様々な化学反応を設定することを含む。具体的には、入力(たとえば、核酸、成分、鋳型、酵素、または化学試薬など)をコンパートメント(本明細書ではコンテナとも呼ばれる、たとえばウェル、チューブ、表面上の位置、マイクロ流体デバイス内のチャンバ、または乳剤内の液滴など)内へ堆積させることによって、反応が設定される。反応は、一度に単一のコンパートメント内に設定することができ、または並列処理のために複数のコンパートメント内に設定することができる。反応は、プログラムされた温度のインキュベーションもしくは循環などの特有のプロセスステップを含むことができ、選択的もしくは普遍的に除去(たとえば、削除)することができ、その結果得られる識別子分子を1つのプール内に収集するように選択的もしくは普遍的に中断、統合、および精製することができ、またはこれらの任意の好適な組合せとすることができる。複数の識別子ライブラリからの識別子は、同じプール内に収集することができ、または異なる識別子ライブラリの各々を、別個の個々のプール内に収集することができる。いくつかの例では、個々の識別子は、その識別子が属する対応する識別子ライブラリを識別するために、固有のバーコードまたはタグを含む。いくつかの例では、そのバーコードは、符号化された情報を表すメタデータを含む。符号化された情報自体を表す識別子分子に加えて、補足の核酸または追加の識別子を識別子ライブラリとともに識別子プール内に含むこともできる。たとえば、補足の核酸または追加の識別子は、符号化された情報に対するメタデータを表すことができ、または符号化された情報を不明瞭にしもしくは隠す働きをすることもできる。
識別子ランク(たとえば、核酸索引)は、識別子の順序付けに基づいている。この方法は、すべての識別子および対応するランクを有するルックアップテーブルを含むことができる。この方法はまた、識別子を構成するすべての成分のランクおよびそれらの成分の組合せを含むあらゆる識別子の順序付けを判定するための関数を有するルックアップテーブルを含むことができる。そのような方法を、辞書的順序付けと呼ぶことができ、辞書内の単語がアルファベット順で順序付けられる方法に類似したものとすることができる。たとえば、組合せ空間内の各識別子は、固定数のN個の成分を含むことができ、各成分は、N個の層のセット内の別個の層に由来し、前記層内の複数の可能な成分のセットのうちの1つである。各成分は、座標(j,X)によって指定することができ、ここでjは層のラベルであり、Xは層内の成分のラベルである。N個の層を伴う前記方式の場合、jは集合{1,2,...,N}の要素であり、Xは、集合{1,2,...,M}の要素であり、ここでMは層j内の成分の数である。本発明者らは、これらの層に対する論理順序を画定することができる。本発明者らはまた、各層内の各成分に対する論理順序を画定することができる。本発明者らは、このラベル付けを使用して、関数またはアルゴリズムによって、組合せ空間内のすべての可能な識別子に対する論理順序付けを画定することができる。たとえば、本発明者らは、まず層1内の成分の順序に従って、次いで後に層2内の成分の順序に従って、識別子を分類することができ、以下同様である。
データアットアドレス符号化方法では、識別子ランク(識別子のランクオブジェクトによって符号化される)を使用して、ビットストリーム内のバイト(識別子のバイト値オブジェクトによって符号化される)の位置を判定することができる。代替方法では、存在する識別子に対する識別子ランク(識別子自体の全体によって符号化される)を使用して、ビットストリーム内のビット値「1」の位置を判定することができる。特有のランクを判定しまたは1つまたは複数の識別子のランクを使用する様々な方法について説明するシステムおよび方法は、図23~図29に関連して説明する。
鍵が、サンプル内の識別子(たとえば、核酸分子)の固有のサブセットに、別個のバイトまたは情報部分を割り当てることができる。たとえば、簡単な形式では、鍵は、ビットの位置を指定する固有の核酸配列に、バイト内の各ビットを割り当てることができ、次いでサンプル内のその核酸配列の有無が、それぞれビット値1または0を指定することができる。本開示の範囲を逸脱することなく、他のタイプの鍵を使用することもできる。符号化された情報を核酸サンプルから読み取ることは、シークエンシング、ハイブリダイゼーション、またはPCRを含む任意の数の分子生物学技法を含むことができる。いくつかの実装形態では、符号化されたデータセットを読み取ることは、データセットの一部分を再構築すること、または符号化されたデータセット全体を各核酸サンプルから再構築することを含むことができる。配列が読み取られるとき、固有の核酸配列の有無とともに核酸索引が判定され、核酸サンプルをビットストリームに復号することができる(たとえば、各ストリングは、複数ビット、1バイト、複数バイト、またはバイトストリングである)。
いくつかの実装形態では、成分核酸配列を組合せにより組み立てることによって、識別子が構築される。たとえば、画定された分子のグループ(たとえば、組合せ空間)から核酸分子(たとえば、識別子)のセットを得ることによって、情報を符号化することができる。画定された分子のグループの可能な各識別子は、層に分けることができる事前製作された成分のセットからの核酸配列(たとえば、成分)のアセンブリとすることができる。個々の各識別子は、すべての層からの1つの成分を固定の順序で連結することによって構築することができる。たとえば、M個の層が存在し、各層がn個の成分を有することができる場合、最大C=n個の固有の識別子を構築することができ、最大2の異なる項目の情報またはCビットを符号化および記憶することができる。たとえば、1メガビットの情報の記憶は、1×10個の別個の識別子またはサイズC=1×10の組合せ空間を使用することができる。この例では、識別子は、異なる方法で組織化された様々な成分から組み立てることができる。アセンブリは、M=2個の事前製作された層から作ることができ、各層はn=1×10個の成分を収容する。別法として、アセンブリは、M=3個の層から作ることができ、各層はn=1×10個の成分を収容する。いくつかの実装形態では、アセンブリは、M=2、M=3、M=4、M=5、またはそれよりも多い層から作ることができる。この例が示すように、より多数の層を使用して同じ量の情報を符号化することで、成分の総数をより小さくすることを可能にすることができる。全体でより少数の成分を使用することは、書込みコストの点から有利となりうる。
一例では、2セットの固有の核酸配列または層XおよびYが存在し、各核酸配列は、それぞれxおよびyの成分(たとえば、核酸配列)を有する。Xからの各核酸配列を、Yからの各核酸配列に組み立てることができる。2つのセット内で維持される核酸配列の総数は、xおよびyの和であるが、生成することができる核酸分子、したがって可能な識別子の総数は、xおよびyの積である。任意の順序でXからの配列をYの配列に組み立てることができる場合、さらに多くの核酸配列(たとえば、識別子)を生成することができる。たとえば、組立て順序がプログラム可能である場合、生成される核酸配列(たとえば、識別子)の数を、xおよびyの積の2倍にすることができる。生成することができるすべての可能な核酸配列のこのセットを、XYと呼ぶことができる。XY内の固有の核酸配列の組み立てられたユニットの順序は、別個の5’および3’末端を有する核酸を使用して制御することができ、配列の別個の5’および3’末端に対して、制限消化、結合、ポリメラーゼ連鎖反応(PCR)、およびシークエンシングを行うことができる。したがって、すべてのユニットおよび必要な試薬を反応コンパートメント内に同時に堆積させることができ、組み立てられたユニットの順位が末端の設計によって制御されるため、各ユニットの別個の5’および3’末端により、ユニット(たとえば、成分)が所望の固有の核酸分子に自己組織化することが可能になる。そのような手法は、組立て積の組合せおよび順序で情報を符号化することによって、N個の別個のビットを符号化するために使用される核酸配列(たとえば、成分)の総数を低減させることができる。たとえば、100ビットの情報を符号化するために、10個の別個の核酸分子(たとえば、成分)の2つの層を固定の順序で組み立てて、10または100個の別個の核酸分子(たとえば、識別子)を作り出すことができ、または5個の別個の核酸分子(たとえば、成分)の1つの層と、10個の別個の核酸分子(たとえば、成分)の別の層とを任意の順序で組み立てて、100個の別個の核酸分子(たとえば、識別子)を作り出すことができる。
各層内の核酸配列(たとえば、成分)は、中央の固有(または別個)の配列またはバーコード、一方の末端の共通のハイブリダイゼーション領域、および他方の末端の別の共通のハイブリダイゼーション領域を含むことができる。バーコードは、層内のすべての配列を固有に識別するのに十分な数のヌクレオシドを収容することができる。たとえば、典型的には、バーコード内の各塩基位置に対して、4つの可能なヌクレオシドが存在する。したがって、3つの塩基バーコードが、4=64個の核酸配列を一意に識別することができる。バーコードは、ランダムに生成されるように設計することができる。別法として、バーコードは、識別子またはシークエンシングの構造の化学的性質に複雑さを生じさせる可能性のある配列を回避するように設計することができる。加えて、バーコードは、各バーコードが他のバーコードから最小のハミング距離を有することができるように設計することができ、それによって塩基分解能の突然変異または読取りエラーがバーコードの適切な識別に干渉しうる可能性を減少させることができる。また、バーコード領域は、PCRに対するプライマー、CRISPR-CasガイドRNA、または親和性タグ付きオリゴヌクレオチド(たとえば、ビオチン化オリゴヌクレオチド)などのプローブに結合するように設計することができる。
核酸配列(たとえば、成分)の一方の末端のハイブリダイゼーション領域は、各層内で異なることもあるが、ハイブリダイゼーション領域は、層内の各部材に対して同じにすることができる。隣接する層は、それらの成分に相補的なハイブリダイゼーション領域を有するものであり、したがって互いに相互作用することが可能である。たとえば、相補的なハイブリダイゼーション領域を有することができるため、層Xからのあらゆる成分は、層Yからのあらゆる成分に取り付けることが可能である。反対の末端のハイブリダイゼーション領域は、第1の末端のハイブリダイゼーション領域と同じ目的を担うことができる。たとえば、層Yからのあらゆる成分は、一方の末端で層Xのあらゆる成分に取り付けることができ、反対の末端で層Zのあらゆる成分に取り付けることができる。したがって、複数の識別子を形成するためのすべての成分および必要な試薬を反応コンパートメント内に同時に堆積させることができ、組み立てられた成分の順序がハイブリダイゼーション領域の設計によって制御されるため、各成分上のハイブリダイゼーション領域により、成分が所望の固有の識別子分子に自己組織化することが可能になる。
図6Aおよび図6Bは、例示的な実装形態による各層からの別個の成分(たとえば、核酸配列)を固定の順序で組合せにより組み立てることによって、識別子(たとえば、核酸分子)を構築するための「積方式」と呼ばれる例示的な方法を示す。図6Aは、積方式を使用して構築された識別子のアーキテクチャを示す。識別子は、各層からの単一の成分を固定の順序で組み合わせることによって構築することができる。各々N個の成分を有するM個の層の場合、N個の可能な識別子が存在する。図6Bは、積方式を使用して構築することができる識別子の組合せ空間の一例を示す。一例では、組合せ空間は、3つの層から生成することができ、各層は、3つの別個の成分を含む。これらの成分は、各層からの1つの成分を固定の順序で組み合わせることができるように組み合わせることができる。この組立て方法に対する組合せ空間全体は、27個の可能な識別子を含むことができる。
図7~図10は、積方式(図6参照)を実施するための化学的方法を示す。図7~図10に描く方法は、2つまたはそれよりも多い別個の成分を固定の順序で組み立てるための任意の他の方法とともに、たとえば識別子ライブラリ内にいずれか1つまたは複数の識別子を作り出すために使用することができる。これらの方法は、全体として参照により組み込まれている、2017年12月21日出願の"NUCLEIC ACID-BASED DATA STORAGE"という名称の米国特許第10,650,312号に記載されている。本明細書に開示する方法またはシステム中の任意の時点で、図7~図10に記載する実装方法のいずれかを使用して、識別子を構築することができる。いくつかの事例では、可能な識別子の組合せ空間のすべてのまたは一部分は、デジタル情報が符号化されまたは書き込まれる前に構築することができ、このとき書込みプロセスは、既存のセットから識別子(情報を符号化する)を機械的に選択およびプールすることを伴うことができる。他の事例では、識別子は、データ符号化または書込みプロセスの1つまたは複数のステップが行われた後(すなわち、情報が書き込まれるとき)に構築することができる。
酵素反応を使用して、異なる層またはセットからの成分を組み立てることができる。組立ては、各層の成分(たとえば、核酸配列)が隣接する層の成分に対して特有のハイブリダイゼーションまたは取付け領域を有するため、1ポット反応で行うことができる。たとえば、層Xからの核酸配列(たとえば、成分)X1、層Yからの核酸配列Y1、および層Zからの核酸配列Z1が、組み立てられた核酸分子(たとえば、識別子)X1Y1Z1を形成することができる。加えて、各層から複数の核酸配列を含むことによって、複数の核酸分子(たとえば、識別子)を1つの反応で組み立てることができる。1つの反応は、成分の識別子への自己組織化を伴うことができる。
例示的な実装形態によれば、図7に示すように、オーバーラップ伸長ポリメラーゼ連鎖反応(OEPCR)を使用して積方式に従って識別子を構築することができる。各層内の各成分は、配列末端に共通のハイブリダイゼーション領域を有する2本鎖または1本鎖(図示)の核酸配列を含むことができ、共通のハイブリダイゼーション領域は、隣接する層からの成分の配列末端の共通のハイブリダイゼーション領域に相同および/または相補的とすることができる。したがって、複数の識別子を形成するためのすべての成分および必要な試薬を反応コンパートメント内に同時に堆積させることができ、組み立てられた成分の順序がハイブリダイゼーション領域の設計によって制御されるため、各成分上のハイブリダイゼーション領域により、成分が所望の固有の識別子分子に自己組織化することが可能になる。
例示的な実装形態によれば、図8に示すように、付着末端結合を使用して積方式に従って識別子を組み立てることができる。各々1本鎖3’オーバーハングを有する2本鎖成分(たとえば、2本鎖DNA(dsDNA))を含む3つの層を使用して、別個の識別子を組み立てることができる。付着末端結合のための付着末端は、制限エンドヌクレアーゼで各層の成分を処理することによって生成することができる。いくつかの実装形態では、1つの「親」セットの成分から、複数の層の成分を生成することができる。
例示的な実装形態によれば、図9に示すように、部位特異的組換えを使用して積方式に従って識別子を組み立てることができる。3つの異なる層からの成分を組み立てることによって、識別子を構築することができる。層X(または層1)内の成分は、分子の一方の側にattBxリコンビナーゼ部位を有する2本鎖分子を含むことができ、層Y(または層2)からの成分は、一方の側のattPリコンビナーゼ部位および他方の側のattBリコンビナーゼ部位を有する2本鎖分子を含むことができ、層Z(または層3)内の成分は、分子の一方の側にattPリコンビナーゼ部位を含むことができる。添字によって示される1対の中のattBおよびattP部位は、対応するリコンビナーゼ酵素の存在下で組み換えることが可能である。各層からの1つの成分は、層Xからの1つの成分が層Yからの1つの成分に関連し、層Yからの1つの成分が層Zからの1つの成分に関連するように組み合わせることができる。したがって、複数の識別子を形成するためのすべての成分および必要な試薬を反応コンパートメント内に同時に堆積させることができ、組み立てられた成分の順序がリコンビナーゼ部位の設計によって制御されるため、各成分上のリコンビナーゼ部位により、成分が所望の固有の識別子分子に自己組織化することが可能になる。
例示的な実装形態によれば、図10Aに示すように、鋳型指向結合(TDL)を使用して積方式に従って識別子を構築することができる。鋳型指向結合は、「鋳型」または「ステープル」と呼ばれる1本鎖核酸配列を利用して、識別子を形成するための成分の順序付けられた結合を容易にする。鋳型は、隣接する層からの成分に同時にハイブリッド化し、リガーゼが成分を結合する間に、成分を互いに(3’末端を5’末端に)隣接して保持する。したがって、複数の識別子を形成するためのすべての成分および必要な試薬を反応コンパートメント内に同時に堆積させることができ、組み立てられた成分の順序が鋳型の設計によって制御されるため、各成分上のハイブリダイゼーション領域により、成分が所望の固有の識別子分子に自己組織化することが可能になる。
図10Bは、例示的な実装形態による各々6層TDLによって組み立てられた256個の別個の核酸配列のコピー数(存在度)のヒストグラムを示す。縁部の層(第1および最後の層)は各々、1つの成分を有し、内部の層(残り4つの層)の各々は、4つの成分を有した。各縁部層成分は、10塩基のハイブリダイゼーション領域を含む28塩基であった。各内部層成分は、5’末端の10塩基の共通のハイブリダイゼーション領域、10塩基の可変(バーコード)領域、および3’末端の10塩基の共通のハイブリダイゼーション領域を含む30塩基であった。3つの鋳型鎖の各々は、長さ20塩基であった。すべての256個の別個の配列が、すべての成分および鋳型、T4ポリヌクレオシドキナーゼ(成分をリン酸化する)、およびT4リガーゼ、ATP、および他の適切な反応試薬を含む1つの反応によって、多重化方式で組み立てられた。反応を、30分にわたって37度で、次いで1時間にわたって室温でインキュベートした。シークエンシングアダプタがPCRによる反応生成物に加えられ、生成物をIllumina MiSeq機器によってシークエンシングした。合計192910の組み立てられた配列読取りからの別個の組み立てられた各配列の相対的なコピー数が示されている。この方法の他の実装形態は、2本鎖成分を使用することができ、成分は最初に融解されて1本鎖の変種を形成し、これをステープルにアニーリングすることができる。この方法(すなわち、TDL)の他の実装形態または派生物を使用して、積方式で実現することができるものより複雑な識別子の組合せ空間を構築することもできる。ゴールデンゲートアセンブリ、ギブソンアセンブリ、およびリガーゼ循環反応アセンブリを含む様々な他の化学的実装形態を使用して、積方式に従って識別子を構築することもできる。
核酸配列における効率的なデータ記憶のためのデータ構造およびデータブロック
本章では、DNA内にデータを効率的に符号化するためのシステムおよび方法について論じており、これは図11~図19に関連している。特に、特定のデータ構造および制御方式について説明する。データ構造は、記憶されたデータへの効率的なアクセスおよび修飾を可能にするデータの組織化、管理、および/または記憶のための形式を含む。より厳密には、データ構造は、1群のデータ値、これらの間の関係、およびデータに適用することができる関数または演算を含む。例示的なデータ構造および符号化方式は、全体として参照により本明細書に組み込まれている、2019年8月5日出願の"SYSTEMS AND METHODS FOR STORING AND READING NUCLEIC ACID-BASED DATA WITH ERROR PROTECTION"という名称の米国特許出願第16/532,077号に記載されている。これらの構造または方式によってDNAを符号化することによって、記憶されたデータにより容易にアクセスしまたはそれを操作することができる。
上記で論じたように、ストリングは、ストリング内の1ビットまたはシンボルストリング内のシンボルの位置を表す識別子のライブラリとして符号化することができる。しかし、「コードワード」および「コードブック」を使用することによって、余分の変換層を用いることもできる。「コードワード」は、順序付けられた識別子ライブラリ内のn個の連続する識別子のグループであり、n個の利用可能な識別子からk個の識別子のみを設定することによって、シンボル(たとえば、任意のアルファベット)を符号化する。kの値は、コードワードの「重み」と呼ばれる。「コードブック」は、すべての可能なコードワードのセットである。たとえば、本明細書に記載するシステムおよび方法は、8つの識別子のすべての隣接グループで6ビットのデータを符号化するコードブックを使用することができる。この例では、コードブックは、6ビットの可能な各ストリングを、n=8個の識別子からのk=4個の固有のサブセットにマッピングすることができる(8choose4=70個のそのようなサブセットが存在するため、最大でfloor(log(70))=6ビットのデータを記憶することが可能である)。これらの識別子の組合せをコードワードと呼び、コードワードが符号化するデータをワードと呼ぶ。データ内の隣接するワードは、論理的に順序付けられた識別子の中で、隣接するコードワード内に記憶することができる。コードワードは、ビットストリングとしてシンボルによって表すことができ、すべてのビット位置は、順序付けられた識別子に対応し、ビット値「0」は、コードワード内の対応する識別子の不在を表し、ビット値「1」は、コードワード内の対応する識別子の存在を表す。コードブックは、「低い重み」または「高い重み」とすることができ、たとえば低い重みのコードブックは、25個の識別子から2つを設定することができ、高い重みのコードブックは、357個の識別子から178個を設定することができる。高い重みのコードブックは、より高密度のデータ記憶を可能にすることができる(すなわち、1つのライブラリ当たりより多くのビットが記憶される)が、低い重みのコードブックは、エラー補正方式のより良好な実装およびより頑強なエンコーダを可能にすることができる。
図11は、例示的な実装形態によるトライデータ構造から構築された識別子配列に従って反応コンパートメントに溶液を分注することによる識別子ライブラリ内のストリングの符号化の図を示す。トライは、順序付けられた木データ構造であり、トライの各層/レベルは、識別子の層を表し、各トライ層の各縁部は、対応する識別子層内の成分を表す。トライの最後の層は、識別子の多重化層を表すことができる。シンボルストリング1100は、DNA識別子核酸分子に記憶されるコードワードのセットを表す。コードワードは、ソースワードと呼ばれるソースアルファベットからの特有のシンボルストリングを表すシンボルストリングである。コードは、符号化として公知のプロセスにおいて、ソースワードをコードワードにマッピングする。個々の反応コンパートメント(たとえば、コンパートメント1106)に、液滴1104が分注される。シンボルストリング1100は、木(図示せず)の根を、シンボル値「1」を指す最後の(多重化)層1102の葉に接続するトライパスによって表される識別子を構築することによって符号化される。
概して、コードワードの重みは、コードワード内のビットの数に対する「1」の値を有するビットの数を含む。図11に示し、特に図15に関連してさらに後述するように、コードワードの「重み」は、コードワードにわたって均一に分散される。なぜなら、シンボルストリング1100は、5つのビットの各ストリング(たとえば、サブストリング)が反応コンパートメント内で符号化され、ちょうど3つの「1」の値(5つから)を有するように分けられるからであり、したがって各コンパートメントは、多重化層から3つの成分を受け取って、3つの識別子を形成する。たとえば、反応コンパートメント1106は、多重化層に示すように、シンボルストリング「10101」の位置に対応して、それぞれ塩基層からの成分(たとえば、多重化層までのトライのパスを含む成分、成分7、B、D、...)および多重化層からの成分0、2、および4の固有の組合せを有する識別子を収容するように構成される。「1」の値の各々に対して、そのシンボル位置に対応する識別子分子(そのシンボル位置につながるパスを構成する成分を含む)が、反応コンパートメント内へ堆積させられる。
上述したように、シンボルストリングの書込みプロセスからの出力は、長期の保存および頻繁でないアクセスを必要としうる符号化されたDNA(識別子)のライブラリである。符号化されたDNAの作製されたプールは、各識別子配列の多数(たとえば、数十万)の分子を収容する。グラムの場合、作製される物質の総量は、マイクログラム量とすることができる。プールは、冗長性、格納、およびアクセスのために十分な物質が存在することを確実にするために、PCRによって増幅させることができる。増幅後、プールを複数のコンテナに割り当てて、異なる場所に保存することができる。プールは、様々な核酸保存および格納システム内に保存することができる。たとえば、DNAは、冷凍庫内のEppendorfチューブに保管することができ、液体窒素に冷凍保存することができ、またはTris-EDTAに保管することができる。DNAの貯蔵寿命は、異なる温度などの加速安定性条件にかけられた物質を読み取ることによって評価される。本明細書に記載するシステムおよび方法は、保存されたDNAの長期の保存およびランダムアクセスの両方を可能にする自動化されたサンプル管理システムを含むことができる。
いくつかの実装形態では、オペレーティングシステム(OS)は、エクサバイトサイズまでスケーラブルなアーカイブの書込み、読取り、発見可能な照会、またはこれらの任意の組合せを統合することが可能である。OSは、記憶媒体を1群の固定サイズの「ブロック」として表すように構成することができる。各ブロックは、識別子の単一のプール内に記憶された単一の識別子ライブラリ内の識別子配列のうちの隣接配列である。しかし、ブロックは、障害許容度のためにいくつかのプール内に鏡映を作ることもできる。OSは、ブロックの組織化、割当て、および書込みを担うことができる。「ブロック索引」は、「ブロックID」を物理アドレス(コンテナおよび識別子から構成される)にマッピングする階層的なデータ構造であり、「ブロックID」は、各ブロックに割り当てられた論理アドレス、バーコード、またはタグである。物理アドレスは、その対応するブロックにアクセスするために必要とされる情報を収容する。具体的には、いくつかの実装形態では、OSは、上述した読取り/書込みプラットホームに関して最適化されたコーデックを介して、意味的に注釈および索引付けされたブロックの木の読取りおよび書込みを可能にする。OSは、インジェストAPIを含むことができる変換スタック、ならびに長期であるが粒状のデータ照会および発見のためにデータを組織化および形式化するためのモジュールを含む。OSのこれらの態様は、任意の書込み、読取り、またはアクセス方法に広く適合させることができる。OSの他の態様も、情報の書込み、アクセス、および読取りの方法を特別に最適化するように設計することができる。これらは、データの圧縮およびエラー保護のためのモジュール、ならびに上述した書込みシステムへのデータの構成および送信のためのモジュールを含む。上記の方法によってDNA分子に書き込まれたデータは、任意のシーケンサによって可読であるが、特有の読取り方法は以下に説明する。OSはまた、たとえば情報のエクサバイトに対応することが可能な保管コンテナのシステムにDNAを割り当てること、そのようなシステムからDNAにアクセスすること、およびそのようなシステム内にDNAを補充することによって、ライタとリーダとの間のDNAに基づく情報の取扱いを仲介する自動化ソフトウェアおよびワークフローを含むことができる。
いくつかの実装形態では、すべてのブロックが、固定された均一のサイズを有する。各々関連付けられたブロックIDを有する複数のブロックの場合、ブロックIDは、たとえば順序付けられた値または表現を有することによって、順序付けることができる。ブロックIDの順序付けは、順序付けられたブロックIDを有する各ブロックの物理アドレスを暗示的に示すように構成することができる。物理アドレスは、その順序付けられたブロックIDに対応する順序付けられた物理アドレスに各ブロックが位置付けられるように、順序付けることができる。たとえば、第1のブロックIDは、値または表現「0」を有することができ、第2のブロックIDは、値または表現「1」を有することができる。第1のブロックIDは、対応する第1のブロックが第1のアドレス空間内にあることを示し、第2のブロックIDは、対応する第2のブロックが第2のアドレス空間内にあることを示す。
たとえば、識別子の組合せ空間を、固定サイズcのコードワードの隣接するブロックに区画化することを選択することができる。このようにして、識別子がブロックの第gのインスタンスを符号化する範囲を、コードワードインスタンス(g-1)*c+1~g*cを符号化する範囲として推測することができる。このとき、共通の指定の成分セットを共用する識別子のみを取り出す化学的アクセスプログラムによって、これらの特定の識別子に容易にアクセスすることができる。これらのアクセスプログラムは、たとえばプライマーおよびPCRまたは親和性タグ付きオリゴヌクレオチドおよび親和性プルダウンアッセイによって、プローブを有する前記指定の成分セットを有する識別子を選択的に標的とし、後に増幅または選択することによって機能する。プローブは、一連の選択反応に適用することができ、各反応が個々の成分を標的とする。1つの反応からの出力を、別の反応への入力として使用することができる。識別子は、成分によって論理的に順序付けることができ、さらにブロックはこれらの順序付けられた識別子の連続する範囲によって表すことができるため、ブロックを含む識別子は、異なる場合より、共通の成分を共用する可能性が高い。これにより、これらの識別子を取り出すために必要とされるアクセスプログラムの複雑さが低減される。共通の成分セットを排他的に共用する識別子の範囲にブロックが割り当てられた場合、複雑さの低減をさらに改善することができる。
いくつかの実装形態では、1次シンボルストリングが、1次ストリングを複数のサブストリングに分けることによって、複数のブロックにわたって記憶される。各ブロックに記憶されたシンボルストリングは、1次シンボルストリングから取得されたシンボルの1つのサブストリングである。サブストリングは、順序付けられた形で1次ストリングを構成する。したがって、各サブストリングを記憶するブロックは、1次ストリング内の対応するサブストリングの位置または順序に従って順序付けられたブロックIDを有することができる。たとえば、1次ストリングを5つのサブストリングに分け、5つのブロックにわたって記憶することができ、各ブロックは、1~5の値のブロックIDを有する(すなわち、5つのサブストリングのうちの第1のサブストリングが、ブロックID「1」を有するブロックに記憶される)。
図12は、例示的な実装形態による機能層に組織化されたOSによって管理される能力の層状の組織化を示し、機能層のいくつかは、データブロックおよび/またはデータ構造を伴う。各層は、以下のリストに要約するように、層によって提供されるサービスを利用する。7つの層が、以下の設計および構造を含む6つの展開領域に変換される。
(1)コーデック:ライタ特有の最適化を伴うエンコーダ/デコーダパイプライン
(2)化学インターフェース:ビット演算から化学動作への変換
(3)自動化インターフェース:自動化デバイスへのインターフェースおよびトランスレータ
(4)ブロック抽象化:ブロックに基づくインターフェースおよびコアデータ構造への対応
(5)探索および索引:意味注釈および索引付けのためのインフラストラクチャ
(6)アーカイブアプリケーション:OSを実証するアーカイブアプリケーション
本明細書に記載する符号化方式およびOSの利益には、書込み速度、書込みコスト、読取りコスト、またはアクセスコストに関して最適化された符号化方式を選択する能力、復号されるフットプリントを最小にするようにブロックへの索引データのマッピングを最適化する能力、大きいブロックから単一のビットおよびモデルデータ構造まですべてのスケールで情報を固有に操作する能力、ならびにデータおよび関係に関する格納、照会、および推論を可能にする現在のアーカイブ規格および慣行による緊密な統合が含まれる。
コーデックは、情報のためのエンコーダ/デコーダとして機能する。上記の層はコーデックを必要とし、以下の層はコーデックがなければ有意に試験することができないため、コーデックの適切な演算は非常に重要である。コーデックは、ソースビットストリームを受け取り、化学的方法を使用して書込みに好適な形式に変換することを担う。ソースビットストリームは、パケットに分けられ、すべてのパケットは固定のサイズである。パケットは、独立して処理することができ、並列処理のための単位として働くことができる。パケットは、1つまたは複数のブロックから構成される。ブロックは、アーカイブにおける割当てのための最も小さい単位であり、アーカイブの組合せ空間は、ブロックと呼ばれる一連の隣接ビットストリングに分けられる。固定層は、標準的な暗号ハッシングアルゴリズムを使用してブロックハッシュを算出することを担い、このハッシュは親ブロック内に含まれる。ブロックが復号されるとき、その完全性は、そのハッシュを再算出し、親ブロックを介してそのハッシュを検査することによって検査することができる。
いくつかの実装形態では、コーデックは、図13に示す例示的な符号化方式を含めて、B木構造またはトライ構造などのデータ構造に従って、符号化を実行または調整する。
図13は、例示的な実装形態による識別子の設計および順序付けのための層状デカルト積の組合せコンストラクタ(LCPCC)のシステム図である。プロダクトコンストラクタは、3つの層(M=3)および8つの成分配列の成分ライブラリ(C=8)を有する。層ごとに{3,3,2}の成分配列を有する組合せの区画方式が示されており、これは第1の層内に3つの成分、第2の層内に3つの成分、および第3の層内に2つの成分があることを意味する。すべての可能な識別子配列の空間が、組合せ空間を形成する。成分ライブラリから構築可能な組合せオブジェクトの総数は、組合せ方式のスパンと呼ぶことができ、識別子の単一のプールに書込み可能なビットストリームの長さを決定する。この特定の方式のスパンは、3×3×2または18である。概して、任意の組合せ区画方式を使用することができ、C個の成分がM個の層に分離され、ここで第iの層はC個の成分を有し、CのM個の値の和がCであり、CのM個の値の積は、可能な識別子配列の数、したがって書込み可能なビットストリームの長さを画定する組合せ空間のスパンである。組合せオブジェクトは、成分配列のランク付けを、そこから構築される識別子まで延ばすことによって、組合せ空間内で辞書的に順序付けられる。この順序付け情報は、識別子内で暗示的であり、組合せ空間内のその位置を識別し、ソースシンボルストリーム内で識別子によって符号化されたシンボルの位置を識別するために使用することができる。たとえば、LCPCCを使用して、2進アルファベットを符号化し、構築された識別子によって符号化されたシンボルを「1」になるように画定することができる。「0」のシンボルは、対応する識別子を構築しないことによって表すことができる。ソースビットストリームは、そのビットストリームに固有の特有の識別子セット(すなわち、識別子ライブラリ)を構築することによって符号化することができる。
図14は、例示的な実装形態によるデータブロックのマッピングおよびデータ構造の使用のためのアーカイブ演算のシステム図を示す。アーカイブ(CAR)は、ブート、オントロジ、索引、およびコンテンツの領域に区画される。ブート区画は、外部メタデータなく復号することが可能な標準的な符号化方式を使用して書き込むことができ、他の区画を読み取るために必要とされるパラメータ、鍵、およびアドレスを記憶することができる。OSは、上述したように、記憶媒体を1群の固定サイズのブロックとして抽象化する。
各ブロックは、単一の識別子プールとして記憶された単一の識別子ライブラリ内に識別子配列の隣接配列を含むことができ、障害許容度のためにいくつかの識別子プール内に鏡映を作ることができる。概して、OSは、ブロックの組織化、割当て、および書込みを担う。ブロック層がソースビットストリームパケットを受け取るとき、ブロック索引は、パケットを分けてアーカイブ内のブロックに割り当てる。ブート区画は、ブロック索引を含み、階層データ構造が、ブロックIDを物理アドレス(コンテナおよび識別子から構成される)にマッピングする。ブロック索引は、自由/使用中のブロックを追跡し、新しいパケットにブロックを割り当てる。
各ブロックIDは、論理アドレスとすることができ、分子アーカイブ内の物理アドレスに変換することができる。これは、図14に示すようにブロック索引を横断することによって実現される。データ構造内の各ノード(たとえば、アドレスノード)は、B木データ構造に類似した子ブロック識別子範囲の配列を含むことができる(たとえば、図15に関連して後述)。各範囲は、関心ブロックへのパス上の次のブロックを指す。このようにして、システムは、アドレスノードの木を維持し、この木は、実際のデータを収容する分子アーカイブ内のブロックを参照する葉ノードで終わる。言い換えれば、葉ノードは、ブロックの物理アドレスを識別するブロックIDを記憶しており、ブロックのハッシュをさらに記憶することができる。内部ノードはまた、その子ノードのハッシュの連結などのハッシュを収容し、したがってハッシュ木を形成することができる。図14に示すように、ブロックの物理アドレスは、場所コード、コンテナコード、ならびに識別子範囲を含むことができ、識別子範囲は、関連する情報を符号化する複数の識別子を参照する開始および終了識別子によって画定される。概して、障害許容度を可能にするために、ブロックIDを2つ以上の物理アドレスに分解することが可能である。この場合、ブロックIDに記憶された情報は、2つもしくはそれよりも多い異なるコンテナまたは2つもしくはそれよりも多い異なる識別子範囲に分散させることができる。
ビットブロック上の各高レベル演算は、化学的方法または物理的ステップに依拠する複数の物理的動作に依存し、そのような複数の物理的動作をもたらす。それらの化学的または物理的プロセスを調整するために、2つのタイプのソフトウェアツールを使用することができる。第1に、最適化ツールが、ブロック演算を、物理的動作の最適化されたセットに変換する。次いで、変換ツールが、物理的動作を、技術者または自動化デバイスによって実行されるべき詳細な行動プログラムに変換し、これは、ビットブロックの演算と物理的および化学的動作との間でトランスレータを設計および実施することを含むことができる。
本明細書に記載するシステムおよび方法は、アーカイブの保存ならびに標的の発見および照会を提供する。本開示は、特有の標的アクセス演算を実行するようにデータブロックおよびデータ構造に影響を与えることが重要であり、これはアーカイブの大部分の復号を必要としない。代わりに、本開示のシステムおよび方法によって、標的コンテンツの選択的かつ増分的な発見、照会、および読取りを行いながら、アーカイブ上の結合演算および他の構造を算出する必要を最小にすることが可能である。最小にされるべき主なメトリクは、照会の配列を満たすために復号されるビットの総数である。
図15は、例示的な実装形態によるコンテナ内のブロック識別(ID)に関連付けられたデータのブロックを記憶するステップについて概説する流れ図1500を示す。ステップ1502で、複数のブロックが取得される。各ブロックは、シンボルストリングを含み、ブロックIDに関連付けられる。ブロックIDは、特定のブロックに関連付けられた任意の識別特性またはシンボルとすることができる。たとえばブロックIDは、トリプルの形式の意味注釈とすることができる。いくつかの実装形態では、ブロックIDは、整数、ストリング、位置、トリプル、属性のリスト、または意味注釈である。たとえば、ブロック内に含まれるシンボルストリングの第1のXのシンボルは、そのブロックに対する数値IDを示すことができる。
ステップ1504で、ブロック(ステップ1502で受け取った複数のブロックに属するブロックのうちの1つ)がコンテナに割り当てられる。コンテナは、核酸分子を記憶することができるビン、チューブ、または他の物理的記憶媒体などの物理的な場所とすることができる。コンテナは、単一のブロックまたは複数のブロックに結合することができる。たとえば、1つのコンテナをB個の情報ブロックに関連付けることができる。いくつかの実装形態では、コンテナは、複数のサブコンテナを含むことができる。
ステップ1506で、ブロックは、コンテナに関連付けられるべき識別子配列にマッピングされる。これらの識別子は、識別子範囲または識別子範囲の複数の異なる識別子を含む。識別子範囲は、範囲を取り囲む識別子を含む成分配列によって指定される。いくつかの実装形態では、個々の各識別子は別個の整数に関連付けられており、したがって識別子範囲を2つの整数によって指定することができる。複数の識別子配列のうちの個々の識別子配列は、ブロックに記憶されたシンボルストリング内の個々のシンボルに対応する。各識別子配列は、対応する複数の成分配列を含む。これらの成分配列の各々は、別個の核酸配列を含む。
ステップ1508で、複数の識別子配列の個々の識別子が構築される。たとえば、Q個の識別子配列のセットが、特定のコンテに関連付けられる。それらQ個の識別子配列のサブセットVは、上述した様々な方法に説明したように、ブロック内の情報を表すように物理的に構築することができる。ステップ1510で、ステップ1508で構築された識別子は、割り当てられたコンテナ内に記憶される。たとえば、割り当てられたコンテナはこのとき、ブロック内に記憶された情報を表す数Vの識別子を保持する。コンテナおよびコンテナに関連付けられた複数の識別子核酸配列の識別情報は、関連付けられたブロックIDを使用して判定されるように構成される。いくつかの実装形態では、識別情報は、関連付けられたブロックIDを使用した各コンテナの識別情報へのアクセスを容易にするように設計されたデータ構造に記憶される。たとえば、データ構造は、B木、トライ、またはアレイのうちの1つである。いくつかの実装形態では、データ構造の少なくとも一部分は、デジタル情報とともに索引内に記憶される。索引は、第2のコンテナに関連付けられた第2の複数の識別子配列を含む。いくつかの実装形態では、索引は、磁気記憶デバイス、光記憶デバイス、フラッシュメモリデバイス、またはクラウドストレージ内に記憶される。
いくつかの実装形態では、索引は、B木データ構造を含む。この場合、B木の各ノードは、第2の複数の識別子配列の別個の複数の識別子(すなわち、ステップ1508で構築された識別子のセットとは異なる)を含むことができる。プロセスは、B木を探索して別個の複数の識別子の識別情報を判定することを伴う。具体的には、B木内の特定のブロックIDを探索することは、第1のノードを含む別個の複数の識別子を選択することと、第1のノードの値を読み取ることとを伴う。識別子を選択してノードの値を読み取るステップは、後続のノードに対して繰り返すことができる。後続のノードを含む別個の複数の識別子の識別情報は、第1のノードの値に関連するブロックIDによって判定される。一例では、第1のノードはB木の根ノードであり、ノードを選択して読み取るプロセスは、B木の葉ノードの値が読み取られるまで継続する。葉ノードの値は、ブロックIDに対するブロックが存在するかどうかを通信するように構成される。ブロックIDが存在する場合、前記ブロック(たとえば、識別子範囲)を含むコンテナの識別情報および複数の識別子核酸配列の識別情報を、ユーザまたはシステムへ通信することができる。
いくつかの実装形態では、索引はトライデータ構造である。この場合、トライの各ノードは、第2の複数の識別子配列の別個の複数の識別子を含むことができる。いくつかの実装形態では、ブロックIDはシンボルストリングであり、トライ内の各ノードは、シンボルストリングの可能な接頭辞に対応する。特定のブロックIDに対するトライを通るパスが存在する場合、対応するブロックの物理アドレス(コンテナおよび1つまたは複数の識別子範囲から構成される)を、そのパスの葉ノードによって指定することができる。トライの各中間ノードは、別個の複数の識別子によって表すことができ、どれだけの娘ノードを有するか、それらの娘ノードがどのシンボルを表すか、ならびにそれらの娘ノードの物理アドレス(コンテナ識別情報および1つまたは複数の識別子範囲から構成される)に関する情報を収容することができる。そのようにして、B木と同様に、本明細書に記載するアクセスおよび読取り演算を使用して、DNA内でトライをナビゲートすることができる。方法1500は、第2の複数の識別子配列を含む識別子のプールから物理アドレスにアクセスし、そのようなプールからの一連のプローブを使用することをさらに含むことができる。
いくつかの実装形態では、データ構造はアレイである。この場合、アレイの各要素は、第2の複数の識別子配列の別個の複数の識別子を含む。アレイ内の各要素は、ブロックIDに対応することができ、そのブロックIDの物理アドレス(コンテナ識別情報および識別子範囲を含む)を収容することができる。
物理アドレスは、物理アドレスを追加のデータ構造に記憶することなく、ブロックIDが物理アドレスにマッピングされるように、ブロックIDに固有に構成することができる。たとえば、ブロックIDは、物理アドレスに関連付けられた複数の識別子配列のうちのすべての識別子配列によって共用される複数の成分配列にマッピングされる。ブロックに関連付けられた複数の識別子配列は、隣接して順序付けられた識別子核酸配列(たとえば、図13に関連して説明)を含むことができ、したがって前記複数の識別子配列は、範囲の第1および最後の識別子の識別情報を含む識別子範囲によって、対応する物理アドレス内に指定される。第1および最後の識別子は、整数によって表すことができる。一連のプローブを使用して、複数の識別子(たとえば、ブロックに関連付けられたもの)にアクセスすることができ、一連のプローブは、連続することができる。プローブは、PCRプライマーとすることができ、したがってアクセスはPCRを介して実行され、またはプローブは、親和性タグ付きオリゴヌクレオチドとすることができ、したがってアクセスは親和性プルダウンアッセイを介して実行される。
ブロックIDが位置である実装形態では、前記位置は、親シンボルストリングの対応するブロックによって表されるシンボルストリング内の位置とすることができる。前記親ストリングは、たとえば別のシンボルストリングにおけるパターンの発生の計数または位置付けのためのデータ構造を含む。以下で論じるように、前記データ構造は、Burrows-Wheeler変換(BWT)、接尾辞アレイ、接尾辞木、または転置索引とすることができる。
データ構造は、接尾辞木に基づく手法を使用して、データにおけるパターン発生の判定、位置付け、および計数を助けるために、ブロック内に記憶することができる。接尾辞木において、ブロックは、接尾辞木のノードを表すように構成される。接尾辞木はトライであり、根ノードから葉までのすべてのパスが、シンボルストリングSの接尾辞を表す。トライの縁部は、各パスを含むシンボルのサブストリングを表す。接尾辞木は、識別子核酸ライブラリ内に表すことができ、すべてのブロックが、接尾辞木内のノードに対応し、その娘ノードについての情報を収容する。たとえば、娘ノードについての情報は、各娘ノードにつながる縁部を含むシンボルのサブストリング、およびそれらの娘ノードを収容するブロックの物理アドレスを含む。根ノードは、第1のブロックのような所定のブロックとすることができる。パターンのメンバーシップ、カウント、または場所を照会することは、根ノードに対応するブロックの識別子にアクセスし、その中に収容されていた情報を復号し、その中に収容されていた情報および照会パターンに基づいて、次のブロックの物理アドレスを判定し、対応する照会を満たす下流のブロック(またはノード)がなくなるまで、または先導ノードに到達するまで、プロセスを継続することによって、接尾辞木に沿ってパスをたどることを伴う。前者の場合、ストリングS内に照会パターンは存在しない。後者の場合、葉ノードに対応するブロックが、照会パターンのカウントまたは場所を収容するように構成することができる。
データ構造は、転置索引に基づく手法を使用して、データにおけるパターン発生の判定、位置付け、および計数を助けるために、ブロック内に記憶することができる。転置索引では、シンボルストリングSを含むシンボルアルファベットに、固定長の可能な各サブストリングに対するブロックが存在することができる。各ブロックは、S内の対応するサブストリングの開始位置についての情報を収容することができる。ブロックIDは、サブストリングに対応することができ、または分類されたサブストリングの位置に対応することができ、したがって追加の情報なしで、サブストリングに対応するブロックの物理アドレスを確かめることができる。照会パターンは、それを含む転置索引のサブストリングにマッピングすることができ、ブロックにアクセスして復号することができる。その中に収容されている位置情報を使用して、S内の照会パターンのカウントおよび場所を判定することができる。転置索引は、固定長のサブストリングに限定される必要はない。たとえば、転置索引は、1つの文書内または複数の文書にまたがるワードの位置を表すために使用することもできる。
データ構造は、微小空間におけるフルテキスト索引(FM索引)に基づく手法を使用して、データにおけるパターン発生の判定、位置付け、および計数を助けるために、ブロック内に記憶することができる。FM索引は、Burrows-Wheeler変換(BWT)に基づくサブストリング索引であり、接尾辞アレイに類似している。FM索引は、入力データまたはテキストの圧縮を可能にしながら高速のサブストリング照会も可能にするデータ構造である。FM索引の構造について、以下でより詳細に説明する。FM索引は、圧縮されたデータ/テキスト内のパターンの発生の数を効率的に発見し、ならびに各発生の位置を位置付けるために使用することができる。したがって、いくつかの実装形態では、ブロック内に記憶されたシンボルストリングは、第2のシンボルストリング内の任意のシンボルサブストリングのメンバーシップの位置付け、計数、および/または判定に対応することが意図されたデータ構造の一部分であり、第2のシンボルストリングは、第1のストリングより大きくすることができる。データ構造は、FM索引、カウンタアレイ、Burrows-Wheeler変換、または接尾辞アレイとすることができ、これらのデータ構造の各々について、図16~図19を参照して以下でさらに詳細に論じる。いくつかの実装形態では、データ構造は、たとえば第2のストリングが記憶されたコンテナとは別個の、1つまたは複数のコンテナの別個のセット内に記憶される。
上述したように、データ構造は、BWTを含むことができ、BWTは、ストリングSをストリングbw(S)の変換に変換する。変換は、ストリングSの探索を支援する特定の特性を有する(図26~図32に関連する下記の説明参照)。概して、BWTは、変換されていないストリングSに対してより容易に実施することができる方法を介した圧縮に好適な方法によって、変換内で順序付けられた入力シンボル/ビットの置換または無損失変換であると考えることができる。BWTは、入力ストリングSのシンボルを再配置してbw(S)を形成する順方向変換、およびそのBWTbw(S)から元のストリングSを再構築する逆方向変換という1対の変換を含む。
概して、長さnを有する入力ストリングS=s1、2、...、sの場合、Sのシンボルが、順序付けられたアルファベットΣ(たとえば、英語のアルファベット、正の整数のセット、任意の文字もしくはシンボルのセット、またはこれらの組合せ)から選択される。順方向変換は、この入力ストリングSに関して次のように進行する。ストリングs$が構築され、ここで$は、順序付けられたアルファベットΣ内に生じない特別なシンボルであり、その全体的な順序付けに従ってアルファベット内のあらゆる他のシンボルより小さいと仮定される。たとえば、英語のアルファベットの場合、全体的な順序は、$、A、B、C、...X、Y、Zになるはずである。概念上、サイズ(n+1)×(n+1)の行列Mは、ストリングs$の循環左シフトのすべてである行を収容する。行列Mは、sの回転行列と呼ぶことができる。ストリングの左シフトは、ストリングの第1のシンボルをストリングの末端へ動かすことと、すべての他のシンボルを1つの位置だけ左へシフトさせることとを伴う。この左シフトは、s$のすべての可能な循環左シフトがMに含まれるまで繰り返される(図16の左側参照)。行列Mは、Burrows-Wheeler変換中に明示的に構築される必要はない。次いで、アルファベットΣに定義される順序に従って、$は順序の最初であると考えて、行を左から右へ読み取って、Mの行を辞書的に分類する。$はΣ内のあらゆるシンボルより小さく、ストリング内に一度だけ現れるため、最後に分類される行列M’は、$sの第1の行を含む(図16の右側参照)。行列M’の最後の列は、$を含む列Lに対応し、Burrows-Wheeler変換bw(s)は、(L’,r)に等しく、ここでL’は、M’の最後の列を読み取ってシンボル$を省略することによって取得されるストリングであり、rは、最後の列におけるシンボル$の位置である。
図16は、例示的な実装形態によるストリングS=「abracadabra」に対するBWTの例示を描く。分類されていない12×12の行列Mが左に示されており、S$の各循環左シフト有し、S内の11個のシンボルおよび追加のシンボル$に対して12行をもたらす。図16の右側は、分類された形の12×12の行列M’を描いており、$はS$のすべてのシンボルの順序の最初であると定義され、ストリングの残りは英語のアルファベットの順序に従って分類されるため、$から開始するストリング「$abracadabra」に対応する第1の行を有する。シンボルaから開始する5つの行(「abracadabra」というワード内に文字aが5回現れるため)が、後続のシンボル(たとえば、第2、第3、第4、および第5のシンボル)に従ってアルファベット順に分類される。行列Mを変換してM’を導出するこのプロセスを、接尾辞分類または右分類と呼ぶことができる。
Fによって示されている分類された行列M’の第1の列を読み取ることで、S内のすべてのシンボルの分類された配列であるストリング「$aaaaabbcdr」が与えられる。第1の文字$を含まないが同じストリングが、F’または「aaaaabbcdr」として表される。出力ストリングL’は、最後の列L(「ard$rcaaaabb」)を読み取り、シンボル$を除外することによって取得され、したがってL’は「ardrcaaaabb」に等しい。最後の列におけるシンボル$の単一の発生の位置は、r=3と示されている。出力ストリングL’は、局所的に均質な特性を有し、これは圧縮設定に特に有用である。具体的には、局所的に均質な特性は、図16の最後の列Lの最後の6つのシンボルが、圧縮方法を介して大幅に圧縮することができる非常に反復性の高いストリング「aaaabb」を形成することから明らかである。局所的均質性のこの特性は、ストリングが右のコンテキスト(すなわち、接尾辞)に従ってアルファベット順に分類されるため、BWTに固有である。
本明細書では、接尾辞アレイ(SA)を使用することができる。長さnのシンボルのストリングに対して構築された接尾辞アレイsa[0,n-1]は、辞書的順序でsの第iの接尾辞の位置をsa[i]に記憶する。接尾辞位置sa[i]は、log(n)に等しい複数のビットで符号化することができ、接尾辞アレイsaは、2進で直列化することができる。この直列化は、接尾辞アレイ内の接尾辞位置の各ビット表現を連結すること、または各ビット表現を別個のコンテナ内の識別子に記憶することを伴う。
図17は、同じストリングのBWTと比較して、例示的な実装形態によるストリングS=「abracadabra」に対する例示的な接尾辞アレイを描く。図17の第1の列は、シンボル$が添えられた入力ストリングSであるストリングS$のすべての接尾辞を示し、ここでシンボル$は、シンボルの全体的な順序の最初であると定義される。各接尾辞は、ストリングS$内の各位置に対して、その位置のシンボルおよびすべての後続のシンボルを得ることによって取得される。対応する接尾辞位置、S$内の各接尾辞の開始位置が、図17の第2の列にある。たとえば、上の行の第1の接尾辞は、接尾辞位置0を有し、したがってストリングS$全体または「abracadabra$」を有する。上の行の第2の接尾辞は、接尾辞位置1を有し、したがってストリングS$のうち第1の位置の後に始まる部分または「bracadabra$」を有する。残りの接尾辞も同様に判定される。
BWTが行を辞書的に分類することを伴うのとちょうど同様に、図17の第1の列からの接尾辞は、アルファベット順に従って辞書的に分類され、図17の第3の列にリスト化され、対応する接尾辞位置は、図17の第4の列にリスト化される。ここでは、シンボル$が辞書的順序で最初にあると定義されるため、接尾辞「$」は常に、分類された接尾辞アレイの第1の行にある。列4における分類された接尾辞位置のリストを、物理的に記憶される接尾辞アレイとすることができる。
図17の最後の2つの列は、図16に描くように、同じ入力ストリングがBWTに変換されるため、分類された回転行列M’および対応する最後の列Lを示す。第3の列の分類された接尾辞は、行列M’の行に対応し、行列M’の各行に対して、対応する分類された接尾辞は、シンボル$を含むシンボル$までのシンボルのセットである。第iの行に対する最後の列L内のすべてのシンボルL[i]が、図17の同じ行(すなわち、第iの行)の接尾辞位置sa[i]に先行する入力ストリングsのシンボルに対応する。しかし、接尾辞が全ストリング(すなわち、sa[i]=0)である場合、$が先行するシンボルとして使用される。このようにして、SAに対して接尾辞を分類することは、BWTに対してMの行を分類することに均等となりうる。各構造間の関係は、以下の等式によって形式化される。
Figure 2022531790000002
この関係は、回転行列M’の行とストリングsの接尾辞との間に全単射の対応関係が存在することを示す。ストリングsの接尾辞アレイを考慮すると、BWTに対するストリングLを導出するには線形時間を要する。
図18および図19は、例示的な実装形態による本明細書に記載するデータ構造を実施する実験例を描く。この実験例は、378成分の成分ライブラリサイズを使用して実施されたものであり、これらの成分は、以下の区画方式(3,3,3,3,3,3,3,357)によって示す8つのレベルの中で細分される。このライブラリに対応するトライに対するファンアウトは、最初の7つのレベルに対して値c=3、次いで最後のレベルに対して値c=357を要する。この成分ライブラリによって、合計780,759の固有の識別子を符号化することができる(すなわち、3×357=780,759)。いくつかの実装形態では、たとえば手法を実行可能かつ頑強にするためのそのような識別子の書込みおよびエラー補正コードの設計に関する技術上の制約のため、索引付けされたストリングsのシンボルを符号化するためにすべてのそのような識別子が使用されるとは限らない。図18および図19に描く例は、例示のみを目的として示されており、本開示は、任意の数のレベルに対する任意のサイズの成分ライブラリに適用可能であることが理解されよう。本開示では、「コンテナ」という用語は物理的コンパートメントを指すことが多いが、図18および図19に関連して説明するコンテナは、必ずしも別個のコンパートメント内に物理的に区画化されていない核酸分子のセットを指すことを理解されたい。
図18は、例示的な実装形態によるストリングのBurrows-Wheeler変換の符号化の例示的な表現を示す。この例では、コンテナは、同じ長さ7成分の接頭辞を共用し、最後の層に区画化された357個の可能な成分のうちの最後の成分に従って区別される識別子のグループを指す。同じ7「塩基」レベルを共用する識別子は、たとえば単一の自己組織化反応で識別子を多重化することによって、単一のコンテナ内に並列に構築される。3=2,187個のコンテナが存在し、各コンテナは、識別子構造のための最後の層で利用可能な357個の成分に従って、357個の固有の識別子を収容することができる。7塩基レベルが並列に構築されるとき、これらは、最後の層に別個の成分を有する識別子の数に等しい量に複製することができる。
357個の利用可能な識別子から、1つのコンテナ当たり350個の識別子のみを使用する低い重みのコードブックを実施することができる。概して、低い重みのコードブックは、1つのコンテナ当たりの識別子の数が閾値より小さい限り、1つのコンテナ当たり利用可能な識別子の数に対して、1つのコンテナ当たり任意の好適な数の識別子を使用することができる。コードブックは、25個の識別子のブロック内に350個の識別子を区画化し、1つのコンテナ当たり14個のブロックが得られる。各ブロックは、コードワードに対応することができる。各コンテナは、数ビットの情報を符号化する12個のデータコードワード、ならびにエラー補正コードを実施する2個のエラー検出および補正(EDAC)コードワードに区画化することができる。各コードワードが25個の利用可能な識別子から2つの識別子を設定した場合、300個の可能なコードワード構成(25choose2)は、1バイト(8ビット)、したがってエラー補正を伴って1つのコンテナ当たり96個のソースビットの符号化を可能にする。2,187個のコンテナのセットの場合、26,244バイトの情報を符号化することができ、4,374バイトをエラー補正に使用する。
13=8,192ビット(1キロバイト)に等しいサイズnの2進ストリングsを考慮すると、Burrows-Wheeler変換をストリングsの符号化に使用することができる。ストリングsのBWTの長さ(すなわち、BWT(s))は、ストリングsの長さと同じであり、この例では、具体的にn=213である。教示法アルゴリズムを使用して、sのBWTを構築することができる。低い重みのコードブックによれば、各コンテナは、12バイトまたは96ビットの情報(各データコードワードに対して1バイトまたは8ビット)を符号化する。長さ8,192ビットを有するsのBWT、BWT(s)は、86個のコンテナ(8,192ビットの上限を1つのコンテナ当たり96ビットで割った値)で直列化される。サイズw=96ビットのブロックは、各コンテナがBWT(s)のブロックを符号化するように画定することができる。さらに、BWT(s)の1ブロック(96ビット)当たりの特定のシンボル値のランニングカウントを記憶するカウンタアレイを符号化することができる。
図19は、例示的な実装形態による図18のBurrows-Wheeler変換から導出されるカウンタアレイを符号化する例示的な表現を示す。カウンタアレイは、長さがBWT(s)内のシンボルの数に等しいサイズの数213=8192を記憶するのに十分な設定長さb=13ビットのブロックまたはカウンタに分けられる。したがって、コンテナは、12個のコードワードおよび追加の2個のedacコードワードによってfloor(96/13)=7カウンタを記憶することができる。この例では、カウンタアレイの各ブロックは、sのBWT、BWT内のブロックに対応し、その位置の接頭辞内に1の数を記憶する。この関係は、カウンタアレイをc[0,floor((n-1)/w)]として画定するように形式化され(カウンタアレイcは長さfloor((n-1)/w)+1)を有する)、したがってc[i](所与のブロックまたはカウンタ、cの第iのブロック)が、接頭辞BWT[0,i×w-1]内に1の数を記憶する。したがって、c[0](cの第1のブロック)は0に等しい。所与のカウンタc[i]は、位置floor(i/7)のコンテナ内に記憶され、第iのコンテナの前のBWTの部分内で生じる1(ビット値1)の数を計数する。
BWTは、長さn=213ビットを有し、各カウンタは、13ビットに等しいlog(n)個のビットで符号化することができる。各々13ビットの7つのカウンタは、合計91ビットに等しく、これは96ビットという1つのコンテナ当たりの最大記憶より小さいため、カウンタアレイcは、1つのコンテナ当たり7つのカウンタを割り当てることによって2進で直列化される。したがって、13ビットで表される所与のカウンタc[i]が、floor(i/7)で示されるコンテナ内に記憶され、コンテナを0から計数する。86個のコンテナが、sの変換、BWTを記憶し、したがって合計86個のカウンタがアレイcを形成する。合計86個のカウンタは、13個のコンテナ(86個のカウンタの上限を1つのコンテナ当たり7つのカウンタで割った値)にわたって記憶される。図19は、この例示的な分布を図示する。
カウンタアレイに関して上述したように、同じストリングsに対する接尾辞アレイの接尾辞位置は、13ビット(log(n)個のビット)で符号化することができる。接尾辞アレイは、1つのコンテナ当たり7つの接尾辞位置を記憶することによって、2進で直列化される。上記の同じ例の場合、所与の接尾辞位置sa[i]が、コンテナfloor(i/7)に位置付けられ、コンテナを0から計数する。接尾辞アレイは、ceiling(n/7)個のコンテナを要し、これはceiling(8,192/7)個のコンテナ、または1,171個のコンテナに等しい。
上述したデータ構造は、合計1,270個のコンテナ(BWTに対する86+カウンタアレイに対する13+接尾辞アレイに対する1,171)に記憶される。こうしたコンテナの使用は、この例に使用される成分ライブラリに従って、2,187個の利用可能なコンテナの一部分である。全体的な標的ライブラリは、BWTライブラリLBWT、カウンタライブラリL、および接尾辞ライブラリLSAという表記に従って細分することができる。いくつかの実装形態では、この細分は、単に論理的または暗示的であり、したがってこれらのライブラリへのアクセスは並列に行うことができる。並列アクセスの場合、各ライブラリへの照会を組み合わせることができる。
上記の例では、rank(x)、すなわちBWTのビット位置xを含むビット位置xまでのビット値「1」の発生の総数を取得することは、以下を伴う。第1に、BWTにおけるそのビット位置、すなわちブロック位置z=floor(x/w)のブロックを計算し、ここでw=96はBWTのブロックサイズである。第2に、LBWTのコンテナ位置zにあるそのコンテナにアクセスすることによって、前記ブロックを読み取り、その中に符号化されたデータを復号して、位置xを含む位置xまでのビット値「1」の数の第1のカウントnBWTを計算する。第3に、1つのコンテナ当たり7つのカウンタがあるため、Lのコンテナ位置floor(z/7)にあるカウンタアレイ内の対応するカウンタzを読み取り、その中のデータを復号して、ビット位置xを収容するブロックまでのビット値「1」の数の第2のカウントnを計算する。最後に、第1のカウントおよび第2のカウントの和(rank(x)=nBWT+n)を得る。rank(x)=x-rank(x)+1であるため、この方法は、0に対するランクの計算に拡大可能である。
この例では、カウンタアレイの第iのブロックは、BWTの第iのブロックまで、特定のシンボル値を計数するが、他の実施形態では、カウンタアレイの第iのブロックは、BWTの第iのブロックを含む第iのブロックまでの特定のシンボル値を計数することができることを理解されたい。差が上記の第3のステップのみ変化させるはずである場合、nは、位置zではなく位置z-1のカウンタに対応するはずである。別法として、これらのステップは、ブロックzにわたってビット値「1」の総数を計数し、次いでブロックz内の位置xの後に生じるビット値「1」の数を引くように構成することができる。概して、カウンタブロックf(z)へのBWTブロックのマッピングは、方法の効率に影響を及ぼすことなく定義することができる。この例で使用されるコンテナに属する識別子は、各々成分に結合する一連のプローブによって効率的にアクセス可能になるように構成される(各コンテナの識別子が、共通の7つの成分の排他的なセットを共用するため)ことも理解されたい。さらに、コンテナ内に収容される情報は、1つのコンテナ当たり2つの関連付けられたedacコードワードのため、特定の許容度に補正可能になるように構成されることも理解されたい。概して、カウンタアレイおよびBWTの識別子への異なるマッピングを定義することができる。
核酸配列に記憶されたデータの効率的な読取りおよびアクセス演算
識別子にアクセスして読み取り、符号化された情報を明らかにすることができ、読取りおよびアクセス演算について、図20~図22に関連して説明する。識別子のライブラリLを考慮すると、読取り演算Read(L)を実行して、Lに収容された識別子のセットを完全に読み取ることができ、アクセス演算Access(L,Q)を実行して、適切な照会式Qを指定することによって、Lから識別子を選択することができる。ライブラリLの読取りは、識別子のランダムなサブセットをLから取得するプロセスを指し、各識別子は、多数性(またはコピー数)を有する。DNAシーケンサを使用して、このプロセスを実行することができる。DNAシークエンシングによる読取り方法は、Lのサイズとは独立して、読取り数と呼ばれる、シークエンシング演算が単一の実行でサンプリングおよび報告することができる、Lのサブセットの最大サイズ、および読取り長さと呼ばれる、読み取ることができる識別子の最大長さという2つのパラメータによって定義される。特有の識別子が読取りプロセスによってサンプリングされる回数は、その特有のプロセス実行におけるその識別子のコピーカウントまたはカバレージと呼ばれる。本開示では、「アクセス」および「照会」という用語はどちらも、そのセットからの核酸分子のサブセット、データ、または情報を標的とするプロセスに使用されることを理解されたい。本明細書では、これらの用語を区別なく使用することができる。
max個の識別子の最大のランダム読取り処理量を有する技術を考慮すると、関数≦f(Rmax,δ)は、|L|≦f(Rmax,δ)の場合かつその場合に限り、無視できるほどの障害確率≦1/|L|δで、その識別子に多数性を有するLを完全に読み取ることができるように定義することができる。言い換えれば、ライブラリLは、同じ識別子配列を有する複製識別子分子を有し、したがってfは、無視できるほどの故障確率で快適に読み取ることができる別個の識別子の数を示す。一例として、現在の技術は、ランダム読取り数Rmax≒25×10および150ヌクレオシドの読取り長さに対応する。この技術に対する≦f(Rmax,δ)の適当な推定は、L内のすべての別個の識別子をサンプリングする際に10-6より小さい故障確率を保証するために、25×10である。
より小さいライブラリの場合、非ランダム読取りプロセスが実行され、それによって、ハイブリダイゼーションアッセイ、たとえばDNAマイクロアレイ、CRISPRに基づくプローブ、またはPCRによって、可能な各識別子の有無が判定される。この非ランダム読取り方法は、たとえばサイズ1,000またはそれよりも少ない識別子のライブラリを読み取るとき、DNAシークエンシングより高速かつ安価にすることができる。
異なる層に対応する成分から識別子が構築されるとき、特有のレベルまたは層に特有の成分を有する識別子にアクセスすることが可能である。照会式は、論理ANDおよびORによって構成された正規表現として、有向非巡回グラフ(DAG)、アクセスプログラムの形で調整される照会木と呼ばれる1組の木構造の形で形式化されたmatch-component演算子によって構築される。DAGは、識別子を収容する様々なコンテナにおいて化学反応が実行される順序を指定する。たとえば、図13の識別子の組合せ空間における照会は、(0または2)ならびに5および6に一致する成分を有するすべての識別子のようなものとして指定することができる。そのような表現は、アクセスプログラムとして調整されるとき、この組合せ空間によって画定されるライブラリ内の識別子4および16にアクセスするはずである。アクセスプログラムは、直列で実行される3つの反応とすることができる。第1の反応では、プローブを使用して、成分0または2を有する識別子を選択する(たとえば、多重化PCRによる)。第2の反応は、第1の反応からの出力核酸を得て、プローブを使用して、成分5を有する識別子を選択する。最後に、第3の反応は、第2の反応からの出力核酸を得て、プローブを使用して、成分6を有する識別子を選択する。
Lのサブセットにアクセスするために、selector(i,c’)が、L内の識別子のセットを、第iの層内の成分Cの全セットのうちのサブセットc’の部材である第iの成分を有する識別子に制限することを可能にする。c’は、特定の第iの成分に対して一致の論理ORを実施する。セレクタsおよびtは、sおよびtの両方に一致する識別子にLを制限するセレクタを取得し、したがって論理ANDを取得するようにともに構成することができる。論理ANDは、連続するレベルに適用され、ライブラリLへの特異性を有するが、図11および図13のトライなどのトライT(L)内の1つまたは複数のサブパスにわたって選択を実施する。上記で論じたように、アクセスは、たとえば、PCRまたは親和性タグ付けを伴う。識別子が、異なる層に対応する成分から構築されるとき、特有のレベルに特有の成分を有する識別子にアクセスすることが可能である。照会式は、論理ANDおよびORによって構成された正規表現として、有向非巡回グラフ(DAG)、アクセスプログラムの形で調整される照会木と呼ばれる1組の木構造の形で形式化されたmatch-component演算子によって構築される。DAGは、識別子を収容する様々なコンテナにおいて化学反応が実行される順序を指定する。
m個のセレクタのセットは、m個のセレクタすべてのレベルが別個であり、トライT(L)の第1のm個のレベルを指すとき、左セレクタまたは5’セレクタと呼ばれる。セレクタのセットσは、σが、T(L)のπ個以下のレベルにアクセスする少なくとも1つの左セレクタを収容するとき、アクセサと呼ばれ、ここでπは、アクセス演算に使用されるPCRなどの化学的方法のパラメータである。PCRの場合、2つのPCRプライマーの各々によって1つの成分を標的とすることによって、2つの成分が反応における標的とされるため、πの値を2とすることができる。アクセサを組み合わせて、T(L)の部分木である照会木Qを形成する。
図20は、例示的な実装形態によるトライT(L)にわたって実行される照会木2000の図例を示す。トライT(L)は、トライの9個の底部ノードによって示される9個の識別子の組合せ空間を列挙する。図20に描くように、各識別子は、層1からの1つの成分および層2からの1つの成分という2つの成分を有する。照会Qは、グループ2002a内の3つの識別子およびグループ2002b内の2つの識別子という5つの識別子を選択するように、T(L)にわたって実行される。5つの識別子に到達するために5つのパスを構文解析するのではなく、照会Qは、低減されたパスセットを伴う。具体的には、照会Qは、1つの部分パスおよび2つのフルパスという3つのパスのみのセットを伴う。
部分パスは、T(L)内の下向きのパスであり、根(トライ内の単数の最も上のノード)から始まって内部ノードのうちの1つ(図20のT(L)の中間レベル内の3つのノードのうちの1つ)へつながる。部分パスは、長さ<Mを有し、複数の層を使用してライブラリLの識別子を定義する。Q内の部分パスは、2つのノードのみを伴い、したがって部分パスを指定するには、π=2成分の1つのアクセサで十分である。図20に描くように、部分パスは、グループ2002a内の3つの識別子を選択する。
フルパスは、T(L)内の根から葉までの下向きのパスであり、根から葉(トライ内の底部ノードのうちの1つ、固有の識別子配列を示す)まで延びる。フルパスは、長さ=Mを有する。2つのフルパスの各々は、3つのノードを伴い、したがって各フルパスを指定するには、π=2成分の1つのアクセサおよび1成分の1つのアクセサという2つのアクセサで十分である。図20の2つのフルパスは、第1のレベルで根ノードおよび別のノードを共用し、したがって2つのフルパスは、サイズπ=2のアクセサ(根から他のノードへ進む)と、各フルパスの末端に位置する2つの別個の葉に対する2つの別個のセレクタとに分解することができる。
言い換えれば、照会木QがL内の識別子のサブセットにアクセスするように実行されるとき、フルパスは、1つの葉(フルパスによって到達される葉)のみを選択し、部分パスは、複数の葉(部分パスのフルパス延長によって到達することができる葉)を選択する。T(L)の葉とLの識別子との間に全単射(1対1のペアリング)が存在し、したがってLにおけるQの実行は、照会木Qによって到達可能なT(L)の葉によって表される識別子を選択する。Lは、Qによって選択されたLのサブセットを示す。図20の例では、照会木Qは、Lの5つの識別子を選択し、したがってLは、グループ2002aおよび2002bによって示される5つの識別子を収容する。
Qは、アクセス方法によって物理的に可能にされるものより多くの識別子をフェッチすることができるため、照会木は、必ずしも1つの化学反応のみによって実施されるとは限らない。たとえば、所与のQは、f(Rmax,δ)より多くの識別子を選択し、またはQは、π=2より大きい深さを有し、これは多くのアクセサの実行を必要とする。これらの問題は、アクセスプログラム、すなわちノードが照会木の一部であるDAGによって対処することができ、縁部は、接続されたノード、したがって照会木間の入力/出力を示す。
L内の識別子の任意のサブセットSを、対応する照会木Qに変換することができる。S内の識別子に対応する各葉xに対して、Qはまず、T(L)内の任意のxにつながるフルパスによって示される木である。Q内のノードは、その子(親ノードからの分岐に続くノード)のすべてがQに属する場合、またはそのノードがQの葉である場合、フルとして示される。Qは次いで、Qからの全ノードのすべての子を剪定し、さらなる剪定が可能でなくなるまでこのステップを繰り返すことによって完成される。残りのノードは、T(L)の接続された部分木を形成し、これは厳密にSの識別子を選択する最も小さい部分木である。この部分木を構成するノードの数は、部分木のサイズを示し、Sに対する適当な部分木の最も大きいインスタンスが、Sの各識別子に対応するすべての葉xに対して長さMの別個のフルパスを含むため、|S|×M個のノードによって上限が定められる。剪定の一例として、図20の照会木Qは、2002aのすべての3つの識別子がサブセットSの一部であるため、その子が剪定されたフルノードであると考えられるもので終了する部分パスを有する。
いくつかの実装形態では、Sは、L内の(y-x+1)個の識別子隣接範囲R=[id[x],id[y]]を形成する。Rは、T(L)の葉の対応する隣接範囲に変換され、Qを生成するための上記のステップが適用される。例示的な実装形態によるこの実装形態の一例が、図21に示されており、図21は、2分木T(L)内のフルパスおよび部分パスのセットにおける識別子(葉によって表される)の隣接範囲Rの分解の図例を示す。最も左および最も右のパスは、それぞれ最も左および最も右の識別子id[x]およびid[y]につながる2つのフルパスである。白丸のノードは、木が2進であると仮定して、レベルごとに2つのノードから下降する部分木全体を示す。各レベルにおけるノードの「ファンアウト」(すなわち、成分の数)は、cによって示されており、図21の例で、cは2に等しい。Rは、(M-1)個のレベルに対して多くとも2(c-1)個のパスからなるQによって選択され、したがってQは、多くとも2(M-1)(c-1)個の照会されたパス、したがってセレクタからなる。パスの数は、cではなく係数(c-1)に基づいている。なぜなら、同じ親ノードに由来するc個の部分パスがレベルiに存在する場合、これらの部分パスは、上のレベルの共用の親ノードで終了するが同じ部分範囲に及ぶより短い部分パスに縮小または圧縮することができるからである。
一般的な照会木Qにおいて、アクセスされた識別子が、T(L)の対応する葉の順序で順序付けられた場合、識別子は、対応する隣接葉を有する隣接識別子の範囲<(s,t),...,(s,t)>を形成し、ここで各(s,t)は、識別子/葉の空でない、互いに素である、最大の隣接部分配列である。
好適な照会木Qは、(i)照会されたサブセットSを満たし、(ii)特定の制限を有する採用された読取り技術に従って実行可能であり、かつ(iii)読取りコストが最小化されたものである。いくつかの実装形態では、必要とされるより多くの識別子を読み取ることが有用であり、したがってQは、S内にないいくつかの偽の正の識別子に到達するが、自動または手動検査を介して後処理ステップで廃棄することができる。照会木Qに対する実行時間を最小にしたケースは、現在の照会木が及ぶ葉の総数がf(Rmax,δ)(所与の読取り方法の単一の実行で読み取ることができる固有の識別子の最大数)より小さくなるまで、木Qを最も深いレベルからレベルごとに剪定することによって実施することができる。ノードの数を最小にしたケースは、すべてのノードuに優先権prio(u)が割り当てられる貪欲解によって実現することができ、この解は、現在の照会木からノードの子を除去することによって誘導される利得を測定し、これは、Q内のその子(除去される)の数およびそれらの子の除去によって含まれる余分の葉数の関数として表される。次いで、貪欲解は、剪定された照会木によって含まれる葉の全体的な数がf(Rmax,δ)より大きくなるまで、優先権に従ってQからノードを除去することによって続行される。
上述したように、たとえば読み取るべき識別子のセットがf(Rmax,δ)より大きい場合、または識別子のセット全体のシークエンシングが異常な費用をもたらす場合、アクセスプログラムを使用して、所与の照会の実行可能性に関係する問題を克服することができる。アクセスプログラムPは、有向非巡回グラフ(DAG)であり、(i)各ノードがアクセスまたは読取り演算であり、(ii)誘導される各縁部が2つのノード間の入力/出力を示し(場合により、標的ライブラリ内に存在する識別子の濃度が増幅される)、(iii)DAGの根への入力が元の識別子ライブラリLであり、(iv)DAGの出力が、その末端ノードの数と同程度のライブラリLの(場合により互いに素でない)サブセットからなる。Pの実行可能性は、読取り演算が実行されるときはいつでも、読取りへ入力される識別子のプールのサイズがf(Rmax,δ)より小さい場合に保証される。実行可能性は、照会木を実行するために使用されるコンテナ内の識別子の濃度に依存し、これは、少なくとも固定の値mとすることができる。いくつかの実装形態では、濃度要件を満たすために、標的ライブラリL内の識別子は、近似定数mによって複製される。いくつかの実装形態では、l個の長い下向きのパス(根からノード/葉へ)からなる照会木の実行において、ライブラリLは、l個の別個のコンテナ(たとえば、ウェルプレート内のウェル、試験管)内のアリコートに区画化される(サンプルの体積による区画化)。各アリコートでは、各識別子の最小濃度mを依然として満たすことができる。等分は、1つのコンテナからl個のコンテナへのピペット分注を伴うが、自動化された液体取扱い機械によって自動的に実行することもできる。ライブラリLのトライT(L)におけるl個の長い独立したパスの実行は、1つの識別子当たりm×l個のコピーを保証するm=lで複製演算を実行することを伴う。次いで、lのアリコート演算を実行して、識別子をl個の別個のコンテナに区画化し、各コンテナは、1つの識別子当たり約m個のコピーを有する。次いで、これらのl個のチューブにわたって、l個の長い下向きパスに対してl個のアクセサが、個別および/または並列に実行される。
照会木のパスが比較的短い実装形態では、これらを同じコンテナ上で並列に実行することができ、これは1つの反応または少数の反応のみを必要とする。いくつかのパスが長く、同じサブパスのいくつかを共用する実装形態では、いくつかの反応を同じコンテナ内で併合して、必要とされるアリコートの数lを低減させることができる。反応の併合は、照会木の構造に存在する対称性に関係し、したがってアクセスプログラムは、照会木における可能な併合を検出するように構成することができる。
図22は、トライT(3)に適用される照会木Q2200におけるこの併合プロセスの一例を示し、ここで文字A~Iはアクセサを示し、ノードにつながらない分岐は、例示的な実装形態による照会木2200には存在しないフルトライ2200のパスである。図22の例では、照会木2200は、ADG、ADH、AFG、CDG、CDH、およびCFGという6つのフルパスを含む。すべてのノードは、そのノードをラベル付けるセレクタまたはアクセサによる化学反応を指定し、反応は、入っている反応(前のノード)から、識別子にわたって実行される。照会木2200のサイズおよび構造に基づいて、全体で合計12個のセレクタが使用され、1つのレベル当たり多くとも6つの反応(1つの子ノード当たり1つの反応)が必要とされる。
図22の右側の照会DAG2202は、照会木2200において共用される接尾辞を併合した結果である。照会DAG2202は、AFGとCFGとの間で共用される接尾辞FG、ADGとCDGとの間で共用される接尾辞DG、およびADHとCDHとの間で共用される接尾辞DHを併合する。その結果得られる照会DAG2202は、1つのレベル当たり6つのアクセサおよび2つ以下の反応によって実施される。1つのノードにおけるアリコートの数は、そのファンアウトに依存し、したがって照会DAG2202は、2以下のアリコート演算、1つのレベル当たり多くとも2つのコンテナ、したがって1つのレベル当たり多くとも2つの複製演算によって実施される。
概して、アクセスプログラムは、l個の下向きパス(セレクタ)からなる照会木を使用して実施される。いくつかの実装形態では、照会木は浅く、これは、パスが長さp≦πを有することを意味し、ここでπは、読取り技術に応じて上記で定義したとおりであり、このとき照会木を実行するには1つの反応で十分である。照会木は、パス、すなわちセレクタの結果の論理ORからなり、したがってセレクタは、同じコンテナ上で並列に適用することができる。いくつかの実装形態では、照会木は、πより長いいくつかのパスを有しており、実行において区別される(p/π)個のアクセサのANDによって実行されなければならない。しかし、照会木が対応する下向きパスで行われる1つまたは複数の繰返しを含む実装形態では、これらの制限を克服することができる。繰返しの形態は、図21に関連して上述したとおりであり、繰返しは、アクセス演算に対応する照会木内の2つまたはそれよりも多いパスの間で共用される接尾辞である。2つのパスが、図21の2200の2つのパスADGおよびCDGにおけるDGの接尾辞などの接尾辞sを共用するとき、これらのパスは、|s|個のセレクタの最後の配列を共用し、したがって2つのパスによって選択された識別子のセットを同じコンテナ内へ併合することができる。このプロセスは、2200のような照会木Qを、2202のような照会DAG Dに変換することを伴い、ここで変換は、Qにおけるパスの等しい接尾辞を壊すことを伴う。D内のノードは、アクセサ(長いπのセレクタ)によってラベル付けされ、各ノードは、サブパスに従ってコンテナ内で併合された識別子にわたって対応するアクセサを適用することによって実行される反応を示す。アクセスプログラムによって並列に実行されるべき反応の数は、Dの各レベルにおけるノードの数に等しい。
いくつかの実装形態では、アクセスプログラムは、その構成パスの論理ORである照会木を有し、論理ANDにおいてその構成(p/π)アクセサを組み合わせることによって、p≦Lの照会パス長さが実行される。アクセスプログラムは、多くとも長さpのr個のパスの実行を伴い、これらのパスは、各々多くともr個のアクセサの(p/π)セットの配列において(1つのパス当たり1つのアクセサ)、レベルごとに分解することができる。そのような各セットは、コンテナにおける1つの反応動作を介して実行される。この実装形態は、たとえばパスがいくつかの接頭辞を共用する(したがってともに実行することができる)場合、またはパスの部分を併合することでアリコートおよび複製演算の数(したがって並列反応の数)を低減させる場合、アクセスプログラムの材料コストを高く推定しすぎる。m個の葉を有する照会木Qによって指定されるアクセスプログラムの実行時間は、その深さをπで割った値(1/π)×深さ(Q)に比例する。アクセスプログラムは、照会木Qのπ個のレベル当たり1つの反応を実行することによって続行され、これは、場合により別個のコンテナにわたって多くのアクセサを実行することを伴うことができる。実行時間は、複製および等分に要する時間を補償する。いくつかの実装形態では、照会木Qは、πの倍数であるレベルでノードを維持し、π成分のサブパスを縮小して、単一のシンボルであると考えられる長さπのメタ成分を形成することによって縮小される。すべてのπ個のレベルにおいて、cπ個のパスが調査され、したがって縮小されたトライは、L/πの深さおよびcπのファンアウトを有する。1つのノードは、ファンアウトfを有し、このとき親ノードからのその入力は、f回複製される。木Qから導出された照会DAG Dに従って照会が実行される実装形態では、実行時間は、(1/π)×深さ(D)に、各ノードのファンアウトを考慮してDのノードに基づいて事前に判定される複製時間を足した値によって近似される。上記で論じた照会DAGの定義によれば、深さ(D)=深さ(Q)であり、かつ|D|≦|Q|であるため、この実行時間は、Qに対する実行時間より小さくすることができる。
アクセサがπ個の成分によって形成されると仮定すると、アクセスプログラムの設定時間は、Qのサイズをπで割った値に比例する。設定時間は、サイズ|Q|、またはm個の個々のパスの長さの和をπによって割った値(1/π)×m×深さ(Q)のどちらかより小さいほうによって、上限が制限される。Qに対応する照会DAG Dが、設定時間を指定するために、Qの代わりに使用される。
本明細書に論じる読取りおよびアクセス演算は、DNAに基づく記憶システムで他の演算を実行するための基本を形成する。
核酸配列に記憶されたデータのランクおよびフェッチ演算
図23および図24は、例示的な実装形態によるランク演算を実行して、ストリング内の特定の位置を含むその特定の位置までのデータストリングの範囲に対するシンボルまたはビット値のカウントを判定する例示的な方法を描く。ランク演算は、上述した複数のアクセスおよび読取り演算を含む。同様に、フェッチ演算を実行して、シンボルストリングのサブセットを取り出すことができる。上記で論じたように、本開示の態様は、2進ストリングの記憶、索引付け、および探索に関する。長さnの2進ビットのストリングSは、サイズcのセット内で選択されたM個の成分によって構築された識別子のプールLを介して識別子核酸分子によって表すことができる。たとえば、組合せライブラリLのサイズ|L[M]|は、c≧nに等しく設定され、したがって層の数Mは、lognによって近似される。ストリングSは、識別子のプールとして符号化され、したがってS内の位置xのビットS[x]がビット値1を有する場合、位置xの識別子id[x]はLに属する。いくつかの実装形態では、これは、ビット値1に対応するL内の識別子のみが構築され、後にプールされ、ビット値0に対応するL内の識別子は構築されないことを意味する。
本開示は、ランク演算rank(x)を実行するシステムおよび方法を含み、ランク演算は、2進ストリングに対して、接頭辞ストリングS[0,x](ビットストリングSのうち位置xに先行して位置xを含む部分)内の1の数のカウントを返す。非2進ストリングの場合、ランク演算は、接頭辞ストリング内の特有のシンボル値を有するシンボルの数のカウントを返す。本明細書に記載する例のいくつかは2進ストリングに関するが、本開示は、3つ以上の可能なシンボル値を有するシンボルストリングに対するランク演算にも適用されることが理解されよう。
いくつかの実装形態では、bは、2進ビットストリングSの長さを示す整数nを符号化するために必要とされるビットの数である。ビットの数bは、log(n+1)によって推定される。ストリングSは、サイズbのブロックに分けられ、ストリングS内に位置xを含むブロックは、B(x)によって示すことができる。ストリングSの一方の末端で0から計数すると、順序付けられた索引B(x)は、floor(x/b)に等しい。ランクの算出は、(i)S[0,b×B(x)-1]内の1の数(xを収容するブロックB(x)に先行するブロック内の1の数)を計数すること、および(ii)S[b×B(x),x]内の1の数(xを含むxまでのブロックB(x)内の1の数)を計数することという2つのステップに分解することができる。これらのステップは、任意の順序で行うことができる。次いで、両方のステップからのカウントを合計して、位置xにおけるランクを判定する。いくつかの実装形態では、アクセス演算および読取り演算の各対が別個の標的ライブラリに適用され、別個の標的ライブラリが各ステップ(i)および(ii)に対応するため、演算rank(x)は、並列に実行可能な2つのアクセス演算および2つの読取り演算からなるアクセスプログラムを介して実施される。
本明細書に記載する例のいくつかは、上記の2つのステップに関するが、本開示は、同等の結果に到達するランクを判定する他の方法も含む。たとえば、いくつかの実装形態では、上述した2つのステップがわずかに修正される。具体的には、ランクの算出は、(i)S[0,(b+1)×B(x)-1]内の1の数(xを収容するブロックB(x)に先行してブロックB(x)を含むブロック内の1の数)を計数すること、および(ii)S[x+1,(b+1)×B(x)]内の1の数(ステップ(i)内に含まれていたがx後にのみ行われるブロックB(x)内の1の数)を計数することという2つの異なるステップに分解することができる。次いで、ステップ(ii)からのカウントをステップ(i)のカウントから引いて、ステップ(i)および(ii)で2重に計数された1の数を除去することによって、位置xのランクを取得する。より概略的には、ストリングSは、ブロックサイズwに分けることができ、wはbと同じである必要はない。いくつかの実装形態では、アクセス演算および読取り演算の各対が別個の標的ライブラリに適用され、別個の標的ライブラリが各ステップ(i)および(ii)に対応するため、演算rank(x)は、並列に実行可能な2つのアクセス演算および2つの読取り演算からなるアクセスプログラムを介して実施される。
図23は、例示的な実装形態による本明細書に記載する方法による識別子を使用して記憶されたn=30ビットの2進ストリングS内のrank(22)の計算のための一例を示す。したがって、この演算は、S内の位置x=22を含む位置x=22までの位置における、ビット値1の数を判定する。この例では、標的ライブラリLは、S内の値1に設定された13ビットに対応する13個の識別子を含む。識別子は、各々3つの成分から構成され、3つの成分は、図23の各トライ内の3つのレベルに対応する。したがって、図23のストリングSの上のトライT「3」は、13個の葉(1のビットに対する13個の識別子に対応する)、これらの葉の上の3つのレベル、およびc=4のファンアウトからなる。既存の葉(ビット値1に対応する識別子)につながるパスのみが描かれている。
図23の第1の照会木は、上記で論じたランク演算のステップ(ii)に対応する。この例では、ブロックサイズbは、log(n+1)=5に等しく、位置22を収容するブロックは、B(22)=4である。照会木Q(木構造においてより太い線で示される)は、位置20から位置22の範囲R[20,22]に及ぶ。Qは、それぞれビット値1、1、および0に対応する位置20、21、および22で3つの葉を選択する3つのフルパスからなる。これらの値のうちの2つのみが1に等しく、したがってそれぞれ位置20および21における識別子id[20]およびid[21]が取り出される。この照会木Qに対するカウントは、上述したステップ(ii)に従って、位置x=22を含み位置x=22までのB(22)内の1の数に対応するn=2に設定される。
次に、ランク演算のステップ(i)に従って、B(22)に先行するブロック内の残りの1を判定することができる。このステップは、各々b=5ビットのceiling(n/b)=6個のカウンタを符号化する2進カウンタストリングCを参照することによって実行される。Cは、本明細書に記載する方法による識別子を使用して記憶され、したがってSと同様にアクセスして読み取ることができる。Cの各5ビットカウンタは、各カウンタに先行するSの接頭辞内の1の数を計数する。Sは、参照のためにCの下でコピーされる。第1のカウンタに先行するSの接頭辞がないため、Cの第1の5ビットカウンタは、2進で0に等しい。第2の5ビットカウンタは、3つの1を収容するSの第1のブロックに続くため、2進で3に等しい「00011」である。Cのビットは、Cに適用される照会木Qのc=4ファンアウトに対応する4ビットのグループを示すために、垂直の点線によって分離される。Cに適用されるQは、B(22)の接頭辞S[0,19]内の1ビットの数のカウンタに対応する範囲C[20,24]内の識別子を選択する。Qは、ノードuで終了する1つの部分パス、および位置24のビットに及ぶ1つのフルパスからなる。対応するビットが0に設定されているため、位置24における識別子id[24]は存在せず、したがってフル照会パスは何も取り出さない。ノードuで終了する部分パスは、それぞれ位置22および23における2つの識別子id[22]およびid[23]を取り出す。カウンタC[20,24]のビットは、B(22)の接頭辞S[0,19]内の1の数に対応する整数値6を符号化する「00110」を読み出す。この照会木Qに対するカウントは、上述したステップ(i)に従って、B(22)までのS内の1の数に対応するn=6に設定される。アクセスプログラムを介したこの例示的なランク演算の実行は、n+n=2+6=8を返し、これはS[0,22]内の1ビットの正しい数である。
図23の例によって上述および図示したように、ランクの算出は、(i)S[0,b×B(x)-1]内の1の数(xを収容するブロックB(x)に先行するブロック内の1の数)を計数すること、および(ii)S[b×B(x),x]内の1の数(xを含むxまでのブロックB(x)内の1の数)を加算することという2つのステップに分解することができる。この演算は、長さnのビットストリングSに対して形式化されており、次の段階に従って実行される。段階1は、ブロックB(x)の接頭辞S[0,b×B(x)-1]内の1の数n(C)を算出することを伴う。接頭辞は、特定のビットまたはブロックに先行するビットを指す。第1の標的ライブラリLは、ストリングSに対するカウンタストリングである2進ストリングC[1,b×B(n)]を表す。カウンタストリングCは、C[ib,(i+1)b-1]がSの値rank(ib-1)のbビット内に2進表現を記憶するように定義され、ここでi=1、...B(n)-1である。Cは、長さ≦nを有する(Sの長さより小さくまたはそれに等しい)。C(0)は、定義によれば0に等しいため、記憶されない。段階1は、指定の位置xを収容するブロックB(x)までのSのランクを符号化するCのカウンタに対応する、範囲R=(id[b×B(x)],id[b×(B(x)+1)-1])内で第1のライブラリLの識別子をフェッチする照会木Qを作成することを伴う。Qは、約lognの深さおよび約cLのサイズ、すなわち深さにファンアウトを掛けた値を有し、ここでサイズは、ブロックサイズbに依存しない。次いで段階1は、Y=access(L,R)(範囲R内のLの識別子にアクセスする)、次いでread(Y)という2つの演算を介して、Rによって境界が定められたCのサブストリングを構成するビットを読み取るアクセスプログラムを作成することを伴い、ここでYは、アクセス演算を介して取得される識別子のサブセットである。このアクセスプログラムは、多くともb個の識別子の範囲にわたって読取り演算が実行されるため、上記で論じた基準に従って実行可能であり、ここでbは約log(n)であり、これはf(Rmax,δ)より小さい。アクセスプログラムによって取り出される識別子は、Rによって境界が定められたCのサブストリング内の1ビットの位置を示す。段階1は、それらの位置のみが1に設定されたbビットの2進サブストリングによって符号化された整数値に、n(C)を設定することによって終わる。
段階2は、S[b×B(x),x]内の1の数n(R)を算出することを伴い、Sのサブストリングは、位置xを収容するブロックB(x)に対応する。第2の標的ライブラリLは、2進ストリングSを表し、したがってS内の対応する位置のビット値が1に等しい場合、識別子が物理的に存在し、すなわちS[x]=1の場合かつその場合に限り、id[x]が存在する。段階1は、位置xを含む位置xまでのS内のブロックB(x)の位置に対応する、範囲R=(id[b×B(x)],id[x])内の第2のライブラリLの識別子をフェッチする照会木Qを作成することを伴う。Qは、約lognの深さおよび約cLのサイズ、すなわち深さにファンアウトを掛けた値を有する。次いで段階1はX=access(L,R)(範囲R内のLの識別子にアクセスする)、次いでread(X)という2つの演算を介して、Rによって境界が定められたSのサブストリングを構成するビットを読み取るアクセスプログラムを作成することを伴い、ここでXは、アクセス演算を介して取得される識別子のサブセットである。アクセスプログラムによって取り出される識別子は、Rによって境界が定められたSのサブストリング内の1ビットの位置を示す。段階2は、取り出された識別子の数に等しいn(R)を設定することによって終わる。ランク演算は、それぞれ段階1および2から値n(C)+n(R)を返すことによって完了し、ここでランクは、0から位置xの範囲におけるS内の1ビットの数である。
図24は、例示的な実装形態によるビットストリング上でランク演算を実行する流れ図2400を示す。流れ図2400の方法では、図23に関して上述した方法ならびに段階1および2による概略的なケースを使用することができる。ステップ2402で、上記のSなどのビットストリングを表す識別子の第1のプールが取得される。ステップ2404で、上記のCなどのカウンタシンボルストリングを表す識別子の第2のプールが取得される。ステップ2406で、特定の値のビットのランニングカウントを示す識別子を標的とするように、連続することができる第2の一連のプローブを使用して第2のプールにアクセスすることによって、第1のカウントが取得される。所与の値のビットの数のランニングカウントを示すカウンタシンボルを表す標的とされた識別子は、(1)特定のビットに先行するw個のビットのすべてのブロック、または(2)特定のビットを含むw個のビットのブロックを含む、特定のビットに先行するw個のビットのすべてのブロックのいずれかに対して取得される。ステップ2408で、識別子を標的とするように、連続する第1の一連のプローブを使用して第1のプールにアクセスすることによって、第2のカウントが取得される。標的とされた識別子は、(1)特定のビットに先行しもしくは特定のビットを含む、ステップ2406で計数されていないビットを表す、または(2)ステップ2406で計数されたが特定のビットに先行しないもしくは特定のビットを含まないビットを表す。ステップ2410で、第1のカウントおよび第2のカウントから、ビットストリング内の特定のビットのランクが取得される(たとえば、カウントの和または差を判定することによる)。
ビットストリング内の各ビットは、ビット値およびビット位置を有する。各プールは、固体、液体、または固体の形態を有することができ、複数の識別子核酸分子を形成することによって形成される。各識別子は、それぞれのビット位置に対応し、M個の選択された成分核酸分子を物理的に組み立てることによって形成される。M個の選択された成分の各々は、M個の異なる層に分離された別個の成分核酸分子のセットから選択される。識別子は、ビットストリングを表すように、第1のプール内に収集することができ、したがってビット値は、第1のプール内の対応する識別子の有無によって示される。同様に、識別子の第2のプールは、各々カウンタストリング内のビットを表す識別子を収集することによって形成される。いくつかの実装形態では、第1のプールは第2のプールと同じであり、他の実装形態では、第1のプールおよび第2のプールは別個である。
いくつかの実装形態では、第1のプール内の対応する識別子の物理的な存在は、ビット値1を示し、対応する識別子の物理的な不在は、ビット値0を示す。各カウンタシンボルは、b個のカウンタビットのストリングによって表すことができ、bは、関数log(n+1)の上限によって判定することができ、ここでnはビットストリングの長さである。b個のカウンタビットの各ストリングは、特有の値、たとえば1または0を有するビットストリング内のすべてのw個のビットに対するビットの数のランニングカウントを表すことができる。カウンタシンボルストリングは、nをwで割った上限個のカウンタシンボルを含むことができ、長さnを有するカウンタビットのストリングによって表される。いくつかの実装形態では、初期カウンタシンボルは、値0を有し、これは、すべて値0を有するb個のカウンタビットのストリングによって表される。特定のビットが、w個のビットの第1のブロック内にある場合、w個のビットの第1のブロックに先行するランニングカウントは0である。
第1および第2のカウントは、本明細書に記載する読取り演算に従って、各照会から標的とされた識別子を読み取ることによって取得される。たとえば、第1のカウントは、2406で標的とされた識別子に対応するカウンタシンボル値を読み取ることによって取得され、または第2のカウントは、2408で標的とされた識別子を読み取ることによって取得される。いくつかの実装形態では、各ストリングの第1の索引は、0に等しく設定される。ステップ2408で第1のカウントを取得するために使用されたカウンタシンボルは、範囲0~w×B(x)-1内で値1を有するビットストリング内のビットの数に対応することができ、ここでxはビットストリング内の特定のビットの位置に対応し、B(x)はxをwで割った下限である。第2のプールから少なくともb個の識別子を標的とすることができ、標的の少なくともb個の識別子は、範囲b×B(x)~b×(B(x)+1)-1内とすることができる。
いくつかの実装形態では、第2のカウントは、範囲w×B(x)~x内で値1を有するビットストリング内のビットの数に対応し、ここでxはビットストリング内の特定のビットの位置に対応し、B(x)はxをwで割った下限である。ステップ2408で、特定のビットを含むw個のビットのブロックに対応するカウンタシンボルを表す第2のプールから照会された識別子を標的とすることによって、第1のカウントを取得することができ、ステップ2412で、2408で計数されたが特定のビットに先行しないまたは特定のビットを含まないビットを表す2410で標的とされた固有の識別子を標的として計数することによって、第2のカウントが取得される。したがって、2414で、第1のカウントから第2のカウントを引くことによって、ランクが取得される。
いくつかの実装形態では、カウンタストリングブロックサイズwを、ビットストリングブロックサイズbに等しく設定することができる。別法として、カウンタストリングブロックサイズwを、1に設定することができる。2408の第1のカウントは、特定のビットを含むw個のビットのブロックに対応するカウンタシンボルを表す2406で第2のプールで照会された識別子を標的とすることによって取得することができ、ランクは第1のカウントと同等である。したがって、ステップ2412および2414をこの方法から省略することができる。
いくつかの実装形態では、識別子核酸の第1のプールは、ビットストリングの変換を表し、したがって識別子の有無は、ビットストリング内のいずれのビット値とも直接相関しないが、コードワードと呼ばれる隣接して順序付けられた識別子のブロックは、ビットストリング内のビットのブロックに変換させることができる。コードワードは、固定の数の可能な固有の識別子核酸分子からの、固定の数の固有の識別子核酸分子の存在を含む。追加の情報を使用して、第1および第2のプールからの識別子核酸分子の書込み、アクセス、および読取りのエラーを検出および補正することができる。前記追加の情報は、第1および第2のプールの識別子に記憶される。
いくつかの実装形態では、2406の第1のカウントは、特定のビットに先行するw個のビットのすべてのブロックを表し、2408の第1の一連のプローブは、特定のビットに先行しまたは特定のビットを含む、2406で計数されていないビットを表す第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とし、2410で第1および第2のカウントを合計することによって、ビットストリング内の特定のビットのランクが取得される。他の実装形態では、2406の第1のカウントは、特定のビットに先行し、特定のビットを含むw個のビットのブロックを含む、w個のビットのすべてのブロックを表し、第1の一連のプローブは、2406で計数されたが特定のビットに先行しないまたは特定のビットを含まないビットを表す第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とし、2410で第1のカウントから第2のカウントを引くことによって、ビットストリング内の特定のビットのランクが取得される。
いくつかの実装形態では、S内で読み取るべき2進ブロックのサイズが調整される。ブロックサイズを増大させることで、C内のカウンタの数を低減させ、したがってCの長さを低減させる。たとえば、wをS内の2進ブロックの長さとして設定することによって、Cの長さは約(n/w)log(n)になり、wは段階2でread(X)からフェッチされたビットの量である。上記の分解では、wをlog(n)にほぼ等しく設定することによって、Cのサイズは、Sのサイズnより小さくまたはそれに等しくなるように選択された。
方法2400によって説明したランク演算は、2進ビットストリングに注目しているが、方法2400はまた、シンボルストリングにも適用することができることを理解されたい。いくつかの実装形態では、ビットストリングは、シンボルストリングを表し、ランクは、シンボルストリング内の特定のシンボルに対して取得される。シンボルストリング内のシンボルは、シンボル値のセットから選択され、2404のカウンタシンボルストリングは、特定のシンボル値を有するシンボルの数のランニングカウントを示す。いくつかの実装形態では、2404で識別子の複数の第2のプールが取得され、各第2のプールは、特有のシンボル値のインスタンスの数を計数するカウンタシンボルの異なるストリングを表し、カウンタシンボルの異なる各ストリングが、特有のシンボル値に対応するインスタンスを計数する。
図23の上記の例では、別法として、S内の0ビットの数を計数することによって、任意の2進ランク演算を実行することができ、この演算は、rank(x)によって示される。rank(x)は、rank(x)=x-rank(x)+1として算出することができる。シンボル値のセットから選択されたシンボルストリング上でランク演算を実行して、シンボルストリング内の特定のシンボルに対するランクを取得することもできる。たとえば、カウンタシンボルストリングは、特有のシンボル値を有するシンボルの数のランニングカウントを示す。ステップ2404で、異なる識別子プールは、特有のシンボル値のインスタンスの数を計数するカウンタシンボルの異なるストリングを表し、カウンタシンボルの異なる各ストリングが、対応する特有のシンボル値のインスタンスを計数する。
いくつかの実装形態では、ランク演算が大きいビットストリング(たとえば、大きい入力メッセージ)上で実行される場合でも、所与のランク演算を実行するために読み取らなければならない識別子の数は非常に小さい。たとえば、テラビットサイズのメッセージ内の特定のビットのランク付けは、構成に応じて、わずか40~100個の識別子を読み取ることを伴う。この少量の識別子によって、より高い関連コストを有するDNAシークエンシングのようなより高処理量の方法を使用するのではなく、DNAマイクロアレイまたはPCR(たとえば、qPCRまたはデジタルPCR)などの低処理量のハイブリダイゼーション方法によって、読取りを実行することができる。
本明細書に記載するDNAに基づく記憶システム上で実行することができる別の演算はフェッチ演算であり、これはたとえば、整数アレイを取り扱うためにカウンタアレイCから1つのエントリを取り出す上記のプロセスを拡大することによって行われる。各々bビットからなるn個の整数のアレイを考慮すると、アレイは、固定サイズbの表現でn個の整数を直列化することによって、2進ストリングに変換することができる。変換された2進ストリングは、直列化が長さn×bの2進ストリングをもたらすため、A[0,nb-1]として表される。Aは、本明細書に記載する方法によって符号化された識別子プールLによって表され、ここで各識別子は、Aで1のビット値に対応する場合、物理的に構築される(すなわち、A[x]=1の場合かつその場合に限り、id[x])。フェッチ演算は、範囲[x,y]内に生じる整数を返すfetch(x,y)として定義され、範囲およびストリング長さによって判定された位置(すなわち、i=x、...、yの場合は位置i×b)で始まる長さbの2進ストリングによって表される。フェッチ演算は、第1の位置xbおよび最後の位置(y+1)b-1によって境界が定められたAのサブアレイを表すLの識別子にアクセスする。フェッチ演算は、1つのアクセス演算および1つの読取り演算からなるアクセスプログラムによって実施される。
フェッチ演算のためのアクセスプログラムは、次のように実行することができる。標的ライブラリLは、上述した2進ストリングAを表す。上述したように、第1の位置xbおよび最後の位置(y+1)b-1によって境界が定められた範囲R(すなわち、R=(id[x×b],id[(y+1)b-1]))内の識別子を選択する照会木Qが作成される。範囲Rは、範囲x~yの位置(すなわち、[x,y])で生じる入力アレイ(直列化されていない整数アレイ)の整数を表すAのビットをちょうどすべて含む。本明細書に記載するアクセス方法によって、Rによって境界が定められたAのサブストリングがアクセスされ、本明細書に記載する読取り方法によって、そのサブストリング内に含まれる識別子が読み取られる。このアクセスプログラムは、lognbに等しい約logAの深さを有し、lognbに等しい約logAのサイズを有する。範囲Rは、(y-x+1)×b個のビットに等しいサイズを有する。アクセスプログラムによって取り出される識別子を使用して、入力整数アレイの範囲[x,y]内の位置で記憶されたy-x+1個の整数を再構築することができる。このフェッチ演算は、約(y-x)の実行時間で実行することができる。
図25は、例示的な実装形態によるシンボルストリング上でのフェッチ演算の実行のための流れ図を示す。上述した方法および論理を図25のこの方法で使用して、フェッチ演算を実行することができる。ステップ2502は、シンボルストリングを表す識別子の第1のプールを取得することを伴う。ステップ2504は、第1の一連のプローブを有する第1のプールにアクセスして、第1のプールからの識別子のサブセットを有する第2のプールを作成することを伴い、各プローブは、第1のプールの識別子の成分を標的とする。ステップ2506は、第2のプール内の識別子のサブセットの配列を読み取ることを伴う。ステップ2508は、読み取った配列を使用して、シンボルストリングのサブセットを取得することを伴う。
シンボルストリングでは、各シンボルが、シンボル値およびシンボル位置を有する。いくつかの実装形態では、ステップ2502は、複数の識別子核酸分子を形成することを伴い、各識別子がそれぞれのシンボル位置に対応し、M個の選択された成分核酸分子を物理的に組み立てることによって形成される。M個の選択された成分の各々は、M個の異なる層に分離された別個の成分のセットから選択される。各層の成分は、図13に関連して説明したように、論理的に順序付けることができる。識別子は、シンボルストリングを表すようにプール内に収集することができ、したがってシンボル値は、前記プール内の対応する識別子の有無によって示される。
いくつかの実装形態では、ステップ2504で、第1の一連のプローブは連続しており、成分のM個の層を表す照会木内の下向きの部分パスまたはフルパスに対応する。下向きのフルパスは、M個のプローブを含む根から葉までのパスに対応し、したがって連続する一連のM個のプローブは、単一の識別子を標的とする。下向きの部分パスは、M個未満のプローブに対応し、したがって連続する一連のプローブは、異なる配列を有する識別子の複数の母集団を標的とする。異なる配列を有する識別子の複数の母集団は、少なくとも第Mの層内の異なる成分に対応することができる。
いくつかの実装形態では、ステップ2504で、第1のプールを照会することは、第1の連続する一連のプローブのうちの第1のプローブを使用して、第1のプール内の第1の層に第1の成分核酸分子を捕捉することと、第1のプールを別個のコンパートメント内の少なくとも2つのプールに分離することと、追加のプローブを使用して、少なくとも2つのプール内の第2の層に成分核酸分子を捕捉することとを伴う。第1の連続する一連のプローブは、サブセットを含むシンボルストリングの望ましい部分を取得するように設計することができる。望ましい部分は、ステップ2504で取得したサブセットに密接に対応することができる。
いくつかの実装形態では、ステップ2502で取得した第1のプールは、少なくとも2つの複製プールに分割され、ステップ2504~2508は、前記複製プールの各々で実行される。第1のプールは、少なくとも2つの複製プールに分割される前に複製することができる(たとえば、PCRを介して)。ステップ2504のプローブは、PCRプライマーとすることができ、アクセスはPCRによって実行される。別法として、ステップ2504のプローブは、親和性タグ付きオリゴヌクレオチドとすることができ、アクセスは親和性プルダウンアッセイによって実行される。いくつかの実装形態では、方法2500は、プローブのサブシリーズによって、識別子の第1のプールにアクセスし、識別子の中間プールを作成することをさらに含む。中間プールは、少なくとも2つの複製プールに分割することができる。プローブの後続のサブシリーズによって第1の中間プールにアクセスして、第2の中間プールまたは第2のプールを形成することができる。少なくとも2つの中間プールを組み合わせて、別の中間プールを形成することができる。
いくつかの実装形態では、フェッチ演算は、識別子の読取りのためにDNAマイクロアレイまたはPCR(たとえば、qPCRまたはデジタルPCR)のようなハイブリダイゼーションに基づく手法を使用する。たとえば、標的とされた識別子が少量である場合、低処理量の方法を使用するとより費用効果を高くすることができるが、識別子の大きいサブセットが読み取られる場合、高処理量の読取りのために、DNAシークエンシングを使用することができる。
核酸分子に記憶されたデータのパターン探索
上述したように、DNAに基づくプラットホーム上で実行することができる別の演算は、ストリングのBWTに依拠するカウント演算およびランク演算である。カウント演算の基本は、並列に実行することができる2つのランク演算を使用することである。なぜなら、各ランク演算がBWTおよびカウンタアレイの異なる部分を要求し、またはこれらの部分が重複し、それらの演算の結果を再利用するようにそれらの実行を構築することができるからである。BWT、カウンタアレイ、およびランク演算を導入する探索方法について、以下に説明する。
データ構造は本明細書に記載するシステムで実施可能であり、カウント演算を実行して、ストリングにおけるパターンPの発生の数を計数することができる。このカウント演算について、図26~図30に関連して説明する。カウント演算の基本は、並列に実行することができる2つのランク演算を使用することである。なぜなら、各ランク演算がBWTおよびカウンタアレイの異なる部分を要求し、またはこれらの部分が重複し、それらの演算の結果を再利用するようにそれらの実行を構築することができるからである。パターン発生の取出しは、必ずしも2進探索を介して実施されないが、本明細書に記載するシステムは、BWT、カウンタアレイ、およびランク演算を導入する探索方法を使用することができる。これらの演算/データ構造は、圧縮された形で記憶しながら、それでもなおエントリの取出しを可能にすることができる。
カウント演算は、たとえばメッセージのBurrows-Wheeler変換行列の最後の列であるビットストリングLを表す識別子の第1のプールを取得することによって実行することができる。各識別子は、本明細書に記載する方法によって組み立てられており、1つまたは複数のプローブに個々に結合することが可能である。ビットストリングLから導出されたカウンタシンボルストリングを表す識別子の第2のプールが取得され、これは特有のビット値を有するビットの数のランニングカウントを表す。メッセージ内の特定のビットパターンのカウントは、第1および第2のプールからの識別子に選択的にアクセスすることによって取得される。一連のプローブを使用して、第1および第2のプールからの識別子にアクセスする。ランニングカウントを使用して、たとえば後述するLFマッピングを使用することによって、BWT行列の第1の列Fを再構築することができる。
図26は、例示的な実装形態による2進ビットストリングSにおける特定のパターンPの発生の数を計数するカウント演算方法2600のための流れ図を示し、2進ビットストリングSは、たとえば、メッセージまたは他の形態の情報とすることができる。SのBWT Lは、第1のプール内の識別子によって表現を介して記憶される。ステップ2602は、BWT Lを表す識別子の第1のプールを取得することを伴う。ステップ2604で、識別子の第2のプールが取得され、第2のプールの識別子は、Lから導出されたカウンタシンボルストリングを表す。ステップ2606で、本明細書に記載する方法を使用して第2のプールの識別子にアクセスして、L内のビット値1の発生の総数を示すカウンタシンボルを表す識別子を取り出す。ステップ2608は、取り出した識別子からカウンタシンボル値を読み取って、L内の各ビット値の発生の総数(たとえば、2進ストリングに対する1または0の総数)を計数することを伴う。ステップ2610で、ステップ2608で計数した総数を使用して、Burrows-Wheeler行列の第1の列Fが構築される。ステップ2612で、パターンP内の最後のシンボル(すなわち、長さpのパターンに対する第pのシンボル)のすべての発生を示す第1の列F内の範囲の索引を判定することを伴う。ステップ2614は、第1および第2のプールからの識別子にアクセスして、範囲の第1および最後の索引hおよびzにおけるランクを計算することを伴い、これらのランクは、パターンP内で範囲のシンボル(すなわち、P内の第(p-i)のシンボル、ここでループカウンタiは最初に1に等しい)に先行するシンボルの値に対して判定される。ステップ2616で、各索引におけるランクを使用して、先行するシンボル(第(p-i)のシンボル)の値が生じる第1の列F内の新しい範囲の索引を計算する。決定ブロック2618で、ランクrh-1およびrを比較して、これらが等しいかどうかを検査する。ランクが等しいと判定された場合(Y)、方法2600はステップ2620へ進み、ストリングS内にパターンPの発生が存在しないことを示す0のカウントを出力する。ランクが等しくない場合(N)、方法2600は決定ブロック2621へ進み、iがp-1(パターンの末端を示す)に等しいかどうかが検査される。iがp-1に等しい場合(Y)、方法2600はステップ2622へ進み、ここでパターンPのカウントがz-h+1であると判定される。iがp-1に等しくない場合(N)、方法2600はステップ2623へ進み、ここでループカウンタiが1だけ増分され、プロセスはステップ2614へ戻り、ステップ2614~2618を少なくとももう一度繰り返す。ステップ2612~2616は、Pの第1のシンボルに到達し、カウントがステップ2622で出力されるまで、またはストリングS内にパターンPの発生が存在しないと判定され、0のカウントがステップ2620で出力されるまで、繰り返される。
ビットストリング内の各ビットは、ビット値およびビット位置を有する。各カウンタシンボルは、直列化されたカウンタアレイであるカウンタシンボルストリング内に記憶することができる。各カウンタシンボルは、特有のビット値、たとえば「1」を有するビットストリングL内のすべてのw個のビットに対するビットの数のランニングカウントを示すb個のカウンタビットのストリングによって表すことができる。ステップ2612は、パターンPの第pのビット値の発生のF内の範囲を画定する第1の位置hおよび最後の位置zを判定することを伴うことができ、ここで範囲はhおよびzを含む。ステップ2614は、ストリングL内の位置h-1で、パターンPの第(p-i)のビット値のランクrh-1を計算することを伴うことができ、ここでループカウンタiは最初に1である。ステップ2614は、ストリングL内の位置zで、パターンPの第(p-i)のビット値のランクrを計算することをさらに伴うことができる。rh-1がrに等しい場合、メッセージ内のパターンの発生のカウントを0に設定することができる。ステップ2616は、hを第(p-i)のビット値のF内の第(rh-1+1)のインスタンスの索引に設定すること、およびzを第(p-i)のビット値のF内の第rのインスタンスの索引に設定することを伴うことができ、ここで新しいhおよびzは、新しい範囲を画定する。hおよびzが再計算された後、ループカウンタiを1だけ増分することができ、ステップ2614~2616が、i=p-1になるまで繰り返される。ステップ2614~2616の繰返しは、連続して実行することができ、または繰返しは、たとえば上記で説明した照会木最適化方法を使用して、並列反応で実行することができる。
各プールは、固体、液体、または固体の形態を有することができ、複数の識別子核酸分子を形成することによって形成することができる。各識別子は、それぞれのビット位置に対応することができ、M個の選択された成分核酸分子を物理的に組み立てることによって形成することができる。M個の選択された成分の各々は、M個の異なる層に分離された別個の成分核酸分子のセットから選択することができる。識別子は、ビットストリングを表すように、第1のプール内に収集することができ、したがってビット値は、第1のプール内の対応する識別子の有無によって示される。同様に、識別子の第2のプールは、各々カウンタストリング内のビットを表す識別子を収集することによって形成することができる。いくつかの実装形態では、第1のプールは第2のプールと同じであり、他の実装形態では、第1のプールおよび第2のプールは別個である。
いくつかの実装形態では、第1のプール内の対応する識別子の物理的な存在は、ビット値1を示し、対応する識別子の物理的な不在は、ビット値0を示す。各カウンタシンボルは、b個のカウンタビットのストリングによって表すことができ、bは、関数log(n+1)の上限によって判定することができ、ここでnはビットストリングの長さである。b個のカウンタビットからなる各ストリングは、特有の値、たとえば1または0を有するビットストリング内のすべてのw個のビットに対するビットの数のランニングカウントを表すことができる。カウンタシンボルストリングは、nをwで割った上限個のカウンタシンボルを含むことができ、bにnをwで割った上限を掛けた値に対応する長さを有するカウンタビットのストリングによって表すことができる。いくつかの実装形態では、初期カウンタシンボルは、値0を有し、これは、すべて値0を有するb個のカウンタビットのストリングによって表される。いくつかの実装形態では、カウンタストリングブロックサイズwは、ビットストリングブロックサイズbに等しく設定することができる。カウンタストリングブロックサイズwは、1に設定することができる。いくつかの実装形態では、ステップ2602は方法2600から省略される。
いくつかの実装形態では、識別子の第1のプールは、L内のビットのブロックに変換された隣接して順序付けられた識別子のブロックに対応するコードワードを表すストリングLの変換を表す。第1のプール内の識別子の有無は、ビットストリング内のいずれのビット値とも直接相関しない。コードワードは、固定数の可能な固有の識別子からの、固定数の固有の識別子に対応することができる。追加の情報を記憶することができる。たとえば、第1および第2のプールからの識別子の書込み、アクセス、および読取りのエラーの検出および補正で使用するために、追加の情報を記憶することができる。追加の情報は、第1または第2のプールの識別子に記憶することができる。
単にビット値1または0などの長さ1のパターンの場合、ステップ2614~2618を省略することができる。「01」または「11」などの長さ2のパターンの場合、繰返しが必要とされないため、ステップ2618を省略することができる。方法は、第1の列F内の範囲が存在しないと判定された場合、方法を停止することをさらに伴うことができ、カウントは0として返される。範囲が存在しない場合、パターンPのシンボルはストリング内に存在せず、したがってPの発生は0である。
いくつかの実装形態では、識別子の第3のプールが取得され、第3のプール内の識別子は、BWTから導出された接尾辞アレイSAを表す。SAの各要素は、Lの対応する要素の索引を示す少なくともlog(n)個のビットのビットストリングによって表すことができる。方法2600は、カウントが0より大きいと仮定すると、範囲の索引の最終値hおよびzを含めて、hとzとの間の接尾辞アレイの要素に対応する第3のプール内の識別子にアクセスすることによって、パターンの発生を位置付けることをさらに伴うことができる。これらの索引は、発生のカウントが返されるときの最後の範囲の索引とすることができる。これらのステップは、フェッチ演算として実行することができる。
いくつかの実装形態では、方法2600は、たとえばメッセージとすることができるビットストリングSを表す識別子の第4のプールを取得することをさらに伴う。第1の場所および第1の場所を取り囲む隣接位置に対応する第4のプール内の識別子にアクセスすることによって、パターンPの第1の場所のコンテキストを抽出することができる。
図26に関連して説明した計数方法に対する代替として、図27は、例示的な実装形態によるストリングs内の2進パターンPの発生を計数するカウント演算のための方法2700について説明する流れ図を示す。パターンPは、長さpのビットを有し、ストリングsは、長さnのビットを有する。方法2700はまず、2702で、パターンPの最後のシンボルP[p-1]が0に等しいかどうかを検査するように条件付きの決定ブロックを伴う。最後のシンボルが0に等しい場合(Y)、ステップ2704で、第1の索引hが0(たとえば、Burrows-Wheeler行列の第1の列内の第1の位置)に等しく設定され、最後の索引zは、#0(ストリングs内の0の数)から1を引いた値に等しく設定される。この場合、第1および最後の索引hおよびzは、各々0から始まる接尾辞の範囲の境界を定めることができる。Pの最後のシンボルが0に等しくない場合(N)、ステップ2705で、第1の索引が#0に等しく設定され、最後の索引がn-1に等しく設定される。この場合、第1および最後の索引は、各々1から始まる接尾辞の範囲の境界を定めることができる。
方法2700は、ステップ2706で、ループカウンタiをp-2に等しく設定することをさらに伴う。このループカウンタは、発生が存在するまで(すなわち、第1の索引が最後の索引より小さいまたはそれに等しいとき)、方法2700がPを逆方向に走査することを可能にすることができる。2708で、決定ブロックが実施され、これは、第1の索引が最後の索引より小さいまたはそれに等しいこと、およびループカウンタiが0より大きいまたはそれに等しいことに関して条件付きである。決定ブロック2708の条件が満たされなかった場合(N)、ブロック2710で、出力カウントはz-h+1に等しいと判定される。決定ブロック2708の条件が満たされた場合(Y)、ステップ2711で、ストリングsのBurrows-Wheeler変換(BWT)上の第1の索引hに先行する索引(第1の索引から1を引いた値)で、シンボル値1に対して、第1のランクrh-1が実行される。BWT上の最後の索引zに等しい位置で、シンボル値1に対して、最後のランクrが実行される。
ステップ2712で、パターンPの第iのシンボルが0に等しいことに関して条件付きで、別の決定ブロックが実行される。条件が満たされた場合(Y)、ステップ2714で、第1の索引hは、現在の第1の索引から第1のランクrh-1を引いた値より1小さい値に等しくなるように再計算され、最後の索引zは、現在の最後の索引から最後のランクrを引いた値より1小さい値に等しくなるように再計算される。ステップ2714で、新しい第1の索引hは、BWT上の現在の第1の索引に先行する索引で、シンボル値0に対して、現在の第1の索引とランクとの差として計算することができ、新しい最後の索引zは、BWT上の現在の最後の索引で、シンボル値0に対して、現在の最後の索引とランクとの差として計算することができる。決定ブロック2712の条件が満たされない場合(N)、これはパターンPの第iの値が1であることを意味し、ステップ2715で、第1の索引hは、s内の0の数と第1のランクrh-1との和に等しくなるように再計算される。最後の索引zは、s内の0の数と最後のランクrとの和より1小さい値に等しくなるように再計算される。ステップ2716で、ループカウンタは1だけ減分され、方法は決定ブロック2708へ戻る。ブロック2708の条件がまた満たされる場合、ステップ2711~2716は繰り返される。
方法2700は、ステップ2711で、1ビットに対するランク演算、したがって表記rankを特別に実行する。これは、方法2600がランク演算をどのように実行するかとはわずかに異なり、方法2600では、パターンP内の先行するビット値に対してランクが判定される。しかし、ビット値1に対する位置xのランクrank(x)は、以下の等式によって、ビット値0に対する位置xのランクrank(x)に容易に変換することができるため、どちらの方法も同じ結果をもたらす。
rank(x)=x-rank(x)+1 等式2
rank(x)=x-rank(x)+1 等式3
したがって、ステップ2711は、別法として、rankを実施することができる。
図27の方法2700のステップ2711は、2つのランク演算の実行を伴う。このステップについて、例示的な実装形態による2つのアクセス演算および2つの読取り演算を介して2つのランク演算を並列に実行する方法2711として、図28でさらに詳細に説明する。図28の方法2711は、方法2700の決定ブロック2708に従って繰返し実行される。方法2711は、図18および図19に関連して説明した例示的な符号化方式からの特定のパラメータを使用するが、代替のパラメータを有する他の符号化方式をこれらの方法に適用することもできることを理解されたい。
方法2711のステップ2802は、パラメータxを現在の第1の索引(アルゴリズム1から)より1小さい値に等しく設定することを伴う。ステップ2802は、qfirst BWTを、xを96(各コンテナに符号化されたビットの数)で割った値の下限(それより小さい最大の整数)に等しく設定することをさらに伴い、ここでqfirst BWTは、BWTを記憶するライブラリ内のコンテナの索引であり、特有のコンテナは、BWTの第xのビットを記憶する。パラメータrfirst BWTが、xおよび96の係数(残余)に等しく設定され、ここでパラメータは、そのコンテナ内の第xのビットのオフセットを示す。カウンタアレイcに対して、類似のパラメータが算出される。qfirst は、qfirst BWTの下限を7(1つのコンテナ当たりのカウンタの数)で割った値に等しく設定され、ここでqfirst は、cの第qfirst BWTのカウンタを含むcを記憶するライブラリ内のコンテナである。rfirst は、カウンタのそのコンテナ内のオフセットを示すqfirst BWTおよび7の係数に等しく設定される。
方法2711のステップ2804は、パラメータyを最後の索引(アルゴリズム1から)に等しく設定すること、ならびにqlast BWT、rlast BWT、qlast 、およびrlast によって示されるパラメータyに対して、ステップ2802と同じBWTおよびカウンタアレイのパラメータを設定することを伴う。ステップ2804は、BWTの第xのビットを含むコンテナおよびそのコンテナの前の1のカウンタを含むコンテナを識別する照会Qfirst,BWTおよびQfirst,Cを作成することを伴う。これらの照会はコンテナを識別し、したがって照会は、それぞれ塩基3の7桁におけるqfirst BWTおよび塩基3の7桁におけるqfirst を表す成分を有する2つのパスとすることができる。ステップ2806は、それぞれqfirst BWTおよびqfirst に関して特殊化された照会Qlast,BWTおよびQlast,Cを同様に作成することを伴う。ステップ2808は、BWTを記憶する標的ライブラリに対して合同でQfirst,BWTおよびQlast,BWTの第1のアクセス演算(論理OR)、ならびにカウンタアレイcを記憶する標的ライブラリに対して合同でQfirst,CおよびQlast,Cの第2のアクセス演算を、並列に実行することを伴う。いくつかの実装形態では、合同の照会は各々7つの成分の4つのパスとすることができ、πは2に等しい(たとえば、PCRの場合)ため、これらのアクセス演算は、各々多くとも2つのコンテナ(これらが等しい場合は1つのコンテナとすることもできる)を取り出し、16個のアクセサ(7の上限を読取りに対する技術的制限πで割った値に4を掛けた値)を必要とする。ステップ2810は、アクセス演算によって選択された識別子のセットを併合すること、およびこれらのセットを読み取ることを伴う。いくつかの実装形態では、これらの識別子は、4つ以下のコンテナ内に含まれ、各コンテナは、28個以下の識別子を含み、したがってこれらは多くとも合計4×28=112である。
ステップ2812は、パラメータnfirst BWTで、Qfirst,BWTに等しい長さ7成分の先導パスと、rfirst BWTより小さいまたはそれに等しい最後の成分とを有する識別子の数を計数することを伴う。同様に、パラメータnlast BWTは、Qlast,BWTに等しい長さ7成分の先導パスと、rlast BWTより小さいまたはそれに等しい最後の成分とを有する識別子の数に等しく設定される。ステップ2814は、パラメータnfirsを、qfirst に等しい長さ7成分の先導パスを有する識別子を記憶するコンテナ内の第rfirst のカウンタに対応する値に等しく設定することを伴う。パラメータnlast も同様に設定される。ステップ9で、出力、第1のランクRFが、nfirst BWTおよびnfirst の和に等しく設定され、別の出力、最後のランクRLが、nlast BWTおよびnlast の和に等しく設定される。
第1および最後の索引によって境界が定められた範囲R内のストリングsの接尾辞上に構築された接尾辞アレイsa[0,n-1]内に存在する発生の取出しに関して、フェッチ演算は、接尾辞アレイを記憶するライブラリに対して、それらの発生を収容するコンテナと同程度の長さ7成分のパスを指定することによって実施することができる。符号化方式の例では、すべてのコンテナが、7つの接尾辞位置を含み、したがって2+(最後の索引-第1の索引+1)/7以下のパスによって、フェッチ演算を実行することができる。これらのパスは、コンテナの連続する範囲を識別することができるため、成分を共用することができる。必要とされるより多くの識別子を取り出すスーパークエリを実施して、後処理算出段階への識別子のフィルタリングを遅らせることができる。最小整数zは、(最後の索引-第1の索引+1)より大きい3×7に等しいサイズS(z)を画定することができ、ここでzは0、1、...、7に等しい。範囲Rは、サイズS(z)の多くとも2つの範囲によって含むことができ、これらは、(7-z)個の成分からなる2つの部分パス照会によって画定することができる。スーパークエリは、(7-z)/πの上限に等しい数のアクセサによって、場合により1つの複製演算によって実行することができ、パターン発生の上位セットを得ることができる(7より多い発生の場合、乗法因子3による)。次いで、2つの照会に由来する識別子の併合に対して、読取り演算を実行することができる。
ここまで、カウント演算について、2進ストリングを使用する例で説明してきたが、カウント演算は、任意のストリングを記憶するDNAで実施することもできる。任意のアルファベットから引き出されるストリングsが、図16および図17に示すBurrows-Wheeler変換および接尾辞アレイに対する基本として働いた。ストリングBWT(s)および追加のデータ構造を活用することによって、本開示は、任意のアルファベットから引き出されたパターンの探索を提供する。図29は、例示的な実装形態による任意のシンボルストリング上でカウント演算を実行する方法2900のための流れ図を示す。ステップ2902は、識別子の第1のプールを取得することを伴い、識別子は、シンボルストリング(s)のBurrows-Wheeler変換L(BWT行列の最後の列)を表し、ここでシンボルストリング内の各シンボルは、シンボル値のセットから得られる。ステップ2904は、識別子の第2のプールを取得することを伴い、各第2のプールは、BWT(s)Lから導出されたカウンタシンボルストリングを表し、特定のシンボル値を有するL内のシンボルの数のランニングカウントを表す。ステップ2906は、第1のプールおよび第2のプールセットからの識別子に選択的にアクセスすることによって、シンボルストリング内の特定のシンボルパターンのカウントを取得することを伴う。方法2900に続いて、2進ストリングに関して図26~図28に説明した方法を、ビットストリングおよび対応するカウンタストリングを表すプールの各対に適用することができる。
たとえば、ステップ2906は、sに対するBurrows-Wheeler変換行列の第1の列Fを再構築することを伴うことができる。一連のプローブを使用して、L内の対応する各シンボル値の発生の総数を表す第2のプールの各々の最後のカウンタシンボルから、識別子にアクセスすることができる。対応する各シンボル値の発生のこの総数を使用して、Fを再構築することができる。Fが分かると、2906は、長さpを有するパターン内の最後(第p)のシンボル値を有するF内の位置の範囲を判定することをさらに伴うことができる。F内の位置の前記範囲は、第1の位置hおよび最後の位置zによって、hおよびzを含めて画定される。
ステップ2906は、第pのシンボル後のパターン内の先行する各シンボルに対して、一連のプローブを使用して、範囲にすぐ先行する位置におけるL内の対応するシンボル値の第1のランク、および範囲の末端の位置におけるL内の対応するシンボル値の第2のランクを判定して、第1のプールおよび対応する第2のプールからの識別子核酸分子にアクセスすることと、第1のランクおよび第2のランクを使用して、パターン内の後続のシンボルに先行する対応するシンボルのインスタンスを有するF内の位置の範囲に、範囲を更新することとをさらに含むことができる。第1のランクrh-1は、L内の位置h-1におけるパターン内のそれぞれの先行するシンボル値であり、第2のランクrは、L内の位置zにおけるパターン内のそれぞれの先行するシンボル値である。範囲を更新することは、F内のパターン内のそれぞれの先行するシンボル値の第(rh-1+1)のインスタンスの位置にhを設定すること、およびF内のパターン内のそれぞれの先行するシンボル値の第rのインスタンスの索引にzを設定することを含む。パターンの発生のカウントは、第1および第2のランクまたは第1および最後の索引の最終値に基づいて設定することができる。たとえば、カウントは、第1および第2のランクの最終値間の差である。第pのシンボルまたはあらゆる先行するシンボルに対して、第1および第2のランクが互いに等しい場合、カウントは0に設定される。
シンボルストリングLは、Lの長さに等しい長さのr個のビットストリングに変換することができ、ここでrは、シンボル値のセット内のシンボル値の数を表す。1つのビット値(たとえば、1)でL内のRのすべての発生を表し、他のビット値(たとえば、0)ですべての他のシンボル値の発生を表すことによって、v=1、2、...、rの場合、各シンボル値Rに対して、ビットストリングLを作成することができる。たとえば、シンボルストリングS=「BABBO」を考慮すると、ビットストリングS=01000、S=10110、およびS=00001を作成することができる。すべてのビットストリングの中の1の総数は、元のシンボルストリングの長さに等しい。いくつかの実装形態では、r個の第1のプールが存在し、各々ビットストリングLに対応する。Lに対応する第1のプールを使用して、パターン内のシンボル値Rの第1および第2のランクを判定することができる。
カウンタシンボルは、各ビットストリングから導出することができ、したがって各カウンタシンボルは、特有のビット値(たとえば、1)を有する対応するビットストリング内のすべてのw個のビットに対するビットの数のランニングカウントを示すb個のカウンタビットのストリングによって表される。いくつかの実装形態では、wの値は、bの値に等しく設定される。他の実装形態では、wは1の値に設定される。
各プールは、固体、液体、または固体の形態を有することができ、複数の識別子核酸分子を形成することによって形成することができる。各識別子は、それぞれのビット位置に対応することができ、M個の選択された成分核酸分子を物理的に組み立てることによって形成することができる。M個の選択された成分の各々は、M個の異なる層に分離された別個の成分核酸分子のセットから選択することができる。識別子は、ビットストリングを表すように、第1のプール内に収集することができ、したがってビット値は、第1のプール内の対応する識別子の有無によって示される。同様に、識別子の第2のプールは、各々カウンタストリング内のビットを表す識別子を収集することによって形成することができる。いくつかの実装形態では、第1のプールは第2のプールと同じであり、他の実装形態では、第1のプールおよび第2のプールは別個である。
識別子のプールは、識別子の有無がL内のいずれのビット値とも直接相関しないが、v=1、2、...、rの場合、コードワードと呼ばれる隣接して順序付けられた識別子のブロックを、L内のビットのブロックに変換させることができるように構成することができる。コードワードは、固定数の可能な固有の識別子からの、固定数の固有の識別子に対応することができる。追加の情報を記憶することができる。たとえば、第1および第2のプールからの識別子の書込み、アクセス、および読取りのエラーの検出および補正で使用するために、追加の情報を記憶することができる。追加の情報は、第1または第2のプールの識別子に記憶することができる。
いくつかの実装形態では、方法2900は、BWTから導出された接尾辞アレイSAを表す識別子のプールを取得することをさらに伴う。SAの各要素は、Lの対応する要素の索引を示す少なくともlog(n)個のビットのビットストリングによって表すことができる。方法2900は、カウントが0より大きいと仮定すると、接尾辞アレイを表すプール内の識別子にアクセスすることによって、パターンの発生を位置付けることをさらに伴うことができる。これらのステップは、フェッチ演算として実行することができる。いくつかの実装形態では、方法2900は、たとえばメッセージとすることができる任意のストリングを表す識別子のプールを取得することを伴う。第1の場所および第1の場所を取り囲む隣接位置に対応する第4のプール内の識別子にアクセスすることによって、パターンPの第1の場所のコンテキストを抽出することができる。
サイズ|Σ|の任意のアルファベットΣから引き出された長さnのシンボルのストリングsを考慮する。図16および図17に示す「abracadabra$」というストリングは、そのような任意のストリングの一例である。図29に関連して説明した前述の方法では、ストリングs内の長さpのパターンPの探索は、ストリング接頭辞s[0,x](第1の索引から索引xまでのストリングsのサブセット)内のシンボルσの発生を計数する概略的なrankσ(x)演算の実装を介して、sのBWTの接頭辞内のシンボルを計数することに依拠することを論じた。この方法は、探索されるパターン内のシンボルと同数のrankσ演算を実行する必要がある。なぜなら、ビット値「1」を有する2進ストリングSσの特性に対して1つのrank(x)演算を実行することによって、rankσ(x)を実施することができるからであり、ここでsはシンボルσを有する。
以下の実験例は、より少ないrankσ演算を実行すること、および低い重みのコードブックで機能する手法を利用することを目的とする。この実装形態は、パターンPの探索におけるシンボルのグループ化を活用し、アルファベットを事実上拡大し、繰返しの数を低減させる。
この例では、ストリングS[0:n-1]は次のように画定される。kは、1から始まり、ストリング長さnによって上限が制限される整数パラメータであり、マクロシンボルS[i]は、BWTを含む行列内の第iの行の最後のk個のシンボルを占有するサブストリングである。各ストリングSは、n×kバイトに記憶することができる。この例では、「abracadabra$」という入力ストリングを使用して、以下のサブストリングが得られる。Sは、BWT行列内の行の最後のk=1個のシンボルがちょうど最後の列L、すなわちBWT(s)であるため、sのBWT、すなわちBWT(s)である。Sは、最後のk=2個のシンボルが各行から得られるため、「ra br ad a$ br ac da $a ra ca ab ab」に等しい。読みやすくするために空間が含まれており、2個のシンボルの各グループは、固有の「マクロシンボル」であると考えられる。したがって、マクロシンボルS[3]は「a$」であり、Sは、各々2つの文字を有するn=12個のマクロシンボルからなり、合計24バイトである。Sは、最後のk=3個のシンボルが各行から得られるため、「bra abr cad ra$ abr rac ada a$a bra aca dab $ab」に等しい。Sは、各々3つの文字を有する12個のマクロシンボルからなり、合計36バイトである。これらのストリングは、各kに対して最大nまで繰返し構築することができる。
個のストリングは、必ずしも明示的に構築されるとは限らず、次のように導出することもできる。新しいストリング
Figure 2022531790000003
は、
Figure 2022531790000004
がS[i][1]に等しくなるように画定することができ、これは、Sのすべてのマクロシンボルに対して、マクロシンボルの第1のシンボル、したがってBWT行列内の最後の列Lから距離kをあけたシンボルのみが維持されることを意味する。S[i]の第iのマクロシンボルは、すべてのストリングの第iの(単一の)シンボル
Figure 2022531790000005
を連結することによって得られる。低減された空間占有率は、各Sによって記憶されるk×n個のシンボルより少ないn個のシンボルのみを記憶する
Figure 2022531790000006
によって与えられる。
パターン探索の場合、S個のストリングにわたってrankα演算を実行しなければならず、ここでαは、長さkのシンボルのマクロシンボルである。符号化方策は、
Figure 2022531790000007
個のストリングの単一のシンボルに対して実施することができ、この方策は、シンボルストリング「BABBO」に対する上記の例を模倣する。具体的には、
Figure 2022531790000008
個のストリングが、各々b個のコンテナのブロックに区画化される(実験例では、各コンテナが、12バイト、したがってsの12シンボルを符号化する)。カウンタcα は、
Figure 2022531790000009
内のその第kのブロックまで、すべてのマクロシンボルαの発生の数に対して維持される。S内で生じるマクロシンボルα’<αの総数を、カウンタcα に加えることができる。この特徴は、発生の数とともに追加のカウンタアレイCを記憶する必要がないことを可能にすることができる。1つのブロック当たり、多くとも|Σ|個のカウンタが存在することができる。
いくつかの実装形態では、長さkのすべてのサブストリングαがs内で生じるとは限らず、したがってcα に記憶する必要はない。存在するまたは存在しないサブストリングを追跡して、本明細書に記載する符号化方式を介してDNAに、または本明細書に記載するDNAに基づくデータ記憶とコンピュータの内部メモリとの両方を導入する複合記憶方式によって、対応するデータ構造のみを記憶することができる。複合記憶方式は、ストリングs内の既存の(マクロ)シンボルと範囲[0,...]内の整数との間の再マッピングを実施することができる。本当のアルファベット
Figure 2022531790000010
は、s内に現れるシンボルを示すことができる(連続する整数によって適切に符号化される)。任意のkに対してnまたは|Σ|の最小値より少ないまたはそれに等しい本当のアルファベットの
Figure 2022531790000011
個のシンボルが存在することができる。この再マッピングは、ランクデータ構造に基づいて内部メモリまたは圧縮解内に維持されたハッシュ表(たとえば、カッコウハッシング)によって実施することができる。
例として、パターンPがストリング「abracadabra」内の「dab」に等しいものとする。長さ1および2のマクロシンボルに対して、前述のデータ構造が導入され、Pに対する探索が、P上で逆方向に演算する2つの段階に分割される。まず「ab」の探索、第2に「d」の探索が行われる。最初に0に等しい第1の索引、および最後に11に等しい最後の索引から始まり、接頭辞abを有する行が判定される。この第1のステップは、ストリングSにアクセスすること、ならびにこのストリングにわたって、0に等しい演算rankab(first-1)および2に等しいrankab(last)を実行することを伴う。これらのランク演算は、ストリングSおよびそのカウンタアレイcab にわたって、2つの並列のアクセス演算および2つの並列の読取り演算によって実行することができる。「ab」より小さいストリングの数は、s内の2であり、したがって索引に対する新しい値は、first=2+rankab(first-1)=2およびlast=2+rankab(last)-1=3である。図16に見ることができるように、接頭辞abを有する行は2つであり、BWT行列の行2および3で生じる。第2のステップは、接頭辞「dab」、したがって「プリペンド」するシンボル「d」から「ab」を有する行を判定することを伴う。このステップは、Sにアクセスし、このストリングにわたって、演算rank(first-1)=0およびrank(last)=1を実行することによって実行される。「d」より小さいストリングの数は、s内の9であり、したがって索引に対する新しい値は、first=9+rank(first-1)=9およびlast=9+rank(last)-1=9である。新しい索引は同等であり、したがってプロセスを停止して、Pの発生のカウントを1に戻すことができる。この例では、一度に1つのシンボルで探索が実行された場合に必要とされるはずの3回ではなく、2回の繰返し/ステップを実行して、Pを探索する。類似の探索演算について、概略的なケースに関して図32に関連して説明する。
ストリング内のパターンの発生を計数するために、BWT、カウンタアレイ、接尾辞アレイ、ならびにアクセスおよび読取り方法が実施されている。いくつかの実装形態では、ストリング自体は、DNAに記憶することができ、特定のパターンの場所でアクセスすることができる。探索方法を使用して、ストリング内のパターンの場所を発見する場合、ストリングを表す識別子プール内で、それらの場所および取り囲む近傍にアクセスすることができ、後に読み取ることができる。このプロセスは、たとえば特定のストリングパターンが生じるコンテキストを集めるために有用となりうる。
識別子ライブラリを別個のコンテナ内へ複製および等分することができ、したがって複数のパターン探索を同時に並列で実行することができる。たとえば、10、100、1000、またはそれよりも多くのパターン探索を並列に実行することができる。DNAシーケンサおよび固有のバーコードを使用して、異なる探索に属する識別子にラベル付けすることによって、異なる探索のランクおよびフェッチ演算を、読取り箇所で多重化することができる。
上記では、BWTが順方向変換および逆方向変換を含むことができることについて論じた。上記の例によって、BWTに対する分類された循環シフト行列M’の各行が、シンボル$が添えられた入力ストリングS(すなわち、ストリングS$)の置換を収容することが示されている。同様に、M’の各列は、S$の置換を収容する。特に、例示的なストリング「abracadabra」に対する第1の列Fは、アルファベット順に分類された「aaaaabbcdr」であり、元の入力ストリングの最善に圧縮可能な変換を表す。Fは転置可能でなく、したがって最後の列Lは、可逆性および圧縮性のために、BWTとして使用される。
M’のiのすべての行は、左向きの循環シフト、Sの接尾辞S[k,n-1]、特殊シンボル$、および接頭辞S[1,k-1]のため、3つの部分に分解することができる。たとえば、図16で、M’の行2は接頭辞「abra」を有し、それに$が続き、接尾辞「abracad」を有する。BWT行列の第1の特性として、行iがS$を表すことを除いて、最後の列L[i]のシンボルは、ストリングS内で第1の列F[i]のシンボルに先行し、したがってF[i]=S[1]およびL[i]=$である。この特性は、MおよびM’のすべての行がS$の左循環シフトであるという性質の結果であり、したがって各行の第1および最後のシンボルを得ることによって、ストリングSにわたって、最後のシンボル(L内)の直後に第1のシンボル(F内)が位置する。BWT行列の第2の特性は、L内の同じシンボルcのすべての発生が、F内と同じ相対順序を維持することである。この特性は、L内のシンボルcの第kの発生がF内のシンボルcの第kの発生に対応することを意味する。「LFマッピング」と呼ばれる方法は、これらの特性を活用して、そのBWT(s)=(L’,r)からSを再構築することができる。LFマッピングは、サイズnのアレイとして表すことができる。シンボルL[i]がシンボルF[j]にマッピングされる場合かつその場合に限り、アレイの第iのエントリLF[i]はjに等しい。L[i]がL内のシンボルcの第kの発生である場合、F[LF[i]]はF内のcの第kの発生である。
図30は、例示的な実装形態による列LからLFマッピングを構築する方法3000を示す。ステップ3002で、方法3000は、サイズ|Σ|+1の補助ベクトルVを画定する。Vは、シンボルまたは整数によって索引付けることができる。ステップ3004で、ループの第1に、L内の各シンボルcに対して、L内のその発生の数nを判定し、ステップ3006で、V[c]=nを記憶する。次いで、ステップ3010で、ループの第2に、これらのシンボルごとの発生を累積和にし、したがってステップ3012で、新しいV[c]が、cより小さいシンボルのL内の発生の総数を記憶し、すなわちV[c]=Σx<cになる。このステップは、ステップ3008で、2つの補助変数を採用することによって行われ、したがって全体的な作業空間は、約nのサイズのままである。V[c]は、シンボルcが生じるF内の第1の位置を与える。したがって、ループの最後が開始する前、V[c]は、L内の第1のcのF内の着地位置である(すべてのアルファベットシンボルの第1の発生に対するLFマッピングが既知である)。最後に、ステップ3014で、ループの最後に、列Lを走査し、シンボルL[i]=cに遭遇したときはいつでも、ステップ3016で、LF[i]=V[c]を設定する。この条件は、第1の時間に対してcが満たされるときに適正であり、次いでV[c]は、L内のcの次の発生がF内の次の位置にマッピングされるように増分される(そのシンボルから始まるすべての行のF内の近接性を考慮する)。したがってアルゴリズムは、LF[i]=Σx<c+kの不変量を維持し、その後、L内のcのk回の発生が処理される。ステップ3018で、最後のLF(LFマッピングアレイ)の出力が生成される。
上述したLFマッピングおよび基礎的な特性を考慮すると、Sは、変換された出力BWT(s)=(L’,r)から始まって、逆方向に再構築することができる。例示的な実装形態によるストリングSの再構築のための方法3100が、図31に示されている。ステップ3102で、Lは、L’の位置rに$を挿入することによって、BWT(s)から再構築される。ステップ3104で、LのLFマッピングが判定される。ステップ3104は、図30の方法3000を介して実行することができる。ステップ3106で、補助変数kおよびi(ループカウンタ)が設定される。変数kは、最初に0に設定され、ループカウンタiは、最初にn-1に設定され、長さの最後の位置はL、F、およびsである。決定ブロック3108で、方法3100は、ループカウンタiが0より大きいまたはそれに等しいかどうかを検査する。条件が満たされた場合(Y)、繰返しはステップ3110を介して続行する。ステップ3110は、M’の第1の行が$Sであると仮定すると、Sの最後のシンボル、すなわちS[n-1]を選ぶことを伴い、これをL[0]で識別することができる。次いで、方法は、S内で1つのシンボルを一度に左へ動かし、上記の2つの特性を導入することによって続行し、第2の特性は、L(最初はL[0])内で生じる現在のシンボルをF内の対応するコピーにマッピングすることを可能にし、次いで、第1の特性は、同じ行の末端(すなわち、L内のもの)でシンボルを得ることによって、F内のそのコピーに先行するシンボルを発見することを可能にする。この2重のステップは、Lで戻り、sにおける1つのシンボルの左向きの動きを可能にする。このプロセスをSの始めまで繰り返すことで、このストリングを再構築することができる。決定ブロック3108の条件が満たされなくなった場合(N)、方法3100はステップ3111で終了し、ここで元のストリングsが完全に構築される。
一例として、図16を参照されたい。図16では、L[0]=S[n-1]=「a」になり、方法3100のループが実行される(ステップ3108および3110を繰り返す)。LF[0]は、「a」から始まる第1の行、すなわち行1を指す。したがって、「a」のコピーがF[1]にLFマッピングされ(実際には、F[1]=「a」)、S内の先行するシンボルはL[1]=「r」である。これら2つの基本ステップが、ストリングS全体が再構築されるまで繰り返される。前述の実行中の例を引き続き参照すると、L[1]=「r」が位置LF[1]=10のF内のシンボルにLFマッピングされる(実際には、F[10]=r)。L[1]およびF[10]は、それぞれ両方の列LおよびFにおけるシンボル「r」の第1の発生である。次いで、アルゴリズムは、S内の「r」の先行するシンボルとして、シンボルL[10]=「b」を得る。次いで、これらのステップが、ストリングSの残余の先行する各シンボルに対して繰り返される。
回転行列Mの行とストリングSの接尾辞との間の全単射の対応関係、ならびにS上に構築される最後の列Lと接尾辞アレイとの間の関係について記載したように、これらの関係は、上記で論じたFM索引の設計の中心である。FM索引は、効率的なサブストリング探索およびストリングサイズ約nのサイズの空間占有率を可能にする。したがって、3つの基本探索演算が、そのような索引付け探索の設計の根底にあり、count(P)は、ストリングPの接頭辞を有するM内の行の範囲[first,last]を返し、ここで値(last-first+1)は、パターン発生の数を補償し、locate(P)は、Pが生じるストリングS内のすべての位置のリストを返し、ここでリストは、分類済みまたは未分類であり、extract(i,j)は、FM索引内のその圧縮表現にアクセスすることによって、サブストリングS[i,j]を返す。たとえば、図17で、パターンP=「ab」の場合、索引first=2およびlast=3が、合計2つのパターン発生を返す。これら2つの行は、接尾辞S[0,1]およびS[7,:]に対応し、パターンPの接頭辞を有する。
図26~図29に関連して上述したように、行firstおよびlastの取出しは、2進探索を介して実施されるのではなく、列L、アレイC(C[c]内でcより小さいすべてのシンボルのs内の発生の数を計数する)、およびストリング接頭辞L[0,k-1]内のシンボルcの発生の数を報告する計数rank(c,k)に効率的に対応する追加のデータ構造を導入する探索方法を使用する。すべてのデータ構造L、C、およびrankを、圧縮した状態で記憶することができ、それでもなお、それらのエントリ、すなわちアクセスL[i]もしくはC[c]を効率的に取り出し、またはrank(c,k)で応答することができる。
図32は、例示的な実装形態による上記のアンサンブルを使用してcount(P)を実施するように構成された方法3200を示す。ステップ3202は、ループカウンタiを、パターンP内の最後の位置を示すp-1に等しくなるように設定することを伴う。可変シンボルcが、P[p-1]によって示すように、P内の最後のシンボルに等しく設定される。ステップ3204で、第1の索引hは、C[c]によって示すように、可変シンボルcに対するカウンタエントリに等しく設定され、ここでCは、シンボルストリングのBurrows-Wheeler変換から導出されるカウンタアレイである。最後の索引zは、位置c+1のカウンタエントリより1小さい値に等しく設定される。第1および最後の索引hおよびzは、BWTから導出される行列M’の第1の列F内の値の範囲の境界を定める。決定ブロック3206は、第1の索引hが最後の索引zより小さいかどうか、およびループカウンタiが1より大きいまたはそれに等しいかどうかを検査する。両方の条件が満たされた場合(Y)、ステップ3208で、可変シンボルcが、パターンPの先行するシンボルに設定される。新しい第1の索引hが、cに対するカウンタエントリと、シンボル値cに対する位置h-1で算出されるBWTのランクとの和に等しく設定される。新しい最後の索引zが、cに対するカウンタエントリと、シンボル値cに対する位置zで算出されたBWTのランクとの和より1小さい値に等しく設定される。ループカウンタiは、1だけ減分され、方法はステップ3204へ戻る。
方法3200の各繰返しステップ3204~3208は、次の不変量を保持する。第iの段階で、パラメータ「h」は、接頭辞P[i,p-1]を有する分類された回転行列M’の第1の行を指し、パラメータ「z」は、接頭辞P[i,p-1]を有するM’の最後の行を指す。最初に、不変量は構成によって真であり、第1の列Fに対して、F[C[c]]は、cから始まるM’の第1の行であり、F[C[c+1]-1]は、cから始まるM’の最後の行である。図17に関するP=「ab」の例を再び参照すると、初期条件は、C[b]=6およびC[b+1]=C[c]=8であり、[6,7]は、接頭辞bを有する行の範囲であり、その前に、逆方向探索が開始する。
後続の各繰返しにおいて、方法3200は、接頭辞P[i,p-1]を有する行の範囲[h,z]を発見する。次いで、この方法は、次のように進むことによって、接頭辞P[i-1,p-1]=P[i-1]P[i,p-1]を有する行の新しい範囲[h,z]を判定することを伴う。第1に、適切に照会された関数rankを導入することによって、サブストリングL[h,z]内のシンボルc=P[i-1]の第1および最後の発生を判定する。具体的には、rank(c,h-1)が、cのどれだけの発生がL内の位置hに先行するかを計数し、rank(c,z)が、cのどれだけの発生がL内の位置zに先行するかを計数する。次いで、これらの値を使用して、cのそれらの第1/最後の発生のLFマッピングを算出する。同等LF[i]=C[L[i]]+rank(L[i],i)が存在する。この同等は、rank(c,k)を実施するデータ構造が密に記憶されるという条件で、LFマッピングの算出を効率的かつ簡潔に行うことができることを意味する。図17を再び参照して、前述のように、パターンP=「ab」および接頭辞P[2]=「b」を有するM’内の行の範囲[6,7]を考慮する。次に、前述のパターンシンボルP[1]=「a」を選ぶと、L[0,h-1]が「a」の1つの発生を収容し、L[0,z]が「a」の3つの発生を収容するため、アルゴリズム5は、rank(「a」,5)=1およびrank(「a」,7)=3を算出する。したがって、アルゴリズムは、h=C[「a」]+rank(「a」,5)=1+1=2、z=C[「a」]+rank(「a」,7)-1=1+3-1=3として、新しい範囲を算出し、これは、接頭辞パターンP=「ab」を有する行の隣接範囲である。最後の段階(すなわち、i=0)後、firstおよびlastは、接頭辞Pを有するすべての接尾辞を収容するM’の行の境界を定める。z<hの場合、パターンPはSで生じない。
以下、手順locate(P)を介したパターン発生の位置づけの実装形態について説明する。固定のパラメータμの場合、本発明者らは、j=0、1、2、...の場合、形式pos(i)=jμの位置で開始する接尾辞に対応するM’の行iをサンプリングする。そのような各対<i,pos(i)>は、一定時間内(行成分上)のメンバーシップ照会に対応するデータ構造Lに明示的に記憶される。次に、行索引rを考慮すると、L内のrがサンプリングされた行である場合、値pos(r)をすぐに導出することができ、そうでない場合、アルゴリズムは、t=1、2、...の場合、jがサンプリングされた行になり、L内に発見されるまでに、j=LF(r)を判定する。この場合、pos(r)=pos(j)+tである。サンプリング方策は、L内の行が多くともμ回の繰返しで発見されること、および約(μ×occ)回の照会を介してパターンPのocc発生をランクデータ構造に位置付けることができることを確実にする。
count(P)は、FM索引によって対応される最後の基本演算extract(i,j)を実施するように適合することができることに留意されたい。rを接尾辞S[j,n-1]を有するM’の行とし、rの値が既知であると仮定する。アルゴリズムは、S[j]=F[r]を設定し、次いでt=0、1、...、j-i-1の場合、s[j-1-t]=L[LF[r]]を設定するサイクルを開始する。このサイクルの根底にある概念は、本発明者らが現在のシンボルのLFマッピング(ランクデータ構造を介して実施される)を繰返し算出し、したがってS[j-1]から始まるS内で逆方向に飛び越すことである。j-i-1回のステップ後、S[i]に到達したとき、プロセスは停止する。この手法は、BWT転置で得られるものに類似しており、違いは、アレイLFが明示的に利用可能ではないが、そのエントリがランク演算を介してステップごとに生成されることに依拠する。この手法は、LFアレイへの一定時間アクセスを依然として保証するが、ランクに対する圧縮手法が採用された場合、簡潔な空間記憶を保証する。
上記で説明したアクセス、読取り、ランク、および探索のための化学的方法に加えて、「if-then-else」演算を実施するための化学的方法も本明細書に記載される。「if-then-else」演算は、指定のブール条件が真と評価されるか、それとも偽と評価されるかに応じて、異なる算出または行動を実行する命令、表現、または構成である。この演算を使用して、条件付きプログラムを書き込むことができる。各「if」演算は、1つまたは複数の識別子の有無を試験し、その有無に応じて、「then」または「else」分岐へ進む。この演算は、複数の条件および対応する分岐を含むことができる。出力は、演算のすべての分岐から作り出すことができる。この手法により、複数の識別子ライブラリ内の識別子のすべて(たとえば、テラビット規模)を並列に演算することが可能になる。たとえば、ライブラリが数十億のデータオブジェクトを符号化する場合、各オブジェクトを調べて出力を作り出す複素関数は、DNAに基づくプログラムとして設計することができ、ライブラリ上で並列に実行することができる。
ビットのシフト、コピー、および移動に対する方策は、所望のプログラムの実行のために単一の識別子ライブラリを複数の入力識別子ライブラリに再配置することを可能にする。物理的に、1つの入力ライブラリおよび2つの出力ライブラリによる反応において、各if-then-else演算を行うことができ、それらのライブラリ内のすべての識別子にわたって多重化することができる。流体伝達によって、1つの演算の出力ライブラリを別の演算の入力ライブラリへ向けることができる。DNAにおける各演算の実行は、従来のハードウェアと比較すると遅い可能性があるが、RAMおよび処理力によって制限される従来のハードウェアとは異なり、本明細書に記載するDNAプラットホームは、大量の入力データオブジェクトにわたって同時に低電力でプログラムを実行することが可能である。
図33は、1つまたは複数のif-then-else演算を識別子のプール上で実行する方法3300について説明する流れ図を示す。方法3300のステップ3302は、1つまたは複数の入力シンボルストリングを表す識別子の第1のプールを取得することを伴う。ステップ3304は、if-then-else演算を識別子上で実行して、識別子の第1のプールからの識別子のサブセットを有する中間プールを作成することを伴う。ステップ3306は、1つまたは複数のif-then-else演算を中間プール上で繰り返し、各if-then-else演算後、識別子の最終プールが生成されるまで、新しい中間プールを作成することを伴い、最終プールは出力シンボルストリングを表す。
プールは、粉末、液体、または固体の形態を有する。識別子のプール内の各識別子は、成分核酸分子を含む核酸分子である。成分核酸分子の少なくとも一部分は、PCRプライマーまたは親和性タグ付きオリゴヌクレオチドなどの1つまたは複数のプローブに個々に結合することが可能である。各識別子は、M個の層の各々とは別個の成分を含むことができ、ここで各層は、成分のセットを含む。
ステップ3304および3306のif-then-else演算は、プローブを有する識別子の少なくとも1つの成分を標的とする。演算は、特有の成分を含むプール内の識別子にアクセスすることを伴うことができる。たとえば、プローブは、PCRプライマーであり、識別子は、PCRを介してアクセスされる。別の例として、プローブは、親和性タグ付きオリゴヌクレオチドであり、識別子は、親和性プルダウンアッセイを介してアクセスされる。複数のif-then-else演算を1つまたは複数のプール上で並列に実行することができる。たとえば、2つの演算が2つの識別子プール内で並列に実行される。
方法3300は、第1のプール、中間プール、または最終プールのうちの少なくとも1つを少なくとも2つの複製プールに分割することをさらに伴うことができる。この分割により、並列化されたif-then-else演算を可能にすることができる。十分な濃度の識別子を確実にするために、分割前に、たとえばPCRを使用して、プールを複製することができる。2つまたはそれよりも多いプール(たとえば、中間プール)を組み合わせて、識別子の新しいプール(たとえば、新しい中間プールまたは第2のプール)を形成することができる。
別の用途として、比較器回路のちょうど1つのインスタンス(約log(n))と同等のランタイムで、DNA内の構造化されていないデータにわたって、長さnのビットストリングの探索を実行することができる。従来のハードウェア上で実行される同等の探索は、データをRAMへ移動させるコストおよび時間をさらに補償するはずである。さらにこの用途に対して、大きい格納データセットで一般的なように、データが符号化された後に考えられる任意のパターンに対して大きいデータセットを探索することを考慮する。たとえば、パターンはすべて、画像の大きいデータウェアハウスからの関心人物の写真である可能性がある。アーカイブが書き込まれた後、データから所望のパターンを発見することが可能な関数を考えることができる。そのような関数は、たとえば、機械学習アルゴリズムを使用して構築することができる。これらのパターン発見関数は、ブール回路表現を有しており、if-then-else演算を使用してDNAで実施することができる。演算は、学習済みモデルに従って、データセットのすべてのデータオブジェクトに同時に適用することができ、関心パターンに整合するオブジェクトを識別することができる。従来のハードウェア内で同じ演算を実行すると、RAMおよびプロセッサの利用可能性が制限されるため、高価で低速になるはずである。学習アルゴリズムが改善されると、更新プログラムを格納データセットに適用して、新しい関心情報を発見することができる。別の例示的な用途は、時空信号処理であり、特定のパターンを探索するとき、時間または空間の複数の小さい窓にわたって、畳込み関数(フーリエ変換などのデジタル信号処理関数の根底にある)を格納データに適用することができる。別の例として、安全性(たとえば、認証)または完全性(たとえば、安全性検査)の用途のために、大きいデータセットのオブジェクトにハッシュ関数を適用することができる。
入力データがオブジェクトのセットを記述する場合、入力データは、識別子ライブラリ内で固有に符号化することができ、したがって各識別子が、セット内の可能なオブジェクトを表す。この符号化では、2つの識別子ライブラリ間の「AND」、「OR」、および「NOT」演算の化学的方法が、当技術分野で定義されている「INTERSECTION」、「UNION」、および「COMPLEMENT」の集合演算を、一定のランタイムで実施する。集合包含(1つのセットが別のセットのサブセットであるかどうかを判定する)および均等物を実行するための化学的方法もまた、DNAプラットホーム上で実行することができる。これらの演算および関係をともに使用して、集合代数におけるあらゆる関数を実行することができる。
DNAプラットホームはまた、機械学習(ML)に対する対応を含むことができる。MLによる概念的な索引付けは、高次元のベクトルを利用して、データを組織化および注釈する。本明細書に記載するシステムは、そのようなデータに対して固有の効率的な記憶および照会を提供し、MLモデルがデータ内の関連する概念および関係を捕捉する能力を完全に可能にすることができる。置換および合計などのDNA上の演算は、当技術分野では公知のように、概念的な関係を効率的に発見、記憶、および照会するために、ベクトル演算として実施することができる。識別子ライブラリをプラットホームとして使用して、記憶媒体に固有の記憶および構造を一体化する知的メモリを構築することができる。DNAに基づく記憶システムは、プラットホームに対するアルゴリズムおよびデータ構造に固有に対応する。データを概念的構造に継続的に組織化し、意味的に豊富な照会および推測を可能にするように、長い寿命の超低電力のメモリバンクを構成することができる。
上記は、本開示の原理の単なる例示であり、記載の実装形態以外の形態で、装置および方法を実施することもでき、記載の実装形態は、限定ではなく例示の目的で提示されている。本開示を読めば、変形例および修正例が当業者には想到されよう。開示する特徴は、本明細書に記載する1つまたは複数の他の特徴とともに、任意の組合せおよび部分的組合せ(複数の依存する組合せおよび部分的組合せを含む)で実施することができる。上記で説明または例示した様々な特徴は、そのあらゆる構成要素を含めて、他のシステム内で組み合わせたり一体化したりすることができる。さらに、特定の特徴は、省略されてもよく、または実施されなくてもよい。
変更、置換え、および修正の例は、当業者であれば確かめられるものであり、本明細書に開示する情報の範囲を逸脱することなく加えることができる。本明細書に引用されるすべての参照は、参照により全体として組み込まれており、本出願の一部を構成する。

Claims (165)

  1. 核酸分子のプールに記憶されたデジタル情報からビットストリング内の特定のビットのランクを取得する方法であって、各ビットが、ビット値およびビット位置を有し、前記方法が、
    (a)前記ビットストリングを表す識別子核酸分子の第1のプールを取得することであって、前記プールが、粉末、液体、または固体の形態を有し、前記第1のプール内の各識別子核酸分子が成分核酸分子を含み、前記成分核酸分子の少なくとも一部分が、1つまたは複数のプローブに結合するように構成される、第1のプールを取得することと、
    (b)前記ビットストリングから導出されたカウンタシンボルストリングを表す識別子核酸分子の第2のプールを取得することであって、各カウンタシンボルが、特有のビット値を有する前記ビットストリング内のすべてのw個のビットに対するビットの数のランニングカウントを示すb個のカウンタビットのストリングによって表される、第2のプールを取得することと、
    (c)(1)前記特定のビットに先行するw個のビットのすべてのブロック、または(2)前記特定のビットを含むw個のビットの前記ブロックを含む、前記特定のビットに先行するw個のビットのすべてのブロックのいずれかに対して、所与の値の前記ビットの数の前記ランニングカウントを示す対応するカウンタシンボルを表す前記第2のプール内の前記識別子核酸分子を少なくとも標的とするように、第2の一連のプローブを有する(b)の前記第2のプールにアクセスすることによって、第1のカウントを取得することと、
    (d)(1)前記特定のビットに先行しもしくは前記特定のビットを含む、(c)で計数されていないビットを表す、または(2)(c)で計数されたが前記特定のビットに先行しないもしくは前記特定のビットを含まないビットを表す、前記第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とするように、第1の一連のプローブを有する(a)の前記第1のプールにアクセスすることによって、第2のカウントを取得することと、
    (e)前記第1のカウントおよび前記第2のカウントから、前記ビットストリング内の前記特定のビットの前記ランクを取得することと
    を含む方法。
  2. 前記第1のプール内の前記識別子核酸分子が、識別子の存在が、ビット位置の前記ビット値「1」を表すように前記ビットストリングを表す、請求項1に記載の方法。
  3. (c)の前記第1のカウントが、前記特定のビットに先行するw個のビットのすべてのブロックを表すとき、(d)の前記第1の一連のプローブが、前記特定のビットに先行するまたは前記特定のビットを含む、(c)で計数されていないビットを表す前記第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とし、前記ビットストリング内の前記特定のビットの前記ランクが、(e)で前記第1および第2のカウントを合計することによって取得される、請求項1および2のいずれかに記載の方法。
  4. (c)の前記第1のカウントが、前記特定のビットに先行し、前記特定のビットを含むw個のビットの前記ブロックを含む、w個のビットのすべてのブロックを表すとき、前記第1の一連のプローブが、(c)で計数されたが前記特定のビットに先行しないまたは前記特定のビットを含まないビットを表す前記第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とし、前記ビットストリング内の前記特定のビットの前記ランクが、(e)の前記第1のカウントから前記第2のカウントを引くことによって取得される、請求項1および2のいずれかに記載の方法。
  5. 前記第1のカウントが、(c)の前記標的とされた識別子核酸分子に対応するカウンタシンボル値を読み取ることによって取得される、請求項1~4のいずれかに記載の方法。
  6. 前記第2のカウントが、(d)からの前記標的とされた識別子核酸分子を読み取ることによって取得される、請求項1~5のいずれかに記載の方法。
  7. (a)の前記第1のプールが、(b)の前記第2のプールである、請求項1~6のいずれかに記載の方法。
  8. (a)の前記第1のプールが、(b)の前記第2のプールとは別個である、請求項1~6のいずれかに記載の方法。
  9. 前記第1のプール内の対応する識別子核酸分子の存在が、前記ビット値1を示し、前記第1のプール内の対応する識別子核酸分子の不在が、前記ビット値0を示す、請求項1~8のいずれかに記載の方法。
  10. 前記ビットストリングが、長さnを有し、bがlog(n+1)の上限である、請求項1~9のいずれかに記載の方法。
  11. 前記カウンタシンボルストリングが、nをwで割った上限個のカウンタシンボルを含み、bにnをwで割った上限を掛けた値に対応する長さを有するカウンタビットストリングによって表される、請求項10に記載の方法。
  12. 前記特定のビットが、w個のビットの前記第1のブロックの範囲内である場合、w個のビットの前記第1のブロックに先行する前記ランニングカウントが0である、請求項1~11のいずれかに記載の方法。
  13. 前記特定のビットが、w個のビットの前記第1のブロックの範囲内にない場合、前記特定のビットに先行するw個のビットのすべてのブロックの前記カウンタシンボルが、0からw*B(x)-1の位置範囲内の値1を有する前記ビットストリング内のビットの数を表し、0が前記ビットストリングの第1の位置であり、xが前記ビットストリング内の前記特定のビットの位置に対応し、B(x)がxをwで割った下限である、請求項1~12のいずれかに記載の方法。
  14. (c)の前記第2のプール内の前記標的とされた識別子核酸分子が、位置b*B(x)およびb*(B(x)+1)-1によって画定される前記範囲内であり、0の位置が、前記ビットストリング内の前記第1の位置に対応する、請求項13に記載の方法。
  15. 前記第2のカウントが、前記位置の範囲w*B(x)からx内に値1を有する前記ビットストリング内のビットの数に対応し、xが前記ビットストリング内の前記特定のビットの位置に対応し、位置0が、前記第1の位置であり、B(x)が、xをwで割った下限である、請求項1~14のいずれかに記載の方法。
  16. wがbの値に設定される、請求項1~15のいずれかに記載の方法。
  17. wが1の値に設定される、請求項1~15のいずれかに記載の方法。
  18. 前記第1のカウントが、前記特定のビットを含むw個のビットの前記ブロックに対応する前記カウンタシンボルを表す(c)の識別子核酸分子を標的とすることによって取得され、前記ランクが前記第1のカウントと同等である、請求項17に記載の方法。
  19. ステップ(d)が実行されない、請求項18に記載の方法。
  20. 前記ビットストリング内のビットのブロックが、識別子核酸分子の前記第1のプール内の隣接して順序付けられた識別子核酸分子のブロックにマッピングされる、請求項1~19のいずれかに記載の方法。
  21. 前記第1のプール内の識別子核酸分子の有無が、前記ビットストリング内のいずれのビット値とも直接相関しない、請求項20に記載の方法。
  22. 前記ビットストリングの固定長のサブストリング(ワード)が、固定数の可能な固有の識別子核酸分子からの固定数の固有の識別子核酸分子を含むコードワードにマッピングされる、請求項20および21のいずれかに記載の方法。
  23. 追加の情報を使用して、前記第1および第2のプールからの識別子核酸分子の書込み、アクセス、および読取りのエラーを検出および補正することをさらに含む、請求項1~22のいずれかに記載の方法。
  24. 前記追加の情報が、前記第1および第2のプールの前記識別子核酸分子に記憶される、請求項23に記載の方法。
  25. 前記ビットストリングが、シンボルストリングを表し、前記ランクが、前記シンボルストリング内の特定のシンボルに対して取得される、請求項1~24のいずれかに記載の方法。
  26. 前記シンボルストリング内の前記シンボルが、シンボル値のセットから選択され、(b)の前記カウンタシンボルストリングが、前記特定のシンボル値を有するシンボルの数のランニングカウントを示す、請求項25に記載の方法。
  27. (b)の識別子核酸分子の異なる第2のプールが、特有のシンボル値のインスタンスの数を計数する異なるカウンタシンボルストリングを表し、異なる各カウンタシンボルストリングが、対応する特有のシンボル値のインスタンスを計数する、請求項25および26のいずれかに記載の方法。
  28. M個の選択された成分核酸分子を物理的に組み立てることによって、識別子核酸分子を形成することをさらに含み、前記M個の選択された成分核酸分子の各々が、M個の異なる層に分離された別個の成分核酸分子のセットから選択される、請求項1~27のいずれかに記載の方法。
  29. 核酸分子のプールからデジタル情報をフェッチする方法であって、
    (a)識別子核酸分子の第1のプールを取得することであって、前記プールが、粉末、液体、または固体の形態を有し、前記第1のプール内の各識別子核酸分子が成分核酸分子を含み、前記成分核酸分子の少なくとも一部分が、1つまたは複数のプローブに結合するように構成され、前記識別子核酸分子が、前記シンボル値が、前記第1のプール内の前記対応する識別子核酸分子の有無によって示されるようにシンボルストリングを表す、取得することと、
    (b)第1の一連のプローブを有する前記第1のプールにアクセスすることであり、前記第1の一連のプローブの各々が、前記成分核酸分子の少なくとも1つを標的として、前記第1のプールからの識別子核酸分子のサブセットを有する第2のプールを作成する、アクセスすることと、
    (c)前記第2のプールからの前記識別子核酸分子のサブセットの配列を読み取ることと、
    (d)前記配列を使用して、(a)からの前記シンボルストリング内のシンボルの少なくともサブセットを取得することと
    を含む方法。
  30. 各識別子核酸分子が、M個の層の各々からの成分核酸配列を有する別個の成分核酸分子を含み、各層が、前記成分核酸配列のセットを含む、請求項29に記載の方法。
  31. 前記M個の層が論理的に順序付けられる、請求項30に記載の方法。
  32. 各層の前記成分核酸配列が論理的に順序付けられる、請求項31に記載の方法。
  33. 前記識別子核酸分子が、前記識別子核酸配列を第1の層内の対応する成分核酸配列によって分類し、前記識別子核酸配列を第2の層内の対応する成分核酸配列によって細分し、残りのM-2個の層の各々に対して前記細分プロセスを繰り返すことによって、論理的に順序付けられた識別子核酸配列に対応する、請求項32に記載の方法。
  34. 各識別子配列が、照会木内のパスとして表される一連の成分核酸配列を含み、前記照会木が、根ノードから開始し、各層に1つのインスタンスでM個のインスタンスにわたって分岐し、葉ノードで終了し、各葉ノードが、識別子核酸配列を表す、請求項33に記載の方法。
  35. 前記第1の一連のプローブが、前記照会木内の前記根ノードからの部分パスまたはフルパスに対応する、請求項34に記載の方法。
  36. 前記フルパスが、前記一連のプローブが、単一の識別子核酸分子を標的とするように、M個のプローブを含む根から葉までのパスに対応する、請求項35に記載の方法。
  37. 前記部分パスが、前記一連のプローブが異なる配列を有する識別子核酸分子の複数の母集団を標的とするように、M個より少ないプローブに対応する、請求項36に記載の方法。
  38. 異なる配列を有する識別子核酸分子の前記複数の母集団が、少なくとも前記第Mの層内の異なる成分核酸分子に対応する、請求項37に記載の方法。
  39. 前記第1のプールが、複数の一連のプローブによってアクセスされる、請求項29~38のいずれかに記載の方法。
  40. (a)の前記第1のプールを少なくとも2つの複製プールに分割することをさらに含み、(b)、(c)、および(d)が、前記一連のプローブの各々を有する前記複製プールの各々で実行される、請求項39に記載の方法。
  41. 前記少なくとも2つの複製プールに分割する前に、前記第1のプールを複製することをさらに含む、請求項40に記載の方法。
  42. プローブのサブシリーズを有する識別子核酸分子の第1のプールにアクセスして、識別子核酸分子の中間プールを作成することをさらに含む、請求項41に記載の方法。
  43. 識別子核酸の中間プールを少なくとも2つの複製プールに分割することをさらに含む、請求項42に記載の方法。
  44. 前記少なくとも2つの複製プールに分割する前に、前記中間プールを複製することをさらに含む、請求項43に記載の方法。
  45. 後続のプローブのサブシリーズを有する識別子核酸分子の第1の中間プールにアクセスして、識別子核酸分子の第2の中間プールまたは識別子核酸分子の第2のプールを形成することをさらに含む、請求項39~44のいずれかに記載の方法。
  46. 識別子核酸分子の少なくとも2つの中間プールを組み合わせて、識別子核酸分子の別の中間プールまたは識別子核酸分子の第2のプールを形成することをさらに含む、請求項39~45のいずれかに記載の方法。
  47. 前記複製が、ポリメラーゼ連鎖反応(PCR)によって実行される、請求項41および44のいずれかに記載の方法。
  48. プローブがPCRプライマーであり、アクセスがポリメラーゼ連鎖反応によって実行される、請求項29~47のいずれかに記載の方法。
  49. 前記プローブが親和性タグ付きオリゴヌクレオチドであり、アクセスが親和性プルダウンアッセイによって実行される、請求項29~47のいずれかに記載の方法。
  50. 長さnのビットストリングを含むメッセージ内の長さpの特定のビットパターンのカウントを取得する方法であって、
    (a)ビットストリングLを表す識別子核酸分子の第1のプールを取得することであって、前記ビットストリングLが、前記メッセージのBurrows-Wheeler変換行列の最後の列であり、前記第1のプールが、粉末、液体、または固体の形態を有し、前記第1のプール内の各識別子核酸分子が成分核酸分子を含み、前記成分核酸分子の少なくとも一部分が、1つまたは複数のプローブに結合するように構成される、第1のプールを取得することと、
    (b)前記ビットストリングLから導出されたカウンタシンボルストリングを表す識別子核酸分子の第2のプールを取得することであって、各カウンタシンボルが、特有のビット値「1」を有する前記ビットストリングL内のすべてのw個のビットに対するビットの数のランニングカウントを示すb個のカウンタビットのストリングによって表される、第2のプールを取得することと、
    (c)一連のプローブを使用して、前記ビットストリングL内のビット値「1」の発生の総数に対する前記カウンタシンボルを表す前記第2のプールからの前記識別子核酸分子にアクセスすることと、
    (d)(c)の前記アクセスされた識別子核酸分子を読み取って、前記ビットストリングL内のビット値「1」の発生の前記総数を計数することと、
    (e)(d)からの各ビット値の発生の前記総数を使用して、前記メッセージの前記Burrows-Wheeler変換行列の第1の列Fを再構築することと、
    (f)前記第1の列F内の前記第pのビット値の範囲を画定する第1の位置hおよび最後の位置zを、hおよびzを含めて判定することと、
    (g)第1の一連のプローブを使用して、前記第1のプールおよび前記第2のプールからの前記識別子核酸分子にアクセスして、L内の位置h-1における前記パターンの前記第(p-i)のビット値の前記ランクrh-1を計算することであり、i=1である、計算することと、
    (h)第2の一連のプローブを使用して、前記第1のプールおよび第2のプールからの前記識別子核酸分子にアクセスして、L内の位置zにおける前記パターンの前記第(p-i)のビット値の前記ランクrを計算することと、
    (i)rh-1がrに等しい場合、前記メッセージ内の前記パターンの発生の前記カウントを0として設定することと、
    (j)そうではなく、rh-1がrに等しくない場合、
    (j1)hをF内の前記第(p-i)のビット値の第(rh-1+1)のインスタンスの索引に設定し、
    (j2)zをF内の前記第(p-i)のビット値の第rのインスタンスの索引に設定し、
    (j3)iを1だけ増分し、
    (j4)i=p-1になるまで、ステップ(g)、(h)、(i)、(j)、(j1)、(j2)、および(j3)を複数回繰り返し、
    (j5)前記メッセージ内の前記パターンの発生の前記カウントをz-h+1として計算することとを含む、方法。
  51. (a)の前記第1のプールが、(b)の前記第2のプールである、請求項50に記載の方法。
  52. (a)の前記第1のプールが、(b)の前記第2のプールとは別個である、請求項50に記載の方法。
  53. 前記第1のプール内の対応する識別子核酸分子の存在が、前記ビット値1を示し、前記第1のプール内の対応する識別子核酸分子の不在が、前記ビット値0を示す、請求項50~52のいずれかに記載の方法。
  54. bがlog(n+1)の上限である、請求項50~53のいずれかに記載の方法。
  55. 前記カウンタシンボルストリングが、nをwで割った上限個のカウンタシンボルを含み、bにnをwで割った上限を掛けた値に対応する長さを有するカウンタビットストリングによって表される、請求項54に記載の方法。
  56. L内のw個のビットの前記第1のブロックに先行するあらゆるビット値の前記ランニングカウントが0である、請求項50~55のいずれかに記載の方法。
  57. wがbの値に設定される、請求項50~56のいずれかに記載の方法。
  58. wが1の値に設定される、請求項50~57のいずれかに記載の方法。
  59. 前記ビットストリングL内のビットのブロックを、前記第1のプール内の隣接して順序付けられた識別子核酸分子のブロックにマッピングすることをさらに含む、請求項50~58のいずれかに記載の方法。
  60. 前記ビットストリングLの固定長のサブストリングが、固有の識別子核酸分子の固定サイズのセットから選択された固定数の固有の識別子核酸分子によって表されるコードワードにマッピングされる、請求項59に記載の方法。
  61. 前記第1および第2のプールからの識別子核酸分子の書込み、アクセス、および読取りのエラーを検出および補正するために、追加の情報が使用される、請求項50~60のいずれかに記載の方法。
  62. 前記追加の情報が、前記第1および第2のプールの前記識別子核酸分子に記憶される、請求項61に記載の方法。
  63. 前記メッセージのBurrows-Wheeler変換から導出された接尾辞アレイSAを表す識別子核酸分子の第3のプールを取得することをさらに含み、SAの各要素が、前記メッセージ内のLの対応する要素の位置を示す少なくともlog(n)個のビットのビットストリングによって表される、請求項50~62のいずれかに記載の方法。
  64. 前記カウントが0より大きいとき、hおよびzに対する最終値を含むhとzとの間の位置における前記接尾辞アレイ内の要素に対応する前記第3のプール内の前記識別子核酸分子にアクセスすることによって、前記メッセージ内の前記パターンの前記発生を位置付けることをさらに含む、請求項63に記載の方法。
  65. 前記メッセージを表す識別子核酸分子の第4のプールを取得することをさらに含む、請求項64に記載の方法。
  66. 前記第1の場所および前記第1の場所を取り囲む位置の近傍に対応する前記第4のプール内の前記識別子核酸分子にアクセスすることによって、前記パターンの前記第1の場所のコンテキストを抽出することをさらに含む、請求項65に記載の方法。
  67. 長さnのビットストリングを含むメッセージ内の長さpの特定のビットパターンのカウントを取得する方法であって、
    (a)ビットストリングLを表す識別子核酸分子の第1のプールを取得することであって、前記ビットストリングLが、前記メッセージのBurrows-Wheeler変換行列の最後の列であり、前記第1のプールが、粉末、液体、または固体の形態を有し、前記第1のプール内の各識別子核酸分子が成分核酸分子を含み、前記成分核酸分子の少なくとも一部分が1つまたは複数のプローブに結合するように構成される、第1のプールを取得することと、
    (b)特有のビット値を有するビットの数のランニングカウントを表す、前記ビットストリングLから導出されたカウンタシンボルストリングを表す識別子核酸分子の第2のプールを取得することと、
    (c)前記第1のプールおよび前記第2のプールからの識別子核酸分子に選択的にアクセスすることによって、前記メッセージ内の前記特定のビットパターンの前記カウントを取得することと
    を含む方法。
  68. ステップ(c)が、前記Burrows-Wheeler変換行列の第1の列Fを再構築することをさらに含む、請求項67に記載の方法。
  69. ステップ(c)が、一連のプローブを使用して、前記ビットストリングL内の前記特有のビット値の発生の総数に対する前記カウンタシンボルを表す前記第2のプールからの前記識別子核酸分子にアクセスすることと、前記特有のビット値の発生の前記総数を使用して、Fを再構築することとを含む、請求項68に記載の方法。
  70. ステップ(c)が、前記パターン内の第pのビット値を有するF内の位置の範囲を判定することをさらに含む、請求項68および69のいずれかに記載の方法。
  71. F内の位置の前記範囲が、第1の位置hおよび最後の位置zによって、hおよびzを含めて画定される、請求項70に記載の方法。
  72. ステップ(c)が、前記第pのビット後の前記パターン内の先行する各ビットに対して、
    一連のプローブを使用して、前記第1のプールおよび前記第2のプールからの前記識別子核酸分子にアクセスして、前記範囲にすぐ先行する位置におけるL内の前記対応するビット値の第1のランク、および前記範囲の末端の位置におけるL内の前記対応するビット値の第2のランクを判定することと、
    前記第1のランクおよび前記第2のランクを使用して、前記範囲を、前記パターン内の後続のビットに先行する前記対応するビットのインスタンスを有するF内の位置の範囲に更新することとをさらに含む、請求項70および71のいずれかに記載の方法。
  73. 前記第1のランクが、L内の位置h-1における前記パターン内のそれぞれの先行するビット値であり、前記第2のランクが、L内の位置zにおける前記パターン内のそれぞれの先行するビット値である、請求項72に記載の方法。
  74. 前記範囲を更新することが、前記第1のランクに基づいて、hをF内の前記パターン内の前記それぞれの先行するビット値の1つのインスタンスの位置に設定することを含む、請求項73に記載の方法。
  75. 前記範囲を更新することが、前記第2のランクに基づいて、zをF内の前記パターン内の前記それぞれの先行するビット値の1つのインスタンスの位置に設定することを含む、請求項73および74のいずれかに記載の方法。
  76. ステップ(c)が、前記第1および第2のランクの前記最終値に基づいて、前記メッセージ内の前記パターンの発生の前記カウントを設定することをさらに含む、請求項72~75のいずれかに記載の方法。
  77. 発生の前記カウントが、前記第1および第2のランクの前記最終値間の差である、請求項76に記載の方法。
  78. 前記第1および第2のランクが、前記第pのビットまたはあらゆる先行するビットに対して互いに等しい場合、発生の前記カウントが0に設定される、請求項76に記載の方法。
  79. 長さnのシンボルストリングを含むメッセージ内の長さpの特定のシンボルパターンのカウントを取得する方法であって、各シンボルが、r個のシンボル値のセットから選択され、前記方法が、
    (a)前記メッセージのBurrows-Wheeler変換行列の最後の列であるシンボルストリングLを表す識別子核酸分子の第1のプールを取得することであって、前記第1のプールが、粉末、液体、または固体の形態を有し、前記第1のプール内の各識別子核酸分子が成分核酸分子を含み、前記成分核酸分子の少なくとも一部分が、1つまたは複数のプローブに結合するように構成される、第1のプールを取得することと、
    (b)識別子核酸分子のr個の第2のプールを取得することであって、前記識別子核酸分子の各々が、Lから導出されたカウンタシンボルストリングCに対応し、ここでv=1、2、...、rであり、対応するシンボル値Rを有するL内のシンボルの数のランニングカウントを表す、r個の第2のプールを取得することと、
    (c)前記第1のプールおよび前記r個の第2のプールからの識別子核酸分子に選択的にアクセスすることによって、前記メッセージ内の長さpの特定のシンボルパターンの前記カウントを取得することとを含む方法。
  80. ステップ(c)が、前記Burrows-Wheeler変換行列の第1の列Fを再構築することをさらに含む、請求項79に記載の方法。
  81. ステップ(c)が、一連のプローブを使用して、L内の対応する各シンボル値Rの発生の総数を表す前記r個の第2のプールの各々における前記最後のカウンタシンボルからの前記識別子核酸分子にアクセスすることと、対応する各シンボル値Rの発生の前記総数を使用して、Fを再構築することとを含む、請求項80に記載の方法。
  82. ステップ(c)が、前記パターン内の第pのシンボル値を有するF内の位置の範囲を判定することをさらに含む、請求項80および81のいずれかに記載の方法。
  83. F内の位置の前記範囲が、第1の位置hおよび最後の位置zによって、hおよびzを含めて画定される、請求項82に記載の方法。
  84. ステップ(c)が、前記第pのシンボル後の前記パターン内の先行する各シンボルに対して、
    一連のプローブを使用して、前記第1のプールおよび前記対応する第2のプールからの前記識別子核酸分子にアクセスして、前記範囲にすぐ先行する位置におけるL内の前記対応するシンボル値の第1のランク、および前記範囲の末端の位置におけるL内の前記対応するシンボル値の第2のランクを判定することと、
    前記第1のランクおよび前記第2のランクを使用して、前記範囲を、前記パターン内の後続のシンボルに先行する前記対応するシンボルのインスタンスを有するF内の位置の範囲に更新することと
    をさらに含む、請求項82および83のいずれかに記載の方法。
  85. 前記第1のランクrh-1が、L内の位置h-1における前記パターン内のそれぞれの先行するシンボル値であり、前記第2のランクrが、L内の位置zにおける前記パターン内のそれぞれの先行するシンボル値である、請求項84に記載の方法。
  86. 前記範囲を更新することが、hをF内の前記パターン内の前記それぞれの先行するシンボル値の第(rh-1+1)のインスタンスの位置に設定することを含む、請求項85に記載の方法。
  87. 前記範囲を更新することが、zをF内の前記パターン内の前記それぞれの先行するシンボル値の第rのインスタンスの索引に設定することを含む、請求項85および86のいずれかに記載の方法。
  88. ステップ(c)が、前記第1および第2のランクの前記最終値に基づいて、前記メッセージ内の前記パターンの発生の前記カウントを設定することをさらに含む、請求項84~87のいずれかに記載の方法。
  89. 発生の前記カウントが、前記第1および第2のランクの前記最終値間の差である、請求項88に記載の方法。
  90. 前記第1および第2のランクが、前記第pのシンボルまたはあらゆる先行するシンボルに対して互いに等しい場合、発生の前記カウントが0に設定される、請求項88に記載の方法。
  91. 識別子核酸分子の前記第1のプールが、r個の第1のプールのうちの1つであり、前記r個の第1のプールの各々が、ビットストリングLに対応し、ここでv=1、2、...、rであり、したがってLの要素が、前記シンボル値Rに一致するLの要素に対してビット値「1」、そうでない場合はビット値「0」を有し、または逆も同様である、請求項79~90のいずれかに記載の方法。
  92. に対応する前記第1のプールが、前記パターン内のシンボル値Rの前記第1および第2のランクを判定するために使用される、請求項91に記載の方法。
  93. 前記メッセージの前記Burrows-Wheeler変換から導出された接尾辞アレイSAを表す識別子核酸分子のプールであるSAプールを取得することをさらに含み、SAの各要素が、前記メッセージ内のLの対応する要素の位置を示す少なくともlog(n)個のビットのビットストリングによって表される、請求項79~92のいずれかに記載の方法。
  94. 前記カウントが0より大きいと仮定して、F内の位置の最終範囲によって与えられる位置における前記SAの要素に対応する前記SAプール内の識別子核酸分子にアクセスすることによって、前記メッセージ内の前記パターンの前記発生を位置付けることをさらに含む、請求項93に記載の方法。
  95. 前記メッセージを表す識別子核酸分子のメッセージプールを取得することをさらに含む、請求項94に記載の方法。
  96. 第1の場所および前記第1の場所を取り囲む位置の近傍に対応する前記メッセージプール内の前記識別子核酸分子にアクセスすることによって、前記パターンの前記第1の場所のコンテキストを抽出することをさらに含む、請求項95に記載の方法。
  97. ステップ(c)が、
    (c.1)前記第1の列F内の前記第pのシンボル値の範囲を画定する第1の位置hおよび最後の位置zを、hおよびzを含めて判定することと、
    (c.2)一連のプローブを使用して、第1のプールおよび第2のプールからの前記識別子核酸分子にアクセスし、L内の位置h-1における前記パターンの第(p-i)のシンボル値のランクrh-1を計算することであり、i=1である、計算することと、
    (c.3)一連のプローブを使用して、第1のプールおよび第2のプールからの前記識別子核酸分子にアクセスし、L内の位置zにおける前記パターンの前記第(p-i)のシンボル値のランクrを計算することと、
    (c.4)rh-1がrに等しい場合、前記メッセージ内の前記パターンの発生の前記カウントを0として設定することと、
    (c.5)そうではなく、rh-1がrに等しくない場合、
    (c.5.A)hをF内の前記第(p-i)のシンボル値の第(rh-1+1)のインスタンスの索引に設定し、
    (c.5.B)zをF内の前記第(p-i)のシンボル値の第rのインスタンスの索引に設定し、
    (c.5.C)iを1だけ増分し、
    (c.5.D)i=p-1になるまで、ステップ(c.2)、(c.3)、(c.4)、(c.5)、(c.5.A)、(c.5.B)、および(c.5.C)を複数回繰り返し、
    (c.5.E)前記メッセージ内の前記パターンの発生の前記カウントをz-h+1として計算することと
    を含む、請求項79~96のいずれかに記載の方法。
  98. (c.2)の前記第1のプールおよび前記第2のプールが、前記パターンの前記第(p-i)のシンボル値に対応する、請求項97に記載の方法。
  99. (c.3)の前記第1のプールおよび前記第2のプールが、前記パターンの前記第(p-i)のシンボル値に対応する、請求項97および98のいずれかに記載の方法。
  100. 核酸分子内へデジタル情報を記憶する方法であって、
    複数のブロックを取得することであって、各ブロックがシンボルストリングを含み、ブロックIDに関連付けられる、取得することと、
    前記複数のブロックのうちの1つのブロックをコンテナに割り当てることと、
    前記ブロックを、前記コンテナに関連付けられる複数の識別子核酸配列にマッピングすることであって、各識別子核酸配列が成分核酸配列を含み、前記成分核酸配列の少なくとも一部分が、1つまたは複数のプローブに結合するように構成される、マッピングすることと、
    前記複数の識別子核酸配列の個々の識別子核酸分子を構築することと、
    前記割り当てられたコンテナ内に前記個々の識別子核酸分子を記憶することと
    を含み、前記コンテナおよび前記コンテナに関連付けられた前記複数の識別子核酸配列の識別情報を含む物理アドレスが、前記関連付けられたブロックIDを使用して判定されるように構成される、方法。
  101. 前記ブロックIDが、整数、ストリング、トリプル、属性リスト、または意味注釈である、請求項100に記載の方法。
  102. 前記物理アドレスが、前記関連付けられたブロックIDを使用して前記物理アドレスにアクセスすることを容易にするように設計されたデータ構造に記憶される、請求項100および101のいずれかに記載の方法。
  103. 前記データ構造が、B木、トライ、またはアレイのうちの1つである、請求項100~102のいずれかに記載の方法。
  104. 前記データ構造の少なくとも一部分が、前記デジタル情報とともに索引内に記憶される、請求項102および103のいずれかに記載の方法。
  105. 前記索引が、第2のコンテナに関連付けられた第2の複数の識別子核酸配列を含む、請求項104に記載の方法。
  106. 前記索引が、B木データ構造を含み、前記B木の各ノードが、前記第2の複数の識別子核酸配列の別個の複数の識別子核酸分子を含む、請求項105に記載の方法。
  107. 前記B木内の前記ブロックIDを探索することが、
    第1のノードを含む前記別個の複数の識別子核酸分子にアクセスすることと、
    前記第1のノードの値を読み取ることと、
    ステップ(i)および(ii)のプロセスを後続のノードに対して繰り返すことと
    を含み、前記後続のノードを含む前記別個の複数の識別子核酸分子の識別情報が、前記第1のノードの前記値に関連する前記ブロックIDによって判定される、請求項106に記載の方法。
  108. 前記第1のノードが、前記B木の根ノードであり、ステップ(i)および(ii)の前記プロセスが、前記B木の葉ノードの値が読み取られるまで継続し、前記葉ノードの前記値が、前記ブロックIDに対するブロックが存在するかどうかを通信し、前記ブロックIDが存在する場合、前記ブロックの前記物理アドレスを通信するように構成される、請求項107に記載の方法。
  109. 前記索引が、トライデータ構造を含み、前記トライの各ノードが、前記第2の複数の識別子核酸配列の別個の複数の識別子核酸分子を含む、請求項105に記載の方法。
  110. 前記ブロックIDが、シンボルストリングであり、前記トライデータ構造内の各ノードが、前記シンボルストリングの可能な接頭辞に対応する、請求項109に記載の方法。
  111. 前記トライデータ構造の葉ノードが、前記葉ノード内の前記トライデータ構造によって指定された前記シンボルストリングに一致する前記ブロックIDに関連付けられた前記物理アドレスを表す、請求項110に記載の方法。
  112. 前記データ構造が、アレイであり、前記アレイの各要素が、前記第2の複数の識別子核酸配列の別個の複数の識別子核酸分子を含む、請求項104に記載の方法。
  113. 前記アレイ内の各要素が、ブロックIDに対応する、請求項112に記載の方法。
  114. 前記アレイの各要素が、前記関連付けられたブロックIDの前記物理アドレスを記憶する、請求項113に記載の方法。
  115. 前記第2の複数の識別子核酸配列を含む識別子核酸分子のプールから、一連のプローブを使用して、物理アドレスにアクセスすることをさらに含む、請求項104~114のいずれかに記載の方法。
  116. 前記データ構造が、磁気記憶デバイス、光記憶デバイス、フラッシュメモリデバイス、またはクラウドストレージに記憶される、請求項102に記載の方法。
  117. 前記物理アドレスが、前記物理アドレスを追加のデータ構造に記憶することなく、前記ブロックIDが前記物理アドレスにマッピングされるように、前記ブロックIDに固有に構成される、請求項101に記載の方法。
  118. 前記ブロックIDが、前記物理アドレスに関連付けられた前記複数の識別子核酸配列のうちのすべての識別子核酸配列によって共用される複数の成分核酸配列にマッピングされる、請求項117に記載の方法。
  119. ブロックに関連付けられた複数の識別子核酸配列が、隣接して順序付けられた識別子核酸配列を含み、したがって前記複数の識別子核酸配列が、前記識別子範囲内の前記第1および最後の識別子核酸分子の識別情報を含む識別子範囲によって、対応する物理アドレスに指定される、請求項100~118のいずれかに記載の方法。
  120. 前記識別子範囲内の前記第1および最後の識別子核酸配列が、整数によって表される、請求項119に記載の方法。
  121. 一連のプローブを使用することによって、ブロックに関連付けられた複数の核酸分子にアクセスすることをさらに含む、請求項100~120のいずれかに記載の方法。
  122. 前記プローブがPCRプライマーであり、前記アクセスが、ポリメラーゼ連鎖反応によって実行される、請求項115および121のいずれかに記載の方法。
  123. 前記プローブが親和性タグ付きオリゴヌクレオチドであり、前記アクセスが、親和性プルダウンアッセイによって実行される、請求項112および121のいずれかに記載の方法。
  124. ブロックIDが位置である、請求項100~123のいずれかに記載の方法。
  125. 前記位置が、親シンボルストリングの対応するブロックによって表されるシンボルストリングの位置である、請求項124のいずれかに記載の方法。
  126. 前記親シンボルストリングが、別のシンボルストリングにおけるパターンの前記発生の計数または位置付けのためのデータ構造を含む、請求項125に記載の方法。
  127. 前記データ構造が、カウンタアレイ、Burrows-Wheeler変換(BWT)行列の列、接尾辞アレイ、接尾辞木、または転置索引のうちの1つである、請求項126に記載の方法。
  128. 核酸分子に記憶されたデジタル情報を演算する方法であって、
    識別子核酸分子の第1のプールを取得することであって、前記プールが、粉末、液体、または固体の形態を有し、前記第1のプール内の各識別子核酸分子が成分核酸分子を含み、前記成分核酸分子の少なくとも一部分が、1つまたは複数のプローブに結合するように構成され、前記識別子核酸分子が、入力シンボルストリングを表す、取得することと、
    前記第1のプール内の前記識別子核酸分子でif-then-else演算を実行することであって、前記if-then-else演算が、プローブを有する前記成分核酸分子のうちの少なくとも1つを標的とし、前記第1のプールからの識別子核酸分子のサブセットを有する中間プールを作成する、実行することと、
    ステップ(b)を繰り返すことと
    を含み、出力シンボルストリングの少なくとも一部分を表す識別子核酸分子の最終プールが作成されるまで、すべての後続のステップで、前記中間プールが前記第1のプールに取って代わる、方法。
  129. 前記第1のプール内の各識別子核酸分子が、M個の層の各々から別個の成分核酸分子を含み、各層が、成分核酸分子のセットを含む、請求項128に記載の方法。
  130. if-then-else演算が、特有の成分核酸分子を含むプール内の識別子核酸分子にアクセスすることを含む、請求項128および129のいずれかに記載の方法。
  131. プローブがPCRプライマーであり、アクセスが、ポリメラーゼ連鎖反応によって実行される、請求項130のいずれかに記載の方法。
  132. プローブが親和性タグ付きオリゴヌクレオチドであり、アクセスが、親和性プルダウンアッセイによって実行される、請求項130に記載の方法。
  133. 識別子核酸分子の1つまたは複数のプールで並列に、2つまたはそれよりも多いif-then-else演算が実行される、請求項128~132のいずれかに記載の方法。
  134. 前記第1のプール、前記中間プール、または前記最終プールのうちの少なくとも1つを少なくとも2つの複製プールに分割することをさらに含む、請求項128~133に記載の方法。
  135. 前記第1のプール、前記中間プール、または前記最終プールのうちの前記少なくとも1つを分割前に複製することをさらに含む、請求項134に記載の方法。
  136. 前記複製が、ポリメラーゼ連鎖反応(PCR)によって実行される、請求項135に記載の方法。
  137. 識別子核酸分子の少なくとも2つの中間プールを組み合わせて、識別子核酸分子の新しい中間プールまたは識別子核酸分子の第2のプールを形成することをさらに含む、請求項128~136のいずれかに記載の方法。
  138. 核酸分子のプールに記憶されたデジタル情報からシンボルストリング内の特定の位置における特定のシンボル値のランクを取得する方法であって、各シンボルが、シンボル値およびシンボル位置を有し、前記方法が、
    (a)前記シンボルストリングを表す識別子核酸分子の第1のプールを取得することであって、前記プールが、粉末、液体、または固体の形態を有し、前記第1のプール内の各識別子核酸分子が成分核酸分子を含み、前記成分核酸分子の少なくとも一部分が、1つまたは複数のプローブに結合するように構成される、第1のプールを取得することと、
    (b)前記シンボルストリングから導出されたカウンタシンボルストリングを表す識別子核酸分子の第2のプールを取得することであって、各カウンタシンボルが、前記シンボルストリングのすべてのw個のシンボル内の前記特定のシンボル値のランニングカウントを表す、第2のプールを取得することと、
    (c)(1)前記特定の位置に先行するw個のシンボルのすべてのブロック、または(2)前記特定の位置を含むw個のシンボルのブロックを含む、前記特定の位置に先行するw個のシンボルのすべてのブロックのいずれかに対して、前記特定のシンボル値の前記ランニングカウントを示す対応するカウンタシンボルを表す前記第2のプール内の前記識別子核酸分子を少なくとも標的とするように、第2の一連のプローブを有する(b)の前記第2のプールにアクセスすることによって、第1のカウントを取得することと、
    (d)(1)前記特定の位置に先行しもしくは前記特定の位置を含む、(c)で計数されていないシンボルを表す、または(2)(c)で計数されたが前記特定の位置に先行しないもしくは前記特定の位置を含まないシンボルを表す、前記第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とするように、第1の一連のプローブを有する(a)の前記第1のプールにアクセスすることによって、第2のカウントを取得することと、
    (e)前記第1のカウントおよび前記第2のカウントから、前記シンボルストリング内の前記特定の位置における前記特定のシンボル値の前記ランクを取得することと
    を含む方法。
  139. 前記第1のプール内の前記識別子核酸分子が、識別子核酸分子の存在が、前記シンボル位置における特定のシンボル値を表すように、前記シンボルストリングにマッピングされたビットストリングを表す、請求項138に記載の方法。
  140. (c)の前記第1のカウントが、前記特定の位置に先行するw個のシンボルのすべてのブロックを表すとき、(d)の前記第1の一連のプローブが、前記特定の位置に先行しまたは前記特定の位置を含む、(c)で計数されていないシンボルを表す前記第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とし、前記シンボルストリング内の前記特定の位置における前記特定のシンボル値の前記ランクが、(e)で前記第1および第2のカウントを合計することによって取得される、請求項138および139のいずれかに記載の方法。
  141. (c)の前記第1のカウントが、前記特定の位置を含むw個のシンボルの前記ブロックを含む、前記特定の位置に先行するw個のシンボルのすべてのブロックを表すとき、前記第1の一連のプローブが、(c)で計数されたが前記特定の位置に先行しないまたは前記特定の位置を含まないシンボルを表す前記第1のプール内の1つまたは複数の別個の識別子核酸分子を標的とし、前記シンボルストリング内の前記特定の位置における前記特定のシンボル値の前記ランクが、(e)で前記第1のカウントから前記第2のカウントを引くことによって取得される、請求項138および139のいずれかに記載の方法。
  142. 前記第1のカウントが、(c)の前記標的とされた識別子核酸分子に対応するカウンタシンボル値を読み取ることによって取得される、請求項138~141のいずれかに記載の方法。
  143. 前記第2のカウントが、(d)からの前記標的とされた識別子核酸分子を読み取ることによって取得される、請求項138~142のいずれかに記載の方法。
  144. (a)の前記第1のプールが、(b)の前記第2のプールである、請求項138~143のいずれかに記載の方法。
  145. (a)の前記第1のプールが、(b)の前記第2のプールとは別個である、請求項138~143のいずれかに記載の方法。
  146. 前記第1のプール内の対応する識別子核酸分子の存在が、第1のシンボル値を示し、前記第1のプール内の対応する識別子核酸分子の不在が、第2のシンボル値を示す、請求項138~145のいずれかに記載の方法。
  147. 前記シンボルストリングが、長さnを有し、前記カウンタシンボルが、bビットによって表され、ここでbがlog(n+1)の上限である、請求項138~146のいずれかに記載の方法。
  148. 前記カウンタシンボルストリングが、nをwで割った上限個のカウンタシンボルを含み、bにnをwで割った上限を掛けた値に対応する長さを有するカウンタビットストリングによって表される、請求項147に記載の方法。
  149. 前記特定の位置が、w個のシンボルの前記第1のブロックの範囲内である場合、w個のシンボルの前記第1のブロックに先行する前記ランニングカウントが0である、請求項138~148のいずれかに記載の方法。
  150. 前記特定の位置が、w個のシンボルの前記第1のブロックの範囲内にない場合、前記特定の位置に先行するw個のシンボルのすべてのブロックの前記カウンタシンボルが、前記シンボルストリングの0からw*B(x)-1の位置範囲内の前記特定のシンボル値の発生の数を表し、0が前記シンボルストリングの第1の位置であり、xが前記シンボルストリング内の前記特定の位置に対応し、B(x)がxをwで割った下限である、請求項138~149のいずれかに記載の方法。
  151. (c)の前記第2のプール内の前記標的とされた識別子核酸分子が、位置b*B(x)およびb*(B(x)+1)-1によって画定される前記範囲内であり、0の位置が、前記シンボルストリング内の前記第1の位置に対応する、請求項150に記載の方法。
  152. 前記第2のカウントが、前記シンボルストリングのw*B(x)からxの前記位置範囲内の前記特定のシンボル値の発生の数に対応し、xが前記シンボルストリング内の前記特定の位置に対応し、位置0が、前記第1の位置であり、B(x)が、xをwで割った下限である、請求項138~151のいずれかに記載の方法。
  153. wが、前記シンボルストリングのw個のシンボルを表すビットの長さが、ビットの長さbと同等になり、前記カウンタシンボルを表すように設定される、請求項138~152のいずれかに記載の方法。
  154. wが1の値に設定される、請求項138~152のいずれかに記載の方法。
  155. 前記第1のカウントが、前記特定の位置を含むw個のシンボルの前記ブロックに対応する前記カウンタシンボルを表す(c)の識別子核酸分子を標的とすることによって取得され、前記ランクが前記第1のカウントと同等である、請求項154に記載の方法。
  156. ステップ(d)が実行されない、請求項155に記載の方法。
  157. 前記シンボルストリング内のw個のシンボルのブロックが、識別子核酸分子の前記第1のプール内の隣接して順序付けられた識別子核酸分子のブロックにマッピングされる、請求項138~156のいずれかに記載の方法。
  158. 前記シンボルストリング内の前記シンボルがビットであり、各ビットが識別子核酸分子にマッピングされ、したがって識別子核酸分子の前記第1のプール内の前記識別子の有無が、前記ビットの値を示す、請求項157に記載の方法。
  159. 前記シンボルストリングの固定長のサブストリングが、固定数の可能な固有の識別子核酸分子からの固定数の固有の識別子核酸分子を含むコードワードにマッピングされる、請求項157および158のいずれかに記載の方法。
  160. 追加の情報を使用して、前記第1および第2のプールからの識別子核酸分子の書込み、アクセス、および読取りのエラーを検出および補正することをさらに含む、請求項138~159のいずれかに記載の方法。
  161. 前記追加の情報が、前記第1および第2のプールの前記識別子核酸分子に記憶される、請求項160に記載の方法。
  162. 前記シンボルストリングが、ビットストリングを表す、請求項138~161のいずれかに記載の方法。
  163. 前記シンボルストリングの各シンボルが、固定数のビットに対応する、請求項162に記載の方法。
  164. (b)の識別子核酸分子の異なる第2のプールが、特有のシンボル値のインスタンスの数を計数する異なるカウンタシンボルストリングを表し、異なる各カウンタシンボルストリングが、対応する特有のシンボル値のインスタンスを計数する、請求項162および163のいずれかに記載の方法。
  165. M個の選択された成分核酸分子を物理的に組み立てることによって、識別子核酸分子が形成され、前記M個の選択された成分核酸分子の各々が、M個の異なる層に分離された別個の成分核酸分子のセットから選択される、請求項138~164のいずれかに記載の方法。

JP2021566244A 2019-05-09 2020-05-11 Dnaに基づくデータ記憶における探索、算出、および索引付けのためのデータ構造および動作 Pending JP2022531790A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962845638P 2019-05-09 2019-05-09
US62/845,638 2019-05-09
US201962860117P 2019-06-11 2019-06-11
US62/860,117 2019-06-11
US201962890243P 2019-08-22 2019-08-22
US62/890,243 2019-08-22
PCT/US2020/032384 WO2020227718A1 (en) 2019-05-09 2020-05-11 Data structures and operations for searching, computing, and indexing in dna-based data storage

Publications (2)

Publication Number Publication Date
JP2022531790A true JP2022531790A (ja) 2022-07-11
JPWO2020227718A5 JPWO2020227718A5 (ja) 2023-05-16

Family

ID=70857293

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021566244A Pending JP2022531790A (ja) 2019-05-09 2020-05-11 Dnaに基づくデータ記憶における探索、算出、および索引付けのためのデータ構造および動作

Country Status (7)

Country Link
US (2) US11610651B2 (ja)
EP (1) EP3966823A1 (ja)
JP (1) JP2022531790A (ja)
KR (1) KR20220017409A (ja)
AU (1) AU2020268440A1 (ja)
CA (1) CA3139819A1 (ja)
WO (1) WO2020227718A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2017363146B2 (en) 2016-11-16 2023-11-02 Catalog Technologies, Inc. Systems for nucleic acid-based data storage
US11734231B2 (en) * 2017-10-30 2023-08-22 AtomBeam Technologies Inc. System and methods for bandwidth-efficient encoding of genomic data
WO2019160133A1 (ja) * 2018-02-19 2019-08-22 日本電信電話株式会社 情報管理装置、情報管理方法及び情報管理プログラム
JP7364604B2 (ja) 2018-03-16 2023-10-18 カタログ テクノロジーズ, インコーポレイテッド 核酸ベースのデータ記憶のための化学的方法
GB2576304B (en) * 2018-07-26 2020-09-09 Evonetix Ltd Accessing data storage provided using double-stranded nucleic acid molecules
EP3966823A1 (en) 2019-05-09 2022-03-16 Catalog Technologies, Inc. Data structures and operations for searching, computing, and indexing in dna-based data storage
AU2021271639A1 (en) 2020-05-11 2022-12-08 Catalog Technologies, Inc. Programs and functions in DNA-based data storage
US11429279B2 (en) * 2020-09-16 2022-08-30 Samsung Electronics Co., Ltd. Automatic data separation and placement for compressed data in a storage device
WO2023056097A1 (en) * 2021-10-01 2023-04-06 Imply Data, Inc. Iterative querying mechanism for data aggregation and visualization
WO2023177864A1 (en) * 2022-03-18 2023-09-21 Catalog Technologies, Inc. Combinatorial enumeration and search for nucleic acid-based data storage
CN117669703A (zh) * 2022-08-17 2024-03-08 密码子(杭州)科技有限公司 用于在分子中存储信息的方法、设备和系统
US12061637B2 (en) * 2022-09-11 2024-08-13 Microsoft Technology Licensing, Llc Heuristic identification of shared substrings between text documents
KR20240044353A (ko) 2022-09-27 2024-04-04 서울대학교산학협력단 핵산 응집체를 이용한 분자 연산 가속화 방법

Family Cites Families (164)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050032048A1 (en) 1988-05-03 2005-02-10 Oxford Gene Technology Limited Analyzing polynucleotide sequences
US5821886A (en) 1996-10-18 1998-10-13 Samsung Electronics Company, Ltd. Variable length code detection in a signal processing system
AU751956B2 (en) 1997-03-20 2002-09-05 University Of Washington Solvent for biopolymer synthesis, solvent microdroplets and methods of use
US6419883B1 (en) 1998-01-16 2002-07-16 University Of Washington Chemical synthesis using solvent microdroplets
AU6846698A (en) 1997-04-01 1998-10-22 Glaxo Group Limited Method of nucleic acid amplification
US6537747B1 (en) 1998-02-03 2003-03-25 Lucent Technologies Inc. Data transmission using DNA oligomers
US6187537B1 (en) 1998-04-27 2001-02-13 Donald E. Zinn, Jr. Process and apparatus for forming a dry DNA transfer film, a transfer film product formed thereby and an analyzing process using the same
US6458583B1 (en) 1998-09-09 2002-10-01 Agilent Technologies, Inc. Method and apparatus for making nucleic acid arrays
US6309828B1 (en) 1998-11-18 2001-10-30 Agilent Technologies, Inc. Method and apparatus for fabricating replicate arrays of nucleic acid molecules
US6221653B1 (en) 1999-04-27 2001-04-24 Agilent Technologies, Inc. Method of performing array-based hybridization assays using thermal inkjet deposition of sample fluids
US7501245B2 (en) 1999-06-28 2009-03-10 Helicos Biosciences Corp. Methods and apparatuses for analyzing polynucleotide sequences
US6446642B1 (en) 1999-11-22 2002-09-10 Agilent Technologies, Inc. Method and apparatus to clean an inkjet reagent deposition device
CN100485032C (zh) 2001-05-11 2009-05-06 松下电器产业株式会社 生物分子基底,使用它的检验和诊断方法及装置
WO2003025123A2 (en) 2001-08-28 2003-03-27 Mount Sinai School Of Medecine Dna: a medium for long-term information storage specification
EP1430462A4 (en) 2001-09-25 2006-12-20 Dnaform Kk PRINTED MATERIALS INCLUDING AN OLIGOMERE AND / OR POLYMER-COATED MEDIA, METHOD FOR THE PREPARATION THEREOF, AND METHOD OF DISPENSING AND / OR STORAGE
US7361310B1 (en) 2001-11-30 2008-04-22 Northwestern University Direct write nanolithographic deposition of nucleic acids from nanoscopic tips
US20030116630A1 (en) 2001-12-21 2003-06-26 Kba-Giori S.A. Encrypted biometric encoded security documents
US6773888B2 (en) 2002-04-08 2004-08-10 Affymetrix, Inc. Photoactivatable silane compounds and methods for their synthesis and use
WO2003101736A2 (en) 2002-05-29 2003-12-11 Arizona Board Of Regents, Acting On Behalf Of Arizona State University Nanoscale ink-jet printing
US20040043390A1 (en) 2002-07-18 2004-03-04 Asat Ag Applied Science & Technology Use of nucleotide sequences as carrier of cultural information
US8071168B2 (en) 2002-08-26 2011-12-06 Nanoink, Inc. Micrometric direct-write methods for patterning conductive material and applications to flat panel display repair
US7491422B2 (en) 2002-10-21 2009-02-17 Nanoink, Inc. Direct-write nanolithography method of transporting ink with an elastomeric polymer coated nanoscopic tip to form a structure having internal hollows on a substrate
DE10308931A1 (de) 2003-02-28 2004-09-23 Apibio Sas System und Verfahren zur Synthese von Polymeren
US6943417B2 (en) 2003-05-01 2005-09-13 Clemson University DNA-based memory device and method of reading and writing same
JP2005080523A (ja) 2003-09-05 2005-03-31 Sony Corp 生体遺伝子に導入するdna、遺伝子導入ベクター、細胞、生体遺伝子への情報導入方法、情報処理装置および方法、記録媒体、並びにプログラム
US9317664B2 (en) 2003-10-14 2016-04-19 Verseon Corporation Method and device for partitioning a molecule
WO2005042716A2 (en) 2003-10-31 2005-05-12 President And Fellows Of Harvard College Nucleic acid binding oligonucleotides
DE102005012567B4 (de) 2005-03-04 2008-09-04 Identif Gmbh Markierungslösung, deren Verwendung und Verfahren zu ihrer Herstellung
EP1752213A1 (en) 2005-08-12 2007-02-14 Samsung Electronics Co., Ltd. Device for printing droplet or ink on substrate or paper
WO2007042967A1 (en) 2005-10-07 2007-04-19 Koninklijke Philips Electronics N.V. Ink jet device for the controlled positioning of droplets of a substance onto a substrate, method for the controlled positioning of droplets of a substance, and use of an ink jet device
CN101282842B (zh) 2005-10-07 2010-09-01 皇家飞利浦电子股份有限公司 用于将物质小滴受控地定位到基底上的喷墨装置和方法
EP1782886A1 (en) 2005-11-02 2007-05-09 Sony Deutschland GmbH A method of patterning molecules on a substrate using a micro-contact printing process
WO2007060634A1 (en) 2005-11-28 2007-05-31 Koninklijke Philips Electronics N. V. Ink jet device for releasing controllably a plurality of substances onto a substrate, method of discriminating between a plurality of substances and use of an ink jet device
EP1963105A2 (en) 2005-12-22 2008-09-03 Koninklijke Philips Electronics N.V. Ink jet device for the positioning of a substance onto a substrate, method for the positioning of a substance onto a substrate and use of an ink jet device
CN101370588A (zh) 2006-01-12 2009-02-18 皇家飞利浦电子股份有限公司 用于在基材上释放多种物质的喷墨设备及方法
JP2009538123A (ja) 2006-04-19 2009-11-05 アプライド バイオシステムズ, エルエルシー ゲル非含有ビーズベースの配列決定のための試薬、方法およびライブラリー
RU2009114839A (ru) 2006-09-21 2010-10-27 Конинклейке Филипс Электроникс Н.В. (Nl) Струйное устройство и способ изготовления подложки биологической пробы с использованием печатающей головки и средства для ускоренного движения
BRPI0718223A2 (pt) 2006-10-30 2013-11-12 Koninkl Philips Electronics Nv Substrato de ensaio biológico poroso, métodos para produzir um substrato de ensaio biológico e para examinar fluidos de analito, e, dispositivo de jato de tinta para produzir um substrato de ensaio biológico
US20090023607A1 (en) 2007-05-09 2009-01-22 Nanolnk, Inc. Compact nanofabrication apparatus
US20120164396A1 (en) 2007-06-20 2012-06-28 Northwestern University Matrix assisted ink transport
US9061494B2 (en) 2007-07-19 2015-06-23 The Board Of Trustees Of The University Of Illinois High resolution electrohydrodynamic jet printing for manufacturing systems
US8452725B2 (en) 2008-09-03 2013-05-28 Hamid Hatami-Hanza System and method of ontological subject mapping for knowledge processing applications
US9684678B2 (en) 2007-07-26 2017-06-20 Hamid Hatami-Hanza Methods and system for investigation of compositions of ontological subjects
CZ301799B6 (cs) 2007-07-30 2010-06-23 Kencl@Lukáš Zpusob úpravy datové informace v systému
EP2190672B1 (en) 2007-08-20 2011-10-26 Moore Wallace North America, Inc. Nanoparticle-based compositions compatible with jet printing
DE102007057802B3 (de) 2007-11-30 2009-06-10 Geneart Ag Steganographische Einbettung von Informationen in kodierenden Genen
JP5171346B2 (ja) 2008-03-28 2013-03-27 株式会社日立ハイテクノロジーズ 文字列検索システム及び方法
EP2329425B1 (en) 2008-09-10 2013-07-31 DataLase Ltd Multi-coloured codes
WO2010029629A1 (ja) 2008-09-11 2010-03-18 長浜バイオラボラトリー株式会社 Dna含有インク組成物
US8769689B2 (en) 2009-04-24 2014-07-01 Hb Gary, Inc. Digital DNA sequence
US8806127B2 (en) 2009-10-26 2014-08-12 Genisyss Llc Data storage device with integrated DNA storage media
US20110269119A1 (en) 2009-10-30 2011-11-03 Synthetic Genomics, Inc. Encoding text into nucleic acid sequences
US8735327B2 (en) 2010-01-07 2014-05-27 Jeansee, Llc Combinatorial DNA taggants and methods of preparation and use thereof
US9187777B2 (en) 2010-05-28 2015-11-17 Gen9, Inc. Methods and devices for in situ nucleic acid synthesis
US20110312541A1 (en) 2010-06-17 2011-12-22 Geneasys Pty Ltd Loc for detection of hybridization of nucleic acid sequences with primer-linked linear probes
US9114399B2 (en) 2010-08-31 2015-08-25 Canon U.S. Life Sciences, Inc. System and method for serial processing of multiple nucleic acid assays
EP2630263B2 (en) 2010-10-22 2021-11-10 Cold Spring Harbor Laboratory Varietal counting of nucleic acids for obtaining genomic copy number information
WO2012058638A2 (en) 2010-10-29 2012-05-03 President And Fellows Of Harvard College Nucleic acid nanostructure barcode probes
US20120329561A1 (en) 2010-12-09 2012-12-27 Genomic Arts, LLC System and methods for generating avatars and art
KR101345337B1 (ko) 2011-06-13 2013-12-30 한국생명공학연구원 원자간력 현미경(afm)을 이용한 딥-펜 나노리소그래피에서의 단일 또는 다중팁을 이용한 나노포지셔닝 기판 제조장치 및 제조방법
WO2013012881A2 (en) 2011-07-20 2013-01-24 The Regents Of The University Of California Dual-pore device
US20130253839A1 (en) 2012-03-23 2013-09-26 International Business Machines Corporation Surprisal data reduction of genetic data for transmission, storage, and analysis
US20150083797A1 (en) 2012-05-09 2015-03-26 Apdn (B.V.I.) Inc. Verification of physical encryption taggants using digital representatives and authentications thereof
SG11201407818PA (en) 2012-06-01 2014-12-30 European Molecular Biology Lab Embl High-capacity storage of digital information in dna
EP2875458A2 (en) 2012-07-19 2015-05-27 President and Fellows of Harvard College Methods of storing information using nucleic acids
US9266370B2 (en) 2012-10-10 2016-02-23 Apdn (B.V.I) Inc. DNA marking of previously undistinguished items for traceability
US8937564B2 (en) 2013-01-10 2015-01-20 Infinidat Ltd. System, method and non-transitory computer readable medium for compressing genetic information
GB2519255B (en) 2013-02-01 2016-01-06 Univ California Methods for genome assembly and haplotype phasing
EP2953524B1 (en) 2013-02-06 2018-08-01 Freenome Holdings Inc. Systems and methods for early disease detection and real-time disease monitoring
KR102245192B1 (ko) 2013-05-06 2021-04-29 온테라 인크. 나노포어를 이용한 표적 검출
CA2926436A1 (en) 2013-10-07 2015-04-16 Judith Murrah Multimode image and spectral reader
US10027347B2 (en) 2014-03-28 2018-07-17 Thomson Licensing Methods for storing and reading digital data on a set of DNA strands
US10020826B2 (en) 2014-04-02 2018-07-10 International Business Machines Corporation Generating molecular encoding information for data storage
US20150312212A1 (en) 2014-04-24 2015-10-29 David Holmes Holistic embodiment of dna and ipv6
EP2958238A1 (en) 2014-06-17 2015-12-23 Thomson Licensing Method and apparatus for encoding information units in code word sequences avoiding reverse complementarity
KR101788673B1 (ko) 2014-06-24 2017-11-15 싸이퍼롬, 인코퍼레이티드 핵산염기서열 보안 방법, 장치 및 이를 저장한 기록매체
US20170218228A1 (en) 2014-07-30 2017-08-03 Tufts University Three Dimensional Printing of Bio-Ink Compositions
WO2016015701A1 (de) 2014-07-31 2016-02-04 Schebo Biotech Ag Vorrichtung zur bioanalytik, deren herstellung und verfahren zum nachweis von bioanalyten mittels der vorrichtung
EP2983297A1 (en) 2014-08-08 2016-02-10 Thomson Licensing Code generation method, code generating apparatus and computer readable storage medium
WO2016036969A1 (en) 2014-09-03 2016-03-10 Nantomics, Llc Synthetic genomic variant-based secure transaction devices, systems and methods
US10860562B1 (en) 2014-09-12 2020-12-08 Amazon Technologies, Inc. Dynamic predicate indexing for data stores
CA2964985A1 (en) 2014-10-18 2016-04-21 Girik MALIK A biomolecule based data storage system
EP3215895B1 (de) 2014-11-03 2022-02-23 Universität Osnabrück Verfahren zur durchführung eines kapillar-nanodrucks, feld von tintentropfen und feld von drähten erhältlich nach dem verfahren
US10400028B2 (en) 2014-11-20 2019-09-03 Cytonics Corporation Therapeutic variant alpha-2-macroglobulin compositions
EP3067809A1 (en) 2015-03-13 2016-09-14 Thomson Licensing Method and apparatus for storing and selectively retrieving data encoded in nucleic acid molecules
WO2016164779A1 (en) 2015-04-10 2016-10-13 University Of Washington Integrated system for nucleic acid-based storage of digital data
US10385387B2 (en) 2015-04-20 2019-08-20 Pacific Biosciences Of California, Inc. Methods for selectively amplifying and tagging nucleic acids
US10589273B2 (en) 2015-05-08 2020-03-17 Illumina, Inc. Cationic polymers and method of surface application
US10423341B1 (en) 2015-06-12 2019-09-24 Bahram Ghaffarzadeh Kermani Accurate and efficient DNA-based storage of electronic data
US9898579B2 (en) 2015-06-16 2018-02-20 Microsoft Technology Licensing, Llc Relational DNA operations
WO2017011492A1 (en) 2015-07-13 2017-01-19 President And Fellows Of Harvard College Methods for retrievable information storage using nucleic acids
US20170060924A1 (en) 2015-08-26 2017-03-02 Exablox Corporation B-Tree Based Data Model for File Systems
US11512347B2 (en) 2015-09-22 2022-11-29 Twist Bioscience Corporation Flexible substrates for nucleic acid synthesis
US20170093851A1 (en) 2015-09-30 2017-03-30 Aetna Inc. Biometric authentication system
EP3160049A1 (en) 2015-10-19 2017-04-26 Thomson Licensing Data processing method and device for recovering valid code words from a corrupted code word sequence
WO2017082978A1 (en) 2015-11-13 2017-05-18 SoluDot LLC Method for high throughput dispensing of biological samples
US10566077B1 (en) 2015-11-19 2020-02-18 The Board Of Trustees Of The University Of Illinois Re-writable DNA-based digital storage with random access
US10047235B2 (en) 2015-12-08 2018-08-14 Xerox Corporation Encoding liquid ink with a device specific biomarker
WO2017142999A2 (en) 2016-02-18 2017-08-24 President And Fellows Of Harvard College Methods and systems of molecular recording by crispr-cas system
US10438662B2 (en) 2016-02-29 2019-10-08 Iridia, Inc. Methods, compositions, and devices for information storage
US10640822B2 (en) 2016-02-29 2020-05-05 Iridia, Inc. Systems and methods for writing, reading, and controlling data stored in a polymer
US10859562B2 (en) * 2016-02-29 2020-12-08 Iridia, Inc. Methods, compositions, and devices for information storage
WO2017151195A1 (en) 2016-02-29 2017-09-08 The Penn State Research Foundation Nucleic acid molecular diagnosis
US10883140B2 (en) 2016-04-21 2021-01-05 President And Fellows Of Harvard College Method and system of nanopore-based information encoding
US11514331B2 (en) 2016-04-27 2022-11-29 Massachusetts Institute Of Technology Sequence-controlled polymer random access memory storage
JP7120630B2 (ja) 2016-05-02 2022-08-17 エンコディア, インコーポレイテッド 核酸エンコーディングを使用した巨大分子解析
EP3470997B1 (en) 2016-05-04 2024-10-23 BGI Shenzhen Method for using dna to store text information, decoding method therefor and application thereof
EP3478852B1 (en) 2016-07-01 2020-08-12 Microsoft Technology Licensing, LLC Storage through iterative dna editing
WO2018017131A1 (en) 2016-07-22 2018-01-25 Hewlett-Packard Development Company, L.P. Method of preparing test samples
AU2017298017A1 (en) 2016-07-22 2019-02-21 Nucleotrace Pty. Ltd. A method for amplification of nucleic acid sequences
US20190194484A1 (en) 2016-09-08 2019-06-27 Thomas Villwock Methods and systems for authenticating goods using analyte encoded security fluids
US10417457B2 (en) 2016-09-21 2019-09-17 Twist Bioscience Corporation Nucleic acid based data storage
US10370246B1 (en) 2016-10-20 2019-08-06 The Board Of Trustees Of The University Of Illinois Portable and low-error DNA-based data storage
WO2018081566A1 (en) 2016-10-28 2018-05-03 Integrated Dna Technologies, Inc. Dna data storage using reusable nucleic acids
AU2017363146B2 (en) 2016-11-16 2023-11-02 Catalog Technologies, Inc. Systems for nucleic acid-based data storage
US10650312B2 (en) * 2016-11-16 2020-05-12 Catalog Technologies, Inc. Nucleic acid-based data storage
US10853244B2 (en) 2016-12-07 2020-12-01 Sandisk Technologies Llc Randomly writable memory device and method of operating thereof
US10984029B2 (en) 2016-12-15 2021-04-20 Sap Se Multi-level directory tree with fixed superblock and block sizes for select operations on bit vectors
US10417208B2 (en) 2016-12-15 2019-09-17 Sap Se Constant range minimum query
WO2018132457A1 (en) 2017-01-10 2018-07-19 Roswell Biotechnologies, Inc. Methods and systems for dna data storage
CA3052962A1 (en) 2017-02-08 2018-08-16 Essenlix Corp. Digital assay
US10787699B2 (en) 2017-02-08 2020-09-29 Microsoft Technology Licensing, Llc Generating pluralities of primer and payload designs for retrieval of stored nucleotides
US10793897B2 (en) 2017-02-08 2020-10-06 Microsoft Technology Licensing, Llc Primer and payload design for retrieval of stored polynucleotides
WO2018148260A1 (en) 2017-02-13 2018-08-16 Thomson Licensing Apparatus, method and system for digital information storage in deoxyribonucleic acid (dna)
CN118116478A (zh) 2017-02-22 2024-05-31 特韦斯特生物科学公司 基于核酸的数据存储
US10774379B2 (en) 2017-03-15 2020-09-15 Microsoft Technology Licensing, Llc Random access of data encoded by polynucleotides
US11341459B2 (en) 2017-05-16 2022-05-24 Artentika (Pty) Ltd Digital data minutiae processing for the analysis of cultural artefacts
WO2018222853A1 (en) 2017-05-31 2018-12-06 Molecular Assemblies, Inc. Homopolymer encoded nucleic acid memory
US11174512B2 (en) 2017-05-31 2021-11-16 Molecular Assemblies, Inc. Homopolymer encoded nucleic acid memory
US11612873B2 (en) 2017-05-31 2023-03-28 Molecular Assemblies, Inc. Homopolymer encoded nucleic acid memory
US10742233B2 (en) 2017-07-11 2020-08-11 Erlich Lab Llc Efficient encoding of data for storage in polymers such as DNA
WO2019046768A1 (en) 2017-08-31 2019-03-07 William Marsh Rice University SYMBOLIC SEQUENCING OF DNA AND RNA BY SEQUENCE CODING
US11538554B1 (en) * 2017-09-19 2022-12-27 The Board Of Trustees Of The Univ Of Illinois Nick-based data storage in native nucleic acids
WO2019075100A1 (en) 2017-10-10 2019-04-18 Roswell Biotechnologies, Inc. METHODS, APPARATUS AND SYSTEMS FOR STORING DNA DATA WITHOUT AMPLIFICATION
WO2019081145A1 (en) 2017-10-27 2019-05-02 Eth Zurich ENCODING AND DECODING INFORMATION IN SYNTHETIC DNA WITH CRYPTOGRAPHIC KEYS GENERATED BASED ON POLYMORPHIC CHARACTERISTICS OF NUCLEIC ACIDS
EP3707150A1 (en) 2017-11-10 2020-09-16 Massachusetts Institute Of Technology Microbial production of pure single stranded nucleic acids
WO2019136175A1 (en) 2018-01-04 2019-07-11 Twist Bioscience Corporation Dna-based digital information storage
CN111868255A (zh) 2018-03-15 2020-10-30 特温斯特兰德生物科学有限公司 用于富集用于测序应用和其他核酸材料询问的核酸材料的方法和试剂
JP7364604B2 (ja) 2018-03-16 2023-10-18 カタログ テクノロジーズ, インコーポレイテッド 核酸ベースのデータ記憶のための化学的方法
US11339423B2 (en) 2018-03-18 2022-05-24 Bryan Bishop Systems and methods for data storage in nucleic acids
WO2019195479A1 (en) 2018-04-03 2019-10-10 Ippsec Inc. Systems and methods of physical infrastructure and information technology infrastructure security
KR102138864B1 (ko) 2018-04-11 2020-07-28 경희대학교 산학협력단 Dna 디지털 데이터 저장 장치 및 저장 방법, 그리고 디코딩 방법
US11106633B2 (en) 2018-04-24 2021-08-31 EMC IP Holding Company, LLC DNA-based data center with deduplication capability
AU2019270160B2 (en) 2018-05-16 2024-09-19 Catalog Technologies, Inc. Printer-finisher system for data storage in DNA
US20200193301A1 (en) 2018-05-16 2020-06-18 Catalog Technologies, Inc. Compositions and methods for nucleic acid-based data storage
US11093547B2 (en) 2018-06-19 2021-08-17 Intel Corporation Data storage based on encoded DNA sequences
US11093865B2 (en) 2018-06-20 2021-08-17 Brown University Methods of chemical computation
CN112585152A (zh) * 2018-07-11 2021-03-30 加利福尼亚大学董事会 基于核酸的电学上可读的只读存储器
KR20210053292A (ko) 2018-08-03 2021-05-11 카탈로그 테크놀로지스, 인크. 오류 방지 기능을 갖춘 핵산 기반 데이터 저장 및 판독 시스템 및 방법
US10673847B2 (en) 2018-08-28 2020-06-02 Ofer A. LIDSKY Systems and methods for user authentication based on a genetic sequence
US11164190B2 (en) 2018-11-29 2021-11-02 International Business Machines Corporation Method for product authentication using a microfluidic reader
US11162950B2 (en) 2018-11-29 2021-11-02 International Business Machines Corporation Zonal nanofluidic anti-tamper device for product authentication
GB201821155D0 (en) 2018-12-21 2019-02-06 Oxford Nanopore Tech Ltd Method
EP3904527A4 (en) 2018-12-26 2022-08-10 BGI Shenzhen METHOD AND APPARATUS FOR FIXED-POINT EDITING OF A DATA-STORED NUCLEOTIDE SEQUENCE
US11507135B2 (en) 2019-04-15 2022-11-22 Government Of The United States Of America, As Represented By The Secretary Of Commerce Molecular scrivener for reading or writing data to a macromolecule
EP3966823A1 (en) 2019-05-09 2022-03-16 Catalog Technologies, Inc. Data structures and operations for searching, computing, and indexing in dna-based data storage
US10956806B2 (en) 2019-06-10 2021-03-23 International Business Machines Corporation Efficient assembly of oligonucleotides for nucleic acid based data storage
US11066661B2 (en) 2019-08-20 2021-07-20 Seagate Technology Llc Methods of gene assembly and their use in DNA data storage
US20210074380A1 (en) * 2019-09-05 2021-03-11 Microsoft Technology Licensing, Llc Reverse concatenation of error-correcting codes in dna data storage
US11495324B2 (en) 2019-10-01 2022-11-08 Microsoft Technology Licensing, Llc Flexible decoding in DNA data storage based on redundancy codes
US10917109B1 (en) 2020-03-06 2021-02-09 Centre National De La Recherche Scientifique Methods for storing digital data as, and for transforming digital data into, synthetic DNA
AU2021271639A1 (en) 2020-05-11 2022-12-08 Catalog Technologies, Inc. Programs and functions in DNA-based data storage
JP2023546315A (ja) 2020-09-08 2023-11-02 カタログ テクノロジーズ, インコーポレイテッド 核酸の配列決定による書き込みのためのシステムおよび方法
US20220364991A1 (en) 2021-03-24 2022-11-17 Northeastern University Method and System for Decoding Information Stored on a Polymer Sequence

Also Published As

Publication number Publication date
US12002547B2 (en) 2024-06-04
KR20220017409A (ko) 2022-02-11
AU2020268440A1 (en) 2021-12-02
WO2020227718A1 (en) 2020-11-12
US20240055075A1 (en) 2024-02-15
US20200357483A1 (en) 2020-11-12
CA3139819A1 (en) 2020-11-12
EP3966823A1 (en) 2022-03-16
US11610651B2 (en) 2023-03-21

Similar Documents

Publication Publication Date Title
JP2022531790A (ja) Dnaに基づくデータ記憶における探索、算出、および索引付けのためのデータ構造および動作
US20210210165A1 (en) Systems and methods for storing and reading nucleic acid-based data with error protection
AU2017363146B2 (en) Systems for nucleic acid-based data storage
US11306353B2 (en) Programs and functions in DNA-based data storage
US20230317164A1 (en) Systems and methods for writing by sequencing of nucleic acids
Karasikov et al. Sparse binary relation representations for genome graph annotation
El-Shaikh et al. Content-based filter queries on DNA data storage systems
JPWO2004068398A1 (ja) Dnaコンピュータ及びそれを用いた計算方法
Muggli et al. Succinct de Bruijn graph construction for massive populations through space-efficient merging
JP7576536B2 (ja) 誤り保護とともに核酸に基づくデータを記憶および読むためのシステムおよび方法
Balla et al. Approximation Algorithms for the Primer Selection, Planted Motif Search, and Related Problems
WO2024137794A1 (en) Dna-based vector data structure with parallel operations
Garzon et al. Sensitivity and capacity of microarray encodings
Behboodi et al. Fast and Accurate Genomic Minisatellites Disclosure
Piccolo et al. Coordinate-based mapping of tabular data enables fast and scalable queries
EP3830831A2 (en) Systems and methods for storing and reading nucleic acid-based data with error protection
AU2023234435A1 (en) Combinatorial enumeration and search for nucleic acid-based data storage
Heath An optimal method for dna sequencing by hybridization

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230508

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230508

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20230713

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20230816

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240319

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240913

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240925