CN112711935B - 编码方法、解码方法、装置及计算机可读存储介质 - Google Patents

编码方法、解码方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN112711935B
CN112711935B CN202011468374.8A CN202011468374A CN112711935B CN 112711935 B CN112711935 B CN 112711935B CN 202011468374 A CN202011468374 A CN 202011468374A CN 112711935 B CN112711935 B CN 112711935B
Authority
CN
China
Prior art keywords
ternary
data
preset
base sequence
characters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011468374.8A
Other languages
English (en)
Other versions
CN112711935A (zh
Inventor
戴俊彪
李敏
王洋
黄小罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Institute of Advanced Technology of CAS
Original Assignee
Shenzhen Institute of Advanced Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Institute of Advanced Technology of CAS filed Critical Shenzhen Institute of Advanced Technology of CAS
Priority to CN202011468374.8A priority Critical patent/CN112711935B/zh
Priority to PCT/CN2020/136915 priority patent/WO2022120912A1/zh
Publication of CN112711935A publication Critical patent/CN112711935A/zh
Application granted granted Critical
Publication of CN112711935B publication Critical patent/CN112711935B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请公开了一种编码方法、解码方法、装置及计算机可读存储介质,属于存储技术领域。所述方法包括:确定二进制数据对应的字符序列中出现的多种字符和每种字符的频率;根据多种字符的频率和预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,预设完全三叉树为包含2n个叶子结点的完全三叉树,第一编码表用于指示多种字符中每种字符对应的三进制编码;根据第一编码表对该字符序列进行编码,得到目标三进制数据;根据预设对应关系对目标三进制数据进行编码,确定目标碱基序列。本申请可以利用预设的固定规则的完全三叉树构建编码表进行编码,无需再基于字符频率来构建带权路径长度最小的哈夫曼树,编码规则较为简单,提高了编码效率。

Description

编码方法、解码方法、装置及计算机可读存储介质
技术领域
本申请涉及存储技术领域,特别涉及一种编码方法、解码方法及计算机可读存储介质。
背景技术
DNA(Desoxyribonucleic Acid,脱氧核糖核酸)存储技术是指利用人工合成的DNA作为存储介质来存储数据的技术。在DNA存储技术中,对于待存储的二进制数据,需要先将二进制数据编码成碱基序列,再基于编码的碱基序列人工合成DNA,以将二进制数据存储在DNA中。但是,若直接将二进制数据编码成碱基序列,则编码后的碱基序列中容易出现较长的重复碱基序列,不利于人工合成DNA。
相关技术中,为了避免二进制数据直接编码的碱基序列不利于人工合成DNA的问题,可以先将二进制数据编码成三进制数据,再将三进制数据编码成碱基序列。在将二进制数据编码成三进制数据时,为了减小三进制数据的编码长度,可以采用通用的哈夫曼编码方式将二进制数据编码成三进制数据。在通用的哈夫曼编码方式中,需要将二进制数据对应的字符序列中出现的多种字符都作为哈夫曼树的结点,并将每种字符的频率作为对应结点的权值,来构建带权路径长度最小的哈夫曼树。其中,哈夫曼树的带权路径长度是指哈夫曼树中所有结点的带权路径长度之和,每个结点的带权路径长度是指根结点到该结点的路径长度与该结点的权值的乘积。得到带权路径长度最小的哈夫曼树后,再根据该哈夫曼树中各个结点的三进制编码,来构建编码表,该编码表用于指示多种字符中每种字符对应的三进制编码。之后,即可根据该编码表,来对二进制数据对应的字符序列进行编码,得到三进制数据,再将三进制数据编码成碱基序列,从而得到二进制数据对应的目标碱基序列。
但是上述编码方式中,根据字符的频率来构建带权路径长度最小的哈夫曼树的过程较为复杂,从而导致编码规则较为复杂,编码效率较低。
发明内容
本申请实施例提供了一种编码方法、解码方法、装置及计算机可读存储介质,可以用于解决相关技术中存在的编码规则较为复杂,编码效率较低的问题。所述技术方案如下:
第一方面,提供了一种编码方法,所述方法包括:
确定待编码的二进制数据对应的字符序列;
确定所述字符序列中出现的多种字符以及每种字符的频率,所述每种字符的频率用于指示所述每种字符在所述字符序列中出现的次数;
根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表;其中,所述预设完全三叉树为包含2n个叶子结点的完全三叉树,所述预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,所述第一编码表用于指示所述多种字符中每种字符对应的三进制编码,所述n为所述二进制数据的编码单位的位数;
根据所述第一编码表,对所述字符序列进行编码,得到目标三进制数据;
根据预设对应关系对所述目标三进制数据进行编码,根据编码结果确定目标碱基序列,所述预设对应关系用于指示三进制数据与碱基对之间的对应关系。
可选地,所述根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,包括:
按照字符的频率从大到小的顺序,对所述多种字符进行排序,得到排序后的所述多种字符;
按照编码长度从短到长的顺序,从所述预设完全三叉树中各个叶子结点的三进制编码中确定排序在前的多个三进制编码,所述多个三进制编码的数量与所述多种字符的数量相同;
按照编码长度从短到长的顺序对所述多个三进制编码进行排序,得到排序后的所述多个三进制编码;
建立排序后的所述多种字符与排序后的所述多个三进制编码之间的一一对应关系,得到所述第一编码表;其中,所述第一编码表中的字符的频率越大,字符对应的三进制编码越短。
可选地,所述根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,包括:
按照对应三进制编码的编码长度,为所述预设完全三叉树中的各个叶子节点进行顺序编号,得到各个叶子结点的序号;
建立各个叶子节点的序号与三进制编码之间的对应关系,得到第二编码表;
根据所述多种字符的频率和所述第二编码表,构建所述第一编码表。
可选地,所述确定待编码的二进制数据对应的字符序列,包括:
将所述二进制数据转换为ASCII字符,得到所述字符序列。
可选地,所述预设对应关系包括多个两位的三进制数据以及每个两位的三进制数据对应的碱基对。
可选地,所述预设对应关系包括以下对应关系中的至少一种:
00对应AT;
11对应AC;
22对应AG;
01对应GC;
02对应GT;
10对应CT;
20对应GA;
12对应GG;
21对应TG。
可选地,所述根据预设对应关系对所述目标三进制数据进行编码,根据编码结果确定目标碱基序列,包括:
根据所述预设对应关系对所述目标三进制数据进行编码,得到第一碱基序列;
对所述第一碱基序列中出现的起始密码子进行替换,得到第二碱基序列,所述第二碱基序列中不包含所述起始密码子;
根据所述第二碱基序列确定所述目标碱基序列。
可选地,所述起始密码子为三位的指定碱基序列;
所述对所述第一碱基序列中出现的起始密码子进行替换,包括:
按照预设替换规则,对所述第一碱基序列中出现所述起始密码子的两个碱基对中的后两位碱基进行碱基替换,直至碱基替换后的第一碱基序列中不包含所述起始密码子为止。
可选地,所述预设替换规则包括如下替换规则中的至少一种:
将GT替换为AA;
将GA替换为TT;
将GG替换为CC;
将GC替换为TA;
将GT替换为CA。
可选地,所述根据所述第二碱基序列确定所述目标碱基序列,包括:
根据预设替换目标,按照预设替换规则对所述第二碱基序列进行碱基替换,所述预设替换目标包括GC含量要求和GC分布要求中的至少一种;
将满足所述预设替换目标的碱基替换后的第二碱基序列,确定为所述目标碱基序列。
可选地,所述根据预设对应关系对所述目标三进制数据进行编码之前,还包括:
将字符数量和字符频率排序分别转换为三进制数据,得到第一数据和第二数据,所述字符数量是指所述多种字符的数量,所述字符频率排序是指按照字符的频率从大到小的顺序的所述多种字符;
将所述第一数据、所述第二数据和所述目标三进制数据进行拼接,得到拼接三进制数据;
所述根据预设对应关系对所述目标三进制数据进行编码,包括:
根据所述预设对应关系对所述拼接三进制数据进行编码。
可选地,所述根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表之前,还包括:
构建包含2n个叶子结点的完全三叉树;
将所述完全三叉树中父结点与子结点之间的路径按照从左到右的顺序依次编码为0、1和2,得到所述预设完全三叉树,所述预设完全三叉树中每个叶子结点的三进制编码为从根结点到所述每个子结点的路径编码。
可选地,所述根据预设对应关系对所述目标三进制数据进行编码,基于编码结果确定目标碱基序列之后,还包括:
对所述目标碱基序列进行分段处理,得到多个第一分段碱基序列;
在所述多个第一分段碱基序列中的每个第一分段碱基序列上分别添加分段信息,得到多个第二分段碱基序列,所述分段信息包括引物、地址信息和纠错码中的至少一种;
基于所述多个第二分段碱基序列对应生成多个DNA。
第二方面,提供了一种解码方法,所述方法包括:
获取待解码的目标碱基序列;
根据预设对应关系对所述目标碱基序列进行解码,基于解码结果确定目标三进制数据,所述预设对应关系用于指示三进制数据与碱基对之间的对应关系;
根据预设完全三叉树中各个叶子结点的三进制编码,对所述目标三进制数据进行解码,得到字符序列,所述预设完全三叉树为包含2n个叶子结点的完全三叉树,所述预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,所述n为所述二进制数据的编码单位的位数;
确定所述字符序列对应的二进制数据。
可选地,所述获取待解码的目标碱基序列,包括:
获取多个DNA中每个DNA存储的第二分段碱基序列,得到多个第二分段碱基序列,每个第二分段碱基序列包括第一分段碱基序列和分段信息,所述分段信息包括引物、地址信息和纠错码中的至少一种;
根据所述多个第二分段碱基序列中的分段信息,获取所述多个第二分段碱基序列中的第一分段碱基序列,以及对所述多个第二分段碱基序列中的第一分段碱基序列进行拼接处理,得到所述目标碱基序列。
可选地,所述根据预设对应关系对所述目标碱基序列进行解码,基于解码结果确定目标三进制数据,包括:
根据所述预设对应关系,对所述目标碱基序列进行解码,得到拼接三进制数据;
从所述拼接三进制数据中获取第一数据、第二数据以及所述目标三进制数据,所述第一数据是对字符数量进行三进制转换得到,所述第二数据是对按照字符的频率从大到小的顺序的多种字符进行三进制转换得到。
可选地,所述根据预设完全三叉树中各个叶子结点的三进制编码,对所述目标三进制数据进行解码之前,还包括:
根据所述第一数据和所述第二数据,分别确定所述字符数量以及按照字符的频率从大到小的顺序排序的多种字符;
所述根据预设完全三叉树中各个叶子结点的三进制编码,对所述目标三进制数据进行解码,得到字符序列,包括:
根据按照字符的频率从大到小的顺序排序的多种字符,以及所述预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,所述第一编码表用于指示所述多种字符中每种字符对应的三进制编码;
根据所述第一编码表,对所述目标三进制数据进行编码,得到所述字符序列。
可选地,所述根据预设对应关系对所述目标碱基序列进行解码之前,还包括:
根据预设替换规则的逆向替换规则,对所述目标碱基序列进行碱基替换,得到第一碱基序列;
所述根据预设对应关系对所述目标碱基序列进行解码,包括:
根据所述预设对应关系,对所述第一碱基序列进行解码。
可选地,所述预设替换规则包括如下替换规则中的至少一种:
将GT替换为AA;
将GA替换为TT;
将GG替换为CC;
将GC替换为TA;
将GT替换为CA。
第三方面,提供了一种编码装置,所述装置包括:
第一确定模块,用于确定待编码的二进制数据对应的字符序列;
第二确定模块,用于确定所述字符序列中出现的多种字符以及每种字符的频率,所述每种字符的频率用于指示所述每种字符在所述字符序列中出现的次数;
第一构建模块,用于根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表;其中,所述预设完全三叉树为包含2n个叶子结点的完全三叉树,所述预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,所述第一编码表用于指示所述多种字符中每种字符对应的三进制编码,所述n为所述二进制数据的编码单位的位数;
第一编码模块,用于根据所述第一编码表,对所述字符序列进行编码,得到目标三进制数据;
第二编码模块,用于根据预设对应关系对所述目标三进制数据进行编码,根据编码结果确定目标碱基序列,所述预设对应关系用于指示三进制数据与碱基对之间的对应关系。
可选地,所述第一构建模块用于:
按照字符的频率从大到小的顺序,对所述多种字符进行排序,得到排序后的所述多种字符;
按照编码长度从短到长的顺序,从所述预设完全三叉树中各个叶子结点的三进制编码中确定排序在前的多个三进制编码,所述多个三进制编码的数量与所述多种字符的数量相同;
按照编码长度从短到长的顺序对所述多个三进制编码进行排序,得到排序后的所述多个三进制编码;
建立排序后的所述多种字符与排序后的所述多个三进制编码之间的一一对应关系,得到所述第一编码表;其中,所述第一编码表中的字符的频率越大,字符对应的三进制编码越短。
可选地,所述第一构建模块用于:
按照对应三进制编码的编码长度,为所述预设完全三叉树中的各个叶子节点进行顺序编号,得到各个叶子结点的序号;
建立各个叶子节点的序号与三进制编码之间的对应关系,得到第二编码表;
根据所述多种字符的频率和所述第二编码表,构建所述第一编码表。
可选地,所述第一确定模块用于:
将所述二进制数据转换为ASCII字符,得到所述字符序列。
可选地,所述预设对应关系包括多个两位的三进制数据以及每个两位的三进制数据对应的碱基对。
可选地,所述预设对应关系包括以下对应关系中的至少一种:
00对应AT;
11对应AC;
22对应AG;
01对应GC;
02对应GT;
10对应CT;
20对应GA;
12对应GG;
21对应TG。
可选地,所述第二编码模块用于:
编码单元,用于根据所述预设对应关系对所述目标三进制数据进行编码,得到第一碱基序列;
替换单元,用于对所述第一碱基序列中出现的起始密码子进行替换,得到第二碱基序列,所述第二碱基序列中不包含所述起始密码子;
确定单元,用于根据所述第二碱基序列确定所述目标碱基序列。
可选地,所述起始密码子为三位的指定碱基序列;所述替换单元用于:
按照预设替换规则,对所述第一碱基序列中出现所述起始密码子的两个碱基对中的后两位碱基进行碱基替换,直至碱基替换后的第一碱基序列中不包含所述起始密码子为止。
可选地,所述预设替换规则包括如下替换规则中的至少一种:
将GT替换为AA;
将GA替换为TT;
将GG替换为CC;
将GC替换为TA;
将GT替换为CA。
可选地,所述确定单元用于:
根据预设替换目标,按照预设替换规则对所述第二碱基序列进行碱基替换,所述预设替换目标包括GC含量要求和GC分布要求中的至少一种;
将满足所述预设替换目标的碱基替换后的第二碱基序列,确定为所述目标碱基序列。
可选地,所述装置还包括:
转换模块,用于将字符数量转换为三进制数据,得到第一数据,字符数量是指多种字符的数量;将按照字符的频率从大到小的顺序的所述多种字符转换为三进制数据,得到第二数据;
拼接模块,用于将所述第一数据、所述第二数据和所述目标三进制数据进行拼接,得到拼接三进制数据;
所述第二编码模块,用于根据所述预设对应关系对所述拼接三进制数据进行编码。
可选地,所述装置还包括第二构建模块,用于:
构建包含2n个叶子结点的完全三叉树;
将所述完全三叉树中父结点与子结点之间的路径按照从左到右的顺序依次编码为0、1和2,得到所述预设完全三叉树,所述预设完全三叉树中每个叶子结点的三进制编码为从根结点到所述每个子结点的路径编码。
可选地,所述装置还包括:
分段模块,用于对所述目标碱基序列进行分段处理,得到多个第一分段碱基序列;
添加模块,用于在所述多个第一分段碱基序列中的每个第一分段碱基序列上分别添加分段信息,得到多个第二分段碱基序列,所述分段信息包括引物、地址信息和纠错码中的至少一种;
存储模块,用于基于所述多个第二分段碱基序列对应生成多个DNA。
第四方面,提供了一种解码装置,所述装置包括:
获取模块,用于获取待解码的目标碱基序列;
第一解码模块,用于根据预设对应关系对所述目标碱基序列进行解码,基于解码结果确定目标三进制数据,所述预设对应关系用于指示三进制数据与碱基对之间的对应关系;
第二解码模块,用于根据预设完全三叉树中各个叶子结点的三进制编码,对所述目标三进制数据进行解码,得到字符序列,所述预设完全三叉树为包含2n个叶子结点的完全三叉树,所述预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,所述n为所述二进制数据的编码单位的位数;
第一确定模块,用于确定所述字符序列对应的二进制数据。
可选地,所述获取模块用于:
获取多个DNA中每个DNA存储的第二分段碱基序列,得到多个第二分段碱基序列,每个第二分段碱基序列包括第一分段碱基序列和分段信息,所述分段信息包括引物、地址信息和纠错码中的至少一种;
根据所述多个第二分段碱基序列中的分段信息,获取所述多个第二分段碱基序列中的第一分段碱基序列,以及对所述多个第二分段碱基序列中的第一分段碱基序列进行拼接处理,得到所述目标碱基序列。
可选地,所述第一解码模块用于:
根据所述预设对应关系,对所述目标碱基序列进行解码,得到拼接三进制数据;
从所述拼接三进制数据中获取第一数据、第二数据以及所述目标三进制数据,所述第一数据是对字符数量进行三进制转换得到,所述第二数据是对按照字符的频率从大到小的顺序的多种字符进行三进制转换得到。
可选地,所述装置还包括:
第二确定模块,用于根据所述第一数据和所述第二数据,分别确定所述字符数量以及按照字符的频率从大到小的顺序排序的多种字符;
所述第二解码模块用于:
根据按照字符的频率从大到小的顺序排序的多种字符,以及所述预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,所述第一编码表用于指示所述多种字符中每种字符对应的三进制编码;
根据所述第一编码表,对所述目标三进制数据进行编码,得到所述字符序列。
可选地,所述装置还包括:
替换模块,用于根据预设替换规则的逆向替换规则,对所述目标碱基序列进行碱基替换,得到第一碱基序列;
所述第一解码模块,用于根据所述预设对应关系,对所述第一碱基序列进行解码。
可选地,所述预设替换规则包括如下替换规则中的至少一种:
将GT替换为AA;
将GA替换为TT;
将GG替换为CC;
将GC替换为TA;
将GT替换为CA。
第五方面,提供了一种编码装置,所述装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述第一方面所述的任一种编码方法。
第六方面,提供了一种解码装置,所述装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述第二方面所述的任一种解码方法。
第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的任一种编码方法或者上述第二方面所述的任一种解码方法。
第八方面,提供了一种计算机程序产品,当所述计算机程序产品被执行时,用于实现上述第一方面所述的任一种编码方法或者上述第二方面所述的任一种解码方法。
第九方面,提供了一种编解码系统,该编解码系统包括编码装置和解码装置,编码装置用于实现上述第一方面所述的任一种编码方法,解码装置用于实现上述第二方面所述的任一种解码方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例中,通过预先设置一种固定规则的完全三叉树,使得在对二进制数据进行编码时,可以直接基于固定规则的完全三叉树以及二进制数据对应的字符序列中的字符频率来构建编码表,再基于构建的编码表将二进制数据编码成三进制数据,以及基于预设对应关系将三进制数据编码成碱基序列。由于预先设置了固定规则的完全三叉树用于构建编码表进行编码,因此在编码时,无需再基于字符频率来构建带权路径长度最小的哈夫曼树,编码规则较为简单,提高了编码效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种编码方法的流程图;
图2是本申请实施例提供的一种预设完全三叉树的示意图;
图3是本申请实施例提供的一种第二分段碱基序列的示意图;
图4是本申请实施例提供的一种解码方法的流程图;
图5是本申请实施例提供的一种编码装置的结构框图;
图6是本申请实施例提供的一种解码装置的结构框图;
图7是本申请实施例提供的一种计算机设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。
本申请实施例提供的编码方法和解码方法可以应用于DNA存储技术中。DNA存储技术是指利用人工合成的DNA作为存储介质来存储数据的技术,具有高效、存储量大、存储时间长、易获取且免维护的优点,近年来成为存储技术领域的研究热点。在DNA存储技术中,对于待存储的二进制数据,需要先将二进制数据编码成碱基序列,再基于编码的碱基序列来人工合成DNA,以将二进制数据存储在DNA中。因此,将二进制数据编码成碱基序列是DNA存储技术的研究重点。
其中,碱基序列通常包括A(Adenine,腺嘌呤)、G(Guanine,鸟嘌呤)、T(Thymine,胸腺嘧啶)、C(Cytosine,胞嘧啶)这四种碱基。碱基在生物化学中又称核碱基或含氮碱基,碱基是形成核苷的含氮化合物,核苷又是核苷酸的组分。碱基、核苷和核苷酸等单体构成了核酸的基本构件。
相关技术中,考虑到碱基序列包括A、G、T、C这四种碱基,因此在将二进制数据编码成碱基序列的过程中,可以将用0、1表示的二进制数据直接转换为用A、G、T、C表示的四进制数据,从而得到碱基序列。比如,可以将二进制数据中的00转换为A、01转换为G、10转换为T、11转换为C。但是,在将用0、1表示的二进制数据直接转换为用A、G、T、C表示的四进制数据后,很容易出现较长的重复碱基序列。比如,若二进制数据中具有较多重复的0,则转换后的碱基序列中也就容易出现较多重复的A。由于太长的重复碱基序列不利于人工合成DNA,因此,这种直接将二进制数据编码成碱基序列的编码方式不利于人工合成DNA。
相关技术中,为了避免将二进制数据直接编码的碱基序列不利于人工合成DNA的问题,可以先将二进制数据编码成三进制数据,再将三进制数据编码成碱基序列。
在相关技术中的一种实现方式中,可以先按照二进制与三进制之间的标准进制转换关系,将0、1表示的二进制数据转换成0、1、2表示的三进制数据,再将三进制数据编码成碱基序列。但是,按照二进制与三进制之间的标准进制转换关系对二进制数据进行转换后,每8位的二进制数据所表示的字符均需要用6位的三进制数据来表示,编码后的三进制数据的编码长度较大,导致空间浪费较大。
在相关技术中的另一种实现方式中,为了减小三进制数据的编码长度,可以采用通用的哈夫曼编码方式将二进制数据编码成三进制数据。比如,对于待编码的每份文件,均需要确定该文件中的二进制数据对应的字符序列中出现的多种字符以及每种字符的频率,然后根据多种字符的频率来构建带权路径长度最小的哈夫曼树,再根据该哈夫曼树中各个结点的三进制编码来构建编码表,以便根据该编码表,来对二进制数据对应的字符序列进行编码。也即是,对于待编码的不同文件,均需要根据对应文件的字符频率来构建不同的带权路径长度最小的哈夫曼树,且根据字符频率来构建带权路径长度最小的哈夫曼树的过程较为复杂,因此编码规则较为复杂,编码效率较低。
在相关技术中的另一种实现方式中,为了避免为不同的文件创建不同的哈夫曼树这种编码方式较为复杂的问题,可以预先采用通用的哈夫曼编码方式为不同的文件统一构建相同的哈夫曼编码树,比如预先统计大量文件中的字符频率,根据统计的字符频率为不同的文件统一构建哈夫曼编码树。
具体地,根据统计的字符频率为不同的文件统一投建哈夫曼编码树的过程可以包括如下步骤:1)将二进制数据能够表示的256个字符中的每个字符都作为结点,将字符的频率作为对应结点的权值ωi,构建n颗三叉树,得到三叉树集合F={T1,T2,T3,...,Tn}。其中,n=256,每颗三叉树Ti中只有一个带权值为ωi的根节点,其子树为空。字符的频率为预先统计的每个字符在大量文件中出现的次数。哈夫曼树构建的结点的个数n要满足(n-1)mod2=0,若结点个数不满足哈夫曼树的构建,则添加1个冗余结点并赋予其权值为0,此时n=n+1可满足哈夫曼树的构建。2)在F中选取出现权值最小的三个结点组成一个子树,树的根结点的权值为子节点的权值的和。3)在F中删除这三个结点,同时将新得到的三叉树放入F中。4)重复步骤2)和步骤3),直到F只包含一棵树为止。此时,剩余的一个树即为带权路径长度最小的哈夫曼树,可以将该哈夫曼树作为为不同文件统一构建的哈夫曼树。之后,可以根据统一构建的哈夫曼树中各个结点的三进制编码,构建编码表。
后续在对每份文件进行编码时,可以根据该编码表,来对文件中的二进制数据对应的字符序列进行编码,得到三进制数据,再将三进制数据编码成碱基序列,从而得到二进制数据对应的目标碱基序列。但是由于统一构建的哈夫曼树也需要根据字符的频率来构建带权路径长度最小的哈夫曼树,算法也较为复杂,编码效率较低。另外,为了便于后续解码恢复出原始数据,还需要在编码的数据外部存储该编码表。但是在数据外部存储编码表的可靠性较低,比如若外部存储的编码表被更改,或者由于软硬件等原因无法准确获取到外部存储的编码表,将导致无法对编码数据进行准确解码,从而降低了数据可靠性。若将编码表与编码数据一起存储,将会使得编码数据所需的存储空间更大,这可能会抵消哈夫曼编码方式所减少的空间消耗。
本申请实施例中,为了解决上述采用通用的哈夫曼编码方式将二进制数据编码成三进制数据的编码规则较为复杂,编码效率较低的问题,预先设置了一种固定规则的完全三叉树,使得编码时,可以直接基于固定规则的完全三叉树以及二进制数据对应的字符序列中的字符频率来构建编码表,基于构建的编码表将二进制数据编码成三进制数据,再基于预设对应关系将三进制数据编码成碱基序列。由于预先设置了固定规则的完全三叉树,因此在编码时,无需再基于字符频率来构建带权路径长度最小的哈夫曼树,编码规则较为简单,提高了编码效率。而且,由于编码规则较为简单,因此这种编码规则也无需存储在DNA的编码数据中或者存储在编码数据外部,而是可以将这种编码规则作为将二进制数据编码成三进制数据的默认编码规则,所以待编码的二进制数据都默认按照这种编码规则进行编码,从而可以在保证数据可靠性的情况下提高编码效率。
接下来,对本申请实施例提供的编码方法进行详细介绍。
图1是本申请实施例提供的一种编码方法的流程图,该方法应用于编码装置中,该编码装置可以为终端或服务器等计算机设备,终端包括但不限于手机、平板电脑、计算机、台式电脑、个人数字助理(Personal Digital Assistant,PDA)等,本申请实施例对此不作限定。参见图1,该方法包括:
步骤101:确定待编码的二进制数据对应的字符序列。
本申请实施例中,对于待编码的二进制数据,可以先将二进制数据以字符的形式进行三进制编码,以将二进制数据编码成三进制数据,再将三进制数据编码成碱基序列。在将二进制数据以字符的形式进行三进制编码之前,需要先确定二进制数据对应的字符序列。
其中,二进制数据对应的字符序列可以为ASCII(American Standard Code forInformation Interchange,美国信息交换标准代码)字符序列。比如,可以将二进制数据转换为ASCII字符,从而得到该字符序列。
对于待编码的二进制数据,可以以字节(8位二进制数据)为单位进行编码,也可以以半个字节(4位二进制数据)为单位进行编码,本申请实施例对此不作限定。若以字节为单元进行编码,则8位的二进制数据可以表示256种字符;若以半个字节为单元进行编码,则4位的二进制数据可以表示16种字符。
在一种可能的实现方式中,可以获取待存储的目标文件,将目标文件存储的文本作为待编码的二进制数据对应的字符序列。或者,获取待存储的目标文件,将目标文件存储的数据转换为二进制数据,得到待编码的二进制数据,然后确定二进制数据对应的字符序列。
步骤102:确定该字符序列中出现的多种字符以及每种字符的频率,每种字符的频率用于指示每种字符在该字符序列中出现的次数。
对于二进制数据对应的字符序列,可以统计该字符序列中出现的多种字符,以及该多种字符中每种字符的频率,以便根据该多种字符的频率构建编码表。
比如,待存储的目标文件可以为文本文件“Coding by Huffman”,该文本文件即为待编码的二进制数据对应的字符序列。为了便于读者理解,可以将文本文件“Coding byHuffman”转换为十六进制数据“43 6f 64 69 6e 67 20 62 79 2048 75 66 66 6d 616e”,用十六进制数据进行表示。
其中,十六进制数据“43 6f 64 69 6e 67 20 62 79 20 48 75 66 66 6d 61 6e”中总共出现了12种字符,这12种字符以及对应的频率分别为:('6',13),('4',3),('7',3),('2',3),('9',2),('e',2),('0',2),('3',1),('f',1),('8',1),('5',1),('d',1),('1',1)。
步骤103:根据多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表。
本申请实施例中,可以预先设置的固定规则的预设完全三叉树,在对二进制数据进行编码时,可以直接基于固定规则的完全三叉树以及二进制数据对应的字符序列中的字符频率来构建编码表,因此在编码时,无需再基于字符频率来构建带权路径长度最小的哈夫曼树,编码规则较为简单。
其中,预设完全三叉树包含2n个叶子结点的完全三叉树,n为二进制数据的编码单位的位数,叶子结点是指没有子结点的结点。预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,比如,父结点与子结点之间的路径可以按照从左到右的顺序依次编码为0、1和2,也即是,最左边的路径编码为0,中间的路径编码为1,最右边的路径编码为2。预设完全三叉树中每个叶子结点的三进制编码为从根结点到每个子结点的路径的编码。
比如,若二进制数据以字节为单位进行编码,则二进制数据的编码单位的位数n为8,预设完全三叉树为包含28(256)个叶子结点的完全三叉树。若二进制数据以半个字节为单位进行编码,则二进制数据的编码单位的位数n为4,预设完全三叉树为包含24(16)个叶子结点的完全三叉树。
请参考图2,图2是本申请实施例提供的一种预设完全三叉树的结构示意图。如图2所示,该预设完全三叉树为包含16个叶子结点的完全三叉树。该预设完全三叉树包括4层结点,第一层结点为根结点,第三层结点包括5个叶子结点,第四层结点包括11个叶子结点。这16个叶子结点的序号从左到右依次为0,1,2,...,15。该预设完全三叉树中父子结点之间的路径按照从左到右的顺序依次编码为0、1和2,每个叶子结点的三进制编码为从根结点到每个子结点的路径的编码。比如,序号为0的叶子结点的三进制编码为000,序号为1的叶子结点的三进制编码为001,序号为2的叶子结点的三进制编码为002,...,序号为15的叶子结点的序号为22。由此可知,对于包含16个叶子结点的该预设完全三叉树,其中有11个叶子结点的三进制编码的编码长度是3位,有5个叶子结点的三进制编码的编码长度为是位。比如,序号为0,1,...,10的叶子结点的三进制编码的编码长度是3位,序号为11,12,...,15的叶子结点的三进制编码的编码长度是2位。
另外,若预设完全三叉树为包含256个叶子结点的完全三叉树,则该预设完全三叉树包括七层结点。其中,第一层结点为根结点,第六层结点包括236个叶子结点,第七层结点包括20个叶子结点。预设完全三叉树中256个叶子结点的序号从左到右依次为0,1,2,...,255。预设完全三叉树中父子结点之间的路径按照从左到右的顺序依次编码为0、1和2,每个叶子结点的三进制编码为从根结点到每个子结点的路径的编码。比如,序号为0的叶子结点的三进制编码为000000,序号为1的叶子结点的三进制编码为000001,序号为2的叶子结点的三进制编码为000002,...,序号为256的叶子结点的序号为22222。由此可知,对于包含256个叶子结点的预设完全三叉树,其中有236个叶子结点的三进制编码的编码长度是5位,有20个叶子结点的三进制编码的编码长度是6位。比如,序号为0,1,...,19的叶子结点的三进制编码的编码长度是6位,序号为20,21,...,255的叶子结点的三进制编码的编码长度是5位。
对于待编码的二进制数据对应的字符序列,可以基于该字符序列中出现的多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,来构建第一编码表。其中,第一编码表用于指示多种字符中每种字符对应的三进制编码,用于将该二进制数据对应的字符序列转换成三进制数据。比如,第一编码表包括多种字符以及每种字符对应的三进制数据。
作为一个示例,根据多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表的操作可以包括:按照字符的频率从大到小的顺序,对多种字符进行排序,得到排序后的多种字符;按照编码长度从短到长的顺序,从预设完全三叉树中各个叶子结点的三进制编码中确定排序在前的多个三进制编码,多个三进制编码的数量与多种字符的数量相同;按照编码长度从短到长的顺序对确定的多个三进制编码进行排序,得到排序后的多个三进制编码;建立排序后的多种字符与排序后的多个三进制编码之间的一一对应关系,得到第一编码表。其中,第一编码表中字符的频率越大,字符对应的三进制编码越短。
也即是,第一编码表中包括多个字符以及对应的三进制编码。其中,这多个字符对应的三进制编码是从预设完全三叉树中各个叶子结点的三进制编码中获取的编码长度较短的与多个三进制编码,且这多个字符的频率与对应的三进制编码的长度呈反比,字符的频率越大,对应的三进制编码越短。如此,可以使得按照第一编码表进行编码后得到的三进制数据的平均编码长度较短,从而减小了编码数据的编码长度,节省了编码数据的存储空间。
作为一个示例,在根据多种字符的频率,以及预设规则定义的预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表之前,可以先构建预设完全三叉树。其中,构建预设完全三叉树的过程可以包括:构建包含2n个叶子结点的完全三叉树,将该完全三叉树中父结点与子结点之间的路径按照从左到右的顺序依次编码为0、1和2,得到预设完全三叉树。其中,预设完全三叉树中每个叶子结点的三进制编码为从根结点到每个子结点的路径编码。
比如,请参考图2,可以先构建包含16个叶子结点的完全三叉树,再将该完全三叉树中父结点与子结点之间的路径按照从左到右的顺序依次编码为0、1和2,从而得到图2所示的预设完全三叉树。
作为一个示例,在构建好预设完全三叉树之后,还可以按照对应三进制编码的编码长度的长度顺序,为预设完全三叉树中的各个叶子节点进行顺序编号,得到各个叶子结点的序号。然后,建立各个叶子节点的序号与三进制编码之间的对应关系,得到第二编码表。再根据多种字符的频率和第二编码表,构建第一编码表。
比如,可以按照对应三进制编码的编码长度从长到短或从短到长的顺序,为预设完全三叉树中的各个叶子节点进行顺序编号。另外,叶子结点的起始序号可以为0,也可以为1,本申请实施例对此不作限定。
其中,根据多种字符的频率和第二编码表,构建第一编码表的操作可以包括:按照字符的频率从大到小的顺序,对多种字符进行排序;按照序号从大到小的顺序从第二编码表中确定排序在前的多个序号,这多个序号的数量与多种字符的数量相同;建立按照字符的频率从大到小的顺序排序的多种字符与按照序号从大到小的顺序排序的多个序号对应的三进制编码之间的一一对应关系,得到第一编码表。
例如,假设二进制数据以半个字节为单位进行编码,预设完全三叉树包括16个叶子结点,则基于该预设完全三叉树构建的第二编码表可以如下表1所示:
表1
序号 三进制编码 序号 三进制编码
0 000 8 022
1 001 9 100
2 002 10 101
3 010 11 11
4 011 12 12
5 012 13 20
6 020 14 21
7 021 15 22
假设二进制数据对应的字符序列为上述十六进制数据“43 6f 64 69 6e 67 2062 79 20 48 75 66 66 6d 61 6e”,其中包括12种字符,这12种字符以及对应的频率分别为:('6',13),('4',3),('7',3),('2',3),('9',2),('e',2),('0',2),('3',1),('f',1),('8',1),('5',1),('d',1),('1',1)。则可以基于这12种字符的频率以及上述表1所示的第二编码表来构建的第一编码表,构建的第一编码表可以如下表2所示。
表2
序号 字符 三进制编码 序号 字符 三进制编码
0 000 8 3 022
1 001 9 0 100
2 002 10 e 101
3 1 010 11 9 11
4 d 011 12 2 12
5 5 012 13 7 20
6 8 020 14 4 21
7 f 021 15 6 22
如上述表2所示,可以从上述表1中选择排序在后的12个序号所对应的三进制编码,分别作为这12个字符的三进制编码,且字符的频率与三进制编码的序号呈正比。
再例如,若二进制数据以字节为单位进行编码,预设完全三叉树包括256个叶子结点,则基于该预设完全三叉树构建的第二编码表可以如下表3所示:
表3
Figure BDA0002832198390000201
Figure BDA0002832198390000211
Figure BDA0002832198390000221
之后,对于上述字符序列“43 6f 64 69 6e 67 20 62 79 20 48 75 66 66 6d 616e”,可以基于该字符序列中出现的12种字符的频率以及上述表3所示的第二编码表构建的第一编码表。构建的第一编码表可以如下表4所示。
表4
序号 字符 三进制编码 序号 字符 三进制编码
239 22101 247 3 22200
240 22102 248 0 22201
241 22110 249 e 22202
242 1 22111 250 9 22210
243 d 22112 251 2 22211
244 5 22120 252 7 22212
245 8 22121 253 4 22220
246 f 22122 254 6 22221
如上述表4所示,可以从上述表3中选择排序在后的12个序号对应的三进制编码,作为这12种字符的三进制编码,且字符的频率与三进制编码的序号呈正比。
另外,基于上述包含256个叶子结点的预设完全三叉树构建的编码表可知,对于8位二进制数据所表示的256种字符中,若基于该编码表对三进制进行编码,则有些字符可以编码为5位三进制数据,有些字符可以表示为6位字符。相对于二进制与三进制之间的标准进制转换关系中,每8位二进制数据均需要6位三进制数据进行表示的编码方式,能够减少二进制数据的平均编码长度,节省编码数据的存储空间。
步骤104:根据第一编码表,对该字符序列进行编码,得到目标三进制数据。
也即是,可以根据第一编码表,将二进制数据对应的字符序列中的每个字符转换成对应的三进制编码,从而得到目标三进制数据。
比如,若根据上述表2所述的第一编码表,对字符序列“43 6f 64 69 6e 67 206279 20 48 75 66 66 6d 61 6e”进行编码,则可以得到目标三进制数据“210222202122212211221012220121002212201112100210202001222222222220112201022101”。
在一种可能的实现方式中,在根据第一编码表,对该字符序列进行编码,得到目标三进制数据之外,还可以将字符数量转换为三进制数据,得到第一数据,以及将按照字符的频率从大到小的顺序的多种字符转换为三进制数据,得到第二数据。
其中,字符数量是指这多种字符的数量,字符数量可以为十进制数据。为了便于说明,按照字符的频率从大到小的顺序的多种字符还可以称为字符频率排序。示例地,可以按照十进制与三进制之间的标准进制转换关系,将十进制的字符数量转换为三进制数据。以及按照该多种字符所对应的进制与三进制之间的进制转换关系,将字符频率排序转换为三进制数据。比如,若这多种字符为ASCII字符,则可以按照ASCII字符与三进制之间的进制转换关系,将字符频率排序转换为三进制数据。
在一种可能的实现方式中,对于二进制数据对应的字符序列,还可以将该字符序列按照指定字段格式进行存储。比如,可以基于二进制数据对应的字符序列,生成指定文件。其中,指定文件包括3个字段,这3个字段中的第一个字段用于存储字符数量(ByteCount,BC)。第二个字段用于存储字符频率排序(Byte Frequency sort,BF)。第三个字段用于存储编码数据(Encoding Data),编码数据是指对二进制数的字符序列进行编码得到的目标三进制数据。
请参考图3,图3是本申请实施例提供的一种指定文件的字段格式的示意图。如图3所示,该指定文件包括三个字段,第一个字段用于存储字符数量,第二个字段用于存储字符频率排序,第三个字段用于存储编码数据。
例如,基于字符序列“43 6f 64 69 6e 67 20 62 79 20 48 75 66 66 6d 61 6e”生成的指定文件如下表5所示。如下表5所示,该指定文件的第一个字段用于存储字符数量“13”,第二个字段用于存储字符频率排序“6 4 7 2 9e 0 3f 8 5d 1”,第三个字段用于存储对二进制数的字符序列进行编码得到的目标三进制数据“210222202122212211221012220121002212201112100210202001222222222220112201022101”。
表5
Figure BDA0002832198390000241
在基于二进制数据对应的字符序列,生成指定文件格式的指定文件之后,还可以将指定文件中的第一个字段和第二字段中的数据分别转换成三进制数据,使得指定文件中各个字段中存储的数据均为三进制数据。也即是,将第一个字段中的字符数量以及第二个字段中的字符频率排序分别转换为三进制数据,从而得到第一数据和第二数据。如此,指定文件中存储的数据即为第一数据、第二数据以及目标三进制数据拼接得到的拼接三进制数据。
例如,对于上述表5所示的指定文件,在将表5中的第一个字段和第二个字段中的数据转换为三进制数据后,可以得到如下表6所示的指定文件。
表6
Figure BDA0002832198390000242
如上述表6所示,可以将表5中的第一个字段中的字符数量“13”转换为三进制数据“111”,将表5中的第二个字段中的字符频率排序“6 4 7 2 9e 0 3f8 5d 1”转换为三进制数据“020011021002021112000010120022012111001”。
步骤105:根据预设对应关系对目标三进制数据进行编码,根据编码结果确定目标碱基序列。
其中,预设对应关系用于指示三进制数据与碱基对之间的对应关系。根据该预设对应关系,可以将三进制数据按照编码单位转换依次转换成对应的碱基对,从而得到由碱基对组成的碱基序列。
作为一个示例,三进制数据的编码单位可以为两位,从而可以将每两位三进制数据依次转换为对应的碱基对,得到由碱基对组成的碱基序列。
作为一个示例,预设对应关系可以包括多个两位的三进制数据以及每个两位的三进制数据对应的碱基对。比如,该预设对应关系可以如下表7所示:
表7
两位的三进制数据 对应的碱基对
00 AT
11 AC
22 AG
01 GC
02 GT
10 CT
20 GA
12 GG
21 TG
需要说明的是,基于上述表7所示的预设对应关系对三进制数据进行编码,编码得到的碱基序列中的重复碱基序列最长为2,如此可以进一步减少较长的重复碱基序列的出现。
还需要说明的是,本申请实施例仅是以预设对应关系为上述表7所示的对应关系为例进行说明,表7所示的对应关系并不对该预设对应关系进行限定,在其他实施例中,还可以将该预设对应关系设置为其他形式的对应关系,本申请实施例对此不作限定。
作为一个示例,根据预设规则定义的预设对应关系对目标三进制数据进行编码,根据编码结果确定目标碱基序列的操作包括如下步骤:
1)根据预设对应关系对目标三进制数据进行编码,得到第一碱基序列。
也即是,可以根据该预设对应关系,将目标三进制数据转换为由A、G、C、T组成的碱基序列,从而得到第一碱基序列。
比如,可以根据表7所示的预设对应关系对目标三进制数据“210222202122212211221012220121002212201112100210202001222222222220112201022101”进行编码,得到第一碱基序列:“TG GT AG GA TG AG TG AG AC AG CT GG AG GC TG AT AG GG GA AC GG CTGT CT GA GA GC AG AG AG AG AG GA AC AG GC GT TG GC”。
进一步地,还可以根据预设对应关系对拼接三进制数据进行编码,得到第一碱基序列。其中,拼接三进制数据是对第一数据、第二数据和目标三进制数据进行拼接得到的三进制数据,第一数据是对字符数据进行三进制转换得到,第二数据是对字符频率排序进行三进制转换得到。如此,可以使得编码后的碱基序列中还包含字符数量和字符频率排序等字符信息,便于后续基于这些字符信息对编码后的碱基序列进行解码,以恢复出原始数据。
比如,根据表7所示的预设对应关系对表6所示的拼接三进制数据“111020011021002021112000010120022012111001210222202122212211221012220121002212201112100210202001222222222220112201022101”进行编码后,得到的第一碱基序列为:“AC CT GA GCCT TG AT GA TG AC GA AT GC GC GA GT GA GG AC CT GC TG GT AG GA TG AG TG AG ACAG CT GG AG GC TG AT AG GG GA AC GG CT GT CT GA GA GC AG AG AG AG AG GA AC AGGC GT TG GC”。其中,第一碱基序列中的GC含量为57.5%。
2)对第一碱基序列中出现的起始密码子进行替换,得到第二碱基序列,第二碱基序列中不包含起始密码子。
其中,起始密码子为指定蛋白质合成起始位点的密码子。密码子是指DNA上的三联体核苷酸残基序列,该序列编码着一个特定的氨基酸。比如,起始密码子可以为三位的指定碱基序列,如ATG等。由于起始密码子会影响DNA的合成,因此应尽量避免编码后的碱基序列中出现起始密码子。
本申请实施例中,为了避免编码后的碱基序列中出现起始密码子,在编码得到第一碱基序列后,还可以对第一碱基序列中出现的起始密码子进行替换,以将第一碱基序列中的起始密码子替换为其他碱基序列,从而得到不包含起始密码子的第二碱基序列。
作为一个示例,若起始密码子为三位的指定碱基序列,则可以按照预设替换规则,对第一碱基序列中出现起始密码子的两个碱基对中的后两位碱基进行碱基替换,以将后两位碱基替换为其他碱基对,直至碱基替换后的第一碱基序列中不包含所述起始密码子为止。
假设对三进制数据进行编码的过程中,是以两位碱基为单位进行转换的,且起始密码子为三位的指定碱基序列,则碱基序列中的至少连续的四位碱基会出现起始密码子,且起始密码子可能在四位碱基中的前三位或后三位。为此,可以在对第一碱基序列中出现的起始密码子进行替换的过程中,将出现起始密码子的两个碱基对中的后两位碱基进行替换,以将起始密码子替换为其他碱基序列,减少起始密码子的出现。
比如,出现的起始密码子ATG的两个碱基对中的后两位碱基可能为GT、GA、GG、TG、GC,如果将这些碱基对替换为其他碱基对,则也就可以使得替换后的这两个碱基对无法形成ATG。
作为一个示例,该预设替换规则可以包括如下替换规则中的至少一种:将GT替换为AA;将GA替换为TT;将GG替换为CC;将GC替换为TA;将GT替换为CA。比如,该预设替换规则E={GT:AA,GA:TT,GG:CC,TG:CA,GC:TA}。
3)根据第二碱基序列确定目标碱基序列。
若对第一碱基序列进行替换的替换目标为替换后的第一碱基序列不包含起始密码子,则可以直接将第二碱基序列确定为目标碱基序列。若替换目标还包括其他替换目标,则还可以根据其他替换目标,继续对第二碱基序列进行替换,以得到目标碱基序列。
作为一个示例,其他替换目标可以包括GC含量要求和GC分布要求中的至少一种。其中,GC含量要求用于指示目标碱基序列中的碱基对GC在目标碱基序列中的含量,比如GC含量要求可以为50%,邻近50%,或者大于等于50%且小于等于55%。其中,邻近50%是指GC含量与50%之间的差值在预设误差范围内,比如,预设误差范围可以为[0,1)。GC分布要求用于指示目标碱基序列中的碱基对GC在目标碱基序列中的分布情况。
作为一个示例,可以根据预设替换目标,继续对第二碱基序列进行碱基替换,直至碱基替换后的第二碱基序列满足该预设替换目标位置为止,将碱基替换后的第二碱基序列确定为目标碱基序列。其中,预设替换目标包括GC含量要求和GC分布要求中的至少一种。如此,可以实现对编码后的碱基序列中的GC含量和GC分布的控制,使得编码后的碱基序列更利于人工合成DNA。
其中,对第二碱基序列进行碱基替换时,可以将第二碱基序列中的指定碱基或指定碱基序列进行替换。比如,可以按照上述预设替换规则对第二碱基序列进行碱基替换,如将第二碱基序列中出现的GT替换为AA、GA替换为TT、GG替换为CC、GC替换为TA、GT替换为CA,直至替换后的第二碱基序列满足预设替换目标为止。
例如,在根据表7所示的预设对应关系对拼接三进制数据进行编码后,得到的第一碱基序列中的重复碱基序列最长为2。如果第一碱基序列中出现“ATG”,可以将出现“ATG”的两个碱基对的后两位碱基按照上述预设替换规则进行替换,如果替换后的第一碱基序列还出现“ATG”,则继续进行替换,直至替换后的第一碱基序列中不包含“ATG”为止。若替换目标还包括GC含量要求,且此时替换后的第一碱基序列还不满足GC含量要求,则还可以继续按照上述预设替换规则对替换后的第一碱基序列进行碱基替换,直至满足GC含量要求为止。其中,替换处理得到的目标碱基序列中的重复碱基序列最长为6,如此可以使得编码后的碱基序列的重复碱基序列长度小于或等于6。
再例如,根据表7所示的预设对应关系对表6所示的拼接三进制数据“111020011021002021112000010120022012111001210222202122212211221012220121002212201112100210202001222222222220112201022101”进行编码后,得到的第一碱基序列为:“AC CT GAGC CT TG AT GA TG AC GA AT GC GC GA GT GA GG AC CT GC TG GT AG GA TG AG TG AGAC AG CT GG AG GC TG AT AG GG GA AC GG CT GT CT GA GA GC AG AG AG AG AG GA ACAG GC GT TG GC”。
根据上述预设替换规则E对出现起始密码子“ATG”的两个碱基对中后两位碱基进行一次替换后,得到替换后的第一碱基序列为:“AC CT GA GC CT TG AT TT TG AC GA ATTA GC GA GT GA GG AC CT GC TG GT AG GA GA AG TG AG AC AG CT GG AG GC TG AT AGGG GA AC GG CT GT CT GA GA GC AG AG AG AG AG GA AC AG GC GT TG GC”。
根据上述预设替换规则E对出现起始密码子“ATG”的两个碱基对中后两位碱基进行二次替换后,得到替换后的第一碱基序列为:“AC CT GA GC CT TG AT TT TG AC GA ATTA GC GA GT GA GG AC CT GC TG GT AG GA GA AG TG AG AC AG CT GG AG GC TG AT AGGG GA AC GG CT GT CT GA GA GC AG AG AG AG AG GA AC AG GC GT TG GC”。
为了保证替换后的第一碱基序列满足GC含量要求,还可以继续对替换后的第一碱基序列进行碱基序列,比如将GC替换为TA,得到目标碱基序列:“AC CT GA TA CT TG AT TTTG AC GA AT TA TA GA GT GA GG AC CT TA TG GT AG GA GA AG TG AG AC AG CT GG AGTA TG AT AG GG GA AC GG CT GT CT GA GA TA AG AG AG AG AG GA AC AG TA GT TGTA”。
在得到最终编码的目标碱基序列之后,可以基于目标碱基序列生成DNA。另外,考虑到DNA合成长度的限制,还可以先对目标碱基序列进行分段,再基于分段碱基序列合成DNA。作为一个示例,对目标碱基序列进行分段,基于分段碱基序列合成DNA的过程可以包括如下步骤106-108。
步骤106:对目标碱基序列进行分段处理,得到多个第一分段碱基序列。
其中,第一分段碱基序列的序列长度可以小于或等于长度阈值。该长度阈值可以预先设置,比如该预设长度可以为50或60等。
作为一个示例,可以基于长度阈值,对目标碱基序列进行分段处理,得到多个第一分段碱基序列,使得每个第一分段碱基序列的序列长度小于或等于该长度阈值。
步骤107:在多个第一分段碱基序列中的每个第一分段碱基序列上分别添加分段信息,得到多个第二分段碱基序列。
其中,该分段信息可以包括添加引物、地址信息和纠错码中的至少一种。引物是指在核苷酸聚合作用起始时,刺激合成的一种具有特定核苷酸序列的大分子,引物通常是人工合成的两段寡核苷酸序列。比如引物包括第一引物和第二引物。第一引物可以为碱基序列CCAGTAT,第二引物为碱基序列AGTATCA。地址信息用于指示第一分段碱基序列在目标碱基序列所对应的文件中的位置。纠错码是指在解码端能自动地纠正数据存储过程中所发生差错的码。
作为一个示例,所添加的地址信息可以为将十进制的地址信息转换为三进制数据,再根据预设对应关系对转换的三进制数据进行编码得到的碱基序列形式的地址信息。
进一步地,该分段信息还可以包括方向信息和文件类型信息中的至少一种。其中,方向信息用于指示第一分段碱基序列的序列方向,文件类型信息用于指示第一分段碱基序列属于程序文件还是数据文件。
请参考图3,图3是本申请实施例提供的一种第二分段碱基序列的示意图。如图3所示,第二分段碱基序列中包括引物、地址信息、纠错码、方向信息、文件类型信息和第一分段碱基序列。其中,引物包括碱基序列CCAGTAT和碱基序列AGTATCA。地址信息为碱基序列TAC。方向信息为A和T。文件类型信息为C。第一分段碱基序列为TACGAGCAT。
通过在多个第一分段碱基序列中的每个第一分段碱基序列上分别添加分段信息,得到多个第二分段碱基序列,可以使得解码过程中,可以基于多个第二分段碱基序列中的分段信息获取多个第一分段碱基序列,以及对这多个第一分段碱基序列进行拼接。
步骤108:基于多个第二分段碱基序列对应生成多个DNA。
也即是,可以基于这多个第二分段碱基序列中的每个第二分段碱基序列分别生成一个DNA,从而得到人工合成的多个DNA,以将多个第二分段碱基序列分别存储在这多个DNA中。
需要说明的是,本申请实施例所述的预设完全三叉树为固定规则定义的完全三叉树,比如可以在编码时直接基于默认的编码规则构建得到。其中,该编码规则是指本申请实施例所述的编码方法,可以预先配置得到或者预先协商得到。对于任一待编码的二进制数据,均可以按照该编码规则进行编码。而且,由于编码规则较为简单,因此这种编码规则也无需存储在DNA的编码数据中或者存储在编码数据外部,而是可以将这种编码规则作为将二进制数据编码成三进制数据的默认编码规则,所以待编码的二进制数据都可以默认按照这种编码规则进行编码,从而可以在保证数据可靠性的情况下提高编码效率。
本申请实施例中,通过预先设置一种固定规则的完全三叉树,使得在对二进制数据进行编码时,可以直接基于固定规则的完全三叉树以及二进制数据对应的字符序列中的字符频率来构建编码表,再基于构建的编码表将二进制数据编码成三进制数据,以及基于预设对应关系将三进制数据编码成碱基序列。由于预先设置了固定规则的完全三叉树用于构建编码表进行编码,因此在编码时,无需再基于字符频率来构建带权路径长度最小的哈夫曼树,编码规则较为简单,提高了编码效率。
图4是本申请实施例提供的一种解码方法的流程图,该方法应用于解码装置中,该编码装置可以为终端或服务器等计算机设备,终端包括但不限于手机、平板电脑、计算机、台式电脑、个人数字助理(Personal Digital Assistant,PDA)等,本申请实施例对此不作限定。参见图4,该方法包括:
步骤401:获取待解码的目标碱基序列。
需要说明的是,本申请实施例所述的解码过程是上述图1实施例所述的编码过程的逆向过程,用于将DNA存储的碱基序列解码为二进制数据。在进行解码之前,需要先获取待解码的目标碱基序列。
其中,目标碱基序列包括A、G、T、C这四种碱基。目标碱基序列可以从1个DNA中获取得到,也可以从多个DNA中获取得到,本申请实施例对此不作限定。
作为一个示例,可以获取多个DNA中每个DNA存储的分段碱基序列,得到多个分段碱基序列,再对这多个分段碱基序列进行拼接处理,得到目标碱基序列。
比如,可以基于多个DNA的每个DNA分别获取第二分段碱基序列,即获取多个DNA中的每个DNA存储的第二分段碱基序列,得到多个第二分段碱基序列,每个第二分段碱基序列包括第一分段碱基序列和分段信息,分段信息包括引物、地址信息和纠错码中的至少一种。然后,根据多个第二分段碱基序列中的分段信息,获取多个第二分段碱基序列中的第一分段碱基序列,以及对多个第二分段碱基序列中的第一分段碱基序列进行拼接处理,得到目标碱基序列。
例如,对多个分段碱基序列进行拼接处理,可以得到如下目标碱基序列:“AC CTGA GC CT TG AT CA TT AC GA AT AA GC GA GT GA GG AC CT GC TG GT AG GA TT AG TGAG AC AG CT GG AG GC TG AT AG GG GA AC GG CT GT CT GA GA AA AG AG AG AG AG GAAC AG GC GT TG AA”。
步骤402:根据预设对应关系对目标碱基序列进行解码,基于解码结果确定目标三进制数据。
其中,预设对应关系用于指示三进制数据与碱基对之间的对应关系,能够用于将碱基序列编码成三进制数据。该预设对应关系的具体内容可以参考上述图1实施例中的相关描述,本申请实施例在此不再赘述。
作为一个示例,可以根据预设对应关系,对目标碱基序列进行解码,得到拼接三进制数据;从拼接三进制数据中获取第一数据、第二数据以及目标三进制数据。其中,第一数据是对字符数量进行三进制转换得到,第二数据是对按照字符的频率从大到小的顺序的多种字符进行三进制转换得到。
另外,还可以根据获取的第一数据和第二数据,分别确定字符数量以及按照字符的频率从大到小的顺序排序的多种字符,以便后续根据按照字符的频率从大到小的顺序排序的多种字符,对目标三进制数据进行解码。
作为另一个示例,还可以根据预设替换规则的逆向替换规则,对目标碱基序列进行碱基替换,得到第一碱基序列,再根据预设对应关系,对第一碱基序列进行解码。
其中,该预设替换规则的具体内容可以参考上述图1实施例中的相关描述,本申请实施例在此不再赘述。比如,该预设替换规则的逆向替换规则可以包括如下替换规则中的至少一种:将AA替换为GT;将TT替换为GA;将CC替换为GG;将TA替换为GC;将CA替换为GT。
其中,根据预设对应关系对第一碱基序列进行解码的方式与上述根据预设对应关系对目标碱基序列进行解码的方式同理,具体解码过程可以参考上述根据预设对应关系对目标碱基序列进行解码的相关描述,本申请实施例在此不再赘述。
例如,可以根据上述图1实施例中的预设替换规则E的逆向替换规则,将上述目标碱基序列中的相关碱基替换会原碱基,得到以下第一碱基序列:
“AC CT GA GC CT TG AT GA TG AC GA AT GC GC GA GT GA GG AC CT GC TG GTAG GA TG AG TG AG AC AG CT GG AG GC TG AT AG GG GA AC GG CT GT CT GA GA GC AGAG AG AG AG GA AC AG GC GT TG GC”。
假设预设对应关系如上述表7所示,则根据表7所示的预设对应关系对上述第一碱基序列进行解码,可以得到以下拼接三进制数据:
“111020011021002021112000010120022012111001210222202122212211221012220121002212201112100210202001222222222220112201022101”。
之后,可以从拼接三进制数据中获取第一数据、第二数据和目标三进制数据。作为一个示例,从拼接三进制数据中获取第一数据、第二数据以及目标三进制数据的操作包括:将拼接三进制数据中的前m位数据获取为第一数据,基于第一数据确定字符数量,再基于字符数量从拼接三进制数据的剩余数据中获取第二数据。然后,将第二数据之后的数据获取为目标三进制数据。
其中,m为正整数。m可以预先设置,比如m可以为3或6。可以将第一数据转换为十进制数据,将转换后的十进制数据确定为字符数量。
比如,可以将上述拼接三进制数据中的前3位“111”获取为第一数据,将3位“111”转换为十进制数据13,确定字符数量为13。然后,将前3位“111”之后的13*3位三进制数据“020011021002021112000010120022012111001”获取为第二数据,并将第二数据转换为字符序列,得到按照字符的频率从前到后的顺序排列的13个字符“6 4 7 2 9e 0 3f 8 5d1”。
另外,可以将第二数据之后的数据获取为目标三进制数据,得到以下目标三进制数据:
“210222202122212211221012220121002212201112100210202001222222222220112201022101”。
步骤403:根据预设完全三叉树中各个叶子结点的三进制编码,对目标三进制数据进行解码,得到字符序列。
其中,预设完全三叉树为包含2n个叶子结点的完全三叉树,预设完全三叉树中父子结点之间的路径按照从左到右的顺序依次编码为0、1和2,预设完全三叉树中每个叶子结点的三进制编码为从根结点到每个子结点的路径的编码。其中,n为二进制数据的编码单位的位数,可以预先设置,比如可以设置为4或8等。
作为一个示例,可以先根据按照字符的频率从大到小的顺序排序的多种字符,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,第一编码表用于指示多种字符中每种字符对应的三进制编码。然后根据第一编码表,对目标三进制数据进行编码,得到该字符序列。
需要说明的是,根据按照字符的频率从大到小的顺序排序的多种字符,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表可以参考上述图1实施例中步骤103的相关描述,本申请实施例在此不再赘述。
作为一个示例,若按照字符的频率从大到小的顺序排序的多种字符为“6 4 72 9e0 3f 8 5d 1”,预设完全三叉树为包括16个节点的完全三叉树,则根据按照字符的频率从大到小的顺序排序的多种字符,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表可以为上述表2所示的编码表。
之后,可以根据上述表2所示的第一编码表,对上述目标三进制数据“210222202122212211221012220121002212201112100210202001222222222220112201022101”进行编码,得到字符序列“43 6f 64 69 6e 67 20 62 79 20 48 75 66 666d 61 6e”。
步骤404:确定该字符序列对应的二进制数据。
也即是,可以将该字符序列转换为二进制数据,从而得到解码后的二进制数据。比如,若该字符序列为ASCII字符,则可以将ASCII字符形式的字符序列转换为二进制数据。
本申请实施例中,通过预先设置一种固定规则的完全三叉树,使得在对碱基序列进行解码时,在根据预设对应关系对碱基序列进行解码得到三进制数据,可以直接根据于固定规则的完全三叉树对碱基序列进行解码,得到三进制数据。由于预先设置了固定规则的完全三叉树用于构建编码表进行解码,因此在解码时,也无需再基于字符频率来构建带权路径长度最小的哈夫曼树,解码规则较为简单,提高了解码效率。而且,由于这种解码规则较为简单,因此这种解码规则也无需存储在DNA的编码数据中或者存储在编码数据外部,而是可以将这种解码规则作为将二进制数据编码成三进制数据的默认解码规则,所以待解码的碱基序列都可以默认按照这种解码规则进行解码,从而可以在保证数据可靠性的情况下提高解码效率。
图5是本申请实施例提供的一种编码装置500的结构框图,该装置可以集成于计算机设备中。如图5所示,该装置包括:
第一确定模块501,用于确定待编码的二进制数据对应的字符序列;
第二确定模块502,用于确定该字符序列中出现的多种字符以及每种字符的频率,该每种字符的频率用于指示该每种字符在该字符序列中出现的次数;
第一构建模块503,用于根据该多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表;其中,该预设完全三叉树为包含2n个叶子结点的完全三叉树,该预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,该第一编码表用于指示该多种字符中每种字符对应的三进制编码,该n为该二进制数据的编码单位的位数;
第一编码模块504,用于根据该第一编码表,对该字符序列进行编码,得到目标三进制数据;
第二编码模块505,用于根据预设对应关系对该目标三进制数据进行编码,根据编码结果确定目标碱基序列,该预设对应关系用于指示三进制数据与碱基对之间的对应关系。
可选地,该第一构建模块503用于:
按照字符的频率从大到小的顺序,对该多种字符进行排序,得到排序后的该多种字符;
按照编码长度从短到长的顺序,从该预设完全三叉树中各个叶子结点的三进制编码中确定排序在前的多个三进制编码,该多个三进制编码的数量与该多种字符的数量相同;
按照编码长度从短到长的顺序对该多个三进制编码进行排序,得到排序后的该多个三进制编码;
建立排序后的该多种字符与排序后的该多个三进制编码之间的一一对应关系,得到该第一编码表;其中,该第一编码表中的字符的频率越大,字符对应的三进制编码越短。
可选地,该根据该多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,包括:
按照对应三进制编码的编码长度,为该预设完全三叉树中的各个叶子节点进行顺序编号,得到各个叶子结点的序号;
建立各个叶子节点的序号与三进制编码之间的对应关系,得到第二编码表;
根据该多种字符的频率和该第二编码表,构建该第一编码表。
可选地,该第一确定模块501用于:
将该二进制数据转换为ASCII字符,得到该字符序列。
可选地,该预设对应关系包括多个两位的三进制数据以及每个两位的三进制数据对应的碱基对。
可选地,该预设对应关系包括以下对应关系中的至少一种:
00对应AT;
11对应AC;
22对应AG;
01对应GC;
02对应GT;
10对应CT;
20对应GA;
12对应GG;
21对应TG。
可选地,该第二编码模块505用于:
编码单元,用于根据该预设对应关系对该目标三进制数据进行编码,得到第一碱基序列;
替换单元,用于对该第一碱基序列中出现的起始密码子进行替换,得到第二碱基序列,该第二碱基序列中不包含该起始密码子;
确定单元,用于根据该第二碱基序列确定该目标碱基序列。
可选地,该起始密码子为三位的指定碱基序列;该替换单元用于:
按照预设替换规则,对该第一碱基序列中出现该起始密码子的两个碱基对中的后两位碱基进行碱基替换,直至碱基替换后的第一碱基序列中不包含该起始密码子为止。
可选地,该预设替换规则包括如下替换规则中的至少一种:
将GT替换为AA;
将GA替换为TT;
将GG替换为CC;
将GC替换为TA;
将GT替换为CA。
可选地,该确定单元用于:
根据预设替换目标,按照预设替换规则对该第二碱基序列进行碱基替换,该预设替换目标包括GC含量要求和GC分布要求中的至少一种;
将满足该预设替换目标的替换后的第二碱基序列,确定为该目标碱基序列。
可选地,该装置还包括:
转换模块,用于将字符数量转换为三进制数据,得到第一数据,字符数量是指多种字符的数量;将按照字符的频率从大到小的顺序的该多种字符转换为三进制数据,得到第二数据;
拼接模块,用于将该第一数据、该第二数据和该目标三进制数据进行拼接,得到拼接三进制数据;
该第二编码模块505,用于根据该预设对应关系对该拼接三进制数据进行编码。
可选地,该装置还包括第二构建模块,用于:
构建包含2n个叶子结点的完全三叉树;
将该完全三叉树中父结点与子结点之间的路径按照从左到右的顺序依次编码为0、1和2,得到该预设完全三叉树,该预设完全三叉树中每个叶子结点的三进制编码为从根结点到该每个子结点的路径编码。
可选地,该装置还包括:
分段模块,用于对该目标碱基序列进行分段处理,得到多个第一分段碱基序列;
添加模块,用于在该多个第一分段碱基序列中的每个第一分段碱基序列上分别添加分段信息,得到多个第二分段碱基序列,该分段信息包括引物、地址信息和纠错码中的至少一种;
存储模块,用于基于该多个第二分段碱基序列对应生成多个DNA。
本申请实施例中,通过预先设置一种固定规则的完全三叉树,使得在对二进制数据进行编码时,可以直接基于固定规则的完全三叉树以及二进制数据对应的字符序列中的字符频率来构建编码表,再基于构建的编码表将二进制数据编码成三进制数据,以及基于预设对应关系将三进制数据编码成碱基序列。由于预先设置了固定规则的完全三叉树用于构建编码表,因此在编码时,无需再基于字符频率来构建带权路径长度最小的哈夫曼树,编码规则较为简单,提高了编码效率。
需要说明的是:上述实施例提供的编码装置在进行编码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的编码装置与编码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是本申请实施例提供的一种解码装置600的结构框图,该装置可以集成于计算机设备中。如图6所示,该装置包括:
获取模块601,用于获取待解码的目标碱基序列;
第一解码模块602,用于根据预设对应关系对该目标碱基序列进行解码,基于解码结果确定目标三进制数据,该预设对应关系用于指示三进制数据与碱基对之间的对应关系;
第二解码模块603,用于根据预设完全三叉树中各个叶子结点的三进制编码,对该目标三进制数据进行解码,得到字符序列,该预设完全三叉树为包含2n个叶子结点的完全三叉树,该预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,该n为该二进制数据的编码单位的位数;
第一确定模块604,用于确定该字符序列对应的二进制数据。
可选地,该获取模块601用于:
获取多个DNA中每个DNA存储的第二分段碱基序列,得到多个第二分段碱基序列,每个第二分段碱基序列包括第一分段碱基序列和分段信息,该分段信息包括引物、地址信息和纠错码中的至少一种;
根据该多个第二分段碱基序列中的分段信息,获取该多个第二分段碱基序列中的第一分段碱基序列,以及对该多个第二分段碱基序列中的第一分段碱基序列进行拼接处理,得到该目标碱基序列。
可选地,该第一解码模块602用于:
根据该预设对应关系,对该目标碱基序列进行解码,得到拼接三进制数据;
从该拼接三进制数据中获取第一数据、第二数据以及该目标三进制数据,该第一数据是对字符数量进行三进制转换得到,该第二数据是对按照字符的频率从大到小的顺序的多种字符进行三进制转换得到。
可选地,该装置还包括:
第二确定模块,用于根据该第一数据和该第二数据,分别确定该字符数量以及按照字符的频率从大到小的顺序排序的多种字符;
该第二解码模块603用于:
根据按照字符的频率从大到小的顺序排序的多种字符,以及该预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,该第一编码表用于指示该多种字符中每种字符对应的三进制编码;
根据该第一编码表,对该目标三进制数据进行编码,得到该字符序列。
可选地,该装置还包括:
替换模块,用于根据预设替换规则的逆向替换规则,对该目标碱基序列进行碱基替换,得到第一碱基序列;
该第一解码模块602,用于根据该预设对应关系,对该第一碱基序列进行解码。
可选地,该预设替换规则包括如下替换规则中的至少一种:
将GT替换为AA;
将GA替换为TT;
将GG替换为CC;
将GC替换为TA;
将GT替换为CA。
本申请实施例中,通过预先设置一种固定规则的完全三叉树,使得在对碱基序列进行解码时,在根据预设对应关系对碱基序列进行解码得到三进制数据,可以直接根据于固定规则的完全三叉树对碱基序列进行解码,得到三进制数据。由于预先设置了固定规则的完全三叉树用于构建编码表进行解码,因此在解码时,也无需再基于字符频率来构建带权路径长度最小的哈夫曼树,解码规则较为简单,提高了解码效率。而且,由于这种解码规则较为简单,因此这种解码规则也无需存储在DNA的编码数据中或者存储在编码数据外部,而是可以将这种解码规则作为将二进制数据编码成三进制数据的默认解码规则,所以待解码的碱基序列都可以默认按照这种解码规则进行解码,从而可以在保证数据可靠性的情况下提高解码效率。
需要说明的是:上述实施例提供的解码装置在进行解码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的解码装置与解码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图7是本申请实施例提供的一种计算机设备700的结构框图。该计算机设备700可以为编码装置或解码装置。示例地,该计算机设备700可以是手机、平板电脑、智能电视、多媒体播放设备、可穿戴设备、台式电脑、服务器等电子设备。该计算机设备700可用于实施上述实施例中提供的编码方法或解码方法。
通常,计算机设备700包括有:处理器701和存储器702。
处理器701可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器701可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器701也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器701可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器701还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器702可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器702还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器702中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器701所执行以实现本申请中方法实施例提供的编码方法或解码方法。
在一些实施例中,计算机设备700还可选包括有:外围设备接口703和至少一个外围设备。处理器701、存储器702和外围设备接口703之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口703相连。具体地,外围设备可以包括:显示屏704、音频电路705、通信接口706和电源707中的至少一种。
本领域技术人员可以理解,图7中示出的结构并不构成对计算机设备700的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性的实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述编码方法或解码方法。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述编码方法或解码方法。
在示例性实施例中,还提供了一种编解码系统,该编解码系统包括编码装置和解码装置,编码装置用于实现上述编码方法,解码装置用于实现上述解码方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (23)

1.一种编码方法,其特征在于,所述方法包括:
确定待编码的二进制数据对应的字符序列;
确定所述字符序列中出现的多种字符以及每种字符的频率,所述每种字符的频率用于指示所述每种字符在所述字符序列中出现的次数;
根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表;其中,所述预设完全三叉树为包含2n个叶子结点的完全三叉树,所述预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,所述第一编码表用于指示所述多种字符中每种字符对应的三进制编码,所述n为所述二进制数据的编码单位的位数;
根据所述第一编码表,对所述字符序列进行编码,得到目标三进制数据;
根据预设对应关系对所述目标三进制数据进行编码,根据编码结果确定目标碱基序列,所述预设对应关系用于指示三进制数据与碱基对之间的对应关系。
2.如权利要求1所述的方法,其特征在于,所述根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,包括:
按照字符的频率从大到小的顺序,对所述多种字符进行排序,得到排序后的所述多种字符;
按照编码长度从短到长的顺序,从所述预设完全三叉树中各个叶子结点的三进制编码中确定排序在前的多个三进制编码,所述多个三进制编码的数量与所述多种字符的数量相同;
按照编码长度从短到长的顺序对所述多个三进制编码进行排序,得到排序后的所述多个三进制编码;
建立排序后的所述多种字符与排序后的所述多个三进制编码之间的一一对应关系,得到所述第一编码表;其中,所述第一编码表中的字符的频率越大,字符对应的三进制编码越短。
3.如权利要求1所述的方法,其特征在于,所述根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,包括:
按照对应三进制编码的编码长度的长度顺序,为所述预设完全三叉树中的各个叶子节点进行顺序编号,得到各个叶子结点的序号;
建立各个叶子节点的序号与三进制编码之间的对应关系,得到第二编码表;
根据所述多种字符的频率和所述第二编码表,构建所述第一编码表。
4.如权利要求1所述的方法,其特征在于,所述根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表之前,还包括:
构建包含2n个叶子结点的完全三叉树;
将所述完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,得到所述预设完全三叉树,所述预设完全三叉树中每个叶子结点的三进制编码为从根结点到所述每个叶子结点的路径编码。
5.如权利要求1所述的方法,其特征在于,所述预设对应关系包括多个两位的三进制数据以及每个两位的三进制数据对应的碱基对。
6.如权利要求5所述的方法,其特征在于,所述预设对应关系包括以下对应关系中的至少一种:
00对应腺嘌呤A胸腺嘧啶T;
11对应A胞嘧啶C;
22对应A鸟嘌呤G;
01对应GC;
02对应GT;
10对应CT;
20对应GA;
12对应GG;
21对应TG。
7.如权利要求1所述的方法,其特征在于,所述根据预设对应关系对所述目标三进制数据进行编码,根据编码结果确定目标碱基序列,包括:
根据所述预设对应关系对所述目标三进制数据进行编码,得到第一碱基序列;
对所述第一碱基序列中出现的起始密码子进行替换,得到第二碱基序列,所述第二碱基序列中不包含所述起始密码子;
根据所述第二碱基序列确定所述目标碱基序列。
8.如权利要求7所述的方法,其特征在于,所述起始密码子为三位的指定碱基序列;
所述对所述第一碱基序列中出现的起始密码子进行替换,包括:
按照预设替换规则,对所述第一碱基序列中出现所述起始密码子的两个碱基对中的后两位碱基进行碱基替换,直至进行碱基替换后的第一碱基序列中不包含所述起始密码子为止。
9.如权利要求8所述的方法,其特征在于,所述预设替换规则包括以下替换规则中的至少一种:
将GT替换为AA;
将GA替换为TT;
将GG替换为CC;
将GC替换为TA;
将GT替换为CA。
10.如权利要求7所述的方法,其特征在于,所述根据所述第二碱基序列确定所述目标碱基序列,包括:
根据预设替换目标,按照预设替换规则对所述第二碱基序列进行碱基替换,所述预设替换目标包括GC含量要求和GC分布要求中的至少一种;
将满足所述预设替换目标的进行碱基替换后的第二碱基序列,确定为所述目标碱基序列。
11.如权利要求1-10任一所述的方法,其特征在于,所述根据预设对应关系对所述目标三进制数据进行编码之前,还包括:
将字符数量转换为三进制数据,得到第一数据,以及将按照字符的频率从大到小的顺序的所述多种字符转换为三进制数据,得到第二数据,所述字符数量是指多种字符的数量;
将所述第一数据、所述第二数据和所述目标三进制数据进行拼接,得到拼接三进制数据;
所述根据预设对应关系对所述目标三进制数据进行编码,包括:
根据所述预设对应关系对所述拼接三进制数据进行编码。
12.如权利要求1-10任一所述的方法,其特征在于,所述根据预设对应关系对所述目标三进制数据进行编码,基于编码结果确定目标碱基序列之后,还包括:
对所述目标碱基序列进行分段处理,得到多个第一分段碱基序列;
在所述多个第一分段碱基序列中的每个第一分段碱基序列上分别添加分段信息,得到多个第二分段碱基序列,所述分段信息包括引物、地址信息和纠错码中的至少一种;
基于所述多个第二分段碱基序列对应生成多个脱氧核糖核酸DNA。
13.一种解码方法,其特征在于,所述方法包括:
获取待解码的目标碱基序列;
根据预设对应关系对所述目标碱基序列进行解码,根据解码结果确定目标三进制数据,所述预设对应关系用于指示三进制数据与碱基对之间的对应关系;
根据预设完全三叉树中各个叶子结点的三进制编码,对所述目标三进制数据进行解码,得到字符序列,所述预设完全三叉树为包含2n个叶子结点的完全三叉树,所述预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,所述n为二进制数据的编码单位的位数;
确定所述字符序列对应的二进制数据。
14.如权利要求13所述的方法,其特征在于,所述获取待解码的目标碱基序列,包括:
基于多个DNA的每个DNA分别获取第二分段碱基序列,得到多个第二分段碱基序列,每个第二分段碱基序列包括第一分段碱基序列和分段信息,所述分段信息包括引物、地址信息和纠错码中的至少一种;
根据所述多个第二分段碱基序列中的分段信息,获取所述多个第二分段碱基序列中的第一分段碱基序列,以及对所述多个第二分段碱基序列中的第一分段碱基序列进行拼接处理,得到所述目标碱基序列。
15.如权利要求13所述的方法,其特征在于,所述根据预设对应关系对所述目标碱基序列进行解码,基于解码结果确定目标三进制数据,包括:
根据所述预设对应关系,对所述目标碱基序列进行解码,得到拼接三进制数据,所述拼接三进制数据包括第一数据、第二数据以及所述目标三进制数据,所述第一数据是对字符数量进行三进制转换得到,所述第二数据是对按照字符的频率从大到小的顺序的多种字符进行三进制转换得到;
从所述拼接三进制数据中获取所述目标三进制数据。
16.如权利要求15所述的方法,其特征在于,所述根据预设完全三叉树中各个叶子结点的三进制编码,对所述目标三进制数据进行解码之前,还包括:
从所述拼接三进制数据中获取所述第一数据和所述第二数据;
根据所述第一数据和所述第二数据,分别确定所述字符数量以及按照字符的频率从大到小的顺序排序的多种字符;
所述根据预设完全三叉树中各个叶子结点的三进制编码,对所述目标三进制数据进行解码,得到字符序列,包括:
根据按照字符的频率从大到小的顺序排序的多种字符,以及所述预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表,所述第一编码表用于指示所述多种字符中每种字符对应的三进制编码;
根据所述第一编码表,对所述目标三进制数据进行编码,得到所述字符序列。
17.如权利要求13-16任一所述的方法,其特征在于,所述根据预设对应关系对所述目标碱基序列进行解码之前,还包括:
根据预设替换规则的逆向替换规则,对所述目标碱基序列进行碱基替换,得到第一碱基序列;
所述根据预设对应关系对所述目标碱基序列进行解码,包括:
根据所述预设对应关系,对所述第一碱基序列进行解码。
18.如权利要求17所述的方法,其特征在于,所述预设替换规则包括以下替换规则中的至少一种:
将GT替换为AA;
将GA替换为TT;
将GG替换为CC;
将GC替换为TA;
将GT替换为CA。
19.一种编码装置,其特征在于,所述装置包括:
第一确定模块,用于确定待编码的二进制数据对应的字符序列;
第二确定模块,用于确定所述字符序列中出现的多种字符以及每种字符的频率,所述每种字符的频率用于指示所述每种字符在所述字符序列中出现的次数;
第一构建模块,用于根据所述多种字符的频率,以及预设完全三叉树中各个叶子结点的三进制编码,构建第一编码表;其中,所述预设完全三叉树为包含2n个叶子结点的完全三叉树,所述预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,所述第一编码表用于指示所述多种字符中每种字符对应的三进制编码,所述n为所述二进制数据的编码单位的位数;
第一编码模块,用于根据所述第一编码表,对所述字符序列进行编码,得到目标三进制数据;
第二编码模块,用于根据预设对应关系对所述目标三进制数据进行编码,基于编码结果确定目标碱基序列,所述预设对应关系用于指示三进制数据与碱基对之间的对应关系。
20.一种解码装置,其特征在于,所述装置包括:
获取模块,用于获取待解码的目标碱基序列;
第一解码模块,用于根据预设对应关系对所述目标碱基序列进行解码,基于解码结果确定目标三进制数据,所述预设对应关系用于指示三进制数据与碱基对之间的对应关系;
第二解码模块,用于根据预设完全三叉树中各个叶子结点的三进制编码,对所述目标三进制数据进行解码,得到字符序列,所述预设完全三叉树为包含2n个叶子结点的完全三叉树,所述预设完全三叉树中父结点与子结点之间的路径依次编码为0、1和2,所述n为二进制数据的编码单位的位数;
第一确定模块,用于确定所述字符序列对应的二进制数据。
21.一种编码装置,其特征在于,所述装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-12任一项所述的方法。
22.一种解码装置,其特征在于,所述装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求13-18任一项所述的方法。
23.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-12或权利要求13-18任一项所述的方法。
CN202011468374.8A 2020-12-11 2020-12-11 编码方法、解码方法、装置及计算机可读存储介质 Active CN112711935B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011468374.8A CN112711935B (zh) 2020-12-11 2020-12-11 编码方法、解码方法、装置及计算机可读存储介质
PCT/CN2020/136915 WO2022120912A1 (zh) 2020-12-11 2020-12-16 编码方法、解码方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011468374.8A CN112711935B (zh) 2020-12-11 2020-12-11 编码方法、解码方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112711935A CN112711935A (zh) 2021-04-27
CN112711935B true CN112711935B (zh) 2023-04-18

Family

ID=75543188

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011468374.8A Active CN112711935B (zh) 2020-12-11 2020-12-11 编码方法、解码方法、装置及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN112711935B (zh)
WO (1) WO2022120912A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112749247B (zh) * 2019-10-31 2023-08-18 中国科学院深圳先进技术研究院 文本信息存储和读取方法及其装置
CN113539370B (zh) * 2021-06-29 2024-02-20 中国科学院深圳先进技术研究院 编码方法、解码方法、装置、终端设备及可读存储介质
CN114626338A (zh) * 2022-03-01 2022-06-14 杭州趣链科技有限公司 数据的字符编码、解码方法、系统、设备及存储介质
CN114974434A (zh) * 2022-04-23 2022-08-30 中国科学院深圳先进技术研究院 基于dna存储的信息编码方法、装置、计算机设备及介质
CN117079689A (zh) * 2022-05-10 2023-11-17 密码子(杭州)科技有限公司 分子模块组装设备和分子模块组装方法
CN115277933B (zh) * 2022-07-15 2023-09-19 咪咕数字传媒有限公司 振动提醒方法、装置、设备及存储介质
CN115882867B (zh) * 2023-03-01 2023-05-12 山东水发紫光大数据有限责任公司 一种基于大数据的数据压缩存储方法
CN116073838B (zh) * 2023-03-28 2023-06-23 江苏桐方消防科技集团股份有限公司 一种消防救援装备用数据智能管理系统
CN116367150B (zh) * 2023-04-18 2023-11-10 甘肃昊润科技信息有限公司 一种数据加密传输方法
CN116610769B (zh) * 2023-07-19 2023-10-10 北京惠每云科技有限公司 一种基于双数组trie树的医疗数据空间分配方法和装置
CN116782206B (zh) * 2023-08-23 2023-10-24 南京中科齐信科技有限公司 基于量子通信的列车车载无线自组网络安全方法及系统
CN116861041B (zh) * 2023-09-04 2023-11-07 世窗信息股份有限公司 一种电子公文处理方法及系统
CN116913057B (zh) * 2023-09-12 2023-12-01 西安中创博远网络科技有限公司 基于物联网的畜牧养殖异常预警系统
CN117097905B (zh) * 2023-10-11 2023-12-26 合肥工业大学 一种无损图像分块压缩方法、设备、存储介质
CN117077181B (zh) * 2023-10-16 2024-01-09 南通千寻信息科技有限公司 一种企业信息管理数据的存储方法
CN117155406B (zh) * 2023-10-30 2024-02-02 深圳市成为高科技有限公司 一种社会调查数据智能管理系统
CN117216023B (zh) * 2023-11-07 2024-01-26 陕西长瑞安驰信息技术集团有限公司 一种大规模网络数据存储方法及系统
CN117254819B (zh) * 2023-11-20 2024-02-27 深圳市瑞健医信科技有限公司 一种医疗废物智能监管系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022935A (zh) * 2014-04-22 2015-11-04 中国科学院青岛生物能源与过程研究所 一种利用dna进行信息存储的编码方法和解码方法
CN106845158A (zh) * 2017-02-17 2017-06-13 苏州泓迅生物科技股份有限公司 一种利用dna进行信息存储的方法
CN107798219A (zh) * 2016-08-30 2018-03-13 清华大学 将数据进行生物存储并还原的方法
CN108322220A (zh) * 2018-02-08 2018-07-24 华为技术有限公司 编解码方法、装置及编解码设备
CN109979540A (zh) * 2018-11-29 2019-07-05 天津大学 一种dna信息存储编码方法
CN111091876A (zh) * 2019-12-16 2020-05-01 中国科学院深圳先进技术研究院 一种dna存储方法、系统及电子设备
CN111600609A (zh) * 2020-05-19 2020-08-28 东南大学 一种优化中文存储的dna存储编码方法
CN111681290A (zh) * 2020-04-21 2020-09-18 华中科技大学鄂州工业技术研究院 一种基于dna编码技术的图片存储方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2194648A1 (en) * 2008-12-03 2010-06-09 Electronics and Telecommunications Research Institute MPE-FEC RS decoder and decoding method thereof
RU2659025C1 (ru) * 2017-06-14 2018-06-26 Общество с ограниченной ответственностью "ЛЭНДИГРАД" Способы кодирования и декодирования информации

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105022935A (zh) * 2014-04-22 2015-11-04 中国科学院青岛生物能源与过程研究所 一种利用dna进行信息存储的编码方法和解码方法
CN107798219A (zh) * 2016-08-30 2018-03-13 清华大学 将数据进行生物存储并还原的方法
CN106845158A (zh) * 2017-02-17 2017-06-13 苏州泓迅生物科技股份有限公司 一种利用dna进行信息存储的方法
CN108322220A (zh) * 2018-02-08 2018-07-24 华为技术有限公司 编解码方法、装置及编解码设备
CN109979540A (zh) * 2018-11-29 2019-07-05 天津大学 一种dna信息存储编码方法
CN111091876A (zh) * 2019-12-16 2020-05-01 中国科学院深圳先进技术研究院 一种dna存储方法、系统及电子设备
CN111681290A (zh) * 2020-04-21 2020-09-18 华中科技大学鄂州工业技术研究院 一种基于dna编码技术的图片存储方法
CN111600609A (zh) * 2020-05-19 2020-08-28 东南大学 一种优化中文存储的dna存储编码方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Carbon-based archiving:current progress and future prospects of DNA-based data storage;zhi ping 等;《GigaScience》;20190630;第8卷(第6期);第1-10页 *
DNA存储中的编码技术;毕昆 等;《生物信息学》;20200630;第18卷(第2期);第76-85页 *

Also Published As

Publication number Publication date
CN112711935A (zh) 2021-04-27
WO2022120912A1 (zh) 2022-06-16

Similar Documents

Publication Publication Date Title
CN112711935B (zh) 编码方法、解码方法、装置及计算机可读存储介质
US8972201B2 (en) Compression of genomic data file
US20180373839A1 (en) Systems and methods for encoding genomic graph information
CN112382340A (zh) 用于dna数据存储的二进制信息到碱基序列的编解码方法和编解码装置
US20190311782A1 (en) Method for biologically storing and restoring data
CN104579360B (zh) 一种数据处理的方法和设备
CN109889205B (zh) 编码方法及系统、解码方法及系统、编解码方法及系统
CN110867213B (zh) 一种dna数据的存储方法和装置
CN113539370B (zh) 编码方法、解码方法、装置、终端设备及可读存储介质
JP6786144B1 (ja) Dnaに基づくデータ記憶方法、復号方法、システムと装置
CN106649217A (zh) 数据的匹配方法及装置
TW201931181A (zh) 用於基因定序資料的資料處理方法及系統
WO2023109711A1 (zh) 数据存储方法、装置、终端设备及计算机可读存储介质
CN114268323B (zh) 支持行存的数据压缩编码方法、装置及时序数据库
KR102339723B1 (ko) Dna 저장 장치의 연성 정보 기반 복호화 방법, 프로그램 및 장치
CN111708574A (zh) 指令流压缩、解压缩方法及装置
CN114385624A (zh) 编码方法、编码查找方法、装置、电子设备及存储介质
CN114730616A (zh) 信息编码和解码方法、装置、存储介质以及信息存储和解读方法
CN114023374A (zh) Dna信道仿真与编码优化方法及装置
WO2023206023A1 (zh) 用于dna存储的编码方法及编码装置
CN112016270A (zh) 汉信码的物流信息编码方法、装置及设备
CN114822695B (zh) 用于dna存储的编码方法及编码装置
Procházka et al. On-line Searching in IUPAC Nucleotide Sequences.
CN113644986B (zh) 编码方法、编码装置、计算设备及计算机可读存储介质
CN109857340B (zh) Nor flash中文件的存储和读取方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant