CN110674094A - Sam及bam文件的无参考序列压缩及解压还原方法、系统和介质 - Google Patents
Sam及bam文件的无参考序列压缩及解压还原方法、系统和介质 Download PDFInfo
- Publication number
- CN110674094A CN110674094A CN201910789674.7A CN201910789674A CN110674094A CN 110674094 A CN110674094 A CN 110674094A CN 201910789674 A CN201910789674 A CN 201910789674A CN 110674094 A CN110674094 A CN 110674094A
- Authority
- CN
- China
- Prior art keywords
- current
- reference sequence
- data
- operator
- sequence
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- 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
- G16B30/00—ICT specially adapted for sequence analysis involving nucleotides or amino acids
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- Analytical Chemistry (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Chemical & Material Sciences (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种SAM或BAM文件的无参考序列压缩及解压还原方法、系统和介质,本发明无参考序列压缩方法包括遍历读取SAM或BAM文件获得当前行,进行域切割并根据当前行的CIGAR域数据并结合SEQ域数据还原出当前行对应的真实参考序列;将还原出来的真实参考序列更新到当前行在影子参考序列的对应位置,将当前行进行分组计算差异信息并压缩至目标压缩文件,最终将影子参考序列压缩至目标压缩文件;解压还原方法为前述压缩方法的逆向操作;本发明能够在保持压缩率基本不受影响的前提下实现SAM或BAM数据无基因参考序列的加压和解压,且数据的压缩是完全无损的,使用起来非常快捷方便。
Description
技术领域
本发明涉及生物信息领域,具体涉及一种SAM及BAM文件的无参考序列压缩及解压还原方法、系统和介质,用于实现SAM或BAM数据的压缩与还原。
背景技术
在生物信息学中尤其是高通量测序数据分析中,大部分的操作都是在实现短片段序列与参考序列的比对(mapping),比如bowtie等,这就涉及到如何使用一个统一的格式来表示这种mapping结果的问题,SAM(Sequence Alignment/Map)格式就是来解决这个问题的。
SAM是用来存储测序读段reads与参考序列比对结果信息的一种文件格式,以TAB为分割符,支持不同平台的短读段reads及长读段reads(最长为128Mbp)。SAM文件大小通常在100G以上,非常不便于存储,因此与之对应的BAM格式应运而生,BAM是SAM的二进制压缩格式,它在保留了与SAM完全相同内容信息的同时,在文件大小上通常会缩小4倍以上。bam在一定程度上改善了SAM的存储问题,但是文件大小依然较大,因此将BAM变得更小仍然是生物信息领域需要持续探讨和优化的问题。
BAM存储的是测序读段reads与参考序列比对结果信息,除去文件头信息header以外,其他行数据格式一致,每行具有相同的域,每个域用TAB隔开。文件头信息header标记了该SAM文件的一些基本信息,比如版本、按照什么方式排序的、Reference信息等等。参见图1,BAM每行主要包括下述域:QNAME:测序的reads的名字。FLAG:二进制数字之和,不同数字代表了不同的意义;比如正负链,R1/R2(双端测序的哪一端)等。RNAME:map到参考基因组后的染色体名称。POS:1-based 基因组起始位点。MAPQ:map的质量。CIGAR:一个数字与字母交替构成的字符串,标记了这段reads不同位置的match情况。不同字母的含义后边介绍。SEQ:序列。其中,SEQ域前后的域均已省略。
现有方法在对BAM进行压缩时,需要使用基因参考序列是因为reads会与匹配到的基因参考序列做差异性计算。过程大致为:首先根据图一中的RNAME域内容找到基因参考序列中对应的染色体,然后从该条染色体起始位置偏移POS域所对应的值,即为当前reads所匹配到基因参考序列的位置,将SEQ域(该域为测序reads序列)内容与所匹配到的基因参考序列进行差异性计算,保存差异信息至压缩文件即可实现SEQ的压缩。解压时因为有差异信息,且有原始的基因参考序列,所以能实现解压还原。
目前比BAM存储消耗更小的格式,比较流行的是samtools的CRAM,CRAM其大小通常会比BAM小一倍左右,但从无论是从BAM转换为CRAM,还是CRAM解压还原为BAM,都必须使用SAM文件生成时所使用的原始基因参考序列文件,这在使用上非常受约束。
目前生物信息领域对于SAM或BAM的压缩和解压均需要指定生成SAM或BAM文件时所使用的原始基因参考序列文件。因此在保持压缩率基本不受影响的前提下,如何实现SAM或BAM数据无基因参考序列的加解压,且对数据的压缩是无损的,这在使用上非常便捷和实用,并且已经成为一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题:目前生物信息领域对于SAM或BAM的压缩和解压均需要指定生成SAM或BAM文件时所使用的原始基因参考序列文件,本发明提供一种SAM或BAM文件的无参考序列压缩及解压还原方法、系统和介质,本发明能够在保持压缩率基本不受影响的前提下实现SAM或BAM数据无基因参考序列的加压和解压,且数据的压缩是完全无损的,使用起来非常快捷方便。
为了解决上述技术问题,本发明采用的技术方案为:
一种SAM或BAM文件的无参考序列压缩方法,实施步骤包括:
1)初始化影子参考序列;
2)按行遍历读取SAM或BAM文件获得当前行,如果全部读取完毕则将影子参考序列压缩至目标压缩文件,结束并退出;否则执行下一步;
3)切割当前行的域数据,获取CIGAR域数据和SEQ域数据;
4)解析当前行的CIGAR域数据并结合SEQ域数据还原出当前行对应的真实参考序列;
5)将还原出来的真实参考序列更新到当前行在影子参考序列的对应位置,且影子参考序列的每一个位置仅更新一次;
6)将当前行进行分组压缩:每一次压缩一组操作数和操作符,判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将SEQ域数据中当前组操作数的数值对应长度的子序列与当前行对应的影子参考序列计算差异信息,否则将SEQ域数据中当前组操作数的数值对应长度的子序列直接作为差异信息或与预设的固定序列计算差异信息,最终将当前组操作数的操作符的差异信息压缩至目标压缩文件。
可选地,步骤4)中还原出当前行对应的真实参考序列的详细步骤包括:
4.1)初始化当前行的真实参考序列为空;
4.2)从当前行遍历读取一组操作数及其操作符作为当前数据,所述遍历读取得到的一组操作数及其操作符的下述三类之一:匹配正则表达式"\d+(M|=|X)" 的单操作符数据、或匹配正则表达式"\d+M\d+S"或"\d+S\d+M"的双操作符数据、或其他多操作符数据;如果全部读取完毕则判定当前行的真实参考序列还原完成,结束并退出;否则执行下一步;
4.3)判断当前数据的类型,如果为单操作符数据则跳转执行步骤4.4);判断当前数据的类型,如果为双操作符数据则跳转执行步骤4.5);否则,跳转执行步骤4.6);
4.4)根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取当前数据的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行步骤4.2);
4.5)根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取M操作符的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行步骤4.2);
4.6)依次针对当前数据的各个操作符进行遍历:如果当前操作符为M或X或=,则针对当前行的SEQ域数据,从当前操作符的位置POS信息开始取当前操作符所对应长度的序列拷贝到真实参考序列;如果当前操作符为D或N,则追加当前操作符数值对应长度的空内容序列值真实参考序列;如果当前操作符为S或I或P或H,则忽略处理;遍历完毕后最终得到多操作符数据的对应的真实参考序列,跳转执行步骤4.2)。
此外,本发明还提供一种SAM或BAM文件的无参考序列解压还原方法,实施步骤包括:
S1)解压还原出影子参考序列;
S2)按行解压压缩文件,如果全部解压完毕则将还原出的所有行按照顺序输出得到原始的SAM或BAM文件,结束并退出;否则执行下一步;
S3)解压还原出当前行的差异信息;
S4)解压还原出当前行的CIGAR域数据;
S5)解压还原出当前行保存的RENAME域数据和POS域数据;
S6)根据RENAME域数据和POS域数据找到当前行对应的影子参考序列;
S6)针对CIGAR域数据进行分组解析,每一次解析一组操作数和操作符,如果全部解析完毕,则跳转执行步骤S2);判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将该操作数数值对应长度的差异信息与影子参考序列做比较还原,否则将该操作数数值对应长度的差异信息自身作为还原结果或者与预设的固定序列做比较还原,从而还原出当前组操作数和操作符对应的一端读序列。
此外,本发明还提供一种SAM或BAM文件的无参考序列压缩系统,包括:
影子参考序列初始化程序单元,用于初始化影子参考序列;
文件遍历读取程序单元,用于按行遍历读取SAM或BAM文件获得当前行,如果全部读取完毕则将影子参考序列压缩至目标压缩文件,结束并退出;否则执行域切割程序单元;
域切割程序单元,用于切割当前行的域数据,获取CIGAR域数据和SEQ域数据;
真实参考序列还原程序单元,用于解析当前行的CIGAR域数据并结合SEQ域数据还原出当前行对应的真实参考序列;
影子参考序列更新程序单元,用于将还原出来的真实参考序列更新到当前行在影子参考序列的对应位置,且影子参考序列的每一个位置仅更新一次;
分组压缩程序单元,用于将当前行进行分组压缩:每一次压缩一组操作数和操作符,判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将SEQ域数据中当前组操作数的数值对应长度的子序列与当前行对应的影子参考序列计算差异信息,否则将SEQ域数据中当前组操作数的数值对应长度的子序列直接作为差异信息或与预设的固定序列计算差异信息,最终将当前组操作数的操作符的差异信息压缩至目标压缩文件。
可选地,所述真实参考序列还原程序单元包括:
参考序列初始化程序模块,用于初始化当前行的真实参考序列为空;
遍历分组程序模块,用于从当前行遍历读取一组操作数及其操作符作为当前数据,所述遍历读取得到的一组操作数及其操作符的下述三类之一:匹配正则表达式"\d+(M|=|X)"的单操作符数据、或匹配正则表达式"\d+M\d+S"或"\d+S\d+M"的双操作符数据、或其他多操作符数据;如果全部读取完毕则判定当前行的真实参考序列还原完成,结束并退出;否则执行分类执行程序单元;
分类执行程序模块,用于判断当前数据的类型,如果为单操作符数据则跳转执行单操作符执行程序模块;判断当前数据的类型,如果为双操作符数据则跳转执行双操作符执行程序模块;否则,跳转执行多操作符执行程序模块;
单操作符执行程序模块,用于根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取当前数据的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行遍历分组程序模块;
双操作符执行程序模块,用于根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取M操作符的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行遍历分组程序模块;
多操作符执行程序单元,用于依次针对当前数据的各个操作符进行遍历:如果当前操作符为M或X或=,则针对当前行的SEQ域数据,从当前操作符的位置POS信息开始取当前操作符所对应长度的序列拷贝到真实参考序列;如果当前操作符为D或N,则追加当前操作符数值对应长度的空内容序列值真实参考序列;如果当前操作符为S或I或P或H,则忽略处理;遍历完毕后最终得到多操作符数据的对应的真实参考序列,跳转执行遍历分组程序模块。
此外,本发明还提供一种SAM或BAM文件的无参考序列压缩系统,包括计算机设备,该计算机设备被编程以执行所述SAM或BAM文件的无参考序列压缩方法的步骤,或该计算机设备的存储介质上存储有被编程以执行所述SAM或BAM文件的无参考序列压缩方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程以执行所述SAM或BAM文件的无参考序列压缩方法的计算机程序。
此外,本发明还提供一种SAM或BAM文件的无参考序列解压还原系统,其特征在于包括:
影子参考序列还原程序单元,用于解压还原出影子参考序列;
行遍历读取程序单元,用于按行解压压缩文件,如果全部解压完毕则将还原出的所有行按照顺序输出得到原始的SAM或BAM文件,结束并退出;否则执行差异信息还原程序单元;
差异信息还原程序单元,用于解压还原出当前行的差异信息;
CIGAR信息还原程序单元,用于解压还原出当前行的CIGAR域数据;
行位置信息还原程序单元,用于解压还原出当前行保存的RENAME域数据和POS域数据;
影子参考序列查找程序单元,用于根据RENAME域数据和POS域数据找到当前行对应的影子参考序列;
分组解析还原程序单元,针对CIGAR域数据进行分组解析,每一次解析一组操作数和操作符,如果全部解析完毕,则跳转执行遍历读取程序单元;判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将该操作数数值对应长度的差异信息与影子参考序列做比较还原,否则将该操作数数值对应长度的差异信息自身作为还原结果或者与预设的固定序列做比较还原,从而还原出当前组操作数和操作符对应的一端读序列;
此外,本发明还提供一种SAM或BAM文件的无参考序列解压还原系统,包括计算机设备,该计算机设备被编程以执行所述SAM或BAM文件的无参考序列解压还原方法的步骤,或该计算机设备的存储介质上存储有被编程以执行所述SAM或BAM文件的无参考序列解压还原方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程以执行所述SAM或BAM文件的无参考序列解压还原方法的计算机程序。
和现有技术相比,本发明具有下述优点:本发明充分利用了SAM或BAM文件已经保存读段序列与原始参考基因序列的所有匹配分别记录在相应的域中的信息,能够实现不需要原始基因参考序列而实现SAM或BAM文件的压缩,本发明能够在保持压缩率基本不受影响的前提下实现SAM或BAM数据无基因参考序列的加压和解压,且数据的压缩是完全无损的,使用起来非常快捷方便。
附图说明
图1为SAM或BAM文件的数据格式。
图2为本发明实施例压缩方法的基本流程示意图。
图3为本发明实施例中多操作符还原真实参考序列的流程示意图。
图4为本发明实施例中的单操作符还原真实参考序列实例。
图5为本发明实施例中的双操作符还原真实参考序列实例。
图6为本发明实施例中的多操作符还原真实参考序列实例。
图7为本发明实施例中的影子参考序列构建原理示意图。
图8为本发明实施例中对CIGAR域为"28M9D49M3S"的小读段的压缩示意图。
图9为本发明实施例解压还原方法的基本流程示意图。
图10为本发明实施例中对CIGAR域为"28M9D49M3S"的小读段的解压还原示意图。
具体实施方式
如图2所示,本实施例SAM或BAM文件的无参考序列压缩方法的实施步骤包括:
1)初始化影子参考序列;
2)按行遍历读取SAM或BAM文件获得当前行,如果全部读取完毕则将影子参考序列压缩至目标压缩文件,结束并退出;否则执行下一步;
3)切割当前行的域数据,获取CIGAR域数据和SEQ域数据;
4)解析当前行的CIGAR域数据并结合SEQ域数据还原出当前行对应的真实参考序列;
5)将还原出来的真实参考序列更新到当前行在影子参考序列的对应位置,且影子参考序列的每一个位置仅更新一次;
6)将当前行进行分组压缩:每一次压缩一组操作数和操作符,判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将SEQ域数据中当前组操作数的数值对应长度的子序列与当前行对应的影子参考序列计算差异信息,否则将SEQ域数据中当前组操作数的数值对应长度的子序列直接作为差异信息或与预设的固定序列计算差异信息,最终将当前组操作数的操作符的差异信息压缩至目标压缩文件。
本发明充分利用了SAM或BAM文件已经保存读段序列与原始参考基因序列的所有匹配分别记录在相应的域中的信息,能够实现不需要原始基因参考序列而实现SAM或BAM文件的压缩,本发明能够在保持压缩率基本不受影响的前提下实现SAM或BAM数据无基因参考序列的加压和解压,且数据的压缩是完全无损的,使用起来非常快捷方便。
本实施例步骤4)中还原出当前行对应的真实参考序列的详细步骤包括:
4.1)初始化当前行的真实参考序列为空;
4.2)从当前行遍历读取一组操作数及其操作符(小读段)作为当前数据,所述遍历读取得到的一组操作数及其操作符的下述三类之一:匹配正则表达式"\d+(M|=|X)" 的单操作符数据、或匹配正则表达式"\d+M\d+S"或"\d+S\d+M"的双操作符数据、或其他多操作符数据;如果全部读取完毕则判定当前行的真实参考序列还原完成,结束并退出;否则执行下一步;
4.3)判断当前数据的类型,如果为单操作符数据则跳转执行步骤4.4);判断当前数据的类型,如果为双操作符数据则跳转执行步骤4.5);否则,跳转执行步骤4.6);
4.4)根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取当前数据的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行步骤4.2);
4.5)根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取M操作符的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行步骤4.2);
4.6)如图3所示,依次针对当前数据的各个操作符进行遍历:如果当前操作符为M或X或=,则针对当前行的SEQ域数据,从当前操作符的位置POS信息开始取当前操作符所对应长度的序列拷贝到真实参考序列;如果当前操作符为D或N,则追加当前操作符数值对应长度的空内容序列值真实参考序列;如果当前操作符为S或I或P或H,则忽略处理;遍历完毕后最终得到多操作符数据的对应的真实参考序列,跳转执行步骤4.2);
本实施例步骤4)根据CIGAR域数据并结合SEQ域数据还原出当前行对应的真实参考序列;CIGAR域数据为SAM或BAM文件的第六个字段,采用数字组合操作符的规则,完整的记录了短片段序列与参考序列的比对信息。它共定义了9个操作符,含义分别如下:
M,对齐匹配;I,插入reference(真实参考序列);D,从reference中删除;N,从reference跳过对应的区域;S,软裁剪,裁剪在SEQ中的序列;H,硬裁剪,裁剪不在SEQ域数据中的序列;P,填充(从填充的reference中静默删除);=,序列完全匹配;X,序列不匹配。
本实施例中还原单条当前行的reference(真实参考序列)依赖于该当前行对应CIGAR域的内容,还原时依次解析出一组操作数及对应的操作符,再根据操作符的意义逐步还原出参考序列。下面按照操作符的个数,分别结合实例阐述read参考序列的还原方法。
1、单操作符数据:CIGAR只有一个操作符
一组操作数及其操作符只有一个操作符的CIGAR内容肯定匹配"\d+(M|=|X)"正则表达式,无论是M或=或X,对应的真实参考序列其实都是相同的,因为都是对齐匹配,不涉及到裁剪、删除或插入操作,我们假定CIGAR内容为"80M",那么操作方法为根据位置信息POS(图中为10)在SEQ域数据中截取80位,从而还原出该组操作数及其操作符对应的参考序列如图4所示。
2、双操作符数据:CIGAR有两个操作符
一组操作数及其操作符当CIGAR字段有两个操作符时,内容只可能是"\d+M\d+S"或者"\d+S\d+M"的正则形式,因为首先肯定会有M操作符,否则该CIGAR域表示没有匹配上,对于没有匹配上的CIGAR,内容只会用一个"*"符号表示。首先我们假定M在前,如"78M2(I|D|N|S)"(实际中H和P没有使用),那么后面的操作符不可能是I,因为I后面必须有其他操作符,否则I是没有意义的,同理,也不可能是D或者N,这几个操作符后面都必须接其他操作符,否则没有意义;其次我们假定M操作符在后,如"2(I|D|N|S)78M",2I或2D或2N都是没有意义的,因为对于这种情况,可以直接用"2S78M"表示。我们假定CIGAR内容为"6S74M",从而还原出该组操作数及其操作符对应的参考序列如图5所示。
3、多操作符数据:CIGAR有三个及以上的操作符
假定CIGAR域为"28M9D49M3S",SEQ的长度为80,POS域为10,并假定该read匹配到的染色体对应的影子参考序列上还没有数据(关于对应位置影子参考序列有数据时的处理过程见下节 "2构建影子参考序列")。
首先解析出CIGAR第一个字段为28M,即该SEQ前28个字符与原始参考序列对齐匹配,那么该SEQ的第1至28个字符需要插入到影子参考序列的10至37位置。
然后解析第二个字段为9D,说明需要从原始参考序列对应位置,即38位置开始删除9个字符,那么此时影子参考序列向后偏移9个字符,因为是删除操作,所以SEQ此9个字符小片段不需要插入影子参考序列。
然后解析第三个字段为49M,说明又是对齐匹配,将该49个长度的SEQ片段插入到影子参考序列的47至95位置。
然后解析出CIGAR最后一个字段为3S,说明这3个字符是不能与原始参考序列匹配的,那么直接裁剪掉即可,此时影子参考序列不需要做任何操作。至此完成了该条read序列对应参考序列的还原,还原后的得到有效的参考序列的位置信息为10-37,47-95,再将这两段片段直接插入到影子参考序列对应的位置即可(因为我们之前假设了该条染色体影子参考序列对应这两个区间是还没有数据的),详细过程下图6所示。
本实施例步骤5)将还原出来的真实参考序列更新到当前行在影子参考序列的对应位置,且影子参考序列的每一个位置仅更新一次。影子参考序列是由每行还原成的真实参考序列组成,每个不同RNAME,会对应一条影子参考序列,首先需要根据RNAME判断对应的影子参考序列是否已经存在,如果不存在就需要进行创建。影子参考序列的构建,必须保证顺序问题,即read在压缩之前必须保证它前面的read已经完成参考序列的还原,并已经将还原后的参考序列更新到了影子参考序列。如果是分块压缩,那么必须保证这个块内,在该行之前的行先完成影子参考序列的更新,否则会导致解压还原不了。每行在完成参考序列的更新后,首先根据RNAME对应的染色体,即找到对应的影子参考序列,然后根据参考序列的位置信息去更新该条影子参考序列。更新时如果影子参考序列对应位置已经有数据,则该位置跳过,以影子参考序列已有数据为准,否则将自己参考序列对应位置的数据更新到影子参考序列(图7中简称为影子序列),如图7所示,假定更新顺序为参考序列1、参考序列2、参考序列3,在参考序列3的时候由于参考序列1、参考序列2对应的位置全部被更新,因此根据参考序列3更新影子参考序列时只更新从未更新的4个位置。
本实施例步骤6)中针对非匹配操作符有两个压缩方式:
1、将SEQ域数据中当前组操作数的数值对应长度的子序列直接作为差异信息
2、将SEQ域数据中当前组操作数的数值对应长度的子序列与预设的固定序列计算差异信息。例如没有匹配上的碱基直接与碱基'G'计算差异性。解压还原时,对于没有匹配上的序列,同样也用'G'结合差异信息还原即可,见图8所示,图8的虚框中’3s‘部分的序列,保存差异性时可以直接保存为'TGG',或者类似'T00'。
如图4所示,本实施例SAM或BAM文件的无参考序列解压还原方法的实施步骤包括:
S1)解压还原出影子参考序列;
S2)按行解压压缩文件,如果全部解压完毕则将还原出的所有行按照顺序输出得到原始的SAM或BAM文件,结束并退出;否则执行下一步;
S3)解压还原出当前行的差异信息;
S4)解压还原出当前行的CIGAR域数据;
S5)解压还原出当前行保存的RENAME域数据和POS域数据;
S6)根据RENAME域数据和POS域数据找到当前行对应的影子参考序列;
S6)针对CIGAR域数据进行分组解析,每一次解析一组操作数和操作符,如果全部解析完毕,则跳转执行步骤S2);判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将该操作数数值对应长度的差异信息与影子参考序列做比较还原,否则将该操作数数值对应长度的差异信息自身作为还原结果或者与预设的固定序列做比较还原,从而还原出当前组操作数和操作符对应的一端读序列。
在压缩SAM或BAM文件时,通过对各行与对应的影子参考序列计算的差异信息,所以要实现无参考序列解压,除了需要保存差异信息外,影子参考序列也需要保存至压缩文件。这里,因为影子参考序列在没有被匹配的位置是没有数据的,也就是说影子参考序列的有效数据通常是非常有限的(除非SAM或BAM文件足够大,覆盖了几乎所有基因参考序列),对有效数据非常有限的影子参考序列进行压缩,影子参考序列通常会获得很高的压缩率,所以影子参考序列的引入不会对压缩率产生大的影响。在解压还原时,先解压出所有影子参考序列,再依次解压出POS域数据,CIGAR域数据,保存的行的差异信息,再根据CIGAR域数据依次还原每段读序列,还原时如果CIGAR操作符为匹配操作符,则将该段差异信息与对应影子参考序列做比较还原;如果为非匹配操作符,则将该段差异信息与自定义的序列做比较还原,这里自定义是指压缩时对于非匹配操作的read计算差异信息的方法,譬如与自己计算差异信息,那么自定义序列即为序列本身;譬如与默认设定的序列计算差异信息,那么这里自定义序列就是默认设定的序列。如图10所示,针对"28M9D49M3S"的读段(一组操作数和操作符)还原,如果压缩时采用的是直接使用原始参考序列的方式,即读段是与原始参考序列计算的差异信息,那么要实现无基因参考序列解压,同样也只需要将原始参考序列匹配上了读段对应的位置数据压缩进压缩文件,即可实现无基因参考序列的解压。
此外,本实施例还提供一种SAM或BAM文件的无参考序列压缩系统,包括:
影子参考序列初始化程序单元,用于初始化影子参考序列;
文件遍历读取程序单元,用于按行遍历读取SAM或BAM文件获得当前行,如果全部读取完毕则将影子参考序列压缩至目标压缩文件,结束并退出;否则执行域切割程序单元;
域切割程序单元,用于切割当前行的域数据,获取CIGAR域数据和SEQ域数据;
真实参考序列还原程序单元,用于解析当前行的CIGAR域数据并结合SEQ域数据还原出当前行对应的真实参考序列;
影子参考序列更新程序单元,用于将还原出来的真实参考序列更新到当前行在影子参考序列的对应位置,且影子参考序列的每一个位置仅更新一次;
分组压缩程序单元,用于将当前行进行分组压缩:每一次压缩一组操作数和操作符,判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将SEQ域数据中当前组操作数的数值对应长度的子序列与当前行对应的影子参考序列计算差异信息,否则将SEQ域数据中当前组操作数的数值对应长度的子序列直接作为差异信息或与预设的固定序列计算差异信息,最终将当前组操作数的操作符的差异信息压缩至目标压缩文件。
本实施例中,真实参考序列还原程序单元包括:
参考序列初始化程序模块,用于初始化当前行的真实参考序列为空;
遍历分组程序模块,用于从当前行遍历读取一组操作数及其操作符作为当前数据,所述遍历读取得到的一组操作数及其操作符的下述三类之一:匹配正则表达式"\d+(M|=|X)"的单操作符数据、或匹配正则表达式"\d+M\d+S"或"\d+S\d+M"的双操作符数据、或其他多操作符数据;如果全部读取完毕则判定当前行的真实参考序列还原完成,结束并退出;否则执行分类执行程序单元;
分类执行程序模块,用于判断当前数据的类型,如果为单操作符数据则跳转执行单操作符执行程序模块;判断当前数据的类型,如果为双操作符数据则跳转执行双操作符执行程序模块;否则,跳转执行多操作符执行程序模块;
单操作符执行程序模块,用于根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取当前数据的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行遍历分组程序模块;
双操作符执行程序模块,用于根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取M操作符的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行遍历分组程序模块;
多操作符执行程序单元,用于依次针对当前数据的各个操作符进行遍历:如果当前操作符为M或X或=,则针对当前行的SEQ域数据,从当前操作符的位置POS信息开始取当前操作符所对应长度的序列拷贝到真实参考序列;如果当前操作符为D或N,则追加当前操作符数值对应长度的空内容序列值真实参考序列;如果当前操作符为S或I或P或H,则忽略处理;遍历完毕后最终得到多操作符数据的对应的真实参考序列,跳转执行遍历分组程序模块。
此外,本实施例还提供一种SAM或BAM文件的无参考序列压缩系统,包括计算机设备,该计算机设备被编程以执行前述SAM或BAM文件的无参考序列压缩方法的步骤,或该计算机设备的存储介质上存储有被编程以执行前述SAM或BAM文件的无参考序列压缩方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程以执行前述SAM或BAM文件的无参考序列压缩方法的计算机程序。
此外,本实施例还提供一种SAM或BAM文件的无参考序列解压还原系统,包括:
影子参考序列还原程序单元,用于解压还原出影子参考序列;
行遍历读取程序单元,用于按行解压压缩文件,如果全部解压完毕则将还原出的所有行按照顺序输出得到原始的SAM或BAM文件,结束并退出;否则执行差异信息还原程序单元;
差异信息还原程序单元,用于解压还原出当前行的差异信息;
CIGAR信息还原程序单元,用于解压还原出当前行的CIGAR域数据;
行位置信息还原程序单元,用于解压还原出当前行保存的RENAME域数据和POS域数据;
影子参考序列查找程序单元,用于根据RENAME域数据和POS域数据找到当前行对应的影子参考序列;
分组解析还原程序单元,针对CIGAR域数据进行分组解析,每一次解析一组操作数和操作符,如果全部解析完毕,则跳转执行遍历读取程序单元;判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将该操作数数值对应长度的差异信息与影子参考序列做比较还原,否则将该操作数数值对应长度的差异信息自身作为还原结果或者与预设的固定序列做比较还原,从而还原出当前组操作数和操作符对应的一端读序列。
此外,本实施例还提供一种SAM或BAM文件的无参考序列解压还原系统,包括计算机设备,该计算机设备被编程以执行前述SAM或BAM文件的无参考序列解压还原方法的步骤,或该计算机设备的存储介质上存储有被编程以执行前述SAM或BAM文件的无参考序列解压还原方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程以执行前述SAM或BAM文件的无参考序列解压还原方法的计算机程序。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种SAM或BAM文件的无参考序列压缩方法,其特征在于实施步骤包括:
1)初始化影子参考序列;
2)按行遍历读取SAM或BAM文件获得当前行,如果全部读取完毕则将影子参考序列压缩至目标压缩文件,结束并退出;否则执行下一步;
3)切割当前行的域数据,获取CIGAR域数据和SEQ域数据;
4)解析当前行的CIGAR域数据并结合SEQ域数据还原出当前行对应的真实参考序列;
5)将还原出来的真实参考序列更新到当前行在影子参考序列的对应位置,且影子参考序列的每一个位置仅更新一次;
6)将当前行进行分组压缩:每一次压缩一组操作数和操作符,判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将SEQ域数据中当前组操作数的数值对应长度的子序列与当前行对应的影子参考序列计算差异信息,否则将SEQ域数据中当前组操作数的数值对应长度的子序列直接作为差异信息或与预设的固定序列计算差异信息,最终将当前组计算出来的差异信息压缩至目标压缩文件。
2.根据权利要求1所述的SAM或BAM文件的无参考序列压缩方法,其特征在于,步骤4)中还原出当前行对应的真实参考序列的详细步骤包括:
4.1)初始化当前行的真实参考序列为空;
4.2)从当前行遍历读取一组操作数及其操作符作为当前数据,所述遍历读取得到的一组操作数及其操作符的下述三类之一:匹配正则表达式"\d+(M|=|X)" 的单操作符数据、或匹配正则表达式"\d+M\d+S"或"\d+S\d+M"的双操作符数据、或其他多操作符数据;如果全部读取完毕则判定当前行的真实参考序列还原完成,结束并退出;否则执行下一步;
4.3)判断当前数据的类型,如果为单操作符数据则跳转执行步骤4.4);判断当前数据的类型,如果为双操作符数据则跳转执行步骤4.5);否则,跳转执行步骤4.6);
4.4)根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取当前数据的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行步骤4.2);
4.5)根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取M操作符的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行步骤4.2);
4.6)依次针对当前数据的各个操作符进行遍历:如果当前操作符为M或X或=,则针对当前行的SEQ域数据,从当前操作符的位置POS信息开始取当前操作符所对应长度的序列拷贝到真实参考序列;如果当前操作符为D或N,则追加当前操作符数值对应长度的空内容序列值真实参考序列;如果当前操作符为S或I或P或H,则忽略处理;遍历完毕后最终得到多操作符数据的对应的真实参考序列,跳转执行步骤4.2)。
3.一种SAM或BAM文件的无参考序列解压还原方法,其特征在于,实施步骤包括:
S1)解压还原出影子参考序列;
S2)按行解压压缩文件,如果全部解压完毕则将还原出的所有行按照顺序输出得到原始的SAM或BAM文件,结束并退出;否则执行下一步;
S3)解压还原出当前行的差异信息;
S4)解压还原出当前行的CIGAR域数据;
S5)解压还原出当前行保存的RENAME域数据和POS域数据;
S6)根据RENAME域数据和POS域数据找到当前行对应的影子参考序列;
S6)针对CIGAR域数据进行分组解析,每一次解析一组操作数和操作符,如果全部解析完毕,则跳转执行步骤S2);判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将该操作数数值对应长度的差异信息与影子参考序列做比较还原,否则将该操作数数值对应长度的差异信息自身作为还原结果或者与预设的固定序列做比较还原,从而还原出当前组操作数和操作符对应的一端读序列。
4.一种SAM或BAM文件的无参考序列压缩系统,其特征在于包括:
影子参考序列初始化程序单元,用于初始化影子参考序列;
文件遍历读取程序单元,用于按行遍历读取SAM或BAM文件获得当前行,如果全部读取完毕则将影子参考序列压缩至目标压缩文件,结束并退出;否则执行域切割程序单元;
域切割程序单元,用于切割当前行的域数据,获取CIGAR域数据和SEQ域数据;
真实参考序列还原程序单元,用于解析当前行的CIGAR域数据并结合SEQ域数据还原出当前行对应的真实参考序列;
影子参考序列更新程序单元,用于将还原出来的真实参考序列更新到当前行在影子参考序列的对应位置,且影子参考序列的每一个位置仅更新一次;
分组压缩程序单元,用于将当前行进行分组压缩:每一次压缩一组操作数和操作符,判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将SEQ域数据中当前组操作数的数值对应长度的子序列与当前行对应的影子参考序列计算差异信息,否则将SEQ域数据中当前组操作数的数值对应长度的子序列直接作为差异信息或与预设的固定序列计算差异信息,最终将当前组操作数的操作符的差异信息压缩至目标压缩文件。
5.根据权利要求4所述的SAM或BAM文件的无参考序列压缩系统,其特征在于,所述真实参考序列还原程序单元包括:
参考序列初始化程序模块,用于初始化当前行的真实参考序列为空;
遍历分组程序模块,用于从当前行遍历读取一组操作数及其操作符作为当前数据,所述遍历读取得到的一组操作数及其操作符的下述三类之一:匹配正则表达式"\d+(M|=|X)"的单操作符数据、或匹配正则表达式"\d+M\d+S"或"\d+S\d+M"的双操作符数据、或其他多操作符数据;如果全部读取完毕则判定当前行的真实参考序列还原完成,结束并退出;否则执行分类执行程序单元;
分类执行程序模块,用于判断当前数据的类型,如果为单操作符数据则跳转执行单操作符执行程序模块;判断当前数据的类型,如果为双操作符数据则跳转执行双操作符执行程序模块;否则,跳转执行多操作符执行程序模块;
单操作符执行程序模块,用于根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取当前数据的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行遍历分组程序模块;
双操作符执行程序模块,用于根据当前数据的位置POS信息,采用对齐匹配的方式,针对当前行的SEQ域数据,从当前数据的位置POS信息开始取M操作符的操作数值所对应长度的序列拷贝到真实参考序列,跳转执行遍历分组程序模块;
多操作符执行程序单元,用于依次针对当前数据的各个操作符进行遍历:如果当前操作符为M或X或=,则针对当前行的SEQ域数据,从当前操作符的位置POS信息开始取当前操作符所对应长度的序列拷贝到真实参考序列;如果当前操作符为D或N,则追加当前操作符数值对应长度的空内容序列值真实参考序列;如果当前操作符为S或I或P或H,则忽略处理;遍历完毕后最终得到多操作符数据的对应的真实参考序列,跳转执行遍历分组程序模块。
6.一种SAM或BAM文件的无参考序列压缩系统,包括计算机设备,其特征在于,该计算机设备被编程以执行权利要求1或2所述SAM或BAM文件的无参考序列压缩方法的步骤,或该计算机设备的存储介质上存储有被编程以执行权利要求1或2所述SAM或BAM文件的无参考序列压缩方法的计算机程序。
7.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程以执行权利要求1或2所述SAM或BAM文件的无参考序列压缩方法的计算机程序。
8.一种SAM或BAM文件的无参考序列解压还原系统,其特征在于包括:
影子参考序列还原程序单元,用于解压还原出影子参考序列;
行遍历读取程序单元,用于按行解压压缩文件,如果全部解压完毕则将还原出的所有行按照顺序输出得到原始的SAM或BAM文件,结束并退出;否则执行差异信息还原程序单元;
差异信息还原程序单元,用于解压还原出当前行的差异信息;
CIGAR信息还原程序单元,用于解压还原出当前行的CIGAR域数据;
行位置信息还原程序单元,用于解压还原出当前行保存的RENAME域数据和POS域数据;
影子参考序列查找程序单元,用于根据RENAME域数据和POS域数据找到当前行对应的影子参考序列;
分组解析还原程序单元,针对CIGAR域数据进行分组解析,每一次解析一组操作数和操作符,如果全部解析完毕,则跳转执行遍历读取程序单元;判断当前组操作数的操作符是否为匹配操作符,如果是匹配操作符则将该操作数数值对应长度的差异信息与影子参考序列做比较还原,否则将该操作数数值对应长度的差异信息自身作为还原结果或者与预设的固定序列做比较还原,从而还原出当前组操作数和操作符对应的一端读序列。
9.一种SAM或BAM文件的无参考序列解压还原系统,包括计算机设备,其特征在于,该计算机设备被编程以执行权利要求3所述SAM或BAM文件的无参考序列解压还原方法的步骤,或该计算机设备的存储介质上存储有被编程以执行权利要求3所述SAM或BAM文件的无参考序列解压还原方法的计算机程序。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程以执行权利要求3所述SAM或BAM文件的无参考序列解压还原方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910789674.7A CN110674094B (zh) | 2019-08-26 | 2019-08-26 | Sam及bam文件的无参考序列压缩及解压还原方法、系统和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910789674.7A CN110674094B (zh) | 2019-08-26 | 2019-08-26 | Sam及bam文件的无参考序列压缩及解压还原方法、系统和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110674094A true CN110674094A (zh) | 2020-01-10 |
CN110674094B CN110674094B (zh) | 2022-03-15 |
Family
ID=69076460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910789674.7A Active CN110674094B (zh) | 2019-08-26 | 2019-08-26 | Sam及bam文件的无参考序列压缩及解压还原方法、系统和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110674094B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416666A (zh) * | 2022-03-28 | 2022-04-29 | 山东大学 | 多核平台下bam文件解析还原方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130069427A (ko) * | 2011-12-05 | 2013-06-26 | 삼성전자주식회사 | 차세대 시퀀싱을 이용하여 획득된 유전 정보를 압축 및 압축해제하는 방법 및 장치 |
CN103546160A (zh) * | 2013-09-22 | 2014-01-29 | 上海交通大学 | 基于多参考序列的基因序列分级压缩方法 |
US20160342615A1 (en) * | 2015-05-19 | 2016-11-24 | Samsung Electronics Co., Ltd. | Method and device for generating pileup file from compressed genomic data |
CN107851137A (zh) * | 2015-06-16 | 2018-03-27 | 汉诺威戈特弗里德威廉莱布尼茨大学 | 用于压缩基因组数据的方法 |
-
2019
- 2019-08-26 CN CN201910789674.7A patent/CN110674094B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130069427A (ko) * | 2011-12-05 | 2013-06-26 | 삼성전자주식회사 | 차세대 시퀀싱을 이용하여 획득된 유전 정보를 압축 및 압축해제하는 방법 및 장치 |
CN103546160A (zh) * | 2013-09-22 | 2014-01-29 | 上海交通大学 | 基于多参考序列的基因序列分级压缩方法 |
US20160342615A1 (en) * | 2015-05-19 | 2016-11-24 | Samsung Electronics Co., Ltd. | Method and device for generating pileup file from compressed genomic data |
CN107851137A (zh) * | 2015-06-16 | 2018-03-27 | 汉诺威戈特弗里德威廉莱布尼茨大学 | 用于压缩基因组数据的方法 |
Non-Patent Citations (1)
Title |
---|
詹晓娟等: "高通量DNA测序数据的生物信息学方法", 《大数据》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416666A (zh) * | 2022-03-28 | 2022-04-29 | 山东大学 | 多核平台下bam文件解析还原方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110674094B (zh) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Benoit et al. | Reference-free compression of high throughput sequencing data with a probabilistic de Bruijn graph | |
US11762813B2 (en) | Quality score compression apparatus and method for improving downstream accuracy | |
US10090857B2 (en) | Method and apparatus for compressing genetic data | |
EP1333375A2 (en) | Software patch generator | |
KR101969848B1 (ko) | 유전자 데이터를 압축하는 방법 및 장치 | |
EP1676368A1 (en) | Data compression system and method | |
CN110674094B (zh) | Sam及bam文件的无参考序列压缩及解压还原方法、系统和介质 | |
CN103645974A (zh) | 一种pdf文件恢复方法及装置 | |
US10394763B2 (en) | Method and device for generating pileup file from compressed genomic data | |
CN106155840B (zh) | 当重组碎片jpeg图像时使用的方法和设备 | |
EP3938932B1 (en) | Method and system for mapping read sequences using a pangenome reference | |
WO2002008956A9 (en) | Focal point compression method and apparatus | |
CN109698011B (zh) | 基于短序列比对的Indel区域校正方法及系统 | |
CN106844091A (zh) | 一种压缩、还原方法及终端 | |
US20220358290A1 (en) | Encoding and storing text using dna sequences | |
EP3663890B1 (en) | Alignment method, device and system | |
US8244677B2 (en) | Focal point compression method and apparatus | |
US8571809B2 (en) | Apparatus for calculating scores for chains of sequence alignments | |
CN108021472A (zh) | ReFS文件系统的格式化恢复方法及存储介质 | |
CN110708074B (zh) | Sam及bam文件cigar域的压缩及解压还原方法、系统和介质 | |
CN112863600B (zh) | 一种基于外显子区域插入的数据压缩方法 | |
US20060155479A1 (en) | Efficiently calculating scores for chains of sequence alignments | |
US20050025232A1 (en) | Apparatus, system and method for data compression using irredundant patterns | |
US20210074381A1 (en) | Method for the compression of genome sequence data | |
US20230178179A1 (en) | Memory-efficient whole genome assembly of long reads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
CB02 | Change of applicant information |
Address after: 410000 No. 1101, C2 Building, Yuyuan, Lugu, 27 Wenxuan Road, Changsha High-tech Development Zone, Changsha City, Hunan Province Applicant after: Human and Future Biotechnology (Changsha) Co., Ltd. Address before: 410000 Building 1101, C2 Yuyuan, Lugu, No. 27 Wenxuan Road, Changsha High-tech Development Zone, Kaifu District, Changsha City, Hunan Province Applicant before: Human and Future Biotechnology (Changsha) Co., Ltd. |
|
CB02 | Change of applicant information | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |