(57)【要約】  コードブックは、ソースコード語から目的コード語にマッピングするために生成され、それにより、例えば、ＤＮＡ保存のための、低減された間違った復号の確率でのソースデータの符号化が可能になる。目的コード語は、サブセットに分類され（１０２）、かつ識別部分および残留部分を含む。同じサブセットに対応する目的コード語の識別部分は同一である。サブセットに対処するためのソースコード語の第１のコードシンボルセットが選択される（１０３）。サブセットに対して、近隣のサブセットが決定される（１０４）。近隣のサブセットの目的コード語の識別部分は、最大でシンボルの既定の量だけ、対応するサブセットのものと異なる。対応する第１のコードシンボルが同じサブセットに対処する場合に、それにより、前記サブセットの目的コード語であって、それらの近隣のサブセットと同一のそれらの残留部分を有する目的コード語の量が最適化基準と一致するように、ソースコード語は前記サブセットに割り当てられる（１０５）。
2017528796.tif 000002
【特許請求の範囲】
【請求項１】
複数のソースコード語を複数の目的コード語にマッピングするためのコンピュータ実装コードブック生成方法（１００）であって、
−  複数のソースコード語および複数の目的コード語を提供すること（１０１）と、
−  前記複数の目的コード語を前記目的コード語の複数のサブセットに分類すること（１０２）であって、前記目的コード語が識別部分および残留部分を含み、前記複数のサブセットのうちの同じサブセットに対応する前記目的コード語の前記識別部分が同一である、こと（１０２）と、
−  前記複数のサブセットに対処するために前記ソースコード語のコードシンボルの第１のセットを選択すること（１０３）と、
−  前記サブセットに対して、前記複数のサブセット内の１つまたは複数の対応する近隣のサブセットを決定すること（１０４）であって、前記１つまたは複数の近隣のサブセットの前記目的コード語の前記識別部分が、最大でコードシンボルの既定の量だけ、前記対応するサブセットの前記目的コード語の前記識別部分と異なる、こと（１０４）と、
−  コードシンボルの前記対応する第１のセットが前記同じサブセットに対処する場合に、前記ソースコード語が割り当てられる前記サブセットの前記目的コード語であって、それらの近隣のサブセットの前記目的コード語の前記対応する残留部分と同一のそれらの残留部分を有する前記目的コード語の量が最適化基準と一致するように、ソースコード語を前記サブセットの目的コード語に割り当てること（１０５）ことと
を含む、コンピュータ実装コードブック生成方法（１００）。
【請求項２】
前記複数の目的コード語を前記目的コード語の複数のサブセットに分類する前に、復号関連基準に従って、前記複数の目的コード語から目的コード語を取り除くことを含む、請求項１に記載の方法。
【請求項３】
前記復号関連基準に従って、事前に定義された最大ランレングスより大きい同一のコードシンボルのランレングスを含む目的コード語が取り除かれる（２０２）、請求項２に記載の方法。
【請求項４】
前記目的コード語のうちの別のものと連結されている際に、前記事前に定義された最大ランレングスより大きい同一のコードシンボルのランレングスを含む目的コード語が取り除かれる（２０３）、請求項３に記載の方法。
【請求項５】
前記決定することは、前記１つまたは複数の近隣のサブセットの前記識別部分が、核酸鎖内のヌクレオチドのシークエンシング誤り確率に基づく支配的なシークエンシング誤りに対応する選択されたシンボル反転だけ、前記対応するサブセットと異なることを含む、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記複数のソースコード語および目的コード語が、第１のコードおよび第２のコードのソースコード語および目的コード語に分割され（２０４）、前記第１のコードおよび前記第２のコードの前記目的コード語が両方とも、前記対応するコードの目的コード語の逆相補的語が依然として前記対応するコードに属し、かつ前記第１のコードと前記第２のコードとの共通のコード語が存在せず、かつ前記第２のコードの目的コード語が、前記第１のコードの２つのカスケード接続された目的コード語のいかなる部分にも等しくなく、前記第１のコードのカスケード接続された１つの目的コード語および前記第２のコードの１つの目的コード語のいかなる部分にも等しくないという特性を有し、前記分類すること、選択すること、決定することおよび割り当てることは、前記第１のコードに適用される、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記第２のコードが、以下：
−  前記第２のコードの前記複数の目的コード語を前記第２のコードの前記目的コード語の複数のサブセットに分類することであって、前記第２のコードの前記目的コード語が、識別部分および残留部分を含み、前記第２のコードの目的コード語の前記複数のサブセットのうちの同じサブセットに対応する前記第２のコードの前記目的コード語の前記識別部分が同一である、ことと、
−  前記第２のコードの前記ソースコード語のコードシンボルの第１のセットを、前記第２のコードの目的コード語の前記複数のサブセットに対処するために選択することと、
−  コードシンボルの前記対応する第１のセットが前記第２のコードの目的コード語の前記同じサブセットに対処する場合に、前記第２のコードのソースコード語を、前記第２のコードの前記目的コード語の前記残留部分間のハミング距離を最小化するコスト関数に従って前記サブセットに割り当てることと
に従って生成される、請求項６に記載の方法。
【請求項８】
前記コスト関数が、シンボル誤り確率に依存する、請求項７に記載の方法。
【請求項９】
前記シンボル誤り確率が、核酸鎖内のヌクレオチドのシークエンシング誤り確率に基づく、請求項８に記載の方法。
【請求項１０】
−  前記目的コード語のうちの１つまたは複数から少なくとも１つのコード語シーケンスを生成することと、
−  セグメントを含む少なくとも１つの核酸分子を合成することであって、ヌクレオチドの配列が、前記少なくとも１つのコード語シーケンスと一致するように配置される、ことと
を含む、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
複数のソースコード語を複数の目的コード語にマッピングするためのコード生成装置（５００）であって、
−  目的コード語を受信するための第１の入力（５０１）およびソースコード語を受信するための第２の入力（５０２）と、
−  前記複数の目的コード語を前記目的コード語の複数のサブセットに分類するように構成されたコード語分類ユニット（５０３）あって、前記目的コード語が識別部分および残留部分を含み、前記複数のサブセットのうちの同じサブセットに対応する前記目的コード語の前記識別部分が同一である、コード語分類ユニット（５０３）と、
−  前記コード語分類ユニット（５０３）に接続された選択ユニット（５０４）であって、前記複数のサブセットに対処するために前記ソースコード語のコードシンボルの第１のセットを選択するように構成された選択ユニット（５０４）と、
−  前記コード語分類ユニット（５０３）に接続された決定ユニット（５０５）であって、前記サブセットに対して、前記複数のサブセット内の１つまたは複数の対応する近隣のサブセットを決定するように構成され、前記１つまたは複数の近隣のサブセットの前記目的コード語の前記識別部分が、最大でコードシンボルの既定の量だけ、前記対応するサブセットの前記目的コード語の前記識別部分と異なる、決定ユニット（５０５）と、
−  前記選択ユニット（５０４）および前記決定ユニット（５０５）に接続されたマッピングユニット（５０６）であって、コードシンボルの前記対応する第１のセットが前記同じサブセットに対処する場合に、前記ソースコード語が割り当てられる前記サブセットの前記目的コード語であって、それらの近隣のサブセットの前記目的コード語の前記対応する残留部分と同一のそれらの残留部分を有する前記目的コード語の量が最適化基準と一致するように、ソースコード語を前記サブセットの目的コード語に割り当てるように構成されるマッピングユニット（５０６）と
を含む、コード生成装置（５００）。
【請求項１２】
−  前記目的コード語のうちの１つまたは複数から少なくとも１つのコード語シーケンスを生成するように構成されたコード語シーケンス生成ユニット（５０７）と、
−  セグメントを含む少なくとも１つの核酸分子を合成するように構成されたシンセサイザユニット（５０８）であって、ヌクレオチドの配列が、前記少なくとも１つのコード語シーケンスと一致するように配置される、シンセサイザユニット（５０８）と
を含む、請求項１１に記載の装置。
【請求項１３】
コンピュータ可読記憶媒体であって、複数のソースコード語を複数の目的コード語にマッピングすることを可能にする命令であって、コンピュータによって実行されると、
−  複数のソースコード語および複数の目的コード語を提供することと、
−  前記複数の目的コード語を前記目的コード語の複数のサブセットに分類することであって、前記目的コード語が識別部分および残留部分を含み、前記複数のサブセットのうちの同じサブセットに対応する前記目的コード語の前記識別部分が同一である、ことと、
−  前記複数のサブセットに対処するために前記ソースコード語のコードシンボルの第１のセットを選択することと、
−  前記サブセットに対して、前記複数のサブセット内の１つまたは複数の対応する近隣のサブセットを決定することであって、前記１つまたは複数の近隣のサブセットの前記目的コード語の前記識別部分が、最大でコードシンボルの既定の量だけ、前記対応するサブセットの前記目的コード語の前記識別部分と異なる、ことと、
−  コードシンボルの前記対応する第１のセットが前記同じサブセットに対処する場合に、前記ソースコード語が割り当てられる前記サブセットの前記目的コード語であって、それらの近隣のサブセットの前記目的コード語の前記対応する残留部分と同一のそれらの残留部分を有する前記目的コード語の量が最適化基準と一致するように、ソースコード語を前記サブセットの目的コード語に割り当てることと
を前記コンピュータに行わせる命令をその中に格納している、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
コード生成方法および装置が提示される。具体的には、本開示は、例えば、合成核酸鎖への保存のための情報の符号化に適した、ソースコード語を目的コード語にマッピングするための方法および装置ならびに対応するコンピュータ可読記憶媒体に関する。
【背景技術】
【０００２】
核酸は、高分子であり、ヌクレオチドとして知られているモノマー配列からなる。各ヌクレオチドは、糖成分、リン酸基および窒素塩基または核酸塩基からなる。ヌクレオチドの糖成分がデオキシリボースである核酸分子は、ＤＮＡ（デオキシリボ核酸）分子であるが、ヌクレオチドの糖成分がリボースである核酸分子は、ＲＮＡ（リボ核酸）分子と呼ばれる。ＤＮＡおよびＲＮＡは、生体内で見られる生体高分子である。
【０００３】
核酸分子は、ヌクレオチドの鎖またはストランドとして組み立てられる。核酸分子は、人工的に生成することができ、それらの鎖構造は、いかなる種類のユーザデータの符号化にも使用することができる。合成された（すなわち、人工的に作成された）ＤＮＡまたはＲＮＡにデータを保存するため、通常、短いＤＮＡまたはＲＮＡ断片（オリゴヌクレオチド、略して、オリゴ）が生成される。これらの核酸断片を用いることで、データが核酸分子に保存されるデータ保存システムを実現することができる。合成された核酸分子は、核酸分子を形成する一連の異なるヌクレオチドによって符号化された情報を伝える。合成された核酸分子の各々は、シンセサイザを使用する生化学的プロセスによって生成されるヌクレオチドの配列または鎖からなり、オリゴまたは核酸断片を表し、ヌクレオチドの配列またはカスケードは、情報単位セット（例えば、ユーザデータの情報ビットセット）に対応するコード語シーケンスを符号化する。例えば、ＤＮＡ保存システムでは、短いＤＮＡ断片が生成される。これらの分子は、保存することができ、情報は、シーケンサを使用してヌクレオチドの配列を読み取ることによって、保存された分子から回収することができる。
【０００４】
シークエンシングは、特定の核酸断片内のヌクレオチドの順番を決定するプロセスである。シークエンシングは、読み取りプロセスと解釈することができる。ヌクレオチドの読み出し順番は、核酸断片に保存されたオリジナルの情報を回復するために処理または復号される。
【０００５】
これに関連して、「核酸断片」、「オリゴヌクレオチド」および「オリゴ」という用語は、交換可能に使用され、短い核酸鎖を指す。これに関連して、「短い」という用語は、生体によって使用される遺伝的指令を符号化する、数百万のヌクレオチドからなり得る、天然ＤＮＡの長さと比べて短いものとして理解されたい。合成されたオリゴは、複数の、例えば、１００を超える（例えば、１００〜３００）または数千のヌクレオチドを含み得る。
【０００６】
この技術は、データ保存システムの提供を可能にし、書き込みプロセスは、保存すべき情報を符号化するヌクレオチドの配列としての核酸断片の作成に基づく。
【０００７】
生成された核酸断片は、核酸保存容器において、例えば、固体物質として保存されるか、または液体中で溶解させる。核酸保存の特性は、保存データ量およびデータの読み出しが起こる前の予定時間に依存し得る。
【０００８】
合成されたＤＮＡまたはＲＮＡへのデジタル情報保存は、大容量のあまり手のかからない情報保存を提供することができる。
【０００９】
ＤＮＡ保存については、“Next-generation digital information storage”, Church et al., Science 337, 1628, 2012および“Towards practical, high-capacity, low-maintenance information storage in synthesized DNA”, Goldman et al., Nature, vol. 494, 2013で研究されている。
【００１０】
データは、テキスト、画像、音声または映像データなど、デジタル方式（例えば、２進）で符号化された情報に対応する、保存すべきいかなる種類のシーケンシャルデジタルソースデータ（例えば、２進または４進コードシンボルのシーケンス）でもあり得る。制限されたオリゴ長のため、データは、通常、複数のオリゴに分配される。
【００１１】
そのような核酸保存システムでは、オリゴは、いくつかの処理段階の対象となる。オリゴは、合成され（すなわち、保存すべき核酸鎖が作成される）、増幅され（すなわち、単一のオリゴの各々の数が増加される、例えば、数百または数千まで）、シークエンシングが行われる（すなわち、各オリゴに対するヌクレオチドの配列が分析される）。これらの処理段階は、誤りが生じやすいものであり得、復号不可能なまたは間違って復号された情報をもたらし得る。
【００１２】
ＤＮＡ鎖は、それらのそれぞれの核酸塩基または窒素塩基によって識別された４つの異なるヌクレオチド（すなわち、アデニン、チミン、シトシンおよびグアニン、略して、Ａ、Ｔ、ＣおよびＧとしてそれぞれ示される）からなる。また、ＲＮＡ鎖も、それらのそれぞれの核酸塩基によって識別された４つの異なるヌクレオチド（すなわち、アデニン、ウラシル、シトシンおよびグアニン、略して、Ａ、Ｕ、ＣおよびＧとしてそれぞれ示される）からなる。
【００１３】
情報は、ヌクレオチドの配列に保存される。情報伝送システムと見なし、情報ビットから異なるヌクレオチドへのそのようなマッピングは、変調シンボルとしてＡ、Ｔ、Ｃ、Ｇ（またはＡ、Ｕ、Ｃ、およびＧのそれぞれ）を用いた変調と解釈することができ、シンボルアルファベットサイズは４である。逆に、所定のシンボルタプルまたは目的コード語から情報ビットタプルまたはソースコード語への決定規則は、復調と呼ぶことができる。
【００１４】
核酸塩基は、水素結合を介してそれらの相補的対応部分に接続する傾向がある。例えば、天然ＤＮＡは、通常、二重らせん構造を示し、ある鎖のＡは別の鎖のＴに接続され、同様に、ＣはＧに接続する傾向がある。これに関連して、ＡおよびＴならびにＣおよびＧは、相補的と呼ばれる。それに応じて、ＡおよびＵならびにＧおよびＣは、相補的ＲＮＡ塩基の対を形成する。
【００１５】
ヌクレオチド配列の逆平行アラインメントの結果、各位置における核酸塩基がそれらの対応部分に相補的なものとなる場合、ヌクレオチドの２つの配列は、互いに「逆相補的」と見なされる。逆相補性は、ＤＮＡまたはＲＮＡの別個の鎖間でのみ起こるわけではない。ヌクレオチドの配列が内部または自己可逆相補性を有することも可能である。例として、ＤＮＡ断片は、逆相補鎖変換ステップの後に断片がそれ自体と同一である場合、自己可逆相補的と見なされる。例えば、ＤＮＡ断片ＡＡＴＣＴＡＧＡＴＴは、自己可逆相補的である（オリジナルのＤＮＡ断片はＡＡＴＣＴＡＧＡＴＴであり、相補的ＤＮＡ断片はＴＴＡＧＡＴＣＴＡＡであり、逆の順番ではＡＡＴＣＴＡＧＡＴＴである）。
【００１６】
長い自己可逆相補的断片は、シークエンシングを容易に行えない場合があり、それにより、鎖で符号化された情報の正しい復号が妨げられる。
【００１７】
さらに、テストにより、ヌクレオチドランレングス（すなわち、同一のヌクレオチドのカスケードまたは配列）は、ランレングスがある一定の長さを超える場合、シークエンシング精度を低減する恐れがあることが示されている。
【００１８】
そのうえ、増幅プロセスおよびシークエンシングは異なる場所におけるオリゴの誤りを取り入れるため、シークエンシングが行われたオリゴの多くは、正しい情報を含まない可能性がある。
【００１９】
従って、高いコード化効率での情報またはソースデータの符号化を可能にする一方で、間違った復号の確率を低減する、特定の変調コード化を使用すべきである。
【発明の概要】
【課題を解決するための手段】
【００２０】
本原理の態様によれば、複数のソースコード語を複数の目的コード語にマッピングするためのコンピュータ実装コードブック生成方法は、
複数のソースコード語および複数の目的コード語を提供することと、
複数の目的コード語を目的コード語の複数のサブセットに分類することであって、目的コード語が識別部分および残留部分を含み、複数のサブセットのうちの同じサブセットに対応する目的コード語の識別部分が同一である、ことと、
複数のサブセットに対処するためにソースコード語のコードシンボルの第１のセットを選択することと、
サブセットに対して、複数のサブセット内の１つまたは複数の対応する近隣のサブセットを決定することであって、１つまたは複数の近隣のサブセットの目的コード語の識別部分が、最大でコードシンボルの既定の量だけ、対応するサブセットの目的コード語の識別部分と異なる、ことと、
コードシンボルの対応する第１のセットが同じサブセットに対処する場合に、前記ソースコード語が割り当てられる前記サブセットの目的コード語であって、それらの近隣のサブセットの目的コード語の対応する残留部分と同一のそれらの残留部分を有する目的コード語の量が最適化基準と一致する（例えば、最大化される）ように、ソースコード語を前記サブセットの目的コード語に割り当てることと
を含む。
【００２１】
それに従って、複数のソースコード語を複数の目的コード語にマッピングするためのコード生成装置は、
目的コード語を受信するための第１の入力（５０１）およびソースコード語を受信するための第２の入力（５０２）と、
複数の目的コード語を目的コード語の複数のサブセットに分類するように構成されたコード語分類ユニットであって、目的コード語が識別部分および残留部分を含み、複数のサブセットのうちの同じサブセットに対応する目的コード語の識別部分が同一である、コード語分類ユニットと、
コード語分類ユニットに接続された選択ユニットであって、複数のサブセットに対処するためにソースコード語のコードシンボルの第１のセットを選択するように構成された選択ユニットと、
コード語分類ユニットに接続された決定ユニットであって、サブセットに対して、複数のサブセット内の１つまたは複数の対応する近隣のサブセットを決定するように構成され、１つまたは複数の近隣のサブセットの目的コード語の識別部分が、最大でコードシンボルの既定の量だけ、対応するサブセットの目的コード語の識別部分と異なる、決定ユニットと、
選択ユニットおよび決定ユニットに接続されたマッピングユニットであって、コードシンボルの対応する第１のセットが同じサブセットに対処する場合に、前記ソースコード語が割り当てられる前記サブセットの目的コード語であって、それらの近隣のサブセットの目的コード語の対応する残留部分と同一のそれらの残留部分を有する目的コード語の量が最適化基準と一致する（例えば、最大化される）ように、ソースコード語を前記サブセットの目的コード語に割り当てるように構成されるマッピングユニットと
を含む。
【００２２】
さらに、コンピュータ可読記憶媒体は、複数のソースコード語を複数の目的コード語にマッピングすることを可能にする命令であって、コンピュータによって実行されると、
−  複数のソースコード語および複数の目的コード語を提供することと、
−  複数の目的コード語を目的コード語の複数のサブセットに分類することであって、目的コード語が識別部分および残留部分を含み、複数のサブセットのうちの同じサブセットに対応する目的コード語の識別部分が同一である、ことと、
−  複数のサブセットに対処するためにソースコード語のコードシンボルの第１のセットを選択することと、
−  サブセットに対して、複数のサブセット内の１つまたは複数の対応する近隣のサブセットを決定することであって、１つまたは複数の近隣のサブセットの目的コード語の識別部分が、最大でコードシンボルの既定の量だけ、対応するサブセットの目的コード語の識別部分と異なる、ことと、
−  コードシンボルの対応する第１のセットが同じサブセットに対処する場合に、前記ソースコード語が割り当てられる前記サブセットの目的コード語であって、それらの近隣のサブセットの目的コード語の対応する残留部分と同一のそれらの残留部分を有する目的コード語の量が最適化基準と一致するように、ソースコード語を前記サブセットの目的コード語に割り当てることと
をコンピュータに行わせる命令をその中に格納している。
【００２３】
コンピュータ可読記憶媒体は、コンピュータによって実行されると、説明される方法のステップをコンピュータに実行させる命令をその中に格納している。
【００２４】
ソースコード語は、第１の事前に定義された長さを有する、すなわち、第１の事前に定義された量のコードシンボルからなる。目的コード語は、第２の事前に定義された長さを有する、すなわち、第２の事前に定義された量のコードシンボルからなる。
【００２５】
実施形態では、目的コード語は、４進コードシンボルのシーケンスを含む。ソースコード語は、２進コードシンボルのシーケンスを含み得る。目的コード語に対する４進コードシンボルの使用により、ＤＮＡまたはＲＮＡヌクレオチドまたは核酸塩基への使用シンボルの直接的な対応またはマッピングが可能になり、例えば、４つの異なるヌクレオチドのうちのそれぞれの２つへの２進シンボル０および１のマッピングより効率的なコード化が可能になる。
【００２６】
近隣のサブセットは、対応するサブセットまでのゼロではないハミング距離を有する。例として、コードシンボルの既定の量は１に等しいことができ、すなわち、近隣のサブセットのコード語は、識別部分内の１つのシンボルだけ、対応するサブセットと異なる。近隣のサブセットは、複数のサブセットの各サブセットに対して決定される。
【００２７】
実施形態では、「最適化基準と一致する」（すなわち、最適化基準を満たす）という用語は、前記サブセットの目的コード語であって、それらの近隣のサブセットの目的コード語の対応する残留部分と同一のそれらの残留部分を有する目的コード語の量が最大化されるという特徴を指す。目的コード語の最大化された量は、それらの近隣のサブセットの目的コード語の対応する残留部分と同一のそれらの残留部分を有するサブセットの目的コード語の見込まれる最大量を指す。別の実施形態では、「最適化基準と一致する」という用語は、目的コード語の前記量が見込まれる最大量に近いが見込まれる最大量を下回る数（例えば、見込まれる最大量を１下回る）に適応するという特徴を指す。
【００２８】
コード語の「部分」という用語は、必ずしも、その部分に属するコードシンボルがコード語内の連続シンボルのシーケンスを形成することを含意するわけではない。例えば、残留部分が識別部分を埋め込むことも、その逆も可能であり、いくつかの定義された位置におけるコードシンボルが識別部分に属する一方で、残留シンボルは残留部分に属することなどがあり得る。
【００２９】
本原理の態様による解決法は、ヌクレオチドの対応する配列を含む核酸分子の合成に適したコード語シーケンスを生成するために使用されるコードブック生成スキームを提供する。データまたは情報単位を伝えるソースコード語の符号化は、オリゴの合成に適したコード語シーケンスを生成するために対応する目的コード語を連結することによって行われる。コード化スキームは、低減された誤り確率で復号可能である一方で、核酸断片に保存すべき情報単位の適切な配置に適用可能である。
【００３０】
提供される解決法は、識別部分内で単一のまたは最大で既定の量のシンボル誤りが生じやすい目的コード語が正しく復号されるという効果を少なくとも有する。従って、歪みの対象となる作成された目的コード語のシーケンスを使用して合成された核酸鎖またはオリゴで符号化された情報は、正しい復号の確率が増加される。オリゴのシークエンシングの信頼性は向上し、例えば、アーカイブの目的で、核酸分子に情報を保存するための信頼できるシステムの提供が可能になる。
【００３１】
一実施形態では、目的コード語は、複数の目的コード語を複数の目的コード語のサブセットに分類する前に、復号関連基準に従って、複数の目的コード語から取り除かれる。ここでは、「復号関連基準に従って」という用語は、復号すべき目的コード語の構造への（すなわち、目的コード語または目的コード語のシーケンス内の連続シンボルの実際のシーケンスへの）復号または復号精度の依存性を指す。例えば、目的コード語が合成されたオリゴにデータを保存するための基礎としての役割を果たす場合、合成、増幅およびシークエンシングの生化学プロセスの性能精度は、生成されたまたは生成すべきオリゴ内のヌクレオチドの特定の配列に応じてそれぞれ異なり得る。また、他のパラメータも、例えば、他の分子または物理的パラメータ（例えば、温度、圧力など）の存在など、性能精度に影響を及ぼし得る。説明される実施形態では、復号誤りを生じる高い確率を呈する潜在的な目的コード語は、正しい復号の確率を増加するために取り除かれる。
【００３２】
復号関連基準は、例えば、コードシンボルのランレングス、すなわち、目的コード語もしくは目的コード語のシーケンス内の同一の連続コードシンボルの数、またはそれぞれオリゴもしくはオリゴの配列内の同一の連続ヌクレオチドの数であり得る。例えば、オリゴＡＡＴＴＴＧＣＣのランレングスは、Ａ、Ｔ、Ｇ、Ｃに対してそれぞれ、２、３、１、２である。
【００３３】
例として、復号関連基準に従って、事前に定義された最大ランレングスより大きい同一のコードシンボルのランレングスを含む目的コード語が取り除かれる。これにより、ランレングス問題によって生じる復号誤りの確率が低減される。例えば、より信頼できるシークエンシング結果を達成するために、「ＡＡＡＡ」または「ＴＴＴＴＴ」などの４つ以上のヌクレオチド反復を回避すべきであることを実験結果が示しているため、事前に定義された最大ランレングスは３であり得る。
【００３４】
さらに、目的コード語のうちの別のものと連結されている際に、事前に定義された最大ランレングスより大きい同一のコードシンボルのランレングスを含む目的コード語は取り除かれる。これにより、例えば、合成されたオリゴの生成に適したコード語シーケンスを作成するために、２つ以上のコード語のシーケンスが連結される際に起こる同一の目的コードシンボルのランレングスを回避することができる。それにより、ランレングス問題によって生じる復号誤りの確率がさらに低減される。
【００３５】
ランレングス制約を考慮した目的コード語の除去は、合成されたオリゴまたは核酸断片におけるランレングス（例えば、３を超える）が長いほど正しいシークエンシングに適さなくなり得るため、対応するオリゴを合成するための目的コード語（残留）から生成されたコード語シーケンスの適合性を増加する。
【００３６】
例えば、ランレングス制約が原因で目的コード語を取り除かない場合、目的コード語の各シンボルは、ソースコード語の２つの情報ビットまたは２進シンボルを表し得る。ランレングス制約を考慮した見込まれるコード化は、２つの異なる目的コードシンボルを各ソースコードシンボルに割り当てることに基づき得る。例えば、ソースコードシンボル「０」および「１」ならびに目的コードシンボル「Ａ」、「Ｔ」、「Ｇ」、および「Ｃ」の場合、目的コードシンボルのランレングスが事前に定義された許容最大ランレングスを超える場合に備えて、「Ａ」と「Ｃ」とを「０」に割り当て、「Ｇ」と「Ｔ」とを「１」に割り当て、目的コードシンボルをその対応部分に置き換えることを使用して、ランレングスが事前に定義された最大ランレングスを超えるのを回避することができる。しかし、ここでは、各目的シンボルは、１つのソースコードシンボルのみを表すことができる。
【００３７】
上記で説明される実施形態によれば、ランレングス制約下でさえ、ランレングスが制約されたシーケンスの容量は１より高い。これに関連して、「容量」は、目的コード語の１つのシンボルによってソースコード語のいくつのビットを漸近的に表すことができるかを指す。変調後のランレングスが範囲［ｄ，ｋ］に制限され、Ｍが変調のアルファベットサイズであり、ｄおよびｋが最小および最大ランレングスをそれぞれ示す、Ｍレベルランレングス制限変調コードの容量Ｃは、Ｃ＝ｌｏｇ２γによって得られ、γは、次の特性式ｚｋ＋１−ｚｋ−（Ｍ−１）ｚｋ−ｄ＋１＋（Ｍ−１）＝０の最大実数解である。それに従って、ＤＮＡ保存のための変調における３を超えるランレングスを回避するためのランレングス制約は、ｄ＝１およびｋ＝３の４進ランレングス制限コードを設計することと解釈することができる。対応する容量は、Ｃ≒１．９９５７ビット／シンボルとして決定することができる、すなわち、各シンボル（ヌクレオチド）は、１．９９５７情報ビットを漸近的に表すことができる。データ保存に関連して、保存密度は変調効率と共に増加するため、高変調効率Ｒ／ＣおよびコードレートＲビット／シンボルの変調が望ましい。
【００３８】
一実施形態では、決定するステップ、すなわち、サブセットに対して、目的コード語の複数のサブセット内の１つまたは複数の対応する近隣のサブセットを決定するステップは、１つまたは複数の近隣のサブセットの識別部分が、核酸鎖内のヌクレオチドのシークエンシング誤り確率に基づく支配的なシークエンシング誤りに対応する選択されたシンボル反転だけ、対応するサブセットと異なることを含むかまたはそのように行われる。特定のサブセットに対する近隣のサブセットの量は、反転に対する支配的なシンボル誤りを考慮することによってのみ制限される。この追加の制約により、近隣のサブセットは、特定のサブセット／近隣のサブセット対に対して正確に、サブセットとその近隣のサブセットとの間で最大で識別部分内のコードシンボルの前記事前に定義された量（例えば、１つのコードシンボル）だけ異なる共通の割り当て量が最大化されるように、すなわち、目的コード語の量が最大化されるように選択される。核酸鎖（ＤＮＡ鎖など）の合成のために生成された目的コード語を使用する際、最初に符号化されたシンボルと異なるシンボルが復号される場合のある特定のシンボル反転は、支配的なものであり得る、すなわち、他のものより起こる可能性が高い。例えば、ＤＮＡ保存における支配的な単一のシンボル誤りは、ＡおよびＧならびにＣおよびＴのシンボル遷移である。２つの近隣のサブセット間の共通の割り当ての量を最大化することにより、目的コードシンボルの識別部分内の支配的な単一のシンボル誤りに起因する、ソースコード語の復号容易度に対する影響（より正確には、ソースコード語を目的コード語のサブセットに割り当てるためのソースコードシンボルの第１のセットに対する影響）が最小化されるかまたは少なくとも低減される。これは、残りの誤り率をかなり低減する。
【００３９】
一実施形態では、複数のソースコード語および目的コード語は、第１のコードおよび第２のコードのソースコード語および目的コード語に分割され、第１のコードおよび第２のコードの目的コード語は両方とも、対応するコードの目的コード語の逆相補的語が依然として対応するコードに属し、かつ第１のコードと第２のコードとの共通のコード語が存在せず、かつ第２のコードの目的コード語が、第１のコードの２つのカスケード接続された目的コード語のいかなる部分にも等しくなく、第１のコードのカスケード接続された１つの目的コード語および第２のコードの１つの目的コード語のいかなる部分にも等しくないという特性を有し、分類するステップ、選択するステップ、決定するステップおよび割り当てるステップは、第１のコードに適用される。別の実施形態では、第１のコードの代わりにまたは第１のコードに加えて、第２のコードは、分類するステップ、選択するステップ、決定するステップおよび割り当てるステップの対象となり得る。自己可逆相補性を回避し、それにより、復号の正確性を増大するため、コード語シーケンスは、第１および第２のコードの多重化コード語によって生成される。これにより、例えば、第１および第２のコードからの多重化コード語から構成される合成すべき自己非可逆相補的核酸オリゴの生成が可能になる。
【００４０】
上記で説明される実施形態に従って第１のコードが生成される場合、第２のコードは、自己可逆相補性を回避するために、適切な区切りコード語のプロバイダの役割を果たし得る。一実施形態では、低減された誤り確率で追加の情報伝送のための第２のコードを採用することによってコード化効率を増加するため、使用される第２のコードは、以下に従って生成することができる。第２のコードの複数の目的コード語は、第２のコードの目的コード語の複数のサブセットに分類され、第２のコードの目的コード語は、識別部分および残留部分を含み、第２のコードの目的コード語の複数のサブセットのうちの同じサブセットに対応する第２のコードの目的コード語の識別部分は同一である。第２のコードのソースコード語のコードシンボルの第１のセットは、第２のコードの目的コード語の複数のサブセットに対処するために選択される。次いで、コードシンボルの対応する第１のセットが第２のコードの目的コード語の同じサブセットに対処する場合に、第２のコードのソースコード語は、第２のコードの目的コード語の残留部分間のハミング距離を最小化するコスト関数に従って前記サブセットに割り当てられる。
【００４１】
例えば、第２のコードの目的コード語の識別部分は、対応する残留部分の２つの部分間に埋め込むことができる。さらに、ソースコードは、例えば、第１の事前に定義された長さの２進コード語であり得、目的コード語は、例えば、第２の事前に定義された長さの４進コード語であり得る。
【００４２】
例として、第２のコードの目的コード語の残留部分間のハミング距離を最小化するコスト関数は、シンボル誤り確率に依存し得る。この例示的な実施形態によれば、コスト関数は、見込まれる誤りの各々を等しく扱わないが、応用に応じて、ある特定のシンボル誤りが他のものより起こる可能性が高いことを考慮する。これにより、目的とする応用の特定の誤り制約へのコード化スキームの適応が可能になる。
【００４３】
例として、シンボル誤り確率は、核酸鎖内のヌクレオチドのシークエンシング誤り確率に基づく。これにより、ＤＮＡまたはＲＮＡ保存システムなどの核酸保存システムの特定の制約へのコード化スキームの適応が可能になる。
【００４４】
一実施形態では、目的コード語のうちの１つまたは複数から少なくとも１つのコード語シーケンスが生成され、少なくとも１つの核酸分子はセグメントを有し、ヌクレオチドの配列は、合成される少なくとも１つのコード語シーケンスと一致するように配置される。核酸分子は、例えば、生成されたコード語のシーケンスを受信するシンセサイザデバイスによって生成されたＤＮＡ断片またはＲＮＡ断片であり得る。換言すれば、ＤＮＡまたはＲＮＡオリゴは、生成されたコード語のシーケンスに従って合成される。合成されたオリゴは、オリゴを形成する一連のヌクレオチドによって符号化された情報を伝える。これらの分子は、保存することができ、情報は、シーケンサを使用してヌクレオチドの配列を読み取り、取り出されたコード語を復号することによって回収することができる。
【００４５】
例えば、２つの異なるコードを利用する実施形態の場合、オリゴは、目的コード語のうちの１つまたは複数から生成された少なくとも１つのコード語シーケンスから合成され、事前に定義された量の第１のコード語の後、少なくとも１つの第２のコード語が挿入される。オリゴは、セグメントを含み、ヌクレオチドの配列は、コード語シーケンスと一致するように配置される。１つよりはるかに多くの核酸分子を生成することができる。
【００４６】
シンセサイザによって生成または合成された核酸分子またはオリゴの量は、生成されたコード語シーケンスの量と一致する。各コード語シーケンスに対して、少なくとも１つの核酸分子が合成される。しかし、コード語シーケンスの各々のまたは選択された（例えば、優先度の高い）サブセットに対して、複数のオリゴが生成される場合がある。合成するステップは、例えば、すべてのコード語シーケンスの生成後または各々のシーケンスの生成後に行うことができる。
【００４７】
さらに、実施形態では、上記で説明される方法を実行するように構成された装置またはデバイスは、ＤＮＡ保存システムまたはＲＮＡ保存システムなどの核酸保存システムに含まれる。例えば、核酸保存システムは、核酸保存ユニットまたは容器と、符号化されたコード語シーケンスを回収および復号するために合成および保存された核酸分子のシークエンシングを行うように構成されたシーケンサユニットまたはデバイスとをさらに含む。
【００４８】
明示的に説明されていないが、本実施形態は、いかなる組合せまたは部分的組合せでも採用することができる。
【図面の簡単な説明】
【００４９】
【図１】複数のソースコード語を複数の目的コード語にマッピングするためのコードブック生成方法の実施形態を概略的に示す。
【図２】複数のソースコード語を複数の目的コード語にマッピングするためのコードブック生成方法の実施形態のステップを概略的に示す。
【図３】複数のソースコード語を複数の目的コード語にマッピングするためのコードブック生成方法の別の実施形態を概略的に示す。
【図４】近隣のサブセットグラフの例を概略的に示す。
【図５】複数のソースコード語を複数の目的コード語にマッピングするためのコードブック生成装置の実施形態を概略的に示す。
【発明を実施するための形態】
【００５０】
実施形態の詳細な説明
より良く理解するため、ここでは、図面を参照して以下の説明においてより詳細に本原理を説明する。本原理はこれらの例示的な実施形態に限定されず、添付の請求項で定義されるように、本原理の範囲から逸脱することなく、指定される特徴を便宜上組み合わせるおよび／または変更することもできることが理解される。
【００５１】
図１を参照すると、複数のソースコード語を複数の目的コード語にマッピングするためのコードブック生成方法１００の実施形態が概略的に示されている。「コード語」という用語は、２進または４進コードシンボルなどのコードシンボルのシーケンスを指す。「ソースコード語」は、情報（例えば、２進符号化ビットストリーム）を提供するために使用され、「目的コード語」は、合成されたオリゴの生成に適したコード変換形式で情報を伝えるために使用されるコードシンボルの変調されたシーケンスである。
【００５２】
第１のステップ１０１では、複数のソースコード語および複数の目的コード語が提供される。別の実施形態では、これらの初期の複数のソースおよび目的コード語は既に利用可能であり得る。
【００５３】
第２のステップ１０２では、複数の目的コード語が複数の目的コード語のサブセットに分類される。目的コード語は識別部分および残留部分を含み、複数のサブセットのうちの同じサブセットに対応する目的コード語の識別部分は同一である。換言すれば、サブセットの各目的コード語は、同じ識別子によって識別され、識別部分に含まれる識別子は、連続するかまたはコード語にわたって分配される単一または複数のコードシンボルによって表すことができる。
【００５４】
第３のステップ１０３では、ソースコード語のコードシンボルの第１のセットが複数のサブセットに対処するために選択される。コードシンボルの第１のセットは、ソースコード語の識別部分に対応する。
【００５５】
第４のステップ１０４では、サブセットに対して、複数のサブセット内の１つまたは複数の対応する近隣のサブセットが決定される。１つまたは複数の近隣のサブセットの目的コード語の識別部分は、最大でコードシンボルの既定の量（例えば、１つのコードシンボル）だけ、対応するサブセットの目的コード語の識別部分と異なる。
【００５６】
第５のステップ１０５では、サブセットの目的コード語であって、それらの近隣のサブセットの目的コード語の対応する残留部分と同一のそれらの残留部分を有する目的コード語の量が最適化基準と一致するように、コードシンボルの対応する第１のセットが同じサブセットに対処する場合に、ソースコード語がサブセット（すなわち、前記同じサブセット）に割り当てられる。
【００５７】
それに加えて、図２を参照すると、複数のソースコード語を複数の目的コード語にマッピングするためのコードブック生成方法のステップの実施形態が概略的に示されている。示されるステップは、図１に示される方法に従ってソースおよび目的コード語を提供するステップ１０１の実施形態の例を参照する。ここでは、提供は、ランレングス制約に従って目的コード語が事前に選択されることと、複数のソースおよび目的コード語が第１および第２のコードに分割されることとを含む。
【００５８】
ステップ２０１では、ソースコード語および初期の複数の目的コード語が提供される。
【００５９】
次のステップ２０２では、複数の目的コード語を目的コード語の複数のサブセットに分類する前に、復号関連基準に従って、目的コード語が複数の目的コード語（すなわち、初期の複数の目的コード語）から取り除かれ、復号関連基準に従って、事前に定義された最大ランレングスより大きい同一のコードシンボルのランレングスを含む目的コード語が取り除かれる。例示的な実施形態では、この事前に定義された最大ランレングスは、３つのコードシンボルに設定される。他の実施形態では、事前に定義された最大ランレングスは、例えば、２、４または他の値に設定することができる。
【００６０】
次のステップ２０３では、目的コード語の別のものと連結されている際に、事前に定義された最大ランレングスより大きい同一のコードシンボルのランレングスを含む目的コード語が取り除かれる。これにより、単独でまたは別の目的コード語と組み合わせて、ランレングス制約を満たさないすべての目的コード語が排除される。従って、複数の目的コード語のシーケンスは、ランレングス制約を満たすようになる。
【００６１】
別のステップ２０４では、ソースコード語および目的コード語の両方が、自己可逆相補的コード語シーケンスを回避するのに適した第１および第２のコードに分割される。複数のソースコード語および目的コード語は、第１のコードおよび第２のコードのソースコード語および目的コード語に分割され、両方とも、対応するコードの目的コード語の逆相補的コード語が依然として対応するコードに属し、かつ第１のコードと第２のコードとの共通のコード語が存在しないという特性を有する。図１に示されるような分類するステップ１０２、選択するステップ１０３、決定するステップ１０４および割り当てるステップ１０５は、第１のコードに対して行われる。別の実施形態では、これらのステップは、それに加えてまたはその代わりに、第２のコードに適用することができる。
【００６２】
図３を参照すると、複数のソースコード語を複数の目的コード語にマッピングするためのコードブック生成方法３００の別の実施形態が概略的に示されている。一般性を制限することなく、目的コード語は、ＤＮＡ核酸塩基に相当する４進コードシンボルＡ、Ｔ、Ｃ、Ｇからなり、整数０、１、２、３によってそれぞれ表される一方で、ソースコード語は、整数０および１で表される２進コードシンボルからなる。
【００６３】
示される実施形態では、第１のステップ３０１において、事前に定義された長さＬのすべての４進目的コード語（すなわち、すべての４進シンボルタプル）が生成される。「タプル」という用語は、コードシンボルのシーケンスなどの要素の順序付きリストを指すために使用される。
【００６４】
第２のステップ３０２では、それら自体によってまたはカスケード接続された２つのシンボルタプルによってランレングス制約（ｄ，ｋ）に違反しているすべてのシンボルタプルが目的コード語のセットから（すなわち、生成された４進シンボルタプルから）排除される。ランレングス制限は、下限ｄおよび上限ｋによって（例えば、パラメータｄ＝１およびｋ＝３で）設定される。この例示的なパラメータを用いると、ランレングスは、変調後は１〜３に制限される。ランレングス制約を満たす変調はいずれも、約１．９９７５ビット／シンボルの容量より少ないコードレートを有する。例として、変調コードは、長さ９のビットタプル（すなわち、２進ソースコード語）を長さ５の（目的）シンボルタプル（すなわち、目的コード語）にマッピングすることによって生成される。他の長さを代わりに選択することもできる。選択された例示的なパラメータに対し、対応するコードレートは１．８ビット／シンボルである。
【００６５】
示される実施形態を説明するため、変調前および変調後のソースコード語のビットタプルは、（ｕ１，ｕ２，ｕ３，ｕ４，ｕ５，ｕ６，ｕ７，ｕ８，ｕ９）として示され、目的コード語の４進シンボルタプルは、（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）として示され、ｕｉ∈｛０，１｝、１≦ｉ≦９およびｘｉ∈｛０，１，２，３｝、１≦ｉ≦５である。
【００６６】
例えば、上記で言及される選択されたパラメータの場合、ランレングス制約を満たすために、ステップ３０１および３０２が次の通り実行される。ステップ３０１によれば、（０，０，０，０，０）〜（３，３，３，３，３）の長さ５のすべての１０２４の４進目的シンボルタプルが構築される。ステップ３０２によれば、２つの同じシンボルで始まるかまたは終わる、ステップ３０１で得られた目的シンボルタプルが排除される。換言すれば、ｘ１≠ｘ２およびｘ４≠ｘ５の目的シンボルタプルが維持され、その結果、連結する２つの目的シンボルタプルは、依然としてｄ＝１、ｋ＝３のランレングス制約を満たす。
【００６７】
次のステップ３０３では、必要に応じて、逆相補的対応部分を有さない目的シンボルタプルが排除される。目的シンボルタプル（すなわち、目的コード語）の残りの逆相補的対は、コードＣとして示される。
【００６８】
上記で説明されるような選択された例示的なパラメータを用いると、目的シンボルタプルの結果として生じるセットは、自動的に、逆相補的対応部分を有する目的シンボルタプルのみを含む。
【００６９】
次のステップ３０４では、自己非可逆相補的目的コード語シーケンスの生成を可能にするための必要条件として、以下の自己可逆相補的制約（ｉ）および（ｉｉ）を満たす目的コードシンボルタプル（すなわち、目的コード語）の個々の逆相補的対がＣで見つけられる。結果として生じるセットは、５７６の目的コード語（Ｃに属する長さ５の目的シンボルタプル）を有する。これらの目的シンボルタプル（すなわち、目的コード語）は、次の特性、すなわち、（ｉ）それらは自己可逆相補的ではない、および（ｉｉ）いかなるコード語の自己可逆相補的対応部分もＣ内の１つのコード語であるということを少なくとも呈する。換言すれば、Ｘ∈Ｃおよび
【数１】
2017528796.tif 000003
は、コード語およびその逆相補的対応部分をそれぞれ示し、
【数２】
2017528796.tif 000004
である。これに関連して、Ｘおよび
【数３】
2017528796.tif 000005
は、逆相補的対と呼ばれる。換言すれば、コードＣは、逆相補的対から構成される。例では、Ｃには２８８の逆相補的対がある。
【００７０】
次のステップ３０５では、自己可逆相補的制約を満たす目的コード語の逆相補的対の組合せが見つけられ、コードＣ２として選択される。残りの逆相補的対は、コードＣ１として示される。より詳細には、目的コード語シーケンスの自己可逆相補性を回避するため、コードＣは、２つのサブセットに分割され、Ｃ１およびＣ２として示される。合成すべきＤＮＡ断片は、Ｃ１およびＣ２からのコード語を多重化することによって構成される。
【００７１】
例として、ステップ３０５によるコードＣ１およびＣ２の構築は、二段階で実行することができる。
【００７２】
第１の段階では、Ｙ＝（ｙ１，ｙ２，ｙ３，ｙ４，ｙ５）および
【数４】
2017528796.tif 000006
として示されるコードＣに含まれる逆相補的対がコードＣ２を構築するために選択され、残りの２８７の逆相補的対がＣ１に属するように選択される。例えば、Ｃ２を構築するために、Ｙ＝（０，２，０，１，０）および
【数５】
2017528796.tif 000007
を選択することができる。他の選択肢も可能である。ＤＮＡ断片の合成に適したシーケンスを生成するため、Ｃ１からはすべてのコード語を多重化のために選択できる一方、Ｃ２からは逆相補的対の１つのみのコード語（例えば、Ｙ）がＣ１からのコード語との多重化に使用される。
【数６】
2017528796.tif 000008
を使用せずに、Ｙのみを多重化に使用することにより、ＤＮＡ断片に対し、その逆相補的対応部分が
【数７】
2017528796.tif 000009
のみを含むことが保証される。そうでなければ、いくつかの配置に対して、ＤＮＡ断片が自己可逆相補的であることは保証できない。
【００７３】
説明の目的で、多重化にＹと
【数８】
2017528796.tif 000010
との両方を使用する相反する例を与える。ＤＮＡ断片に潜在的に適切なシーケンスを
【数９】
2017528796.tif 000011
として構築し、その逆相補的対応部分を
【数１０】
2017528796.tif 000012
で与え、それは、当初構築されたＤＮＡ断片が自己可逆相補的であることを示す。その一方で、Ｓに対してＹのみが使用された場合、Ｙが
【数１１】
2017528796.tif 000013
で見られることは決してない。
【００７４】
例えば、（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）および（ｘ’１，ｘ’２，ｘ’３，ｘ’４，ｘ’５）は、Ｃ１からの２つの目的コード語を示す。これらのコード語は、異なるようにすることができる（ただし、そうする必要があるわけではない）。Ｃ１とＣ２とは排他的であるため、すなわち、Ｃ１に属しＣ２にも属する共通のコード語がないため、Ｃ１の目的コード語はＹと等しくない。Ｃ１からの２つのコード語の組合せも、Ｃ１および
【数１２】
2017528796.tif 000014
からの１つのコード語の組合せもＹと等しくない場合、Ｙを含むＤＮＡ断片はいずれも自己可逆相補的ではない。
【００７５】
具体的には、Ｙが次の組合せ、すなわち、
【数１３】
2017528796.tif 000015
のいずれの１つとも等しくないかどうかがチェックされる。Ｙがこれらの組合せのいずれとも等しくなく、コード語シーケンスがＹを含む場合、Ｙは、コード語シーケンスの逆相補的対応部分のいずれの位置でも見られることはなく、対応するＤＮＡ断片の合成に適したものとなる。
【００７６】
上記で説明されるような具体的な例として、合計で１８の逆相補的対を使用してＣ２を構築することができる：
｛（０，１，１，１，０），（１，０，０，０，１）｝，｛（２，１，１，１，０），（１，０，０，０，３）｝、
｛（３，１，１，１，０），（１，０，０，０，２）｝，｛（０，２，２，２，０），（１，３，３，３，１）｝、
｛（１，２，２，２，０），（１，３，３，３，０）｝，｛（３，２，２，２，０），（１，３，３，３，２）｝、
｛（０，３，３，３，０），（１，２，２，２，１）｝，｛（２，３，３，３，０），（１，２，２，２，３）｝、
｛（２，０，０，０，１），（０，１，１，１，３）｝，｛（３，０，０，０，１），（０，１，１，１，２）｝、
｛（０，２，２，２，１），（０，３，３，３，１）｝，｛（３，２，２，２，１），（０，３，３，３，２）｝、
｛（２，３，３，３，１），（０，２，２，２，３）｝，｛（２，０，０，０，２），（３，１，１，１，３）｝、
｛（３，０，０，０，２），（３，１，１，１，２）｝，｛（２，１，１，１，２），（３，０，０，０，３）｝、
｛（２，３，３，３，２），（３，２，２，２，３）｝，｛（２，０，０，０，３），（２，１，１，１，３）｝。
対は、ＣからＣ１およびＣ２へのすべての見込まれる分割をチェックすることによって見つけることができる。
【００７７】
１つのみの対を使用してＣ２を構築する場合、従って、１つのみのコード語Ｙを使用して、Ｃ１およびＹからのコード語を多重化することによってＤＮＡ断片合成するためのシーケンスを構築する場合、コードＣ２は、自己可逆相補性を回避するためにのみ使用される。より多くの逆相補的対を使用してＣ２を構築する場合、コードＣ２は、自己可逆相補性を回避することに加えて、情報を符号化して送信するためにも使用することができる。
【００７８】
上記で与えられる例を示すため、第２の段階では、得られた１８の対から１６の逆相補的対がＣ２を構築するために選択され、残りの２７２の相補的対がＣ１を構築するために選択される。第１の段階の結果として、Ｃ２のいずれのコード語も、Ｃ１からの２つのコード語の組合せとは等しくない。例えば、（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）およびＹ＝（ｙ１，ｙ２，ｙ３，ｙ４，ｙ５）はそれぞれ、Ｃ１およびＣ２からのコード語である。Ｙが次の組合せ、すなわち、（ｘ５，ｙ’１，ｙ’２，ｙ’３，ｙ’４）、（ｘ４，ｘ５，ｙ’１，ｙ’２，ｙ’３）、（ｘ３，ｘ４，ｘ５，ｙ’１，ｙ’２）、（ｘ２，ｘ３，ｘ４，ｘ５，ｙ’１）、（ｙ’２，ｙ’３，ｙ’４，ｙ’５，ｘ１）、（ｙ’３，ｙ’４，ｙ’５，ｘ１，ｘ２）、（ｙ’４，ｙ’５，ｘ１，ｘ２，ｘ３）、（ｙ’５，ｘ１，ｘ２，ｘ３，ｘ４）のいずれの１つとも等しくないかどうかがチェックされ、Ｙ’＝（ｙ’１，ｙ’２，ｙ’３，ｙ’４，ｙ’５）は、Ｃ２からのコード語を示す。
【００７９】
この場合もやはり、ＤＮＡ断片の生成のためのシーケンスを構築するため、Ｃ１からは多重化に対するコード語の選択に対する制限がない一方で、Ｃ２において逆相補的対の各々から１つのみのコード語が多重化に使用される。
【００８０】
Ｃ２からのすべての３２のコード語（１６のコード語対に相当する）がチェックに受かった場合、それらは、Ｃ２において逆相補的対の各々から１つのみのコード語が多重化に使用されるため、Ｃ１からのコード語と併せて自己可逆相補性を回避するために使用されることに加えて、４ビットの情報を保存するために使用することができる。
【００８１】
すべての３２のコード語がチェックに受かったわけではない場合、８つの逆相補的対がＣ２を構築するために使用され、上記のチェックが再び実行される。この事例においてチェックに受かった場合、Ｃ２を使用して３ビットの情報を保存することができる。この手順は、一連の逆相補的対がチェックに受かったことが分かるまで続けられる。
【００８２】
上記の例を示すため、１８対からの１６の逆相補的対の組合せがチェックに受かった。従って、１６の逆相補的対の組合せのいずれも、Ｃ２として使用することができる。一般性を制限することなく、次の１６の逆相補的対が使用される：
｛（０，１，１，１，０），（１，０，０，０，１）｝，｛（２，１，１，１，０），（１，０，０，０，３）｝、
｛（３，１，１，１，０），（１，０，０，０，２）｝，｛（０，２，２，２，０），（１，３，３，３，１）｝、
｛（１，２，２，２，０），（１，３，３，３，０）｝，｛（３，２，２，２，０），（１，３，３，３，２）｝、
｛（０，３，３，３，０），（１，２，２，２，１）｝，｛（２，３，３，３，０），（１，２，２，２，３）｝、
｛（２，０，０，０，１），（０，１，１，１，３）｝，｛（３，０，０，０，１），（０，１，１，１，２）｝、
｛（０，２，２，２，１），（０，３，３，３，１）｝，｛（３，２，２，２，１），（０，３，３，３，２）｝、
｛（２，３，３，３，１），（０，２，２，２，３）｝，｛（２，０，０，０，２），（３，１，１，１，３）｝、
｛（３，０，０，０，２），（３，１，１，１，２）｝，｛（２，１，１，１，２），（３，０，０，０，３）｝。
【００８３】
結果的に、Ｃ２は、１つのコード語あたり４ビットを保存するために使用することができ、Ｃ１には５４４のコード語があり、１つのコード語あたり９ビットの保存が可能になる。Ｃ２からの１つのコード語がＣ１からのｎｓのコード語の後に毎回挿入される場合、あらゆる５（ｎｓ＋１）４進シンボルを４＋９ｎｓ情報ビットに保存することができる、すなわち、コードレートは、
【数１４】
2017528796.tif 000016
によって計算される。例えば、ｎｓ＝１０の場合、コードレートは約１．７０９ビット／シンボルである。
【００８４】
引き続き図３を参照すると、次のステップ３０６では、ビットタプル（すなわち、ソースコード語）とＣ２に対するシンボルタプル（すなわち、目的コード語）との間の割り当てが見つけられ、それにより、復調後のビット誤り率を最小化する。
【００８５】
上記で与えられる例を示すため、Ｃ２の逆相補的対の各々からの１つのコード語が４ビットの情報を保存するために使用される。一般性を制限することなく、次の目的コード語を選択することができる：
｛（０，１，１，１，０），（２，１，１，１，０），（３，１，１，１，０），（０，２，２，２，０）、
（１，２，２，２，０），（１，３，３，３，２），（０，３，３，３，０），（２，３，３，３，０）、
（２，０，０，０，１），（３，０，０，０，１），（０，２，２，２，１），（３，２，２，２，１）、
（２，３，３，３，１），（２，０，０，０，２），（３，０，０，０，２），（２，１，１，１，２）｝。
【００８６】
これらのコード語の共通の特性の１つは、固定された中間の３つのシンボルタプルに対し、４つのコード語があり、４つの異なる中間の３つのシンボルタプルがあることである。従って、上記の目的コード語は、中間の３つのシンボルタプルに従って４つのサブセットに分割することができる。２情報ビットは、中間の３つのシンボルタプルにマッピングすることができ、他の２情報ビットは、コード語の開始／終了シンボルに応じて割り当てることができる。
【００８７】
例えば、情報タプル（すなわち、ソースコード語）である（ｕ１，ｕ２，ｕ３，ｕ４）をＣ２のコード語にマッピングする場合、最初の２ビットは、表Ａに従って、中間の３つのシンボルにマッピングすることができる。
【００８８】
【表１】
2017528796.tif 000017
【００８９】
復調（すなわち、シークエンシングが行われた３つのシンボルタプルから２ビットタプルへの決定）の場合、ハミング距離（すなわち、２つのシンボルタプル間の異なるシンボルの数）は、決定基準として使用することができる。シークエンシングが行われたシンボルタプルまでの最小ハミング距離を有する上記のルックアップテーブルのシンボルタプルが決定される。従って、シークエンシングが行われている１つの合成されたシンボルを正しいものと異なるシンボルにする１つの単一のシンボル誤りは、いかなるビット誤りも生じさせない。例えば、ビットタプル０，０はシンボルタプル０，０，０に変調され、それは合成に使用される。シークエンシング後に１つのシンボル誤りが起これば、間違ったシンボルタプル（例えば、１，０，０）のシークエンシングが行われるが、ルックアップテーブルのシンボルタプル間のハミング距離を計算した後は、シンボルタプル０，０，０が正しいものとして決定され、ビット誤りは生じない。
【００９０】
さらに、ビット誤り率を最小化するためになど、ｕ３，ｕ４が目的シンボルｘ１，ｘ５にマッピングされる。例えば、ｘ２，ｘ３，ｘ４＝０，０，０、ｘ１，ｘ５∈｛（２，１），（３，１），（２，２），（３，２）｝の事例では、合計で４・３・２・１＝２４のｕ３，ｕ４からｘ１，ｘ５への見込まれるマッピングがある。単一のシンボル誤りにより、２つのシンボルタプル（ｘ１，ｘ５）∈｛（２，１），（３，１），（２，２），（３，２）｝を別のタプル（ｘ’１，ｘ’５）∈｛（２，１），（３，１），（２，２），（３，２）｝に変更することができる。例えば、（ｘ１，ｘ５）＝（２，１）は、（ｘ’１，ｘ’５）＝（３，１）に変更され、（ｘ１，ｘ５）→（ｘ’１，ｘ’５）として示される。そのような単一のシンボル誤りのすべての事例をリストアップすることにより、結果として生じるビット誤りの総数を
【数１５】
2017528796.tif 000018
として評価することができる。式中、ｄＨ（（ｕ３，ｕ４），（ｕ’３，ｕ’４））は、（ｕ３，ｕ４）と（ｕ’３，ｕ’４）との間のハミング距離を示し、（ｕ３，ｕ４）および（ｕ’３，ｕ’４）は、特定のマッピングのために（ｘ１，ｘ５）および（ｘ’１，ｘ’５）にマッピングされる。見込まれるすべての２４のマッピングは、（式１）で与えられるコスト関数に従ってテストされる。また、（ｕ３，ｕ４）と（ｘ１，ｘ５）との間の適切なマッピングとして、（式１）を最小化するマッピングが選択される。そのようなマッピングの１つが表Ｂに示される。
【００９１】
【表２】
2017528796.tif 000019
【００９２】
結果的に、固定された中間の３つのシンボルｘ２，ｘ３，ｘ４＝０，０，０に対する（ｕ１，ｕ２，ｕ３，ｕ４）と（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）との間のマッピングが表Ｃに示される。
【００９３】
【表３】
2017528796.tif 000020
【００９４】
他の固定された中間の３つのシンボルパターンのためのマッピングは、相応に決定することができる。要約すると、与えられた例の場合、Ｃ２に対する変調表は、表Ｄに示されるように得られる。
【００９５】
【表４】
2017528796.tif 000021
【００９６】
シンボル誤り確率が利用可能な場合、コスト関数（式１）を
【数１６】
2017528796.tif 000022
のように変更することができる。
【００９７】
例として、Ｐ｛（２，１）→（３，１）｝＝Ｐ｛２→３｝は、シンボル２（ヌクレオチドＣに相当する）は合成されるが、シンボル３（ヌクレオチドＧに相当する）はシークエンシングが行われる確率である。そのようなシンボル誤り確率が利用可能な場合、適切なマッピングは、コスト関数（式２）を最小化することが分かる。
【００９８】
引き続き図３を参照すると、次のステップ３０７では、Ｃ１に対するビットタプル（すなわち、ソースコード語）とシンボルタプル（すなわち、目的コード語）との間の割り当てが見つけられ、それにより、復調後のビット誤り率を最小化する。以前に言及されるように、上記で与えられる例によれば、Ｃ１には５４４の目的コード語がある。マッピング規則は、復調後のビット誤り率が最小化されるように、ソースコード語（ｕ１，ｕ２，ｕ３，ｕ４，ｕ５，ｕ６，ｕ７，ｕ８，ｕ９）を目的コード語（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）に割り当てるために決定される。
【００９９】
最初に、コード語部分ｘ１，ｘ３，ｘ５が考慮される。ｘ１，ｘ３，ｘ５に対する６４の異なる組合せの各々に対し、Ｃ１には、８つ以上のコード語があることを検証することができる。従って、ｘ１，ｘ３，ｘ５は、６ビットに割り当てることができる。一般性を制限することなく、ｕ１，ｕ２はｘ１にマッピングされ、ｕ３，ｕ４はｘ３にマッピングされ、ｕ５，ｕ６はｘ５にマッピングされる。例えば、マッピングの１つは、
ｘ１＝ｕ１＋２ｕ２，ｘ３＝ｕ３＋２ｕ４，ｘ５＝ｕ５＋２ｕ６  （式３）
として定義することができる。
【０１００】
別の例として、シンボル誤り確率が利用可能な場合、より少ないビット誤り確率をもたらす、（式３）以外の異なるマッピングを採用することができる。換言すれば、次のコスト関数を使用して、適切なマッピングを見つけることができる。
【数１７】
2017528796.tif 000023
【０１０１】
同様のコスト関数は、ｕ３，ｕ４とｘ３との間およびｕ５，ｕ６とｘ５との間のマッピングに対して使用することができる。
【０１０２】
ｘ１，ｘ３，ｘ５によれば、Ｃ１は、６４のサブセットに分割され、Ｓ１，Ｓ２，．．．，Ｓ６４として示され、Ｓｉのインデックスは、ｉ＝ｘ１＋４ｘ３＋１６ｘ５＋１に等しい。例えば、Ｓｉ＝｛（０１０１０），（０２０１０），（０３０１０），（０１０２０），（０２０２０），（０３０２０），（０１０３０），（０２０３０），（０３０３０）｝であり、ｘ１＝ｘ３＝ｘ５＝０である。
【０１０３】
ビット誤り確率を最小化しながら、情報ビット（すなわち、ソースコード語）をシンボル（すなわち、目的コード語）に割り当てる目的は、サブセットに基づいて行われる。これに関連して、近隣のサブセットの概念が使用される。各サブセットは目的コード語の識別部分としてｘ１，ｘ３，ｘ５によってインデックスが付けられるため、近隣のサブセットは、ｘ１，ｘ３，ｘ５の事前に定義された量のシンボル（例えば、１つのシンボル）を反転することによって得られる。示される実施形態では、支配的なシンボル誤りのみが反転に対して考慮されるため、特定のサブセットに対する近隣のサブセットの数は制限される。
【０１０４】
例として、ＤＮＡ断片の合成およびシークエンシングのための支配的な単一のシンボル誤りは、ＡとＧとの間もしくはＣとＴとの間、または同等に、０と３との間もしくは２と１との間のシンボル遷移である。従って、説明される例では、各サブセットは、ちょうど３つの近隣のサブセットを有する。例えば、Ｓ１は、ｘ１＝０，ｘ３＝０，ｘ５＝０を有し、その近隣のサブセットは、ｘ１＝３，ｘ３＝０，ｘ５＝０、またはｘ１＝０，ｘ３＝３，ｘ５＝０か、ｘ１＝０，ｘ３＝０，ｘ５＝３を有するようになる。従って、Ｓ１の近隣のサブセットは、Ｓ４，Ｓ１３，Ｓ４９である。
【０１０５】
それに加えて、図４を参照すると、近隣のサブセットグラフの例が概略的に示されている。近隣のサブセットグラフは、近隣のサブセットを接続することによって得られ、２つの近隣のサブセット間の分岐上の数は、それらの間の共通のｘ２，ｘ４組合せの数を示す。
【０１０６】
例として、
Ｓ１３＝｛（０１３１０），（０２３１０），（０３３１０），（０１３２０），（０２３２０），（０３３２０），（０１３３０），（０２３３０）｝
が挙げられ、Ｓ１との８つの共通のｘ２，ｘ４組合せ、すなわち、｛１１，２１，３１，１２，２２，３２，１３，２３｝を有する。ｘ２，ｘ４への３ビットｕ７，ｕ８，ｕ９の割り当ての場合、２つの近隣のサブセット間の共通の割り当ての数は最大化され、その結果、ｘ１，ｘ３，ｘ５に対する支配的な単一のシンボル誤りによるｕ７，ｕ８，ｕ９への影響が最小化される。換言すれば、ｘ２，ｘ４への３ビットｕ７，ｕ８，ｕ９の割り当てがＳ１に対して与えられている場合、同じ割り当てがＳ１３に適用されることになる。
【０１０７】
その一方で、Ｓ４は、Ｓ１との６つの共通の割り当てのみを有する。従って、Ｓ４に対してさらなる２つの割り当てが必要とされ、それは、復調後のビット誤り確率を最小化するために、（式１）または（式２）に従って同様に見つけることができる。
【０１０８】
上記の例を示すため、セット｛１１，２１，３１，１２，２２，３２，１３，２３｝において３ビットを２つのシンボルに割り当てるために、Ｓ１に対するマッピングが決定される。マッピングの第１の例は表Ｅで得られる。
【０１０９】
【表５】
2017528796.tif 000024
【０１１０】
例として、単一のシンボル誤りにより、サブセットのコード語は、サブセットの別のコード語になるように変化することが想定される。例えば、１１は２１になるように変更され、復調の間、ビットタプル０００は００１として決定されるようになり、１ビット誤りを生じさせる。そのような単一のシンボル誤りのすべての事例をリストアップすることにより、結果として生じるビット誤りの総数を
【数１８】
2017528796.tif 000025
として評価することができ、式中、（ｘ’２，ｘ’４）は、（ｘ２，ｘ４）に適用された単一のシンボル誤りによって生じ、（ｘ２，ｘ４）と（ｘ’２，ｘ’４）とは両方ともＳ１内の組合せである。上記の例の場合、Ｊ＝５１である。合計で、８・７・６・５・４・３・２・１＝４０３２０のｕ７，ｕ８，ｕ９とｘ２，ｘ４との間の見込まれるマッピングがある。すべてのマッピングは、コスト関数（式５）を評価することに関してテストされる。適切なマッピングとして、最小のＪ値をもたらすマッピングが選択される。そのようなマッピングの１つが表Ｆに示される。
【０１１１】
【表６】
2017528796.tif 000026
【０１１２】
ここでは、対応するコスト関数はＪ＝３６をもたらす。結果的に、Ｓ１に対するマッピング規則は、以下のように見出される。
【０１１３】
【表７】
2017528796.tif 000027
【０１１４】
シンボル誤り確率が利用可能な場合、そのような誤り確率を採用するコスト関数を使用して、適切なマッピングを見つけることができる。
【数１９】
2017528796.tif 000028
【０１１５】
図４に示される近隣のサブセットグラフを参照すると、ｕ７，ｕ８，ｕ９とｘ２，ｘ４との間のマッピング規則は、Ｓ１３にも適している。Ｓ４に対し、Ｓ４とその近隣との間の共通の割り当てがチェックされる。表Ｈに示されるように、Ｓ１に対してこれらに固定された６つの割り当てがある。
【０１１６】
【表８】
2017528796.tif 000029
【０１１７】
また、ｘ２，ｘ４∈｛２２，２１，１２，１１，０１，０２｝に対してＳ４とＳ５２との間に６つの共通の割り当てがあり、ｘ２，ｘ４∈｛２２，２１，２３，１３，１２，１１，０１，０２，０３｝に対してＳ４とＳ１６との間に９つの共通の割り当てがある。従って、近隣のサブセット間の共通の割り当てを最大化するため、ｘ２，ｘ４∈｛２２，２１，２３，１３，１２，１１，０１，０２｝を使用して３ビットをそれらに割り当てる。
【０１１８】
ｕ７，ｕ８，ｕ９とｘ２，ｘ４との間の６つの割り当ては既に固定されているため、ｕ７，ｕ８，ｕ９∈｛０１０，１１０｝とｘ２，ｘ４∈｛０１，０２｝との間の追加の適切なマッピングが決定される。この場合もやはり、ｕ７，ｕ８，ｕ９とｘ２，ｘ４との間の６つの割り当てが固定されている一方で、コスト関数（式５）または（式６）を使用して適切なマッピングを見つけることができる。また、（式５）を採用することによって、Ｓ４に対するマッピング規則は、表Ｉに示されるように見出される（Ｓ４に対し、ｘ１＝３、ｘ３＝ｘ５＝０）。
【０１１９】
【表９】
2017528796.tif 000030
【０１２０】
同様の手順は、図４の近隣のサブセットグラフの他の状態に対して実行することができる。すべてのサブセットに同じ手順を適用することによって、コードＣ１に対する変調表は、以下の表Ｊに示されるように得ることができる。表Ｊは、２５６行と４列とを含み、第１および第３の列は、２進ソースコード語（ｕ１，ｕ２，．．．，ｕ８，ｕ９）を示し、第２および第４の列は、第１および第３のそれぞれの列の同じ行のソースコード語に割り当てられた４進目的コード語（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５）を示し、５１２のソースコード語／目的コード語マッピングを含むコードブックをもたらす。
【０１２１】
従って、変調シーケンスのランレングスを制限し、自己可逆相補性を回避し、復調後のビット誤り率を最小化する、高効率で変調コードを生成するための方法が提供される。
【０１２２】
図５を参照すると、複数のソースコード語を複数の目的コード語にマッピングするためのコード生成装置５００の実施形態が概略的に示されている。示される装置は、複数のソースコード語を複数の目的コード語にマッピングするための装置の一部として、説明されるコードブック生成方法の利点および特性の実装を可能にする。
【０１２３】
装置５００は、目的コード語を受信するための第１の入力５０１と、ソースコード語を受信するための第２の入力５０２とを有する。別の実施形態では、両方の入力は、単一の入力またはインタフェースとして実装することができる。コード語は、メモリデバイスまたはコード語を生成するように構成された処理デバイスから受信される。実施形態では、メモリデバイスまたは処理デバイスは、装置５００に含めることができる。
【０１２４】
装置５００は、第１の入力５０１を通じて停止された複数の目的コード語を目的コード語の複数のサブセットに分類するように構成されたコード語分類ユニット５０３を含み、目的コード語は識別部分および残留部分を含み、複数のサブセットのうちの同じサブセットに対応する目的コード語の識別部分は同一である。
【０１２５】
装置５００は、選択ユニット５０４をさらに含み、選択ユニット５０４は、コード語分類ユニット５０３に接続され、複数のサブセットに対処するためにソースコード語のコードシンボルの第１のセットを選択するように構成される。ソースコード語は、第２の入力５０２を通じて受信される。
【０１２６】
さらに、決定ユニット５０５は、コード語分類ユニット５０３に接続される。決定ユニット５０５は、サブセットに対して、複数のサブセット内の１つまたは複数の対応する近隣のサブセットを決定するように構成され、１つまたは複数の近隣のサブセットの目的コード語の識別部分は、最大でコードシンボルの既定の量だけ、対応するサブセットの目的コード語の識別部分と異なる。
【０１２７】
さらに、装置５００は、少なくとも選択ユニット５０４および決定ユニット５０５に接続されるマッピングユニット５０６を含む。マッピングユニット５０６は、コードシンボルの対応する第１のセットが同じサブセットに対処する場合に、前記ソースコード語が割り当てられる前記サブセットの目的コード語にソースコード語を割り当てるように構成され、それにより、前記サブセットの目的コード語であって、それらの近隣のサブセットの目的コード語の対応する残留部分と同一のそれらの残留部分を有する目的コード語の量が最適化基準と一致する（例えば、最大化される）。
【０１２８】
生成された目的コード語は、出力して、メモリなどに格納することができる。図５に示される実施形態では、マッピングユニット５０６は、コード語シーケンス生成ユニット５０７に接続され、コード語シーケンス生成ユニット５０７は、目的コード語のうちの１つまたは複数から少なくとも１つのコード語シーケンスを生成するように構成される。コード語シーケンスは、シンセサイザユニット５０８に提供され、シンセサイザユニット５０８は、セグメントを含む少なくとも１つの核酸分子を合成するように構成され、ヌクレオチドの配列は、少なくとも１つのコード語シーケンスと一致するように配置される。
【０１２９】
図５に示される実施形態では、示される装置５００は、生成されたコード語シーケンスを受信するために接続されたシンセサイザユニット５０８を含む。シンセサイザユニット５０８は、核酸分子（例えば、ＤＮＡまたはＲＮＡ鎖）を合成するように構成され、核酸分子の各々はセグメントを含み、ヌクレオチドの配列は、特定のコード語シーケンスと一致するように配置される。別の実施形態では、装置は、シンセサイザユニットを含まないが、インタフェースによってシンセサイザユニットに接続されるかまたは接続可能である。
【０１３０】
実施形態では、装置５００は、保存システム（例えば、ＤＮＡ保存システムまたはＲＮＡ保存システム）などの別の装置またはシステムの一部であるデバイスである。
【０１３１】
装置５００は、例えば、コードを格納するための少なくとも１つのメモリデバイスに接続されるかまたは同メモリデバイスを含む、コード（すなわち、コードブック）を生成するように構成されたプログラム可能論理回路または処理デバイスであり得る。
【０１３２】
コード語分類ユニット５０３、選択ユニット５０４、決定ユニット５０５、マッピングユニット５０６およびコード語シーケンス生成ユニット５０７は、例えば、別個のデバイスとして、共同で少なくとも１つのデバイスもしくは論理回路として、またはマイクロプロセッサ、マイクロコントローラもしくは他の処理デバイス、コンピュータもしくは他のプログラム可能装置によって実行される機能として提供することができる。
【０１３３】
当業者に理解されるように、本原理の態様は、装置、システム、方法またはコンピュータ可読媒体として具体化することができる。それに従って、本原理の態様は、ハードウェア実施形態、ソフトウェア実施形態、またはソフトウェア態様とハードウェア態様とを組み合わせた実施形態の形態を取ることができる。そのうえ、本原理の態様は、コンピュータ可読記憶媒体の形態を取ることができる。１つまたは複数のコンピュータ可読記憶媒体のいかなる組合せも利用することができる。
【０１３４】
本原理の態様は、例えば、プログラム可能装置上で実行する際またはプログラム可能装置が本原理の実施形態による装置もしくはシステムの機能を実行できるようにする際に、本原理の実施形態による方法のステップを実行するためのコード部分を含むコンピュータプログラムにおいて少なくとも部分的に実装することができる。
【０１３５】
さらに、示されるいかなる接続も、直接または間接接続であり得る。そのうえ、当業者であれば、論理ブロック間の境界は単なる例示であり、代替の実施形態は、論理ブロックを併合することも、様々な論理ブロック上の機能の代替の分解を課すことも可能であることが認識されよう。
【０１３６】
【表１０】
2017528796.tif 000031
【０１３７】
【表１１】
2017528796.tif 000032
【０１３８】
【表１２】
2017528796.tif 000033
【０１３９】
【表１３】
2017528796.tif 000034
【０１４０】
【表１４】
2017528796.tif 000035
【０１４１】
【表１５】
2017528796.tif 000036
【０１４２】
【表１６】
2017528796.tif 000037
【０１４３】
【表１７】
2017528796.tif 000038
【図１】
2017528796.tif 000039
【図２】
2017528796.tif 000040
【図３】
2017528796.tif 000041
【図４】
2017528796.tif 000042
【図５】
2017528796.tif 000043
【国際調査報告】
2017528796.tif 000044