IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

7665655DNAベースのデータ記憶におけるプログラムおよび機能
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-11
(45)【発行日】2025-04-21
(54)【発明の名称】DNAベースのデータ記憶におけるプログラムおよび機能
(51)【国際特許分類】
   G06F 12/00 20060101AFI20250414BHJP
   G06N 3/123 20230101ALI20250414BHJP
   G11C 13/00 20060101ALI20250414BHJP
   G11C 15/00 20060101ALI20250414BHJP
【FI】
G06F12/00 560F
G06F12/00 560G
G06F12/00 597Z
G06N3/123
G11C13/00 ZNA
G11C15/00 Z
【請求項の数】 16
(21)【出願番号】P 2022568555
(86)(22)【出願日】2021-05-11
(65)【公表番号】
(43)【公表日】2023-06-20
(86)【国際出願番号】 US2021031865
(87)【国際公開番号】W WO2021231493
(87)【国際公開日】2021-11-18
【審査請求日】2024-05-08
(31)【優先権主張番号】63/066,628
(32)【優先日】2020-08-17
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/165,559
(32)【優先日】2021-03-24
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/023,342
(32)【優先日】2020-05-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/023,071
(32)【優先日】2020-05-11
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519173978
【氏名又は名称】カタログ テクノロジーズ, インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ロケ, ナサニエル
(72)【発明者】
【氏名】バティア, スワプニル ピー.
(72)【発明者】
【氏名】ノースウォーシー, マイケル
(72)【発明者】
【氏名】フリッキンジャー, サラ
(72)【発明者】
【氏名】カンバラ, トレイシー
【審査官】後藤 彰
(56)【参考文献】
【文献】特許第6786144(JP,B1)
【文献】特表2020-515243(JP,A)
【文献】特表2020-507168(JP,A)
【文献】国際公開第2019/222561(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G11C 13/00
G11C 15/00
G06N 3/123
(57)【特許請求の範囲】
【請求項1】
核酸分子に記憶されているデジタル情報を操作するための方法であって、
(a)識別子核酸分子の第1のプールを得るステップであって、前記プールが、粉末、液体、または固体形態を有し、前記第1のプールの各識別子核酸分子が成分核酸分子を含み、その少なくとも一部分が、1つまたは複数のプローブに結合するように構成され、前記識別子核酸分子は入力記号列を表すステップと、
(b)前記成分核酸分子の少なくとも1つをプローブで標的化することによって前記第1のプールの前記識別子核酸分子をスクリーニングして、前記第1のプールからの識別子核酸分子のサブセットを含む中間プールを作成するステップであって、前記中間プールが、前記入力記号列に対して行われたif-then-else操作の結果を表すステップと、
(c)ステップ(b)を繰り返すステップであって、出力記号列の少なくとも一部分を表す識別子核酸分子の最終プールが作成されるまで、すべての後続のステップにおいて前記中間プールが前記第1のプールに取って代わるステップと、を含む方法。
【請求項2】
前記第1のプールの各識別子核酸分子が、M個の層の各々からの区別可能な成分核酸配列を含み、各層は、成分核酸配列のセットを含む、請求項1に記載の方法。
【請求項3】
各識別子核酸分子が、データオブジェクトを表す、請求項1又は2に記載の方法。
【請求項4】
前記識別子核酸分子の成分核酸配列が、前記データオブジェクトのオペランドを表す、請求項3に記載の方法。
【請求項5】
前記プローブが、特定の成分核酸分子を含むプール内の識別子核酸分子を含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記プローブが、ポリメラーゼ連鎖反応(PCR)プライマーであり、前記if-then-else操作がPCRによって実行される、請求項1から4のいずれか一項に記載の方法。
【請求項7】
前記プローブが、親和性タグ付けされたオリゴヌクレオチドであり、前記if-then-else操作が、親和性プルダウンアッセイによって実行される、請求項1から4のいずれか一項に記載の方法。
【請求項8】
2つ以上のスクリーニングステップが、識別子核酸分子の1つまたは複数のプールに対して並列に行われる、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記第1のプール、前記中間プール、または前記最終プールの少なくとも1つを、少なくとも2つの重複プールに分けるステップをさらに含む、請求項1から8のいずれか一項に記載の方法。
【請求項10】
分ける前に前記第1のプール、前記中間プール、または前記最終プールの前記少なくとも1つを複製するステップをさらに含む、請求項9に記載の方法。
【請求項11】
前記複製するステップが、ポリメラーゼ連鎖反応(PCR)によって実行される、請求項10に記載の方法。
【請求項12】
識別子核酸分子の少なくとも2つの中間プールを組み合わせて、識別子核酸分子の新しい中間プールまたは識別子核酸分子の第2のプールを形成することをさらに含む、請求項1から11のいずれか一項に記載の方法。
【請求項13】
(c)におけるステップ(b)の前記繰り返しが、グラフプログラムの実行を表し、その出力は、データオブジェクトを表す識別子核酸分子を、前記出力記号列の前記少なくとも一部分を表す前記最終プールに入れる、請求項1から12のいずれか一項に記載の方法。
【請求項14】
前記グラフプログラムが、前記データオブジェクトに対する関数を表す、請求項13に記載の方法。
【請求項15】
前記出力記号列の前記少なくとも一部分が、前記データオブジェクトに対する前記関数の出力である、請求項14に記載の方法。
【請求項16】
識別子核酸分子が入れられる前記最終プールが、前記グラフプログラムに従って、対応するデータオブジェクトに対する前記関数の前記出力を決定する、請求項15に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の参照
本出願は、2020年5月11日に出願された米国仮特許出願第63/023,071号、表題「BRANCHING PROGRAMS IN DNA-BASED DATA STORAGE」、2020年5月12日に出願された米国仮特許出願第63/023,342号、表題「BRANCHING PROGRAMS IN DNA-BASED DATA STORAGE」、2020年8月17日に出願された米国仮特許出願第63/066,628号、表題「PROGRAMS AND FUNCTIONS IN DNA-BASED DATA STORAGE」、および、2021年3月24日に出願された米国 仮特許出願第63/165,559号、表題「PROGRAMS AND FUNCTIONS IN DNA-BASED DATA STORAGE」に基づく優先権およびその利益を主張する。上記で参照される出願の全内容は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
背景
核酸デジタルデータ記憶は、情報を符号化し、長期間にわたって記憶するための安定した手法であり、データは、磁気テープまたはハードドライブ記憶システムよりも高い密度で記憶される。加えて、低温および乾燥条件で保管される核酸分子に記憶されたデジタルデータを、60,000年もの年数またはそれより長い年数を経た後に取得することができる。
【0003】
核酸分子に記憶されたデジタルデータにアクセスする1つの方法は、それらを配列決定することである。しかるが故に、核酸デジタルデータ記憶は、頻繁にはアクセスされないが、長い期間にわたって記憶またはアーカイブすべき大量の情報を有し得るデータを記憶するための理想的な方法であり得る。
【0004】
核酸分子中にデータを記憶する既存の方法は、配列内の塩基間の関係をデジタル情報(例えば、二進コード)に直接変換するような、塩基毎の核酸配列へのデジタル情報(例えば、二進コード)の符号化に依拠する。しかし、そのようなデノボの塩基毎の核酸合成は、エラーを起こしやすく、高費用である。さらに、データが単一塩基の分解能で符号化されている場合、初めに分子のセット全体をデジタル情報に変換することなく、上記のような既存の核酸デジタルデータ記憶の方法によって記憶されているデータに対して、ある機能を行うことはできない。例えば、そのような機能には、論理関数、加算、減算、ならびに特定のクエリーパターンがデータセット中で出現するか否か、出現の回数、および各出現の場所を含むクエリー検索といった、データがディスクに記憶される際に一般に行われる基本的な作業が含まれる。
【発明の概要】
【課題を解決するための手段】
【0005】
要旨
本明細書に記載されるシステム、デバイス、および方法は、概して、データを核酸中に符号化するための方法に関する。符号化方式、データ構造、アクセス方法、コンピュータによる計算プログラム、およびそれらの化学的実装が本明細書において提供される。これらの技術は、従来の核酸ベースのデータ記憶の技術よりも大きいデータセットの符号化と、そのようなデータセットに対するコンピュータによる計算とを可能にする。
【0006】
第1の態様では、核酸分子にデジタル情報を記憶するための方法が本明細書に提供される。方法は、識別子核酸配列をブロックに区画するステップであって、各識別子核酸配列が成分核酸配列を含み、その少なくとも一部分が1つまたは複数のプローブに結合するように構成されているステップと、ブロックのうち1つのブロックに記号列を割り振るステップと、記号列を、ブロック内の複数の識別子核酸配列にマッピングするステップと、複数の識別子核酸配列の個々の識別子核酸分子を構築するステップと、を含む。
【0007】
一部の実装では、マッピングは、ワードをコードワードにマッピングするコードブックを使用して行われ、ワードは各々、記号列の1つまたは複数の記号を含み、コードワードは各々、記号列がマッピングされている識別子核酸配列のうちの1つまたは複数の識別子核酸配列を含む。ブロック当たり固定数のコードワードがあってよい。あるブロックのg番目のインスタンスを符号化している識別子の範囲は、コードワードインスタンス(g-1)c+1~gcを符号化している範囲として計算することができる。
【0008】
一部の実装では、ブロックは、アクセスプログラムによってアクセス可能である。ブロックは位置と関連付けられ、位置は、ブロックにアクセスするための情報を含み得る。ブロックは、別のブロックの位置に関する情報を含有し得る。ブロックはグラフ内のノードを表し得る。前記グラフはツリーであり得る。例えば、ツリーは、サフィックスツリーまたはBツリーである。ブロックは、転置インデックスの要素であり得る。複数のブロックは、リンクされたリストを形成し、リスト内では、第1のブロックが第2のブロックをポイントして大きな記号列を収容し得る。
【0009】
一部の実装では、各ブロックの識別子核酸配列は、指定されたキー層のセット内で同じ成分核酸配列を排他的に共有する。前記キー層は、データオブジェクトを符号化し得る。前記データオブジェクトは、ネイティブキーであり得る。ネイティブキーは、各記号が対応するキー層の成分核酸配列に対応するように構成され得る。各自の対応する成分を含有しているすべての識別子にアクセスすることにより、指定された位置のセットにおいて共通の記号値を共有しているいくつかのキーにわたる範囲クエリーが行われ得る。有限オートマトンまたは正規表現を満たすすべてのキーに対するクエリーは、アクセスプログラムによって行われ得る。
【0010】
一部の実装では、方法は、各キーの関連付けられたブロックに値を記憶するステップをさらに含む。値は、それに対応するキーを使用して取得され得る。キーは、キーの値の関数であり得る。例えば、キーは、それに対応する値に由来する、ハッシュ、ブルームフィルタ、構造アレイ、分類器、シグネチャー、レコード、またはフィンガープリントである。アクセスプログラムは、参照値に由来するクエリーキーに類似する、またはそれと共通の記号値を共有するすべてのキーにアクセスするように設計され得る。
【0011】
一部の実装では、キーの数の計数は、DNA濃度を測定することによって決定される。DNA濃度は、qPCRアッセイ、プレートリーダーアッセイ、蛍光定量法または分光光度分析によって測定され得る。DNA濃度を標準によって正規化して、試料中の識別子配列の数を決定し得る。特定の記号を含有しているキーの相対数は、対応する成分のためのプローブでqPCRを行うことによって決定され得る。
【0012】
一部の実装では、参照キーのための識別子配列が作成される。識別子配列は、類似するすべてのキーを検索するためのハイブリダイゼーション反応でハイブリダイゼーションプローブとして使用され得る。ハイブリダイゼーション反応の温度またはpHを使用して、類似検索のストリンジェンシーを制御し得る。
【0013】
第2の態様では、核酸分子に記憶されているデジタル情報を操作するための方法が本明細書に提供される。方法は、(a)識別子核酸分子の第1のプールを得るステップであって、プールは、粉末、液体、または固体形態を有し、第1のプールの各識別子核酸分子が成分核酸分子を含み、その少なくとも一部分は、1つまたは複数のプローブに結合するように構成され、識別子核酸分子は入力記号列を表すステップと、(b)成分核酸分子の少なくとも1つをプローブで標的化することによって第1のプールの識別子核酸分子をスクリーニングして、第1のプールからの識別子核酸分子のサブセットを含む中間プールを作成するステップであって、中間プールは、入力記号列に対して行われたif-then-else操作の結果を表すステップと、(c)ステップ(b)を繰り返すステップであって、出力記号列の少なくとも一部分を表す識別子核酸分子の最終プールが作成されるまで、すべての後続のステップにおいて中間プールが第1のプールに取って代わるステップと、を含む。
【0014】
一部の実装では、第1のプールの各識別子核酸分子は、M個の層の各々からの区別可能な成分核酸配列を含み、各層は、成分核酸配列のセットを含む。各識別子核酸分子は、データオブジェクトを表し得る。識別子核酸分子の成分核酸配列は、データオブジェクトのオペランドを表し得る。
【0015】
一部の実装では、プローブは、特定の成分核酸分子を含むプール内の識別子核酸分子を含む。一部の実装では、プローブは、ポリメラーゼ連鎖反応(PCR)プライマーであり、if-then-else操作がPCRによって実行される。一部の実装では、プローブは、親和性タグ付けされたオリゴヌクレオチドであり、if-then-else操作は、親和性プルダウンアッセイによって実行される。
【0016】
一部の実装では、2つ以上のif-then-else操作が、識別子核酸分子の1つまたは複数のプールに対して並列に行われる。一部の実装では、方法は、第1のプール、中間プール、または最終プールの少なくとも1つを、少なくとも2つの重複プールに分けるステップをさらに含む。方法は、分ける前に第1のプール、中間プール、または最終プールの少なくとも1つを複製するステップを含み得る。例えば、複製するステップは、ポリメラーゼ連鎖反応(PCR)によって実行される。方法は、識別子核酸分子の少なくとも2つの中間プールを組み合わせて、識別子核酸分子の新しい中間プールまたは識別子核酸分子の第2のプールを形成することを含み得る。
【0017】
一部の実装では、(c)における(b)のif-then-else操作の繰り返しは、グラフプログラムの実行を表し、その出力は、データオブジェクトを表す識別子核酸分子を、出力記号列の少なくとも一部分を表す最終プールに入れる。前記グラフプログラムは、データオブジェクトに対する関数を表し得る。一部の実装では、出力記号列の少なくとも一部分は、データオブジェクトに対する関数の出力である。識別子核酸分子が入れられる最終プールは、グラフプログラムに従って、対応するデータオブジェクトに対する関数の出力を決定し得る。
【0018】
第3の態様では、核酸に数値データを記憶するための方法が本明細書に提供される。方法は、数値データおよび比例定数に基づいて、識別子核酸配列の予想コピー計数を決定するステップと、識別子核酸配列を各々が有する識別子核酸分子の実際の数を含有する試料を生成するステップであって、実際の数は、予想コピー計数を近似するステップと、を含む。
【0019】
一部の実装では、数値データは数であり、予想コピー計数が数に比例する。各識別子核酸分子の少なくとも一部分は、1つまたは複数のプローブに結合するように構成されてよい。方法は、試料を操作に入力して出力試料を産生するステップをさらに含み得る。一部の実装では、操作は、識別子核酸配列の縁の共通領域に結合するプライマーを用いるポリメラーゼ連鎖反応(PCR)を行ってPCR産物を含有する出力試料を形成することにより、数に2のべき乗を乗算することを含む。例えば、2のべき乗は、PCRサイクルの数に対応する。一部の実装では、操作は、ある画分体積の試料を単離するアリコートを行って出力試料を形成することにより、数に小数を乗算することを含む。一部の実装では、操作は、試料と第2の入力試料とを組み合わせて出力試料を形成する混合操作により、第1の数としての数を、第2の入力試料中の第2の数に加算することを含む。方法は、出力試料を第2の操作に入力するステップをさらに含み得る。
【0020】
一部の実装では、数は、ベクトルの第1の要素である。一部の実装では、方法は、ベクトルの第2の要素および比例定数に基づいて、識別子核酸配列の第2の予想コピー計数を決定するステップと、識別子核酸配列を各々が有する識別子核酸分子の第2の実際の数を含有している第2の試料を生成するステップであって、第2の実際の数が第2の予想コピー計数を近似するステップとをさらに含む。方法は、PCR、アリコート、および混合の少なくとも1つにより、ベクトルに対して線形関数を実行するステップをさらに含み得る。これは、線形関数を実行することにより、バイナリベクトルを、出力試料中の単項値に変換することを伴い得る。線形関数はスコアリング関数であり得る。例えば、スコアリング関数は、非標的ベクトルに対してよりも標的ベクトルに対してより高い出力値をコンピューティングし、それにより、標的ベクトルに対応する識別子配列のコピー計数は、出力試料中で濃縮される。標的ベクトルに対応する識別子配列は、出力試料を配列決定することによって決定され得る。
【0021】
一部の実装では、二本鎖DNA選択操作を使用して、標的ベクトルに対応する識別子配列が出力試料中でさらに濃縮された新しい出力試料を形成することにより、出力試料中の2つの識別子配列の間のコピー計数の比が増大される。操作またはその繰り返される適用は、ニューラルネットワークにおける活性化関数または二次関数に対応し得る。出力試料は、二本鎖DNA選択操作の前に平衡になるようにすることができる。方法は、二本鎖DNA選択操作の前に温度を変化させるまたは出力試料に補助因子を加えることを伴い得る。二本鎖DNA選択操作は、クロマトグラフィー、ゲル電気泳動、質量分析、フローサイトメトリー、蛍光活性化ソート、膜捕捉、シリカカラム捕捉、シリカビーズ捕捉、または親和性捕捉の少なくとも1つを伴い得る。
【0022】
一部の実装では、ベクトルは、より大きいデータオブジェクトの圧縮された表現であり、圧縮された表現は、より大きいデータオブジェクトの、ハッシュ、ブルームフィルタ、シグネチャー、構造アレイ、またはフィンガープリントである。より大きいデータオブジェクトは、対応する識別子核酸配列をキーとして使用して取得され得る。
【0023】
第4の態様では、データセットを符号化している複数の核酸ライブラリーを調製するための方法が本明細書に提供される。方法は、少なくとも1つのデータオブジェクトを含むデータセットを提供するステップであって、各データオブジェクトは、オブジェクトランクを有し、少なくとも1つのバイト値を含むステップと、各データオブジェクトを複数の部分に分割するステップであって、複数の部分は、それぞれのデータオブジェクトの各部分が、(1)部分の対応するデータオブジェクトからの少なくとも1つのバイト値のそれぞれのバイト値、および(2)部分の対応するデータオブジェクトの少なくとも1つのバイト値のそれぞれのバイト値の位置を示す部分ランクを含むように、ランク付けされるステップと、データセットを、固体、液体、または粉末形態を有する複数の核酸ライブラリーにマッピングするステップであって、各核酸ライブラリーがライブラリーランクを有すると共に、異なるデータオブジェクトからの同じ部分ランクを有する部分を符号化している複数の核酸分子を含み、同じ部分ランクは、それぞれのライブラリーランクに対応し、各核酸分子は、それぞれのオブジェクトランクを符号化しているキーと、それぞれのバイト値を符号化しているオペランドとを含むステップと、を含む。
【0024】
一部の実装では、各核酸分子がL個の成分を含み、各成分は、L個の層のうちの区別可能な層のC個の可能な成分から選択され、L個の成分のうちM個がキーを符号化し、L個の成分のうちN個がオペランドを符号化し、M+N≦Lとなるようにする。各核酸分子によって符号化されている部分のバイト値は、核酸分子のオペランドに記憶され得る。一部の実装では、各部分は、Kバイト以下の値を含有し、各データオブジェクトがせいぜいTバイトの値を含み、各データオブジェクトは、せいぜいP=[T/K]個の部分に分割される。Kは、L×[logC]/8未満の任意の値であり得る。一部の実装では、データセットは、W個の核酸ライブラリーを使用して符号化され、各ライブラリーは、1,…,Rの識別子ランクを各々が有する核酸分子を含有し、データセットは、D個のデータオブジェクトを含み、R≧Dである。D個のデータオブジェクトのうちr番目のデータオブジェクトのP個の部分のうちj番目の部分は、j番目のライブラリーの中の、間隔[Cr,C(r+1)-1]内のランクの核酸分子のオペランド内に符号化される。
【0025】
第5の態様では、第4の態様の方法に従って複数の核酸ライブラリー内に符号化されたデータセットのデータオブジェクトのサブセットを取得する方法が本明細書に提供される。方法は、標的核酸ライブラリーおよびクエリー核酸ライブラリーを提供するステップであって、各ライブラリーは、キーおよびオペランドを各々が含む核酸分子を含むステップと、クエリー核酸ライブラリーの核酸分子からキーを抽出するステップと、クエリー核酸ライブラリーから抽出されたキーにマッチするキーを有する標的核酸ライブラリー内の核酸分子をマッチするステップと、マッチされた核酸分子を選択し、出力するステップと、を含む。
【0026】
一部の実装では、抽出するステップは、クエリー核酸ライブラリーの各核酸分子を一本鎖核酸分子に変換することを含み、マッチするステップは、標的核酸ライブラリー内の核酸分子を、相補的な一本鎖キーにハイブリダイズすることを含む。選択するステップは、一本鎖核酸を選択的に分解する酵素を付与することを伴い得る。例えば、酵素はP1である。
【0027】
一部の実装では、抽出するステップは、各核酸分子に見つかる特定の配列を認識する配列固有酵素を使用して、クエリー核酸ライブラリー内の各核酸分子を消化することを含む。抽出するステップは、二本鎖形態で存在するキーをサイズ選択することをさらに含み得る。
【0028】
一部の実装では、抽出するステップは、配列固有のニッキング酵素を使用して、各核酸分子のキーとオペランドとの間にニックを導入することと、ニックの所に、標識されたヌクレオチドを組み込むことと、標識されたヌクレオチドを補足して、キーを一本鎖形態に維持することとを含む。標識されたヌクレオチドがビオチン標識を含み、補足するステップは、ストレプトアビジン被覆ビーズによる親和性捕捉を含み得る。
【0029】
一部の実装では、抽出するステップは、クエリー核酸ライブラリーからのキーを、PCRを介して選択的に増幅し、精製することを含み、キーには、PCRのためのプライマー結合部位として作用するユニバーサル配列が隣接している。
【0030】
一部の実装では、マッチするステップは、標的核酸ライブラリーおよび抽出されたキーを一本鎖形態に変換し、一本鎖の抽出されたキーを、標的核酸ライブラリー内の相補的キーにハイブリダイズすることを含む。選択するステップは、残っている一本鎖分子を選択的に分解することを伴い得る。選択するステップは、あるいは、ゲル電気泳動を伴い得る。
【0031】
一部の実装では、クエリー核酸ライブラリーは、データセットの部分の第1のセットを符号化し、標的核酸ライブラリーは、データセットの部分の第2のセットを符号化する。この場合には、抽出するステップは、データセットに対する第1のif-then-else操作として作用し、マッチするステップ、および選択し、出力するステップは、データセットに対する第2のif-then-else操作として作用する。
【0032】
一部の態様では、本明細書に記載される方法のいずれかを行うように構成されたシステムが本明細書において提供される。システムは、基板上の離散した位置(例えば、反応コンパートメント)にDNA成分を分配し、ライゲーション反応に最適な条件を提供する試薬を分配し、ライブラリーを構成するすべてのDNA識別子をプールするように構成されたプリンター・フィニッシャーシステムであってよい。システムは、核酸分子を容器の中に貯蔵し、マニピュレートしてよい(例えば、自動化された液体処理を介して)。システムは、核酸分子のサブセットにアクセスするために、コンパートメントまたは容器の中にプローブを分配してよい。システムは、核酸分子のプールをアリコートし、複製するように構成されてよい。
【0033】
一部の態様では、本明細書に記載される方法のいずれかに従ってデジタル情報を表す核酸分子を含む組成物が、本明細書において提供される。この組成物は、成分核酸分子からなる識別子核酸分子を含む。識別子核酸分子は、プールに収集されて、デジタル情報にマッピングされてよい。例えば、識別子の存在は、記号列中の特定のビットまたは記号値を示し、識別子の非存在は、記号列中の別のビットまたは記号値を示す。
【0034】
上述および他の目的および利点は、以下の詳細な説明を添付図面と併せて検討すると明らかになり、添付図面では、同様の参照符号は全図面を通じて同様の部分を指す。
【図面の簡単な説明】
【0035】
図1図1Aおよび図1Bは、例示的実装に従った、識別子(例えば、核酸分子)を使用する「アドレスにおけるデータ」符号化の概略図を示す。
【0036】
図2図2Aおよび図2Bは、例示的実装に従った、識別子を使用してデジタル情報を符号化することの概略図を示す。
【0037】
図3図3は、例示的実装に従った、区別可能な成分を組合せ的にアセンブルすることによって識別子を構築するための「産物スキーム」方法を示す。
【0038】
図4図4は、例示的実装に従った、成分から識別子を構築するためにオーバーラップ伸長ポリメラーゼ連鎖反応を使用することの概略図を示す。
【0039】
図5図5は、例示的実装に従った、成分から識別子を構築するために付着末端ライゲーションを使用することの概略図を示す。
【0040】
図6図6Aおよび図6Bは、例示的実装に従った、成分から識別子を構築するためにリコンビナーゼアセンブリーを使用することの概略図を示す。
【0041】
図7図7は、例示的実装に従った、成分から識別子を構築するために鋳型誘導型ライゲーションを使用することの概略図を示す。
【0042】
図8A図8A~8Cは、例示的実装に従った、プローブを使用して特定の識別子にアクセスすることによって、核酸配列に記憶されている情報の一部にアクセスするための概略図を示す。
図8B図8A~8Cは、例示的実装に従った、プローブを使用して特定の識別子にアクセスすることによって、核酸配列に記憶されている情報の一部にアクセスするための概略図を示す。
図8C図8A~8Cは、例示的実装に従った、プローブを使用して特定の識別子にアクセスすることによって、核酸配列に記憶されている情報の一部にアクセスするための概略図を示す。
【0043】
図9図9は、例示的実装に従った、順序付けされた識別子の組合せ空間を示す。
【0044】
図10図10は、例示的実装に従った、コードブックを使用した識別子のプールへのデジタル文字列の変換を示す。
【0045】
図11図11は、例示的実装に従った、ブロックおよび容器にまたがるデータの符号化を示す。
【0046】
図12図12は、例示的実装に従った、識別子を使用した、ネイティブキー値のペアの記憶を示す。
【0047】
図13-1】図13A~13Cは、例示的実装に従った、識別子を使用したif-then-elseプログラムのコンパイルを示す。
図13-2】図13A~13Cは、例示的実装に従った、識別子を使用したif-then-elseプログラムのコンパイルを示す。
【0048】
図14-1】図14A~14Fは、例示的実装に従った、識別子を使用したif-then-elseプログラムの実行を示す。
図14-2】図14A~14Fは、例示的実装に従った、識別子を使用したif-then-elseプログラムの実行を示す。
図14-3】図14A~14Fは、例示的実装に従った、識別子を使用したif-then-elseプログラムの実行を示す。
【0049】
図15図15は、例示的実装に従った、識別子と共に符号化された数値を用いたコンピュータによる計算のための、識別子のコピーおよびプロトコルを使用した数値の符号化を示す。
【0050】
図16図16は、例示的実装に従った、識別子と共に符号化された数値に対してコンピュータによる計算を行うための例示的プロトコルを示す。
【0051】
図17図17A~17Bは、例示的実装に従った、異なるドメインに対する式7のプロットである。
【0052】
図18図18は、例示的実装に従った、ストリップライブラリーにまたがるデータセットの長さ方向の符号化のためのワークフローを示す。
【0053】
図19-1】図19A~19Bは、例示的実装に従った、標的ライブラリーをフィルタリングするためのワークフローを示す。
図19-2】図19A~19Bは、例示的実装に従った、標的ライブラリーをフィルタリングするためのワークフローを示す。
【0054】
図20図20は、例示的実装に従った、長手方向に符号化されたデータセットに対してプログラムを実行するためのワークフローを示す。
【0055】
図21図21は、例示的実装に従った、パーティションを使用して核酸分子にデジタル情報を符号化するための方法を説明するフローチャートを示す。
【0056】
図22図22は、例示的実装に従った、核酸分子に記憶されているデジタル情報を操作するための方法を説明するフローチャートを示す。
【0057】
図23図23は、例示的実装に従った、核酸に数値データを記憶するための方法を説明するフローチャートを示す。
【0058】
図24図24は、例示的実装に従った、データセットを符号化している複数の核酸ライブラリーを調製するための方法を説明するフローチャートを示す。
【発明を実施するための形態】
【0059】
詳細な説明
本明細書に記載されるシステム、方法、およびデバイスの全体的な理解を与えるために、特定の例示的実施形態を説明する。本明細書に記載される実施形態および特徴は、核酸分子を利用する特定の符号化方式との関連で使用するために特化して説明されるが、ある方法、技術、または方式は、核酸ベースのデータ記憶または他の化学ベースのシステムに他の用途に適用され得ることが理解されるべきである。
【0060】
デジタル情報を符号化するための核酸の塩基毎の合成は、一般にあらゆる新しい情報記憶要求に対して区別可能な核酸配列のデノボ塩基毎合成(例えば、ホスホルアミダイト合成)を必要とするため、費用が嵩み、時間がかかり得る。本開示は、塩基毎またはデノボの合成に依拠せず、代わりに成分の組合せ配列を含む複数の識別子、または核酸配列(もしくは成分核酸配列)にデジタル情報を符号化するシステムおよび方法に関する。そのようにして、本開示のシステムおよび方法は、デジタル情報記憶の効率および商業的実現性を向上させる。
【0061】
本開示は、情報記憶の第1の要求のために区別可能な核酸配列(または成分)の第1のセットを産生し、その後、後続の情報記憶要求のために同じ核酸配列(または成分)を再利用することができる方法を記載する。これらの手法は、DNAへの情報の符号化および書き込みプロセスにおける核酸配列のデノボ合成の役割を低減することにより、DNAベースの情報記憶の費用を有意に削減することができる。
【0062】
さらに、各伸長核酸への各塩基の循環送達を使用し得る塩基毎の合成、例えばホスホルアミダイト化学ベースのまたは鋳型なしのポリメラーゼベースの核酸伸長、の実装と異なり、本開示のシステムおよび方法は、成分からの識別子構築を使用してDNAに情報を書き込むことに関し、循環核酸伸長を必ずしも使用しない、高度に並列化可能なプロセスである。したがって、本開示は、他の方法と比較してDNAへのデジタル情報の書き込み速度を上昇させる。核酸分子にデジタル情報を書き込む様々なシステムおよび方法が、2017年12月21日に出願された米国特許第10,650,312号、表題「NUCLEIC ACID-BASED DATA STORAGE」(DNAへのデジタル情報の符号化について記載している)、2019年5月16日に出願され、米国公開第2019/0362814号として公開された米国出願第16/461,774号、表題「SYSTEMS FOR NUCLEIC ACID-BASED DATA STORAGE」(DNAベースのデータ記憶のための符号化方式について記載している)、2020年9月4日に出願され、米国公開第2021/0079382号として公開された米国出願第17/012,909号、表題「CHEMICAL METHODS FOR NUCLEIC ACID-BASED DATA STORAGE」(様々な符号化方式を実装するための化学的技術および機器について記載している)、2019年5月16日に出願され、米国公開第2020/0193301号として公開された米国出願第16/414,758号、表題「COMPOSITIONS AND METHODS FOR NUCLEIC ACID-BASED DATA STORAGE」(符号化方式、区画、および論理ゲートについて記載している)、2019年5月16日に出願され、米国公開第2019/0351673号として公開された米国出願第16/414,752号、表題「PRINTER-FINISHER SYSTEM FOR DATA STORAGE IN DNA」(符号化された核酸ライブラリーを産生するためのアセンブリーについて記載している)、2019年8月5日に出願され、米国公開第2020/0185057号として公開された米国出願第16/532,077号、表題「SYSTEMS AND METHODS FOR STORING AND READING NUCLEIC ACID-BASED DATA WITH ERROR PROTECTION」(データ構造ならびにエラー保護および訂正について記載している)、および、2020年5月11日に出願され、米国公開第2020/0357483号として公開された米国出願第16/872,129号、表題「DATA STRUCTURES AND OPERATIONS FOR SEARCHING, COMPUTING, AND INDEXING IN DNA-BASED DATA STORAGE」(アクセス、ランク、計数、検索、および抽出操作のための高度なデータ構造およびプロトコルについて記載している)に記載されており、各々は、これによりその全体が参照により組み込まれる。
【0063】
以下の説明は、データを核酸分子に符号化するための様々なシステムおよび方法の概要から開始し、図1~8との関係で説明されるように、デジタルデータを符号化する核酸分子をプリントおよび記憶するように構成された、様々な書き込みおよびアーカイブシステムを説明する。順序付けされた核酸分子へのビットの変換は、図9および図10との関係で説明される。符号化された情報は、図11および図21との関係で説明されるように、情報のアクセスおよび読み出しを容易にするために、データ構造中に割り振ることができる。順序付けされた核酸分子は、図12および図21との関係で説明されるように、データ構造または符号化されたデータセットのメタデータを符号化するためのネイティブキー値のペアを用いて構造化されてよい。そのようにして符号化された核酸は、図13A~14Fおよび図22との関係で説明されるように、グラフプログラムまたはif-then-else操作を使用した大規模なコンピュータによる計算のために特に有用である。
【0064】
図15~17Bおよび図23との関係で説明されるように、核酸は、核酸配列のコピー計数を用いた近似による数値の物理的記憶のためにも有利である。別の符号化方式は、データオブジェクトを複数の部分に分割することが関与し、図18および図24との関係で説明されるように、前記各部分のバイト値が、区別可能な「ストライプライブラリー」によって符号化される。図19A~19Bおよび図24との関係で説明されるように、ストライプライブラリーを「フィルタリング」して標的配列を得ることができる。ストライプライブラリーは、図20および図24との関係で説明されるように、if-then-else操作を用いたコンピュータによる計算のためにも使用することができる。
【0065】
概して、本開示は、データ(1もしくはゼロのビットの列によって、または記号列によって表され、各記号は3つ以上の記号値のセットから選択される)を、識別子核酸配列のセット(または識別子配列)に符号化し、各固有の識別子配列は、文字列中に対応するビットまたは記号を有する。識別子配列は、文字列中での当該ビットまたは記号の位置、その値、または位置と値の両方を符号化する。本開示のシステムおよび方法を実装する1つの方法は、図1~8との関係で解説されるように、定義された層に基づく順序付けされた形で事前に作られたDNA成分分子(成分配列によって表される)をライゲーションすることにより、識別子配列によって表される各識別子核酸分子(または識別子分子)を作成するものである。具体的には、異なる層の成分配列が、層にまたがって組合せ的に組み合わせられ(例えば、1つの層当たり1つの成分配列が選択される)、連結され(例えば、ライゲーションされ)て、文字列中の各記号またはビットと一対一にマッピングされた識別子配列を形成する。
【0066】
一般に、成分核酸配列は、前記配列を構成するすべての識別子を選択するために使用することができる1つまたは複数のプローブに結合するように構成される。例えば、成分は、20塩基からなる標的配列を備えてよく、プローブは、その標的配列に結合するための相補的な20塩基のオリゴヌクレオチドを備えてよい。本開示に記載されるように、各々が固有のプローブに結合することが可能な各成分からの識別子核酸配列の組成は、記憶されているデータにアクセスし、操作することに関して、有益な特徴を提供する。本明細書に提示される識別子を生成する方法は、成分を含む識別子を生成するために特に構成されているが、そのような識別子核酸分子はいくつかの代替の方法を通じて形成されてもよいことが理解されるべきである。例えば、長さ100塩基の核酸配列を生成するデノボ合成を使用して、識別子核酸配列を作成することができ、そこでは、各識別子が、各々20塩基からなる5つの成分を含む。塩基のすべての組合せを合成に利用することができる場合、各成分ごとに最大420通りの可能な配列があり得る。
【0067】
用語「記号」は、本明細書で使用される場合、デジタル情報の単位の表現を一般に指す。デジタル情報は、記号列に分割または変換され得る。一例では、記号は、ビットであり得、ビットは、「0」または「1」の値を有し得る。
【0068】
用語「区別可能な」または「固有の」は、本明細書で使用される場合、群の中の他のオブジェクトと区別することができるオブジェクトを一般に指す。例えば、区別可能な、または固有の、核酸配列は、いかなる他の核酸配列とも同じ配列を有さない核酸配列であることがある。区別可能な、または固有の、核酸分子は、いかなる他の核酸分子とも同じ配列を有さないことがある。区別可能な、または固有の、核酸配列または分子は、別の核酸配列または分子と類似領域を共有することもある。
【0069】
用語「成分」は、本明細書で使用される場合、核酸配列または核酸分子を一般に指す。成分は、区別可能な配列を含み得る。成分は、他の核酸配列または分子を生成するように、1つまたは複数の他の成分と連結またはアセンブルされることもある。
【0070】
用語「層」は、本明細書で使用される場合、成分の群またはプールを一般に指す。各層は、1つの層内の成分が別の層内の成分と異なるような、1セットの区別可能な成分を含むことがある。1つまたは複数の層からの成分は、1つまたは複数の識別子を生成するようにアセンブルされることもある。
【0071】
用語「識別子」は、本明細書で使用される場合、より大きいビット列内のビット列の位置および値を表す、核酸分子または核酸配列を一般に指す。より一般的には、識別子は、記号列中の記号を表す、または記号列中の記号に対応する、任意のオブジェクトを指すことがある。一部の実装では、識別子は、1つまたは複数の連結された成分を含み得る。
【0072】
用語「組合せ空間」は、本明細書で使用される場合、成分などのオブジェクトの出発セットと、識別子を形成するためにこれらのオブジェクトを修正する方法に関する規則の許容されるセットとから生成され得る、全ての可能な区別可能な識別子のセットを一般に指す。成分をアセンブルするまたは連結させることにより作成される識別子の組合せ空間のサイズは、成分の層の数、各層内の成分の数、および識別子を生成するために使用される特定のアセンブリー方法に依存し得る。
【0073】
用語「識別子ランク」は、本明細書で使用される場合、セットの中の識別子の順序を規定する関係を一般に指す。
【0074】
用語「識別子ライブラリー」は、本明細書で使用される場合、デジタル情報を表す記号列中の記号に対応する識別子の収集物を一般に指す。一部の実装では、識別子ライブラリー中の所与の識別子の非存在は、特定の位置における記号値を示すことができる。1つまたは複数の識別子ライブラリーを、識別子(例えば、固体、液体または粉末形態を有する)のプール、群、またはセットの中で組み合わせることができる。各識別子ライブラリーは、識別子ライブラリーを識別する固有のバーコードを含むこともある。
【0075】
本明細書で使用される用語「プローブ」は、識別子核酸分子上で標的配列に結合する物質を一般に指す。標的配列は、成分の一部分であり得る。プローブは、当該ブローブの標的配列にマッチするまたはその相補体である配列を備えてよい。プローブはさらに、前記標的配列を構成するすべての識別子核酸分子を単離するために使用されてよい。例えば、プローブは、標的配列を構成するすべての識別子核酸分子を濃縮する、PCR反応のプライマーであってよい。あるいは、プローブは、オリゴヌクレオチドに対応する配列を有するすべての識別子核酸分子を選択するために使用することができる、親和性タグ付けされた前記オリゴヌクレオチド分子を含有してよい。プローブは、負の選択のために使用されてもよい。例えば、親和性タグ付けされたプローブを使用して、特定の標的配列を含有しているすべての識別子を除去することができる。あるいは、プローブは、特定の標的配列を含有しているすべての識別子を切断または消化する活性ヌクレアーゼ、例えばCas9、を含有してよい。
【0076】
用語「核酸」は、本明細書で使用される場合、デオキシリボ核酸(DNA)、リボ核酸(RNA)、またはこれらのバリアントを一般に指す。核酸は、アデノシン(A)、シトシン(C)、グアニン(G)、チミン(T)およびウラシル(U)、またはそのバリアントから選択される1つまたは複数のサブユニットを含み得る。ヌクレオチドは、A、C、G、TもしくはU、またはそのバリアントを含み得る。ヌクレオチドは、成長核酸鎖に組み込むことができる任意のサブユニットを含み得る。そのようなサブユニットは、A、C、G、TもしくはUであることもあり、あるいはより多くの相補的A、C、G、TもしくはUのうちの1つに特異的であり得る、またはプリン(すなわち、AもしくはG、またはそのバリアント)もしくはピリミジン(すなわち、C、TもしくはU、またはそのバリアント)と相補的であり得る、任意の他のサブユニットであることもある。一部の例では、核酸は、一本鎖状または二本鎖状であり得、一部の場合には、核酸分子は環状である。
【0077】
用語「核酸分子」または「核酸配列」は、本明細書で使用される場合、デオキシリボヌクレオチド(DNA)もしくはリボヌクレオチド(RNA)のどちらかかまたはその類似体である、様々な長さを有し得る、ポリマー形態のヌクレオチド、またはポリヌクレオチドを一般に指す。用語「核酸配列」は、ヌクレオチドの順序を規定するポリヌクレオチドのアルファベット表現を指し、用語「核酸分子」は、ポリヌクレオチド自体の物理的な例を指す。このアルファベット表現を、中央処理装置を有するコンピュータ内のデータベースに入力し、核酸配列または核酸分子を記号またはビットにマッピングするために、デジタル情報を符号化するために、使用することができる。核酸配列またはオリゴヌクレオチドは、1つまたは複数の非標準ヌクレオチド、ヌクレオチド類似体および/または改変ヌクレオチドを含むこともある。
【0078】
「オリゴヌクレオチド」は、本明細書で使用される場合、一本鎖核酸配列を一般に指し、アデニン(A)、シトシン(C)、グアニン(G)およびチミン(T)という、またはポリヌクレオチドがRNAの場合はアデニン(A)、シトシン(C)、グアニン(G)およびウラシル(U)という、4つのヌクレオチド塩基の特異的配列で、典型的に構成されている。
【0079】
改変ヌクレオチドの例としては、ジアミノプリン、5-フルオロウラシル、5-ブロモウラシル、5-クロロウラシル、5-ヨードウラシル、ヒポキサンチン、キサンチン、4-アセチルシトシン、5-(カルボキシヒドロキシメチル)ウラシル、5-カルボキシメチルアミノメチル-2-チオウリジン、5-カルボキシメチルアミノメチルウラシル、ジヒドロウラシル、ベータ-D-ガラクトシルキューオシン、イノシン、N6-イソペンテニルアデニン、1-メチルグアニン、1-メチルイノシン、2,2-ジメチルグアニン、2-メチルアデニン、2-メチルグアニン、3-メチルシトシン、5-メチルシトシン、N6-アデニン、7-メチルグアニン、5-メチルアミノメチルウラシル、5-メトキシアミノメチル-2-チオウラシル、ベータ-D-マンノシルキューオシン、5’-メトキシカルボキシメチルウラシル、5-メトキシウラシル、2-メチルチオ-D46-イソペンテニルアデニン、ウラシル-5-オキシ酢酸(v)、ワイブトキソシン、シュードウラシル、キューオシン、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)およびアミノヘキシルアクリルアミド(aminohexhylacrylamide)-dCTP(aha-dCTP)などのアミン修飾基を含有することもある。
【0080】
用語「プライマー」は、本明細書で使用される場合、ポリメラーゼ連鎖反応(PCR)などの核酸合成のための出発点としての役立つ核酸鎖を一般に指す。一例では、DNA試料の複製中に、複製を触媒する酵素が、DNA試料に結合したプライマーの3’末端で複製を開始し、反対側の鎖をコピーする。
【0081】
用語「ポリメラーゼ」または「ポリメラーゼ酵素」は、本明細書で使用される場合、ポリメラーゼ反応を触媒することができる任意の酵素を一般に指す。ポリメラーゼの例としては、限定ではないが、核酸ポリメラーゼが挙げられる。ポリメラーゼは、天然に存在することもあり、または合成されることもある。ポリメラーゼの例は、Φ29ポリメラーゼまたはその誘導体である。一部の場合には、転写酵素またはリガーゼ(すなわち、結合の形成を触媒する酵素)が、新たな核酸配列を構築するために、ポリメラーゼと併せてまたはポリメラーゼの代替として使用される。ポリメラーゼの例としては、DNAポリメラーゼ、RNAポリメラーゼ、熱安定性ポリメラーゼ、野生型ポリメラーゼ、改変ポリメラーゼ、E.coli DNAポリメラーゼI、T7 DNAポリメラーゼ、バクテリオファージT4 DNAポリメラーゼΦ29(ファイ29)DNAポリメラーゼ、Taqポリメラーゼ、Tthポリメラーゼ、Tliポリメラーゼ、PfuポリメラーゼPwoポリメラーゼ、VENTポリメラーゼ、DEEPVENTポリメラーゼ、Ex-Taqポリメラーゼ、LA-Tawポリメラーゼ、SsoポリメラーゼPocポリメラーゼ、Pabポリメラーゼ、MthポリメラーゼES4ポリメラーゼ、Truポリメラーゼ、Tacポリメラーゼ、Tneポリメラーゼ、Tmaポリメラーゼ、Tcaポリメラーゼ、Tihポリメラーゼ、Tfiポリメラーゼ、Platinum Taqポリメラーゼ、Tbrポリメラーゼ、Tflポリメラーゼ、Pfutuboポリメラーゼ、Pyrobestポリメラーゼ、KODポリメラーゼ、Bstポリメラーゼ、Sacポリメラーゼ、3’→5’エキソヌクレアーゼ活性を有するクレノウ断片ポリメラーゼ、ならびにこれらのバリアント、改変産物および誘導体が挙げられる。
【0082】
二進コードの形での、コンピュータデータなどの、デジタル情報は、記号の配列または記号列を含み得る。二進コードは、例えば、ビットと呼ばれる2つの二進記号、通常は0および1、を有する二進法を使用して、テキストまたはコンピュータプロセッサ命令を符号化することまたは表すことができる。デジタル情報は、非二進記号の配列を含み得る非二進コードの形で表すことができる。符号化された各記号を、固有のビット列(または「バイト」)に再び割り当てることができ、固有のビット列またはバイトを、バイト列またはバイトストリームに配列することができる。所与のビットについてのビット値は、2つの記号のうちの1つ(例えば、0または1)であり得る。Nビットの列を含むことができるバイトは、合計2の固有のバイト値を有することができる。例えば、8ビットを含むバイトは、合計2または256の可能な固有のバイト値を生じさせることができ、256バイトの各々は、バイトで符号化することができる256の可能な区別可能な記号、文字または命令のうちの1つに対応し得る。生データ(例えば、テキストファイルおよびコンピュータ命令)を、バイト列またはバイトストリームとして表すことができる。zipファイル、または生データを含む圧縮データファイルを、バイトストリームで記憶することもでき、これらのファイルを圧縮形でバイトストリームとして記憶し、そしてその後、コンピュータにより読み取られる前に生データに復元することができる。
【0083】
用語「インデックス」と「位置」は本開示において互換的に使用されることが理解されるべきであり、また両方の用語とも、順序付けされた収集物、例えばリストや文字列、の特定の要素またはエンティティを指すために使用されることが理解されるべきである。例えば、アレイ、ベクトル、文字列、またはデータ構造中の要素を指定するために、インデックスまたは位置が使用されることがある。インデックス/位置の表記は、各エントリ/エンティティに名目番号を割り当てる番号付け方式を使用する。本開示の例は、しばしば、当技術分野でゼロベースの番号付けとして知られる、0の先頭インデックス/位置を使用する。アレイ/文字列の先頭の位置(ゼロ番目の位置とも称される)は、その特定の位置に関与するコンピュータによる計算のためには、0によって表記される。長さnのセットであれば、0,1,...,n-1の番号付け方式を有することになる。他の番号付け方式が本明細書に記載されるシステムおよび方法で使用されてよいことが理解されるべきである。例えば、番号付け方式は、1から開始し、長さnのセットの場合、nまで続いてよい。
【0084】
本開示は、本出願の図との関係で方法を説明する。これらの方法は、コンピュータによる計算ステップを含めて、DNA内で行われるように構成されることが理解されるべきである。本開示の方法およびシステムを使用して、1ビットまたは複数のビットの一次情報を各々が表すことができる複数の識別子で、コンピュータデータまたは情報を符号化することができる。一部の例では、本開示の方法およびシステムは、2ビットの一次情報を各々が表す識別子を使用して、データまたは情報を符号化する。
核酸へのデジタルデータの書き込み
【0085】
識別子(核酸分子)は、記号列などのデジタル情報を符号化するために使用することができる核酸配列を有する。識別子は、成分(核酸分子)をアセンブルすることによって形成される。成分は、(上記で説明されたように)プローブに結合するように構成されてよく、そのようなものとして構成された成分は「アドレス指定可能成分」となる。本明細書に記載されるすべての成分はアドレス指定可能成分であってよい。
【0086】
一部の実施形態では、識別子は、アドレス指定可能成分のみから構成されてよい。アドレス指定可能成分をアセンブルして識別子を構成してよく、または、それらは減算もしくは置換手法によって識別子配列に導入されてもよい。あるいは、アドレス指定可能成分は、デノボ合成によって核酸識別子に導入されてもよい。異なる書き込み方法は、速度および費用が異なる。それらはまた、識別子に導入することができる可能な成分の数も異なり得る。
【0087】
図1A/1Bおよび図2A/2Bは、成分を備える識別子がどのように「アドレスにおけるデータ」の符号化方式(本明細書では「長さ方向符号化」とも称される)を使用してデジタル情報を符号化し、それにより、「バイト値」などのデータオブジェクトが識別子に沿って符号化されるかの例を示している。
【0088】
図1Aおよび1Bは、例示的な実装に従い、オブジェクトまたは識別子(例えば、核酸分子)中のデジタルデータを符号化する、「アドレスにおけるデータ」と呼ばれる、方法の例を模式的に示す。図1Aは、個々の識別子が、識別子ランクを指定する単一の成分とバイト値を指定する単一の成分とを連結またはアセンブルすることにより構築される、識別子ライブラリーへのビットストリームの符号化を示す。一般に、アドレスにおけるデータ方法は、バイト値を識別する1つのオブジェクトである「バイト値オブジェクト」(または「データオブジェクト」)、および識別子ランク(または元のビットストリーム中のバイトの相対位置)を識別する1つのオブジェクトである「ランクオブジェクト」(または「アドレスオブジェクト」)という、2つのオブジェクトを含むことにより、情報をモジュール式に符号化する識別子を使用する。図1Bは、各ランクオブジェクトが、1セットの成分から組合せ的に構築され、各バイト値オブジェクトが、1セットの成分から組合せ的に構築され得る、アドレスにおけるデータ方法の例を示す。ランクオブジェクトとバイト値オブジェクトのこのような組合せ構築は、オブジェクトが単一成分のみから作成された場合(例えば、図1A)よりも多くの情報を識別子に書き込むことを可能にする。
【0089】
図2Aおよび2Bは、オブジェクトまたは識別子(例えば、核酸配列)中のデジタル情報を符号化する方法の別の例を模式的に示す。図2Aは、識別子が、ビットストリームにおける位置に対応する識別子ランクを指定する単一成分から構築される、識別子ライブラリーへのビットストリームの符号化を示す。特定のランク(またはアドレス)における識別子の存在により1のビット値が指定され、特定のランク(またはアドレス)における識別子の非存在により0のビット値が指定される。このタイプの符号化は、単にランク(元のビットストリーム中のビットの相対位置)を符号化する識別子を使用し、識別子ライブラリー中のこれらの識別子の存在または非存在を使用してそれぞれ1または0のビット値を符号化することができる。情報の読み取りおよび復号は、識別子ライブラリー中に存在する識別子を識別すること、1のビット値をそれらの対応するランクに割り当てること、および0のビット値を他の場所に割り当てることを含み得る。この例では、識別子の存在が1のビットを符号化し、識別子の非存在がゼロのビットを符号化するが、本開示の範囲から逸脱することなく、識別子の存在がゼロのビットを符号化し、識別子の非存在が1のビットを符号化することが可能であることが理解されるであろう。
【0090】
図2Bは、図2Aと同様であるが、図2Bの符号化方法の例では、各識別子を1セットの成分から組合せ的に構築し、したがって、可能な組合せ構築各々がランクを指定する。このような組合せ構築は、識別子が単一成分のみから作成された場合(例えば、図2A)よりも多くの情報を識別子に書き込むことを可能にする。例えば、図2Bに描写されるように、長さN=10のビット列に対応する10個のアドレスが、5個の区別可能な成分からなる成分セットを使用して表される。5つの区別可能な成分を、5成分のうちの2成分を各々が含む10の区別可能な識別子を生成するように、組合せの様式でアセンブルする。10の区別可能な識別子は、ビットストリーム中のビットの位置に対応するランク(またはアドレス)を各々が有する。識別子ライブラリーは、これらの10の可能な識別子のうちの、ビット値1の位置に対応するサブセットを含み、これらの10の可能な識別子のうちの、長さ10のビットストリーム内のビット値0の位置に対応するサブセットを除外することがある。
【0091】
図3は、例示的な実装に従って、固定された順序で各層から区別可能な成分(例えば、核酸配列)を組合せ的にアセンブルすることにより識別子(例えば、核酸分子)を構築するための、「積スキーム」と呼ばれる、方法の例を示す。図3の上部は、積スキームを使用して構築された識別子のアーキテクチャを描示する。識別子は、固定された順序で各層からの単一成分を組み合わせることにより構築することができる。N個の成分を各々が有するM個の層の場合、N個の可能な識別子がある。図3の下部は、積スキームを使用して構築することができる識別子の組合せ空間の例を示す。一例では、3つの区別可能な成分を各々が含む3つの層から、組合せ空間を生成することができる。これらの成分を、各層からの1つの成分を固定された順序で組み合わせることができるように、組み合わせることができる。このアセンブリー方法のための全組合せ空間は、27の可能な識別子を含むことができる。
【0092】
図4~7は、産物スキームを実装するための化学的方法(図3参照)を示す。図4~7に描写される方法は、例えば識別子ライブラリーに任意の1つまたは複数の識別子を産生するために、2つ以上の区別可能な成分を固定された順序でアセンブルするための任意の他の方法と共に使用されてよい。これらの方法は、2017年12月21日に出願された米国特許第10,650,312号、表題「NUCLEIC ACID-BASED DATA STORAGE」に記載されており、同特許はその全体が参照により組み込まれる。識別子は、本明細書に開示される方法またはシステムの任意の時に、図4~7に説明される実装方法のいずれを使用して構築されてもよい。一部の例では、可能な識別子の組合せ空間の全てまたは一部を、デジタル情報を符号化するまたは書き込む前に、構築することができ、したがって、書き込みプロセスは、既に存在するセットから識別子(情報を符号化する)を機械的に選択およびプールすることを含むことができる。他の例では、データ符号化または書き込みプロセスの1つまたは複数のステップが行われた後である可能性がある時点で(すなわち、情報が書き込まれている最中に)、識別子を構築することができる。
【0093】
酵素反応を使用して、異なる層またはセットからの成分をアセンブルしてよい。各層の成分(例えば、核酸配列)は隣接する層の成分に対して特定のハイブリダイゼーションまたは結合領域を有するので、アセンブリーはワンポット反応で発生し得る。例えば、層Xからの核酸配列(例えば、成分)X1、層Yからの核酸配列Y1、および層Zからの核酸配列Z1が、アセンブルされた核酸分子(例えば、識別子)X1Y1Z1を形成し得る。加えて、各層から複数の核酸配列を含めることにより、複数の核酸分子(例えば、識別子)が1回の反応でアセンブルされてもよい。この1回の反応は、識別子への成分の自己アセンブリーが関与し得る。
【0094】
識別子は、例示的な実装に従い、図4に示されるように、オーバーラップ伸長ポリメラーゼ連鎖反応(OEPCR)を使用して、産物スキームに従って構築されてよい。各層の中の各成分は、隣接する層の成分の配列端にある共通のハイブリダイゼーション領域に対して相同および/または相補的であり得る共通のハイブリダイゼーション領域を配列端に有する、二本鎖または一本鎖の核酸配列を備えてよい(図4に描写されるように)。したがって、複数の識別子を形成するためのすべての成分および必要な試薬が同時に反応コンパートメント内に沈着されてよく、また、アセンブルされる成分の順序はハイブリダイゼーション領域の設計によって制御されるため、各成分のハイブリダイゼーション領域は、それらが所望の固有の識別子分子に自己アセンブルすることを可能にする。
【0095】
識別子は、例示的な実装に従い、図5に示されるように、付着末端ライゲーションを使用して、産物スキームに従ってアセンブルされてよい。一本鎖の3’オーバーハングを有する二本鎖成分(例えば、二本鎖DNA(dsDNA))を各々が含む3つの層を使用して、区別可能な識別子をアセンブルすることができる。付着末端ライゲーションのための付着末端は、各層の成分を制限エンドヌクレアーゼで処理することによって生成されてよい。一部の実装では、複数の層の成分が、複数の成分からなる1つの「親」セットから生成されてよい。
【0096】
識別子は、例示的な実装に従い、図6Aおよび図6Bに示されるように、部位に固有の組換えを使用して、産物スキームに従ってアセンブルされてよい。識別子は、3つの異なる層からの成分をアセンブルすることによって構築されてよい。層X(または層1)の成分は、分子の一方の側にattBxリコンビナーゼ部位がある二本鎖分子を含んでよく、層Y(または層2)からの成分は、一方の側にattPxリコンビナーゼ部位があり、他方の側にattByリコンビナーゼ部位がある二本鎖分子を含んでよく、層Z(または層3)の成分は、分子の一方の側にattPリコンビナーゼ部位を備えてよい。1つの対の中のattB部位およびattP部位は、その下付き文字によって示されるように、各自の対応するリコンビナーゼ酵素の存在下で組換え可能である。各層からの1つの成分は、層Xからの1つの成分が層Yからの1つの成分に関連し、層Yからの1つの成分が層Zからの1つの成分に関連するように組み合わせられてよい。したがって、複数の識別子を形成するためのすべての成分および必要な試薬は、同時に反応コンパートメントに沈着されてよく、また、アセンブルされる成分の順序はリコンビナーゼ部位の設計によって制御されるため、各成分のリコンビナーゼ部位は、それらが所望の固有の識別子分子に自己アセンブルすることを可能にする。
【0097】
識別子は、例示的な実装に従い、図7に示されるように、鋳型誘導型ライゲーション(TDL)を使用して、産物スキームに従って構築されてよい。鋳型誘導型ライゲーションは、「鋳型」または「ステープル」と称される一本鎖の核酸配列を利用して、識別子を形成するための成分の順序付けられたライゲーションを容易にする。鋳型は、隣接する各層からの成分に同時にハイブリダイズし、リガーゼがそれらをライゲーションする間に成分を互いと隣接した状態に保つ(3’末端が5’末端に接する)。したがって、複数の識別子を形成するためのすべての成分および必要な試薬は、同時に反応コンパートメントに沈着されてよく、また、アセンブルされる成分の順序は鋳型の設計によって制御されるため、各成分のハイブリダイゼーション領域は、それらが所望の固有の識別子分子に自己アセンブルすることを可能にする。
【0098】
図8A~8Cは、プローブを使用して、識別子ライブラリーにある識別子の指定されたサブセットにアクセスすることの例を示す。図8Aは、ポリメラーゼ連鎖反応、親和性タグ付きプローブおよび分解標的化プローブを使用して指定成分を含有する識別子にアクセスするための方法の例を示す。PCRベースのアクセスの場合、識別子のプール(例えば、識別子ライブラリー)は、各末端に共通配列を有する、各末端に可変配列を有する、または各末端に共通配列もしくは可変配列の一方を有する識別子を含み得る。共通配列または可変配列は、プライマー結合部位であることもある。1つまたは複数のプライマーが、識別子の縁の共通または可変領域に結合し得る。プライマーが結合している識別子を、PCRにより増幅することができる。増幅される識別子は、増幅されない識別子より数が大幅に上回り得る。読み取り中に、増幅された識別子を識別することができる。識別子ライブラリーからの識別子は、その末端の一方または両方にそのライブラリーとは区別可能な配列を含むことができ、したがって、1つより多くの識別子ライブラリーのプールまたは群から単一のライブラリーに選択的にアクセスすることを可能にする。
【0099】
核酸捕捉と呼ばれることもあるプロセスである、親和性タグベースのアクセスの場合、プール内の識別子を構成する成分は、1つまたは複数のプローブと相補性を共有し得る。1つまたは複数のプローブは、アクセスされることになる識別子に結合またはハイブリダイズすることができる。プローブが親和性タグを含むこともある。親和性タグは、ビーズに結合して、ビーズと少なくとも1つのプローブと少なくとも1つの識別子とを含む複合体を生成することができる。ビーズは磁性であり得、磁石と共に、ビーズは、アクセスされることになる識別子を収集し、単離することができる。読み取りの前に、識別子を変性条件下でビーズから除去することができる。あるいは、または加えて、ビーズは、非標的化識別子を収集し、それらをプールの残部から隔離除去することができ、プールの残部を洗浄して別々の容器に移し、読み取ることができる。親和性タグは、カラムに結合することができる。アクセスされることになる識別子は、捕捉用のカラムに結合することができる。その後、カラムに結合した識別子を、読み取りの前に、カラムから溶出することまたは変性させることができる。あるいは、非標的化識別子をカラムに選択的に標的化することができ、その一方で、標的化された識別子は、カラムを通って流れうる。標的化された識別子へのアクセスは、1つもしくは複数のプローブを識別子のプールに同時に適用することを含むこともあり、または1つもしくは複数のプローブを識別子のプールに逐次的に適用することを含むこともある。
【0100】
分解ベースのアクセスの場合、プール内の識別子を構成する成分は、1つまたは複数の分解標的化プローブと相補性を共有し得る。プローブは、識別子の区別可能な成分に結合またはハイブリダイズすることができる。プローブは、エンドヌクレアーゼなどの分解酵素の標的になり得る。一例では、1つまたは複数の識別子ライブラリーを組み合わせることができる。プローブのセットは、識別子ライブラリーのうちの1つとハイブリダイズすることができる。プローブのセットは、RNAを含むことがあり、RNAは、Cas9酵素を誘導することができる。Cas9酵素を1つまたは複数の識別子ライブラリーに導入することができる。プローブとハイブリダイズした識別子は、Cas9酵素により分解されることがある。アクセスされることになる識別子は、分解酵素により分解されないこともある。別の例では、識別子は、一本鎖状であり得、識別子ライブラリーを、アクセスされることにならない識別子を選択的に分解する一本鎖特異的エンドヌクレアーゼ、例えばS1ヌクレアーゼ、と組み合わせることができる。アクセスされることになる識別子を識別子の相補的セットとハイブリダイズさせて、それらを一本鎖特異的エンドヌクレアーゼによる分解から保護することができる。アクセスされることになる識別子を、サイズ選択クロマトグラフィー(例えば、アガロースゲル電気泳動)などのサイズ選択により分解産物から分離することができる。あるいは、または加えて、分解されない識別子を(例えば、PCRを使用して)選択的に増幅することができ、したがって、分解産物は増幅されない。分解されていない識別子の各末端にハイブリダイズする、したがって、分解または切断された識別子の各末端にはハイブリダイズしないプライマーを使用して、分解されていない識別子を増幅することができる。
【0101】
図8Bは、ポリメラーゼ連鎖反応を使用して「OR」または「AND」操作を実施して複数の成分を含有する識別子にアクセスするための方法の例を示す。一例では、2つのフォワードプライマーが左末端の識別子の区別可能なセットに結合する場合には、識別子のこれらのセットの結合のOR増幅を、右末端の識別子の全てに結合するリバースプライマーと共にマルチプレックスPCR反応において2つのフォワードプライマーを一緒に使用することにより、果たすことができる。別の例では、1つのフォワードプライマーが左末端の識別子のセットに結合し、1つのリバースプライマーが右末端の識別子のセットに結合する場合には、識別子のこれら2セットの交差点のAND増幅を、フォワードプライマーとリバースプライマーをPCR反応においてプライマー対として一緒に使用することにより、果たすことができる。このプロセスは、任意数の成分が共通している識別子サブプールにアクセスするために、逐次方式(例えば、ネステッドPCR)で繰り返されてよい。
【0102】
プライマーは、各縁から内側に向かって反復的に成分に結合するように設計されているので、識別子ライブラリー上でのPCRに基づくアクセスの反復ごとに、識別子はより短くなり得る。例えば、識別子ライブラリーは、形態A-B-C-D-E-F-Gの識別子を備えてよく、A、B、C、D、E、FおよびGは層である。特定の成分、例えばそれぞれ層AおよびGのA1およびG1、に結合するプライマーで増幅すると、識別子ライブラリーの増幅された部分は、形態A1-B-C-D-E-F-G1を取り得る。特定の成分、例えばそれぞれ層BおよびFのB1およびF1、に結合するプライマーでさらに増幅すると、識別子ライブラリーの増幅された部分は、形態B1-C-D-E-F1を取り得、ここで、これらの短くなった増幅後の配列は、層Aの位置にある成分A1および層Gの位置にあるG1をさらに含む完全な識別子に対応することを仮定することができる。
【0103】
図8Cは、親和性タグを使用して「OR」または「AND」操作を実施して複数の成分を含有する識別子にアクセスするための方法の例を示す。一例では、親和性プローブ「P1」が、成分「C1」を有する全ての識別子を捕捉し、別の親和性プローブ「P2」が、成分「C2」を有する全ての識別子を捕捉する場合には、P1およびP2を同時に使用することによりC1またはC2を有する全ての識別子のセットを捕捉することができる(OR操作に対応する)。同じ成分およびプローブを用いる別の例では、P1およびP2を逐次的に使用することによりC1およびC2を有する全ての識別子のセットを捕捉することができる(AND操作に対応する)。
核酸へのデータ構造の符号化
識別子へのビットの変換
【0104】
組合せ空間内の各識別子は、固定数のN個の成分を備えることができ、各成分は、N個の層のセットの中の区別可能な層から来たものであり、前記層内のいくつかの可能な成分のセットのうちの1つである。各成分は座標(j,X)によって指定することができ、jは層の標識であり、Xは、その層内での成分の標識である。N個の層がある前記方式の場合、jは、セット{1,2,...,N}の要素であり、Xは、セット{1,2,...,M}の要素であり、Mは、層jにある成分の数である。層に対する論理的順序を定めることができる。また、各層内の各成分に対する論理的順序も定めることができる。この標識付けを使用して、組合せ空間内のすべての可能な識別子の論理的順序付けを定めることができる。例えば、図9に例として示されるように、まず、層1における成分の順序に従って識別子をソートし、続いて層2における成分の順序に従ってソートする等できる。
【0105】
図9は、各層が2つの成分を含んでいる、4つの層からの4つの成分から各々が構築された16個の識別子の組合せ空間のツリー図を示す。よって、各成分は、座標(j,X)によって指定され、jは、セット{1,2,3,4}の要素であり、Xは、セット{1,2}の要素である。したがって、16個の識別子すべてが、各層内の成分の順序に従って論理的に順序付けられる。
【0106】
識別子の論理的な順序付けはさらに、デジタル情報の割り振りおよび順序付けのために使用することができる。デジタル情報は、各識別子を構成する核酸の中に符号化することができ、または識別子自体の存在もしくは非存在として符号化することができる。例えば、4ビットの情報を4つの識別子の連続したグループ化ごとに符号化するコードブックを作成することができる。この例では、コードブックは、4ビットの可能な各文字列を、4つの識別子の固有の組合せにマッピングすることができる(4つの識別子の16個の可能な組合せがあるため、最大でlog(16)=4ビットのデータを記憶することが可能である)。別の例として、6ビットのデータを8個の識別子の連続したグループごとに符号化するコードブックを作成することができる。この例では、コードブックは、6ビットの可能な各文字列を、8つの識別子のうち4つの固有のサブセットにマッピングすることができる(8choose4=70個のそのようなサブセットがあるので、最大でfloor(log(70))=6ビットのデータを記憶することが可能である)。これらの識別子の組合せはコードワードと称されることがあり、それらが符号化するデータはワードと称されることがある。データ内で隣接するワードは、論理的に順序付けられた識別子の間で隣接するコードワードに記憶されてよい。
【0107】
図10は、6ビットのワードを8choose4の識別子(8のグループから選択された4つの識別子)から構成されるコードワードにマッピングするコードブックを使用して、12ビットのデジタル列を識別子のプールに変換することの例を示す。コードワードは、ビット列として記号的に表すことができ、そこでは、あらゆるビット位置が、1つの順序付けられた識別子に対応し、「0」のビット値は、コードワード中の対応する識別子の非存在を表し、「1」のビット値は、コードワード中の対応する識別子の存在を表す。
情報ブロックの割り振りおよびアクセス
【0108】
コードワードに符号化する前に、順序付けられた識別子をブロックへと区画することができ、各ブロックは複数のコードワードを含有することができる。複数の物理的容器、例えば試験管またはPCR管、を使用して核酸を貯蔵する場合、同じ識別子空間を、ただし別々の容器内で使用して、複数のブロックを区画することができる。図11は、32個の識別子および2つの容器からなる空間(1108)をどのように使用して4ブロックのデータを区画できるか(1106)の例を示し、各ブロックは2つのコードワードを記憶することができ(1104)、コードワードは各々、6ビットのデータを符号化する(1102)。ブロックを使用して、解釈可能な単位のデータを組織化することができる。例えば、単一のコードワードは、符号化されたデータの単一の記号を復号するのにすら十分でないバイナリ配列を返し得るが(例えば、ワードサイズが6ビットであり、記号サイズが8ビットである場合)、ブロックは、独立した1つの元の情報を復号するのに十分なコードワードを含有している可能性があり、さらにエラー保護や固定性のようなものに関する含まれるメタデータを有することもある。上の図11の例では、各ブロックを使用して、入力テキスト列の各記号を記憶した。しかし、より一般的には、ブロックを使用して、数、文字列、アレイ、データオブジェクト、データファイル、その他を記憶することができる。ブロックは、任意のサイズであり得、任意にデータおよび識別子に割り当てることができるが、効果的に割り振られた場合には、アーカイブ全体を読み戻すことを必要とせずに関連する情報をクエリーするための強力なツールとして使用することができる。
【0109】
例えば、識別子空間を、固定されたサイズのc個のコードワードからなる隣接するブロックに区画することを選択することができる。このようにすると、あるブロックのg番目のインスタンスを符号化している識別子の範囲は、コードワードインスタンス(g-1)c+1~gcを符号化している範囲として推量することができる。そして、これらの特定の識別子は、指定された成分のセットを共通して共有する識別子だけにアクセスする化学的アクセスプログラムを通じて、容易にアクセスすることができる。それらのアクセスプログラムは、プローブを使用して、例えば、プライマーならびにPCRまたは親和性タグ付けされたオリゴヌクレオチドおよび親和性プルダウンアッセイを用いて、前記指定された成分のセットを有する識別子を選択的に標的化し、その後濃縮するまたは選択することによって機能する。プローブは、図8Cのように、一連の選択反応において適用することができ、各反応は個々の成分を標的化する。ある反応からの出力は、別の反応への入力として使用することができる。識別子は各自の成分によって順序付けることができ(図9に示すように)、さらにブロックはそれら順序付けられた識別子の連続する範囲によって表すことができるため、1つのブロックを構成する識別子は、それらが異種である場合よりも、共通する成分を共有する可能性が高い。これは、そのような識別子を取得するために必要とされるアクセスプログラムの複雑性を低減する。低減した複雑性は、識別子を順序付けるために使用された論理ツリーの部分ツリーを形成する識別子の範囲にブロックが割り当てられる場合に、さらに改良され得る。または言い換えると、ブロックが、共通する成分のセットを排他的に共有する識別子の範囲に割り当てられた場合。図11では、第1の層の成分を標的化するプローブを使用して各ブロックにアクセスすることができる。これは、(各容器の)各ブロックが、第1の層の中で異なる成分を排他的に有するからである。
データ構造およびパターン検索
【0110】
固定された長さのブロックは、有限の記憶容量を有するが、ブロックの中に含有されている情報は、追加のデータをそこから受け取る後続の1つのブロックまたは複数のブロックを参照することができる。このようにして、リンクされたリストを識別子のブロック内に実装することができる。さらに、ブロックは、ツリーまたはグラフを表すことができる。ツリーまたはグラフの構造は、前記ツリーまたはグラフの異なるノードに属するブロックを規定することにより、暗黙的にすることができる。例えば、第1のブロックは、Bツリー内のルートノードのために予約しておくことができ、第2および第3のブロックは第2レベルのノードのために予約しておくことができる等である。各ノードの値は、当該ブロックに符号化することができる。そして、このようにして、ブロックにアクセスし、そのノード情報を復号し、前記情報を使用して、アクセスして復号する後続ブロック(進む後続ノード)を計算することにより、クエリーを満たすようにツリー中のパスをたどることができる。あるいは、ツリーは、開始ノードに対応するブロックを除いては、規定された構造を有さなくてもよい。このブロックから、そしてその後の各ブロックから、隣のノードを符号化しているすべてのブロックの位置が、その情報と共に各ノード内に符号化され得る。
【0111】
この構造を使用して、ツリー、例えばサフィックスツリー、を作成することができる。サフィックスツリーは、データの列内でパターンを探すために使用することができる。サフィックスツリー中で、ブロックは、サフィックスツリーのノードを表すように構成される。サフィックスツリーは、ルートノードから葉へのあらゆるパスが、記号列Sのサフィックスを表すツリーである。ツリーのエッジは、各パスを構成する記号の部分列を表す。サフィックスツリーは、あらゆるブロックがサフィックスツリー中のノードに対応し、その娘ノードについての情報を含有している、識別子核酸ライブラリー内に表すことができる。例えば、娘ノードについての情報は、各娘ノードに至るエッジを構成する記号の部分列と、それら娘ノードを含有している各ブロックの位置とを含む。ルートノードは、最初のブロックのような規定されたブロックであり得る。パターンのメンバーシップ、計数、または位置をクエリーすることは、ルートノードに対応するブロックの識別子にアクセスし、その中に含有されている情報を復号し、その中に含有されている情報およびクエリーパターンに基づいて次のブロックの位置を決定し、対応するクエリーを満たす下流ブロック(またはノード)が残っていない状態になるまで、または葉ノードに達するまで、このプロセスを続けることにより、サフィックスツリーに沿ったパスをたどることが関与する。前者の場合、クエリーパターンは、文字列S中に存在しない。後者の場合、葉ノードに対応するブロックは、クエリーパターンの計数または位置を含有するように構成することができる。
【0112】
パターンを探すための他の手法には、FMインデックス手法および転置インデックスがあり、各々、識別子核酸を使用するブロックに基づく実装を有する。転置インデックスでは、記号列Sを構成する記号アルファベットにわたる固定された長さの可能な部分列ごとに1つのブロックがあり得る。各ブロックは、Sの中の対応する部分列の開始位置に関する情報を含有することができる。ブロックIDは部分列に対応することができ、または、ソート後の部分列の位置に対応することができ、ある部分列に対応するブロックの位置が、追加の情報なしで確定できるようになっている。クエリーパターンは、それを含んでいる転置インデックスの部分列にマッピングされることができ、ブロックがアクセスされて復号され得る。その中に含有されている位置情報を使用して、Sの中のクエリーパターンの計数および位置を決定することができる。転置インデックスは、固定された長さの部分列に限定される必要はない。例えば、1つの文書内、または複数の文書にまたがるワードの位置を表すために使用することもできる。
【0113】
好適なデータ構造およびFMインデックス手法などの検索方法は、2019年8月5日に出願され、米国公開第2020/0185057号として公開された米国出願第16/532,077号、表題「SYSTEMS AND METHODS FOR STORING AND READING NUCLEIC ACID-BASED DATA WITH ERROR PROTECTION」(データ構造ならびにエラー保護および訂正について記載している)、および、2020年5月11日に出願され、米国公開第2020/0357483号として公開された、米国出願第16/872,129号、表題「DATA STRUCTURES AND OPERATIONS FOR SEARCHING, COMPUTING, AND INDEXING IN DNA-BASED DATA STORAGE」(アクセス、ランク、計数、検索、および抽出操作のための高度なデータ構造およびプロトコルについて記載している)に記載されており、各々は、これによりその全体が参照により組み込まれる。
並列クエリーを用いるネイティブキー値ストア
【0114】
一部の実施形態では、目的のブロックにアクセスするために必要とされる情報は、データオブジェクトに合わせてネイティブに構成されてよく、それにより、それを取得するために必要とされるブロックの容器およびアクセスプロトコルは、追加のブロックにアクセスする必要なしに、前記データオブジェクトから直接推量することができる。データオブジェクトはネイティブキーと称されることがあり、対応するブロックの中に含有されている情報は値と称されることがあり、それらの組合せはネイティブキー値(nkv)ペアと称されることがある。言い換えると、ネイティブキーは、識別子配列にアクセスするために使用され得る、当該識別子配列によって符号化された情報である。対して、この文脈における値は、キーに関連付けられ、キーを用いてアクセスされ得る、追加のデータである。
【0115】
図12は、nkvペアを記憶するためにどのように識別子を構成するかの例を示す。この例では、識別子にあるアドレス指定可能成分の特定の層がキーの記憶専用にされ、識別子の残りは、値の記憶専用にされる。キーは、各「キー層」(図12の1202)からの成分配列を含む識別子配列に記憶される。例えば、8つのキー層があり、それらのすべてが2つの可能な成分を含む場合には、2の可能なキーがある。言い換えると、各キーは8ビットを符号化する。別の例として、各々が256個の成分からなる16個のキー層がある場合、各キーは、log(25616)=128ビットを符号化する。キーの値は、識別子のブロックに含有されており、対応する成分が各自のキー層にある。例えば、関連付けられたキーを有する16個の可能な識別子がある場合、値は、2つの8choose4コードワードにまたがって記憶されてよく、各々が6ビットを符号化し、合計12ビット値になる。図12の例では、2つのキー層1202があり、各識別子が2ビットのキーを有し、残りの2つの層1204に4ビットの値があり、互いと共にネイティブキー値ペアを識別子1206として産生する。
【0116】
ネイティブキーは、各キー層に対して1つの位置があり、かつ各キー層内の各成分に対して1つの記号値がある記号列となるように構成されてよい。例えば、8個のキー層があり、各々が2つの成分を含む場合には、ネイティブキーは8ビットの列になり得る。別の例として、各々が256個の成分からなる16個のキー層がある場合、ネイティブキーは、16個のASCII文字からなる列であり得る。ネイティブキーの中の各記号は、アドレス指定可能な成分にマッピングしているため、オペランドである。複数のキーにまたがるクエリーの系統化は、論理ANDおよびORと、有向非巡回グラフ(DAG)、アクセスプログラムの形態で編成されるプリミティブマッチ成分演算子とにより構成される正規表現として指定することができる。アクセスプログラムは、識別子を含有している様々な容器にわたって化学反応が実行される順序を指定する。例えば、一方は2番目のキー層内の対応する成分を選択するものであり、一方は4番目のキー層内の対応する成分を選択するものである、一連の2回のプローブ-塩基反応を行うことにより、2番目および4番目の位置に特定の記号値を含有しているすべてのキーに対して範囲クエリーを行うことができる。アクセスされた識別子ブロックは、有効なネイティブキーに関連付けられた値のみを含有している。このようにして、追加のインデックス情報を必要とすることなく、クエリー操作がすべてのキーに同時に行われるネイティブキー値ストアを構築することができる。
【0117】
この方法は、高次元のネイティブキーを記憶するために特に有用であり得、共通するクエリーが記号選択操作として系統化され得る。そのようなキーにわたるそのようなクエリーは、キーの高次元性によってインデックス付けすることが非実際的になるため、従来の媒体では満たすことが難しい。しかし、上記のようにして構築される識別子核酸では、クエリーは高速かつ低費用になり得る。そのような方法は、例えば、キーがブルームフィルタ、フィンガープリント、ハッシュ、または対応するデータオブジェクトの構造的アレイであり、クエリーが、記号選択、または基準オブジェクトに対する類似もしくはメンバーシップの1つである場合に、有用であり得る。
【0118】
一実施形態では、ネイティブキーは、データテーブル中のレコードであり得、キー層は、テーブル中の列に対応することができ、各層の成分は各々特定の列値に対応することができる。SQL型コマンドを使用してレコードをクエリーし、コンパイルしてアクセスプログラムにすることができ、このアクセスプログラムがDNA中で実行され、指定された成分のセットを含むすべての識別子配列を選択する。一部の例では、識別子配列は、キー層のみから構成されてよい。一部の応用例では、クエリーは、ある性質を満たすネイティブキーの数を数えることが関与してよい。計数は配列決定によって行うことができるが、蛍光または吸収などの大容量読み出し法を用いて、よりネイティブに行うことができる。例えば、一般的なエッジプライマーを用いるqPCRを行うことにより、または分光光度分析、蛍光定量法、ゲル電気泳動、もしくはプレートリーダーアッセイを使用することにより、試料中の識別子分子の総量を決定することができる。識別子配列当たりの識別子分子の予想数は均一であるはずなので、大容量読み出しを、標準的な試料(例えば、既知の数の識別子配列から構成される試料)によって正規化して、固有の識別子配列の数(または計数)を求め、次いでそれを使用して、ネイティブキーの数の計数を計算することができる。
【0119】
一部の実施形態では、絶対的な計数は目的とされないことがあり得、代わりに相対的計数が所望されることがある。例えば、成分固有のプライマー(またはプローブ)を用いるqPCRを行って、特定の成分を含有している試料中の識別子配列の相対割合を求めることができる。この割合は、試料中の識別子配列の母集団全体に対して相対的であっても、または、異なる成分を含有している識別子配列の別の部分母集団に対して相対的であってもよい。この種のデータは、ネイティブキーがレコードであり、対応する識別子配列の成分がそのレコードを含むフィールド値に対応する場合、特に有用であり得る。すると、迅速で効果的なフォームのクエリーを行うことができ、データ値xを含有しているレコードの数を求めることができる。または別のより複雑な例として、データ値xを含有しているレコードのうち、データ値yを含有している割合を求める。例えば、1998年に発生したすべての自動車事故のうち、どれだけの割合が9月に起こったか、である。絶対計数および相対計数のための大容量読み出し方法は、DNA配列決定よりも高速で低費用であり得る。
【0120】
ネイティブDNAキー、例えばレコード、は、データ値を表す成分を含み得るため、意味的に似ている(共通するデータを共有している)ネイティブキーは、配列中でも似たものになるということになる。そのような性質は、類似クエリーを行うために有用であり得る。例えば、参照レコードに類似するデータベース中のすべてのレコードを見つけるようにクエリーが指定されてよい。参照レコードは、それに対応する識別子配列に変換され、すべての類似する識別子配列(類似するレコードに対応する)を見つけるために識別子ライブラリー内でプローブとして使用されてよい。参照識別子配列は、当該配列(およびその結合相手)が親和性プルダウンアッセイ(例えば、固定化ストレプトアビジンを用いる)によって取得され得るように、親和性タグ(例えば、ビオチン)を含有してよい。参照識別子配列は、より多くの共通する配列を共有する他の識別子配列に結合する可能性が高い。この結合性のストリンジェンシー、したがって類似クエリーのストリンジェンシーは、温度および塩などの添加剤を使用して制御することができる。上昇した温度は、ストリンジェンシーを増大させ、あまり類似していない識別子配列がクエリーによって返される可能性を低くする。取得された識別子配列を配列決定して、その同一性を決定することができる。あるいは、取得された識別子配列を、上記の大容量読み出し方法を使用して計数することができる。そのようなネイティブ類似検索は、従来の方法よりも精度が劣り得るが、特にキーの大きなデータベースの場合に、はるかに高速かつ低費用であり得る。
【0121】
より広く、アクセスプログラムを使用して、任意の有限オートマトン計算がネイティブキーに対して行われ得る。これは、有限オートマトンは正規表現として表現することができ、正規表現は本発明のクエリー系統化を備える論理演算子に変えることができるためである。一般に、ネイティブキー記号はオペランドに対応することができ、任意の論理が、アクセスプログラムを用いてそれらオペランドに対して行われ得る。一実施形態では、ネイティブキー記号は数に対応することができ、アクセスプログラムを用いてそれら数に対して算術を行うことができる。例えば、ネイティブキーを構成する2つの8ビット数を乗算することができ、その積が412~500の間になるようにキーを選択することができる。この種のコンピュータによる計算は、有限オートマトンを使用してネイティブキーをクエリーすることを可能にするが、この応用に限定されず、またブール出力に限定されることもない。以下のセクションに、オペランドからなるデータオブジェクトに対する多出力のコンピュータによる計算のためのより広いフレームワークが提示される。
グラフプログラム(If-Then-Else)によるコンピューティング
【0122】
識別子ライブラリーを使用して、データセット中の複数のデータオブジェクトにまたがって並列にコンピュータによる計算を行うことができる。コンピュータによる計算は、指定された導出規則のセットを使用して、与えられた入力に関係する出力を導出する。すべての正しく関係する入力-出力ペアのセットが何らかの関数、例えばf、によって定義されてよく、この関数は、例えばXおよびYを各自の正しい出力、例えばZおよびW、にマッピングする。このようにして、コンピュータによる計算は、関数fを実装し、何らかの入力(X,Y)を与えられた場合かつその場合に限り、f(X,Y)と同じ出力を導出する。
【0123】
図13A~13Cは、そのような所与の関数fがどのようにして、識別子ライブラリーを用いたコンピュータによる計算としての実装に適した規則のセットに変形され得るかを示す。図13A~13Cに示される例では、関数fは、2つの2ビットの自然数XおよびYを受け取り、それらの和を出力する。2ビットの自然数は、0、1、2、および3である。2つのそのような数の和が6を超えることはあり得ないので、fの出力は、せいぜい3ビットのみを産生し、これは、6という最も大きな可能な和を符号化するのに十分なビット数である。図13Aの表はfの完全な定義を示し、「入力」と標識された上から2つの行に示される2ビット数の任意のペアに対して、「出力」と標識された行は、加算演算を正しく表すビット値fの出力を列挙している。3つの出力ビットは、ロービット、ハイビット、およびキャリービットと呼ばれ、それぞれ出力L、H、およびCと省略される。
【0124】
この表形式のfの仕様を、DNA計算に適した規則セットに変換するために、有向グラフプログラムが構築され、そのプログラムが、識別子に対して行う化学的操作を指示する。Knuthの”The Art of Computer Programming Volume 4A: Combinatorial Algorithms Part 1”(これによりその全体が参照により組み込まれる)は、有向グラフプログラムの理論的詳細を提供するが、ここでは、このプロセスは本開示の核酸ベースの手法に合わせて適合されている。このグラフ内のノードは、識別子ライブラリーであり、ノードから発している矢印は、ライブラリーに対して行われる操作を表している。各ノードは、最初にビット列によって標識され、後にプロセス中に入力記号によって標識される。各矢印は、最初に関数の入力によって標識され、後にアルファベットの記号によって標識される。グラフプログラムは、2つのステップで構築される。
【0125】
図13Bは、因数分解と呼ばれる第1のステップの結果を示す。このステップでは、fの出力C、H、およびLの各々に対してグラフが構築される。グラフを構築するには、関数の仕様の中で出力を表すビット列が取り出され、そのビット列によって標識されるグラフ内にノードが作成される。直前の文で説明された最初のノードを含む、グラフ中のあらゆるノードについて、以下に与えられるステップをたどって完全なグラフを構築する。ノードが、因数分解してw=uvと書き換えることができるビット列wによって標識されている場合(uおよびvは、wの長さの半分の長さのビット列自体である)、2つの新しいノードがグラフ内に作成され、それぞれビット列uおよびvで標識される。wまたはuへの矢印に標識x=0が付加され、wからvへの矢印に標識x=1が付加され、ここで、iはこの規則が適用された回数であり、xは、関数fによって受け付けられたi番目の入力ビットである。示される例は二進法アルファベットを使用しているため、標識列は、何らかの自然数nに対して長さ2^nでなければならない。しかし、説明される構築は、任意のk-aryアルファベットに拡張可能である。k-aryの場合、標識はk個の部分に分割されて、k個の矢印が付加され、k個の矢印は、アルファベット中の可能な記号ごとに1つずつ、xを標識する。ノード作成規則には2つの注意点がある。uまたはvによって標識されたノードがグラフ中にすでに存在する場合は、同じ標識の複数のノードを作成する代わりに、それが再利用される(これを「再利用規則」と称する)。新しいノードがw=uvによって標識されて、u=vとなる場合は、そのノードをwで標識することはせず、代わりに、wの平方根である標識uのノードを作成することを試みる(これを「平方」規則と称する)。
【0126】
図13Bでは、例えば出力Lについてのグラフを検討する。標識0101101001011010は、01011010 01011010と標識された2つの新しいノードに因数分解される。これはノード作成規則の最初の適用であるため、矢印は図示されるようにXで標識される。しかし、0101101001011010=(0101101)であるため、この新しいノードは「平方」規則に該当することに留意されたい。したがって、そのノードを作成することはせず、代わりに0101101で標識される「平方根」ノードが作成される。ルートノードは、教育的な明瞭性のために、またルートノードの作成自体が「平方」規則によって阻止されるこの特殊なケースにおける混乱を防止するために示されている。
【0127】
規則は、新しいノード01011010、ならびに2つの新しいノード0101および1010に再適用される。しかし、第1の新しいノード0101は01および01に因数分解されるため、「平方」規則を適用し、代わりに01と標識されたノードを作成する。これは第3レベルのノード作成であるため、矢印は図示されるようにXで標識される。同様の規則を1010と標識されたノードに適用して、出力Lに対する最終的なグラフに到達する。同じ規則セットを使用して、図13Bに示されるように、3つの出力C、H、およびLすべてに対してグラフが構築される。3つの別個のグラフは教育的な理由のために示しており、3つのグラフは、再利用可能なノードを共有し、プログラムのサイズを最小にするためにマージされてよいことに留意されたい。
【0128】
図13Cは、グラフプログラムを作成する際の第2のステップの結果を示す。このステップでは、ノードと矢印が簡潔性のために再標識される。各ノードは、各自の出ていく矢印上に入力標識で標識されている。それぞれの出ていく矢印は、記号アルファベットの中から取ることができる可能な値の1つで再標識される。この例では可能な値が2つしかないため、破線の矢印を使用してX=0の矢印を示し、実線の矢印を使用してX=1の矢印を示している。0および1で標識されたノードを除くすべてのノードは、Xで標識される。この標識は、関数fへの入力のi番目のビットに対応する。したがって、Xで標識されたノードは、入力ビットXのテストに対応する。このビット値が所与の入力インスタンスの中で0である場合は、そのノードから出る破線の矢印をたどって、新しいテストに到達する。入力ビット値Xが所与の入力インスタンスの中で1である場合は、そのノードから出る実線の矢印をたどって、異なるテストノードに到達する。このプロセスは、図13Cでその四角形によって示される特殊な0または1のノードに達するまで継続される。これらのノードはコンピュータによる計算の出力を符号化しており、特定の入力が、上記で説明されたようにグラフプログラムを通じてテストされた時に0のノードに至る場合、それは、その入力インスタンスから導出される出力が0であることを意味する。同様に、入力が1のノードに至る場合、それは、その入力インスタンスから導出される出力が1であることを意味する。このように、任意の入力Xに対して、出力C、H、Lのグラフプログラムは、明確に定義された0または1の出力を導出する。全体として、これらのグラフプログラムは、図13Aに指定される総和関数を実装する。
【0129】
図14A~14Fは、図13A~13Cで構築されたグラフプログラムを使用して、どのようにコンピュータによる計算がデータセットに実行され得るかを示す。図14Aは、成分の連結を介して構築された識別子の概略図を示す。この例では、識別子は5つの成分を備え、各成分は別々の層から選択される。そのような識別子を用いたコンピュータによる計算を可能にするために、この例では、データを持つ1つまたは複数の層が、コンピュータによる計算のためのオペランドとして定義される。この抽象的な例では、オペランドレジスタと呼ばれる識別子のオペランド部分をO~Oと表記する。追加の層が、コンピュータによる計算の一部ではないものの他の理由でオペランドレジスタに関連するデータ値を符号化することができる。これらの追加の他の層は、まとめて値レジスタと呼ばれ、V~Vと表記される。オペランドおよび追加のデータ値、ならびに各々への層の割り振りは、プログラマーによって任意に選択されてよい。例えば、図13A~13Cで説明された2ビットの入力数XおよびYが、加算計算のオペランドとして識別子に記憶され得、データセット中の2ビット数のペアのランクが値レジスタに記憶され得る。この構造の識別子配列は、先に定義されたようなnkvの一タイプであり、ここで、オペランドは、ネイティブキーを形成するネイティブキー記号であり、オペランドレジスタはキー層からなり、追加の層は関連する値を記憶する。一般に、値レジスタは、任意種類のデータを記憶することができる。図14の例では、値レジスタはランクを記憶する。別の実施形態では、値レジスタは、オペランドの圧縮されたまたはハッシュされた表現を記憶することができる。別の実施形態では、値レジスタは、より多くのデータにアクセスするために後に使用されるキーを記憶することができる。
【0130】
図14Bは、コンピュータによる計算の基盤として使用される化学的技術の概略図を示す。この化学的技術を本明細書では「if-then-else」(ITE)ゲートと称する。このゲートは、識別子ライブラリーを入力として受け取り、出力として1つまたは複数の識別子ライブラリーを産生する。ITEゲートは、そのゲートによって検査される層を定める「テスト層」と呼ばれるパラメータtによって定義される。層tで発生する可能性のある成分Lのセットは、プログラマーによって、n個のセットの収集物L ,j=0,...,n-1に区画される(その和集合がLを形成する、互いに共通の要素を持たないセットに)。収集物の中のセットごとに出力ライブラリーが作成され、そのセットで標識される。
【0131】
ITEゲートは、以下のように動作する。ゲートには、識別子の入力ライブラリーが与えられる。それらの識別子は、各識別子の層tの中の成分を検査することにより、ゲートによってテストされる。識別子の層tの成分がcであり、cが、セットL のメンバーとなるようにプログラマーによって定義される場合、その識別子は、L と標識された出力ライブラリーにソートされる。このようにして、層tをテストするITEゲートは、その層tの中の成分に基づいて、入力ライブラリー中の識別子を出力ライブラリーに分類する。図14Bは、ITEゲートが、層1をテストし、識別子が層1に0を有するか否かに基づいて識別子をライブラリーにソートする例を示す。この例では、層1に3つの可能な成分{0,1,2}があると仮定して、出力ライブラリーは、L ={0}およびL ={1,2}と標識される。
【0132】
図14Cは、コンピュータによる計算で使用される例次的なデータセットを示す。図13A~13Cで説明された例示的関数に従い、この例では、データセットは、データセット中での各自のランクによって表される所与の順序で並べられている2ビットの自然数XおよびYのペアを備える。上記で説明したように、データセット中の各データオブジェクトは、1つまたは複数の識別子にマッピングされる。この例では、自然数XおよびYのペアは、識別子のオペランドレジスタにマッピングされ、データオブジェクトのランクは、識別子の値レジスタにマッピングされる。この例では、各入力ビットは識別子の層にマッピングされ、各層は、二進法アルファベットを表す正確に2つの可能な成分を有することができる。図14Dは、図14Cに示されるデータセットから作成された識別子ライブラリーを示す。一般性を失うことなく、この例では、値レジスタは、識別子の単一の最後の層を含むものとされ、層は、データセット中の任意のオブジェクトのランクを符号化するのに十分な濃度(cardinality)を有する。
【0133】
図14Eは、図13A~13Cで構築されたグラフプログラムがどのように図14Bで説明されたITEゲートと組み合わされて、図14Cに示される例示的データセットに対して並列の総和計算を行うためのITEゲートグラフプログラムを構築し得るかを示す。0または1によって標識されるノードを除き、グラフプログラムの各ノードは、ITEゲートとして実装される。ゲートのテスト層は、当該ノードを標識する入力ビットを含有しているオペランドレジスタの層に設定される。例えば、図14Eの出力Cに対するグラフプログラムでは、このノードの標識によって指示されるように、層0が入力のビットXを保持しているので、第1のITEゲートは、層0についてテストする。次の2つのITEゲートは、それら2つのノードの標識によって指示されるように、層1が入力のビットXを保持しているので、識別子の層1をテストし、以下同様である。この例では、テスト層は常に、0および1と標識される正確に2つの可能な成分を含有しており、よって常にL ={0}およびL ={1}と標識される正確に2つの出力ライブラリーがあると仮定される。簡潔のために、標識を書くことをせずに、先に説明された慣行を採用し、点線の矢印を使用して出力ライブラリー{0}を指し、実線の矢印を使用して出力ライブラリー{1}を指す。グラフプログラム中の1つのノードが2つ以上の入ってくる矢印を有する場合、そのノードを実装するITEゲートは、2つ以上の入力ライブラリーを有する。この場合、入力ライブラリーをプールして、すべての入力ライブラリーに存在する識別子の和集合を含有している単一の入力ライブラリーを形成すると仮定する。(入力ビットではなく)0または1によって標識されるノードは出力ノードであり、すなわち、コンピュータによる計算は、すべてのITEゲートが各自に提示された入力ライブラリーの処理を終え、各自の出力ライブラリーを産生した時に終了し、結果的に、出力ノードによって表される出力ライブラリーとなる。この例では、2つの出力ノードがあり、したがって、2つの出力記号0および1を表す2つの出力ライブラリーがある。
【0134】
コンピュータによる計算は以下のようにして進行する。図14Eの出力Lをコンピューティングするように構築されたグラフプログラムを考える。図14Dに示す識別子ライブラリーが、このプログラムの第1のITEゲートに与えられる。Xによって標識されるゲートは、入力ライブラリー中の各識別子の層1を並行してテストし、それらを、層1に存在する成分によって定義される2つの出力ライブラリー{0}および{1}にソートする。この例示的なデータセットでは、3つの識別子(値0、2、および4を有する)が層1に成分0を含有し、4つの識別子(値1、3、5、および6)が成分1を含有している。したがって、ITEゲートは、これらの識別子を、図14Eに示されるように第1のITEゲートによって産生される2つの出力ライブラリーに分類する。そして、これらの出力ライブラリーは、次のITEゲートへの入力ライブラリーとなる。次のITEゲートのセットは、Yと標識され、よって層3をテストする。値0、2、および4を有する識別子のうち、値0を有する識別子だけがテスト層に成分0を有する。したがって、それは、0と標識された出力ライブラリーに分類される。値1、3、5、および6を有する識別子のうち、値3、5、および6を有する識別子が、テスト層に成分1を有する。これらの識別子は、他方のITEゲートによって出力ライブラリー0に分類される。その結果、出力ライブラリー0は、値0、3、5、および6を有する識別子を含んでいる。同様の一連のステップにより、1と標識された出力ライブラリーは、値1、2、および4を有する識別子を含んでいる。図14Eは、図13Aに指定された関数fの各出力に対する3つのグラフプログラムの各々によって構築された出力ライブラリーを示す。グラフプログラムは関数fの仕様を因数分解することによって構築されたので、各出力クラス(0または1)に分類された識別子は、fの定義を正しく実装する。
【0135】
図14Eに示される3つのグラフプログラムによって構築された出力ライブラリーから、データセット中の各データオブジェクトに対する関数fの出力、すなわち2ビットの自然数のペアの和、が抽出され得る。任意の入力に対する関数fの出力は、キャリービット、ハイビット、およびロービット、の3つのビットを含む。この例示的データセットに対するロービットの出力は、以下のように抽出される。出力Lに対するグラフプログラムの出力ノードは、0および1と標識された2つの出力ライブラリーを含有している。0と標識された出力ライブラリーは、グラフプログラムによって定められるように、ロービット出力が0でなければならない識別子を含有している。同様に、1と標識された出力ライブラリーは、ロービット出力が1でなければならない識別子を含有している。出力を報告するために、2つのライブラリー内の識別子の値レジスタが読み出される。これは、標準的な核酸配列決定の化学的方法を使用して行われてよい。出力ライブラリー1に見られる各値について、1の出力が、ロービット出力として報告される。これは、図14Fに示す出力Lの表のLの行に「1」のエントリとして示されている。したがって、残りの値は他方の出力ライブラリーにあるはずであり、したがって、それらの値に対して、ロービット出力は0になるように入力される。このようにして、データセット中のすべてのデータオブジェクトに対応する3つの出力ビットすべてを取得することができる。2ビット数のペア各々に対してそのように抽出された出力は、fの仕様に照らして確認された時、プログラムがそれら数の和を正しくコンピューティングしていることを示す。このようにして、識別子ライブラリーおよびグラフプログラムを使用して任意の関数が実装されてよい。
コピー数のマニピュレートによるデータ記憶およびコンピュータによる計算
【0136】
前述では、識別子配列を使用してデータを記憶し、識別子配列の存在または非存在をマニピュレートすることによってデータに対してコンピューティングするための戦略を提示した。このデータ記憶およびコンピューティングの方法に代えて、またはそれに加えて、データは、識別子ライブラリー内の特定の識別子配列の分子の数、またはコピー数として記憶することもできる。例えば、識別子配列全体が1つのキーに対応することができ、キーの値は、1つまたは複数の識別子ライブラリーにおける識別子配列のコピー計数に対応することができる。
【0137】
コピー計数は、制御するのが難しいことがあり、また、それを符号化し、マニピュレートし、測定するために使用される方法によっては、本質的に不正確であり得る。これらの制約を回避するために、実際のコピー計数の代わりに予想コピー計数(ECC)を用いてデータ値を符号化し、その表現が近似的であるまたは曖昧であることを受け入れることができる。コピー計数は離散的であるが、ECCは連続しており、よってある範囲のコピー計数内でより多くの値を表現することを可能にする。アナログマッピングは、数値データ値が比例的なECCによって表されるように定義することができる。例えば、比例定数が100である場合、値2は、200のECCによって表されることになり、値2.5は、250のECCによって表されることになり、値2.755は、275.5のECCによって表されることになり、以下同様である。そのような符号化方式を「アナログ符号化」と称する。
【0138】
アナログ符号化の利益は、混合、アリコート、およびPCRなどのネイティブ試料操作を用いたコンピュータによる計算を可能にすることである。表1は、そのような試料操作およびそれらの論理の概要を提供する。2つの試料s1とs2を混合することは、加算される2つの数が両試料の中の識別子配列のそれぞれの数値である加算を行う。試料s1からアリコートすることは、1未満(「小数」)による乗算を行い、小数は、アリコートの画分体積に相当する(アリコートの体積を、アリコートがそこから導出された試料s1の体積で割った値)。PCRは、2のべき乗による乗算を行い、2のべき乗は、PCRサイクルの数に相当する。例えば、1回のPCRサイクルは、2で乗算することに相当し、2回のPCRサイクルは、4で乗算することに相当し、3回のPCRサイクルは、8で乗算することに相当し、以下同様である。図16は、2つの試料s1およびs2にまたがって識別子配列によって記憶されているアナログの符号化データに対して行われる論理演算の例を実証している。
【0139】
【表1】
【0140】
複数の識別子配列を含有している試料の場合、試料操作によって行われる論理は、すべての識別子配列に対して並列に行われる。さらに、上記で説明した試料操作は、試料を入力として受け取り、さらに操作することができる出力として試料を産生するため、構成可能である。例えば、任意の正の数による乗算は、PCRをyサイクルにわたって行い、画分体積zをアリコートすることによって実現することができる。これは、どの正の数も、何らかの画分zおよび何らかの整数yに対してz・2によって表すことができるためである。この理由から、正の係数を持つ任意の線形関数は、これらの試料操作を構成することによって表すことができる。
【0141】
一実施形態では、各要素の値を異なる試料に、ただし各試料にわたって同じ識別子配列に記憶することにより、ベクトルx=[x,x,...,x]を符号化することができる。それぞれの試料に対する組み合わせたアリコートPCR操作を用いて各乗算項をコンピューティングし、次いですべての出力試料を共に混合することで項を加算することによって、線形関数(または線形組合せ)c+c+...+cをベクトルに適用することができる。
【0142】
図15は、2つの例示的試料、s1およびs2に表1の操作を行うための様々なプロトコルを示す。s1は、4個の識別子を使用して数値4を符号化し、s2は、3つの識別子を使用して数値3を符号化する。第1のプロトコルは、試料s1に2サイクルのPCRを行って、16個の識別子によって表される数値16の出力試料を産生することが関与する。出力は、2サイクルのPCRにわたって、2の2乗を乗算した数値4の論理によって決定される。第2のプロトコルは、試料s1の半分のアリコートを取り出し、数値2の出力試料を産生することが関与する。これは、試料の半分のアリコートに分けることに起因して、s1の数値4を2で割るという論理に従う。第3のプロトコルは、試料s1とs2を混合して、数値7の出力試料を産生することが関与する。混合することは、この方式に従って符号化された数値同士を加算することを表し、そのため、論理的に、出力は試料s1およびs2の値の和であるということになる。図15の第4のプロトコルは、2つの試料s1およびs2にまたがる識別子配列に符号化されたデータに行われる線形関数の例を示す。線形関数は、混合、PCR、および両試料のアリコートの組合せである。
【0143】
線形関数内の各乗算項および各加算が並列に行われ得るだけでなく、各々が各自のベクトルを符号化している複数の識別子配列が試料中に存在する場合は、関数自体が複数のベクトルに同時に行われる。例えば、1兆個の識別子配列では、最大で1兆個のベクトルを符号化することができる。各ベクトルが100個の要素である場合、これは100個の試料にわたって符号化することができる。図16は、9個のベクトルに並列に行われている線形関数の例を示す。各ベクトルは3要素であり、各要素は異なる試料に記憶されている。この例では、データは最初に、各試料中の各識別子配列が存在するか非存在であるかによって二進に符号化される。図16は、3つの入力試料にまたがるバイナリデータを単一の出力試料中のアナログ値または単項値に変換する線形関数を実証する。この関数は、試料s3にあるデータを最下位の二進桁として扱い、試料s2にあるデータを、最も近い二進桁として扱い、試料s1にあるデータを最上位の二進桁として扱い、よって、試料s3にあるデータを2×試料s2にあるデータに加算し、次いでそれを4×試料s1にあるデータに加算する。試料操作としては、この論理のためのプロトコルは、mix(mix(pcr(s1,2),pcr(s2,1)),s3)のように見える。例えば、第1の識別子配列に記憶されている二進数111はアナログ値7に変換され、第2の識別子配列に記憶されている二進数110はアナログ値6に変換され、第3の識別子配列に記憶されている二進数011はアナログ値3に変換され、以下同様である。図16の一番下に描写されているように、試料内のデータは、すべての行が識別子配列によって符号化されたベクトルであり、すべての列がその識別子配列によって試料内に符号化されたデータである行列として、抽象化することができる。同様に、線形関数の係数は、その行列に乗算される列ベクトルとして表すことができる。列ベクトルは、値4(試料s1に適用された2サイクルのPCRを表す)、2(試料s2に適用された1サイクルのPCRを表す)、および1(試料s3を表す)を有する。列出力ベクトルは、出力試料に符号化される。図示されていないが、複数の線形関数を試料データに行って複数の出力試料を産生することができる。これは、2つの行列を乗算して出力行列を作ることに相当する。
【0144】
図16に示されるデジタルからアナログへの変換の方法は、任意の形態で記憶されたデジタルデータ(例えば、底2だけでなく、底3、底4、10進法など)に応用可能である。この戦略を用いて、データをデジタル的に符号化してから、コンピュータによる計算および読み出しのためにアナログ符号化(予想コピー計数表現)に変換することができる。例えば、数xがbi1i2i3によって表される3ビット数の3要素ベクトル[x,x,x]を考える。これは、9個の試料にまたがる二進符号化された(存在または非存在)識別子配列によって表され得る。最初の3つの試料が第1の要素を表し、2番目の3つの試料が第2の要素を表し、3番目の3つの試料が第3の要素を表す。そして、ベクトルに対する線形関数c+c+cをコンパイルして二進表現の線形関数c(4b11+2b12+b13)+c(4b21+2b22+b23)+c(4b31+2b32+b33)にし、それが次いで、バイナリデータを含有している試料に対する試料操作を伴うプロトコルとして実行されることになる。
【0145】
上記の試料操作は、負の係数を持つ線形関数を行うことはできない。データが二進で表現されている場合、線形関数内の負の係数を持つ項は、式、-c=c(1-x)-cを使用して、正の係数を持つ項に変換することができる。(1-x)はx’に相当し、これはxがビットである時のxの補数である。よって、(バイナリデータに対する)線形関数中の負の項は、その項の中の二進桁の補数を使用することによって正の項に変換できるということになる。例えば、c-c-cは、c+cx’+cx’-(c+c)に変換することができる。したがって、どのような混合符号の線形関数も、正符号の線形関数から定数を引いた値に変換できるということになる。この線形関数変換をバイナリデータセットに対して(線形関数中のどの項が負になるかについての事前知識なしに)行うためには、データの補数が元のデータと共に記憶されていなければならない。言い換えると、識別子配列Aのセットの存在と識別子配列Bの別のセットの非存在とで作成された各試料について、セットBにおける識別子配列のセットの存在と、セットAにおける識別子配列の非存在とを含有している相補体試料s’も作成されていなければならない。線形関数が正符号の項を持つ形態になると、上記で説明された試料操作を使用してそれを実行することができる(表1および図15~16を参照されたい)。定数項はデータに依存せず、そのため、DNA形態から読み出された後にそれを結果から減算することができるが、一部の用途には、定数項は関与すらしない可能性もある。例えば、線形関数がスコアリング関数である場合、定数は、結果のランク順序に影響しない。例えば、1兆個のベクトルがあり、線形関数がそれらのベクトルを訓練されたモデルに従ってスコアリングするように設計されている場合、定数項は、どのベクトルが他のベクトルよりも高いスコアになるかには影響しない。
【0146】
データに適用される線形関数は、ある性質を持つ標的ベクトルを識別するように設計されたモデルであり得る。例えば、線形関数は、標的ベクトルを高いスコアに変換し、非標的ベクトルを低いスコアに変換するように設計され得る。それらスコアはECCによって表されるので、より高いスコアを符号化している識別配列は、出力試料の中で、より低いスコアを符号化している識別配列よりも豊富になり、したがって、DNA配列決定による出力試料からのランダムサンプリングは、モデル中でよりスコアが高いベクトルによって表される識別子配列を返す可能性が高い。ベクトル自体は、他の場所に記憶されているより大きいデータオブジェクトの圧縮された表現であってよい。例えば、それらは、元のデータオブジェクトに由来する、ハッシュ、ブルームフィルタ、シグネチャー、フィンガープリント、または構造アレイであってよい。スコアが高いベクトルに対応する元のデータオブジェクトは、関連する識別子配列(またはその誘導体)をキーとして使用して取得されることができる。
【0147】
本明細書に記載される操作は線形関数を実行するので、それらは、標的識別子配列(標的データオブジェクトを表す)を非標的識別子配列よりも濃縮する能力が限られ得る。後に行われる活性化関数などの非線形関数の適用が、標的配列をさらに濃縮し得る。これは、ニューラルネットワークが分類などの複雑な振る舞いを作り出すように機能する仕組みに似ている。一般に、ニューラルネットワークでは、「ニューロン」の層が、入力の重み付けされた和を計算し(線形関数に相当する)、次いで、各々の値に非線形関数を適用した後に、それらの値(層の中の各ニューロンの重み付けされた和)が共に加算される。この文脈における非線形関数は、あるニューロンからのシグナルを「活性化」するので、活性化関数と呼ばれる。非線形性は、ある閾値を下回る出力値を持つニューロンからのシグナルを実質的に抑制するので、活性化のために極めて重要である。
【0148】
相補的な一本鎖からの二本鎖DNAの形成は、二量化プロセスであり、したがってDNA分子の濃度に対する超線形の依存性を有する。式1~8は、二本鎖DNA(種Y)を形成する一本鎖DNA(種Z)の二量化のためのモデルを提供する。質量作用の動態を使用して、DNAの合計量[X]の関数として、定常状態における二本鎖DNAの濃度([Y])を導出する。
【0149】
式1は、二量化の平衡反応を表し、これは、一本鎖への二本鎖DNA分解の率(δ)と、二重鎖化の率(α)とによって支配される。式2は、式1の動態に基づく二本鎖DNAの濃度[Y]の変化率を表す。定常状態では、式2は、示されるようにゼロに等しい。定常状態では、二本鎖DNAの濃度[Y]について式2を解くと式3が得られる。パラメータKは、一本鎖への二本鎖DNA分解の率(δ)と、二重鎖化の率(α)との比である(要するにK=δ/α)。DNAの合計量[X]は、式4に示されるように、一本鎖DNAの量[Z]と二本鎖DNAの量[Y]の和に等しい。式4を[Z]について式3に代入すると、式5が与えられる。式5を展開すると、標準的な二次形式の二次方程式6が得られ、それを[Y]について解いて式7を得ることができる。式7は2つの解を有するが、一方の解は[Y]>[X]を有し、これは可能でないため、1つのみの実現可能な解が式7に示されている。
【数1】
【0150】
式7は、非線形であるが、異なる状況において異なる挙動を有する。[X]>Kの場合、[Y]は[X]に対しておよそ線形である。DNAの合計量[X]が速度定数Kよりもはるかに小さい場合([X]<<K)、[Y]は[X]において二次になり、式7は、二次の近似を使用して式8によって近似され得る。図17Aおよび図17Bは、式7によって記述される[Y]と[X]の間の関係のプロット(図17A)と、[X]<<Kである状況([X]について0~0.1の範囲として近似化されている)の追加の拡大プロット(図17B)とにより、この近似を裏付けており、ここで[X]における二次の挙動が認められる。
【0151】
この非線形性を利用して、試料中の識別子配列間のコピー計数差を増大させることができる。それは、ニューラルネットワークにおける活性化関数と同じように、より高いコピー計数を持つ識別子配列を好適に濃縮し、それにより、より低いコピー計数を持つ識別子配列を効果的に抑制する。これはひいては、配列決定プロセスが合計試料のうち小さい試料サイズのみをカバーする場合に、より高いコピー計数を持つ識別子配列が配列決定される可能性を高くする。非線形関数はまた、繰り返し適用することができる。文献(その全体が参照により組み込まれる、Livni, R. et al. ”On the Computational Efficiency of Training Neural Networks”, arXiv:1410.1141 [cs.LG]など)は、式7に実証されたもののような二次方程式は、繰り返し適用された場合にニューラルネットワーク内で活性化関数として効果的に使用できることを示している。式8からの二次近似式または正確な式全体を使用して、ニューラルネットワークモデルを訓練することができる。このモデルを次いで、上記で説明された操作を使用して、DNAに記憶されているデータに適用することができる。
【0152】
式7の非線形関係を忠実に利用するために、試料から選択的に二本鎖DNAを抽出する試料操作を行う必要がある。一実施形態では、これは、ゲル電気泳動のようなクロマトグラフィー戦略を用いて実現されてよい。別の実装では、これは質量分析を用いて実現されてよい。別の実装では、これは、二本鎖DNAに固有の染料を使用するフローサイトメトリーまたは別の蛍光ソート技術によって実現されてよい。別の実装では、これは、シリカビーズまたはカラムを用いるなどして、膜捕捉または親和性捕捉技術によって実現されてよい。二本鎖DNAの選択の前に、式1~8のモデル仮定に従って、試料に、平衡する(定常状態に達する)ための時間を与えなければならない。非線形の状況は、[X]<<Kによって発生し、これは試料を希釈して[X]を小さくすることによって強制することができる。あるいは、例えば、試料の温度を上げるか、または二重鎖化に干渉する物質を加えることによって、Kを大きくすることができる。
長さ方向ストライピングによる符号化
【0153】
図1A~1Bで、「アドレスにおけるデータ」と呼ばれる方式が説明されたが、ここでは、「バイト値」などのデータオブジェクトを識別子に沿って符号化するための「長さ方向符号化」と称する。このセクションでは、長さ方向符号化方式を拡張して、複数のバイト値を含むデータオブジェクトを、複数の識別子ライブラリーの中に識別子に沿って符号化することを可能にし、これをここでは長さ方向ストライピングと称する。本明細書において、クエリーライブラリーの中でデータオブジェクトの一部分を与えられて、長さ方向に符号化されている前記データオブジェクトの一部分を標的ライブラリーから取得するための方法と、先に上記で説明された「グラフプログラム」内でのコンピュータによる計算のために、長さ方向に符号化されているデータセットを使用するための方法とが提供される。互いと共に、これらの態様は、以前は1つの識別子の長さ方向のデータ符号化容量によって定められていた、コンピューティング可能なデータオブジェクトの長さに対する制限をなくすことにより、グラフプログラムを使用した、より大きいデータオブジェクトに対するコンピュータによる計算を可能にする。
【0154】
このセクションでは、図12との関連で説明されたような識別子が、データオブジェクト同士を区別するキーを符号化している層と、データオブジェクトを構成するオペランドを符号化している層とを備える。識別子は、合計L個の層を備えてよく、層のうちM個がキーに割り振られ、層のうちN個がデータに割り振られ、M+N≦Lである。識別子に沿ったバイト値の符号化についての前の説明(参照によりその全体が組み込まれる、2017年12月21日に出願された米国特許第10,650,312号、表題「NUCLEIC ACID-BASED DATA STORAGE」を参照されたい)を拡張して、このセクションでは、複数のバイト値を備えるデータオブジェクトが初めにP個の部分に分割され、各部分はK個以下のバイト値を含有している。正の整数Kは次のように選択される。識別子がN個のオペランド層を含み、各層が、C個の可能な成分の1つを含有している場合、任意の値≦L・[logC]/8がKとして選択されてよい。各々がせいぜいTバイトの長さである、D個のデータオブジェクトを含むデータセットを仮定すると、一部の実施形態では、各データオブジェクトは、せいぜいP=[T/K]個の部分に分割される。(データオブジェクトがP個未満の部分を含有している場合、オブジェクトの端部は、「-」などの特別な区切り記号を符号化することによって示されてよい。)各データオブジェクトのi番目の部分のセットは、データセットのi番目のストライプと呼ばれ、1つのストライプの任意のサブセット、サブストライプである。一部の実施形態では、データセットは、各々がランク1,...,R(R≧D)の識別子を含有しているP個の識別子ライブラリーL,...,Lを使用して、次のように符号化される。r番目のデータオブジェクトのj番目の部分(0<j≦P)は、j番目のライブラリー内の間隔[Cr,C(r+1)-1]にあるランクの識別子のオペランドレジスタ内に長さ方向に符号化される。このようにして符号化されたデータオブジェクトは、P個の識別子ライブラリーにまたがって長さ方向にストライプされていると称され、各ライブラリーは、データセットのP個のストライプのうち1つを符号化している。
【0155】
図18は、前述で説明された規則に従った、データセットの長さ方向符号化のための例示的ワークフローを示す。データセット(A)は、3個のデータオブジェクト(D=3)を含有しており、各々がオブジェクトランク(0、1、または2)と、せいぜい3バイト(T=3)とを有している。データオブジェクト0は2バイト(0、1)を有し、データオブジェクト1は3バイト(0、1、2)を有し、データオブジェクト2は1バイト(0)を有する。データオブジェクトは、3つの部分(P=3)に分割され、各部分は、1バイト値(K=1)(P=[T/K]=[3/1]=3)を含む。識別子データマップ(B)は、このデータセットを化学的に符号化するために使用された識別子が各々どのようにオペランドおよびキーを含むかを示している。各個々の識別子について、キーは、それぞれのデータオブジェクトのオブジェクトランク(0、1、または2)を符号化し、オペランドは、それぞれのデータオブジェクトの所与の部分のビット値を符号化する。ストライプライブラリー(C)は、部分ランク、すなわち、データオブジェクト内での当該部分(およびしたがって対応するバイト値)の位置、に従ってグループ化された識別子である。図18のこの例では、第1のストライプライブラリーLは、各データオブジェクトの第1の部分を符号化している3つの識別子を含む。第2のストライプライブラリーLは、各データオブジェクトの第2の部分を符号化している3つの識別子を含む。第3のデータオブジェクトは、第2の部分にバイト値を有さず、そのため、特別な区切り記号「-」がオペランド内に示されている。一部の実装では、識別子は、この特別な区切り記号を符号化している成分の特定の連結を有するが、あるいは、特別な区切り記号を有する識別子は、ライブラリーにおけるその非存在が、対応するデータオブジェクトの対応する部分についてのバイト値が欠落していることを表すように、ライブラリーから省略されてよい。第3のストライプライブラリーLは、各データオブジェクトの第3の部分を符号化している3つの識別子を含み、ここで、第1および第3のデータオブジェクトの識別子はバイト値を有さず、そのため、それらのオペランドは、特別な区切り記号を示している。
長さ方向フィルタリング
【0156】
この態様は、所望のサブセットの任意のクエリーサブストライプを与えられて、データオブジェクトの任意のサブセットの任意のサブストライプを取得することを可能にする。この取得方法の例が図19A~19Bに示される。D個のデータオブジェクトのデータセットが、P個の識別子ライブラリーにわたって長さ方向ストライピングによって符号化されている。各識別子は、上記で説明されたように、M個のキー層およびN個のオペランド層から構成されている。データオブジェクトの何らかのサブセットS⊆{1,...,D}のi番目の部分を含有しているクエリーサブストライプXが与えられ、データオブジェクトの同じサブセットSのj番目の部分を含有しているサブストライプYを取得したいと仮定する。ここではフィルタリングと称するこの取得操作は、2つのステップを含む:
1.キー抽出:クエリーXの中の各識別子のキー層が、識別子のオペランド層から単離される。
2.キーマッチ:Xから単離されたキー層とキー層がマッチする標的ライブラリーLからの識別子が選択され、サブストライプYとして出力される。
【0157】
一部の実装では、キー抽出は、最初にXの中の各識別子を一本鎖形態に変換することによって行われる。キー層に出現し得るすべての可能な成分に対応する核酸が、Xのものに相補的な一本鎖形態で得られ、Xの一本鎖形態にハイブリダイズされる。これにより、キー層が二本鎖であり、一方、オペランド層は一本鎖形態になることを保証する。この混合物は、P1などの一本鎖のDNA分解ヌクレアーゼにさらされる(図19Aに示されるように)。これはオペランド層を分解し、サブストライプXのキー層を二本鎖形態に維持する。
【0158】
一部の実装では、キー抽出は、キー層とオペランド層との間ですべての識別子に見つけられる特定の配列を認識する制限エンドヌクレアーゼでXの中の各識別子を消化し、続いてサブストライプXのキー層を二本鎖形態に維持するためのサイズ選択を行うことによって行われる。
【0159】
一部の実装では、キー抽出は、キー層とオペランド層との間に配列固有のニッキング酵素でニックを導入し、ニック部位にDNAポリメラーゼIを有する標識されたヌクレオチドを組み込み、鎖を溶解させて一本鎖DNAを産生し、標識されたヌクレオチドに対して親和性捕捉を行って、サブストライプXのキー層を一本鎖形態に維持することによって行われる。一実装では、標識はビオチンおよびストレプトアビジン被覆ビーズを用いて行われる親和性捕捉であってよい。
【0160】
一部の実装では、キー抽出は、キー層を選択的に増幅し、精製することによって行われる。ここで、識別子は、キー層に、PCRのためのプライマー結合部位として作用するユニバーサル配列が隣接するように設計される。増幅されたDNAを精製してオペランド配列を除去し、その結果、サブストライプXのキー層が二本鎖形態に維持される。
【0161】
一部の実装では、キーマッチは、最初に、標的ライブラリーLおよび抽出されたキーを相補的な一本鎖形態に変換することによって行われる。標的ライブラリーのオペランド層に出現する可能性のあるすべての可能な成分に対応する核酸は、標的ライブラリーのものに対して相補的な一本鎖形態で得られ、一本鎖キーと共に、相補的な一本鎖標的ライブラリーにハイブリダイズされる。これは、抽出されたキーの1つとキー層がマッチする標的ライブラリー内の識別子は二本鎖形態になり、対して、キー層が抽出されたキーのいずれともマッチしない識別子は、部分的に一本鎖形態になることを保証する。そのキー層は、部分的または完全に一本鎖になる。この混合物が、P1などの一本鎖核酸分解ヌクレアーゼにさらされる。これにより、標的ライブラリー内のマッチしない識別子のキー層を分解して、マッチする識別子だけを各自の完全な長さの二本鎖形態のままにする(図19Aに示されるように)。これらの識別子は、ゲル電気泳動を使用してそれらの完全な長さに関してさらに選択されてよい。合わせて、これらの化学的操作は、上記で説明されたフィルタリング操作を実装する(図19Bのワークフローに示されるように)。
【0162】
一部の実装では、キーマッチは、抽出されたキー層に親和性グループを結合させすることによって行われ、ここで、キー層は、標的ライブラリー内のマッチするキー層に対して相補的であり、それにより、標的ライブラリーの分子が、キー分子にハイブリダイズし、分子は、それらのキー分子を標的化する親和性方法を使用して間接的に捕捉することができる。
【0163】
図19Bに示される完全なワークフローは、フィルタ1演算子を、5つの識別子を含むライブラリーAに適用することを含む。ライブラリーAの各識別子は、4つの層から選択された4つの成分を含んでいる。フィルタ演算子は、クエリーを表す。フィルタ1演算子は、最初の2つの層で1つの成分を選択し、最後の2つの層から任意の成分形態を選択する。本明細書に記載される機構のいずれかを使用してライブラリーAに対してフィルタ1を実行すると、フィルタ1に合格しない識別子と、フィルタ1に合格する識別子とが得られる。フィルタ2のための演算子を得るために、調製ステップを実行して、フィルタ1に合格した識別子の最後の2つの層の成分を抽出し、維持する。ライブラリーBが設けられ、4つの層から選択された4つの成分を各々が有する3つの識別子を含有している。調製ステップで得られたフィルタ2演算子をライブラリーBに適用して、フィルタ2に合格する識別子と、フィルタ2によって拒絶された識別子とを得る。
長さ方向に符号化されたデータセットのためのグラフプログラム
【0164】
前述で説明されたグラフプログラミングモデル(図13A~14Fを参照されたい)を使用して、長さ方向にストライピングされた入力ライブラリーに対してコンピューティングすることができる。グラフプログラムは、if-then-else(ITE)ゲートのネットワークであり、各ITEゲートは、識別子のライブラリーを入力として受け取り、識別子ライブラリーのセットを出力として産生する。以前、グラフプログラムは、長さ方向に符号化されたデータに対して並列のコンピュータによる計算を実行した。これは、単一の入力識別子ライブラリーに制限されていた。上記で説明された態様は、グラフプログラムが、複数のストライプを入力として受け取って、長さ方向にストライピングされたデータに対して並列のコンピュータによる計算を実行することを可能にする。図13A~14Fに示された例を考察する。長さ方向にストライピングされた入力を用いたコンピュータによる計算を説明するために、図13~14に説明される「出力L」と呼ばれる3つのグラフプログラムの1つが、図20で拡張される。図20は、2つの整数オペランドXおよびYを含んでいる、前に説明されたデータセット(A)を示す。この例では、このデータセットは、2つの識別子ライブラリーLおよびLにまたがって長さ方向にストライピングされ、オペランドXがLに記憶され、オペランドYがLに記憶されている(識別子ライブラリーB)。第1のITEゲート(図20のC)は、Xオペランドの一部分(X)を操作し、したがってストライプLを入力として受け取る。前に説明されたように、ゲートは、X=0であるものと、X=1である別のものと、の2つの出力ライブラリーを産生する。これは長さ方向にストライピングされたデータセットであるので、これらのライブラリーは、次のITEゲートへの入力として作用することはできない。代わりに、これらは、次のITEゲートのための必要な入力ストライプを取得するためのクエリーストライプとして使用される。ITEゲートの次の層はオペランドY(Y)を操作するので、ストライプLが、次のITEゲートで取得のための標的ライブラリーとして使用される。これらのクエリーおよび標的ライブラリーを使用して、最初のITEゲートからの出力ライブラリーが、ITEゲートの次の層のための入力ライブラリーに変換される。このようにして、グラフプログラムは、長さ方向にストライピングされたデータセットをコンピュータによる計算のために使用することができる。組み合わさって、第1のITEゲート(ストライプLのオペランドXに対するフィルタ)と、第2のITEゲート(フィルタリングされたストライプLからの演算子を使用する、オペランドYに対するフィルタ)とは、出力Lを表す出力ライブラリーを産生し、そこでは、図13Cの出力に従って、キーランク1、2、および4は、値1を有し、キーランク0、3、5、および6は、値0を有する。
実装
【0165】
以下に、前述で説明された様々な態様の例示的実装が提供される。
核酸に記憶された情報の区画
【0166】
前述で論じられたように、核酸に記憶されている情報は、前記情報のアクセスおよび読み出しをより容易に行えるように、区画されてよい。図21は、パーティションを使用して核酸分子にデジタル情報を記憶するための方法2100を説明するフローチャートである。方法2100は、ステップ2102、2104、2106、および2108を含む。ステップ2102は、識別子核酸配列をブロックに区画することが関与する。各識別子核酸配列は、成分核酸配列を含み、その少なくとも一部分は、1つまたは複数のプローブに結合するように構成される。ステップ2104は、記号列をブロックのうち1つのブロックに割り振ることが関与する。ステップ2106は、記号列を、ブロック内の複数の識別子核酸配列にマッピングすることが関与する。ステップ2108は、複数の識別子核酸配列の個々の識別子核酸分子を構築することが関与する(すなわち、構築された識別子核酸分子は、複数の識別子核酸配列からの配列を有する)。
【0167】
前に説明されたように、マッピング(ステップ2108における)は、ワード(記号列など、符号化されるべきデジタル情報の部分)をコードワード(識別子核酸配列のグループ)にマッピングするコードブックを使用して行われてよい。各ブロックは、1つまたは複数のコードワードを含む。一部の実装では、ブロック当たり固定数のコードワードがある。例えば、ブロックのg番目のインスタンスを符号化している識別子の範囲は、コードワードインスタンス(g-1)c+1~gcを符号化している範囲として計算することができる。
【0168】
一部の実装では、ブロックは、前述で説明されたものなどのアクセスプログラムによってアクセス可能である。一部の実装では、ブロックは位置に関連付けられ、前記位置は、前記ブロックにアクセスするための情報を含む。一部の実装では、ブロックは、別のブロックの位置に関する情報を含有する。
【0169】
一部の実装では、ブロックは、グラフ内のノードを表す。グラフは、サフィックスツリーまたはBツリーなどのツリーであってよい。一部の実装では、ブロックは、転置インデックスの要素である。一部の実装では、複数のブロックが、リンクされたリストを形成し、リスト内では、第1のブロックが第2のブロックをポイントして、少なくとも第1のブロックおよび第2のブロックにマッピングされている大きな記号列を収容する。
【0170】
一部の実装では、各ブロックの識別子配列は、キー層のセット内で同じ成分配列を共有する。前記キー層は、ネイティブキーなどのデータオブジェクトを記憶してよい(前述で説明されたように)。ネイティブキーは、1つまたは複数の記号を含み、各記号が対応するキー層の成分配列に対応するように構成されてよい。方法は、各自の対応する成分配列を含有しているすべての識別子分子にアクセスすることにより、位置のセットにおいて共通の記号値を共有しているいくつかのキーにわたる範囲クエリーを行うことをさらに含んでよい。有限オートマトンまたは正規表現を満たすすべてのキーに対するクエリーが、アクセスプログラムによって行われてよい。
【0171】
方法は、各キーに関連付けられたブロックの識別子配列に値を記憶することをさらに含んでよい。前記値は、対応するキーにアクセスすることによって取得されてよい。キーは、その値の関数であってよい。キーは、対応する値に由来する、ハッシュ(例えば、値にハッシュ関数を適用した結果得られるハッシュ値)、ブルームフィルタ、構造アレイ、分類器、シグネチャー、レコード、またはフィンガープリントであってよい。アクセスプログラムは、クエリーキーに類似する、またはそれと共通の記号値を共有するすべてのキーにアクセスするように設計されてよい。前記クエリーキーは、参照値に由来してよい。
【0172】
キーの数の計数(例えば、すべてのブロックまたは識別子分子にまたがる)は、DNA濃度を測定することによって決定されてよい。例えば、DNA濃度は、蛍光(例えば、qPCR、プレートリーダーアッセイ、Qubit蛍光計)により、または吸収(例えば、分光光度分析アッセイ)により、測定されてよい。測定されたDNA濃度を標準によって正規化して、試料中の識別子配列の数を決定してよい。特定の記号を含有しているキーの相対数は、その特定の記号に対応するキー層成分のためのプローブでqPCRを行うことによって決定されてよい。
【0173】
一部の実装では、方法は、参照キーのための識別子配列を作成することをさらに含む。前記参照キーは、クエリーを行うために使用されてよい。識別子配列は、類似するまたは同一であるすべてのキーを検索または抽出するためのハイブリダイゼーション反応でハイブリダイゼーションプローブとして使用されてよい。pHや温度などの、ハイブリダイゼーション反応の条件を使用して、検索または抽出のストリンジェンシーを制御してよい。例えば、温度を調節することは、容認されるためにキーがどれほど参照キーと類似しなければならないかの制御を可能にする。
核酸に記憶されている情報に対する操作
【0174】
前述で論じられたように、核酸に記憶されている情報は、if-then-else(ITE)ゲートを適用して特定の値、記号、または配列を選択することにより、コンピュータによる計算のために使用されてよい。図22は、核酸分子に記憶されているデジタル情報を操作するための方法2200を説明するフローチャートを示す。方法2200は、ステップ2202、2204、および2206を含む。ステップ2202は、識別子分子(核酸)の第1のプールを得ることが関与する。プールは、粉末、液体、または固体形態を有する。第1のプールの各識別子分子は成分分子を含み、その少なくとも一部分は、1つまたは複数のプローブに結合するように構成される。識別子分子は、1つまたは複数の入力記号列を表す。ステップ2204は、成分核酸分子の少なくとも1つをプローブで標的化することによって第1のプールの識別子核酸分子をスクリーニングして、前記第1のプールからの識別子核酸分子のサブセットを含む中間プールを作成する。中間プールは、入力文字列に対して行われたif-then-else操作の結果を表す。ステップ2204では、結果として、前記第1のプールからの識別子分子のサブセットを有する中間プールが作成される。ステップ2206は、識別子分子の最終プールが作成されるまで、すべての後続のステップにおいて中間プールが第1のプールに取って代わる(if-then-else操作を受ける)ように、ステップ2204を繰り返すことが関与する。最終プールは、出力記号列の少なくとも一部分を表す。
【0175】
一部の実装では、第1のプールの各識別子分子は、M個の層の各々からの区別可能な成分配列を含む。各層は、成分配列のセットを含む。
【0176】
一部の実装では、識別子分子は、データオブジェクトを表す。識別子分子の成分分子は、データオブジェクトのオペランドを表してよい。一部の実装では、if-then-else操作は、例えば、同じ特定の成分分子を有する第1のプールの識別子分子を選択するために、その特定の成分分子を有する識別子分子のプローブプールをプローブとして使用することを含む。例えば、プローブプールの識別子分子は、一本鎖であり、少なくとも部分的に、同じ特定の成分分子を含有する第1のプールの一本鎖識別子分子にハイブリダイズする。一部の実装では、プローブは、PCRプライマーであり、if-then-else操作はPCRによって実行される。一部の実装では、プローブは、親和性タグ付けされたオリゴヌクレオチドであり、if-then-else操作は、親和性プルダウンアッセイによって実行される。
【0177】
一部の実装では、2つ以上のif-then-else操作が、識別子分子の1つまたは複数のプールに対して並列に行われる。一部の実装では、方法2200は、第1のプール、中間プール、または最終プールの少なくとも1つを、少なくとも2つの重複プールに分けることをさらに含む。第1のプール、中間プール、または最終プールの少なくとも1つは、分ける前に(例えば、PCRによって)複製されてよい。方法2200は、識別子分子の少なくとも2つの中間プールを組み合わせて、識別子分子の新しい中間プールまたは識別子分子の第2のプールを形成することをさらに含んでよい。
【0178】
一部の実装では、if-then-else操作(またはステップ2206を介したその繰り返される適用)は、グラフプログラムの実行を表し、その出力は、データオブジェクトを表す識別子分子を、出力記号列の少なくとも一部分を表す最終プールに入れる(例えば、出力される識別子は、出力記号列の1ビットを表す)。前記グラフプログラムは、前記データオブジェクトに対する関数を表してよい。出力記号列の少なくとも一部分は、データオブジェクトに対する関数の出力であってよい。一部の実装では、識別子分子が入れられる最終プールが、グラフプログラムに従って、識別子分子によって符号化されている対応するデータオブジェクトに対する関数の出力を決定する。
核酸への数値データの記憶
【0179】
前述で論じられたように、数値データは、予想コピー計数を生成することによって識別子分子に記憶されてよい。図23は、核酸に数値データを記憶するための方法2300を説明するフローチャートを示す。方法2300は、ステップ2302および2304を含む。ステップ2302は、数値データおよび比例定数に基づいて、識別子核酸配列の予想コピー計数を決定することが関与する。ステップ2304は、識別子核酸配列を各々が有する識別子核酸分子の実際の数を含有する試料を生成することが関与し、実際の数は、予想コピー計数を近似する。数値データは、数であってよく、予想コピー計数は、比例定数に従ってその数に比例する。各識別子核酸分子の少なくとも一部分は、1つまたは複数のプローブに結合するように構成されてよい。
【0180】
方法2300は、試料を操作に入力して出力試料を産生することさらに含んでよい。例えば、操作は、識別子核酸配列の縁の共通領域に結合するプライマーを用いるポリメラーゼ連鎖反応(PCR)を行ってPCR産物を含有する出力試料を形成することにより、上記数に2のべき乗を乗算することが関与してよい。2のべき乗は、行われるPCRサイクルの数に対応してよい。操作は、試料と第2の入力試料とを組み合わせて出力試料を形成する混合操作により、第1の数としての数を、第2の入力試料中の第2の数に加算することが関与してよい。出力試料は、第2の操作への入力であってよい。
【0181】
一部の実装では、数は、ベクトルの第1の要素である。方法2300は、ベクトルの第2の要素および比例定数に基づいて、識別子核酸配列の第2の予想コピー計数を決定するステップをさらに含み得る。次いで、方法2300は、識別子核酸配列を各々が有する識別子核酸分子の第2の実際の数を含有している第2の試料を生成するステップであって、第2の実際の数が第2の予想コピー計数を近似するステップとをさらに含み得る。
【0182】
方法2300は、PCR、アリコート、および混合の少なくとも1つにより、ベクトルに対して線形関数を実行するステップをさらに含み得る。線形関数は、バイナリベクトルを、出力試料中の単項値に変換するために使用され得る。線形関数はスコアリング関数であり得る。例えば、スコアリング関数は、非標的ベクトルに対してよりも標的ベクトルに対してより高い出力値をコンピューティングし、それにより、標的ベクトルに対応する識別子配列のコピー計数は、出力試料中で濃縮され得る。標的ベクトルに対応する識別子配列は、出力試料を配列決定することによって決定され得る。二本鎖DNA選択操作を使用して、標的ベクトルに対応する識別子配列が出力試料中でさらに濃縮された新しい出力試料を形成することにより、出力試料中の2つの識別子配列の間のコピー計数の比が増大され得る。操作(またはその繰り返される適用)は、ニューラルネットワークにおける活性化関数または二次関数に対応し得る。一部の実装では、出力試料は、二本鎖DNA選択操作の前に平衡になるようにされる。また、操作の前に、温度を変化させてよく、または出力試料に補助因子を加えてよい。操作は、クロマトグラフィー、ゲル電気泳動、質量分析、フローサイトメトリー、蛍光活性化ソート、膜捕捉、シリカカラム捕捉、シリカビーズ捕捉、または親和性捕捉の少なくとも1つによって行われてよい。
【0183】
一部の実装では、ベクトルは、より大きいデータオブジェクト(ベクトルよりも大きい)の圧縮された表現である。圧縮された表現は、より大きいデータオブジェクトの、ハッシュ、ブルームフィルタ、シグネチャー、構造アレイ、またはフィンガープリントであってよい。より大きいデータオブジェクトは、対応する識別子核酸配列をキーとして使用して取得されてよい。
データセットを符号化しているストライプライブラリーの調製
【0184】
前述で論じられたように、データセットは、部分への分割およびストライプライブラリーにまたがったその部分の符号化によって符号化されてよい。図24は、データセットを符号化している複数の核酸ライブラリーを調製するための方法2400を説明するフローチャートを示す。方法2400は、ステップ2402、2404、および2406を含む。ステップ2402は、少なくとも1つのデータオブジェクトを含むデータセットを提供することが関与し、各データオブジェクトが、オブジェクトランクを有し、少なくとも1つのバイト値を含む。ステップ2404は、各データオブジェクトを複数の部分に分割するステップを伴う。複数の部分は、それぞれのデータオブジェクトの各部分が、(1)部分の対応するデータオブジェクトからの少なくとも1つのバイト値のそれぞれのバイト値、および(2)部分の対応するデータオブジェクトの少なくとも1つのバイト値のそれぞれのバイト値の位置を示す部分ランクを含むように、ランク付けされる。ステップ2406は、データセットを、固体、液体、または粉末形態を有する複数の核酸ライブラリーにマッピングするステップを伴う。各核酸ライブラリーはライブラリーランクを有すると共に、異なるデータオブジェクトからの同じ部分ランクを有する部分を符号化している複数の核酸分子を含む。所与のライブラリーの複数の核酸分子の同じ部分ランクは、所与のライブラリーのそれぞれのライブラリーランクに対応する。各核酸分子は、それぞれのオブジェクトランクを符号化しているキーと、それぞれのバイト値を符号化しているオペランドとを含む。
【0185】
一部の実装では、各核酸分子がL個の成分を含み、各成分は、L個の層のうちの区別可能な層のC個の可能な成分から選択され、L個の成分のうちM個がキーを符号化し、L個の成分のうちN個がオペランドを符号化し、MとNとの合計がL未満またはこれと等しくなるようにする。各核酸分子によって符号化されている部分のバイト値は、核酸分子のオペランドに記憶され得る。一部の実装では、各部分は、Kバイト以下の値を含有し、各データオブジェクトがせいぜいTバイトの値を含み、そうすることで、各データオブジェクトは、せいぜいP個の部分(ここで、P=[T/K])に分割される。Kは、L×[logC]/8未満の任意の値であり得る。
【0186】
一部の実装では、データセットは、W個の核酸ライブラリーを使用して符号化され、各ライブラリーは、1,…,Rの識別子ランクを有する核酸分子を含有する。データセットは、D個のデータオブジェクトを含み、そうすることで、RはDより大きくまたはこれと等しくなる。D個のデータオブジェクトのうちr番目のデータオブジェクトのP個の部分のうちj番目の部分は、j番目のライブラリーの中の、間隔[Cr,C(r+1)-1]内のランクの核酸分子のオペランド内に符号化されるというルールであり得る。
【0187】
また、方法2400に従って複数の核酸ライブラリー内に符号化されたデータセットのデータオブジェクトのサブセットを取得する方法が本明細書に提供される。この方法は、標的核酸ライブラリーおよびクエリー核酸ライブラリーを提供するステップであって、各々は、キーおよびオペランドを各々が含む核酸分子を含む。方法は、次いで、クエリー核酸ライブラリーの核酸分子からキーを抽出するステップを伴う。方法は、次いで、クエリー核酸ライブラリーから抽出されたキーにマッチするキーを有する標的核酸ライブラリー内の核酸分子をマッチするステップを伴う。最後に、方法は、マッチされた核酸分子を選択し、出力するステップを伴う。
【0188】
抽出ステップは、クエリーライブラリーの各核酸分子を一本鎖分子に変換することを含み得、マッチは、標的ライブラリー内の核酸分子を、相補的な一本鎖キーにハイブリダイズすることを含み得る。選択するステップは、ハイブリダイゼーション後に一本鎖核酸を選択的に分解する酵素を付与することを含み得る。例えば、酵素はP1であり得る。
【0189】
抽出ステップは、各核酸分子に見つかる特定の配列を認識する配列固有酵素を使用して、クエリーライブラリー内の各核酸分子を消化することを含み得る。この抽出は、二本鎖形態で存在するキーをサイズ選択することをさらに含み得る。
【0190】
抽出ステップは、配列固有のニッキング酵素を使用して、各核酸分子のキーとオペランドとの間にニックを導入することと、ニックの所に、標識されたヌクレオチドを組み込むことと、標識されたヌクレオチドを補足して、キーを一本鎖形態に維持することとを含み得る。例えば、標識されたヌクレオチドは、ビオチン標識を有し、補足するステップは、ストレプトアビジン被覆ビーズによる親和性捕捉を伴う。
【0191】
抽出ステップは、クエリーライブラリーからのキーを、PCRを介して選択的に増幅し、精製することを含み得、キーには、PCRのためのプライマー結合部位として作用するユニバーサル配列が隣接している。
【0192】
マッチするステップは、標的ライブラリーおよび抽出されたキーを一本鎖形態に変換し、一本鎖の抽出されたキーを、標的ライブラリー内の相補的キーにハイブリダイズすることを伴い得る。選択するステップは、ゲル電気泳動を伴い得る。
【0193】
一部の実装では、クエリーライブラリーは、データセットの部分の第1のセットを符号化し、標的ライブラリーは、データセットの部分の第2のセットを符号化する(例えば、図24の方法2400に従って)。抽出ステップは、データセットに対する第1のif-then-else操作として作用してよく、マッチするステップおよび選択/出力ステップは、データセットに対する第2のif-then-else操作として作用する。
【0194】
前述は、本開示の原理を例示するに過ぎず、装置は、限定のためではなく、例示のために提示される、記載された実施形態以外によって実施され得る。本明細書に開示される装置は、核酸ベースのデータ記憶で使用するために示されるが、データのアーカイブおよび記憶または化学的データ科学が関与する用途に適用されてよいことが理解されるべきである。
【0195】
本開示を検討した後、変形例および変更例が当業者に想到されるであろう。開示される特徴は、本明細書に記載される1つまたは複数の他の特徴との任意の組合せおよび部分組合せ(複数の従属的な組合せおよび部分組合せを含む)で実装されてよい。その構成要素を含む、上記で説明または例示された様々な特徴は、組み合わせるかまたは他のシステムに一体化してよい。さらに、特定の特徴は省略されるまたは実装されなくてもよい。
【0196】
記載されたシステムおよび方法は、これにより参照によりその全体が組み込まれる、2019年5月16日に出願され、米国公開第2019/0351673号として公開された米国出願第16/414,752号、表題「PRINTER-FINISHER SYSTEM FOR DATA STORAGE IN DNA」に記載されるものなどの、プリンター・フィニッシャーシステムにおいてローカルに実装されてよい。プリンター・フィニッシャーシステムは、データ処理装置を含んでよい。本明細書に記載されるシステムおよび方法は、別個のデータ処理装置上で遠隔で実装されてよい。別個のデータ処理装置は、クラウドアプリケーションを通じてプリンター・フィニッシャーシステムに直接または間接的に接続されてよい。プリンター・フィニッシャーシステムは、別個のデータ処理装置とリアルタイム(または近リアルタイム)で通信してよい。
【0197】
一般に、本明細書に記載される主題および機能動作の実施形態は、本明細書に開示される構造およびそれらの構造的同等物を含めて、デジタル電子回路内で、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア内で、またはそれらの1つまたは複数の組合せで、実装することができる。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラム製品、すなわち、データ処理装置による実行のために、またはその動作を制御するために、コンピュータ可読媒体に符号化されているコンピュータプログラム命令の1つまたは複数のモジュール、として実装することができる。コンピュータ可読媒体は、機械可読記憶装置、機械可読記憶基板、メモリデバイス、機械可読伝搬シグナルに影響する物質の組成、またはそれらの1つまたは複数の組合せであり得る。用語「データ処理装置」は、例としてプログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる装置、デバイス、または機械を包含する。装置は、ハードウェアに加えて、対象のコンピュータプログラムのための実行環境を作り出すコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコード、を含むことができる。伝搬シグナルは、人工的に生成されるシグナルであり、例えば、適切な受信機装置への送信のために情報を符号化するために生成される、機械によって生成される電気、光、または電磁気シグナルである。
【0198】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイルされる言語または解釈実行される言語を含む任意形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、またはコンピューティング環境で使用するのに適する他の単位を含む、任意の形態で配置され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応してよい。プログラムは、他のプログラムまたはデータ(例えば、マークアップ言語文書に記憶された1つまたは複数のスクリプト)を保持しているファイルの一部に、または対象のプログラムに専用の単一のファイルに、または複数の連携されたファイル(例えば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶しているファイル)に記憶され得る。コンピュータプログラムを配置して、1つのコンピュータ、または1つの場所に位置するもしくは複数の場所に分散され、通信ネットワークによって相互に接続された複数のコンピュータ上で実行することができる。
【0199】
本明細書に記載されたプロセスおよび論理フローは、1つまたは複数のプログラム可能プロセッサが1つまたは複数のコンピュータプログラムを実行して、入力データを操作し、出力を生成することによって機能を行うことによって行われ得る。プロセスおよび論理フローはまた、特殊目的論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途集積回路)によって行うこともでき、装置はそれらとして実装することもできる。
【0200】
コンピュータプログラムの実行に適するプロセッサには、例として、一般および特殊目的両方のマイクロプロセッサが含まれ、任意種類のデジタルコンピュータの任意の1つまたは複数のプロセッサが含まれる。一般に、プロセッサは、読出し専用メモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの必須の要素は、命令を実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量記憶装置、例えば磁気、光磁気ディスク、または光ディスク、も含むか、またはそれからデータを受信し、もしくはそれにデータを転送する、またはその両方のために動作的に結合される。しかし、コンピュータは、そのようなデバイスを有する必要はない。
【0201】
変更、置換、および改変の例が当業者によって判断可能であり、本明細書に開示される情報の範囲から逸脱することなくなされ得る。本明細書において引用されたすべての参考文献は、参照によってそれらの全体が組み込まれ、本明細書の一部とされる。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図8C
図9
図10
図11
図12
図13-1】
図13-2】
図14-1】
図14-2】
図14-3】
図15
図16
図17
図18
図19-1】
図19-2】
図20
図21
図22
図23
図24