(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-15
(45)【発行日】2022-06-23
(54)【発明の名称】DNAベースのデータストレージ及びデータ取り出し
(51)【国際特許分類】
G11C 13/00 20060101AFI20220616BHJP
H03M 7/04 20060101ALI20220616BHJP
H03M 7/40 20060101ALI20220616BHJP
C12N 15/09 20060101ALN20220616BHJP
C12Q 1/6869 20180101ALN20220616BHJP
【FI】
G11C13/00
H03M7/04
H03M7/40
C12N15/09 200
C12Q1/6869 Z ZNA
(21)【出願番号】P 2020500842
(86)(22)【出願日】2018-07-25
(86)【国際出願番号】 CN2018097083
(87)【国際公開番号】W WO2019020059
(87)【国際公開日】2019-01-31
【審査請求日】2021-07-02
(31)【優先権主張番号】201710611123.2
(32)【優先日】2017-07-25
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】515134069
【氏名又は名称】ナンジン ジェンスクリプト バイオテック カンパニー,リミテッド
(74)【代理人】
【識別番号】100078282
【氏名又は名称】山本 秀策
(74)【代理人】
【識別番号】100113413
【氏名又は名称】森下 夏樹
(74)【代理人】
【識別番号】100181674
【氏名又は名称】飯田 貴敏
(74)【代理人】
【識別番号】100181641
【氏名又は名称】石川 大輔
(74)【代理人】
【識別番号】230113332
【氏名又は名称】山本 健策
(72)【発明者】
【氏名】ファン, ロン
【審査官】後藤 彰
(56)【参考文献】
【文献】国際公開第2017/011492(WO,A1)
【文献】特表2018-527900(JP,A)
【文献】特表2015-529864(JP,A)
【文献】特表2006-522356(JP,A)
【文献】国際公開第2003/025123(WO,A2)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 13/00
H03M 7/04
H03M 7/40
(57)【特許請求の範囲】
【請求項1】
入力データを核酸に記憶するための方法であって、
a)前記入力データをヌクレオチド配列に変換することであって、前記変換することが、
i)前記入力データを2進列に変換することを含むデータ処理ステップと、
ii)ヌクレオチド配列の前記集合を得るために、5ビットトランスコーディングフレームワークを使用し、前記2進列を変換することを含むヌクレオチド符号化ステップと、
を含む、前記変換することと、
b)ヌクレオチド配列の前記集合を含む核酸の集合を合成することと、
を含む、前記方法。
【請求項2】
前記データ処理ステップが、前記2進列を非重複5ビット2進列の数列に分割することを含む、請求項
1に記載の方法。
【請求項3】
前記ヌクレオチド符号化ステップが、整数の文字列を得るために、各5ビット2進列を0~31に及ぶ整数に変換することを含む、請求項
2に記載の方法。
【請求項4】
前記ヌクレオチド符号化ステップが、ヌクレオチド配列の前記集合を得るために、前記5ビットトランスコーディングフレームワークを使用し、整数の前記文字列を変換することをさらに含む、請求項
3に記載の方法。
【請求項5】
前記ヌクレオチド符号化ステップが、整数の前記文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む、請求項
3に記載の方法。
【請求項6】
前記複数の整数の初期部分列のそれぞれの前記長さが、選択した合成プラットフォームのオリゴ長、所望するエラー許容範囲、前記入力データのサイズ、選択したエラー訂正符号、またはその組み合わせに基づいて決定される、請求項
5に記載の方法。
【請求項7】
前記ヌクレオチド符号化ステップが、インデックスを有する複数の整数部分列を得るために、インデックス情報を前記複数の整数の前記初期部分列のそれぞれに加えることをさらに含む、請求項
5または6に記載の方法。
【請求項8】
前記複数の整数の前記初期部分列のそれぞれに加えられた前記インデックス情報が整数の数列を含み、前記整数の数列の前記長さが前記入力データのサイズに基づく、請求項
7に記載の方法。
【請求項9】
前記ヌクレオチド符号化ステップが、前記インデックス情報を加えた後、冗長性データを、インデックスを有する前記複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることを含む、請求項
7または8に記載の方法。
【請求項10】
冗長性データを、インデックスを有する前記複数の整数部分列に加えることが、
空の行列を作成することであって、前記空の行列の列数がインデックスを有する前記複数の整数部分列の前記サイズよりも大きく、前記空の行列の行数が、インデックスを有する前記複数の整数部分列のそれぞれの整数の数よりも大きい、前記作成することと、
インデックスを有する前記複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで前記空の行列を充填することと、
前記充填した行列に基づいて、冗長性を有する前記複数の整数部分列を得ることと、
を含む、請求項
9に記載の方法。
【請求項11】
前記空の行列の前記列数が、選択した合成プラットフォームのオリゴ長、前記エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する前記複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される、請求項
10に記載の方法。
【請求項12】
前記空の行列の前記行数が、選択した合成プラットフォームのオリゴ長、前記エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する前記複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される、請求項
10または11に記載の方法。
【請求項13】
前記エラー訂正コーディングがリードソロモン(「RS」)コーディングである、請求項
10~12のいずれか1項に記載の方法。
【請求項14】
エラー訂正コーディングを適用することにより生成された前記データが、前記RSコーディングの文字列訂正及び/または前記RSコーディングのブロック訂正を適用することによって生成される、請求項
13に記載の方法。
【請求項15】
前記5ビットトランスコーディングフレームワークが表2による、請求項1~
14のいずれか1項に記載の方法。
【請求項16】
R及びYが、1)RまたはYの直前の前記ヌクレオチドとは異なること、及び/または2)前記ヌクレオチド配列の推定GC含有量に基づいて選ばれる、請求項
15に記載の方法。
【請求項17】
前記入力データが圧縮ファイルに相当する、請求項1~
16のいずれか1項に記載の方法。
【請求項18】
前記入力データが2つ以上のファイルに相当する、請求項
1~17のいずれか1項に記載の方法。
【請求項19】
前記入力データがテキストファイルに相当する、請求項
1~16及び請求項18のいずれか1項に記載の方法。
【請求項20】
前記データ処理ステップが、圧縮ファイルを得るために前記入力データを圧縮することと、前記圧縮したファイルを2進列に変換することをさらに含む、請求項1~
19のいずれか1項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、全内容がすべての目的のために本明細書に参照により援用される、2017年7月25日に出願された中国特許出願第201710611123.2号の利益を主張する。
【0002】
ASCIIテキストファイルでの配列表の提出
ASCIIテキストファイルでの以下の提出、つまりコンピュータ可読形式(CRF)の配列表(ファイル名759892000340SEQLIST.TXT、記録日:2018年7月3日、サイズ、102KB)の内容は、その全体が参照により本明細書に援用される。
【0003】
本開示は、概してデータストレージ及びデータ取り出しに関し、より詳細には、確実かつ効率的なDNAベースのデータストレージ及びデータ取り出しを達成するための技術に関する。
【背景技術】
【0004】
DNAをデータストレージ及びデータ取り出しのための手段として活用するという概念は、Joe Davis及び彼の共同研究者が、アイコンを符号化するための「Mocrovenus」と名付けられた合成DNAを作成し、それをE.coli細胞の中に組み込んだ1988年まで遡ることができる。例えば磁気テープ及びハードディスク等の従来の記憶媒体と比較すると、DNAベースのストレージは、より高密度(例えば、1EBのデータを記憶する場合~1mm3)、より長期に亘るストレージ(例えば、-18℃で百万年以上)、及びより低い維持費という優位点を有する。DNAストレージは、DNA記憶媒体の生成のためのオリゴヌクレオチド合成(特に、CustomArrayのような高スループットの合成プラットフォーム)と、情報取り出しのためのシークエンシング(特に、Illumina HiSeq 2500及びMiSeqのような次世代シークエンシング[NGS])の両方に基づく最先端の研究分野である。
【0005】
ところが、現在、DNAベースのデータストレージはいくつかの制限を有している。例えば、DNA合成の生産コストはかなり高い。一方、データ取り出しの速度は、シークエンシングのために低い場合がある。したがって、DNAベースのストレージは、より少ない数の記憶媒体の読み取り及び書き込みを伴う大規模なアーカイブストレージにより適していると見なされてきた。さらに、プロセスの多様な段階(例えば、符号化、書き込み、記憶、復号、読み取り、取り出し)において多くのエラーがもたらされ、したがってデータストリームの入力及び出力に欠陥を生じさせる場合がある。例示的なエラーは、合成及びシークエンシング中に生じるDNAフラグメントの突然変異、削除、挿入、紛失、及び長期に亘る記憶の後の変性を含む。さらに、大量のデータが、DNAを使用し記憶されるとき、データをその全体で取り出すことなくデータの一部分に対するランダムアクセスを達成することは難易度が高い場合がある。
【発明の概要】
【課題を解決するための手段】
【0006】
本発明は、確実かつ効率的なDNAベースのデータストレージ及びデータ取り出しのための技術に関する。具体的には、本発明は、入力されたデータを、例えばデオキシリボ核酸(「DNA」)等の核酸に記憶する正確で効率的かつ信頼できる方法を提供する。特に、本発明は、新規の5ビットトランスコーディングフレームワークを利用して、1つ以上のデータファイルを核酸配列(例えば、DNA配列)に変換する。また、本発明は、効率的かつ信頼できるデータストレージ及びデータ取り出しのための圧縮アルゴリズム(複数可)、エラー訂正アルゴリズム(複数可)、及びトランスコーディングフレームワーク(複数可)を含む統合プロセスも提供する。さらに、本発明は、同時に大規模なデータを記憶するが、所与のときに部分的な情報だけをブラウズする必要があるときに特に有益であるランダムデータアクセスを可能にする。本明細書に開示する方法に従って記憶できるデータは、例えばテキストファイル、高解像度ビデオ、画像、及び/または音声を含む、デジタルで(つまりバイナリデータで)表すことができるであろう任意のタイプのデータを含む。
【0007】
一部の実施形態では、a)入力データをヌクレオチド配列に変換することであって、変換することが、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む変換することと、b)ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む、核酸に入力データを記憶するための方法が提供される。
【0008】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。
【0009】
一部の実施形態では、データ処理ステップは、2進列を非重複5ビット2進列の数列に分割することを含む。
【0010】
一部の実施形態では、ヌクレオチド符号化ステップは、整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換することを含む。
【0011】
一部の実施形態では、ヌクレオチド符号化ステップは、ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することをさらに含む。
【0012】
一部の実施形態では、ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。
【0013】
一部の実施形態では、複数の整数の初期部分列のそれぞれの長さは、選択した合成プラットフォームのオリゴ長、所望されるエラー許容範囲、入力データのサイズ、選択したエラー訂正符号、またはその組み合わせに基づいて決定される。
【0014】
一部の実施形態では、ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、インデックス情報を複数の整数の初期部分列のそれぞれに加えることをさらに含む。
【0015】
一部の実施形態では、複数の整数の初期部分列のそれぞれに加えられたインデックス情報は整数の数列を含み、整数の数列の長さは入力データのサイズに基づく。
【0016】
一部の実施形態では、ヌクレオチド符号化ステップは、インデックス情報を加えた後に、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることを含む。
【0017】
一部の実施形態では、冗長性データを、インデックスを有する複数の整数部分列に加えることは、空の行列を作成することであって、空の行列内の列数は、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列内の行数は、インデックスを有する複数の整数部分列のそれぞれの中の整数の数よりも大きい、作成することと、インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで空の行列を充填することと、充填した行列に基づいて冗長性を有する複数の部分列を得ることとを含む。
【0018】
一部の実施形態では、空の行列の列数は、選択した合成プラットフォームのオリゴ長、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数のサブシーエンスのサイズ、またはその組み合わせに基づいて決定される。
【0019】
一部の実施形態では、空の行列の行数は、選択した合成プラットフォームのオリゴ長、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数のサブシーエンスのサイズ、またはその組み合わせに基づいて決定される。
【0020】
一部の実施形態では、エラー訂正コーディングは、リードソロモン(「RS」)コーディングである。
【0021】
一部の実施形態では、エラー訂正コーディングを適用することによって生成されたデータは、RSコーディングの文字列訂正及び/またはRSコーディングのブロック訂正を適用することによって生成される。
【0022】
一部の実施形態では、5ビットトランスコーディングフレームワークは、表2による。
【0023】
一部の実施形態では、R及びYは、1)RまたはYの直前のヌクレオチドとは異なること、及び/または2)ヌクレオチド配列の推定GC含有量に基づいて選ばれる。
【0024】
一部の実施形態では、入力データは圧縮ファイルに相当する。一部の実施形態では、入力データは2つ以上のファイルに相当する。
【0025】
一部の実施形態では、入力データはテキストファイルに相当する。
【0026】
一部の実施形態では、データ処理ステップは、圧縮ファイルを得るために入力データを圧縮し、圧縮したファイルを2進列に変換することをさらに含む。
【0027】
一部の実施形態では、圧縮ファイルは、レンペルジフマルコフチェーンアルゴリズム(「LZMA」)を使用し、圧縮される。
【0028】
一部の実施形態では、データ処理ステップは、2つ以上のファイルを1つのTARファイルにグループ化することをさらに含む。
【0029】
一部の実施形態では、TARファイルは、レンペルジフマルコフチェーンアルゴリズム(「LZMA」)を使用し、さらに圧縮される。
【0030】
一部の実施形態では、ヌクレオチド符号化ステップは、ヌクレオチド配列の集合の各ヌクレオチド配列の5’末端及び3’末端にプライマー配列のペアを付加することをさらに含む。
【0031】
一部の実施形態では、プライマーのペアは、合成した核酸の集合に付けられる。
【0032】
一部の実施形態では、a)入力データの2つ以上の集合を、本明細書に説明する方法のいずれかに従って対応するヌクレオチド配列の2つ以上の集合に別々に変換することと、b)ヌクレオチド配列の2つ以上の集合の各集合の5’末端及び3’末端にプライマー配列のペアを別々に付加することであって、対応するヌクレオチド配列の2つ以上の集合のためのプライマーのペアが互いに異なる、付加することと、c)それぞれ対応するヌクレオチド配列の2つ以上の集合を含む核酸の2つ以上の集合を合成することと含む、入力データの2つ以上の集合を核酸に記憶するための方法が提供される。
【0033】
一部の実施形態では、プライマーの各ペアは、対応するヌクレオチド配列の2つ以上の集合またはその相補配列のいずれか1つとは異なる配列を有する。
【0034】
一部の実施形態では、合成した核酸の集合は、30%~70%に及ぶGC含有量を有する。一部の実施形態では、合成した核酸の集合は、約70%未満のGC含有量を有する。
【0035】
一部の実施形態では、合成した核酸の集合が保管される。一部の実施形態では、合成した核酸の集合は、乾燥により保管される。一部の実施形態では、合成した核酸の集合は、凍結乾燥により保管される。
【0036】
一部の実施形態では、合成した核酸の集合は、担体上で不動にされる。一部の実施形態では、担体はマイクロアレイである。
【0037】
一部の実施形態では、a)核酸の集合のヌクレオチド配列の集合を得ることと、b)ヌクレオチド配列の集合を出力データに変換することであって、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換して、それによって出力データを得ることを含むデータ処理ステップを含む、変換することを含む、核酸に記憶された出力データを取り出すための方法が提供される。
【0038】
一部の実施形態では、核酸の集合は、出力データを取り出す前に増幅される。
【0039】
一部の実施形態では、核酸の集合は、複数の配列リードを生成するために配列される。
【0040】
一部の実施形態では、複数の配列リードは、ヌクレオチド配列の集合を得るためにペアにされ、マージされ、フィルタにかけられる。
【0041】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。
【0042】
一部の実施形態では、ヌクレオチド復号ステップは、ヌクレオチド配列の集合を、0~31に及ぶ整数を含む複数の整数部分列に変換することを含む。
【0043】
一部の実施形態では、ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。
【0044】
一部の実施形態では、エラー訂正コーディングを適用するステップは、i)複数のコンセンサス整数(consensus integer)部分列を得るために、RSコーディング文字列訂正を複数の整数部分列に適用することと、ii)インデックスを有する複数の整数部分列を得るために、RSコーディングブロック訂正を複数のコンセンサス整数部分列に適用することを含む。
【0045】
一部の実施形態では、ヌクレオチド復号ステップは、複数の整数のコア部分列を得るために、インデックスを有する複数の整数部分列からインデックスを削除することをさらに含む。
【0046】
一部の実施形態では、ヌクレオチド復号ステップは、整数のコア部分列を整数の文字列にマージすることをさらに含む。
【0047】
一部の実施形態では、ヌクレオチド復号ステップは、整数の文字列を2進列に変換することをさらに含む。
【0048】
一部の実施形態では、出力データは圧縮ファイルに記憶される。一部の実施形態では、データ処理ステップは、圧縮ファイルを解凍することをさらに含む。一部の実施形態では、解凍することは、LZMAアルゴリズムを通して実施される。
【0049】
一部の実施形態では、出力データは複数のファイルに相当する。一部の実施形態では、複数のファイルは、TARアルゴリズムを通して出力データから抽出される。
【0050】
一部の実施形態では、5ビットトランスコーディングフレームワークは表2による。
【0051】
一部の実施形態では、核酸の集合は、3’末端及び5’末端にプライマー配列を含み、方法は、ヌクレオチド復号ステップの前にプライマー配列を削除することを含む。
【0052】
一部の実施形態では、関心のある核酸の集合に記憶された出力データを取り出すための方法が提供され、関心のある核酸の集合は、混合物に存在する複数のヌクレオチド配列の集合のうちの1つであり、各集合は、出力データの異なる集合を符号化し、3’末端及び5’末端にプライマー対の異なる集合を有し、a)関心のある核酸に対応するプライマーペアを使用し、核酸の集合を増幅させることと、b)増幅させた核酸のヌクレオチド配列の集合を得ることと、c)請求項41~53のいずれか1項に係る方法に従って、ヌクレオチド配列の集合を出力データに変換して、それによって出力データを得ることを含む。
【0053】
一部の実施形態では、関心のある核酸の対応する2つ以上の集合に記憶された出力データの2つ以上の集合を取り出すための方法が提供され、関心のある核酸の2つ以上の集合は、混合物に存在する複数のヌクレオチド配列の中にあり、各集合は、出力データの異なる集合を符号化し、3’末端及び5’末端にプライマーペアの異なる集合を有し、a)関心のある核酸の2つ以上の集合に対応するプライマーペアを使用し、関心のある核酸の2つ以上の集合を増幅させること(例えば、別々に増幅させること又はともに増幅させること)と、b)増幅させた核酸のヌクレオチド配列の2つ以上の集合を得ることと、c)本明細書に説明する方法のいずれかに従って、ヌクレオチド配列の2つ以上の集合を出力データの2つ以上の集合に別々に変換して、それによって出力データの2つ以上の集合を得ることを含む。
【0054】
一部の実施形態では、1つ以上のプログラムを記憶する非一過性のコンピュータ可読記憶媒体が提供され、1つ以上のプログラムは、電子機器の1つ以上のプロセッサによる実行時に、電子機器に本明細書に説明する方法のいずれかを実施させる命令を含む。
【0055】
また、1つ以上のプロセッサ、メモリ、及び1つ以上のプログラムを含む核酸をベースにした、データストレージまたは核酸からのデータ取り出しを提供するためのシステムも提供され、1つ以上のプログラムは、メモリに記憶され、1つ以上のプロセッサにより実行されるように構成され、1つ以上のプログラムは、本明細書に説明する方法のいずれかを実施するための命令を含む。
【0056】
また、本明細書に説明する方法のいずれかを実施するための手段を含む、核酸をベースにしたデータストレージまたは核酸からのデータ取り出しを提供するための電子機器も提供される。
【図面の簡単な説明】
【0057】
【
図1】一部の実施形態に従って、DNAベースのデータストレージ及びデータ取り出しを提供するための例示的なプロセスを示す。
【
図2】一部の実施形態に従って、DNAベースのデータストレージのために圧縮データを処理するための例示的な状況を示す。
【
図3A】一部の実施形態に従って、インデックス及び冗長性データを、記憶されるデジタルコンテンツに加えるための例示的なステップを示す。
【
図3B】一部の実施形態に従って、インデックス及び冗長性データを、記憶されるデジタルコンテンツに加えるための例示的なステップを示す。
【
図3C】一部の実施形態に従って、インデックス及び冗長性データを、記憶されるデジタルコンテンツに加えるための例示的なステップを示す。
【
図3D】一部の実施形態に従って、インデックス及び冗長性データを、記憶されるデジタルコンテンツに加えるための例示的なステップを示す。
【
図4】一部の実施形態に従って、DNAベースのデータストレージのために圧縮ファイルを処理するための例示的な状況を示す。
【
図5】一部の実施形態に従って、例示的な5ビットトランスコーディングフレームワークを示す。
【
図6】一部の実施形態に従って、記憶され、取り出される例示的なテキスト部分を示す。
【
図7】一部の実施形態に従って、DNAベースのデータストレージ及びデータ取り出しの技術の例示的な実現を示す。
【
図8】一部の実施形態に係る例示的な電子機器を示す。
【
図9A】一部の実施形態に従って、DNAベースのデータストレージを提供するための例示的なプロセスを示す。
【
図9B】一部の実施形態に従って、DNAベースのデータ取り出しを提供するための例示的なプロセスを示す。
【発明を実施するための形態】
【0058】
本発明は、例えばデオキシリボ核酸(「DNA」)等の核酸に入力データを記憶する正確で効率的かつ信頼できる方法を提供する。具体的には、本発明は、1つ以上のデータファイルを核酸配列(例えば、DNA配列)に変換するために、新規の5ビットトランスコーディングフレームワークを利用する。この新規のトランスコーディングフレームワークは、正しいGC含有量を発見し、一定のホモポリマー(例えば、4以上のヌクレオチド長であるホモポリマー)を回避し、核酸の合成及び増幅におけるエラーレートを削減する効果的な核酸配列設計を可能にする。また、本発明は、効率的かつ信頼できるデータストレージ及びデータ取り出しのための圧縮アルゴリズム(複数可)、エラー訂正アルゴリズム(複数可)、及びトランスコーディングフレームワーク(複数可)を含む統合プロセスも提供する。本明細書に提供される方法は、大型ファイルを含む任意のサイズのデータを記憶するために使用できる。さらに、本発明は、同時に大規模なデータを記憶するが、所与のときに部分的な情報だけをブラウズする必要があるときに特に有益であるランダムデータアクセスを可能にする。本明細書に開示する方法に従って記憶できるデータは、例えばテキストファイル、高解像度ビデオ、画像、及び/または音声を含む、デジタルで(つまりバイナリデータで)表すことができるであろう任意のタイプのデータを含む。
【0059】
したがって、本願は、一態様において、入力データをヌクレオチド配列の集合に変換するための方法だけではなく、核酸の集合に入力データを記憶するための方法も提供する。別の態様では、ヌクレオチド配列の集合を出力データに変換するための方法だけではなく、核酸に記憶された出力データを取り出すための方法も提供される。また、本明細書に説明する方法の任意の1つ以上のステップを実施するために1つ以上のプログラムを記憶するためのシステム及び非一過性のコンピュータ可読記憶媒体も提供される。
【0060】
本明細書に説明する本発明の実施形態が、実施形態「から成ること」及び/または実施形態「から基本的に成ること」を含むことが理解される。
【0061】
本明細書での値またはパラメータ「について」に対する参照は、本質的にその値またはパラメータを対象とする変形を含む(及び記述する)。例えば、「Xについて」を参照する記述は、「X」の記述を含む。
【0062】
本明細書で使用するとおり、値またはパラメータに対してでは「ない」参照は、概して値またはパラメータ「以外」を意味し、記述する。例えば、方法はX型のがんを治療するために使用されないは、方法が、X以外の型のがんを治療するために使用されることを意味する。
【0063】
本明細書及び添付の特許請求の範囲で使用するとおり、単数形「a」、「or」、及び「the」は、文脈上明らかに他の意味に解釈すべき場合を除いて、複数指示語を含む。
【0064】
本明細書及び添付の特許請求の範囲で使用するとおり、「の集合」は、文脈上明らかに他の意味に解釈すべき場合を除いて、1つまたは複数の指示語を指す。核酸の集合は、同じファイルまたはともに圧縮されたファイルの同じグループからの核酸符号化データである場合がある。一部の実施形態では、同じファイル内の核酸は、5’末端及び3’末端に付けられたプライマーの同じ集合を有する場合がある。
【0065】
データを符号化する方法及びデータストレージ
本発明は、一態様で、入力データをヌクレオチド配列の集合に変換するための(例えば、コンピュータ実装方法等の)方法を提供する。方法は、通常、入力データを2進列に変換するデータ処理ステップ、及びヌクレオチド配列の集合を得るために5ビットトランスコーディングフレームワークを使用し、2進列を変換するヌクレオチド符号化ステップを含む。方法は、核酸の集合に入力データを記憶するために有用であり、これは、最初に入力データをヌクレオチド配列の集合に変換し、次いでヌクレオチド配列の集合を含む核酸の集合を合成することを伴う。
【0066】
入力データは、例えばテキストファイル、画像ファイル、(例えば、高解像度ファイル等の)音声/ビデオファイル等の任意のタイプの任意の数のファイルを表す場合がある。ファイルは、圧縮されていない場合もあれば、圧縮されている場合もある。ファイルが圧縮されていないとき、ファイルは、2進列に変換される前に先に圧縮される場合がある。例えば、ファイルは、レンペルジフマルコフチェーンアルゴリズムを使用し、LZMAファイル(例えば、A.lzma)に圧縮される場合がある。一部の実施形態では、2つ以上のファイル(例えば、3つの、4つの、5つの、6つの、及びそれ以上のファイル)が、先に例えばTARファイル(例えば、A.tar)に互いにグループ化され、TARファイルはさらにLZMAファイル(例えば、A.tar.lzma)に圧縮される。このようにして、方法は、単一の核酸組成の中に多数のファイル(例えば、1~5、5~10、10~15、15~25、25~35、35~50)を記憶することを可能にできる。
【0067】
一部の実施形態では、単一ファイルの中の場所へのランダムアクセスを可能にするために、単一ファイルは、データの多数の集合に分割される場合があり、データの多数の集合はそれぞれ以下に説明するように圧縮され、処理される。例えば、10章を有する書籍に相当するデジタルファイルは10のファイルに分割され、各ファイルが単一の章に相当する場合がある。10のファイルは、次いで任意の章のランダムアクセスを達成するために別々に圧縮され、処理される。
【0068】
データ処理ステップは、入力データを2進列に変換する。例えば、本明細書に説明する5ビットトランスコーディングフレームワークに従うことによって、2進列をヌクレオチド配列の集合に直接的に変換できる。代わりに、2進列は、例えば5ビットトランスコーディングフレームワークに従うことによって、次いでヌクレオチド配列の集合に変換される整数の文字列にさらに変換される場合がある。一部の実施形態では、整数の文字列は、エラー訂正コーディング及び/または冗長性を有する複数の整数部分列を生成するための他のプロセスにさらにさらされ、冗長性を有する複数の整数部分列は次いで、例えば5ビットトランスコーディングフレームワークに従うことによってヌクレオチド配列の集合に変換される。
【0069】
このようにして、例えば、一部の実施形態では、入力データをヌクレオチド配列の集合に変換するための(例えば、コンピュータ実装方法等の)方法が提供され、変換することは、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。一部の実施形態では、入力データを核酸に記憶するための方法が提供され、方法は、a)入力データをヌクレオチド配列の集合に変換することであって、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む、変換することと、b)ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む。
【0070】
一部の実施形態では、データ処理ステップは、それぞれが整数の文字列を得るために0~31に及ぶ整数にさらに変換される場合がある非重複5ビット2進列の数列に2進列を分割することを含む。整数の文字列は、例えば5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合に直接的に変換される場合がある。代わりに、整数の文字列は、以下に説明する追加の操作にさらされる。
【0071】
具体的には、整数の文字列は、所定の長さを有する複数の整数の初期部分列に分割される場合がある。整数の初期部分列の所定の長さは、以下に詳細に説明するように、合成プラットフォームのオリゴ長、選択したエラー訂正符号、所望されるエラー許容範囲、オリゴの合成エラーレート、及び/または総符号化データサイズを含む複数の要因に基づいて計算される。例えば、整数文字列は、長さが固定された(例えば、22の整数)スライディングウィンドウを使用し、非重複整数部分列のリストにスライスされる場合がある。インデックスは、次いでインデックスを有する複数の整数部分列を生成するために、複数の整数の初期部分列のそれぞれに加えられる場合がある。インデックスは、やはり0~31に及ぶいくつかの整数を含む場合がある。インデックスの長さは柔軟性があり、DNA合成のスループット及びデータサイズに依存する。
【0072】
一部の実施形態では、冗長性データは、冗長性を有する複数の整数部分列を生成するために加えられる。例えば、リードソロモン(RS)エラー訂正コーディングは、RSコーディングの文字列訂正及びブロック訂正を通して冗長性を有する整数部分列の新規リストを生成するために複数の整数部分列に適用される。冗長性は、ドロップアウトにロバストネスを提供するための合成されたオリゴの余剰分を指す。文字列訂正における冗長性は、オリゴの遷移及びトランスバージョンのエラー訂正に役立つ。ブロック訂正における冗長性は、情報の挿入の訂正、削除、及び完全に紛失を可能にする。
【0073】
例示的な一実施形態では、冗長性データを、インデックスを有する複数の整数部分列に加えることは、空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数が、インデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで空の行列を充填することと、充填した行列に基づいて冗長性を有する複数の部分列を得ることとを含む。空の行列の列及び/または行の数は、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される場合がある。一部の実施形態では、エラー訂正コーディングはリードソロモン(「RS」)コーディングである。一部の実施形態では、エラー訂正コーディングを適用することにより生成されるデータは、RSコーディングの文字列訂正、及びRSコーディングのブロック訂正を適用することにより生成される。
【0074】
一部の実施形態では、ヌクレオチド符号化ステップは、プライマー配列のペアを、ヌクレオチド配列の’5末端及び3’末端に付加することをさらに含む。プライマーは、例えばPCR増幅方法により、核酸の集合を増幅させるために使用できる。一部の実施形態では、プライマー配列は、合成の前にヌクレオチド配列の集合に加えられる。代わりに、プライマーは、例えばライゲーションにより、合成した核酸に付けられる場合がある。
【0075】
方法は、入力データの2つ以上の集合を核酸に記憶するために有用である場合がある。具体的には、方法は、a)入力データの2つ以上の集合を、対応するヌクレオチド配列の2つ以上の集合に別々に変換すること、b)プライマー配列のペアを、ヌクレオチド配列の2つ以上の集合のそれぞれの5’末端及び3’末端に別々に付加することであって、対応するヌクレオチド配列の2つ以上の集合のそれぞれのためのプライマーが互いに異なる、付加すること、及びc)それぞれ対応するヌクレオチド配列の2つ以上の集合を含む核酸の複数の集合を合成することと、を含む。プライマーのペアのそれぞれは、2つ以上の対応するヌクレオチド配列またはその相補配列のうちの任意の1つとは異なる配列を有する場合がある。
【0076】
合成した核酸は、約30%~約70%に及ぶGC含有量を有する場合がある。例えば、合成した核酸は、約40%~約60%、約30%~約40%、約40%~約50%、約50%~約60%、または約60%~約70%のいずれかに及ぶGC含有量を有する場合がある。一部の実施形態では、合成した核酸は、3ヌクレオチドよりも長いホモポリマーを有さない(例えば、4、5、6、7、8、9、または10のヌクレオチドのホモポリマーはない)。一部の実施形態での合成した核酸は、例えばおよそ50、150、200、300、または400ヌクレオチド長のいずれかのオリゴヌクレオチド等のオリゴヌクレオチドである。一部の実施形態では、核酸の集合は、およそ1、2、3、5、10、15、またはそれ以上のオリゴヌクレオチドのいずれかを含む。
【0077】
一部の実施形態では、方法は、合成した核酸の集合を記憶することをさらに含む。一部の実施形態では、核酸の集合は、例えば凍結乾燥等の乾燥により保管される。核酸の集合は、凍結乾燥された組成物を含む乾燥組成物として保管される場合がある。一部の実施形態では、核酸の集合は、例えばマイクロアレイ等の固体担体を含む、担体上で不動にされる。一部の実施形態では、核酸は、(例えば、CustomArray 12Kチップの)1インチx3インチの面積あたり約5μgの密度を有するマイクロアレイ上に保管される。一部の実施形態では、入力データのサイズは、少なくとも約50MBである。
【0078】
核酸配列を復号する方法及びデータ取り出し
本発明は、別の態様で、ヌクレオチド配列の集合を出力データに変換するための(例えば、コンピュータ実装方法等の)方法を提供する。方法は、符号化手順とほぼ逆の過程であり、通常、例えば5ビットトランスコーディングフレームワークを使用することによってヌクレオチド配列の集合を2進列に変換するヌクレオチド復号ステップ、及び2進列を出力データに変換するデータ処理ステップを含む。方法は、核酸の集合に記憶された出力データを取り出すために有用であり、これは、核酸の集合のヌクレオチド配列を得て、次いでヌクレオチド配列の集合を出力データに変換することを伴う。
【0079】
一部の実施形態では、核酸の集合は、例えば核酸の集合の5’末端及び3’末端に存在するプライマーを使用することによって、最初に増幅される。そして、増幅された核酸は、例えば次世代シークエンシング等、シークエンシングにさらされる場合がある。次世代シークエンシング技術は、概して技術で既知である。例えば、核酸は、Illuminaのシークエンシング方法を使用することによって配列される場合がある。特定のファイルに属する配列は、プライマー配列を位置合わせすることによって得ることができる。一部の実施形態では、方法はNGSライブラリ準備を含む。核酸の集合が、データの異なる集合を符号化する核酸の異なる集合を含む混合物に存在するとき、関心のある核酸の集合は、関心のある核酸の集合に固有のプライマー対を使用することによって明確に増幅させることができ、このようにして関心のある核酸の集合に対応するデータのランダムアクセスを可能にする。次世代シークエンシングの単一のランでいくつかの圧縮ファイルを読み取り、復号する必要がある場合、核酸のその対応する集合のすべてはPCRを通して増幅され、すべての対応するペアが使用される。
【0080】
一部の実施形態では、方法は、ペアエンド次世代シークエンシング、及び単一のクラスタからの順方向リード及び逆方向リードがペアにされ、単一のリードにマージされ、不規則な長さを有するすべての新しいリードがフィルタにかけられるリードペア及びリードマージを含む。そして、プライマー配列に従って、すべてのリードは、圧縮ファイルごとにグループ化される場合がある。プライマーは、次いで削除される場合があり、ヌクレオチド配列は、0~31に及ぶ整数を含む複数の整数部分列に変換される、またはその後出力データに変換される2進列に直接的に変換されるかのどちらかである場合がある。
【0081】
一部の実施形態では、方法は、インデックスを有する複数の整数部分列を得るために、複数の整数部分列のエラー訂正を適用することをさらに含む。例示的な一実施形態では、エラー訂正コーディングを適用するステップは、i)複数のコンセンサス整数部分列を得るために、RSコーディング文字列訂正を複数の整数部分列に適用すること、及びii)インデックスを有する複数の整数部分列を得るために、RSコーディングブロック訂正を複数のコンセンサス整数部分列に適用することを含む。1種類の核酸が合成中に分子の多くコピーを有し、何度も配列されるであろうため、多くのリードが1つの核酸を表すことがあるであろう。高スループット合成とシークエンシングの両方の間にもたらされるエラーのため、これらのリードは変形を有する場合があるが、最初に設計された核酸と完全によく一致する正しいリードは、依然としてカウントよりも有利である。整数文字列のあらゆる場所での最高頻度に基づいた訂正を通して、同一のインデックスを共用するすべての整数文字列を訂正し、文字列訂正とブロック訂正との間のコンセンサス整数文字列にマージすることができる。
【0082】
インデックスを有する複数の整数部分列からのインデックスは、次いで複数の整数のコア部分列を得るために削除されてよい。整数文字列は、次いで完全な整数文字列に連結され、次いで2進列に変換される場合がある。2進列は、次いで例えば圧縮ファイル等のファイルの中に書き込まれる場合がある。圧縮ファイルは、次いで例えばLZMAアルゴリズムを使用することによって解凍される場合がある。解凍されたファイルが多数のファイルに対応するデータを含む場合、解凍されたファイルは、多数のファイルを得るためにTARアルゴリズムによりさらに処理される(例えば、抽出される)。
【0083】
一部の実施形態では、方法は、関心のある核酸の集合に記憶された出力データを取り出すために有用であり、関心のある核酸の集合は、混合物に存在するヌクレオチド配列の複数の集合のうちの1つであり、各集合は出力データの異なる集合を符号化し、3’末端及び5’末端にプライマーペアの異なる集合を有する。方法は、a)関心のある核酸の集合に対応するプライマーペアを使用し、核酸の集合を増幅させること、b)増幅させた核酸の集合のヌクレオチド配列の集合を得ること、及びc)請求項41~請求項53のいずれか1項に記載の方法に従って、ヌクレオチド配列の集合を出力データに変換すること、それによって出力データを得ることを含む。
【0084】
一部の実施形態では、関心のある核酸の対応する2つ以上の集合に記憶された出力データの2つ以上の集合を取り出すための方法が提供され、関心のある核酸の集合は、混合物に存在する核酸の複数の集合の中にあり、各集合は、出力データの異なる集合を符号化し、3’末端及び5’末端にプライマーペアの異なる集合を有し、方法は、a)関心のある核酸の2つ以上の集合に対応するプライマーペアを使用し、関心のある核酸の2つ以上の集合を増幅させる(例えば、別々に増幅させるまたはともに増幅させる)こと、b)増幅させた核酸の2つ以上の集合のヌクレオチド配列の2つ以上の集合を得ること、及びc)ヌクレオチド配列の2つ以上の集合を出力データの2つ以上の集合に別々に変換すること、それによって出力データの2つ以上の集合を得ることを含む。
【0085】
5ビットトランスコーディングフレームワーク
本発明の方法は、2進列または整数文字列をヌクレオチド配列の集合に変換するための新規の5ビットトランスコーディングフレームワークを利用する。「5ビットトランスコーディングフレームワーク」は、以下の表1に従った変換を指す。概して、2進列からのあらゆる5個の継続ビットは、0~31に及ぶ整数、ひいては3個のヌクレオチド(つまり、3マー)として表されるであろう。例えば、4つの塩基(例えば、A、T、G、及びC)、したがって2マー(つまり、NN)を有する核酸は、16種類(例えば、AA、AT、AG、AC、TA、TT、TG、TC、GA、GT、GG、GC、CA、CT、CG、及びCC)を有するべきである。変性した塩基R及びYが2マーの後に連結され、3マー(NNR/NNY)が、0~31に及ぶ32の整数とよく一致していた32種類から成り、DNA配列に変換中の2進列を作ると仮定する。
【0086】
一部の実施形態では、RはA、T、G、及びCのうちの任意の2つから選択され、一方Yは、A、T、G、及びCのうちの対応する他の2つから選択される。例えば、一部の実施形態では、RはA及びGから選択され、一方YはT及びCから選択される。一部の実施形態では、RはA及びCから選択され、一方YはT及びGから選択される。一部の実施形態では、RはT及びGから選択され、一方YはA及びCから選択される。一部の実施形態では、RはT及びCから選択され、一方YはA及びGから選択される。
【0087】
R及びYに対応するヌクレオチドの選択は、例えば所望のGC含有量を維持する、及び/またはホモポリマーを回避するために、その前部の主成分に依存する場合がある。例えば、RがA及びGから選択され、YがC及びTから選択される方式においては、AまたはGがRのために選ばれるのかどうか、及びCまたTがYのために選ばれるかどうかは、その前部の主成分(つまり、3マーの第2の塩基)次第である。一部の実施形態では、R及びYは、第2の塩基及び第3の塩基が異なるように選ばれる。一部の実施形態では、R及びYは、所望のGCバランスを維持するために選ばれる。規則に従う限り、R及びYは無作為に選ぶことができる。このトランスコーディングフレームワークのコーディングの可能性は1.67(つまり、3ナノテスラに対して5ビット)である。
【表1】
【0088】
表2は、例示的な5ビットトランスコーディングフレームワークを提供する。
図2に示す特定の方式では、RはA及びGから選択されるべきであり、一方YはC及びTから選択されるべきである。同じ原理に従う他のトランスコーディングフレームワークも使用できることが理解されるべきである。
【表2】
【0089】
核酸の合成及び記憶
所望のヌクレオチド配列を含む核酸は、任意の核酸合成方法を使用し、合成することができる。一部の実施形態では、核酸は、化学合成により合成される。高スループットの核酸合成の方法は、参照によりその全体が本明細書に援用される、2002年2月17日に出願され、「COMBINATORIAL SYNTHESIS ON ARRAYS」と題する第WO03052383号として公開された国際出願第WO2002US40580号、及び2016年12月に出版された、Maurer et.al.による「ELECTROCHEMICALLY GENERATED ACID AND ITS CONTAINMENT TO 100 MICRON REACTION AREAS FOR THE PRODUCTION OF DNA MICROARRAYS」と題する出版物に説明されている。
【0090】
核酸は、いったん合成されると、多様な媒体に保管できる。一部の実施形態では、核酸は乾燥され(例えば、冷凍乾燥され)、バイアル内に保管される。一部の実施形態では、核酸は、例えばマイクロアレイ等の固体担体等、担体上で不動にされる。
【0091】
コンピュータ可読記憶媒体及びシステム
また、本明細書に提供されるのは、1つ以上のプログラムを記憶する非一過性のコンピュータ可読記憶媒体であり、1つ以上のプログラムは、電子機器の1つ以上のプロセッサによる実行時に、電子機器に、本明細書に説明する方法のいずれかの1つ以上のステップを実施させる命令を含む。
【0092】
一部の実施形態では、核酸ベースのデータストレージまたは核酸からのデータ取り出しを提供するためのシステムが提供され、システムは、1つ以上のプロセッサ、メモリ、及び1つ以上のプログラムを含み、1つ以上のプログラムは、メモリに記憶され、1つ以上のプロセッサにより実行されるように構成され、1つ以上のプログラムは、本明細書に説明する方法のいずれか1つの1つ以上のステップを実施するための命令を含む。
【0093】
一部の実施形態では、核酸ベースのデータストレージまたは核酸からのデータ取り出しを提供するための電子機器が提供され、機器は、本明細書に説明する方法のいずれか1つを実施するための手段を含む。
【0094】
例示的な実施形態
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、2進列を、非重複5ビット2進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。
【0095】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、2進列を非重複5ビット2進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。
【0096】
一部の実施形態では、複数の整数の初期部分列のそれぞれの長さは、選択した合成プラットフォームのオリゴ長、所望されるエラー許容範囲、入力データのサイズ、選択されたエラー訂正符号、またはその組み合わせに基づいて決定される。
【0097】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、2進列を非重複5ビット2進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、インデックス情報を整数の複数の初期部分列のそれぞれに加えることをさらに含む。
【0098】
一部の実施形態では、複数の整数の初期部分列のそれぞれに加えられたインデックス情報は、整数の数列を含み、整数の数列の長さは、入力データのサイズに基づく。
【0099】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、2進列を非重複5ビット2進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、複数の整数の初期部分列のそれぞれにインデックス情報を加えることをさらに含む。ヌクレオチド符号化ステップは、インデックス情報を加えた後に、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることをさらに含む。
【0100】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、2進列を、非重複5ビット2進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、インデックス情報を複数の整数の初期部分列のそれぞれに加えることをさらに含む。ヌクレオチド符号化ステップは、インデックス情報を加えた後、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることをさらに含む。冗長性データを、インデックスを有する複数の整数部分列に加えることは、空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数が、インデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで空の行列を充填することと、充填した行列に基づいて冗長性を有する複数の部分列を得ることを含む。
【0101】
一部の実施形態では、空の行列の列数は、選択した合成プラットフォームのオリゴ長、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される。
【0102】
一部の実施形態では、空の行列の行数は、選択した合成プラットフォームのオリゴ長、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される。
【0103】
一部の実施形態では、エラー訂正コーディングはリードソロモン(「RS」)コーディングである。
【0104】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、2進列を、非重複5ビット2進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、複数の整数の初期部分列のそれぞれにインデックス情報を加えることをさらに含む。ヌクレオチド符号化ステップは、インデックス情報を追加した後、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることをさらに含む。冗長性データを、インデックスを有する複数の整数部分列に加えることは、空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数がインデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで空の行列を充填することと、充填した行列に基づいて冗長性を有する複数の部分列を得ることとを含む。エラー訂正コーディングを適用することにより生成されるデータは、RSコーディングの文字列訂正及び/またはRSコーディングのブロック訂正を適用することによって生成される。
【0105】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することと、ii)2進列を非重複5ビット2進列の数列に分割することと、iii)整数の文字列を得るために、各5ビット2進列を0~31に及ぶ整数に変換し、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することと、iv)整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することと、v)インデックスを有する複数の整数部分列を得るために、インデックス情報を、複数の整数の初期部分列のそれぞれに加えることと、vi)インデックス情報を加えた後、冗長性データを、インデックスを有する複数の整数部分列に加え、それによって冗長性を有する複数の整数部分列を得て、それによって核酸配列の集合を得ることとを含む。
【0106】
一部の実施形態では、入力データを核酸に記憶するための方法が提供され、方法は、i)入力データを2進列に変換することと、ii)2進列を非重複5ビット2進列の数列に分割することと、iii)整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することと、iv)整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することと、v)インデックスを有する複数の整数部分列を得るために、複数の整数の初期部分列のそれぞれにインデックス情報を加えることと、vi)インデックス情報を加えた後、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得て、それによって核酸配列の集合を得ることと、vii)ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む。
【0107】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することと、ii)2進列を非重複5ビット2進列の数列に分割することと、iii)整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することと、iv)整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することと、v)インデックスを有する複数の整数部分列を得るために、インデックス情報を、複数の整数の初期部分列のそれぞれに加えることと、vi)空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数が、インデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、vii)インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって(例えば、RSコーディングの文字列訂正及び/またはRSコーディングのブロック訂正を適用することによって)生成されたデータで空の行列を充填することと、vii)充填した行列に基づいて冗長性を有する複数の部分列を得て、それによって核酸配列の集合を得ることを含む。
【0108】
一部の実施形態では、入力データを核酸に記憶するための方法が提供され、方法は、i)入力データを2進列に変換することと、ii)2進列を、非重複5ビット2進列の数列に分割することと、iii)整数の文字列を得るために各5ビット2進列を0~31に及ぶ整数に変換し、5ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することと、iv)整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することと、v)インデックスを有する複数の整数部分列を得るために、インデックス情報を、複数の整数の初期部分列のそれぞれに加えることと、vi)空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数が、インデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、vii)インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって(例えば、RSコーディングの文字列訂正及び/またはRSコーディングのブロック訂正を適用することによって)生成されたデータで空の行列を充填することと、viii)充填した行列に基づいて、冗長性を有する複数の部分列を得て、それによって核酸配列の集合を得ることと、xi)ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む。
【0109】
一部の実施形態では、核酸に記憶された出力データを取り出すための方法が提供され、方法は、i)核酸の集合のヌクレオチド配列を得ることと、ii)ヌクレオチド配列の集合を、0~31に及ぶ整数を含む複数の整数部分列に変換することと、iii)複数の整数部分列を2進列に変換することと、iv)2進列を出力データに変換して、それによって出力データを得ることとを含む。
【0110】
一部の実施形態では、核酸に記憶された出力データを取り出すための方法が提供され、方法は、i)複数の配列リードを生成するために、核酸の集合を配列することと、ii)ヌクレオチド配列の集合を得るためにペアにすること、マージすること、及び/またはフィルタにかけることと、iii)ヌクレオチド配列の集合を、0~31に及ぶ整数を含む複数の整数部分列に変換することと、iv)エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることと、v)インデックスを有する複数の整数部分列を2進列に変換することと、vi)2進列を出力データに変換して、それによって出力データを得ることとを含む。
【0111】
一部の実施形態では、核酸に記憶された出力データを取り出すための方法が提供され、方法は、i)複数の配列リードを生成するために核酸の集合を配列することと、ii)ヌクレオチド配列の集合を得るためにペアにすること、マージすること、及び/またはフィルタにかけることと、iii)ヌクレオチド配列の集合を、0~31に及ぶ整数を含む複数の整数部分列に変換することと、iv)複数のコンセンサス整数部分列を得るために、RSコーディング文字列訂正を複数の整数部分列に適用することと、v)インデックスを有する複数の整数部分列を得るために、RSコーディングブロック訂正を複数のコンセンサス整数部分列に適用することと、vi)インデックスを有する複数の整数部分列を2進列に変換することと、vii)2進列を出力データに変換して、それによって出力データを得ることとを含む。
【0112】
一部の実施形態では、核酸に記憶された出力データを取り出すための方法が提供され、方法は、i)複数の配列リードを生成するために核酸の集合を配列することと、ii)ヌクレオチド配列の集合を得るためにペアにすること、マージすること、及び/またはフィルタにかけることと、iii)ヌクレオチド配列の集合を、0~31に及ぶ整数を含む複数の整数部分列に変換することと、iv)複数のコンセンサス整数部分列を得るために、RSコーディング文字列訂正を複数の整数部分列に適用することと、v)インデックスを有する複数の整数部分列を得るために、RSコーディングブロック訂正を複数のコンセンサス整数部分列に適用することと、vi)複数の整数のコア部分列を得るために、インデックスを有する複数の整数部分列からインデックスを削除することと、vii)整数のコア部分列を整数の文字列にマージすることと、viii)整数の文字列を2進列に変換することと、ix)2進列を出力データに変換して、それによって出力データを得ることを含む。
【0113】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。5ビットトランスコーディングフレームワークは、表2による。
【0114】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。5ビットトランスコーディングフレームワークは、表2による。R及びYは、1)RまたはYの直前のヌクレオチドとは異なること、及び/または2)ヌクレオチド配列の推定GC含有量に基づいて選ばれる。
【0115】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。入力データは圧縮ファイルに相当する。圧縮ファイルは、レンペルジフマルコフチェーンアルゴリズム(「LZMA」)を使用し、圧縮される。
【0116】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。入力データは2つ以上のファイルに相当する。データ処理ステップは、2つ以上のファイルを1つのTARファイルにグループ化することをさらに含む。TARファイルは、レンペルジフマルコフチェーンアルゴリズム(「LZMA」)を使用し、さらに圧縮される。
【0117】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む。ヌクレオチド符号化ステップは、プライマー配列のペアを、ヌクレオチド配列の集合の各ヌクレオチド配列の5’末端及び3’末端に付加することをさらに含む。
【0118】
一部の実施形態では、a)入力データをヌクレオチド配列の集合に変換することであって、変換することが、i)入力データを2進列に変換することを含むデータ処理ステップ、ii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む、変換することと、b)ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む、入力データを核酸に記憶するための方法が提供される。方法は、プライマーのペアを、合成した核酸の集合に付けることをさらに含む。
【0119】
一部の実施形態では、a)本明細書に説明する方法のいずれかに従って、入力データの2つ以上の集合を対応するヌクレオチド配列の2つ以上の集合に別々に変換することと、b)プライマー配列のペアを、ヌクレオチド配列の2つ以上の集合の各集合の5’末端及び3’末端に別々に付加することであって、対応するヌクレオチド配列の2つ以上の集合のためのプライマーのペアが互いに異なる、付加することと、c)それぞれ対応するヌクレオチド配列の2つ以上の集合を含む核酸の2つ以上の集合を合成することとを含む、入力データの2つ以上の集合を核酸に記憶するための方法が提供される。
【0120】
一部の実施形態では、a)本明細書に説明する方法のいずれかに従って、入力データの2つ以上の集合を対応するヌクレオチド配列の2つ以上の集合に別々に変換することと、b)プライマー配列のペアを、ヌクレオチド配列の2つ以上の集合の各集合の5’末端及び3’末端に別々に付加することであって、対応するヌクレオチド配列の2つ以上の集合のためのプライマーのペアが互いに異なる、付加することと、c)それぞれ対応するヌクレオチド配列の2つ以上の集合を含む核酸の2つ以上の集合を合成することとを含む、入力データの2つ以上の集合を核酸に記憶するための方法が提供される。プライマーの各ペアは、対応するヌクレオチド配列またはその相補配列の2つ以上の集合のうちの任意の1つとは異なる配列を有する。
【0121】
一部の実施形態では、合成した核酸の集合は、30%~70%に及ぶGC含有量を有する。
【0122】
一部の実施形態では、a)入力データをヌクレオチド配列の集合に変換することであって、変換することが、i)入力データを2進列に変換することを含むデータ処理ステップ、及びii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することを含むヌクレオチド符号化ステップを含む、変換することと、ヌクレオチド配列の集合を含む核酸の集合を合成することを含む、入力データを核酸に記憶するための方法が提供される。方法は、合成した核酸の集合を保管することをさらに含む。
【0123】
一部の実施形態では、合成した核酸の集合は、乾燥により保管される。一部の実施形態では、合成した核酸は、凍結乾燥により保管される。
【0124】
一部の実施形態では、合成した核酸の集合は、マイクロアレイである場合がある担体上で不動にされる。
【0125】
一部の実施形態では、a)核酸の集合のヌクレオチド配列の集合を得ることと、b)ヌクレオチド配列の集合を出力データに変換することであって、変換することが、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換して、それによって出力データを得ることを含むデータ処理ステップを含む、変換することを含む、核酸に記憶された出力データを取り出すための方法が提供される。方法は、出力データを取り出す前に、核酸の集合を増幅させることをさらに含む。
【0126】
一部の実施形態では、a)核酸の集合のヌクレオチド配列の集合を得ることと、b)ヌクレオチド配列の集合を出力データに変換することであって、変換することが、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換して、それによって出力データを得ることを含むデータ処理ステップを含む、変換することを含む、核酸に記憶された出力データを取り出すための方法が提供される。方法は、複数の配列リードを生成するために、核酸の集合を配列することをさらに含む。複数の配列リードは、ヌクレオチド配列の集合を得るためにペアにされ、マージされ、フィルタにかけられる。
【0127】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列を、0~31に及ぶ整数を含む複数の整数部分列に変換することを含む。
【0128】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列を、0~31に及ぶ整数を含む複数の整数部分列に変換することを含む。ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。
【0129】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列を、0~31に及ぶ整数を含む複数の整数部分列に変換することを含む。ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。エラー訂正コーディングを適用するステップは、i)複数のコンセンサス整数部分列を得るために、RSコーディング文字列訂正を複数の整数部分列に適用することと、ii)インデックスを有する複数の整数部分列を得るために、RSコーディングブロック訂正を複数のコンセンサス整数部分列に適用することを含む。
【0130】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列の集合を、0~31に及ぶ整数を含む複数の整数部分列に変換することを含む。ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。ヌクレオチド復号ステップは、複数の整数のコア部分列を得るために、インデックスを有する複数の整数部分列からインデックスを削除することをさらに含む。
【0131】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。出力データは圧縮ファイルに記憶される。データ処理ステップは、例えばLZMAアルゴリズムによって圧縮ファイルを解凍することをさらに含む。
【0132】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。出力データは複数のファイルに相当する。方法は、TARアルゴリズムによって出力データから複数のファイルを抽出することをさらに含む。
【0133】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列の集合を、0~31に及ぶ整数を含む複数の整数部分列に変換することを含む。ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。ヌクレオチド復号ステップは、複数の整数のコア部分列を得るために、インデックスを有する複数の整数部分列からインデックスを削除することをさらに含む。ヌクレオチド復号ステップは、整数のコア部分列を整数の文字列にマージし、整数の文字列を2進列に変換することをさらに含む。
【0134】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。5ビットトランスコーディングフレームワークは表2による。
【0135】
一部の実施形態では、i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を2進列に変換することを含むヌクレオチド復号ステップ、及びii)2進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。核酸の集合は、3’末端及び5’末端にプライマー配列を含み、方法は、ヌクレオチド復号ステップの前にプライマー配列を削除することを含む。
【0136】
一部の実施形態では、DNAベースのデータストレージを提供するためのコンピュータ対応の方法が提供され、方法は、デジタルファイルを2進列に変換することと、整数の文字列を入手するために5ビットトランスコーディングフレームワークを使用し、2進列を変換することと、整数の文字列から、複数の整数の部分列を入手することと、複数の整数の部分列をDNA合成のためのDNAオリゴの複数の表現に変換することを含む。
【0137】
一部の実施形態では、整数の文字列を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換することは、2進列を非重複5ビット2進列の数列に分割することと、整数の文字列を得るために、各5ビット2進列を0~31に及ぶ整数に変換することを含む。一部の実施形態では、整数の文字列は、所定の長さを有する複数の整数の初期部分列にさらに分割される。一部の実施形態では、変換される複数の整数の部分列を得ることは、インデックス情報を、初期の複数の整数の部分列の各部分列に加えることと、インデックス情報を加えた後、複数の整数の部分列を得るために、冗長性データを初期の複数の整数の部分列に加えることを含む。一部の実施形態では、初期の複数の部分列の各部分列に加えられたインデックス情報は整数の文字列を含み、インデックス情報に対応する整数の文字列の長さは、デジタルファイルのサイズに基づく。
【0138】
一部の実施形態では、方法は、冗長性データを複数の整数の部分列に加えることを含み、これは、例えば、初期の複数の整数の部分列の部分集合を得ることと、空の行列を選択することであって、空の行列の列数が、部分集合の部分列の数よりも大きく、空の行列の行数が、部分集合の各部分列の整数の数よりも大きい、選択することと、初期の複数の整数の部分列の部分集合及びエラー訂正符号に対応するデータで空の行列を充填することと、充填した行列に基づいて複数の整数の部分列を得ることとを含む場合がある。一部の実施形態では、空の行列の列数は、エラー訂正符号のタイプ、所定のエラー許容範囲値、部分集合のサイズ、またはその組み合わせに基づいて選択される。一部の実施形態では、空の行列の行数は、エラー訂正符号のタイプ、所定のエラー許容範囲値、部分集合のサイズ、またはその組み合わせに基づいて選択される。
【0139】
一部の実施形態では、エラー訂正符号はリードソロモン(「RS」)符号である。一部の実施形態では、複数の整数の部分列をDNAオリゴの複数の表現に変換することは、複数の整数の部分列の整数を3個のヌクレオチドの表現に変換することを含み、3個のヌクレオチドの第1は、A、T、G、及びCから選択され、3個のヌクレオチドの第2は、A、T、G、及びCから選択され、3個のヌクレオチドの第3は、2つのオプションのうちの1つから選択される。
【0140】
一部の実施形態では、デジタルファイルは、1つ以上のファイルまたはディレクトリのグループに対応する圧縮ファイルである。一部の実施形態では、デジタルファイルは、レンペルジフマルコフチェーンアルゴリズムを使用し、圧縮された1つ以上のファイルまたはディレクトリのグループに対応するLZMAファイルを含む。
【0141】
上述した実施形態のいずれか1つに係る一部の実施形態では、方法は、DNAオリゴの複数の表現の各オリゴ表現に、プライマーのペアを表すデータを加えること、及びプライマーのペアを表す情報を加えた後、DNAオリゴの複数の表現に基づいたDNA合成の実行を生じさせることをさらに含む。
【0142】
一部の実施形態では、方法は、第2のデジタルファイルを得ることと、第2のデジタルファイルに基づいてDNAオリゴの第2の複数の表現を得ることと、プライマーの第2のペアを表すデータを、DNAオリゴの第2の複数の表現の各オリゴ表現に加えることであって、プライマーの第2のペアがプライマーの第1のペアとは異なる、加えることと、DNAオリゴの複数の表現及びDNAオリゴの第2の複数の表現に基づいてDNA合成を実行することをさらに含む。
【0143】
一部の実施形態では、DNAベースのデータ取り出しを提供するためのコンピュータ対応の方法が提供され、方法は、デジタルファイルに対応する複数のリードを得ることと、複数のリードに基づいて、複数の整数の部分列を得ることと、複数の整数の部分列を整数の文字列に変換することと、5ビットフレームワークを使用し、整数の文字列を2進列に変換することと、2進列に基づいてデジタルファイルを得ることとを含む。一部の実施形態では、デジタルファイルに対応する複数のリードを得ることは、デジタルファイルに事前に関連付けられた(pre-associated)プライマーを識別することを含む。一部の実施形態では、複数の整数の部分列を得ることは、複数のリードに基づいて頻度ベースのエラー訂正を実行することを含む。一部の実施形態では、5ビットトランスコーディングフレームワークを使用し、整数の文字列を2進列に変換することは、整数の文字列の各整数を5ビット2進数に変換することを含む。
【0144】
一部の実施形態では、1つ以上のプログラムを記憶する非一過性コンピュータ可読記憶媒体が提供され、1つ以上のプログラムは、電子機器の1つ以上のプロセッサによる実行時に、電子機器に、デジタルファイルを2進列に変換させる、整数の文字列を得るために5ビットトランスコーディングフレームワークを使用し、2進列を変換させる、整数の文字列から、複数の整数の部分列を得させ、複数の整数の部分列をDNA合成のためのDNAオリゴの複数の表現に変換させる命令を含む。
【0145】
一部の実施形態では、DNAベースのデータストレージを提供するためのシステムが提供され、システムは、1つ以上のプロセッサ、メモリ、及び1つ以上のプログラムを含み、1つ以上のプログラムは、メモリに記憶され、1つ以上のプロセッサにより実行されるように構成され、1つ以上のプログラムは、デジタルファイルを2進列に変換すること、整数の文字列を得るために、5ビットトランスコーディングフレームワークを使用し、2進列を変換すること、整数の文字列から、複数の整数の部分列を得ること、及び複数の整数の部分列をDNAオリゴの複数の表現に変換することのための命令を含む。
【0146】
一部の実施形態では、1つ以上のプログラムを記憶する非一過性コンピュータ可読記憶媒体が提供され、1つ以上のプログラムは、電子機器の1つ以上のプロセッサによる実行時に、電子機器に、デジタルファイルに対応する複数のリードを得させ、複数のリードに基づいて、複数の整数の部分列を得させ、複数の整数の部分列を整数の文字列に変換させ、5ビットフレームワークを使用し、整数の文字列を2進列に変換させ、2進列に基づいてデジタルファイルを得させる命令を含む。
【0147】
一部の実施形態では、DNAベースのデータストレージを提供するためのシステムが提供され、システムは、1つ以上のプロセッサ、メモリ、及び1つ以上のプログラムを含み、1つ以上のプログラムは、メモリに記憶され、1つ以上のプロセッサにより実行されるように構成され、1つ以上のプログラムは、デジタルファイルに対応する複数のリードを得ること、複数のリードに基づいて、複数の整数の部分列を得ること、複数の整数の部分列を整数の文字列に変換すること、5ビットフレームワークを使用し、整数の文字列を2進列に変換すること、及び2進列に基づいてデジタルファイルを得ることのための命令を含む。
【0148】
例示的な実施態様によれば、方法の異なるステップは、1つまたは複数のコンピュータソフトウェアプログラムにより実装され、このソフトウェアプログラムは、本開示に係るリレーモジュールのデータプロセッサにより実行されるように設計され、本方法の異なるステップの実行を制御するように設計されるソフトウェア命令を含む。
【0149】
その結果として、本開示の態様は、コンピュータによってまたはデータプロセッサによって実行されやすいプログラムにも関し、このプログラムは、上記にここに言及した方法のステップの実行を命令するための命令を含む。
【0150】
このプログラムは、なんであれ任意のプログラミング言語を使用し、ソースコード、オブジェクトコード、または例えば、部分的にコンパイルされた形でまたは任意の他の所望の形で等、ソースコードとオブジェクトコードとの中間であるコードの形をとる場合がある。
【0151】
また、本開示は、データプロセッサにより読み取り可能であり、上記にここに言及したプログラムの命令を含む情報媒体にも関する。
【0152】
情報媒体は、プログラムを記憶できる任意のエンティティまたはデバイスである場合がある。例えば、媒体は、例えば(「コンパクトディスク―読み取り専用メモリ」を表す)CD-ROM、もしくは超小型電子回路ROM等、(「読み取り専用メモリ」を表す)ROM、または再び例えばフロッピー(登録商標)ディスクもしくはハードディスクドライブ等の磁気記録手段等の記憶手段を含む場合がある。
【0153】
さらに、情報媒体は、電気ケーブルもしくは光ケーブルを通して、無線によって、または他の手段によって伝達できる電気信号又は光信号等の伝送可能なキャリヤである場合がある。プログラムは、特別にインターネットタイプのネットワークにダウンロードされる場合がある。
【0154】
代わりに、情報媒体は、プログラムがその中に組み込まれる集積回路である場合があり、回路は、問題の方法を実行する、または問題の方法の実行で使用されるように適応される。
【0155】
一実施形態によれば、本開示の実施形態は、ソフトウェア構成要素及び/またはハードウェア構成要素を用いて実施される。この観点から、用語「モジュール」は、本書においてソフトウェア構成要素とハードウェア構成要素の両方に、またはハードウェア構成要素及びソフトウェア構成要素の集合に対応する場合がある。
【0156】
ソフトウェア構成要素は、1つ以上のコンピュータプログラム、プログラムの1つ以上のサブプログラム、またはより一般的には、関係するモジュールについて以下にここに記述されることに従って機能もしくは一連の機能を実装できるプログラムもしくはソフトウェアプログラムの任意の要素に相当する。1つの係るソフトウェア構成要素は、物理的なエンティティ(端末、サーバ等)のデータプロセッサにより実行され、この物理的なエンティティのハードウェアリソース(メモリ、記録媒体、通信バス、入出力電子ボード、ユーザーインタフェース等)にアクセスできる。
【0157】
同様に、ハードウェア構成要素は、関係するモジュールについて以下にここに記述されることに従って機能もしくは一連の機能を実装できるハードウェアユニットの任意の要素に相当する。ハードウェア構成要素は、プログラム可能なハードウェア構成要素、または例えば集積回路、スマートカード、メモリカード、ファームウェア等を実行するための電子ボード等、ソフトウェアの実行用の集積回路付きの構成要素であってよい。変形では、ハードウェア構成要素は、中央演算処理装置、及び/またはマイクロプロセッサ、及び/または特定用途向け集積回路(ASIC)、及び/または特定用途向け命令セットプロセッサ(ASIP)、及び/またはグラフィックスプロセッシングユニット(GPI)、及び/またはフィジックスプロセッシングユニット(PPU)、及び/またはデジタルシグナルプロセッサ(DSP)、及び/または画像処理プロセッサ、及び/またはコプロセッサ、及び/または浮動小数点ユニット、及び/またはネットワークプロセッサ、及び/または音声プロセッサ、及び/またはマルチコアプロセッサ等の集積回路であるプロセッサを含む。さらに、ハードウェア構成要素は、(例えば、メモリユニット及びファームウェアを含む)ベースバンドプロセッサ及び/または無線信号を受信もしくは送信する(アンテナを含む場合がある)無線電子回路を含む場合もある。一実施形態では、ハードウェア構成要素は、例えばISO/IEC 18092/ECMA-340、ISO/IEC 21481/ECMA-352、GSMA、StoLPaN、ETSI/SCP(Smart Card Platform)、GlobalPlatform(つまり、セキュア素子)等の1つ以上の規格に準拠している。変形では、ハードウェア構成要素は無線自動識別(RFID)タグである。一実施形態では、ハードウェア構成要素は、Bluetooth(登録商標)通信、及び/またはWi-fi通信、及び/またはZigbee(登録種表)通信、及び/またはUSB通信、及び/またはFirewire通信、及び/または(近距離用)NFC通信を可能にする回路を含む。
【0158】
本開示で要素/値を得るステップは、電子機器のメモリユニットの係る要素/値を読み取るステップ、または通信手段を介して別の電子機器から係る要素/値を受け取るステップのどちらかとして見なすことができることに留意されたい。
【0159】
例示的なプロセス
図1は、DNAベースのデータストレージ及びデータ取り出しを提供するための例示的なプロセスを示す。特に、例示的なステップ102~110は、ストレージのためにデジタルデータを符号化することを対象とし、例示的なステップ112~122は、取り出しのために記憶されている情報を復号することを対象とする。
図1の例示的なステップは、
図2~
図5に関してさらに詳細に以下に説明する。
【0160】
1.符号化
ステップ102(「データ圧縮」)で、1つ以上のファイル及び/またはディレクトリは、単一のファイルに入れられ、次いで圧縮ファイルに圧縮される。一部の例では、ファイル及び/またはディレクトリは、TARファイル(例えば、File.tar)に入れられ、TARファイルが次いで、レンペルジフマルコフチェーンアルゴリズム(例えば、LZMAアルゴリズム)を使用し、LZMAファイル(例えば、File.tar.Izma)に圧縮される。一部の例では、1つのLZMAファイルは、データ取り出し(例えば、復号中)のための単一の分割不可ユニットとして動作する。したがって、多数のファイル及びディレクトリがともに記憶されることを意図するが、無作為にかつ無関係に取り出される場合、ファイル及びディレクトリは、このステップで多数のTARファイルにグループ化され、多数の対応するLZMAファイルに圧縮される必要がある。
【0161】
ステップ104で、1回目のデータトランスコーディングが実施される。最初に、各LZMAファイルが2進列に変換される。一例として、
図2を参照すると、「File.tar.lzma」という名前のファイルが2進列に変換される。2進列は、次いで整数文字列B(「0;10;25;...;4;8;31:」に変換される。示されている例では、2進列から整数文字列Bへの変換は、5ビットトランスコーディングフレームワークを使用し、達成される。図示されるように、2進列は、例えば「00000」及び「01010」等の非重複5ビット2進列の数列に分割される。5ビット2進列のそれぞれは、次いで整数に変換されて整数文字列Bを形成する。当業者は、この5ビットトランスコーディングフレームワークの下では、整数文字列内の各整数が(「00000」に対応する)0~(「11111」に対応する)31に及ぶことを認識するであろう。
【0162】
図2に示すように、整数文字列Bは、次いで長さ固定スライディングウィンドウを使用し、複数の非重複整数部分列(例えば、[A1、A2、...、An])に分割される。
図2の示されている例では、整数部分列(例えば、A1)のそれぞれは、22の整数から成る。最後に、インデックス情報が、各部分列の始まりに付加されてインデックス(例えば、[B1、B2、...、Bn])を有する新しい複数の整数部分列を形成する。示されている例では、インデックス情報は3つの整数の数列を含み、そのそれぞれは0~31に及ぶ。インデックス列の長さは、例えば圧縮ファイルのサイズ及びDNA合成のスループット等の多様な要因に基づいて選択される場合がある。
【0163】
図1に戻ると、ステップ106で、インデックス(例えば、
図2に示す[B1、B2、...、Bn])を有する複数の整数部分列は、インデックス及び冗長性(例えば、
図4に示す[C1、C2、...、Cm])を有する複数の整数部分列にさらに変換される。例えばリードソロモン(RS)コーディング、ファウンテンコーディング、及びハミングコーディング等の多様なエラー訂正コーディングアルゴリズムが、冗長性データを記憶されるデジタルデータに加えるために使用できる。好ましい実施形態では、RSコーディングが、そのロバストネス及び実装の容易さのために使用される。
【0164】
図3A~
図3Dは、[C1、C2、...、Cm]を得るために、インデックス及び冗長性を(例えば、複数の整数部分列[A1、A2、...、An]により表される)デジタルコンテンツに加えるための例示的なプロセスを示す。特に
図3A~
図3Dは、[C1、C2、...、C31]を形成するために、RSコーディングを使用し、最初の5つの整数部分列(つまり、A1、A2、A3、A4、及びA5)をどのように処理できるのかを示す。整数部分列の残り(つまり、A6、...、An)については、あらゆる5つの継続的な整数部分列が、
図3A~
図3Dに示すのと同様に1つのユニットとして処理される。この例では、5つの整数部分列は、ブロック訂正のパリティが26(つまり、31-5=26)となり、したがって31の中の13(つまり、26/2=13)のオリゴが失われるが、RSコーディングの原理に従って回復されるであろうように、ともに29x31の行列を介して処理される。
【0165】
図3Aを参照すると、29x31の空の行列が作成される。[A1、A2、...、An]からの最初の5つの整数文字列A1、A2、A3、A4、A5は、図示するように行列の中に充填されて、図示するように22x5の部分行列を占有する。この領域が、コアデータブロックである。
【0166】
図3Bを参照すると、0~31に及ぶ3つの整数から成るインデックス列が、一意のインデックスとして各列の始まりに付加される。インデックス文字列は、付加の前にソートできる。図示されるように、インデックスは、例えば0-0-0、0-0-1、0-0-2、...、0-0-31、0-1-31、...等、昇順でソートされ、割り当てられた。インデックスが付けられた整数文字列は、
図3Bで、それぞれB1、B2、B3、B4、及びB5と名前を付けられる。
【0167】
図3Cを参照すると、RSコーディングが、コアデータブロックにより占有される各行の空白の領域を行ごとに充填するために使用される。このステップが「ブロック訂正」と呼ばれ、合成及びシークエンシング及び長期記憶の退化の間の、例えば欠けているオリゴ及び(挿入及び削除を含む)インデルを処理するのに役立つ。
【0168】
図3Dを参照すると、RSコーディングが、行列全体の各列の空白の領域を列ごとに充填するために使用される。このステップが「文字列訂正」と呼ばれ、合成、シークエンシング、及び長期記憶中に生じる、例えば点突然変異を訂正するのに役立つ。
図3Dに示すように、行列はいま31の整数文字列[C1、C2、...、C31]を含んでいる。言い換えると、ブロック訂正及び文字列訂正後、5つの整数部分列A1~A5は、31の整数部分列C1~C31に変換される。さらに、A1~A5のそれぞれは22の整数を含む。一方、C1~C31のそれぞれは(インデックスの3つの余分な整数、及びエラー訂正のためのRSコーディングのパリティの4つの余分な整数を含む)29の整数を含む。
図3A~
図3Dに示す多様な寸法は例示的にすぎないことを理解されたい。インデックス文字列の長さ(
図3A~
図3Dでは3)、行列のサイズ(例えば、
図3A~
図3Dでは29x31)、及びユニットとして処理される整数文字列数(例えば、
図3A~
図3Dでは5)は、例えば使用されるエラーコーディングのタイプ、所望されるエラー許容範囲、及びDNA合成プラットフォームの特徴等のいくつかの要因に基づいて選択される場合がある。
【0169】
図4に示すように、
図3A~
図3Dに関して説明する技術に従って、RSコーディングの1回目の文字列訂正及びRSコーディングの1回目のブロック訂正を通して、インデックス[B1、B2、...、Bn])を有する複数の整数部分列は、冗長性[C1、C2、...、Cm]を有する複数の整数部分列に変換され、mはnよりも大きい。さらに、整数部分列[C1、C2、...、Cm]の各整数は0~31に及ぶ。
【0170】
図3A~
図3Dの示されている例では、例えばA1等の初期整数部分列の長さ(示されている例では22)は、いくつかの要因に基づいて計算される。具体的には、(示される例ではL、29として示される)インデックス及び冗長性を有する整数文字列の長さは、合成プラットフォームのオリゴ長により計算される。(示される例ではX、4として示される)文字列訂正とブロック訂正の両方のパリティは、オリゴの合成エラーレート、使用されるエラー訂正符号、及び所望されるエラー許容範囲により決定される。(示される例では、Y、3として示される)インデックス長は、総符号化データサイズにより決定される。したがって、(Zとして示される)初期整数文字列の長さは、Z=L-X-Yである。
【0171】
図1に戻ると、ステップ108で、冗長性(例えば、[C1、C2、...、Cm])を有する整数文字列のリストを、複数のDNAオリゴの表現(例えば、[D1、D2、...、Dm])に変形するために、2回目のトランスコーディングが実施される。DNAオリゴの各表現は、合成のために4つの塩基A、T、G、及びCを含む。特に「5ビットトランスコーディングフレームワーク」を再び使用できる。ここでは、整数文字列[C1、C2、...、Cm]の各整数は0~31に及び、したがって32種類の3個のヌクレオチド(例えば、NがA、T、G、Cを表し、YがC及びTを表し、RがA及びGを表す、NNY及びNNRを含む3マー)の1つに一意にマッピングできる。例えば、
図5に示すように、整数6は、5ビット2進列「00110」に相当し、特定の戦略下で「AGR」に変換できる。一部の例では、5ビットトランスコーディングフレームワークは、中間のステップ(例えば、最初に整数を2進列に変換すること)なしに、整数とDNAオリゴの表現との間の直接的な変換を提供できる。
【0172】
したがって、各整数部分列(例えば、C1)の29の整数のそれぞれは、3個のヌクレオチドにマッピングできる。[C1、C2、...、Cm]のすべてが変換された後、YはCまたはTで置換される。一方、Rは、DNA合成の前にAまたはGで置換される。これは、第3の塩基が、3マーの第2の塩基とは異なり、3つの継続して同一の塩基(例えば、AAA、GGG、TTT、CCC)を回避することを確めるために行われる。さらに、各オリゴのGC割合は、Y及びRの選択により30%~70%に限定されるべきである。置換ステップは、オリゴ合成により生じるエラーを削減するだけではなく、オリゴ合成の訂正率の改善にとっても重要である。
【0173】
RSコーディングの原則によれば、許容エラーは、各オリゴの2つの(つまり、文字列訂正のパリティ、4の半分)の突然変異、及び
図3A~
図3Dに示す例示的な状況における同じ行列からの31オリゴのうちの13(つまり、ブロック訂正のパリティ、26の半分)の(完全に欠けているオリゴまたはインデルを有するオリゴを含む)欠けているオリゴを含む場合がある。
【0174】
図1を参照すると、ステップ110で、プライマーペアが付加され、DNA合成が実行される。一部の例では、単一の圧縮ファイル(例えば、
図4のFile.tar.lzma)が複数のDNAオリゴの表現(例えば、
図4の[D1、D2、...、Dn])に変換され、プライマー配列の同じペアの表現が、圧縮ファイルに対応する各オリゴの2つの末端に加えられる。一度に記憶され、合成されるが、後続の読み取り及び復号の間にランダムにアクセス可能である必要がある多数の圧縮ファイルの場合、直交性プライマー(orthogonal primers)の一意のペアが、圧縮ファイルごとに選択され、各圧縮ファイルと関連付けられる。例えば、一度に記憶され、合成されるが、後続の読み取り及び復号の間にランダムにアクセス可能である必要がある3つの圧縮ファイルがある場合、次いでそれぞれ3つの圧縮ファイルと関連付けられるために直交性プライマーの3つの一意のペアが選択される。各圧縮ファイルのために、選択されたプライマーペアが、圧縮ファイルに対応する複数のオリゴのうちの各オリゴに付加される。次いで、多数の圧縮ファイルに対応するすべてのオリゴが、記憶媒体として一度にプールされ、合成されるであろう。
【0175】
選択したプライマーペアに対しては複数の基準を使用できる。例えば、プライマーペアは、ホモ二量体、ヘテロ二量体、ヘアピン構造を回避し、十分な選択性を有する(例えば、符号化核酸配列に対する結合部位を有さない)ように選ばれる場合がある。一部の例では、多重化PCRプライマー設計基準が使用される。
【0176】
2.復号
復号手順は、本質的に符号化手順の逆のプロセスである。
図1を参照すると、ステップ112で、プライマーのペアが、PCRを実行して、対応する圧縮ファイル(例えば、
図4のFile.tar.lzma)のオリゴ(例えば、
図4の[D1、D2、...、Dn])のリストを増幅させるために使用される。NGSの単一のランで多数の圧縮ファイルを読み取り、復号する必要がある場合、その対応するオリゴのリストのすべては、対応するプライマーのペアを使用し、PCRを通して増幅される必要がある。このステップは、「NGSライブラリ準備」とも呼ばれる。
【0177】
ステップ114で、ペアエンド次世代シークエンシング並びにリードペアリング及びマージが(例えば、Illuminaシークエンシングシステムにより)実行される。具体的には、同じクラスタの順方向リード及び逆方向リードがペアにされ、単一のリードにマージされ、不規則な長さを有するすべての新規リードがフィルタにかけられる(例えば、インデルを有するリード)。さらに、プライマー配列に従って、すべてのリードを圧縮ファイルごとにグループ化できる。後続のステップで、同じ圧縮ファイルに対応するリード(つまり、同じプライマーを共用するリード)は、ともに解析されるであろう。
【0178】
ステップ116で、逆方向RSコーディングが実行される。一部の例では、29x31のゼロ行列であるが、空ではない行列が利用されるであろう。具体的には、単一の圧縮ファイルからの各リードは、2つの末端でPCRプライマーを削除されており、次いで突然変異に対するエラー訂正を行う目的で、RSコーディングの文字列訂正を通して整数部分列に変換される。1種類のオリゴが合成中に分子の多くのコピーを有し、何度も配列されるであろうため、多くのリードが1つのオリゴから生じるであろう。高スループット合成とシークエンシングの両方の間に生じるエラーのため、これらのリードは変形を有する場合があるが、正しいリードが優位を占めるべきである。整数部分列の場所ごとの最高頻度をベースにした訂正により、同一のインデックスを共用するすべての整数部分列が訂正され、コンセンサス整数部分列にマージされるであろう。例えば、同じインデックスを共用するリードのグループの場合、そのコンセンサス整数部分列の各位置は、この位置で最も頻繁に出現する整数により決定される必要がある。
【0179】
ステップ118で、整数文字列のリストは、欠けているオリゴ並びに挿入及び削除を有するオリゴを回復するために、RSコーディングのブロック訂正を通して完全に復号できる。1種類のオリゴは、合成中に分子の多くのコピーを有し、何度も配列されるであろうため、多くのリードが1つのオリゴを表すであろう。高スループット合成とシークエンシングの両方の間に生じるエラーのため、これらのリードは変形を有する場合があるが、最初に設計されたオリゴとよく一致する正しいリードはまだカウントに対して有利である。整数文字列の場所ごとの最高頻度をベースにした訂正により、同一のインデックスを共用するすべての整数文字列は訂正され、文字列訂正とブロック訂正の間のコンセンサス整数文字列にマージされるであろう。挿入及び削除を有するオリゴは不規則な長さを有し、エラー訂正中に削除されるであろうため、このようにして対応するデータは欠けている情報に完全に等しく、回復される必要がある。インデックス情報に基づいて、行列の列は、最高頻度をベースにした訂正の後に充填される。
【0180】
ステップ120で、トランスコーディングが実行される。リードはインデックス別にソートされ、次いでインデックスは各整数部分列から削除される。すべての整数部分列は、次いで単一の整数文字列に連結され、次いで5ビットトランスコーディングフレームワークを介して2進列に転送される場合がある。
【0181】
ステップ122で、解凍が実行される。具体的には、システムは2進列を圧縮ファイルに書き込み、次いで順にLZMAアルゴリズム及びTARアルゴリズムにより圧縮ファイルを解凍する。多数の圧縮ファイルのランダムアクセスの場合、ステップ116~122は、圧縮ファイルのそれぞれについて独立して実行されるべきである。プールは、多数の圧縮ファイルを記憶できる。各圧縮ファイルは独自のPCRプライマーを有する。復号中、プール全体を配列する必要はない。むしろ、対応するPCRプライマーは、特定の圧縮ファイルのオリゴを増幅させ、次いで増幅させたオリゴを配列して、プール全体ではないが、この対応する圧縮ファイルを復号するために使用される。
【0182】
上述したように、5ビットトランスコーディングフレームワークが活用される。具体的には、2進列からのあらゆる5個の継続ビットが、0~31に及ぶ整数、ひいては3個のヌクレオチド[ナノテスラ](つまり、3マー)として表される場合がある。例えば、DNAオリゴは4つの塩基(例えば、A、T,G、及びC)から成り、したがって2マー(つまり、NN)は16種類(例えば、AA、AT、AG、AC、TA、TT、TG、TC、GA、GT、GG、GC、CA、CT、CG、及びCC)を有するはずである。変性した塩基R及びYが2マーの後に連結され、3マー(NNR/NNY)が、0~31に及ぶ32の整数とよく一致し、DNA配列の中によく転送される2進列を作る32種類から成るべきであると仮定する。オリゴ合成中、Rを表すためにAが選ばれるのか、それともGが選ばれるのか、及びYを置換するためにCが選択されるのか、それともTが選択されるのかは、その前部の塩基(つまり、3マーの第2の塩基)に依存しており、実際には、システムは第2の塩基及び第3の塩基を異ならせ、次いで同時にGCバランスを保つ場合がある。この前提条件が届く(reaches)と仮定すると、正確な塩基は、候補塩基の間で無作為に選択される。結論として、このトランスコーディングフレームワークのコーディングの可能性は1.67(つまり、3ナノテスラに対して5ビット)である。
【0183】
図7は、DNAベースのデータストレージ技術及びデータ取り出し技術の例示的な実現を示す。ここでは、
図6に示す漢字を含むテキストファイル(データサイズ:1.16kb)が、本明細書に説明するプロセスに従ってDNAを介して記憶される。
【0184】
符号化中、テキストファイルは、単一の圧縮ファイルに圧縮され、次いでDNAストレージフレームワークを通して87ナノテスラ長を有する403のオリゴを使用し、記憶される。一方、ランダムアクセスをシミュレーションするために、この圧縮ファイルの6つのコピーが使用され、プライマーの6つのペアが選択される。プライマーの各ペアは、403のオリゴのそれぞれの2つの末端に加えられる。プライマーの6つのペア(それぞれ20ナノテスラ)が直交であった。これは、それらのうちの任意の2つが十分なハミング距離を有し、403のオリゴの任意の1つと類似性をあまり共有していないことを意味する。ASCIIテキストファイルで、本明細書で提出された配列表リストは、SEQ ID1番~SEQ ID403番、及びプライマーペアPP1番~PP6番をSEQ ID404番~415番として含む。
【0185】
オリゴプールの合成が次いで実行される。合計で2418(つまり、403が6で乗算される)のオリゴが、CustomArray,Inc.により開発されたCustomArrayプラットフォームを使用し、合成された。各オリゴは、合計40ナノテスラのプライマー(末端あたり20ナノテスラ)を含む127ナノテスラである。
【0186】
PCR増幅及びNGSが次いで実行される。6つのPCR反応が、圧縮ファイルのすべてのコピーに対して行われた。TruSeq DNA PCR-free HTライブラリ作成キット(プレートフォーマットで96のインデックス、96のサンプル)、及び6のライブラリインデックスを使用する6つのサンプルのライブラリ作成後、プールされたサンプルは、オリゴの127ナノテスラ長のため、MiSeq試薬キットV3(150サイクル)を使用し、ともに配列された。NGSデータのQ30は94%(公式基準>85%)であり、クラスタ密度は1,301K/mm2(公式基準1200~1400K/mm2)である。
【0187】
最後に、復号が実行される。圧縮ファイルの各コピーの独立した復号の後、すべてのコピーは、無作為にかつ無事に取り出され、エラーなく解凍されるであろう。
【0188】
図8は、本明細書に開示する方法の1つまたはいくつかのステップを実行するために使用できるデバイスを示す。800と参照される係るデバイスは、801と参照されるコンピューティングユニット(例えば、「中央演算処理装置」のCPU)、及び802と参照される1つ以上のメモリユニット(例えば、コンピュータプログラムの命令の実行中に中間の結果を一時的に記憶できるRAM(「ランダムアクセスメモリ」)ブロック、またはとりわけコンピュータプログラムが記憶されるROMブロック、またはEEPROM(電気的消去可能・プログラム可能型読取専用メモリ)ブロック、またはフラッシュブロック)を含む。コンピュータプログラムは、コンピューティングユニットによって実行できる命令から作られる。また、係るデバイス800は、デバイス800が他のデバイスと通信できるようにするための入出力インタフェースの構成要素となる、803と参照される専用ユニットも含む場合がある。特に、この専用ユニット803は、(接点なしに通信を実行するために)アンテナと、または(通信「接点」を伝えるために)シリアルポートと接続される場合がある。ユニットが、例えば互いにバスを通してデータを交換できることに留意されたい。
【0189】
代替実施形態では、上述の方法のステップのいくつかまたはすべては、プログラム可能なFPGA(「フィールドプログラマブルゲートアレイ」)構成要素またはASIC(「特定用途向け集積回路」)構成要素のハードウェアで実装できる。
【0190】
代替実施形態では、上述の方法のステップのいくつかまたはすべては、
図8に開示するもののようなメモリユニット及び処理ユニットを含む電子機器で実行できる。係るデバイス800は、高スループット合成プラットフォーム(例えば、CustomArray)及びDNAシーケンサ(例えば、MiSeqシーケンサ)と組み合わせて使用できる。
【0191】
図9Aは、入力データを核酸に記憶するための例示的な方法900を示す。ブロック902で、入力データは、ヌクレオチド配列の集合に変換される。ブロック904で、入力データは2進列に変換される。ブロック906で、2進列は、ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、変換される。ブロック908で、ヌクレオチド配列の集合を含む核酸の集合が合成される。
【0192】
図9Bは、核酸に記憶された出力データを取り出すための例示的な方法950を示す。ブロック952で、核酸の集合のヌクレオチド配列の集合が得られる。ブロック954で、ヌクレオチド配列の集合が出力データに変換される。具体的には、ブロック956で、ヌクレオチド配列の集合は、5ビットトランスコーディングフレームワークを使用し、2進列に変換される。ブロック958で、2進列は出力データに変換される。
【0193】
本開示及び例は、添付図面に関して完全に説明されてきたが、当業者に多様な変更及び修正が明らかになることに留意されたい。係る変更及び修正は、特許請求の範囲に定められるように、本開示及び例の範囲内に含まれると理解されるべきである。
【0194】
上記の説明は、説明のために、具体的な実施形態に関して説明されてきた。しかしながら、上記の例示的な説明は、包括的になる、または本発明を開示される正確な形式に限定することを目的としていない。上記教示を考慮して多くの修正形態及び変形形態が可能である。実施形態は、技術の原理及びその実践的な応用を最もよく説明するために選ばれ、説明された。当業者は、それにより意図された特定の使用に適するように多様な修正形態とともに技術及び多様な実施形態を最良に利用できる。
本発明は、例えば、以下の項目を提供する。
(項目1)
入力データを核酸に記憶するための方法であって、
a)前記入力データをヌクレオチド配列に変換することであって、前記変換することが、
i)前記入力データを2進列に変換することを含むデータ処理ステップと、
ii)ヌクレオチド配列の前記集合を得るために、5ビットトランスコーディングフレームワークを使用し、前記2進列を変換することを含むヌクレオチド符号化ステップと、
を含む、前記変換することと、
b)ヌクレオチド配列の前記集合を含む核酸の集合を合成することと、
を含む、前記方法。
(項目2)
入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法であって、
i)前記入力データを2進列に変換することを含むデータ処理ステップと、
ii)ヌクレオチド配列の集合を得るために、5ビットトランスコーディングフレームワークを使用し、前記2進列を変換することを含むヌクレオチド符号化ステップと、
を含む、前記方法。
(項目3)
前記データ処理ステップが、前記2進列を非重複5ビット2進列の数列に分割することを含む、項目1~2のいずれか1項に記載の方法。
(項目4)
前記ヌクレオチド符号化ステップが、整数の文字列を得るために、各5ビット2進列を0~31に及ぶ整数に変換することを含む、項目3に記載の方法。
(項目5)
前記ヌクレオチド符号化ステップが、ヌクレオチド配列の前記集合を得るために、前記5ビットトランスコーディングフレームワークを使用し、整数の前記文字列を変換することをさらに含む、項目4に記載の方法。
(項目6)
前記ヌクレオチド符号化ステップが、整数の前記文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む、項目4に記載の方法。
(項目7)
前記複数の整数の初期部分列のそれぞれの前記長さが、選択した合成プラットフォームのオリゴ長、所望するエラー許容範囲、前記入力データのサイズ、選択したエラー訂正符号、またはその組み合わせに基づいて決定される、項目6に記載の方法。
(項目8)
前記ヌクレオチド符号化ステップが、インデックスを有する複数の整数部分列を得るために、インデックス情報を前記複数の整数の前記初期部分列のそれぞれに加えることをさらに含む、項目6または7に記載の方法。
(項目9)
前記複数の整数の前記初期部分列のそれぞれに加えられた前記インデックス情報が整数の数列を含み、前記整数の数列の前記長さが前記入力データのサイズに基づく、項目8に記載の方法。
(項目10)
前記ヌクレオチド符号化ステップが、前記インデックス情報を加えた後、冗長性データを、インデックスを有する前記複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることを含む、項目8または9に記載の方法。
(項目11)
冗長性データを、インデックスを有する前記複数の整数部分列に加えることが、
空の行列を作成することであって、前記空の行列の列数がインデックスを有する前記複数の整数部分列の前記サイズよりも大きく、前記空の行列の行数が、インデックスを有する前記複数の整数部分列のそれぞれの整数の数よりも大きい、前記作成することと、
インデックスを有する前記複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで前記空の行列を充填することと、
前記充填した行列に基づいて、冗長性を有する前記複数の整数部分列を得ることと、
を含む、項目10に記載の方法。
(項目12)
前記空の行列の前記列数が、選択した合成プラットフォームのオリゴ長、前記エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する前記複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される、項目11に記載の方法。
(項目13)
前記空の行列の前記行数が、選択した合成プラットフォームのオリゴ長、前記エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する前記複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される、項目11または12に記載の方法。
(項目14)
前記エラー訂正コーディングがリードソロモン(「RS」)コーディングである、項目11~13のいずれか1項に記載の方法。
(項目15)
エラー訂正コーディングを適用することにより生成された前記データが、前記RSコーディングの文字列訂正及び/または前記RSコーディングのブロック訂正を適用することによって生成される、項目14に記載の方法。
(項目16)
前記5ビットトランスコーディングフレームワークが表2による、項目1~15のいずれか1項に記載の方法。
(項目17)
R及びYが、1)RまたはYの直前の前記ヌクレオチドとは異なること、及び/または2)前記ヌクレオチド配列の推定GC含有量に基づいて選ばれる、項目16に記載の方法。
(項目18)
前記入力データが圧縮ファイルに相当する、項目1~17のいずれか1項に記載の方法。
(項目19)
前記入力データが2つ以上のファイルに相当する、項目1~18のいずれか1項に記載の方法。
(項目20)
前記入力データがテキストファイルに相当する、項目1~17及び項目19のいずれか1項に記載の方法。
(項目21)
前記データ処理ステップが、圧縮ファイルを得るために前記入力データを圧縮することと、前記圧縮したファイルを2進列に変換することをさらに含む、項目1~20のいずれか1項に記載の方法。
(項目22)
前記圧縮ファイルが、レンペルジフマルコフチェーンアルゴリズム(「LZMA」)を使用し、圧縮される、項目18または21に記載の方法。
(項目23)
前記データ処理ステップが、前記2つ以上のファイルを1つのTARファイルにグループ化することをさらに含む、項目19に記載の方法。
(項目24)
前記TARファイルが、前記レンペルジフマルコフチェーンアルゴリズム(「LZMA」)を使用し、さらに圧縮される、項目23に記載の方法。
(項目25)
前記ヌクレオチド符号化ステップが、ヌクレオチド配列の前記集合の各ヌクレオチド配列の5’末端及び3’末端にプライマー配列のペアを付加することをさらに含む、項目1~24のいずれか1項に記載の方法。
(項目26)
合成した核酸の前記集合にプライマーのペアを付けることをさらに含む、項目1に記載の方法。
(項目27)
入力データの2つ以上の集合を核酸に記憶するための方法であって、
a)項目2~19のいずれか1項に記載の方法に従って、入力データの前記2つ以上の集合を、対応するヌクレオチド配列の2つ以上の集合に別々に変換することと、
b)プライマー配列のペアを、ヌクレオチド配列の前記2つ以上の集合の各集合の前記5’末端及び3’末端に別々に付加することであって、対応するヌクレオチド配列の前記2つ以上の集合のためのプライマーの前記ペアが、互いとは異なる、前記付加することと、
c)それぞれ対応するヌクレオチド配列の前記2つ以上の集合を含む、核酸の2つ以上の集合を合成することと、
を含む、前記方法。
(項目28)
プライマーの各ペアが、対応するヌクレオチド配列の前記2つ以上の集合またはその相補配列のいずれか1つとは異なる配列を有する、項目27に記載の方法。
(項目29)
合成した核酸の前記集合が、30%~70%に及ぶGC含有量を有する、項目1及び項目3~28のいずれかに記載の方法。
(項目30)
合成した核酸の前記集合が、約70%未満のGC含有量を有する、項目1及び項目3~29のいずれか1項に記載の方法。
(項目31)
合成した核酸の前記集合を保管することをさらに含む、項目1に記載の方法。
(項目32)
合成した核酸の前記集合が乾燥により保管される、項目31に記載の方法。
(項目33)
合成した核酸の前記集合が凍結乾燥により保管される、項目32に記載の方法。
(項目34)
合成した核酸の前記集合が担体上で不動にされる、項目31に記載の方法。
(項目35)
前記担体がマイクロアレイである、項目34に記載の方法。
(項目36)
核酸に記憶された出力データを取り出すための方法であって、
a)核酸の集合のヌクレオチド配列の集合を得ることと、
b)ヌクレオチド配列の前記集合を前記出力データに変換することであって、前記変換することが、
i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の前記集合を2進列に変換することを含むヌクレオチド復号ステップと、
ii)2進列を前記出力データに変換して、それによって前記出力データを得ることを含むデータ処理ステップと、
を含む、前記方法。
(項目37)
前記方法が、前記出力データを取り出す前に核酸の前記集合を増幅させることをさらに含む、項目36に記載の方法。
(項目38)
複数の配列リードを生成するために、核酸の前記集合を配列することをさらに含む、項目36~37のいずれか1項に記載の方法。
(項目39)
前記複数の配列リードが、ヌクレオチド配列の前記集合を得るためにペアにされ、マージされ、及びフィルタにかけられる、項目38に記載の方法。
(項目40)
ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法であって、
i)5ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の前記集合を2進列に変換することを含むヌクレオチド復号ステップと、
ii)2進列を前記出力データに変換することを含むデータ処理ステップと、
を含む、前記方法。
(項目41)
前記ヌクレオチド復号ステップが、ヌクレオチド配列の前記集合を、0~31に及ぶ整数を含む複数の整数部分列に変換することを含む、項目36~40のいずれか1項に記載の方法。
(項目42)
前記ヌクレオチド復号ステップが、エラー訂正コーディングを前記複数の整数部分列に適用して、それによってインデックスを有する前記複数の整数部分列を得ることをさらに含む、項目41に記載の方法。
(項目43)
エラー訂正コーディングを適用する前記ステップが、
i)複数のコンセンサス整数部分列を得るために、RSコーディング文字列訂正を前記複数の整数部分列に適用することと、
ii)インデックスを有する前記複数の整数部分列を得るために、RSコーディングブロック訂正を前記複数のコンセンサス整数部分列に適用することと、
を含む、項目42に記載の方法。
(項目44)
前記ヌクレオチド復号ステップが、複数の整数のコア部分列を得るために、インデックスを有する前記複数の整数部分列から前記インデックスを削除することをさらに含む、項目42または43に記載の方法。
(項目45)
前記ヌクレオチド復号ステップが、整数の前記コア部分列を、整数の文字列にマージすることをさらに含む、項目44に記載の方法。
(項目46)
前記ヌクレオチド復号ステップが、整数の前記文字列を2進列に変換することをさらに含む、項目45に記載の方法。
(項目47)
前記出力データが圧縮ファイルに記憶される、項目46に記載の方法。
(項目48)
前記データ処理ステップが、前記圧縮ファイルを解凍することをさらに含む、項目47に記載の方法。
(項目49)
前記解凍することが、LZMAアルゴリズムを通して実施される、項目48に記載の方法。
(項目50)
前記出力データが複数のファイルに相当する、項目46に記載の方法。
(項目51)
TARアルゴリズムを通して前記出力データから前記複数のファイルを抽出することをさらに含む、項目50に記載の方法。
(項目52)
前記5ビットトランスコーデイングフレームワークが表2による、項目36~51のいずれか1項に記載の方法。
(項目53)
核酸の前記集合が、3’末端及び5’末端にプライマー配列を含み、前記方法が、前記ヌクレオチド復号ステップの前に前記プライマー配列を削除することを含む、項目36~53のいずれか1項に記載の方法。
(項目54)
関心のある核酸の集合に記憶された出力データを取り出すための方法であって、関心のある核酸の前記集合が、混合物に存在するヌクレオチド配列の複数の集合の1つであり、各集合が、出力データの異なる集合を符号化し、前記3’末端及び5’末端の異なる集合を有し、
a)関心のある核酸に対応する前記プライマーペアを使用し、核酸の前記集合を増幅させることと、
b)前記増幅させた核酸のヌクレオチド配列の集合を得ることと、
c)項目40~52のいずれか1項に記載の前記方法に従ってヌクレオチド配列の前記集合を前記出力データに変換すること、
それによって前記出力データを得ることを含む、前記方法。
(項目55)
関心のある核酸の対応する2つ以上の集合に記憶された出力データの2つ以上の集合を取り出すための方法であって、関心のある核酸の前記2つ以上の集合が、混合物に存在する複数のヌクレオチド配列の中にあり、各集合が、出力データの異なる集合を符号化し、3’末端及び5’末端にプライマーペアの異なる集合を有し、
a)関心のある核酸の前記2つ以上の集合に対応するプライマーペアを使用し、関心のある核酸の前記2つ以上の集合を増幅させることと、
b)前記増幅させた核酸のヌクレオチド配列の2つ以上の集合を得ることと、
c)項目40~52のいずれか1項に記載の前記方法に従って、ヌクレオチド配列の前記2つ以上の集合を出力データの前記2つ以上の集合に別々に変換すること、
それによって出力データの前記2つ以上の集合を得ることを含む、前記方法。
(項目56)
1つ以上のプログラムを記憶する非一過性のコンピュータ可読記憶媒体であって、前記1つ以上のプログラムが、電子機器の1つ以上のプロセッサによる実行時に、前記電子機器に、項目2~36及び項目40~52のいずれか1項に記載の前記方法を実施させる命令を含む、非一過性のコンピュータ可読記憶媒体。
(項目57)
核酸ベースのデータストレージ及び核酸からのデータ取り出しを提供するためのシステムであって、
1つ以上のプロセッサと、
メモリと、
1つ以上のプログラムであって、前記1つ以上のプログラムが前記メモリに記憶され、前記1つ以上のプロセッサにより実行されるように構成され、項目2~36及び項目40~52のいずれか1項に記載の前記方法を実施するための命令を含む前記1つ以上のプログラムと、
を備える、前記システム。
(項目58)
核酸ベースのデータストレージ及び核酸からのデータ取り出しを提供するための電子機器であって、項目2~36及び項目40~52のいずれか1項に記載の前記方法を実施するための手段を備える、前記機器。
【配列表】