(57)【要約】本開示は、概してＤＮＡベースのデータストレージに関する。入力データを核酸に記憶するための例示的な方法は、入力データをヌクレオチド配列の集合に変換すること、及びヌクレオチド配列の集合を含む核酸の集合を合成することを含む。変換することは、入力データを２進列に変換することを含むデータ処理ステップと、ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。
2020534633.tif 000002
【特許請求の範囲】
【請求項１】
入力データを核酸に記憶するための方法であって、
ａ）前記入力データをヌクレオチド配列に変換することであって、前記変換することが、
ｉ）前記入力データを２進列に変換することを含むデータ処理ステップと、
ｉｉ）ヌクレオチド配列の前記集合を得るために、５ビットトランスコーディングフレームワークを使用し、前記２進列を変換することを含むヌクレオチド符号化ステップと、
を含む、前記変換することと、
ｂ）ヌクレオチド配列の前記集合を含む核酸の集合を合成することと、
を含む、前記方法。
【請求項２】
入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法であって、
ｉ）前記入力データを２進列に変換することを含むデータ処理ステップと、
ｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、前記２進列を変換することを含むヌクレオチド符号化ステップと、
を含む、前記方法。
【請求項３】
前記データ処理ステップが、前記２進列を非重複５ビット２進列の数列に分割することを含む、請求項１〜２のいずれか１項に記載の方法。
【請求項４】
前記ヌクレオチド符号化ステップが、整数の文字列を得るために、各５ビット２進列を０〜３１に及ぶ整数に変換することを含む、請求項３に記載の方法。
【請求項５】
前記ヌクレオチド符号化ステップが、ヌクレオチド配列の前記集合を得るために、前記５ビットトランスコーディングフレームワークを使用し、整数の前記文字列を変換することをさらに含む、請求項４に記載の方法。
【請求項６】
前記ヌクレオチド符号化ステップが、整数の前記文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む、請求項４に記載の方法。
【請求項７】
前記複数の整数の初期部分列のそれぞれの前記長さが、選択した合成プラットフォームのオリゴ長、所望するエラー許容範囲、前記入力データのサイズ、選択したエラー訂正符号、またはその組み合わせに基づいて決定される、請求項６に記載の方法。
【請求項８】
前記ヌクレオチド符号化ステップが、インデックスを有する複数の整数部分列を得るために、インデックス情報を前記複数の整数の前記初期部分列のそれぞれに加えることをさらに含む、請求項６または７に記載の方法。
【請求項９】
前記複数の整数の前記初期部分列のそれぞれに加えられた前記インデックス情報が整数の数列を含み、前記整数の数列の前記長さが前記入力データのサイズに基づく、請求項８に記載の方法。
【請求項１０】
前記ヌクレオチド符号化ステップが、前記インデックス情報を加えた後、冗長性データを、インデックスを有する前記複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることを含む、請求項８または９に記載の方法。
【請求項１１】
冗長性データを、インデックスを有する前記複数の整数部分列に加えることが、
空の行列を作成することであって、前記空の行列の列数がインデックスを有する前記複数の整数部分列の前記サイズよりも大きく、前記空の行列の行数が、インデックスを有する前記複数の整数部分列のそれぞれの整数の数よりも大きい、前記作成することと、
インデックスを有する前記複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで前記空の行列を充填することと、
前記充填した行列に基づいて、冗長性を有する前記複数の整数部分列を得ることと、
を含む、請求項１０に記載の方法。
【請求項１２】
前記空の行列の前記列数が、選択した合成プラットフォームのオリゴ長、前記エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する前記複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される、請求項１１に記載の方法。
【請求項１３】
前記空の行列の前記行数が、選択した合成プラットフォームのオリゴ長、前記エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する前記複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される、請求項１１または１２に記載の方法。
【請求項１４】
前記エラー訂正コーディングがリードソロモン（「ＲＳ」）コーディングである、請求項１１〜１３のいずれか１項に記載の方法。
【請求項１５】
エラー訂正コーディングを適用することにより生成された前記データが、前記ＲＳコーディングの文字列訂正及び／または前記ＲＳコーディングのブロック訂正を適用することによって生成される、請求項１４に記載の方法。
【請求項１６】
前記５ビットトランスコーディングフレームワークが表２による、請求項１〜１５のいずれか１項に記載の方法。
【請求項１７】
Ｒ及びＹが、１）ＲまたはＹの直前の前記ヌクレオチドとは異なること、及び／または２）前記ヌクレオチド配列の推定ＧＣ含有量に基づいて選ばれる、請求項１６に記載の方法。
【請求項１８】
前記入力データが圧縮ファイルに相当する、請求項１〜１７のいずれか１項に記載の方法。
【請求項１９】
前記入力データが２つ以上のファイルに相当する、請求項１〜１８のいずれか１項に記載の方法。
【請求項２０】
前記入力データがテキストファイルに相当する、請求項１〜１７及び請求項１９のいずれか１項に記載の方法。
【請求項２１】
前記データ処理ステップが、圧縮ファイルを得るために前記入力データを圧縮することと、前記圧縮したファイルを２進列に変換することをさらに含む、請求項１〜２０のいずれか１項に記載の方法。
【請求項２２】
前記圧縮ファイルが、レンペルジフマルコフチェーンアルゴリズム（「ＬＺＭＡ」）を使用し、圧縮される、請求項１８または２１に記載の方法。
【請求項２３】
前記データ処理ステップが、前記２つ以上のファイルを１つのＴＡＲファイルにグループ化することをさらに含む、請求項１９に記載の方法。
【請求項２４】
前記ＴＡＲファイルが、前記レンペルジフマルコフチェーンアルゴリズム（「ＬＺＭＡ」）を使用し、さらに圧縮される、請求項２３に記載の方法。
【請求項２５】
前記ヌクレオチド符号化ステップが、ヌクレオチド配列の前記集合の各ヌクレオチド配列の５’末端及び３’末端にプライマー配列のペアを付加することをさらに含む、請求項１〜２４のいずれか１項に記載の方法。
【請求項２６】
合成した核酸の前記集合にプライマーのペアを付けることをさらに含む、請求項１に記載の方法。
【請求項２７】
入力データの２つ以上の集合を核酸に記憶するための方法であって、
ａ）請求項２〜１９のいずれか１項に記載の方法に従って、入力データの前記２つ以上の集合を、対応するヌクレオチド配列の２つ以上の集合に別々に変換することと、
ｂ）プライマー配列のペアを、ヌクレオチド配列の前記２つ以上の集合の各集合の前記５’末端及び３’末端に別々に付加することであって、対応するヌクレオチド配列の前記２つ以上の集合のためのプライマーの前記ペアが、互いとは異なる、前記付加することと、
ｃ）それぞれ対応するヌクレオチド配列の前記２つ以上の集合を含む、核酸の２つ以上の集合を合成することと、
を含む、前記方法。
【請求項２８】
プライマーの各ペアが、対応するヌクレオチド配列の前記２つ以上の集合またはその相補配列のいずれか１つとは異なる配列を有する、請求項２７に記載の方法。
【請求項２９】
合成した核酸の前記集合が、３０％〜７０％に及ぶＧＣ含有量を有する、請求項１及び請求項３〜２８のいずれかに記載の方法。
【請求項３０】
合成した核酸の前記集合が、約７０％未満のＧＣ含有量を有する、請求項１及び請求項３〜２９のいずれか１項に記載の方法。
【請求項３１】
合成した核酸の前記集合を保管することをさらに含む、請求項１に記載の方法。
【請求項３２】
合成した核酸の前記集合が乾燥により保管される、請求項３１に記載の方法。
【請求項３３】
合成した核酸の前記集合が凍結乾燥により保管される、請求項３２に記載の方法。
【請求項３４】
合成した核酸の前記集合が担体上で不動にされる、請求項３１に記載の方法。
【請求項３５】
前記担体がマイクロアレイである、請求項３４に記載の方法。
【請求項３６】
核酸に記憶された出力データを取り出すための方法であって、
ａ）核酸の集合のヌクレオチド配列の集合を得ることと、
ｂ）ヌクレオチド配列の前記集合を前記出力データに変換することであって、前記変換することが、
ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の前記集合を２進列に変換することを含むヌクレオチド復号ステップと、
ｉｉ）２進列を前記出力データに変換して、それによって前記出力データを得ることを含むデータ処理ステップと、
を含む、前記方法。
【請求項３７】
前記方法が、前記出力データを取り出す前に核酸の前記集合を増幅させることをさらに含む、請求項３６に記載の方法。
【請求項３８】
複数の配列リードを生成するために、核酸の前記集合を配列することをさらに含む、請求項３６〜３７のいずれか１項に記載の方法。
【請求項３９】
前記複数の配列リードが、ヌクレオチド配列の前記集合を得るためにペアにされ、マージされ、及びフィルタにかけられる、請求項３８に記載の方法。
【請求項４０】
ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法であって、
ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の前記集合を２進列に変換することを含むヌクレオチド復号ステップと、
ｉｉ）２進列を前記出力データに変換することを含むデータ処理ステップと、
を含む、前記方法。
【請求項４１】
前記ヌクレオチド復号ステップが、ヌクレオチド配列の前記集合を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することを含む、請求項３６〜４０のいずれか１項に記載の方法。
【請求項４２】
前記ヌクレオチド復号ステップが、エラー訂正コーディングを前記複数の整数部分列に適用して、それによってインデックスを有する前記複数の整数部分列を得ることをさらに含む、請求項４１に記載の方法。
【請求項４３】
エラー訂正コーディングを適用する前記ステップが、
ｉ）複数のコンセンサス整数部分列を得るために、ＲＳコーディング文字列訂正を前記複数の整数部分列に適用することと、
ｉｉ）インデックスを有する前記複数の整数部分列を得るために、ＲＳコーディングブロック訂正を前記複数のコンセンサス整数部分列に適用することと、
を含む、請求項４２に記載の方法。
【請求項４４】
前記ヌクレオチド復号ステップが、複数の整数のコア部分列を得るために、インデックスを有する前記複数の整数部分列から前記インデックスを削除することをさらに含む、請求項４２または４３に記載の方法。
【請求項４５】
前記ヌクレオチド復号ステップが、整数の前記コア部分列を、整数の文字列にマージすることをさらに含む、請求項４４に記載の方法。
【請求項４６】
前記ヌクレオチド復号ステップが、整数の前記文字列を２進列に変換することをさらに含む、請求項４５に記載の方法。
【請求項４７】
前記出力データが圧縮ファイルに記憶される、請求項４６に記載の方法。
【請求項４８】
前記データ処理ステップが、前記圧縮ファイルを解凍することをさらに含む、請求項４７に記載の方法。
【請求項４９】
前記解凍することが、ＬＺＭＡアルゴリズムを通して実施される、請求項４８に記載の方法。
【請求項５０】
前記出力データが複数のファイルに相当する、請求項４６に記載の方法。
【請求項５１】
ＴＡＲアルゴリズムを通して前記出力データから前記複数のファイルを抽出することをさらに含む、請求項５０に記載の方法。
【請求項５２】
前記５ビットトランスコーデイングフレームワークが表２による、請求項３６〜５１のいずれか１項に記載の方法。
【請求項５３】
核酸の前記集合が、３’末端及び５’末端にプライマー配列を含み、前記方法が、前記ヌクレオチド復号ステップの前に前記プライマー配列を削除することを含む、請求項３６〜５３のいずれか１項に記載の方法。
【請求項５４】
関心のある核酸の集合に記憶された出力データを取り出すための方法であって、関心のある核酸の前記集合が、混合物に存在するヌクレオチド配列の複数の集合の１つであり、各集合が、出力データの異なる集合を符号化し、前記３’末端及び５’末端の異なる集合を有し、
ａ）関心のある核酸に対応する前記プライマーペアを使用し、核酸の前記集合を増幅させることと、
ｂ）前記増幅させた核酸のヌクレオチド配列の集合を得ることと、
ｃ）請求項４０〜５２のいずれか１項に記載の前記方法に従ってヌクレオチド配列の前記集合を前記出力データに変換すること、
それによって前記出力データを得ることを含む、前記方法。
【請求項５５】
関心のある核酸の対応する２つ以上の集合に記憶された出力データの２つ以上の集合を取り出すための方法であって、関心のある核酸の前記２つ以上の集合が、混合物に存在する複数のヌクレオチド配列の中にあり、各集合が、出力データの異なる集合を符号化し、３’末端及び５’末端にプライマーペアの異なる集合を有し、
ａ）関心のある核酸の前記２つ以上の集合に対応するプライマーペアを使用し、関心のある核酸の前記２つ以上の集合を増幅させることと、
ｂ）前記増幅させた核酸のヌクレオチド配列の２つ以上の集合を得ることと、
ｃ）請求項４０〜５２のいずれか１項に記載の前記方法に従って、ヌクレオチド配列の前記２つ以上の集合を出力データの前記２つ以上の集合に別々に変換すること、
それによって出力データの前記２つ以上の集合を得ることを含む、前記方法。
【請求項５６】
１つ以上のプログラムを記憶する非一過性のコンピュータ可読記憶媒体であって、前記１つ以上のプログラムが、電子機器の１つ以上のプロセッサによる実行時に、前記電子機器に、請求項２〜３６及び請求項４０〜５２のいずれか１項に記載の前記方法を実施させる命令を含む、非一過性のコンピュータ可読記憶媒体。
【請求項５７】
核酸ベースのデータストレージ及び核酸からのデータ取り出しを提供するためのシステムであって、
１つ以上のプロセッサと、
メモリと、
１つ以上のプログラムであって、前記１つ以上のプログラムが前記メモリに記憶され、前記１つ以上のプロセッサにより実行されるように構成され、請求項２〜３６及び請求項４０〜５２のいずれか１項に記載の前記方法を実施するための命令を含む前記１つ以上のプログラムと、
を備える、前記システム。
【請求項５８】
核酸ベースのデータストレージ及び核酸からのデータ取り出しを提供するための電子機器であって、請求項２〜３６及び請求項４０〜５２のいずれか１項に記載の前記方法を実施するための手段を備える、前記機器。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、全内容がすべての目的のために本明細書に参照により援用される、２０１７年７月２５日に出願された中国特許出願第２０１７１０６１１１２３．２号の利益を主張する。
【０００２】
ＡＳＣＩＩテキストファイルでの配列表の提出
ＡＳＣＩＩテキストファイルでの以下の提出、つまりコンピュータ可読形式（ＣＲＦ）の配列表（ファイル名７５９８９２０００３４０ＳＥＱＬＩＳＴ．ＴＸＴ、記録日：２０１８年７月３日、サイズ、１０２ＫＢ）の内容は、その全体が参照により本明細書に援用される。
【０００３】
本開示は、概してデータストレージ及びデータ取り出しに関し、より詳細には、確実かつ効率的なＤＮＡベースのデータストレージ及びデータ取り出しを達成するための技術に関する。
【背景技術】
【０００４】
ＤＮＡをデータストレージ及びデータ取り出しのための手段として活用するという概念は、Ｊｏｅ  Ｄａｖｉｓ及び彼の共同研究者が、アイコンを符号化するための「Ｍｏｃｒｏｖｅｎｕｓ」と名付けられた合成ＤＮＡを作成し、それをＥ．ｃｏｌｉ細胞の中に組み込んだ１９８８年まで遡ることができる。例えば磁気テープ及びハードディスク等の従来の記憶媒体と比較すると、ＤＮＡベースのストレージは、より高密度（例えば、１ＥＢのデータを記憶する場合〜１ｍｍ３）、より長期に亘るストレージ（例えば、−１８℃で百万年以上）、及びより低い維持費という優位点を有する。ＤＮＡストレージは、ＤＮＡ記憶媒体の生成のためのオリゴヌクレオチド合成（特に、ＣｕｓｔｏｍＡｒｒａｙのような高スループットの合成プラットフォーム）と、情報取り出しのためのシークエンシング（特に、Ｉｌｌｕｍｉｎａ  ＨｉＳｅｑ  ２５００及びＭｉＳｅｑのような次世代シークエンシング［ＮＧＳ］）の両方に基づく最先端の研究分野である。
【０００５】
ところが、現在、ＤＮＡベースのデータストレージはいくつかの制限を有している。例えば、ＤＮＡ合成の生産コストはかなり高い。一方、データ取り出しの速度は、シークエンシングのために低い場合がある。したがって、ＤＮＡベースのストレージは、より少ない数の記憶媒体の読み取り及び書き込みを伴う大規模なアーカイブストレージにより適していると見なされてきた。さらに、プロセスの多様な段階（例えば、符号化、書き込み、記憶、復号、読み取り、取り出し）において多くのエラーがもたらされ、したがってデータストリームの入力及び出力に欠陥を生じさせる場合がある。例示的なエラーは、合成及びシークエンシング中に生じるＤＮＡフラグメントの突然変異、削除、挿入、紛失、及び長期に亘る記憶の後の変性を含む。さらに、大量のデータが、ＤＮＡを使用し記憶されるとき、データをその全体で取り出すことなくデータの一部分に対するランダムアクセスを達成することは難易度が高い場合がある。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明は、確実かつ効率的なＤＮＡベースのデータストレージ及びデータ取り出しのための技術に関する。具体的には、本発明は、入力されたデータを、例えばデオキシリボ核酸（「ＤＮＡ」）等の核酸に記憶する正確で効率的かつ信頼できる方法を提供する。特に、本発明は、新規の５ビットトランスコーディングフレームワークを利用して、１つ以上のデータファイルを核酸配列（例えば、ＤＮＡ配列）に変換する。また、本発明は、効率的かつ信頼できるデータストレージ及びデータ取り出しのための圧縮アルゴリズム（複数可）、エラー訂正アルゴリズム（複数可）、及びトランスコーディングフレームワーク（複数可）を含む統合プロセスも提供する。さらに、本発明は、同時に大規模なデータを記憶するが、所与のときに部分的な情報だけをブラウズする必要があるときに特に有益であるランダムデータアクセスを可能にする。本明細書に開示する方法に従って記憶できるデータは、例えばテキストファイル、高解像度ビデオ、画像、及び／または音声を含む、デジタルで（つまりバイナリデータで）表すことができるであろう任意のタイプのデータを含む。
【０００７】
一部の実施形態では、ａ）入力データをヌクレオチド配列に変換することであって、変換することが、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む変換することと、ｂ）ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む、核酸に入力データを記憶するための方法が提供される。
【０００８】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。
【０００９】
一部の実施形態では、データ処理ステップは、２進列を非重複５ビット２進列の数列に分割することを含む。
【００１０】
一部の実施形態では、ヌクレオチド符号化ステップは、整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換することを含む。
【００１１】
一部の実施形態では、ヌクレオチド符号化ステップは、ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することをさらに含む。
【００１２】
一部の実施形態では、ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。
【００１３】
一部の実施形態では、複数の整数の初期部分列のそれぞれの長さは、選択した合成プラットフォームのオリゴ長、所望されるエラー許容範囲、入力データのサイズ、選択したエラー訂正符号、またはその組み合わせに基づいて決定される。
【００１４】
一部の実施形態では、ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、インデックス情報を複数の整数の初期部分列のそれぞれに加えることをさらに含む。
【００１５】
一部の実施形態では、複数の整数の初期部分列のそれぞれに加えられたインデックス情報は整数の数列を含み、整数の数列の長さは入力データのサイズに基づく。
【００１６】
一部の実施形態では、ヌクレオチド符号化ステップは、インデックス情報を加えた後に、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることを含む。
【００１７】
一部の実施形態では、冗長性データを、インデックスを有する複数の整数部分列に加えることは、空の行列を作成することであって、空の行列内の列数は、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列内の行数は、インデックスを有する複数の整数部分列のそれぞれの中の整数の数よりも大きい、作成することと、インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで空の行列を充填することと、充填した行列に基づいて冗長性を有する複数の部分列を得ることとを含む。
【００１８】
一部の実施形態では、空の行列の列数は、選択した合成プラットフォームのオリゴ長、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数のサブシーエンスのサイズ、またはその組み合わせに基づいて決定される。
【００１９】
一部の実施形態では、空の行列の行数は、選択した合成プラットフォームのオリゴ長、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数のサブシーエンスのサイズ、またはその組み合わせに基づいて決定される。
【００２０】
一部の実施形態では、エラー訂正コーディングは、リードソロモン（「ＲＳ」）コーディングである。
【００２１】
一部の実施形態では、エラー訂正コーディングを適用することによって生成されたデータは、ＲＳコーディングの文字列訂正及び／またはＲＳコーディングのブロック訂正を適用することによって生成される。
【００２２】
一部の実施形態では、５ビットトランスコーディングフレームワークは、表２による。
【００２３】
一部の実施形態では、Ｒ及びＹは、１）ＲまたはＹの直前のヌクレオチドとは異なること、及び／または２）ヌクレオチド配列の推定ＧＣ含有量に基づいて選ばれる。
【００２４】
一部の実施形態では、入力データは圧縮ファイルに相当する。一部の実施形態では、入力データは２つ以上のファイルに相当する。
【００２５】
一部の実施形態では、入力データはテキストファイルに相当する。
【００２６】
一部の実施形態では、データ処理ステップは、圧縮ファイルを得るために入力データを圧縮し、圧縮したファイルを２進列に変換することをさらに含む。
【００２７】
一部の実施形態では、圧縮ファイルは、レンペルジフマルコフチェーンアルゴリズム（「ＬＺＭＡ」）を使用し、圧縮される。
【００２８】
一部の実施形態では、データ処理ステップは、２つ以上のファイルを１つのＴＡＲファイルにグループ化することをさらに含む。
【００２９】
一部の実施形態では、ＴＡＲファイルは、レンペルジフマルコフチェーンアルゴリズム（「ＬＺＭＡ」）を使用し、さらに圧縮される。
【００３０】
一部の実施形態では、ヌクレオチド符号化ステップは、ヌクレオチド配列の集合の各ヌクレオチド配列の５’末端及び３’末端にプライマー配列のペアを付加することをさらに含む。
【００３１】
一部の実施形態では、プライマーのペアは、合成した核酸の集合に付けられる。
【００３２】
一部の実施形態では、ａ）入力データの２つ以上の集合を、本明細書に説明する方法のいずれかに従って対応するヌクレオチド配列の２つ以上の集合に別々に変換することと、ｂ）ヌクレオチド配列の２つ以上の集合の各集合の５’末端及び３’末端にプライマー配列のペアを別々に付加することであって、対応するヌクレオチド配列の２つ以上の集合のためのプライマーのペアが互いに異なる、付加することと、ｃ）それぞれ対応するヌクレオチド配列の２つ以上の集合を含む核酸の２つ以上の集合を合成することと含む、入力データの２つ以上の集合を核酸に記憶するための方法が提供される。
【００３３】
一部の実施形態では、プライマーの各ペアは、対応するヌクレオチド配列の２つ以上の集合またはその相補配列のいずれか１つとは異なる配列を有する。
【００３４】
一部の実施形態では、合成した核酸の集合は、３０％〜７０％に及ぶＧＣ含有量を有する。一部の実施形態では、合成した核酸の集合は、約７０％未満のＧＣ含有量を有する。
【００３５】
一部の実施形態では、合成した核酸の集合が保管される。一部の実施形態では、合成した核酸の集合は、乾燥により保管される。一部の実施形態では、合成した核酸の集合は、凍結乾燥により保管される。
【００３６】
一部の実施形態では、合成した核酸の集合は、担体上で不動にされる。一部の実施形態では、担体はマイクロアレイである。
【００３７】
一部の実施形態では、ａ）核酸の集合のヌクレオチド配列の集合を得ることと、ｂ）ヌクレオチド配列の集合を出力データに変換することであって、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換して、それによって出力データを得ることを含むデータ処理ステップを含む、変換することを含む、核酸に記憶された出力データを取り出すための方法が提供される。
【００３８】
一部の実施形態では、核酸の集合は、出力データを取り出す前に増幅される。
【００３９】
一部の実施形態では、核酸の集合は、複数の配列リードを生成するために配列される。
【００４０】
一部の実施形態では、複数の配列リードは、ヌクレオチド配列の集合を得るためにペアにされ、マージされ、フィルタにかけられる。
【００４１】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。
【００４２】
一部の実施形態では、ヌクレオチド復号ステップは、ヌクレオチド配列の集合を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することを含む。
【００４３】
一部の実施形態では、ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。
【００４４】
一部の実施形態では、エラー訂正コーディングを適用するステップは、ｉ）複数のコンセンサス整数（ｃｏｎｓｅｎｓｕｓ  ｉｎｔｅｇｅｒ）部分列を得るために、ＲＳコーディング文字列訂正を複数の整数部分列に適用することと、ｉｉ）インデックスを有する複数の整数部分列を得るために、ＲＳコーディングブロック訂正を複数のコンセンサス整数部分列に適用することを含む。
【００４５】
一部の実施形態では、ヌクレオチド復号ステップは、複数の整数のコア部分列を得るために、インデックスを有する複数の整数部分列からインデックスを削除することをさらに含む。
【００４６】
一部の実施形態では、ヌクレオチド復号ステップは、整数のコア部分列を整数の文字列にマージすることをさらに含む。
【００４７】
一部の実施形態では、ヌクレオチド復号ステップは、整数の文字列を２進列に変換することをさらに含む。
【００４８】
一部の実施形態では、出力データは圧縮ファイルに記憶される。一部の実施形態では、データ処理ステップは、圧縮ファイルを解凍することをさらに含む。一部の実施形態では、解凍することは、ＬＺＭＡアルゴリズムを通して実施される。
【００４９】
一部の実施形態では、出力データは複数のファイルに相当する。一部の実施形態では、複数のファイルは、ＴＡＲアルゴリズムを通して出力データから抽出される。
【００５０】
一部の実施形態では、５ビットトランスコーディングフレームワークは表２による。
【００５１】
一部の実施形態では、核酸の集合は、３’末端及び５’末端にプライマー配列を含み、方法は、ヌクレオチド復号ステップの前にプライマー配列を削除することを含む。
【００５２】
一部の実施形態では、関心のある核酸の集合に記憶された出力データを取り出すための方法が提供され、関心のある核酸の集合は、混合物に存在する複数のヌクレオチド配列の集合のうちの１つであり、各集合は、出力データの異なる集合を符号化し、３’末端及び５’末端にプライマー対の異なる集合を有し、ａ）関心のある核酸に対応するプライマーペアを使用し、核酸の集合を増幅させることと、ｂ）増幅させた核酸のヌクレオチド配列の集合を得ることと、ｃ）請求項４１〜５３のいずれか１項に係る方法に従って、ヌクレオチド配列の集合を出力データに変換して、それによって出力データを得ることを含む。
【００５３】
一部の実施形態では、関心のある核酸の対応する２つ以上の集合に記憶された出力データの２つ以上の集合を取り出すための方法が提供され、関心のある核酸の２つ以上の集合は、混合物に存在する複数のヌクレオチド配列の中にあり、各集合は、出力データの異なる集合を符号化し、３’末端及び５’末端にプライマーペアの異なる集合を有し、ａ）関心のある核酸の２つ以上の集合に対応するプライマーペアを使用し、関心のある核酸の２つ以上の集合を増幅させること（例えば、別々に増幅させること又はともに増幅させること）と、ｂ）増幅させた核酸のヌクレオチド配列の２つ以上の集合を得ることと、ｃ）本明細書に説明する方法のいずれかに従って、ヌクレオチド配列の２つ以上の集合を出力データの２つ以上の集合に別々に変換して、それによって出力データの２つ以上の集合を得ることを含む。
【００５４】
一部の実施形態では、１つ以上のプログラムを記憶する非一過性のコンピュータ可読記憶媒体が提供され、１つ以上のプログラムは、電子機器の１つ以上のプロセッサによる実行時に、電子機器に本明細書に説明する方法のいずれかを実施させる命令を含む。
【００５５】
また、１つ以上のプロセッサ、メモリ、及び１つ以上のプログラムを含む核酸をベースにした、データストレージまたは核酸からのデータ取り出しを提供するためのシステムも提供され、１つ以上のプログラムは、メモリに記憶され、１つ以上のプロセッサにより実行されるように構成され、１つ以上のプログラムは、本明細書に説明する方法のいずれかを実施するための命令を含む。
【００５６】
また、本明細書に説明する方法のいずれかを実施するための手段を含む、核酸をベースにしたデータストレージまたは核酸からのデータ取り出しを提供するための電子機器も提供される。
【図面の簡単な説明】
【００５７】
【図１】一部の実施形態に従って、ＤＮＡベースのデータストレージ及びデータ取り出しを提供するための例示的なプロセスを示す。
【図２】一部の実施形態に従って、ＤＮＡベースのデータストレージのために圧縮データを処理するための例示的な状況を示す。
【図３Ａ】一部の実施形態に従って、インデックス及び冗長性データを、記憶されるデジタルコンテンツに加えるための例示的なステップを示す。
【図３Ｂ】一部の実施形態に従って、インデックス及び冗長性データを、記憶されるデジタルコンテンツに加えるための例示的なステップを示す。
【図３Ｃ】一部の実施形態に従って、インデックス及び冗長性データを、記憶されるデジタルコンテンツに加えるための例示的なステップを示す。
【図３Ｄ】一部の実施形態に従って、インデックス及び冗長性データを、記憶されるデジタルコンテンツに加えるための例示的なステップを示す。
【図４】一部の実施形態に従って、ＤＮＡベースのデータストレージのために圧縮ファイルを処理するための例示的な状況を示す。
【図５】一部の実施形態に従って、例示的な５ビットトランスコーディングフレームワークを示す。
【図６】一部の実施形態に従って、記憶され、取り出される例示的なテキスト部分を示す。
【図７】一部の実施形態に従って、ＤＮＡベースのデータストレージ及びデータ取り出しの技術の例示的な実現を示す。
【図８】一部の実施形態に係る例示的な電子機器を示す。
【図９Ａ】一部の実施形態に従って、ＤＮＡベースのデータストレージを提供するための例示的なプロセスを示す。
【図９Ｂ】一部の実施形態に従って、ＤＮＡベースのデータ取り出しを提供するための例示的なプロセスを示す。
【発明を実施するための形態】
【００５８】
本発明は、例えばデオキシリボ核酸（「ＤＮＡ」）等の核酸に入力データを記憶する正確で効率的かつ信頼できる方法を提供する。具体的には、本発明は、１つ以上のデータファイルを核酸配列（例えば、ＤＮＡ配列）に変換するために、新規の５ビットトランスコーディングフレームワークを利用する。この新規のトランスコーディングフレームワークは、正しいＧＣ含有量を発見し、一定のホモポリマー（例えば、４以上のヌクレオチド長であるホモポリマー）を回避し、核酸の合成及び増幅におけるエラーレートを削減する効果的な核酸配列設計を可能にする。また、本発明は、効率的かつ信頼できるデータストレージ及びデータ取り出しのための圧縮アルゴリズム（複数可）、エラー訂正アルゴリズム（複数可）、及びトランスコーディングフレームワーク（複数可）を含む統合プロセスも提供する。本明細書に提供される方法は、大型ファイルを含む任意のサイズのデータを記憶するために使用できる。さらに、本発明は、同時に大規模なデータを記憶するが、所与のときに部分的な情報だけをブラウズする必要があるときに特に有益であるランダムデータアクセスを可能にする。本明細書に開示する方法に従って記憶できるデータは、例えばテキストファイル、高解像度ビデオ、画像、及び／または音声を含む、デジタルで（つまりバイナリデータで）表すことができるであろう任意のタイプのデータを含む。
【００５９】
したがって、本願は、一態様において、入力データをヌクレオチド配列の集合に変換するための方法だけではなく、核酸の集合に入力データを記憶するための方法も提供する。別の態様では、ヌクレオチド配列の集合を出力データに変換するための方法だけではなく、核酸に記憶された出力データを取り出すための方法も提供される。また、本明細書に説明する方法の任意の１つ以上のステップを実施するために１つ以上のプログラムを記憶するためのシステム及び非一過性のコンピュータ可読記憶媒体も提供される。
【００６０】
本明細書に説明する本発明の実施形態が、実施形態「から成ること」及び／または実施形態「から基本的に成ること」を含むことが理解される。
【００６１】
本明細書での値またはパラメータ「について」に対する参照は、本質的にその値またはパラメータを対象とする変形を含む（及び記述する）。例えば、「Ｘについて」を参照する記述は、「Ｘ」の記述を含む。
【００６２】
本明細書で使用するとおり、値またはパラメータに対してでは「ない」参照は、概して値またはパラメータ「以外」を意味し、記述する。例えば、方法はＸ型のがんを治療するために使用されないは、方法が、Ｘ以外の型のがんを治療するために使用されることを意味する。
【００６３】
本明細書及び添付の特許請求の範囲で使用するとおり、単数形「ａ」、「ｏｒ」、及び「ｔｈｅ」は、文脈上明らかに他の意味に解釈すべき場合を除いて、複数指示語を含む。
【００６４】
本明細書及び添付の特許請求の範囲で使用するとおり、「の集合」は、文脈上明らかに他の意味に解釈すべき場合を除いて、１つまたは複数の指示語を指す。核酸の集合は、同じファイルまたはともに圧縮されたファイルの同じグループからの核酸符号化データである場合がある。一部の実施形態では、同じファイル内の核酸は、５’末端及び３’末端に付けられたプライマーの同じ集合を有する場合がある。
【００６５】
データを符号化する方法及びデータストレージ
本発明は、一態様で、入力データをヌクレオチド配列の集合に変換するための（例えば、コンピュータ実装方法等の）方法を提供する。方法は、通常、入力データを２進列に変換するデータ処理ステップ、及びヌクレオチド配列の集合を得るために５ビットトランスコーディングフレームワークを使用し、２進列を変換するヌクレオチド符号化ステップを含む。方法は、核酸の集合に入力データを記憶するために有用であり、これは、最初に入力データをヌクレオチド配列の集合に変換し、次いでヌクレオチド配列の集合を含む核酸の集合を合成することを伴う。
【００６６】
入力データは、例えばテキストファイル、画像ファイル、（例えば、高解像度ファイル等の）音声／ビデオファイル等の任意のタイプの任意の数のファイルを表す場合がある。ファイルは、圧縮されていない場合もあれば、圧縮されている場合もある。ファイルが圧縮されていないとき、ファイルは、２進列に変換される前に先に圧縮される場合がある。例えば、ファイルは、レンペルジフマルコフチェーンアルゴリズムを使用し、ＬＺＭＡファイル（例えば、Ａ．ｌｚｍａ）に圧縮される場合がある。一部の実施形態では、２つ以上のファイル（例えば、３つの、４つの、５つの、６つの、及びそれ以上のファイル）が、先に例えばＴＡＲファイル（例えば、Ａ．ｔａｒ）に互いにグループ化され、ＴＡＲファイルはさらにＬＺＭＡファイル（例えば、Ａ．ｔａｒ．ｌｚｍａ）に圧縮される。このようにして、方法は、単一の核酸組成の中に多数のファイル（例えば、１〜５、５〜１０、１０〜１５、１５〜２５、２５〜３５、３５〜５０）を記憶することを可能にできる。
【００６７】
一部の実施形態では、単一ファイルの中の場所へのランダムアクセスを可能にするために、単一ファイルは、データの多数の集合に分割される場合があり、データの多数の集合はそれぞれ以下に説明するように圧縮され、処理される。例えば、１０章を有する書籍に相当するデジタルファイルは１０のファイルに分割され、各ファイルが単一の章に相当する場合がある。１０のファイルは、次いで任意の章のランダムアクセスを達成するために別々に圧縮され、処理される。
【００６８】
データ処理ステップは、入力データを２進列に変換する。例えば、本明細書に説明する５ビットトランスコーディングフレームワークに従うことによって、２進列をヌクレオチド配列の集合に直接的に変換できる。代わりに、２進列は、例えば５ビットトランスコーディングフレームワークに従うことによって、次いでヌクレオチド配列の集合に変換される整数の文字列にさらに変換される場合がある。一部の実施形態では、整数の文字列は、エラー訂正コーディング及び／または冗長性を有する複数の整数部分列を生成するための他のプロセスにさらにさらされ、冗長性を有する複数の整数部分列は次いで、例えば５ビットトランスコーディングフレームワークに従うことによってヌクレオチド配列の集合に変換される。
【００６９】
このようにして、例えば、一部の実施形態では、入力データをヌクレオチド配列の集合に変換するための（例えば、コンピュータ実装方法等の）方法が提供され、変換することは、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。一部の実施形態では、入力データを核酸に記憶するための方法が提供され、方法は、ａ）入力データをヌクレオチド配列の集合に変換することであって、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む、変換することと、ｂ）ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む。
【００７０】
一部の実施形態では、データ処理ステップは、それぞれが整数の文字列を得るために０〜３１に及ぶ整数にさらに変換される場合がある非重複５ビット２進列の数列に２進列を分割することを含む。整数の文字列は、例えば５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合に直接的に変換される場合がある。代わりに、整数の文字列は、以下に説明する追加の操作にさらされる。
【００７１】
具体的には、整数の文字列は、所定の長さを有する複数の整数の初期部分列に分割される場合がある。整数の初期部分列の所定の長さは、以下に詳細に説明するように、合成プラットフォームのオリゴ長、選択したエラー訂正符号、所望されるエラー許容範囲、オリゴの合成エラーレート、及び／または総符号化データサイズを含む複数の要因に基づいて計算される。例えば、整数文字列は、長さが固定された（例えば、２２の整数）スライディングウィンドウを使用し、非重複整数部分列のリストにスライスされる場合がある。インデックスは、次いでインデックスを有する複数の整数部分列を生成するために、複数の整数の初期部分列のそれぞれに加えられる場合がある。インデックスは、やはり０〜３１に及ぶいくつかの整数を含む場合がある。インデックスの長さは柔軟性があり、ＤＮＡ合成のスループット及びデータサイズに依存する。
【００７２】
一部の実施形態では、冗長性データは、冗長性を有する複数の整数部分列を生成するために加えられる。例えば、リードソロモン（ＲＳ）エラー訂正コーディングは、ＲＳコーディングの文字列訂正及びブロック訂正を通して冗長性を有する整数部分列の新規リストを生成するために複数の整数部分列に適用される。冗長性は、ドロップアウトにロバストネスを提供するための合成されたオリゴの余剰分を指す。文字列訂正における冗長性は、オリゴの遷移及びトランスバージョンのエラー訂正に役立つ。ブロック訂正における冗長性は、情報の挿入の訂正、削除、及び完全に紛失を可能にする。
【００７３】
例示的な一実施形態では、冗長性データを、インデックスを有する複数の整数部分列に加えることは、空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数が、インデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで空の行列を充填することと、充填した行列に基づいて冗長性を有する複数の部分列を得ることとを含む。空の行列の列及び／または行の数は、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される場合がある。一部の実施形態では、エラー訂正コーディングはリードソロモン（「ＲＳ」）コーディングである。一部の実施形態では、エラー訂正コーディングを適用することにより生成されるデータは、ＲＳコーディングの文字列訂正、及びＲＳコーディングのブロック訂正を適用することにより生成される。
【００７４】
一部の実施形態では、ヌクレオチド符号化ステップは、プライマー配列のペアを、ヌクレオチド配列の’５末端及び３’末端に付加することをさらに含む。プライマーは、例えばＰＣＲ増幅方法により、核酸の集合を増幅させるために使用できる。一部の実施形態では、プライマー配列は、合成の前にヌクレオチド配列の集合に加えられる。代わりに、プライマーは、例えばライゲーションにより、合成した核酸に付けられる場合がある。
【００７５】
方法は、入力データの２つ以上の集合を核酸に記憶するために有用である場合がある。具体的には、方法は、ａ）入力データの２つ以上の集合を、対応するヌクレオチド配列の２つ以上の集合に別々に変換すること、ｂ）プライマー配列のペアを、ヌクレオチド配列の２つ以上の集合のそれぞれの５’末端及び３’末端に別々に付加することであって、対応するヌクレオチド配列の２つ以上の集合のそれぞれのためのプライマーが互いに異なる、付加すること、及びｃ）それぞれ対応するヌクレオチド配列の２つ以上の集合を含む核酸の複数の集合を合成することと、を含む。プライマーのペアのそれぞれは、２つ以上の対応するヌクレオチド配列またはその相補配列のうちの任意の１つとは異なる配列を有する場合がある。
【００７６】
合成した核酸は、約３０％〜約７０％に及ぶＧＣ含有量を有する場合がある。例えば、合成した核酸は、約４０％〜約６０％、約３０％〜約４０％、約４０％〜約５０％、約５０％〜約６０％、または約６０％〜約７０％のいずれかに及ぶＧＣ含有量を有する場合がある。一部の実施形態では、合成した核酸は、３ヌクレオチドよりも長いホモポリマーを有さない（例えば、４、５、６、７、８、９、または１０のヌクレオチドのホモポリマーはない）。一部の実施形態での合成した核酸は、例えばおよそ５０、１５０、２００、３００、または４００ヌクレオチド長のいずれかのオリゴヌクレオチド等のオリゴヌクレオチドである。一部の実施形態では、核酸の集合は、およそ１、２、３、５、１０、１５、またはそれ以上のオリゴヌクレオチドのいずれかを含む。
【００７７】
一部の実施形態では、方法は、合成した核酸の集合を記憶することをさらに含む。一部の実施形態では、核酸の集合は、例えば凍結乾燥等の乾燥により保管される。核酸の集合は、凍結乾燥された組成物を含む乾燥組成物として保管される場合がある。一部の実施形態では、核酸の集合は、例えばマイクロアレイ等の固体担体を含む、担体上で不動にされる。一部の実施形態では、核酸は、（例えば、ＣｕｓｔｏｍＡｒｒａｙ  １２Ｋチップの）１インチｘ３インチの面積あたり約５μｇの密度を有するマイクロアレイ上に保管される。一部の実施形態では、入力データのサイズは、少なくとも約５０ＭＢである。
【００７８】
核酸配列を復号する方法及びデータ取り出し
本発明は、別の態様で、ヌクレオチド配列の集合を出力データに変換するための（例えば、コンピュータ実装方法等の）方法を提供する。方法は、符号化手順とほぼ逆の過程であり、通常、例えば５ビットトランスコーディングフレームワークを使用することによってヌクレオチド配列の集合を２進列に変換するヌクレオチド復号ステップ、及び２進列を出力データに変換するデータ処理ステップを含む。方法は、核酸の集合に記憶された出力データを取り出すために有用であり、これは、核酸の集合のヌクレオチド配列を得て、次いでヌクレオチド配列の集合を出力データに変換することを伴う。
【００７９】
一部の実施形態では、核酸の集合は、例えば核酸の集合の５’末端及び３’末端に存在するプライマーを使用することによって、最初に増幅される。そして、増幅された核酸は、例えば次世代シークエンシング等、シークエンシングにさらされる場合がある。次世代シークエンシング技術は、概して技術で既知である。例えば、核酸は、Ｉｌｌｕｍｉｎａのシークエンシング方法を使用することによって配列される場合がある。特定のファイルに属する配列は、プライマー配列を位置合わせすることによって得ることができる。一部の実施形態では、方法はＮＧＳライブラリ準備を含む。核酸の集合が、データの異なる集合を符号化する核酸の異なる集合を含む混合物に存在するとき、関心のある核酸の集合は、関心のある核酸の集合に固有のプライマー対を使用することによって明確に増幅させることができ、このようにして関心のある核酸の集合に対応するデータのランダムアクセスを可能にする。次世代シークエンシングの単一のランでいくつかの圧縮ファイルを読み取り、復号する必要がある場合、核酸のその対応する集合のすべてはＰＣＲを通して増幅され、すべての対応するペアが使用される。
【００８０】
一部の実施形態では、方法は、ペアエンド次世代シークエンシング、及び単一のクラスタからの順方向リード及び逆方向リードがペアにされ、単一のリードにマージされ、不規則な長さを有するすべての新しいリードがフィルタにかけられるリードペア及びリードマージを含む。そして、プライマー配列に従って、すべてのリードは、圧縮ファイルごとにグループ化される場合がある。プライマーは、次いで削除される場合があり、ヌクレオチド配列は、０〜３１に及ぶ整数を含む複数の整数部分列に変換される、またはその後出力データに変換される２進列に直接的に変換されるかのどちらかである場合がある。
【００８１】
一部の実施形態では、方法は、インデックスを有する複数の整数部分列を得るために、複数の整数部分列のエラー訂正を適用することをさらに含む。例示的な一実施形態では、エラー訂正コーディングを適用するステップは、ｉ）複数のコンセンサス整数部分列を得るために、ＲＳコーディング文字列訂正を複数の整数部分列に適用すること、及びｉｉ）インデックスを有する複数の整数部分列を得るために、ＲＳコーディングブロック訂正を複数のコンセンサス整数部分列に適用することを含む。１種類の核酸が合成中に分子の多くコピーを有し、何度も配列されるであろうため、多くのリードが１つの核酸を表すことがあるであろう。高スループット合成とシークエンシングの両方の間にもたらされるエラーのため、これらのリードは変形を有する場合があるが、最初に設計された核酸と完全によく一致する正しいリードは、依然としてカウントよりも有利である。整数文字列のあらゆる場所での最高頻度に基づいた訂正を通して、同一のインデックスを共用するすべての整数文字列を訂正し、文字列訂正とブロック訂正との間のコンセンサス整数文字列にマージすることができる。
【００８２】
インデックスを有する複数の整数部分列からのインデックスは、次いで複数の整数のコア部分列を得るために削除されてよい。整数文字列は、次いで完全な整数文字列に連結され、次いで２進列に変換される場合がある。２進列は、次いで例えば圧縮ファイル等のファイルの中に書き込まれる場合がある。圧縮ファイルは、次いで例えばＬＺＭＡアルゴリズムを使用することによって解凍される場合がある。解凍されたファイルが多数のファイルに対応するデータを含む場合、解凍されたファイルは、多数のファイルを得るためにＴＡＲアルゴリズムによりさらに処理される（例えば、抽出される）。
【００８３】
一部の実施形態では、方法は、関心のある核酸の集合に記憶された出力データを取り出すために有用であり、関心のある核酸の集合は、混合物に存在するヌクレオチド配列の複数の集合のうちの１つであり、各集合は出力データの異なる集合を符号化し、３’末端及び５’末端にプライマーペアの異なる集合を有する。方法は、ａ）関心のある核酸の集合に対応するプライマーペアを使用し、核酸の集合を増幅させること、ｂ）増幅させた核酸の集合のヌクレオチド配列の集合を得ること、及びｃ）請求項４１〜請求項５３のいずれか１項に記載の方法に従って、ヌクレオチド配列の集合を出力データに変換すること、それによって出力データを得ることを含む。
【００８４】
一部の実施形態では、関心のある核酸の対応する２つ以上の集合に記憶された出力データの２つ以上の集合を取り出すための方法が提供され、関心のある核酸の集合は、混合物に存在する核酸の複数の集合の中にあり、各集合は、出力データの異なる集合を符号化し、３’末端及び５’末端にプライマーペアの異なる集合を有し、方法は、ａ）関心のある核酸の２つ以上の集合に対応するプライマーペアを使用し、関心のある核酸の２つ以上の集合を増幅させる（例えば、別々に増幅させるまたはともに増幅させる）こと、ｂ）増幅させた核酸の２つ以上の集合のヌクレオチド配列の２つ以上の集合を得ること、及びｃ）ヌクレオチド配列の２つ以上の集合を出力データの２つ以上の集合に別々に変換すること、それによって出力データの２つ以上の集合を得ることを含む。
【００８５】
５ビットトランスコーディングフレームワーク
本発明の方法は、２進列または整数文字列をヌクレオチド配列の集合に変換するための新規の５ビットトランスコーディングフレームワークを利用する。「５ビットトランスコーディングフレームワーク」は、以下の表１に従った変換を指す。概して、２進列からのあらゆる５個の継続ビットは、０〜３１に及ぶ整数、ひいては３個のヌクレオチド（つまり、３マー）として表されるであろう。例えば、４つの塩基（例えば、Ａ、Ｔ、Ｇ、及びＣ）、したがって２マー（つまり、ＮＮ）を有する核酸は、１６種類（例えば、ＡＡ、ＡＴ、ＡＧ、ＡＣ、ＴＡ、ＴＴ、ＴＧ、ＴＣ、ＧＡ、ＧＴ、ＧＧ、ＧＣ、ＣＡ、ＣＴ、ＣＧ、及びＣＣ）を有するべきである。変性した塩基Ｒ及びＹが２マーの後に連結され、３マー（ＮＮＲ／ＮＮＹ）が、０〜３１に及ぶ３２の整数とよく一致していた３２種類から成り、ＤＮＡ配列に変換中の２進列を作ると仮定する。
【００８６】
一部の実施形態では、ＲはＡ、Ｔ、Ｇ、及びＣのうちの任意の２つから選択され、一方Ｙは、Ａ、Ｔ、Ｇ、及びＣのうちの対応する他の２つから選択される。例えば、一部の実施形態では、ＲはＡ及びＧから選択され、一方ＹはＴ及びＣから選択される。一部の実施形態では、ＲはＡ及びＣから選択され、一方ＹはＴ及びＧから選択される。一部の実施形態では、ＲはＴ及びＧから選択され、一方ＹはＡ及びＣから選択される。一部の実施形態では、ＲはＴ及びＣから選択され、一方ＹはＡ及びＧから選択される。
【００８７】
Ｒ及びＹに対応するヌクレオチドの選択は、例えば所望のＧＣ含有量を維持する、及び／またはホモポリマーを回避するために、その前部の主成分に依存する場合がある。例えば、ＲがＡ及びＧから選択され、ＹがＣ及びＴから選択される方式においては、ＡまたはＧがＲのために選ばれるのかどうか、及びＣまたＴがＹのために選ばれるかどうかは、その前部の主成分（つまり、３マーの第２の塩基）次第である。一部の実施形態では、Ｒ及びＹは、第２の塩基及び第３の塩基が異なるように選ばれる。一部の実施形態では、Ｒ及びＹは、所望のＧＣバランスを維持するために選ばれる。規則に従う限り、Ｒ及びＹは無作為に選ぶことができる。このトランスコーディングフレームワークのコーディングの可能性は１．６７（つまり、３ナノテスラに対して５ビット）である。
【表１】
2020534633.tif 000003
【００８８】
表２は、例示的な５ビットトランスコーディングフレームワークを提供する。図２に示す特定の方式では、ＲはＡ及びＧから選択されるべきであり、一方ＹはＣ及びＴから選択されるべきである。同じ原理に従う他のトランスコーディングフレームワークも使用できることが理解されるべきである。
【表２】
2020534633.tif 000004
【００８９】
核酸の合成及び記憶
所望のヌクレオチド配列を含む核酸は、任意の核酸合成方法を使用し、合成することができる。一部の実施形態では、核酸は、化学合成により合成される。高スループットの核酸合成の方法は、参照によりその全体が本明細書に援用される、２００２年２月１７日に出願され、「ＣＯＭＢＩＮＡＴＯＲＩＡＬ  ＳＹＮＴＨＥＳＩＳ  ＯＮ  ＡＲＲＡＹＳ」と題する第ＷＯ０３０５２３８３号として公開された国際出願第ＷＯ２００２ＵＳ４０５８０号、及び２０１６年１２月に出版された、Ｍａｕｒｅｒ  ｅｔ．ａｌ．による「ＥＬＥＣＴＲＯＣＨＥＭＩＣＡＬＬＹ  ＧＥＮＥＲＡＴＥＤ  ＡＣＩＤ  ＡＮＤ  ＩＴＳ  ＣＯＮＴＡＩＮＭＥＮＴ  ＴＯ  １００  ＭＩＣＲＯＮ  ＲＥＡＣＴＩＯＮ  ＡＲＥＡＳ  ＦＯＲ  ＴＨＥ  ＰＲＯＤＵＣＴＩＯＮ  ＯＦ  ＤＮＡ  ＭＩＣＲＯＡＲＲＡＹＳ」と題する出版物に説明されている。
【００９０】
核酸は、いったん合成されると、多様な媒体に保管できる。一部の実施形態では、核酸は乾燥され（例えば、冷凍乾燥され）、バイアル内に保管される。一部の実施形態では、核酸は、例えばマイクロアレイ等の固体担体等、担体上で不動にされる。
【００９１】
コンピュータ可読記憶媒体及びシステム
また、本明細書に提供されるのは、１つ以上のプログラムを記憶する非一過性のコンピュータ可読記憶媒体であり、１つ以上のプログラムは、電子機器の１つ以上のプロセッサによる実行時に、電子機器に、本明細書に説明する方法のいずれかの１つ以上のステップを実施させる命令を含む。
【００９２】
一部の実施形態では、核酸ベースのデータストレージまたは核酸からのデータ取り出しを提供するためのシステムが提供され、システムは、１つ以上のプロセッサ、メモリ、及び１つ以上のプログラムを含み、１つ以上のプログラムは、メモリに記憶され、１つ以上のプロセッサにより実行されるように構成され、１つ以上のプログラムは、本明細書に説明する方法のいずれか１つの１つ以上のステップを実施するための命令を含む。
【００９３】
一部の実施形態では、核酸ベースのデータストレージまたは核酸からのデータ取り出しを提供するための電子機器が提供され、機器は、本明細書に説明する方法のいずれか１つを実施するための手段を含む。
【００９４】
例示的な実施形態
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、２進列を、非重複５ビット２進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。
【００９５】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、２進列を非重複５ビット２進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。
【００９６】
一部の実施形態では、複数の整数の初期部分列のそれぞれの長さは、選択した合成プラットフォームのオリゴ長、所望されるエラー許容範囲、入力データのサイズ、選択されたエラー訂正符号、またはその組み合わせに基づいて決定される。
【００９７】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、２進列を非重複５ビット２進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、インデックス情報を整数の複数の初期部分列のそれぞれに加えることをさらに含む。
【００９８】
一部の実施形態では、複数の整数の初期部分列のそれぞれに加えられたインデックス情報は、整数の数列を含み、整数の数列の長さは、入力データのサイズに基づく。
【００９９】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、２進列を非重複５ビット２進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、複数の整数の初期部分列のそれぞれにインデックス情報を加えることをさらに含む。ヌクレオチド符号化ステップは、インデックス情報を加えた後に、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることをさらに含む。
【０１００】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、２進列を、非重複５ビット２進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、インデックス情報を複数の整数の初期部分列のそれぞれに加えることをさらに含む。ヌクレオチド符号化ステップは、インデックス情報を加えた後、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることをさらに含む。冗長性データを、インデックスを有する複数の整数部分列に加えることは、空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数が、インデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで空の行列を充填することと、充填した行列に基づいて冗長性を有する複数の部分列を得ることを含む。
【０１０１】
一部の実施形態では、空の行列の列数は、選択した合成プラットフォームのオリゴ長、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される。
【０１０２】
一部の実施形態では、空の行列の行数は、選択した合成プラットフォームのオリゴ長、エラー訂正符号のタイプ、所定のエラー許容範囲値、インデックスを有する複数の整数部分列のサイズ、またはその組み合わせに基づいて決定される。
【０１０３】
一部の実施形態では、エラー訂正コーディングはリードソロモン（「ＲＳ」）コーディングである。
【０１０４】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。データ処理ステップは、２進列を、非重複５ビット２進列の数列に分割することを含む。ヌクレオチド符号化ステップは、整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、ヌクレオチド配列の集合を得るために５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することを含む。ヌクレオチド符号化ステップは、整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することをさらに含む。ヌクレオチド符号化ステップは、インデックスを有する複数の整数部分列を得るために、複数の整数の初期部分列のそれぞれにインデックス情報を加えることをさらに含む。ヌクレオチド符号化ステップは、インデックス情報を追加した後、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得ることをさらに含む。冗長性データを、インデックスを有する複数の整数部分列に加えることは、空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数がインデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって生成されたデータで空の行列を充填することと、充填した行列に基づいて冗長性を有する複数の部分列を得ることとを含む。エラー訂正コーディングを適用することにより生成されるデータは、ＲＳコーディングの文字列訂正及び／またはＲＳコーディングのブロック訂正を適用することによって生成される。
【０１０５】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することと、ｉｉ）２進列を非重複５ビット２進列の数列に分割することと、ｉｉｉ）整数の文字列を得るために、各５ビット２進列を０〜３１に及ぶ整数に変換し、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することと、ｉｖ）整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することと、ｖ）インデックスを有する複数の整数部分列を得るために、インデックス情報を、複数の整数の初期部分列のそれぞれに加えることと、ｖｉ）インデックス情報を加えた後、冗長性データを、インデックスを有する複数の整数部分列に加え、それによって冗長性を有する複数の整数部分列を得て、それによって核酸配列の集合を得ることとを含む。
【０１０６】
一部の実施形態では、入力データを核酸に記憶するための方法が提供され、方法は、ｉ）入力データを２進列に変換することと、ｉｉ）２進列を非重複５ビット２進列の数列に分割することと、ｉｉｉ）整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することと、ｉｖ）整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することと、ｖ）インデックスを有する複数の整数部分列を得るために、複数の整数の初期部分列のそれぞれにインデックス情報を加えることと、ｖｉ）インデックス情報を加えた後、冗長性データを、インデックスを有する複数の整数部分列に加えて、それによって冗長性を有する複数の整数部分列を得て、それによって核酸配列の集合を得ることと、ｖｉｉ）ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む。
【０１０７】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することと、ｉｉ）２進列を非重複５ビット２進列の数列に分割することと、ｉｉｉ）整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することと、ｉｖ）整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することと、ｖ）インデックスを有する複数の整数部分列を得るために、インデックス情報を、複数の整数の初期部分列のそれぞれに加えることと、ｖｉ）空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数が、インデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、ｖｉｉ）インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって（例えば、ＲＳコーディングの文字列訂正及び／またはＲＳコーディングのブロック訂正を適用することによって）生成されたデータで空の行列を充填することと、ｖｉｉ）充填した行列に基づいて冗長性を有する複数の部分列を得て、それによって核酸配列の集合を得ることを含む。
【０１０８】
一部の実施形態では、入力データを核酸に記憶するための方法が提供され、方法は、ｉ）入力データを２進列に変換することと、ｉｉ）２進列を、非重複５ビット２進列の数列に分割することと、ｉｉｉ）整数の文字列を得るために各５ビット２進列を０〜３１に及ぶ整数に変換し、５ビットトランスコーディングフレームワークを使用し、整数の文字列を変換することと、ｉｖ）整数の文字列を、所定の長さを有する複数の整数の初期部分列に分割することと、ｖ）インデックスを有する複数の整数部分列を得るために、インデックス情報を、複数の整数の初期部分列のそれぞれに加えることと、ｖｉ）空の行列を作成することであって、空の行列の列数が、インデックスを有する複数の整数部分列のサイズよりも大きく、空の行列の行数が、インデックスを有する複数の整数部分列のそれぞれの整数の数よりも大きい、作成することと、ｖｉｉ）インデックスを有する複数の整数部分列及びエラー訂正コーディングを適用することによって（例えば、ＲＳコーディングの文字列訂正及び／またはＲＳコーディングのブロック訂正を適用することによって）生成されたデータで空の行列を充填することと、ｖｉｉｉ）充填した行列に基づいて、冗長性を有する複数の部分列を得て、それによって核酸配列の集合を得ることと、ｘｉ）ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む。
【０１０９】
一部の実施形態では、核酸に記憶された出力データを取り出すための方法が提供され、方法は、ｉ）核酸の集合のヌクレオチド配列を得ることと、ｉｉ）ヌクレオチド配列の集合を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することと、ｉｉｉ）複数の整数部分列を２進列に変換することと、ｉｖ）２進列を出力データに変換して、それによって出力データを得ることとを含む。
【０１１０】
一部の実施形態では、核酸に記憶された出力データを取り出すための方法が提供され、方法は、ｉ）複数の配列リードを生成するために、核酸の集合を配列することと、ｉｉ）ヌクレオチド配列の集合を得るためにペアにすること、マージすること、及び／またはフィルタにかけることと、ｉｉｉ）ヌクレオチド配列の集合を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することと、ｉｖ）エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることと、ｖ）インデックスを有する複数の整数部分列を２進列に変換することと、ｖｉ）２進列を出力データに変換して、それによって出力データを得ることとを含む。
【０１１１】
一部の実施形態では、核酸に記憶された出力データを取り出すための方法が提供され、方法は、ｉ）複数の配列リードを生成するために核酸の集合を配列することと、ｉｉ）ヌクレオチド配列の集合を得るためにペアにすること、マージすること、及び／またはフィルタにかけることと、ｉｉｉ）ヌクレオチド配列の集合を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することと、ｉｖ）複数のコンセンサス整数部分列を得るために、ＲＳコーディング文字列訂正を複数の整数部分列に適用することと、ｖ）インデックスを有する複数の整数部分列を得るために、ＲＳコーディングブロック訂正を複数のコンセンサス整数部分列に適用することと、ｖｉ）インデックスを有する複数の整数部分列を２進列に変換することと、ｖｉｉ）２進列を出力データに変換して、それによって出力データを得ることとを含む。
【０１１２】
一部の実施形態では、核酸に記憶された出力データを取り出すための方法が提供され、方法は、ｉ）複数の配列リードを生成するために核酸の集合を配列することと、ｉｉ）ヌクレオチド配列の集合を得るためにペアにすること、マージすること、及び／またはフィルタにかけることと、ｉｉｉ）ヌクレオチド配列の集合を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することと、ｉｖ）複数のコンセンサス整数部分列を得るために、ＲＳコーディング文字列訂正を複数の整数部分列に適用することと、ｖ）インデックスを有する複数の整数部分列を得るために、ＲＳコーディングブロック訂正を複数のコンセンサス整数部分列に適用することと、ｖｉ）複数の整数のコア部分列を得るために、インデックスを有する複数の整数部分列からインデックスを削除することと、ｖｉｉ）整数のコア部分列を整数の文字列にマージすることと、ｖｉｉｉ）整数の文字列を２進列に変換することと、ｉｘ）２進列を出力データに変換して、それによって出力データを得ることを含む。
【０１１３】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。５ビットトランスコーディングフレームワークは、表２による。
【０１１４】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。５ビットトランスコーディングフレームワークは、表２による。Ｒ及びＹは、１）ＲまたはＹの直前のヌクレオチドとは異なること、及び／または２）ヌクレオチド配列の推定ＧＣ含有量に基づいて選ばれる。
【０１１５】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。入力データは圧縮ファイルに相当する。圧縮ファイルは、レンペルジフマルコフチェーンアルゴリズム（「ＬＺＭＡ」）を使用し、圧縮される。
【０１１６】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。入力データは２つ以上のファイルに相当する。データ処理ステップは、２つ以上のファイルを１つのＴＡＲファイルにグループ化することをさらに含む。ＴＡＲファイルは、レンペルジフマルコフチェーンアルゴリズム（「ＬＺＭＡ」）を使用し、さらに圧縮される。
【０１１７】
一部の実施形態では、入力データをヌクレオチド配列の集合に変換するためのコンピュータ実装方法が提供され、方法は、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む。ヌクレオチド符号化ステップは、プライマー配列のペアを、ヌクレオチド配列の集合の各ヌクレオチド配列の５’末端及び３’末端に付加することをさらに含む。
【０１１８】
一部の実施形態では、ａ）入力データをヌクレオチド配列の集合に変換することであって、変換することが、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、ｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む、変換することと、ｂ）ヌクレオチド配列の集合を含む核酸の集合を合成することとを含む、入力データを核酸に記憶するための方法が提供される。方法は、プライマーのペアを、合成した核酸の集合に付けることをさらに含む。
【０１１９】
一部の実施形態では、ａ）本明細書に説明する方法のいずれかに従って、入力データの２つ以上の集合を対応するヌクレオチド配列の２つ以上の集合に別々に変換することと、ｂ）プライマー配列のペアを、ヌクレオチド配列の２つ以上の集合の各集合の５’末端及び３’末端に別々に付加することであって、対応するヌクレオチド配列の２つ以上の集合のためのプライマーのペアが互いに異なる、付加することと、ｃ）それぞれ対応するヌクレオチド配列の２つ以上の集合を含む核酸の２つ以上の集合を合成することとを含む、入力データの２つ以上の集合を核酸に記憶するための方法が提供される。
【０１２０】
一部の実施形態では、ａ）本明細書に説明する方法のいずれかに従って、入力データの２つ以上の集合を対応するヌクレオチド配列の２つ以上の集合に別々に変換することと、ｂ）プライマー配列のペアを、ヌクレオチド配列の２つ以上の集合の各集合の５’末端及び３’末端に別々に付加することであって、対応するヌクレオチド配列の２つ以上の集合のためのプライマーのペアが互いに異なる、付加することと、ｃ）それぞれ対応するヌクレオチド配列の２つ以上の集合を含む核酸の２つ以上の集合を合成することとを含む、入力データの２つ以上の集合を核酸に記憶するための方法が提供される。プライマーの各ペアは、対応するヌクレオチド配列またはその相補配列の２つ以上の集合のうちの任意の１つとは異なる配列を有する。
【０１２１】
一部の実施形態では、合成した核酸の集合は、３０％〜７０％に及ぶＧＣ含有量を有する。
【０１２２】
一部の実施形態では、ａ）入力データをヌクレオチド配列の集合に変換することであって、変換することが、ｉ）入力データを２進列に変換することを含むデータ処理ステップ、及びｉｉ）ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することを含むヌクレオチド符号化ステップを含む、変換することと、ヌクレオチド配列の集合を含む核酸の集合を合成することを含む、入力データを核酸に記憶するための方法が提供される。方法は、合成した核酸の集合を保管することをさらに含む。
【０１２３】
一部の実施形態では、合成した核酸の集合は、乾燥により保管される。一部の実施形態では、合成した核酸は、凍結乾燥により保管される。
【０１２４】
一部の実施形態では、合成した核酸の集合は、マイクロアレイである場合がある担体上で不動にされる。
【０１２５】
一部の実施形態では、ａ）核酸の集合のヌクレオチド配列の集合を得ることと、ｂ）ヌクレオチド配列の集合を出力データに変換することであって、変換することが、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換して、それによって出力データを得ることを含むデータ処理ステップを含む、変換することを含む、核酸に記憶された出力データを取り出すための方法が提供される。方法は、出力データを取り出す前に、核酸の集合を増幅させることをさらに含む。
【０１２６】
一部の実施形態では、ａ）核酸の集合のヌクレオチド配列の集合を得ることと、ｂ）ヌクレオチド配列の集合を出力データに変換することであって、変換することが、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換して、それによって出力データを得ることを含むデータ処理ステップを含む、変換することを含む、核酸に記憶された出力データを取り出すための方法が提供される。方法は、複数の配列リードを生成するために、核酸の集合を配列することをさらに含む。複数の配列リードは、ヌクレオチド配列の集合を得るためにペアにされ、マージされ、フィルタにかけられる。
【０１２７】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することを含む。
【０１２８】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することを含む。ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。
【０１２９】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することを含む。ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。エラー訂正コーディングを適用するステップは、ｉ）複数のコンセンサス整数部分列を得るために、ＲＳコーディング文字列訂正を複数の整数部分列に適用することと、ｉｉ）インデックスを有する複数の整数部分列を得るために、ＲＳコーディングブロック訂正を複数のコンセンサス整数部分列に適用することを含む。
【０１３０】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列の集合を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することを含む。ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。ヌクレオチド復号ステップは、複数の整数のコア部分列を得るために、インデックスを有する複数の整数部分列からインデックスを削除することをさらに含む。
【０１３１】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。出力データは圧縮ファイルに記憶される。データ処理ステップは、例えばＬＺＭＡアルゴリズムによって圧縮ファイルを解凍することをさらに含む。
【０１３２】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。出力データは複数のファイルに相当する。方法は、ＴＡＲアルゴリズムによって出力データから複数のファイルを抽出することをさらに含む。
【０１３３】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。ヌクレオチド復号ステップは、ヌクレオチド配列の集合を、０〜３１に及ぶ整数を含む複数の整数部分列に変換することを含む。ヌクレオチド復号ステップは、エラー訂正コーディングを複数の整数部分列に適用して、それによってインデックスを有する複数の整数部分列を得ることをさらに含む。ヌクレオチド復号ステップは、複数の整数のコア部分列を得るために、インデックスを有する複数の整数部分列からインデックスを削除することをさらに含む。ヌクレオチド復号ステップは、整数のコア部分列を整数の文字列にマージし、整数の文字列を２進列に変換することをさらに含む。
【０１３４】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。５ビットトランスコーディングフレームワークは表２による。
【０１３５】
一部の実施形態では、ｉ）５ビットトランスコーディングフレームワークを使用し、ヌクレオチド配列の集合を２進列に変換することを含むヌクレオチド復号ステップ、及びｉｉ）２進列を出力データに変換することを含むデータ処理ステップを含む、ヌクレオチド配列の集合を出力データに変換するためのコンピュータ実装方法が提供される。核酸の集合は、３’末端及び５’末端にプライマー配列を含み、方法は、ヌクレオチド復号ステップの前にプライマー配列を削除することを含む。
【０１３６】
一部の実施形態では、ＤＮＡベースのデータストレージを提供するためのコンピュータ対応の方法が提供され、方法は、デジタルファイルを２進列に変換することと、整数の文字列を入手するために５ビットトランスコーディングフレームワークを使用し、２進列を変換することと、整数の文字列から、複数の整数の部分列を入手することと、複数の整数の部分列をＤＮＡ合成のためのＤＮＡオリゴの複数の表現に変換することを含む。
【０１３７】
一部の実施形態では、整数の文字列を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換することは、２進列を非重複５ビット２進列の数列に分割することと、整数の文字列を得るために、各５ビット２進列を０〜３１に及ぶ整数に変換することを含む。一部の実施形態では、整数の文字列は、所定の長さを有する複数の整数の初期部分列にさらに分割される。一部の実施形態では、変換される複数の整数の部分列を得ることは、インデックス情報を、初期の複数の整数の部分列の各部分列に加えることと、インデックス情報を加えた後、複数の整数の部分列を得るために、冗長性データを初期の複数の整数の部分列に加えることを含む。一部の実施形態では、初期の複数の部分列の各部分列に加えられたインデックス情報は整数の文字列を含み、インデックス情報に対応する整数の文字列の長さは、デジタルファイルのサイズに基づく。
【０１３８】
一部の実施形態では、方法は、冗長性データを複数の整数の部分列に加えることを含み、これは、例えば、初期の複数の整数の部分列の部分集合を得ることと、空の行列を選択することであって、空の行列の列数が、部分集合の部分列の数よりも大きく、空の行列の行数が、部分集合の各部分列の整数の数よりも大きい、選択することと、初期の複数の整数の部分列の部分集合及びエラー訂正符号に対応するデータで空の行列を充填することと、充填した行列に基づいて複数の整数の部分列を得ることとを含む場合がある。一部の実施形態では、空の行列の列数は、エラー訂正符号のタイプ、所定のエラー許容範囲値、部分集合のサイズ、またはその組み合わせに基づいて選択される。一部の実施形態では、空の行列の行数は、エラー訂正符号のタイプ、所定のエラー許容範囲値、部分集合のサイズ、またはその組み合わせに基づいて選択される。
【０１３９】
一部の実施形態では、エラー訂正符号はリードソロモン（「ＲＳ」）符号である。一部の実施形態では、複数の整数の部分列をＤＮＡオリゴの複数の表現に変換することは、複数の整数の部分列の整数を３個のヌクレオチドの表現に変換することを含み、３個のヌクレオチドの第１は、Ａ、Ｔ、Ｇ、及びＣから選択され、３個のヌクレオチドの第２は、Ａ、Ｔ、Ｇ、及びＣから選択され、３個のヌクレオチドの第３は、２つのオプションのうちの１つから選択される。
【０１４０】
一部の実施形態では、デジタルファイルは、１つ以上のファイルまたはディレクトリのグループに対応する圧縮ファイルである。一部の実施形態では、デジタルファイルは、レンペルジフマルコフチェーンアルゴリズムを使用し、圧縮された１つ以上のファイルまたはディレクトリのグループに対応するＬＺＭＡファイルを含む。
【０１４１】
上述した実施形態のいずれか１つに係る一部の実施形態では、方法は、ＤＮＡオリゴの複数の表現の各オリゴ表現に、プライマーのペアを表すデータを加えること、及びプライマーのペアを表す情報を加えた後、ＤＮＡオリゴの複数の表現に基づいたＤＮＡ合成の実行を生じさせることをさらに含む。
【０１４２】
一部の実施形態では、方法は、第２のデジタルファイルを得ることと、第２のデジタルファイルに基づいてＤＮＡオリゴの第２の複数の表現を得ることと、プライマーの第２のペアを表すデータを、ＤＮＡオリゴの第２の複数の表現の各オリゴ表現に加えることであって、プライマーの第２のペアがプライマーの第１のペアとは異なる、加えることと、ＤＮＡオリゴの複数の表現及びＤＮＡオリゴの第２の複数の表現に基づいてＤＮＡ合成を実行することをさらに含む。
【０１４３】
一部の実施形態では、ＤＮＡベースのデータ取り出しを提供するためのコンピュータ対応の方法が提供され、方法は、デジタルファイルに対応する複数のリードを得ることと、複数のリードに基づいて、複数の整数の部分列を得ることと、複数の整数の部分列を整数の文字列に変換することと、５ビットフレームワークを使用し、整数の文字列を２進列に変換することと、２進列に基づいてデジタルファイルを得ることとを含む。一部の実施形態では、デジタルファイルに対応する複数のリードを得ることは、デジタルファイルに事前に関連付けられた（ｐｒｅ−ａｓｓｏｃｉａｔｅｄ）プライマーを識別することを含む。一部の実施形態では、複数の整数の部分列を得ることは、複数のリードに基づいて頻度ベースのエラー訂正を実行することを含む。一部の実施形態では、５ビットトランスコーディングフレームワークを使用し、整数の文字列を２進列に変換することは、整数の文字列の各整数を５ビット２進数に変換することを含む。
【０１４４】
一部の実施形態では、１つ以上のプログラムを記憶する非一過性コンピュータ可読記憶媒体が提供され、１つ以上のプログラムは、電子機器の１つ以上のプロセッサによる実行時に、電子機器に、デジタルファイルを２進列に変換させる、整数の文字列を得るために５ビットトランスコーディングフレームワークを使用し、２進列を変換させる、整数の文字列から、複数の整数の部分列を得させ、複数の整数の部分列をＤＮＡ合成のためのＤＮＡオリゴの複数の表現に変換させる命令を含む。
【０１４５】
一部の実施形態では、ＤＮＡベースのデータストレージを提供するためのシステムが提供され、システムは、１つ以上のプロセッサ、メモリ、及び１つ以上のプログラムを含み、１つ以上のプログラムは、メモリに記憶され、１つ以上のプロセッサにより実行されるように構成され、１つ以上のプログラムは、デジタルファイルを２進列に変換すること、整数の文字列を得るために、５ビットトランスコーディングフレームワークを使用し、２進列を変換すること、整数の文字列から、複数の整数の部分列を得ること、及び複数の整数の部分列をＤＮＡオリゴの複数の表現に変換することのための命令を含む。
【０１４６】
一部の実施形態では、１つ以上のプログラムを記憶する非一過性コンピュータ可読記憶媒体が提供され、１つ以上のプログラムは、電子機器の１つ以上のプロセッサによる実行時に、電子機器に、デジタルファイルに対応する複数のリードを得させ、複数のリードに基づいて、複数の整数の部分列を得させ、複数の整数の部分列を整数の文字列に変換させ、５ビットフレームワークを使用し、整数の文字列を２進列に変換させ、２進列に基づいてデジタルファイルを得させる命令を含む。
【０１４７】
一部の実施形態では、ＤＮＡベースのデータストレージを提供するためのシステムが提供され、システムは、１つ以上のプロセッサ、メモリ、及び１つ以上のプログラムを含み、１つ以上のプログラムは、メモリに記憶され、１つ以上のプロセッサにより実行されるように構成され、１つ以上のプログラムは、デジタルファイルに対応する複数のリードを得ること、複数のリードに基づいて、複数の整数の部分列を得ること、複数の整数の部分列を整数の文字列に変換すること、５ビットフレームワークを使用し、整数の文字列を２進列に変換すること、及び２進列に基づいてデジタルファイルを得ることのための命令を含む。
【０１４８】
例示的な実施態様によれば、方法の異なるステップは、１つまたは複数のコンピュータソフトウェアプログラムにより実装され、このソフトウェアプログラムは、本開示に係るリレーモジュールのデータプロセッサにより実行されるように設計され、本方法の異なるステップの実行を制御するように設計されるソフトウェア命令を含む。
【０１４９】
その結果として、本開示の態様は、コンピュータによってまたはデータプロセッサによって実行されやすいプログラムにも関し、このプログラムは、上記にここに言及した方法のステップの実行を命令するための命令を含む。
【０１５０】
このプログラムは、なんであれ任意のプログラミング言語を使用し、ソースコード、オブジェクトコード、または例えば、部分的にコンパイルされた形でまたは任意の他の所望の形で等、ソースコードとオブジェクトコードとの中間であるコードの形をとる場合がある。
【０１５１】
また、本開示は、データプロセッサにより読み取り可能であり、上記にここに言及したプログラムの命令を含む情報媒体にも関する。
【０１５２】
情報媒体は、プログラムを記憶できる任意のエンティティまたはデバイスである場合がある。例えば、媒体は、例えば（「コンパクトディスク―読み取り専用メモリ」を表す）ＣＤ−ＲＯＭ、もしくは超小型電子回路ＲＯＭ等、（「読み取り専用メモリ」を表す）ＲＯＭ、または再び例えばフロッピー（登録商標）ディスクもしくはハードディスクドライブ等の磁気記録手段等の記憶手段を含む場合がある。
【０１５３】
さらに、情報媒体は、電気ケーブルもしくは光ケーブルを通して、無線によって、または他の手段によって伝達できる電気信号又は光信号等の伝送可能なキャリヤである場合がある。プログラムは、特別にインターネットタイプのネットワークにダウンロードされる場合がある。
【０１５４】
代わりに、情報媒体は、プログラムがその中に組み込まれる集積回路である場合があり、回路は、問題の方法を実行する、または問題の方法の実行で使用されるように適応される。
【０１５５】
一実施形態によれば、本開示の実施形態は、ソフトウェア構成要素及び／またはハードウェア構成要素を用いて実施される。この観点から、用語「モジュール」は、本書においてソフトウェア構成要素とハードウェア構成要素の両方に、またはハードウェア構成要素及びソフトウェア構成要素の集合に対応する場合がある。
【０１５６】
ソフトウェア構成要素は、１つ以上のコンピュータプログラム、プログラムの１つ以上のサブプログラム、またはより一般的には、関係するモジュールについて以下にここに記述されることに従って機能もしくは一連の機能を実装できるプログラムもしくはソフトウェアプログラムの任意の要素に相当する。１つの係るソフトウェア構成要素は、物理的なエンティティ（端末、サーバ等）のデータプロセッサにより実行され、この物理的なエンティティのハードウェアリソース（メモリ、記録媒体、通信バス、入出力電子ボード、ユーザーインタフェース等）にアクセスできる。
【０１５７】
同様に、ハードウェア構成要素は、関係するモジュールについて以下にここに記述されることに従って機能もしくは一連の機能を実装できるハードウェアユニットの任意の要素に相当する。ハードウェア構成要素は、プログラム可能なハードウェア構成要素、または例えば集積回路、スマートカード、メモリカード、ファームウェア等を実行するための電子ボード等、ソフトウェアの実行用の集積回路付きの構成要素であってよい。変形では、ハードウェア構成要素は、中央演算処理装置、及び／またはマイクロプロセッサ、及び／または特定用途向け集積回路（ＡＳＩＣ）、及び／または特定用途向け命令セットプロセッサ（ＡＳＩＰ）、及び／またはグラフィックスプロセッシングユニット（ＧＰＩ）、及び／またはフィジックスプロセッシングユニット（ＰＰＵ）、及び／またはデジタルシグナルプロセッサ（ＤＳＰ）、及び／または画像処理プロセッサ、及び／またはコプロセッサ、及び／または浮動小数点ユニット、及び／またはネットワークプロセッサ、及び／または音声プロセッサ、及び／またはマルチコアプロセッサ等の集積回路であるプロセッサを含む。さらに、ハードウェア構成要素は、（例えば、メモリユニット及びファームウェアを含む）ベースバンドプロセッサ及び／または無線信号を受信もしくは送信する（アンテナを含む場合がある）無線電子回路を含む場合もある。一実施形態では、ハードウェア構成要素は、例えばＩＳＯ／ＩＥＣ  １８０９２／ＥＣＭＡ−３４０、ＩＳＯ／ＩＥＣ  ２１４８１／ＥＣＭＡ−３５２、ＧＳＭＡ、ＳｔｏＬＰａＮ、ＥＴＳＩ／ＳＣＰ（Ｓｍａｒｔ  Ｃａｒｄ  Ｐｌａｔｆｏｒｍ）、ＧｌｏｂａｌＰｌａｔｆｏｒｍ（つまり、セキュア素子）等の１つ以上の規格に準拠している。変形では、ハードウェア構成要素は無線自動識別（ＲＦＩＤ）タグである。一実施形態では、ハードウェア構成要素は、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信、及び／またはＷｉ−ｆｉ通信、及び／またはＺｉｇｂｅｅ（登録種表）通信、及び／またはＵＳＢ通信、及び／またはＦｉｒｅｗｉｒｅ通信、及び／または（近距離用）ＮＦＣ通信を可能にする回路を含む。
【０１５８】
本開示で要素／値を得るステップは、電子機器のメモリユニットの係る要素／値を読み取るステップ、または通信手段を介して別の電子機器から係る要素／値を受け取るステップのどちらかとして見なすことができることに留意されたい。
【０１５９】
例示的なプロセス
図１は、ＤＮＡベースのデータストレージ及びデータ取り出しを提供するための例示的なプロセスを示す。特に、例示的なステップ１０２〜１１０は、ストレージのためにデジタルデータを符号化することを対象とし、例示的なステップ１１２〜１２２は、取り出しのために記憶されている情報を復号することを対象とする。図１の例示的なステップは、図２〜図５に関してさらに詳細に以下に説明する。
【０１６０】
１．符号化
ステップ１０２（「データ圧縮」）で、１つ以上のファイル及び／またはディレクトリは、単一のファイルに入れられ、次いで圧縮ファイルに圧縮される。一部の例では、ファイル及び／またはディレクトリは、ＴＡＲファイル（例えば、Ｆｉｌｅ．ｔａｒ）に入れられ、ＴＡＲファイルが次いで、レンペルジフマルコフチェーンアルゴリズム（例えば、ＬＺＭＡアルゴリズム）を使用し、ＬＺＭＡファイル（例えば、Ｆｉｌｅ．ｔａｒ．Ｉｚｍａ）に圧縮される。一部の例では、１つのＬＺＭＡファイルは、データ取り出し（例えば、復号中）のための単一の分割不可ユニットとして動作する。したがって、多数のファイル及びディレクトリがともに記憶されることを意図するが、無作為にかつ無関係に取り出される場合、ファイル及びディレクトリは、このステップで多数のＴＡＲファイルにグループ化され、多数の対応するＬＺＭＡファイルに圧縮される必要がある。
【０１６１】
ステップ１０４で、１回目のデータトランスコーディングが実施される。最初に、各ＬＺＭＡファイルが２進列に変換される。一例として、図２を参照すると、「Ｆｉｌｅ．ｔａｒ．ｌｚｍａ」という名前のファイルが２進列に変換される。２進列は、次いで整数文字列Ｂ（「０；１０；２５；．．．；４；８；３１：」に変換される。示されている例では、２進列から整数文字列Ｂへの変換は、５ビットトランスコーディングフレームワークを使用し、達成される。図示されるように、２進列は、例えば「０００００」及び「０１０１０」等の非重複５ビット２進列の数列に分割される。５ビット２進列のそれぞれは、次いで整数に変換されて整数文字列Ｂを形成する。当業者は、この５ビットトランスコーディングフレームワークの下では、整数文字列内の各整数が（「０００００」に対応する）０〜（「１１１１１」に対応する）３１に及ぶことを認識するであろう。
【０１６２】
図２に示すように、整数文字列Ｂは、次いで長さ固定スライディングウィンドウを使用し、複数の非重複整数部分列（例えば、［Ａ１、Ａ２、．．．、Ａｎ］）に分割される。図２の示されている例では、整数部分列（例えば、Ａ１）のそれぞれは、２２の整数から成る。最後に、インデックス情報が、各部分列の始まりに付加されてインデックス（例えば、［Ｂ１、Ｂ２、．．．、Ｂｎ］）を有する新しい複数の整数部分列を形成する。示されている例では、インデックス情報は３つの整数の数列を含み、そのそれぞれは０〜３１に及ぶ。インデックス列の長さは、例えば圧縮ファイルのサイズ及びＤＮＡ合成のスループット等の多様な要因に基づいて選択される場合がある。
【０１６３】
図１に戻ると、ステップ１０６で、インデックス（例えば、図２に示す［Ｂ１、Ｂ２、．．．、Ｂｎ］）を有する複数の整数部分列は、インデックス及び冗長性（例えば、図４に示す［Ｃ１、Ｃ２、．．．、Ｃｍ］）を有する複数の整数部分列にさらに変換される。例えばリードソロモン（ＲＳ）コーディング、ファウンテンコーディング、及びハミングコーディング等の多様なエラー訂正コーディングアルゴリズムが、冗長性データを記憶されるデジタルデータに加えるために使用できる。好ましい実施形態では、ＲＳコーディングが、そのロバストネス及び実装の容易さのために使用される。
【０１６４】
図３Ａ〜図３Ｄは、［Ｃ１、Ｃ２、．．．、Ｃｍ］を得るために、インデックス及び冗長性を（例えば、複数の整数部分列［Ａ１、Ａ２、．．．、Ａｎ］により表される）デジタルコンテンツに加えるための例示的なプロセスを示す。特に図３Ａ〜図３Ｄは、［Ｃ１、Ｃ２、．．．、Ｃ３１］を形成するために、ＲＳコーディングを使用し、最初の５つの整数部分列（つまり、Ａ１、Ａ２、Ａ３、Ａ４、及びＡ５）をどのように処理できるのかを示す。整数部分列の残り（つまり、Ａ６、．．．、Ａｎ）については、あらゆる５つの継続的な整数部分列が、図３Ａ〜図３Ｄに示すのと同様に１つのユニットとして処理される。この例では、５つの整数部分列は、ブロック訂正のパリティが２６（つまり、３１−５＝２６）となり、したがって３１の中の１３（つまり、２６／２＝１３）のオリゴが失われるが、ＲＳコーディングの原理に従って回復されるであろうように、ともに２９ｘ３１の行列を介して処理される。
【０１６５】
図３Ａを参照すると、２９ｘ３１の空の行列が作成される。［Ａ１、Ａ２、．．．、Ａｎ］からの最初の５つの整数文字列Ａ１、Ａ２、Ａ３、Ａ４、Ａ５は、図示するように行列の中に充填されて、図示するように２２ｘ５の部分行列を占有する。この領域が、コアデータブロックである。
【０１６６】
図３Ｂを参照すると、０〜３１に及ぶ３つの整数から成るインデックス列が、一意のインデックスとして各列の始まりに付加される。インデックス文字列は、付加の前にソートできる。図示されるように、インデックスは、例えば０−０−０、０−０−１、０−０−２、．．．、０−０−３１、０−１−３１、．．．等、昇順でソートされ、割り当てられた。インデックスが付けられた整数文字列は、図３Ｂで、それぞれＢ１、Ｂ２、Ｂ３、Ｂ４、及びＢ５と名前を付けられる。
【０１６７】
図３Ｃを参照すると、ＲＳコーディングが、コアデータブロックにより占有される各行の空白の領域を行ごとに充填するために使用される。このステップが「ブロック訂正」と呼ばれ、合成及びシークエンシング及び長期記憶の退化の間の、例えば欠けているオリゴ及び（挿入及び削除を含む）インデルを処理するのに役立つ。
【０１６８】
図３Ｄを参照すると、ＲＳコーディングが、行列全体の各列の空白の領域を列ごとに充填するために使用される。このステップが「文字列訂正」と呼ばれ、合成、シークエンシング、及び長期記憶中に生じる、例えば点突然変異を訂正するのに役立つ。図３Ｄに示すように、行列はいま３１の整数文字列［Ｃ１、Ｃ２、．．．、Ｃ３１］を含んでいる。言い換えると、ブロック訂正及び文字列訂正後、５つの整数部分列Ａ１〜Ａ５は、３１の整数部分列Ｃ１〜Ｃ３１に変換される。さらに、Ａ１〜Ａ５のそれぞれは２２の整数を含む。一方、Ｃ１〜Ｃ３１のそれぞれは（インデックスの３つの余分な整数、及びエラー訂正のためのＲＳコーディングのパリティの４つの余分な整数を含む）２９の整数を含む。図３Ａ〜図３Ｄに示す多様な寸法は例示的にすぎないことを理解されたい。インデックス文字列の長さ（図３Ａ〜図３Ｄでは３）、行列のサイズ（例えば、図３Ａ〜図３Ｄでは２９ｘ３１）、及びユニットとして処理される整数文字列数（例えば、図３Ａ〜図３Ｄでは５）は、例えば使用されるエラーコーディングのタイプ、所望されるエラー許容範囲、及びＤＮＡ合成プラットフォームの特徴等のいくつかの要因に基づいて選択される場合がある。
【０１６９】
図４に示すように、図３Ａ〜図３Ｄに関して説明する技術に従って、ＲＳコーディングの１回目の文字列訂正及びＲＳコーディングの１回目のブロック訂正を通して、インデックス［Ｂ１、Ｂ２、．．．、Ｂｎ］）を有する複数の整数部分列は、冗長性［Ｃ１、Ｃ２、．．．、Ｃｍ］を有する複数の整数部分列に変換され、ｍはｎよりも大きい。さらに、整数部分列［Ｃ１、Ｃ２、．．．、Ｃｍ］の各整数は０〜３１に及ぶ。
【０１７０】
図３Ａ〜図３Ｄの示されている例では、例えばＡ１等の初期整数部分列の長さ（示されている例では２２）は、いくつかの要因に基づいて計算される。具体的には、（示される例ではＬ、２９として示される）インデックス及び冗長性を有する整数文字列の長さは、合成プラットフォームのオリゴ長により計算される。（示される例ではＸ、４として示される）文字列訂正とブロック訂正の両方のパリティは、オリゴの合成エラーレート、使用されるエラー訂正符号、及び所望されるエラー許容範囲により決定される。（示される例では、Ｙ、３として示される）インデックス長は、総符号化データサイズにより決定される。したがって、（Ｚとして示される）初期整数文字列の長さは、Ｚ＝Ｌ−Ｘ−Ｙである。
【０１７１】
図１に戻ると、ステップ１０８で、冗長性（例えば、［Ｃ１、Ｃ２、．．．、Ｃｍ］）を有する整数文字列のリストを、複数のＤＮＡオリゴの表現（例えば、［Ｄ１、Ｄ２、．．．、Ｄｍ］）に変形するために、２回目のトランスコーディングが実施される。ＤＮＡオリゴの各表現は、合成のために４つの塩基Ａ、Ｔ、Ｇ、及びＣを含む。特に「５ビットトランスコーディングフレームワーク」を再び使用できる。ここでは、整数文字列［Ｃ１、Ｃ２、．．．、Ｃｍ］の各整数は０〜３１に及び、したがって３２種類の３個のヌクレオチド（例えば、ＮがＡ、Ｔ、Ｇ、Ｃを表し、ＹがＣ及びＴを表し、ＲがＡ及びＧを表す、ＮＮＹ及びＮＮＲを含む３マー）の１つに一意にマッピングできる。例えば、図５に示すように、整数６は、５ビット２進列「００１１０」に相当し、特定の戦略下で「ＡＧＲ」に変換できる。一部の例では、５ビットトランスコーディングフレームワークは、中間のステップ（例えば、最初に整数を２進列に変換すること）なしに、整数とＤＮＡオリゴの表現との間の直接的な変換を提供できる。
【０１７２】
したがって、各整数部分列（例えば、Ｃ１）の２９の整数のそれぞれは、３個のヌクレオチドにマッピングできる。［Ｃ１、Ｃ２、．．．、Ｃｍ］のすべてが変換された後、ＹはＣまたはＴで置換される。一方、Ｒは、ＤＮＡ合成の前にＡまたはＧで置換される。これは、第３の塩基が、３マーの第２の塩基とは異なり、３つの継続して同一の塩基（例えば、ＡＡＡ、ＧＧＧ、ＴＴＴ、ＣＣＣ）を回避することを確めるために行われる。さらに、各オリゴのＧＣ割合は、Ｙ及びＲの選択により３０％〜７０％に限定されるべきである。置換ステップは、オリゴ合成により生じるエラーを削減するだけではなく、オリゴ合成の訂正率の改善にとっても重要である。
【０１７３】
ＲＳコーディングの原則によれば、許容エラーは、各オリゴの２つの（つまり、文字列訂正のパリティ、４の半分）の突然変異、及び図３Ａ〜図３Ｄに示す例示的な状況における同じ行列からの３１オリゴのうちの１３（つまり、ブロック訂正のパリティ、２６の半分）の（完全に欠けているオリゴまたはインデルを有するオリゴを含む）欠けているオリゴを含む場合がある。
【０１７４】
図１を参照すると、ステップ１１０で、プライマーペアが付加され、ＤＮＡ合成が実行される。一部の例では、単一の圧縮ファイル（例えば、図４のＦｉｌｅ．ｔａｒ．ｌｚｍａ）が複数のＤＮＡオリゴの表現（例えば、図４の［Ｄ１、Ｄ２、．．．、Ｄｎ］）に変換され、プライマー配列の同じペアの表現が、圧縮ファイルに対応する各オリゴの２つの末端に加えられる。一度に記憶され、合成されるが、後続の読み取り及び復号の間にランダムにアクセス可能である必要がある多数の圧縮ファイルの場合、直交性プライマー（ｏｒｔｈｏｇｏｎａｌ  ｐｒｉｍｅｒｓ）の一意のペアが、圧縮ファイルごとに選択され、各圧縮ファイルと関連付けられる。例えば、一度に記憶され、合成されるが、後続の読み取り及び復号の間にランダムにアクセス可能である必要がある３つの圧縮ファイルがある場合、次いでそれぞれ３つの圧縮ファイルと関連付けられるために直交性プライマーの３つの一意のペアが選択される。各圧縮ファイルのために、選択されたプライマーペアが、圧縮ファイルに対応する複数のオリゴのうちの各オリゴに付加される。次いで、多数の圧縮ファイルに対応するすべてのオリゴが、記憶媒体として一度にプールされ、合成されるであろう。
【０１７５】
選択したプライマーペアに対しては複数の基準を使用できる。例えば、プライマーペアは、ホモ二量体、ヘテロ二量体、ヘアピン構造を回避し、十分な選択性を有する（例えば、符号化核酸配列に対する結合部位を有さない）ように選ばれる場合がある。一部の例では、多重化ＰＣＲプライマー設計基準が使用される。
【０１７６】
２．復号
復号手順は、本質的に符号化手順の逆のプロセスである。図１を参照すると、ステップ１１２で、プライマーのペアが、ＰＣＲを実行して、対応する圧縮ファイル（例えば、図４のＦｉｌｅ．ｔａｒ．ｌｚｍａ）のオリゴ（例えば、図４の［Ｄ１、Ｄ２、．．．、Ｄｎ］）のリストを増幅させるために使用される。ＮＧＳの単一のランで多数の圧縮ファイルを読み取り、復号する必要がある場合、その対応するオリゴのリストのすべては、対応するプライマーのペアを使用し、ＰＣＲを通して増幅される必要がある。このステップは、「ＮＧＳライブラリ準備」とも呼ばれる。
【０１７７】
ステップ１１４で、ペアエンド次世代シークエンシング並びにリードペアリング及びマージが（例えば、Ｉｌｌｕｍｉｎａシークエンシングシステムにより）実行される。具体的には、同じクラスタの順方向リード及び逆方向リードがペアにされ、単一のリードにマージされ、不規則な長さを有するすべての新規リードがフィルタにかけられる（例えば、インデルを有するリード）。さらに、プライマー配列に従って、すべてのリードを圧縮ファイルごとにグループ化できる。後続のステップで、同じ圧縮ファイルに対応するリード（つまり、同じプライマーを共用するリード）は、ともに解析されるであろう。
【０１７８】
ステップ１１６で、逆方向ＲＳコーディングが実行される。一部の例では、２９ｘ３１のゼロ行列であるが、空ではない行列が利用されるであろう。具体的には、単一の圧縮ファイルからの各リードは、２つの末端でＰＣＲプライマーを削除されており、次いで突然変異に対するエラー訂正を行う目的で、ＲＳコーディングの文字列訂正を通して整数部分列に変換される。１種類のオリゴが合成中に分子の多くのコピーを有し、何度も配列されるであろうため、多くのリードが１つのオリゴから生じるであろう。高スループット合成とシークエンシングの両方の間に生じるエラーのため、これらのリードは変形を有する場合があるが、正しいリードが優位を占めるべきである。整数部分列の場所ごとの最高頻度をベースにした訂正により、同一のインデックスを共用するすべての整数部分列が訂正され、コンセンサス整数部分列にマージされるであろう。例えば、同じインデックスを共用するリードのグループの場合、そのコンセンサス整数部分列の各位置は、この位置で最も頻繁に出現する整数により決定される必要がある。
【０１７９】
ステップ１１８で、整数文字列のリストは、欠けているオリゴ並びに挿入及び削除を有するオリゴを回復するために、ＲＳコーディングのブロック訂正を通して完全に復号できる。１種類のオリゴは、合成中に分子の多くのコピーを有し、何度も配列されるであろうため、多くのリードが１つのオリゴを表すであろう。高スループット合成とシークエンシングの両方の間に生じるエラーのため、これらのリードは変形を有する場合があるが、最初に設計されたオリゴとよく一致する正しいリードはまだカウントに対して有利である。整数文字列の場所ごとの最高頻度をベースにした訂正により、同一のインデックスを共用するすべての整数文字列は訂正され、文字列訂正とブロック訂正の間のコンセンサス整数文字列にマージされるであろう。挿入及び削除を有するオリゴは不規則な長さを有し、エラー訂正中に削除されるであろうため、このようにして対応するデータは欠けている情報に完全に等しく、回復される必要がある。インデックス情報に基づいて、行列の列は、最高頻度をベースにした訂正の後に充填される。
【０１８０】
ステップ１２０で、トランスコーディングが実行される。リードはインデックス別にソートされ、次いでインデックスは各整数部分列から削除される。すべての整数部分列は、次いで単一の整数文字列に連結され、次いで５ビットトランスコーディングフレームワークを介して２進列に転送される場合がある。
【０１８１】
ステップ１２２で、解凍が実行される。具体的には、システムは２進列を圧縮ファイルに書き込み、次いで順にＬＺＭＡアルゴリズム及びＴＡＲアルゴリズムにより圧縮ファイルを解凍する。多数の圧縮ファイルのランダムアクセスの場合、ステップ１１６〜１２２は、圧縮ファイルのそれぞれについて独立して実行されるべきである。プールは、多数の圧縮ファイルを記憶できる。各圧縮ファイルは独自のＰＣＲプライマーを有する。復号中、プール全体を配列する必要はない。むしろ、対応するＰＣＲプライマーは、特定の圧縮ファイルのオリゴを増幅させ、次いで増幅させたオリゴを配列して、プール全体ではないが、この対応する圧縮ファイルを復号するために使用される。
【０１８２】
上述したように、５ビットトランスコーディングフレームワークが活用される。具体的には、２進列からのあらゆる５個の継続ビットが、０〜３１に及ぶ整数、ひいては３個のヌクレオチド［ナノテスラ］（つまり、３マー）として表される場合がある。例えば、ＤＮＡオリゴは４つの塩基（例えば、Ａ、Ｔ，Ｇ、及びＣ）から成り、したがって２マー（つまり、ＮＮ）は１６種類（例えば、ＡＡ、ＡＴ、ＡＧ、ＡＣ、ＴＡ、ＴＴ、ＴＧ、ＴＣ、ＧＡ、ＧＴ、ＧＧ、ＧＣ、ＣＡ、ＣＴ、ＣＧ、及びＣＣ）を有するはずである。変性した塩基Ｒ及びＹが２マーの後に連結され、３マー（ＮＮＲ／ＮＮＹ）が、０〜３１に及ぶ３２の整数とよく一致し、ＤＮＡ配列の中によく転送される２進列を作る３２種類から成るべきであると仮定する。オリゴ合成中、Ｒを表すためにＡが選ばれるのか、それともＧが選ばれるのか、及びＹを置換するためにＣが選択されるのか、それともＴが選択されるのかは、その前部の塩基（つまり、３マーの第２の塩基）に依存しており、実際には、システムは第２の塩基及び第３の塩基を異ならせ、次いで同時にＧＣバランスを保つ場合がある。この前提条件が届く（ｒｅａｃｈｅｓ）と仮定すると、正確な塩基は、候補塩基の間で無作為に選択される。結論として、このトランスコーディングフレームワークのコーディングの可能性は１．６７（つまり、３ナノテスラに対して５ビット）である。
【０１８３】
図７は、ＤＮＡベースのデータストレージ技術及びデータ取り出し技術の例示的な実現を示す。ここでは、図６に示す漢字を含むテキストファイル（データサイズ：１．１６ｋｂ）が、本明細書に説明するプロセスに従ってＤＮＡを介して記憶される。
【０１８４】
符号化中、テキストファイルは、単一の圧縮ファイルに圧縮され、次いでＤＮＡストレージフレームワークを通して８７ナノテスラ長を有する４０３のオリゴを使用し、記憶される。一方、ランダムアクセスをシミュレーションするために、この圧縮ファイルの６つのコピーが使用され、プライマーの６つのペアが選択される。プライマーの各ペアは、４０３のオリゴのそれぞれの２つの末端に加えられる。プライマーの６つのペア（それぞれ２０ナノテスラ）が直交であった。これは、それらのうちの任意の２つが十分なハミング距離を有し、４０３のオリゴの任意の１つと類似性をあまり共有していないことを意味する。ＡＳＣＩＩテキストファイルで、本明細書で提出された配列表リストは、ＳＥＱ  ＩＤ１番〜ＳＥＱ  ＩＤ４０３番、及びプライマーペアＰＰ１番〜ＰＰ６番をＳＥＱ  ＩＤ４０４番〜４１５番として含む。
【０１８５】
オリゴプールの合成が次いで実行される。合計で２４１８（つまり、４０３が６で乗算される）のオリゴが、ＣｕｓｔｏｍＡｒｒａｙ，Ｉｎｃ．により開発されたＣｕｓｔｏｍＡｒｒａｙプラットフォームを使用し、合成された。各オリゴは、合計４０ナノテスラのプライマー（末端あたり２０ナノテスラ）を含む１２７ナノテスラである。
【０１８６】
ＰＣＲ増幅及びＮＧＳが次いで実行される。６つのＰＣＲ反応が、圧縮ファイルのすべてのコピーに対して行われた。ＴｒｕＳｅｑ  ＤＮＡ  ＰＣＲ−ｆｒｅｅ  ＨＴライブラリ作成キット（プレートフォーマットで９６のインデックス、９６のサンプル）、及び６のライブラリインデックスを使用する６つのサンプルのライブラリ作成後、プールされたサンプルは、オリゴの１２７ナノテスラ長のため、ＭｉＳｅｑ試薬キットＶ３（１５０サイクル）を使用し、ともに配列された。ＮＧＳデータのＱ３０は９４％（公式基準＞８５％）であり、クラスタ密度は１，３０１Ｋ／ｍｍ２（公式基準１２００〜１４００Ｋ／ｍｍ２）である。
【０１８７】
最後に、復号が実行される。圧縮ファイルの各コピーの独立した復号の後、すべてのコピーは、無作為にかつ無事に取り出され、エラーなく解凍されるであろう。
【０１８８】
図８は、本明細書に開示する方法の１つまたはいくつかのステップを実行するために使用できるデバイスを示す。８００と参照される係るデバイスは、８０１と参照されるコンピューティングユニット（例えば、「中央演算処理装置」のＣＰＵ）、及び８０２と参照される１つ以上のメモリユニット（例えば、コンピュータプログラムの命令の実行中に中間の結果を一時的に記憶できるＲＡＭ（「ランダムアクセスメモリ」）ブロック、またはとりわけコンピュータプログラムが記憶されるＲＯＭブロック、またはＥＥＰＲＯＭ（電気的消去可能・プログラム可能型読取専用メモリ）ブロック、またはフラッシュブロック）を含む。コンピュータプログラムは、コンピューティングユニットによって実行できる命令から作られる。また、係るデバイス８００は、デバイス８００が他のデバイスと通信できるようにするための入出力インタフェースの構成要素となる、８０３と参照される専用ユニットも含む場合がある。特に、この専用ユニット８０３は、（接点なしに通信を実行するために）アンテナと、または（通信「接点」を伝えるために）シリアルポートと接続される場合がある。ユニットが、例えば互いにバスを通してデータを交換できることに留意されたい。
【０１８９】
代替実施形態では、上述の方法のステップのいくつかまたはすべては、プログラム可能なＦＰＧＡ（「フィールドプログラマブルゲートアレイ」）構成要素またはＡＳＩＣ（「特定用途向け集積回路」）構成要素のハードウェアで実装できる。
【０１９０】
代替実施形態では、上述の方法のステップのいくつかまたはすべては、図８に開示するもののようなメモリユニット及び処理ユニットを含む電子機器で実行できる。係るデバイス８００は、高スループット合成プラットフォーム（例えば、ＣｕｓｔｏｍＡｒｒａｙ）及びＤＮＡシーケンサ（例えば、ＭｉＳｅｑシーケンサ）と組み合わせて使用できる。
【０１９１】
図９Ａは、入力データを核酸に記憶するための例示的な方法９００を示す。ブロック９０２で、入力データは、ヌクレオチド配列の集合に変換される。ブロック９０４で、入力データは２進列に変換される。ブロック９０６で、２進列は、ヌクレオチド配列の集合を得るために、５ビットトランスコーディングフレームワークを使用し、変換される。ブロック９０８で、ヌクレオチド配列の集合を含む核酸の集合が合成される。
【０１９２】
図９Ｂは、核酸に記憶された出力データを取り出すための例示的な方法９５０を示す。ブロック９５２で、核酸の集合のヌクレオチド配列の集合が得られる。ブロック９５４で、ヌクレオチド配列の集合が出力データに変換される。具体的には、ブロック９５６で、ヌクレオチド配列の集合は、５ビットトランスコーディングフレームワークを使用し、２進列に変換される。ブロック９５８で、２進列は出力データに変換される。
【０１９３】
本開示及び例は、添付図面に関して完全に説明されてきたが、当業者に多様な変更及び修正が明らかになることに留意されたい。係る変更及び修正は、特許請求の範囲に定められるように、本開示及び例の範囲内に含まれると理解されるべきである。
【０１９４】
上記の説明は、説明のために、具体的な実施形態に関して説明されてきた。しかしながら、上記の例示的な説明は、包括的になる、または本発明を開示される正確な形式に限定することを目的としていない。上記教示を考慮して多くの修正形態及び変形形態が可能である。実施形態は、技術の原理及びその実践的な応用を最もよく説明するために選ばれ、説明された。当業者は、それにより意図された特定の使用に適するように多様な修正形態とともに技術及び多様な実施形態を最良に利用できる。
【図１】
2020534633.tif 000005
【図２】
2020534633.tif 000006
【図３Ａ】
2020534633.tif 000007
【図３Ｂ】
2020534633.tif 000008
【図３Ｃ】
2020534633.tif 000009
【図３Ｄ】
2020534633.tif 000010
【図４】
2020534633.tif 000011
【図５】
2020534633.tif 000012
【図６】
2020534633.tif 000013
【図７】
2020534633.tif 000014
【図８】
2020534633.tif 000015
【図９Ａ】
2020534633.tif 000016
【図９Ｂ】
2020534633.tif 000017
【配列表】
2020534633000001.app
【国際調査報告】
2020534633.tif 000018
2020534633.tif 000019