CN105550535B - 一种基因字符序列快速编码为二进制序列的编码方法 - Google Patents
一种基因字符序列快速编码为二进制序列的编码方法 Download PDFInfo
- Publication number
- CN105550535B CN105550535B CN201510884496.8A CN201510884496A CN105550535B CN 105550535 B CN105550535 B CN 105550535B CN 201510884496 A CN201510884496 A CN 201510884496A CN 105550535 B CN105550535 B CN 105550535B
- Authority
- CN
- China
- Prior art keywords
- character string
- coding
- currently processed
- data
- character
- 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
Links
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B25/00—ICT specially adapted for hybridisation; ICT specially adapted for gene or protein expression
Landscapes
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Genetics & Genomics (AREA)
- Molecular Biology (AREA)
- Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Theoretical Computer Science (AREA)
- Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
Abstract
本发明公开了一种基因字符序列快速编码为二进制序列的编码方法,步骤包括:1)从待编码基因字符序列中取出指定数量个字符作为当前处理字符串;2)将当前处理字符串的二进制编码右移1位;3)将右移1位后的当前处理字符串中的每一个字符与0x3进行数据与操作;4)分别将数据与操作后的结果中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列;5)判断待编码基因字符序列是否处理完毕,如果尚未处理完毕,则跳转执行步骤1);否则,结束并退出。本发明具有编码压缩效率高、编码速度快、编码效率高、不需要进行大小写转换、实现方式灵活、应用范围广的优点。
Description
技术领域
本发明涉及基因测序技术,具体涉及一种基因字符序列快速编码为二进制序列的编码方法。
背景技术
随着基因测序技术的发展,测序价格呈指数下降,速度甚至超过摩尔定律。伴随而来的大量测序数据,虽然互联网以及硬件持续更新发展,测序产生的海量数据的压缩、存储、传输依旧带来了巨大的挑战。DNA基因组序列和测序序列均由ATCG四种碱基组成,对A、T、C、G的编码在数据压缩方面至关重要,通常的做法如下:由于字符大小写混杂,可以统一将字符大小写全都转换成大写或小写(或者不转换大小写直接判断,判断情况由四种增加到八种),逐个判断字符,再进行二进制编码映射(例如a->00c->01g->10t->11)。这样的编码由于逐字进行,对于动辄GB甚至TB的DNA数据来说非常耗时,提高编码速度效率至关重要。因此,现有的基因字符序列编码为二进制序列的编码方法针对DNA测序产生的海量数据,在编码时存在速度慢、效率低的问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种编码压缩效率高、编码速度快、编码效率高、不需要进行大小写转换、实现方式灵活、应用范围广的基因字符序列快速编码为二进制序列的编码方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种基因字符序列快速编码为二进制序列的编码方法,步骤包括:
1)从待编码基因字符序列中取出指定数量个字符作为当前处理字符串;
2)将当前处理字符串的二进制编码右移1位;
3)将右移1位后的当前处理字符串中的每一个字符与0x3进行数据与操作;
4)分别将数据与操作后的结果中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列;
5)判断待编码基因字符序列是否处理完毕,如果尚未处理完毕,则跳转执行步骤1);否则,结束并退出。
优选地,所述步骤1)中指定数量个字符具体是指16个字符。
优选地,所述步骤2)中将当前处理字符串右移1位时,具体是指调用SSE指令集的_mm_srli_epi64指令分别将当前处理字符串的高64位数据、低64位数据同时右移1位。
优选地,所述步骤3)中进行数据与操作时,具体是指将右移1位后的当前处理字符串和预设的128bit掩码调用SSE指令集的_mm_and_si128指令进行数据与操作,所述掩码由16个0x3构成。
优选地,所述步骤4)的详细步骤包括:
4.1)调用BMI2指令集的数据位抽取指令_pext_u64且使用参数0x0303030303030303uL,将数据与操作后的结果前64字节中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列;
4.2)调用BMI2指令集的数据位抽取指令_pext_u64且使用参数0x0303030303030303uL,将数据与操作后的结果后64字节中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列。
本发明种基因字符序列快速编码为二进制序列的编码方法具有下述优点:
1、编码压缩效率高、占用存储空间少,本发明方法最终将每一个基因字符的8位二进制编码压缩为2位,压缩后的体积为原体积的25%。
2、编码速度快、编码效率高,本发明针对每一个当前处理字符串仅仅需要三条指令即可实现压缩紧致编码,相比于现有的编码方法,逐字符编码效率提高2倍以上,结合并行位抽取优化达到10倍以上(未进行编译优化)乃至40倍以上(进行编译优化),能够极大提高大数据的编码压缩、存储传输、解压等效率,尤其适用于海量基因数据库的存储和处理。
3、本发明对基因字符序列的大小写不敏感,不需要进行基因字符的判断。
4、本发明以指定数量的基因字符为一组,分别将每一组基因字符的最低2位拼装得到该组基因字符的编码结果的实现方式灵活,可以通过多种途径灵活的实现该编码方法,例如BMI2指令集的pext指令、FPGA等等,而且可以应用于所有DNA文本数据的编码,具有广泛的应用空间。
附图说明
图1为本发明实施例方法的基本流程示意图。
图2为本发明实施例中的编码映射原理图。
图3为本发明实施例中的移位原理示意图。
图4为本发明实施例中的数据与操作原理示意图。
图5为本发明实施例中的紧致编码原理示意图。
具体实施方式
如图1所示,本实施例基因字符序列快速编码为二进制序列的编码方法的步骤包括:
1)从待编码基因字符序列中取出指定数量个字符作为当前处理字符串;
2)将当前处理字符串的二进制编码右移1位;
3)将右移1位后的当前处理字符串中的每一个字符与0x3进行数据与操作;
4)分别将数据与操作后的结果中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列;
5)判断待编码基因字符序列是否处理完毕,如果尚未处理完毕,则跳转执行步骤1);否则,结束并退出。
参见图2所示基因字符A、C、G、T、a、c、g、t的二进制编码,根据观察可知提取字符编码的第1、2位,即可形成对A、C、G、T四个字母不区分大小写的有效的二进制编码:a/A->0,c/C->1,t/T->2,g/G->3。本实施例基于上述观察,从字符串中快速提取与紧致二进制编码,并采用SIMD并行指令进行优化,对字符串进行并行批量提取与紧致。
本实施例中,步骤1)中指定数量个字符具体是指16个字符。
本实施例中,步骤2)中将当前处理字符串右移1位时,具体是指调用SSE指令集的_mm_srli_epi64指令分别将当前处理字符串的高64位数据、低64位数据同时右移1位。_mm_srli_epi64指令为SSE指令集对128-bit数作移位操作函数,例如针对当前处理字符串chara[17]{"actgACTGactgACTG"},移位后的数赋值给变量b,具体指令为:
_m128i b=_mm_srli_epi64(*(__m128i*)(a),1)。
如图3所示,以基因字符A为例,其对应的二进制编码为01000001,通过移位后变为00100000;以基因字符a为例,其对应的二进制编码为01100001,通过移位后变为00110000,通过移位以后,以此类推,使得移位后基因字符串各字符的二进制编码最后两位的值与a/A->0,c/C->1,t/T->2,g/G->3对应,为掩码抽取做好准备。
本实施例中,步骤3)中进行数据与操作时,具体是指将右移1位后的当前处理字符串和预设的128bit掩码调用SSE指令集的_mm_and_si128指令进行数据与操作,掩码由16个0x3构成。_mm_and_si128指令为SSE指令集的128位数据与操作函数,本步骤的指令为:
__m128i c=_mm_and_si128(b,xmm0);
最终,将变量b与预设的128bit掩码xmm0的做位与操作结果赋值给c。本实施例中,预设的128bit掩码xmm0的步骤包括如下:首先将128bit掩码{0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3}赋值为常量;然后通过指令__m128i xmm0声明128bit变量xmm0;最终利用SSE指令集的128bit加载指令,将128bit掩码{0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3}常量加载128bit掩码数据至xmm0。
如图4所示,以基因字符A为例,其移位后编码为00100000,和0x3进行数据与操作后,即可得到0x0;以基因字符a为例,其移位后编码为00110000,和0x3进行数据与操作后,同样也可得到0x0;以此类推,使得移位后基因字符串二进制编码执行位与操作按照a/A->0,c/C->1,t/T->2,g/G->3进行二进制编码的转换,得到编码完成的二进制编码串。
本实施例中,步骤4)的详细步骤包括:
4.1)调用BMI2指令集的数据位抽取指令_pext_u64且使用参数0x0303030303030303uL,将数据与操作后的结果前64字节中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列C1;本实施例中,前64字节的紧致编码二进制序列C1的指令具体为:
C1=_pext_u64(*(uint64_t*)buf,0x0303030303030303uL);其中,buf为写入内存中的与0x3进行数据与操作后的结果;
4.2)调用BMI2指令集的数据位抽取指令_pext_u64且使用参数0x0303030303030303uL,将数据与操作后的结果后64字节中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列C2;本实施例中,后64字节的紧致编码二进制序列C2的指令具体为:
C2=_pext_u64(*(uint64_t*)(buf+8),0x0303030303030303uL);其中,buf为写入内存中的与0x3进行数据与操作后的结果。
如图4所示,以基因字符串AaCcTtGg为例,经过紧致编码后,其前64字节的紧致编码二进制序列C1为0x05,后64字节的紧致编码二进制序列C2为0Xaf,从而将128位原始字符数据压缩得到16位紧致编码后的字符数据,压缩后数据占用空间为原来的25%。
本实施例中使用Amazon EC2的C4.large型号机器作测试环境,赋值基因字符序列“actgACTGactgACTG”(四种碱基大小写重复两次,随机模拟基因字符序列),进行109次编码循环,分别采用本实施例的编码方法与现有技术采用IF逐字符判断编码方法(表1中以“IF”表示)、SWITCH逐字符判断编码方法(表1中以“SWITCH”表示)做测试比较,分别比较不做O2编译优化和O2编译优化的结果,结果如表1所示:
表1:采用本实施例编码方法与现有技术编码方法的编码性能比较表。
参见表1可知,采用本实施例的编码方法与与现有技术采用IF逐字符判断编码方法、SWITCH逐字符判断编码方法相比,在不做编译优化的情况下,本实施例约有10倍速度的提高,在进行O2编译优化后,本实施例的速度效率提高在40倍以上。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (5)
1.一种基因字符序列快速编码为二进制序列的编码方法,其特征在于步骤包括:
1)从待编码基因字符序列中取出指定数量个字符作为当前处理字符串;
2)将当前处理字符串的二进制编码右移1位;
3)将右移1位后的当前处理字符串中的每一个字符与0x3进行数据与操作;
4)分别将数据与操作后的结果中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列;
5)判断待编码基因字符序列是否处理完毕,如果尚未处理完毕,则跳转执行步骤1);否则,结束并退出。
2.根据权利要求1所述的基因字符序列快速编码为二进制序列的编码方法,其特征在于,所述步骤1)中指定数量个字符具体是指16个字符。
3.根据权利要求2所述的基因字符序列快速编码为二进制序列的编码方法,其特征在于,所述步骤2)中将当前处理字符串右移1位时,具体是指调用SSE指令集的_mm_srli_epi64指令分别将当前处理字符串的高64位数据、低64位数据同时右移1位。
4.根据权利要求3所述的基因字符序列快速编码为二进制序列的编码方法,其特征在于,所述步骤3)中进行数据与操作时,具体是指将右移1位后的当前处理字符串和预设的128bit掩码调用SSE指令集的_mm_and_si128指令进行数据与操作,所述掩码由16个0x3构成。
5.根据权利要求4所述的基因字符序列快速编码为二进制序列的编码方法,其特征在于,所述步骤4)的详细步骤包括:
4.1)调用BMI2指令集的数据位抽取指令_pext_u64且使用参数0x0303030303030303uL,将数据与操作后的结果前64字节中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列;
4.2)调用BMI2指令集的数据位抽取指令_pext_u64且使用参数0x0303030303030303uL,将数据与操作后的结果后64字节中每一个字符中的最低两位提取组装得到当前处理字符串对应的紧致编码二进制序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510884496.8A CN105550535B (zh) | 2015-12-03 | 2015-12-03 | 一种基因字符序列快速编码为二进制序列的编码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510884496.8A CN105550535B (zh) | 2015-12-03 | 2015-12-03 | 一种基因字符序列快速编码为二进制序列的编码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550535A CN105550535A (zh) | 2016-05-04 |
CN105550535B true CN105550535B (zh) | 2017-12-26 |
Family
ID=55829722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510884496.8A Active CN105550535B (zh) | 2015-12-03 | 2015-12-03 | 一种基因字符序列快速编码为二进制序列的编码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550535B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055927B (zh) * | 2016-05-31 | 2018-08-17 | 广州麦仑信息科技有限公司 | mRNA信息的二进制存储方法 |
CN106022006B (zh) * | 2016-06-02 | 2018-08-10 | 广州麦仑信息科技有限公司 | 一种将基因信息进行二进制表示的存储方法 |
CN107798219B (zh) * | 2016-08-30 | 2021-07-13 | 清华大学 | 将数据进行生物存储并还原的方法 |
CN110428868B (zh) * | 2018-04-27 | 2021-11-26 | 人和未来生物科技(长沙)有限公司 | 基因测序质量行数据压缩预处理、解压还原方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102084380A (zh) * | 2007-08-02 | 2011-06-01 | 何塞·丹尼尔·洛皮斯·洛皮斯 | 仿真染色体“dna”结构链的电子系统 |
CN103336916A (zh) * | 2013-07-05 | 2013-10-02 | 中国科学院数学与系统科学研究院 | 一种测序序列映射方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040071993A (ko) * | 2003-02-07 | 2004-08-16 | 학교법인대우학원 | Dna 서열 부호화 방법 및 dna 서열 압축 방법 |
-
2015
- 2015-12-03 CN CN201510884496.8A patent/CN105550535B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102084380A (zh) * | 2007-08-02 | 2011-06-01 | 何塞·丹尼尔·洛皮斯·洛皮斯 | 仿真染色体“dna”结构链的电子系统 |
CN103336916A (zh) * | 2013-07-05 | 2013-10-02 | 中国科学院数学与系统科学研究院 | 一种测序序列映射方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105550535A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550535B (zh) | 一种基因字符序列快速编码为二进制序列的编码方法 | |
CN106778101B (zh) | 一种基于控制流和外形混淆的Python代码混淆方法 | |
CN107516096A (zh) | 一种字符识别方法及装置 | |
CN106970820A (zh) | 代码存储方法及代码存储装置 | |
CN104462990B (zh) | 字符串加解密方法和装置 | |
CN102122280B (zh) | 一种智能提取内容对象的方法及系统 | |
CN103543980B (zh) | 数字数据处理的方法及装置 | |
CN109460794A (zh) | 一种数据特征提取方法、系统及电子设备和存储介质 | |
CN105183476B (zh) | 一种跨平台应用程序的构建方法和装置 | |
CN107133198A (zh) | 一种文档的排版和格式转换方法 | |
CN105446747B (zh) | 一种可视化立体码触屏编译器与编程技术 | |
CN108038093A (zh) | Pdf文字提取方法和装置 | |
CN106557350A (zh) | 应用程序安装包中java字节码转换方法、装置及设备 | |
CN105631346A (zh) | 一种既安全又方便使用的Spark数据库电子密码锁及其操作方法 | |
CN100381981C (zh) | 表意符号的拼写及编码方法 | |
CN105446748B (zh) | 一种可机器识别的几何化编程 | |
CN116796848A (zh) | 一种待执行操作的量子模拟方法、装置 | |
CN106406560A (zh) | 桌面操作系统中机械工程字符矢量字体输出方法和系统 | |
Li et al. | A human-computer interactive dynamic description method for Jiaguwen Characters | |
CN105005743B (zh) | 电话号码漂白和反向漂白方法 | |
CN106663020B (zh) | 迁移支持装置 | |
CN106851323B (zh) | 解码方法及解码装置 | |
CN109308128A (zh) | 一种字母滑行输入法 | |
CN109242817A (zh) | 基于字符串的电路元器件知识点创建与检索方法 | |
CN104657680A (zh) | 芯片中抵御模板攻击的数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CB03 | Change of inventor or designer information |
Inventor after: Li Gen Inventor after: Song Zhuo Inventor after: Ma Chouxian Inventor before: Li Gen Inventor before: Song Zhuo |