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