
提出了一種代碼生成方法和裝置。特別地,本公開(kāi)涉及用于將源代碼字映射到目標(biāo)代碼字(例如適于對(duì)用于存儲(chǔ)在合成核酸鏈中的信息進(jìn)行編碼)的方法和裝置,并且涉及相應(yīng)的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
背景技術(shù):
:核酸是聚合大分子并且由稱為核苷酸的單體序列組成。每個(gè)核苷酸由糖組分、磷酸基團(tuán)和含氮堿基或核堿基組成。核苷酸的糖組分為脫氧核糖的核酸分子是dna(脫氧核糖核酸)分子,而核苷酸的糖組分為核糖的核酸分子被稱為rna(核糖核酸)分子。dna和rna是出現(xiàn)在生物體中的生物聚合物。核酸分子被組裝為核苷酸的串或鏈??梢匀斯ど珊怂岱肿?,并且它們的串結(jié)構(gòu)可以用于對(duì)任何種類的用戶數(shù)據(jù)進(jìn)行編碼。為了在合成的、即人工創(chuàng)建的dna或rna中存儲(chǔ)數(shù)據(jù),通常生成短dna或rna片段(低聚核苷酸,短:寡核苷酸)。利用這些核酸片段,可以實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)系統(tǒng),其中數(shù)據(jù)存儲(chǔ)在核酸分子中。合成的核酸分子攜帶由形成核酸分子的一連串不同核苷酸所編碼的信息。每個(gè)合成的核酸分子由通過(guò)使用合成器的生物化學(xué)處理所生成的核苷酸的序列或串組成,并且表現(xiàn)寡核苷酸或核酸片段,其中核苷酸的序列或級(jí)聯(lián)對(duì)與信息單元的集合(例如,用戶數(shù)據(jù)的信息位的集合)相對(duì)應(yīng)的代碼字序列進(jìn)行編碼。例如,在dna存儲(chǔ)系統(tǒng)中生成短dna片段。可以存儲(chǔ)這些分子,并且可以通過(guò)使用測(cè)序器讀取核苷酸序列來(lái)從存儲(chǔ)的分子中取回信息。測(cè)序是確定特定核酸片段內(nèi)的核苷酸的順序的處理。測(cè)序可以解釋為讀取處理。核苷酸的讀出順序被處理或解碼以恢復(fù)存儲(chǔ)在核酸片段中的原始信息。在該背景下,術(shù)語(yǔ)“核酸片段”、“低聚核苷酸”和“寡核苷酸”可互換地使用并且指代短核酸鏈。該背景下的術(shù)語(yǔ)“短”應(yīng)理解為與天然dna的長(zhǎng)度相比是短的,該天然dna對(duì)生物體使用的遺傳指令進(jìn)行編碼并且可以由數(shù)百萬(wàn)個(gè)核苷酸組成。合成的寡核苷酸可以包含多于一個(gè)(例如多于百個(gè),例如在100與300之間,或者幾千個(gè))核苷酸。該技術(shù)使得能夠提供數(shù)據(jù)存儲(chǔ)系統(tǒng),其中寫(xiě)入處理基于作為對(duì)要存儲(chǔ)的信息進(jìn)行編碼的核苷酸序列的核酸片段的創(chuàng)建。生成的核酸片段例如作為固體物質(zhì)或者溶解于液體中而存儲(chǔ)在核酸存儲(chǔ)容器中。核酸存儲(chǔ)的特性可以取決于存儲(chǔ)的數(shù)據(jù)的量和在將發(fā)生數(shù)據(jù)的讀出之前的預(yù)期時(shí)間。合成的dna或rna中的數(shù)字信息存儲(chǔ)可以提供高容量、低維護(hù)的信息存儲(chǔ)。已經(jīng)在“next-generationdigitalinformationstorage”,church等人,科學(xué)(science)第337卷,第1628頁(yè),2012年和“towardspractical,high-capacity,low-maintenanceinformationstorageinsynthesizeddna”,goldman等人,自然(nature),第494卷,2013年中研究了dna存儲(chǔ)。數(shù)據(jù)可以是要存儲(chǔ)的任何種類的有序數(shù)字源數(shù)據(jù)(例如二進(jìn)制或四進(jìn)制代碼符號(hào)的序列),對(duì)應(yīng)于數(shù)字(例如二進(jìn)制)編碼的信息,諸如文本、圖像、音頻或視頻數(shù)據(jù)。由于有限的寡核苷酸長(zhǎng)度,數(shù)據(jù)通常分布到多個(gè)寡核苷酸。在這樣的核酸存儲(chǔ)系統(tǒng)中,寡核苷酸經(jīng)歷幾個(gè)處理階段:合成寡核苷酸,即創(chuàng)建要存儲(chǔ)的核酸鏈,擴(kuò)增寡核苷酸,即增加每個(gè)單寡核苷酸的數(shù)目,例如增加到幾百個(gè)或數(shù)千個(gè),以及測(cè)序寡核苷酸,即分析每個(gè)寡核苷酸的核苷酸序列。這些處理階段可能經(jīng)歷錯(cuò)誤,導(dǎo)致不可解碼或者不正確解碼的信息。dna鏈由通過(guò)它們各自的核堿基或含氮堿基識(shí)別的四種不同的核苷酸組成,即腺嘌呤、胸腺嘧啶、胞嘧啶和鳥(niǎo)嘌呤,分別簡(jiǎn)稱為a、t、c和g。rna鏈也由通過(guò)它們各自的核堿基識(shí)別的四種不同的核苷酸組成,即腺嘌呤、尿嘧啶、胞嘧啶和鳥(niǎo)嘌呤,分別簡(jiǎn)稱為a、u、c和g。信息被存儲(chǔ)在核苷酸序列中。作為信息傳輸系統(tǒng),從信息位到不同核苷酸的這種映射可以解釋為以a、t、c、g作為調(diào)制符號(hào)(或者分別是a、u、c和g)的調(diào)制,其中符號(hào)字母表的大小為4。相反,從給定符號(hào)元組或目標(biāo)代碼字到信息位元組或源代碼字的判決規(guī)則可以稱為解調(diào)。核堿基傾向于經(jīng)由氫鍵連接到它們的互補(bǔ)配對(duì)物。例如,天然dna通常顯示雙螺旋結(jié)構(gòu),其中一條鏈的a連接到另一條鏈的t,并且類似地,c傾向于連接到g。在該背景下,a和t以及c和g被稱為互補(bǔ)。相應(yīng)地,a與u和g與c形成互補(bǔ)rna堿基對(duì)。如果核苷酸序列的反向平行排列導(dǎo)致核堿基在每個(gè)位置與它們的配對(duì)物互補(bǔ),則認(rèn)為兩個(gè)核苷酸序列彼此“反向互補(bǔ)”。反向互補(bǔ)性不只發(fā)生在單獨(dú)的dna或rna鏈之間。核苷酸序列也可能具有內(nèi)部或自反向互補(bǔ)性。作為示例,如果片段在互補(bǔ)、反向步驟之后與自身相同,則認(rèn)為dna片段是自反向互補(bǔ)的。例如,dna片段aatctagatt是自反向互補(bǔ)的:原始dna片段-aatctagatt;互補(bǔ)-ttagatctaa;順序反向-aatctagatt??赡懿蝗菀诇y(cè)序長(zhǎng)的自反向互補(bǔ)片段,這妨礙在鏈中編碼的信息的正確解碼。此外,測(cè)試已經(jīng)顯示,如果核苷酸游程長(zhǎng)度(即相同核苷酸的級(jí)聯(lián)或序列)超過(guò)一定長(zhǎng)度,則該游程長(zhǎng)度可能降低測(cè)序精度。此外,由于擴(kuò)增處理和測(cè)序在寡核苷酸中的不同位置引入錯(cuò)誤,因此許多測(cè)序的寡核苷酸可能不包含正確信息。因此,應(yīng)當(dāng)使用特定的調(diào)制編碼,其允許以高編碼效率對(duì)信息或源數(shù)據(jù)進(jìn)行編碼,同時(shí)具有降低的不正確解碼的概率。技術(shù)實(shí)現(xiàn)要素:根據(jù)本原理的一方面,一種將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的計(jì)算機(jī)實(shí)現(xiàn)的代碼本生成方法包括提供多個(gè)源代碼字和多個(gè)目標(biāo)代碼字;將多個(gè)目標(biāo)代碼字分組成目標(biāo)代碼字的多個(gè)子集,目標(biāo)代碼字包括識(shí)別部分和剩余部分,其中與所述多個(gè)子集中的同一子集相對(duì)應(yīng)的目標(biāo)代碼字的識(shí)別部分是相同的;選擇用于尋址所述多個(gè)子集的源代碼字的第一代碼符號(hào)集合;針對(duì)所述子集確定所述多個(gè)子集內(nèi)的一個(gè)或多個(gè)相應(yīng)的相鄰子集,其中一個(gè)或多個(gè)相鄰子集的目標(biāo)代碼字的識(shí)別部分與相應(yīng)子集的目標(biāo)代碼字的識(shí)別部分相差達(dá)預(yù)定數(shù)量的代碼符號(hào);以及將相應(yīng)的第一代碼符號(hào)集合尋址同一子集的源代碼字分配到所述子集的目標(biāo)代碼字,使得所述源代碼字所分配到的所述子集的目標(biāo)代碼字的剩余部分與所述子集的相鄰子集的目標(biāo)代碼字的相應(yīng)剩余部分相同的所述子集的目標(biāo)代碼字的數(shù)量對(duì)應(yīng)于優(yōu)化標(biāo)準(zhǔn),例如被最大化。相應(yīng)地,一種用于將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼生成裝置包括用于接收目標(biāo)代碼字的第一輸入端(501)和用于接收源代碼字的第二輸入端(502);代碼字分組單元,被配置為將多個(gè)目標(biāo)代碼字分組成目標(biāo)代碼字的多個(gè)子集,目標(biāo)代碼字包括識(shí)別部分和剩余部分,其中與所述多個(gè)子集中的同一子集相對(duì)應(yīng)的目標(biāo)代碼字的識(shí)別部分是相同的;選擇單元,連接到代碼字分組單元,并且被配置為選擇用于尋址所述多個(gè)子集的源代碼字的第一代碼符號(hào)集合;確定單元,連接到代碼字分組單元,并且被配置為針對(duì)所述子集確定所述多個(gè)子集內(nèi)的一個(gè)或多個(gè)相應(yīng)的相鄰子集,其中一個(gè)或多個(gè)相鄰子集的目標(biāo)代碼字的識(shí)別部分與相應(yīng)子集的目標(biāo)代碼字的識(shí)別部分相差達(dá)預(yù)定數(shù)量的代碼符號(hào);以及映射單元,連接到選擇單元和確定單元,并且被配置為將相應(yīng)的第一代碼符號(hào)集合尋址同一子集的源代碼字分配到所述子集的目標(biāo)代碼字,使得所述源代碼字所分配到的所述子集的目標(biāo)代碼字的剩余部分與所述子集的相鄰子集的目標(biāo)代碼字的相應(yīng)剩余部分相同的所述子集的目標(biāo)代碼字的數(shù)量對(duì)應(yīng)于優(yōu)化標(biāo)準(zhǔn),例如被最大化。此外,一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中存儲(chǔ)有使得能夠?qū)⒍鄠€(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的指令,所述指令當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)使得計(jì)算機(jī):-提供多個(gè)源代碼字和多個(gè)目標(biāo)代碼字;-將多個(gè)目標(biāo)代碼字分組成目標(biāo)代碼字的多個(gè)子集,目標(biāo)代碼字包括識(shí)別部分和剩余部分,其中與所述多個(gè)子集中的同一子集相對(duì)應(yīng)的目標(biāo)代碼字的識(shí)別部分是相同的;-選擇用于尋址所述多個(gè)子集的源代碼字的第一代碼符號(hào)集合;-針對(duì)所述子集確定所述多個(gè)子集內(nèi)的一個(gè)或多個(gè)相應(yīng)的相鄰子集,其中一個(gè)或多個(gè)相鄰子集的目標(biāo)代碼字的識(shí)別部分與相應(yīng)子集的目標(biāo)代碼字的識(shí)別部分相差達(dá)預(yù)定數(shù)量的代碼符號(hào);以及-將相應(yīng)的第一代碼符號(hào)集合尋址同一子集的源代碼字分配到所述子集的目標(biāo)代碼字,使得所述源代碼字所分配到的所述子集的目標(biāo)代碼字的剩余部分與所述子集的相鄰子集的目標(biāo)代碼字的相應(yīng)剩余部分相同的所述子集的目標(biāo)代碼字的數(shù)量對(duì)應(yīng)于優(yōu)化標(biāo)準(zhǔn)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)其中存儲(chǔ)有指令,該指令當(dāng)由計(jì)算機(jī)執(zhí)行時(shí)使得計(jì)算機(jī)進(jìn)行所描述的方法的步驟。源代碼字具有第一預(yù)定義長(zhǎng)度,即由第一預(yù)定義數(shù)量的代碼符號(hào)組成。目標(biāo)代碼字具有第二預(yù)定義長(zhǎng)度,即由第二預(yù)定義數(shù)量的代碼符號(hào)組成。在實(shí)施例中,目標(biāo)代碼字包括四進(jìn)制代碼符號(hào)的序列。源代碼字可以包括二進(jìn)制代碼符號(hào)的序列。對(duì)于目標(biāo)代碼字的四進(jìn)制代碼符號(hào)的使用允許所使用的符號(hào)到dna或rna核苷酸或核堿基的直接對(duì)應(yīng)或映射,并且實(shí)現(xiàn)比例如二進(jìn)制符號(hào)0和1到四個(gè)不同核苷酸中的各自兩個(gè)的映射更有效率的編碼。相鄰子集具有到相應(yīng)子集的非零漢明距離。作為示例,預(yù)定數(shù)量的代碼符號(hào)可以等于1,即,相鄰子集的代碼字在識(shí)別部分內(nèi)與相應(yīng)子集相差一個(gè)符號(hào)。針對(duì)多個(gè)子集中的每個(gè)子集確定相鄰子集。在實(shí)施例中,術(shù)語(yǔ)“對(duì)應(yīng)于優(yōu)化標(biāo)準(zhǔn)”(即,滿足優(yōu)化標(biāo)準(zhǔn))是指以下特征,即所述子集的目標(biāo)代碼字的剩余部分與所述子集的相鄰子集的目標(biāo)代碼字的相應(yīng)剩余部分相同的所述子集的目標(biāo)代碼字的數(shù)量被最大化。目標(biāo)代碼字的最大數(shù)量是指子集的目標(biāo)代碼字的剩余部分與子集的相鄰子集的目標(biāo)代碼字的相應(yīng)剩余部分相同的子集的目標(biāo)代碼字的最大可能數(shù)量。在另一實(shí)施例中,術(shù)語(yǔ)“對(duì)應(yīng)于優(yōu)化標(biāo)準(zhǔn)”是指以下特征,即目標(biāo)代碼字的所述數(shù)量適于接近但低于最大可能數(shù)量(例如低于最大可能數(shù)量1)的數(shù)目。代碼字的術(shù)語(yǔ)“部分”不一定意味著屬于該部分的代碼符號(hào)形成代碼字內(nèi)的連續(xù)符號(hào)的序列。例如,剩余部分可以嵌入識(shí)別部分,反之亦然,在多個(gè)限定位置處的代碼符號(hào)可以屬于識(shí)別部分,而剩余符號(hào)屬于剩余部分等。根據(jù)本原理的方面的解決方案提供了一種代碼本生成方案,用于生成適于合成包含相應(yīng)核苷酸序列的核酸分子的代碼字序列。通過(guò)鏈接相應(yīng)的目標(biāo)代碼字以生成適于合成寡核苷酸的代碼字序列,來(lái)完成攜帶數(shù)據(jù)或信息單元的源代碼字的編碼??蓱?yīng)用該編碼方案來(lái)適當(dāng)?shù)嘏帕行畔卧源鎯?chǔ)在核酸片段中,同時(shí)可以降低的錯(cuò)誤概率來(lái)解碼。所提供的解決方案至少具有以下效果:在識(shí)別部分內(nèi)經(jīng)受單個(gè)或多達(dá)預(yù)定數(shù)量的符號(hào)錯(cuò)誤的目標(biāo)代碼字將被正確地解碼。因此,在使用所創(chuàng)建的經(jīng)受失真的目標(biāo)代碼字的序列合成的核酸鏈或寡核苷酸中編碼的信息將具有增加的正確解碼的概率。寡核苷酸測(cè)序的可靠性得以提高,允許提供用于在核酸分子中存儲(chǔ)信息的可靠系統(tǒng),例如用于歸檔目的。在一個(gè)實(shí)施例中,在將多個(gè)目標(biāo)代碼字分組成目標(biāo)代碼字的多個(gè)子集之前,根據(jù)解碼相關(guān)標(biāo)準(zhǔn)從多個(gè)目標(biāo)代碼字中移除目標(biāo)代碼字。這里,術(shù)語(yǔ)“根據(jù)解碼相關(guān)標(biāo)準(zhǔn)”是指解碼或解碼精度對(duì)要解碼的目標(biāo)代碼字的結(jié)構(gòu)(即對(duì)目標(biāo)代碼字或目標(biāo)代碼字序列內(nèi)的連續(xù)符號(hào)的實(shí)際序列)的依賴性。例如,如果目標(biāo)代碼字用作在合成的寡核苷酸中存儲(chǔ)數(shù)據(jù)的基礎(chǔ),則合成、擴(kuò)增和測(cè)序的生物化學(xué)處理的性能精度可以分別根據(jù)所生成的或要生成的寡核苷酸內(nèi)的特定核苷酸序列而不同。其他參數(shù)也可以影響性能精度,例如其他分子的存在或物理參數(shù),諸如例如溫度,壓力等。在所描述的實(shí)施例中,移除展現(xiàn)導(dǎo)致解碼錯(cuò)誤的較高概率的可能目標(biāo)代碼字以增加正確解碼的概率。解碼相關(guān)標(biāo)準(zhǔn)例如可以是代碼符號(hào)的游程長(zhǎng)度,即目標(biāo)代碼字或目標(biāo)代碼字序列內(nèi)的連續(xù)相同的代碼符號(hào)的數(shù)目,或者分別地寡核苷酸或寡核苷酸序列內(nèi)的連續(xù)相同的核苷酸的數(shù)目。例如,對(duì)于寡核苷酸aatttgcc,a、t、g、c的游程長(zhǎng)度分別為2、3、1、2。作為示例,根據(jù)解碼相關(guān)標(biāo)準(zhǔn),移除包括大于預(yù)定義的最大游程長(zhǎng)度的相同代碼符號(hào)的游程長(zhǎng)度的目標(biāo)代碼字。這降低了由游程長(zhǎng)度問(wèn)題引起的解碼錯(cuò)誤的概率。例如,預(yù)定義的最大游程長(zhǎng)度可以是3,因?yàn)閷?shí)驗(yàn)結(jié)果已經(jīng)顯示應(yīng)該避免4個(gè)或更多個(gè)核苷酸重復(fù),諸如“aaaa”或“ttttt”,以便實(shí)現(xiàn)更可靠的測(cè)序結(jié)果。此外,移除當(dāng)與另一目標(biāo)代碼字鏈接時(shí)包括大于預(yù)定義的最大游程長(zhǎng)度的相同代碼符號(hào)的游程長(zhǎng)度的目標(biāo)代碼字。這允許避免當(dāng)兩個(gè)或更多個(gè)代碼字的序列被鏈接時(shí)出現(xiàn)相同的目標(biāo)代碼符號(hào)的游程長(zhǎng)度,例如以便創(chuàng)建適于從中生成合成的寡核苷酸的代碼字序列。因此,進(jìn)一步降低了由游程長(zhǎng)度問(wèn)題引起的解碼錯(cuò)誤的概率。考慮到游程長(zhǎng)度約束而移除目標(biāo)代碼字增加了從(剩余)目標(biāo)代碼字生成的代碼字序列對(duì)于合成相應(yīng)寡核苷酸的適合性,因?yàn)檩^長(zhǎng)的游程長(zhǎng)度(例如超過(guò)3)在合成的寡核苷酸或核酸片段中可能較不適于正確測(cè)序。在不移除目標(biāo)代碼字的情況下,例如由于游程長(zhǎng)度約束,目標(biāo)代碼字的每個(gè)符號(hào)可以表示源代碼字的兩個(gè)信息位或二進(jìn)制符號(hào)。考慮游程長(zhǎng)度約束的可能編碼可以基于向每個(gè)源代碼符號(hào)分配兩個(gè)不同的目標(biāo)代碼符號(hào)。例如,對(duì)于源代碼符號(hào)“0”和“1”以及目標(biāo)代碼符號(hào)“a”、“t”、“g”和“c”,分配“a”和“c”到“0”,以及“g”和“t”到“1”,并且在目標(biāo)代碼符號(hào)的游程長(zhǎng)度超過(guò)允許的預(yù)定義最大游程長(zhǎng)度的情況下用其配對(duì)物替代目標(biāo)代碼符號(hào)可以用來(lái)避免游程長(zhǎng)度超過(guò)預(yù)定義最大游程長(zhǎng)度。然而,這里每個(gè)目標(biāo)符號(hào)只能表示一個(gè)源代碼符號(hào)。根據(jù)以上描述的實(shí)施例,即使在游程長(zhǎng)度約束下,游程長(zhǎng)度受約束的序列的容量也高于1。在該背景下,“容量”是指源代碼字的多少位可以由目標(biāo)代碼字的一個(gè)符號(hào)漸近地表示。由c=log2γ給出在調(diào)制之后游程長(zhǎng)度被限制在范圍[d,k]內(nèi)的m級(jí)游程長(zhǎng)度受限調(diào)制代碼的容量c(其中m是調(diào)制的字母表大小,d和k分別表示最小和最大游程長(zhǎng)度),其中γ是以下特征方程的最大實(shí)根:zk+1-zk-(m-1)zk-d+1+(m-1)=0。因此,對(duì)用于dna存儲(chǔ)的調(diào)制避免游程長(zhǎng)度超過(guò)3的游程長(zhǎng)度約束可以解釋為設(shè)計(jì)受d=1和k=3影響的四進(jìn)制游程長(zhǎng)度受限代碼。相應(yīng)的容量可以確定為c≈1.9957位/符號(hào),即每個(gè)符號(hào)(核苷酸)可以漸近地表示1.9957個(gè)信息位。在數(shù)據(jù)存儲(chǔ)的背景下,期望具有高調(diào)制效率r/c(具有碼率r位/符號(hào))的調(diào)制,因?yàn)榇鎯?chǔ)密度隨著調(diào)制效率而增加。在一個(gè)實(shí)施例中,確定步驟(即針對(duì)子集確定目標(biāo)代碼字的多個(gè)子集內(nèi)的一個(gè)或多個(gè)相應(yīng)的相鄰子集)包括或被執(zhí)行,使得基于核酸鏈內(nèi)的核苷酸的測(cè)序錯(cuò)誤概率,一個(gè)或多個(gè)相鄰子集的識(shí)別部分與相應(yīng)子集相差達(dá)與主導(dǎo)測(cè)序錯(cuò)誤相對(duì)應(yīng)的所選符號(hào)翻轉(zhuǎn)。通過(guò)僅考慮用于翻轉(zhuǎn)的主導(dǎo)符號(hào)錯(cuò)誤來(lái)限制特定子集的相鄰子集的數(shù)量。該附加約束使得相鄰子集被選擇為使得正好對(duì)于特定子集/相鄰子集對(duì),公共分配的數(shù)量最大化,即,目標(biāo)代碼字的數(shù)量量被最大化,其在識(shí)別部分內(nèi)在子集及其相鄰子集之間僅相差達(dá)所述預(yù)定義數(shù)量的代碼符號(hào),例如一個(gè)代碼符號(hào)。當(dāng)使用所生成的目標(biāo)代碼字來(lái)合成核酸鏈(諸如dna鏈)時(shí),符號(hào)被解碼的某些符號(hào)翻轉(zhuǎn)(其不同于初始編碼的符號(hào))可以是主導(dǎo)的,即比其他更可能出現(xiàn)。例如,dna存儲(chǔ)中的主導(dǎo)單個(gè)符號(hào)錯(cuò)誤是a與g之間以及c與t之間的符號(hào)轉(zhuǎn)換。通過(guò)使兩個(gè)相鄰子集之間的共同分配的數(shù)量最大化,對(duì)于源代碼字的可解碼性的影響,更精確地對(duì)于用于將源代碼字分配到目標(biāo)代碼字的子集的第一源代碼符號(hào)集合的影響,由于目標(biāo)代碼符號(hào)的識(shí)別部分內(nèi)的主導(dǎo)單個(gè)符號(hào)錯(cuò)誤被最小化或至少降低。這顯著降低了剩余錯(cuò)誤率。在一個(gè)實(shí)施例中,將多個(gè)源代碼字和目標(biāo)代碼字劃分成第一代碼和第二代碼的源代碼字和目標(biāo)代碼字,第一代碼和第二代碼的目標(biāo)代碼字都具有以下屬性,該屬性為相應(yīng)代碼的目標(biāo)代碼字的反向互補(bǔ)字仍然屬于相應(yīng)代碼,并且在第一代碼與第二代碼之間沒(méi)有公共代碼字,并且第二代碼的目標(biāo)代碼字既不等于兩個(gè)級(jí)聯(lián)的第一代碼的目標(biāo)代碼字的任何部分,也不等于級(jí)聯(lián)的第一代碼的一個(gè)目標(biāo)代碼字和第二代碼的一個(gè)目標(biāo)代碼字的任何部分,以及其中該分組、選擇、確定和分配應(yīng)用于第一代碼。在另一實(shí)施例中,代替或者除了第一代碼之外,第二代碼可以經(jīng)歷分組、選擇、確定和分配。為了避免自反向互補(bǔ)性并且由此增加解碼的正確性,通過(guò)復(fù)用第一和第二代碼的代碼字來(lái)生成代碼字序列。這允許例如要合成的非自反向互補(bǔ)核酸寡核苷酸的生成由來(lái)自第一和第二代碼的復(fù)用代碼字組成。如果根據(jù)以上描述的實(shí)施例生成第一代碼,則第二代碼可以用作合適的劃界代碼字的提供者,以避免自反向互補(bǔ)性。在一個(gè)實(shí)施例中,為了通過(guò)以降低的錯(cuò)誤概率使用用于附加信息傳輸?shù)牡诙a來(lái)增加編碼效率,可以根據(jù)以下來(lái)生成所使用的第二代碼:將第二代碼的多個(gè)目標(biāo)代碼字分組成第二代碼的目標(biāo)代碼字的多個(gè)子集,第二代碼的目標(biāo)代碼字包括識(shí)別部分和剩余部分,其中與第二代碼的目標(biāo)代碼字的多個(gè)子集中的同一子集相對(duì)應(yīng)的第二代碼的目標(biāo)代碼字的識(shí)別部分是相同的。選擇用于尋址第二代碼的目標(biāo)代碼字的多個(gè)子集的第二代碼的源代碼字的第一代碼符號(hào)集合。然后,根據(jù)使第二代碼的目標(biāo)代碼字的剩余部分之間的漢明距離最小化的成本函數(shù),將相應(yīng)的第一代碼符號(hào)集合尋址第二代碼的目標(biāo)代碼字的同一子集的第二代碼的源代碼字分配到所述子集。例如,第二代碼的目標(biāo)代碼字的識(shí)別部分可以嵌入在相應(yīng)的剩余部分的兩個(gè)部分之間。此外,源代碼字例如可以是第一預(yù)定義長(zhǎng)度的二進(jìn)制代碼字,而目標(biāo)代碼字例如可以是第二預(yù)定義長(zhǎng)度的四進(jìn)制代碼字。作為示例,使第二代碼的目標(biāo)代碼字的剩余部分之間的漢明距離最小化的成本函數(shù)可以取決于符號(hào)錯(cuò)誤概率。根據(jù)該示例實(shí)施例,成本函數(shù)并不均等地處理每個(gè)可能的錯(cuò)誤,而是考慮到根據(jù)應(yīng)用,某些符號(hào)錯(cuò)誤可能比其他錯(cuò)誤更可能發(fā)生。這允許編碼方案適應(yīng)于目標(biāo)應(yīng)用的特定錯(cuò)誤約束。作為示例,符號(hào)錯(cuò)誤概率基于核酸鏈內(nèi)的核苷酸的測(cè)序錯(cuò)誤概率。這允許編碼方案適應(yīng)于例如dna或rna存儲(chǔ)系統(tǒng)的核酸存儲(chǔ)系統(tǒng)的特定約束。在一個(gè)實(shí)施例中,生成來(lái)自一個(gè)或多個(gè)目標(biāo)代碼字的至少一個(gè)代碼字序列;并且合成包括其中核苷酸序列排列為與該至少一個(gè)代碼字序列相對(duì)應(yīng)的片段的至少一個(gè)核酸分子。核酸分子例如可以是由接收所生成的代碼字序列的合成器設(shè)備生成的dna片段或rna片段。換句話說(shuō),根據(jù)所生成的代碼字的序列來(lái)合成dna或rna寡核苷酸。合成的寡核苷酸攜帶由形成寡核苷酸的核苷酸序列編碼的信息??梢源鎯?chǔ)這些分子,并且可以通過(guò)使用測(cè)序器讀取核苷酸序列并對(duì)提取的代碼字進(jìn)行解碼來(lái)取回信息。例如,對(duì)于使用兩個(gè)不同代碼的實(shí)施例,從來(lái)自一個(gè)或多個(gè)目標(biāo)代碼字生成的至少一個(gè)代碼字序列合成寡核苷酸,其中在預(yù)定數(shù)量的第一代碼字之后插入至少一個(gè)第二代碼字。寡核苷酸包含核苷酸序列排列為與代碼字序列相對(duì)應(yīng)的片段??梢陨啥嘤谝粋€(gè)的核酸分子。由合成器生成或合成的核酸分子或寡核苷酸的數(shù)量對(duì)應(yīng)于生成的代碼字序列的數(shù)量。對(duì)于每個(gè)代碼字序列合成至少一個(gè)核酸分子。然而,可以為代碼字序列的每個(gè)或選擇的(例如高優(yōu)先級(jí)的)子集生成多個(gè)寡核苷酸。例如可以在生成所有代碼字序列之后或者在生成每個(gè)序列之后執(zhí)行合成步驟。此外,在實(shí)施例中,配置為執(zhí)行以上描述的方法的裝置或設(shè)備包含在核酸存儲(chǔ)系統(tǒng)中,諸如dna存儲(chǔ)系統(tǒng)或rna存儲(chǔ)系統(tǒng)。例如,核酸存儲(chǔ)系統(tǒng)還包含核酸存儲(chǔ)單元或容器和測(cè)序器單元或設(shè)備,該設(shè)備被配置為對(duì)合成和存儲(chǔ)的核酸分子進(jìn)行測(cè)序以取回和解碼經(jīng)編碼的代碼字序列。盡管沒(méi)有明確描述,但是可以以任何組合或子組合來(lái)采用本實(shí)施例。附圖說(shuō)明圖1示意性地圖示了將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼本生成方法的實(shí)施例;圖2示意性地圖示了將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼本生成方法的實(shí)施例的步驟;圖3示意性地圖示了將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼本生成方法的另一實(shí)施例;圖4示意性地圖示了相鄰子集圖的示例;以及圖5示意性地圖示了用于將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼生成裝置的實(shí)施例。具體實(shí)施方式為了更好地理解,現(xiàn)在將參考附圖在以下描述中更詳細(xì)地解釋本原理。應(yīng)當(dāng)理解,本原理不限于這些示范性實(shí)施例,并且在不脫離如所附權(quán)利要求中定義的本原理的范圍的情況下,也可以得當(dāng)?shù)亟M合和/或修改指定的特征。參考圖1,示意性地示出了將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼本生成方法100的實(shí)施例。術(shù)語(yǔ)“代碼字”指代諸如二進(jìn)制或四進(jìn)制代碼符號(hào)的代碼符號(hào)的序列?!霸创a字”用來(lái)提供多條信息,例如二進(jìn)制編碼位流,而“目標(biāo)代碼字”是用來(lái)以適于從中生成合成的寡核苷酸的代碼轉(zhuǎn)換的格式攜帶多條信息的代碼符號(hào)的調(diào)制序列。在第一步驟101中,提供多個(gè)源代碼字和多個(gè)目標(biāo)代碼字。在另一實(shí)施例中,這些初始的多個(gè)源代碼字和目標(biāo)代碼字可以已經(jīng)可用。在第二步驟102中,將多個(gè)目標(biāo)代碼字分組成目標(biāo)代碼字的多個(gè)子集。目標(biāo)代碼字包括識(shí)別部分和剩余部分,其中與多個(gè)子集中的同一子集相對(duì)應(yīng)的目標(biāo)代碼字的識(shí)別部分是相同的。換句話說(shuō),子集的每個(gè)目標(biāo)代碼字由同一標(biāo)識(shí)符標(biāo)識(shí),其中包括在標(biāo)識(shí)部分中的標(biāo)識(shí)符可以由在代碼字上連續(xù)或分布的單個(gè)或多個(gè)代碼符號(hào)來(lái)表示。在第三步驟103中,選擇源代碼字的第一代碼符號(hào)集合以用于尋址多個(gè)子集。第一代碼符號(hào)集合對(duì)應(yīng)于源代碼字的識(shí)別部分。在第四步驟104中,對(duì)于子集確定多個(gè)子集內(nèi)的一個(gè)或多個(gè)相應(yīng)的相鄰子集。一個(gè)或多個(gè)相鄰子集的目標(biāo)代碼字的識(shí)別部分與相應(yīng)子集的目標(biāo)代碼字的識(shí)別部分相差達(dá)預(yù)定數(shù)量的代碼符號(hào),例如一個(gè)代碼符號(hào)。在第五步驟105中,將相應(yīng)的第一代碼符號(hào)集合尋址同一子集的源代碼字分配給子集(即所述同一子集),使得子集的目標(biāo)代碼字的剩余部分與其相鄰子集的目標(biāo)代碼字的相應(yīng)剩余部分相同的子集的目標(biāo)代碼字的數(shù)量對(duì)應(yīng)于優(yōu)化標(biāo)準(zhǔn)。另外參考圖2,示意性地示出了將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼本生成方法的步驟的實(shí)施例。所示步驟指代根據(jù)圖1所示的方法提供源代碼字和目標(biāo)代碼字的步驟101的實(shí)施例的示例。這里,該提供包括根據(jù)游程長(zhǎng)度約束而預(yù)選擇的目標(biāo)代碼字,以及被劃分成第一和第二代碼的多個(gè)源代碼字和目標(biāo)代碼字。在步驟201中,提供源代碼字和初始的多個(gè)目標(biāo)代碼字。在下一步驟202中,在將多個(gè)目標(biāo)代碼字分組成目標(biāo)代碼字的多個(gè)子集之前,根據(jù)解碼相關(guān)標(biāo)準(zhǔn)從多個(gè)目標(biāo)代碼字(即初始的多個(gè)目標(biāo)代碼字)中移除目標(biāo)代碼字,其中根據(jù)解碼相關(guān)標(biāo)準(zhǔn),包括大于預(yù)定義的最大游程長(zhǎng)度的相同代碼符號(hào)的游程長(zhǎng)度的目標(biāo)代碼字被移除。在示例實(shí)施例中,將該預(yù)定義的最大游程長(zhǎng)度設(shè)置為三個(gè)代碼符號(hào)。在其他實(shí)施例中,可以將預(yù)定義的最大游程長(zhǎng)度設(shè)置為例如兩個(gè)、四個(gè)或其他值。在下一步驟203中,當(dāng)與另一目標(biāo)代碼字鏈接時(shí)包括大于預(yù)定義的最大游程長(zhǎng)度的相同代碼符號(hào)的游程長(zhǎng)度的目標(biāo)代碼字被移除。這消除了單獨(dú)或與另一目標(biāo)代碼字組合不能滿足游程長(zhǎng)度約束的所有目標(biāo)代碼字。因此,多個(gè)目標(biāo)代碼字的序列將滿足游程長(zhǎng)度約束。在另一步驟204中,將源代碼字和目標(biāo)代碼字二者劃分成適于避免自反向互補(bǔ)代碼字序列的第一和第二代碼。將多個(gè)源代碼字和目標(biāo)代碼字劃分成都具有以下屬性的第一代碼和第二代碼的源代碼字和目標(biāo)代碼字,該屬性為相應(yīng)代碼的目標(biāo)代碼字的反向互補(bǔ)代碼字仍然屬于相應(yīng)代碼,并且在第一代碼與第二代碼之間沒(méi)有公共代碼字。對(duì)于第一代碼執(zhí)行如圖1所示的分組102、選擇103、確定104和分配105的步驟。在另一實(shí)施例中,這些步驟可以附加地或替代地應(yīng)用于第二代碼。參考圖3,示意性地示出了將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼本生成方法300的另一實(shí)施例。在不限制一般性的情況下,目標(biāo)代碼字由對(duì)應(yīng)于dna核堿基并且分別由整數(shù)0、1、2、3表示的四進(jìn)制代碼符號(hào)a、t、c、g組成,而源代碼字由整數(shù)0和1表示的二進(jìn)制代碼符號(hào)組成。在所示實(shí)施例中,在第一步驟301中,生成預(yù)定義長(zhǎng)度l的所有四進(jìn)制目標(biāo)代碼字,即所有四進(jìn)制符號(hào)元組。術(shù)語(yǔ)“元組”用來(lái)指代元素的順序的列表,諸如代碼符號(hào)的序列。在第二步驟302中,從目標(biāo)代碼字的集合中,即從生成的四進(jìn)制符號(hào)元組中消除通過(guò)自身或者通過(guò)級(jí)聯(lián)兩個(gè)符號(hào)元組而違反(d,k)游程長(zhǎng)度約束的所有符號(hào)元組。通過(guò)下限d和上限k設(shè)置游程長(zhǎng)度限制,例如利用參數(shù)d=1和k=3。利用該示例參數(shù),調(diào)制之后游程長(zhǎng)度將限制為1到3。符合游程長(zhǎng)度約束的任何調(diào)制具有小于約1.9975位/符號(hào)的容量的碼率。作為示例,通過(guò)將長(zhǎng)度為9的位元組(即二進(jìn)制源代碼字)映射到長(zhǎng)度為5的(目標(biāo))符號(hào)元組(即目標(biāo)代碼字)來(lái)生成調(diào)制代碼??梢蕴娲x擇其他長(zhǎng)度。對(duì)于所選擇的示例參數(shù),相應(yīng)的碼率為1.8位/符號(hào)。為了說(shuō)明所示實(shí)施例,在調(diào)制前和調(diào)制后,將源代碼字的位元組表示為(u1,u2,u3,u4,u5,u6,u7,u8,u9),并且將目標(biāo)代碼字的四進(jìn)制符號(hào)元組表示為(x1,x2,x3,x4,x5),其中ui∈{0,1},1≤i≤9,并且xi∈{0,1,2,3},1≤i≤5。例如,對(duì)于上述所選擇的參數(shù),如下進(jìn)行步驟301和302以符合游程長(zhǎng)度約束:根據(jù)步驟301,構(gòu)建從(0,0,0,0,0)到(3,3,3,3,3)的長(zhǎng)度為5的所有1024個(gè)四進(jìn)制目標(biāo)符號(hào)元組。根據(jù)步驟302,消除步驟301中獲得的以兩個(gè)相同符號(hào)開(kāi)始或結(jié)束的目標(biāo)符號(hào)元組。換句話說(shuō),維持具有x1≠x2和x4≠x5的目標(biāo)符號(hào)元組,使得鏈接兩個(gè)目標(biāo)符號(hào)元組仍然符合游程長(zhǎng)度約束d=1、k=3。在下一步驟303中,如果需要,消除不具有反向互補(bǔ)配對(duì)物的目標(biāo)符號(hào)元組。將剩余的目標(biāo)符號(hào)元組(即目標(biāo)代碼字)的反向互補(bǔ)對(duì)表示為代碼c。利用如上所述的所選擇的示例參數(shù),所得到的目標(biāo)符號(hào)元組的集合自動(dòng)地僅包含具有反向互補(bǔ)配對(duì)物的目標(biāo)符號(hào)元組。在下一步驟304中,在c中找到目標(biāo)代碼符號(hào)元組(即目標(biāo)代碼字)的各自的反向互補(bǔ)對(duì),其符合作為使得能夠生成非自反向互補(bǔ)目標(biāo)代碼字序列的先決條件的以下自反向互補(bǔ)約束(i)和(ii)。所得到的集合具有576個(gè)目標(biāo)代碼字(屬于c的長(zhǎng)度為5的目標(biāo)符號(hào)元組)。這些目標(biāo)符號(hào)元組(即目標(biāo)代碼字)至少表現(xiàn)出以下屬性:(i)它們不是自反向互補(bǔ)的;以及(ii)任何代碼字的自反向互補(bǔ)配對(duì)物也是c內(nèi)的一個(gè)代碼字。換句話說(shuō),x∈c和分別表示代碼字及其反向互補(bǔ)配對(duì)物,其中并且在該背景下,將x和稱為反向互補(bǔ)對(duì)。換句話說(shuō),代碼c由反向互補(bǔ)對(duì)組成。在示例中,在c中存在288個(gè)反向互補(bǔ)對(duì)。在下一步驟305中,找到符合自反向互補(bǔ)約束的目標(biāo)代碼字的反向互補(bǔ)對(duì)的組合,并將其選擇為代碼c2。將剩余的反向互補(bǔ)對(duì)表示為代碼c1。更詳細(xì)地,為了避免目標(biāo)代碼字序列的自反向互補(bǔ)性,將代碼c劃分成兩個(gè)子集,表示為代碼c1和c2。要合成的dna片段由來(lái)自c1和c2的復(fù)用代碼字組成。作為示例,可以在兩個(gè)階段中進(jìn)行根據(jù)步驟305的代碼c1和c2的構(gòu)建:在第一階段中,選擇表示為y=(y1,y2,y3,y4,y5)和的代碼c中包括的反向互補(bǔ)對(duì)來(lái)構(gòu)建代碼c2,并且選擇剩余的287個(gè)反向互補(bǔ)對(duì)屬于c1。例如,可以選擇y=(0,2,0,1,0)和來(lái)構(gòu)建c2。其他選擇是可能的。僅使用來(lái)自c2的反向互補(bǔ)對(duì)中的一個(gè)代碼字(例如y)與來(lái)自c1的代碼字復(fù)用以生成適于合成dna片段的序列,同時(shí)可以選擇來(lái)自c1的所有代碼字以用于復(fù)用。僅y(而不使用)用來(lái)復(fù)用確保對(duì)于dna片段,其反向互補(bǔ)配對(duì)物僅包括否則,對(duì)于一些排列不能保證dna片段是自反向互補(bǔ)的。為了解釋的目的,使用y和二者以復(fù)用來(lái)給出反駁的示例。將可能適于dna片段的序列構(gòu)建為并且由給出其反向互補(bǔ)配對(duì)物,表示初始構(gòu)建的dna片段是自反向互補(bǔ)的。另一方面,如果僅y用于s,則y將從不出現(xiàn)在中。例如,(x1,x2,x3,x4,x5)和(x'1,x'2,x'3,x'4,x'5)表示來(lái)自c1的兩個(gè)目標(biāo)代碼字。這些代碼字可以但不必是不同的。由于c1和c2是排他的,即沒(méi)有既屬于c1又屬于c2的公共代碼字,因此c1的目標(biāo)代碼字不等于y。如果來(lái)自c1的兩個(gè)代碼字的任何組合或者來(lái)自c1的一個(gè)代碼字和的任何組合等于y,則任何包括y的dna片段將不是自反向互補(bǔ)的。具體而言,檢查y是否不等于以下組合中的任何一個(gè):(x5,x'1,x'2,x'3,x'4),(x4,x5,x'1,x'2,x'3),(x3,x4,x5,x'1,x'2),(x2,x3,x4,x5,x'1),如果y不等于這些組合中的任一并且代碼字序列包括y,則y將不出現(xiàn)在代碼字序列的反向互補(bǔ)配對(duì)物的任何位置,使其適于合成相應(yīng)的dna片段。對(duì)于如上所述的具體示例,可以使用總共18個(gè)反向互補(bǔ)對(duì)來(lái)構(gòu)建c2:{(0,1,1,1,0),(1,0,0,0,1)},{(2,1,1,1,0),(1,0,0,0,3)},{(3,1,1,1,0),(1,0,0,0,2)},{(0,2,2,2,0),(1,3,3,3,1)},{(1,2,2,2,0),(1,3,3,3,0)},{(3,2,2,2,0),(1,3,3,3,2)},{(0,3,3,3,0),(1,2,2,2,1)},{(2,3,3,3,0),(1,2,2,2,3)},{(2,0,0,0,1),(0,1,1,1,3)},{(3,0,0,0,1),(0,1,1,1,2)},{(0,2,2,2,1),(0,3,3,3,1)},{(3,2,2,2,1),(0,3,3,3,2)},{(2,3,3,3,1),(0,2,2,2,3)},{(2,0,0,0,2),(3,1,1,1,3)},{(3,0,0,0,2),(3,1,1,1,2)},{(2,1,1,1,2),(3,0,0,0,3)},{(2,3,3,3,2),(3,2,2,2,3)},{(2,0,0,0,3),(2,1,1,1,3)}。通過(guò)檢查c劃分成c1和c2的所有可能劃分可以找到該對(duì)。如果僅一對(duì)用來(lái)構(gòu)建c2,并且因此僅一個(gè)代碼字y用來(lái)構(gòu)建用于通過(guò)復(fù)用來(lái)自c1的代碼字和y來(lái)合成dna片段的序列,則單獨(dú)使用代碼c2來(lái)避免自反向互補(bǔ)性。如果更多的反向互補(bǔ)對(duì)用來(lái)構(gòu)建c2,則除了避免自反向互補(bǔ)性之外,代碼c2還可以用來(lái)編碼和傳輸信息。設(shè)定以上給出的示例,在第二階段,從所獲得的18個(gè)對(duì)中選擇16個(gè)反向互補(bǔ)對(duì)來(lái)構(gòu)建c2,并且選擇剩余的272個(gè)互補(bǔ)對(duì)來(lái)構(gòu)建c1。作為第一階段的結(jié)果,c2中的任何代碼字不等于來(lái)自c1的兩個(gè)代碼字的任何組合。例如,(x1,x2,x3,x4,x5)和y=(y1,y2,y3,y4,y5)分別是來(lái)自c1和c2的代碼字。檢查y是否不等于以下組合中的任何一個(gè):(x5,y'1,y'2,y'3,y'4),(x4,x5,y'1,y'2,y'3),(x3,x4,x5,y'1,y'2),(x2,x3,x4,x5,y'1),(y'2,y'3,y'4,y'5,x1),(y'3,y'4,y'5,x1,x2),(y'4,y'5,x1,x2,x3),(y'5,x1,x2,x3,x4),其中y'=(y'1,y'2,y'3,y'4,y'5)表示來(lái)自c2的代碼字。再次,僅來(lái)自c2中的每個(gè)反向互補(bǔ)對(duì)的一個(gè)代碼字用來(lái)復(fù)用以構(gòu)建用于生成dna片段的序列,而沒(méi)有限制從c1中選擇代碼字以用于復(fù)用。如果來(lái)自c2的所有32個(gè)代碼字(對(duì)應(yīng)于16個(gè)代碼字對(duì))都通過(guò)檢查,則它們可以用來(lái)存儲(chǔ)4位信息,因?yàn)槌擞脕?lái)與來(lái)自c1的代碼字結(jié)合避免自反向互補(bǔ)性之外,僅來(lái)自c2中的每個(gè)反向互補(bǔ)對(duì)的一個(gè)代碼字用來(lái)復(fù)用。如果不是所有32個(gè)代碼字都通過(guò)檢查,則8個(gè)反向互補(bǔ)對(duì)用來(lái)構(gòu)建c2,并且再次執(zhí)行以上檢查。如果在這種情況下通過(guò)檢查,則可以使用c2存儲(chǔ)3位信息。繼續(xù)這個(gè)處理,直到可以找到反向互補(bǔ)對(duì)的集合通過(guò)檢查。設(shè)定以上示例,來(lái)自18個(gè)對(duì)的16個(gè)反向互補(bǔ)對(duì)的任何組合通過(guò)檢查。因此,16個(gè)反向互補(bǔ)對(duì)的任何組合可以用作c2。在不限制一般性的情況下,使用以下16個(gè)反向互補(bǔ)對(duì):{(0,1,1,1,0),(1,0,0,0,1)},{(2,1,1,1,0),(1,0,0,0,3)},{(3,1,1,1,0),(1,0,0,0,2)},{(0,2,2,2,0),(1,3,3,3,1)},{(1,2,2,2,0),(1,3,3,3,0)},{(3,2,2,2,0),(1,3,3,3,2)},{(0,3,3,3,0),(1,2,2,2,1)},{(2,3,3,3,0),(1,2,2,2,3)},{(2,0,0,0,1),(0,1,1,1,3)},{(3,0,0,0,1),(0,1,1,1,2)},{(0,2,2,2,1),(0,3,3,3,1)},{(3,2,2,2,1),(0,3,3,3,2)},{(2,3,3,3,1),(0,2,2,2,3)},{(2,0,0,0,2),(3,1,1,1,3)},{(3,0,0,0,2),(3,1,1,1,2)},{(2,1,1,1,2),(3,0,0,0,3)}。因此,c2可以用于存儲(chǔ)每個(gè)代碼字的4位,并且c1中有544個(gè)代碼字,使得能夠存儲(chǔ)每個(gè)代碼字的9位。如果在來(lái)自c1的每ns個(gè)代碼字之后插入來(lái)自c2的一個(gè)代碼字,則每5(ns+1)個(gè)四進(jìn)制符號(hào)可以存儲(chǔ)4+9ns個(gè)信息位,即通過(guò)來(lái)計(jì)算碼率。例如,對(duì)于ns=10,碼率約為1.709位/符號(hào)。仍然參考圖3,在下一步驟306中,找到用于代碼c2的位元組(即源代碼字)與符號(hào)元組(即目標(biāo)代碼字)之間的分配,其使解調(diào)之后的位出錯(cuò)率最小化。設(shè)定以上給出的示例,來(lái)自c2中的每個(gè)反向互補(bǔ)對(duì)的一個(gè)代碼字用來(lái)存儲(chǔ)4位信息。在不限制一般性的情況下,可以選擇以下目標(biāo)代碼字:{(0,1,1,1,0),(2,1,1,1,0),(3,1,1,1,0),(0,2,2,2,0),(1,2,2,2,0),(1,3,3,3,2),(0,3,3,3,0),(2,3,3,3,0),(2,0,0,0,1),(3,0,0,0,1),(0,2,2,2,1),(3,2,2,2,1),(2,3,3,3,1),(2,0,0,0,2),(3,0,0,0,2),(2,1,1,1,2)}。這些代碼字的一個(gè)公共屬性是,對(duì)于固定的中間3個(gè)符號(hào)元組,存在4個(gè)代碼字,并且存在四個(gè)不同的中間3個(gè)符號(hào)元組。因此,可以根據(jù)中間3個(gè)符號(hào)元組將以上目標(biāo)代碼字劃分成四個(gè)子集??梢詫蓚€(gè)信息位映射到中間3個(gè)符號(hào)元組,并且可以根據(jù)代碼字的開(kāi)始/結(jié)束符號(hào)來(lái)分配其他兩個(gè)信息位。例如,對(duì)于作為要映射到c2中的代碼字的信息元組(即源代碼字)的(u1,u2,u3,u4),可以根據(jù)表a將前兩位映射到中間的3個(gè)符號(hào):u1,u2x2,x3,x40,00,0,00,11,1,11,02,2,21,13,3,3(表a)對(duì)于解調(diào),即從測(cè)序的3個(gè)符號(hào)元組到2位元組的判決,漢明距離,即兩個(gè)符號(hào)元組之間的不同符號(hào)的數(shù)目可以用作判決標(biāo)準(zhǔn)。將判決以上查找表中具有到測(cè)序的符號(hào)元組的最小漢明距離的符號(hào)元組。因此,導(dǎo)致一個(gè)合成符號(hào)被測(cè)序?yàn)榕c正確符號(hào)不同的符號(hào)的一個(gè)單個(gè)符號(hào)錯(cuò)誤不會(huì)引起任何位錯(cuò)誤。例如,將位元組0,0調(diào)制到符號(hào)元組0,0,0,其將用于合成。如果在測(cè)序之后發(fā)生一個(gè)符號(hào)錯(cuò)誤,并且將測(cè)序不正確的符號(hào)元組(例如1,0,0),但是在計(jì)算查找表中的符號(hào)元組之間的漢明距離之后,將判決符號(hào)元組0,0,0為正確的一個(gè),沒(méi)有導(dǎo)致位錯(cuò)誤。此外,將u3,u4映射到目標(biāo)符號(hào)x1,x5,以使位出錯(cuò)率最小化。例如,對(duì)于x2,x3,x4=0,0,0,x1,x5∈{(2,1),(3,1),(2,2),(3,2)}的情況,存在總共4·3·2·1=24種從u3,u4到x1,x5的可能的映射。由于單個(gè)符號(hào)錯(cuò)誤,兩符號(hào)元組(x1,x5)∈{(2,1),(3,1),(2,2),(3,2)}可能改變?yōu)榱硪辉M(x'1,x'5)∈{(2,1),(3,1),(2,2),(3,2)}。例如,(x1,x5)=(2,1)改變?yōu)?x'1,x'5)=(3,1),表示為(x1,x5)→(x'1,x'5)。通過(guò)列出這樣的單個(gè)符號(hào)錯(cuò)誤的所有情況,可以將所得到的位錯(cuò)誤的總數(shù)估計(jì)為其中dh((u3,u4),(u′3,u′4))表示(u3,u4)與(u'3,u'4)之間的漢明距離,并且將(u3,u4)和(u'3,u'4)映射到(x1,x5)和(x'1,x'5)以用于特定映射。根據(jù)(等式1)中給出的成本函數(shù)測(cè)試所有可能的24種映射。并且選擇使(等式1)最小化的映射作為(u3,u4)與(x1,x5)之間的適當(dāng)映射。表b中示出了一個(gè)這樣的映射:u3,u4x1,x50,02,10,13,11,02,21,13,2(表b)因此,表c中示出了對(duì)于固定的中間3個(gè)符號(hào)x2,x3,x4=0,0,0的(u1,u2,u3,u4)與(x1,x2,x3,x4,x5)之間的映射:u1,u2,u3,u4x1,x2,x3,x4,x50,0,0,02,0,0,0,10,0,0,13,0,0,0,10,0,1,02,0,0,0,20,0,1,13,0,0,0,2(表c)可以相應(yīng)地確定用于其他固定的中間3個(gè)符號(hào)樣式的映射??傊瑢?duì)于給定示例,獲得用于c2的調(diào)制表,如表d所示:(u1,u2,u3,u4)(x1,x2,x3,x4,x5)(u1,u2,u3,u4)(x1,x2,x3,x4,x5)0,0,0,02,0,0,0,11,0,0,00,2,2,2,00,0,0,13,0,0,0,11,0,0,11,2,2,2,00,0,1,02,0,0,0,21,0,1,00,2,2,2,10,0,1,13,0,0,0,21,0,1,13,2,2,2,10,1,0,00,1,1,1,01,1,0,01,3,3,3,20,1,0,12,1,1,1,01,1,0,10,3,3,3,00,1,1,03,1,1,1,01,1,1,02,3,3,3,00,1,1,12,1,1,1,21,1,1,12,3,3,3,1(表d)如果符號(hào)錯(cuò)誤概率可用,則可以將成本函數(shù)(等式1)修改為作為示例,p{2,1)→(3,1)}p{2→3}是合成符號(hào)2(對(duì)應(yīng)于核苷酸c)但測(cè)序符號(hào)3(對(duì)應(yīng)于核苷酸g)的概率。如果這樣的符號(hào)錯(cuò)誤概率可用,則可以找到適當(dāng)?shù)挠成湟允钩杀竞瘮?shù)(等式2)最小化。仍然參考圖3,在下一步驟307中,找到用于代碼c1的位元組(即源代碼字)與符號(hào)元組(即目標(biāo)代碼字)之間的分配,其使解調(diào)之后的位出錯(cuò)率最小化。如前所述,根據(jù)以上給出的示例,在c1中存在544個(gè)目標(biāo)代碼字。確定映射規(guī)則以將源代碼字(u1,u2,u3,u4,u5,u6,u7,u8,u9)分配給目標(biāo)代碼字(x1,x2,x3,x4,x5),使得解調(diào)之后的位出錯(cuò)率最小化。首先,考慮代碼字部分x1,x3,x5??梢则?yàn)證,對(duì)于x1,x3,x5的64個(gè)不同組合中的每一個(gè),在c1中存在8個(gè)或更多個(gè)代碼字。因此,可以將x1,x3,x5分配給6位。在不限制一般性的情況下,將u1,u2映射到x1;將u3,u4映射到x3;并且將u5,u6映射到x5。例如,可以將一個(gè)映射定義為x1=u1+2u2,x3=u3+2u4,x5=u5+2u6。(等式3)作為另一示例,如果符號(hào)錯(cuò)誤概率可用,則可以采用除了(等式3)之外的導(dǎo)致較少位出錯(cuò)概率的不同映射。換句話說(shuō),以下成本函數(shù)可以用來(lái)找到適當(dāng)?shù)挠成洌侯愃频某杀竞瘮?shù)可以用于u3,u4與x3之間以及u5,u6與x5之間的映射。根據(jù)x1,x3,x5,將c1劃分成64個(gè)子集,表示為s1,s2,…,s64,其中si的索引等于i=x1+4x3+16x5+1。例如,s1={(01010),(02010),(03010),(01020),(02020),(03020),(01030),(02030),(03030)},其中x1=x3=x5=0。在子集的基礎(chǔ)上執(zhí)行將信息位(即源代碼字)分配給符號(hào)(即目標(biāo)代碼字)同時(shí)使位出錯(cuò)概率最小化的目標(biāo)。在該背景下,使用相鄰子集的概念。由于每個(gè)子集由x1,x3,x5作為目標(biāo)代碼字的識(shí)別部分索引,因此通過(guò)翻轉(zhuǎn)x1,x3,x5的預(yù)定義數(shù)量的符號(hào)(例如一個(gè)符號(hào))來(lái)獲得相鄰子集。在所示實(shí)施例中,特定子集的相鄰子集的數(shù)目是有限的,因?yàn)閷?duì)于翻轉(zhuǎn)僅考慮主導(dǎo)符號(hào)錯(cuò)誤。作為示例,用于合成和測(cè)序dna片段的主導(dǎo)單個(gè)符號(hào)錯(cuò)誤是a與g之間或c與t之間、或者等同地0與3之間或2與1之間的符號(hào)轉(zhuǎn)變。因此,在所描述的示例中,每個(gè)子集確切地具有三個(gè)相鄰子集。例如,s1具有x1=0,x3=0,x5=0,并且其相鄰子集將具有x1=3,x3=0,x5=0,或x1=0,x3=3,x5=0,或x1=0,x3=0,x5=3。因此,s1的相鄰子集是s4、s13、s49。另外參考圖4,示意性地示出了相鄰子集圖的示例。通過(guò)連接相鄰子集來(lái)獲得相鄰子集圖,其中兩個(gè)相鄰子集之間的分支上的數(shù)字表示它們之間的公共x2,x4組合的數(shù)目。作為示例,s13={(01310),(02310),(03310),(01320),(02320),(03320),(01330),(02330)},其與s1具有8個(gè)公共x2,x4組合,即{11,21,31,12,22,32,13,23}。對(duì)于3位u7,u8,u9到x2,x4的分配,使兩個(gè)相鄰子集之間的公共分配的數(shù)目最大化,使得由于x1,x3,x5的主導(dǎo)單個(gè)符號(hào)錯(cuò)誤所導(dǎo)致的對(duì)u7,u8,u9的影響最小化。換句話說(shuō),如果對(duì)于s1給出3位u7,u8,u9到x2,x4的分配,則相同的分配將應(yīng)用于s13。另一方面,s4與s1僅具有6個(gè)公共分配。因此,對(duì)于s4需要另外的2個(gè)分配,這可以根據(jù)(等式1)或(等式2)類似地找到,以使解調(diào)之后的位出錯(cuò)概率最小化。設(shè)定以上示例,確定用于s1的映射以便將三位分配給集合{11,21,31,12,22,32,13,23}中的兩個(gè)符號(hào)。表e中給出了映射的第一示例:(表e)作為示例,假設(shè)由于單個(gè)符號(hào)錯(cuò)誤,子集中的代碼字被改變?yōu)樽蛹械牧硪淮a字。例如,11被修改為21,并且位元組000將在解調(diào)期間被判定為001,導(dǎo)致1位錯(cuò)誤。通過(guò)列出這樣的單個(gè)符號(hào)錯(cuò)誤的所有情況,可以將所得到的位錯(cuò)誤的總數(shù)估計(jì)為其中(x'2,x'4)由應(yīng)用于(x2,x4)的單個(gè)符號(hào)錯(cuò)誤引起,并且(x2,x4)和(x'2,x'4)都是s1內(nèi)的組合。對(duì)于以上示例,j=51??偣驳?,在u7,u8,u9和與x2,x4之間存在8·7·6·5·4·3·2·1=40320種可能的映射。相對(duì)于估計(jì)成本函數(shù)(等式5)來(lái)測(cè)試所有映射。選擇導(dǎo)致最小j值的映射作為適當(dāng)?shù)挠成洹1韋中示出了一個(gè)這樣的映射:u7,u8,u9x2,x40002210021010321103100123101130111211111(表f)這里,相應(yīng)的成本函數(shù)導(dǎo)致j=36。因此,找到用于s1的映射規(guī)則為(表g)如果符號(hào)錯(cuò)誤概率可用,則采用這樣的錯(cuò)誤概率的成本函數(shù)可以用來(lái)找到適當(dāng)?shù)挠成洌簠⒖紙D4所示的相鄰子集圖,u7,u8,u9與x2,x4之間的映射規(guī)則也適用于s13。對(duì)于s4,檢查s4與其相鄰子集之間的公共分配。對(duì)于s1存在6個(gè)固定到它們的分配,如表h所示:u7,u8,u9x2,x4000221002100123101130111211111(表h)并且s4與s52之間存在6個(gè)公共分配,其中x2,x4∈{22,21,12,11,01,02},以及s4與s16之間存在9個(gè)公共分配,其中x2,x4∈{22,21,23,13,12,11,01,02,03}。因此,為了使相鄰子集之間的公共分配最大化,x2,x4∈{22,21,23,13,12,11,01,02}用來(lái)向它們分配3位。由于u7,u8,u9與x2,x4之間的6個(gè)分配已經(jīng)固定,因此確定u7,u8,u9∈{010,110}與x2,x4∈{01,02}之間的附加的合適的映射。再次,成本函數(shù)(等式5)或(等式6)可以用來(lái)找到適當(dāng)?shù)挠成?,同時(shí)固定u7,u8,u9與x2,x4之間的6個(gè)分配。并且通過(guò)采用(等式5),找到用于s4的映射規(guī)則,如表i所示:(對(duì)于s4,x1=3,x3=x5=0)(表i)可以對(duì)相鄰子集圖圖4中的其他情況執(zhí)行類似過(guò)程。對(duì)所有子集應(yīng)用相同過(guò)程,可以獲得用于代碼c1的調(diào)制表,如下表j所示。表j包括256行和4列,其中第一和第三列示出了二進(jìn)制源代碼字(u1,u2,u3,u4,u5,u6,u7,u8,u9),并且第二和第四列示出了分別分配給第一和第三列的同一行中的源代碼字的四進(jìn)制目標(biāo)代碼字(x1,x2,x3,x4,x5),得到包含512個(gè)源代碼字/目標(biāo)代碼字映射的代碼本。因此,提供了一種以高效率生成調(diào)制代碼的方法,其限制調(diào)制序列的游程長(zhǎng)度,避免自反向互補(bǔ)性,并且使解調(diào)之后的位出錯(cuò)率最小化。參考圖5,示意性地示出了用于將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的代碼生成裝置500的實(shí)施例。所示裝置允許將所描述的代碼本生成方法的優(yōu)點(diǎn)和特征實(shí)現(xiàn)為用于將多個(gè)源代碼字映射到多個(gè)目標(biāo)代碼字的裝置的一部分。裝置500具有用于接收目標(biāo)代碼字的第一輸入端501和用于接收源代碼字的第二輸入端502。在另一實(shí)施例中,兩個(gè)輸入可以實(shí)現(xiàn)為單個(gè)輸入或接口。從存儲(chǔ)設(shè)備或布置為生成代碼字的處理設(shè)備接收代碼字。在實(shí)施例中,存儲(chǔ)設(shè)備或處理設(shè)備可以包括在裝置500中。裝置500包括代碼字分組單元503,被配置為將通過(guò)第一輸入端501中止的多個(gè)目標(biāo)代碼字分組成目標(biāo)代碼字的多個(gè)子集,目標(biāo)代碼字包括識(shí)別部分和剩余部分,其中與多個(gè)子集中的同一子集相對(duì)應(yīng)的目標(biāo)代碼字的識(shí)別部分是相同的。裝置500還包括選擇單元504,其連接到代碼字分組單元503,并被配置為選擇源代碼字的第一代碼符號(hào)集合以用于尋址多個(gè)子集。通過(guò)第二輸入502接收源代碼字。此外,確定單元505連接到代碼字分組單元503。代碼字分組單元503被配置為針對(duì)子集確定多個(gè)子集內(nèi)的一個(gè)或多個(gè)相應(yīng)的相鄰子集,其中一個(gè)或多個(gè)相鄰子集的目標(biāo)代碼字的識(shí)別部分與相應(yīng)子集的目標(biāo)代碼字的識(shí)別部分相差達(dá)預(yù)定數(shù)量的代碼符號(hào)。此外,裝置500包括至少連接到選擇單元504和確定單元505的映射單元506。映射單元506被配置為將相應(yīng)的第一代碼符號(hào)集合尋址同一子集的源代碼字分配給所述子集的目標(biāo)代碼字,所述源代碼字被分配,使得其剩余部分與其相鄰子集的目標(biāo)代碼字的相應(yīng)剩余部分相同的所述子集的目標(biāo)代碼字的數(shù)量對(duì)應(yīng)于優(yōu)化標(biāo)準(zhǔn),例如被最大化。生成的目標(biāo)代碼字可以輸出和存儲(chǔ)在存儲(chǔ)器等中。在圖5所示的實(shí)施例中,映射單元506連接到代碼字序列生成單元507,其被配置為從一個(gè)或多個(gè)目標(biāo)代碼字生成至少一個(gè)代碼字序列。將代碼字序列提供給合成器單元508,其被配置為合成至少一個(gè)核酸分子,核酸分子包括其中核苷酸序列被排列為對(duì)應(yīng)于至少一個(gè)代碼字序列的片段。在圖5所示的實(shí)施例中,所示裝置500包括被連接以接收所生成的代碼字序列的合成器單元508。合成器單元508被配置為合成核酸分子,例如dna或rna鏈,每個(gè)鏈包含其中核苷酸序列被排列為對(duì)應(yīng)于特定代碼字序列的片段。在另一實(shí)施例中,裝置不包括合成器單元,但是通過(guò)接口連接或可連接到合成器單元。在實(shí)施例中,裝置500是作為另一裝置或系統(tǒng)(諸如存儲(chǔ)系統(tǒng),例如dna存儲(chǔ)系統(tǒng)或rna存儲(chǔ)系統(tǒng))的一部分的設(shè)備。裝置500例如可以是被布置為生成代碼(即代碼本)、連接到或包括用于存儲(chǔ)代碼的至少一個(gè)存儲(chǔ)設(shè)備的可編程邏輯電路或處理設(shè)備。代碼字分組單元503、選擇單元504、確定單元505和映射單元506以及代碼字序列生成單元507例如可以提供為單獨(dú)的設(shè)備,共同作為至少一個(gè)設(shè)備或邏輯電路,或者由微處理器、微控制器或其他處理設(shè)備、計(jì)算機(jī)或其他可編程裝置執(zhí)行的功能。如本領(lǐng)域技術(shù)人員將理解的那樣,本原理的各方面可以實(shí)施為裝置、系統(tǒng)、方法或計(jì)算機(jī)可讀介質(zhì)。因此,本原理的各方面可以采取硬件實(shí)施例、軟件實(shí)施例或?qū)④浖陀布矫娼M合的實(shí)施例的形式。此外,本原理的各方面可以采取計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的形式。可以使用一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的任何組合。本原理的各方面例如可以至少部分地實(shí)現(xiàn)在包括代碼部分的計(jì)算機(jī)程序中,該代碼部分用于當(dāng)在可編程裝置上運(yùn)行或使得可編程裝置能夠進(jìn)行根據(jù)本原理的實(shí)施例的裝置或系統(tǒng)的功能時(shí),進(jìn)行根據(jù)本原理的實(shí)施例的方法的步驟。此外,任何所示連接可以是直接連接或間接連接。此外,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,邏輯塊之間的邊界僅僅是說(shuō)明性的,并且替選實(shí)施例可以合并邏輯塊或?qū)Ω鞣N邏輯塊施加功能的替選分解。表j當(dāng)前第1頁(yè)12