CN109828785B - 一种采用gpu加速的近似代码克隆检测方法 - Google Patents
一种采用gpu加速的近似代码克隆检测方法 Download PDFInfo
- Publication number
- CN109828785B CN109828785B CN201910065276.0A CN201910065276A CN109828785B CN 109828785 B CN109828785 B CN 109828785B CN 201910065276 A CN201910065276 A CN 201910065276A CN 109828785 B CN109828785 B CN 109828785B
- Authority
- CN
- China
- Prior art keywords
- clone
- code
- candidate
- approximate
- clones
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于软件代码分析技术领域,具体为一种采用GPU加速的近似代码克隆检测方法。本发明通过将多个软件项目的源代码进行标签化,转换为有标签序列组成的串,然后采用GPU并行方法将该串构造为根据后缀字符串排序的后缀数组,并获得连续代码片段的克隆,最后将小于代码克隆长度阈值但不小于候选克隆长度阈值的代码克隆片段根据所在代码文件中的位置通过GPU并行加速的方法进行排序,并计算克隆片段合并后能否满足近似克隆的相似度阈值要求。若代码相似度满足阈值要求,则记录为近似代码克隆。本发明能在海量代码中在代码片段粒度上快速检测近似代码克隆。
Description
技术领域
本发明属于软件代码分析技术领域,具体涉及一种采用GPU加速的近似代码克隆检测方法。
背景技术
代码克隆检测是从软件源代码中找到重复的相同或相似代码片段的技术。早在20世纪90年代,就有研究者注意到软件代码的重复特性。重复代码或代码克隆一般分为四种类型。I型(Type-1)克隆是指完全相同的代码片段。II型(Type-2)克隆是指参数化的相似代码,它们除了标识符、常量、类型不同外,其他都相同。III型(Type-3)克隆是指存在添加、删除或超出II型克隆以外的其他修改的相似代码。IV型(Type-4)克隆是指语义相似的代码,即语法结构上可能完全不同,但代码语义相似。在代码克隆检测技术中,比较成熟的主要是针对I型、II型、III型的克隆检测;而在可检测III型克隆的技术中,又以检测近似克隆(near-miss clones)的方法为主。
从代码克隆的逻辑单元粒度而言,代码克隆有文件(file)粒度、方法或函数(method/function)粒度和片段(fragment)粒度。文件粒度的代码克隆由于粒度较粗,因此检测快速,但是精确度也较低。由于代码的复用经常以方法、函数或代码片段为主,因此方法或函数粒度和片段粒度的克隆检测是当前研究的主要关注点。
2002年大阪大学的研究者研发CCFinder[1]克隆检测工具,采用后缀树对代码克隆进行检测,能实现百万行级代码的I型和II型片段粒度的克隆检测。随着计算机硬件能力的提升以及研发者对该工具的改进,该工具目前已形成亿行代码的I型II型克隆检测能力。2008年加拿大研究人员研发了NICAD[2]工具,以代码行作为比较对象,实现方法或函数粒度的克隆检测,重点提升了近似克隆的检测效果。还有其他一些研究采用基于树、图的方法对代码克隆检测技术进行研究,形成了大量成果,但由于检测效率不高,无法支持亿行级代码的跨项目近似克隆检测。近年来,随着开源代码生态的日益繁荣以及代码数据量的日益增大,代码克隆检测逐渐向更大规模代码库的跨项目克隆方向发展。2016年美国和加拿大研究人员研发了SourcererCC[3]克隆检测工具,采用代码词袋化技术和启发式规则,能在亿行级代码中检测具有给定边界的代码的近似克隆,然而该工具在2.5亿行代码中检测方法粒度的近似克隆仍然需要花费4.5天的时间。2017年研究人员研发了CloneWorks[4]综合采用了多种策略提升了大规模代码的检测效率,是当前最快的近似克隆检测工具,然而该工具给出保守和激进两种不同的运行策略,其检测准确性和性能两方面难以同时保持较高水平。
在现有的克隆检测方法中,将代码进行标签化后表示为后缀树或者后缀数组是一种常用的方法。这种方法能检测任意代码片段的代码克隆,如CCFinder。然而,采用后缀树的方法需要耗费较大的内存,因此在内存有限的情况下难以处理超大规模的代码。后缀数组表示法能节约内存使用,但由于需要耗费更多的计算,因此检测效率较差。2014年在生物医学和生物信息学领域有学者提出了一种数据并行的前缀倍增方法(DPPD方法)[5],使用GPU加速后缀数组构造,充分利用GPU的并行计算能力,提升了大字符串的后缀数组的构造效率。但该方法主要用于基因序列分析等生物领域,并未在代码分析领域用于源代码的克隆检测。
[1] T. Kamiya, S. Kusumoto, and K. Inoue, “CCFinder: Amultilinguistic token-based code clone detection system for large scalesource code,” IEEE Trans. Software Eng., vol. 28, no. 7, pp. 654–670, 2002.
[2] C. K. Roy and J. R. Cordy, “NICAD: accurate detection of near-miss intentional clones using flexible pretty-printing and codenormalization,” in The 16th IEEE International Conference on ProgramComprehension, ICPC 2008, Amsterdam, The Netherlands, June 10-13, 2008, 2008,pp. 172–181.
[3] H. Sajnani, V. Saini, J. Svajlenko, C. K. Roy, and C. V. Lopes,“Sourcerercc: scaling code clone detection to big-code,” in Proceedings ofthe 38th International Conference on Software Engineering, ICSE 2016, Austin,TX, USA, May 14-22, 2016, 2016, pp. 1157–1168.
[4] J. Svajlenko and C. K. Roy, “Fast and flexible large-scale clonedetection with CloneWorks,” in Proceedings of the 39th InternationalConference on Software Engineering, ICSE 2017, Buenos Aires, Argentina, May20-28, 2017 - Companion Volume, 2017, pp. 27–30.
[5] W. Sun, “Using GPU to accelerate suffix array construction,” in7th International Conference on Biomedical Engineering and Informatics, BMEI2014, Dalian, China, 677–682.。
发明内容
本发明的目的是提供一种检测效率高的在大规模(亿行级)代码环境下快速检测近似克隆的方法。
为了达到上述目的,本发明采用后缀数组作为代码的内部表示形式,在后缀数组构造和近似克隆检测方面采用GPU加速计算,从而大幅度提升近似克隆的检测效果和效率。具体步骤如下:
(1)将代码库中的所有源代码进行标签化(tokenization),通过特征词表对代码文本进行转换,将代码中的类型名、标识符、常量、计算符以及其他终结符转换为标签(Token),并将所有代码文件中的非注释内容以标签的形式串接起来形成一个完整的串;
(2)对所建立的标签串采用数据并行的前缀倍增方法(DPPD方法)构造代码标签串的后缀数组;
(3)根据代码标签串的后缀数组表示形式,检查后缀数组相邻元素所对应的代码标签后缀串的相同前缀的长度l,如果l超过克隆最小长度阈值mc,则报告为代码克隆(这些克隆是I型和II型克隆);如果长度l不足最小长度阈值mc但是达到最小候选克隆长度阈值mcc,则记录为候选代码克隆;
(4)对候选代码克隆的两段克隆代码片段根据所在的位置(即该代码克隆的两段代码所在的方法method或函数function的完整名称)进行排序;
(5)对相邻的候选代码克隆检查是否可以合并为一个近似克隆,如果两个相邻的候选代码克隆中,一个克隆的两个代码片段所在的位置与另一个克隆的两个代码片段所在的位置分别对应,并且符合近似克隆的判别标准,则这两个克隆合并为一个近似克隆。
本发明利用GPU编程库CUDA的排序计算能力,将多个短I型或II型克隆根据所在的方法进行排序,从而可以快速地将相邻的克隆代码片段进行合并,并且采用适当的近似克隆长度阈值实现III型近似代码克隆的检测。
本发明步骤(1)中,所述的代码标签化是指将待进行克隆检测的代码转换为以标签(token)构成的串,即:该串按顺序包含了代码的所有内容,其中每个元素为一个标签(token)。该转换过程参照给定语言的终结符列表和关键字列表以及相应的转换规则实现。转换规则由克隆检测需求决定。
本发明步骤(2)中,所采用的建立代码标签串的后缀数组的方法,是一种利用GPU编程接口CUDA的数据并行的前缀倍增方法(DPPD)。
本发明步骤(3)中,采用的最小克隆长度阈值mc一般选择为:40≤mc≤50;最小候选克隆长度阈值mcc一般选择为15≤mc≤20,并且mcc不大于最小克隆长度阈值的50%。
步骤(3)中所述的候选代码克隆由一个五元组来表示。具体为:设候选代码克隆中两段代码分别对应代码标签串的第a个标签开始和第b个标签开始的n个标签长度。该两段代码分别记为a和b。设代码片段a所在的位置(方法或函数)为M1,代码片段b所在的位置(方法或函数)为M2,则该候选代码克隆表示为五元组(a,b,n,M1,M2)。
步骤(4)对步骤(3)中所得到的候选代码克隆进行排序,排序的依据是两个代码片段所在位置的完整名称(即包含各层包名的方法或函数名)。该排序具体操作如下:对候选代码克隆五元组(a,b,n,M1,M2),根据M1和M2采用CUDA中stable_sort_by_key函数进行排序,则所有在相同位置对中的多个候选代码克隆会在候选代码克隆列表中连续相邻。即产生这样的排序结果:对该候选代码克隆的两个代码片段a和b,与另一个候选代码克隆的两个代码片段c和d而言,如果a和c都处于M1中、b和d都处于M2中,则经过排序后,这两个候选代码克隆将在候选代码克隆列表中相邻,或者,即便它们不相邻,它们之间的所有候选代码克隆的两个代码片段所在位置(方法或函数)也都是M1和M2。
步骤(5)中所述的判别是否符合近似克隆的标准分为方法粒度的判别标准和片段粒度的判别标准。
步骤(5)中的方法粒度的判别是否符合近似克隆的标准是指,两个克隆A(a,b,n,M1,M2)和B(c,d,m,M3,M4)同时满足以下条件:(1) M1等于M3并且M2等于M4;(2) 在步骤(4)中根据所在位置排序后,A和B在候选代码克隆列表中相邻;(3)克隆A和克隆B中在M1中的代码总长度占M1的代码长度的比例达到至少70%;(4)克隆A和克隆B中在方法M2中的代码总长度占M2的代码长度的比例达到至少70%。
步骤(5)中的片段粒度的判别是否符合近似克隆的标准是指,两个克隆A(a,b,n,M1,M2)和B(c,d,m,M3,M4)满足以下条件:(1) M1等于M3并且M2等于M4;(2) 在步骤(4)中根据所在位置排序后,A和B在候选代码克隆列表中相邻;(3)假设a<c,即克隆A在M1中的片段在克隆B的片段之前,那么克隆A和克隆B中在方法M1中的代码长度的和占从克隆A的片段起始处到克隆B的代码结尾处的长度的比例达到至少70%;(4)假设b<d,即克隆A在M2中的片段在克隆B的片段之前,那么克隆A和克隆B中在方法M2中的代码长度的和占从克隆A的片段起始处到克隆B的代码结尾处的总长度的比例达到至少70%。
本发明由于采用了上述的技术方案,使之与现有技术相比,具有以下的优点和积极效果:本发明方法能支持亿行规模代码的跨项目近似代码克隆检测,检测粒度可以达到片段粒度。
附图说明
图1为本发明的基本过程示意图。其中,展示了本发明的源代码标签化、GPU加速的后缀数组构造、候选代码克隆识别、候选代码克隆排序以及III型近似克隆检测五个主要步骤。
图2为示例的实施过程示意图。其中示例了三个方法m1、m2、m3,其中的代码片段分别有三个短于最小克隆长度阈值的克隆(即候选克隆)。示例中展示了其中两个候选克隆如何通过本发明快速识别出是否可以合并为一个III型近似克隆。具体实施方式如下述。
具体实施方式
通过以下对本发明的实施例并结合其附图的描述,可以进一步理解本发明的目的、具体操作方法和优点。
图2为在三个方法m1、m2、m3中检测III型近似克隆的过程示例。本发明将所有源代码(包括方法m1、m2、m3)进行标签化,形成一个由代码中所有标签按顺序建立一个标签串①,其中方法m1、m2、m3表示为三个条带。随后,本发明将该标签串按字符串采用GPU并行加速构造为后缀数组②。其中,每个元素n表示一个后缀串,该后缀串从标签串的第n个标签开始一直到整个代码的标签串结束。相邻的两个元素所表示的后缀串,如果有相同的前缀(即从者两个后缀开始,有若干标签是相同的),则相同前缀的长度也在图中表示了出来③。对所有相同前缀长度小于最小克隆长度阈值(本示例中设为50)且不小于最小候选克隆长度阈值(本示例中设为20)的后缀串,识别为候选克隆,并表示为候选克隆五元组④。该五元组包含了该克隆两个克隆代码片段的起始位置(以后缀数组的元素数值表示,即本示例中的a、b、c、d、e、f)、候选克隆长度(即本示例中的30、20、25)以及所在的两个方法(即本示例中的m1、m2、m3)。将上述所有五元组根据所在方法采用GPU并行加速的方式进行排序,从而将在同一个方法中的多个克隆代码片段整理到一起⑤。最后根据合并后的代码长度以及相似度阈值判定是否为近似克隆⑥:当两个克隆中在同一个方法中的片段合并在一起的总长度(即本示例中的c+25-a+1)大于最小克隆长度阈值(本示例中设为50),并且满足相同代码长度(30+25=55)与代码总长度(c+25-a+1)的比值大于相似度阈值(70%),则合并后的代码片段对构成一个近似克隆(a~c,b~d)。
采用该方案的优点在于,利用GPU的并行化稳定排序能力,可以实现快速生成后缀数组并快速获得可合并的克隆代码片段,从而实现对大规模代码在代码片段粒度上快速检测近似克隆。
Claims (2)
1.一种检测效率高的在大规模代码环境下快速检测近似克隆的方法,其特征在于,采用后缀数组作为代码的内部表示形式,在后缀数组构造和近似克隆检测方面采用GPU加速计算,具体步骤如下:
(1)将代码库中的所有源代码进行标签化,通过特征词表对代码文本进行转换,将代码中的类型名、标识符、常量、计算符以及其他终结符转换为标签,并将所有代码文件中的非注释内容以标签的形式串接起来形成一个完整的串;
(2)对所建立的标签串采用数据并行的前缀倍增方法构造代码标签串的后缀数组;
(3)根据代码标签串的后缀数组表示形式,检查后缀数组相邻元素所对应的代码标签后缀串的相同前缀的长度l,如果l超过克隆最小长度阈值mc,则报告为代码克隆;如果长度l不足最小长度阈值mc但是达到最小候选克隆长度阈值mcc,则记录为候选代码克隆;
(4)对候选代码克隆的两段克隆代码片段根据所在的位置进行排序;
(5)对相邻的候选代码克隆检查是否可以合并为一个近似克隆,如果两个相邻的候选代码克隆中,一个克隆的两个代码片段所在的位置与另一个克隆的两个代码片段所在的位置分别对应,并且符合近似克隆的判别标准,则这两个克隆合并为一个近似克隆;
步骤(3)中,所述的候选代码克隆由一个五元组来表示,具体为:设候选代码克隆中两段代码分别对应代码标签串的第a个标签开始和第b个标签开始的n个标签长度;该两段代码分别记为a和b;设代码片段a所在的位置为M1,代码片段b所在的位置为M2,则该候选代码克隆表示为五元组(a,b,n,M1,M2);
步骤(4)中所述的对候选代码克隆的两段克隆代码片段根据所在的位置进行排序,具体操作流程如下:对候选代码克隆五元组(a,b,n,M1,M2),根据M1和M2采用CUDA中stable_sort_by_key函数进行排序,则所有在相同位置对中的多个候选代码克隆在候选代码克隆列表中连续相邻,即产生这样的排序结果为:对该候选代码克隆的两个代码片段a和b,与另一个候选代码克隆的两个代码片段c和d而言,如果a和c都处于M1中、b和d都处于M2中,则经过排序后,这两个候选代码克隆在候选代码克隆列表中相邻;或者,即便它们不相邻,它们之间的所有候选代码克隆的两个代码片段所在位置也都是M1和M2;
步骤(5)中所述的判别是否符合近似克隆的标准分为方法粒度的判别标准和片段粒度的判别标准;其中;
方法粒度的判别是否符合近似克隆的标准是指,两个克隆A(a,b,n,M1,M2)和B(c,d,m,M3,M4)同时满足以下条件:(1)M1等于M3并且M2等于M4;(2)在步骤(4)中根据所在位置排序后,A和B在候选代码克隆列表中相邻;(3)克隆A和克隆B中在M1中的代码总长度占M1的代码长度的比例达到至少70%;(4)克隆A和克隆B中在方法M2中的代码总长度占M2的代码长度的比例达到至少70%;
片段粒度的判别是否符合近似克隆的标准是指,两个克隆A(a,b,n,M1,M2)和B(c,d,m,M3,M4)满足以下条件:(1)M1等于M3并且M2等于M4;(2)在步骤(4)中根据所在位置排序后,A和B在候选代码克隆列表中相邻;(3)假设a<c,即克隆A在M1中的片段在克隆B的片段之前,那么克隆A和克隆B中在方法M1中的代码长度的和占从克隆A的片段起始处到克隆B的代码结尾处的长度的比例达到至少70%;(4)假设b<d,即克隆A在M2中的片段在克隆B的片段之前,那么克隆A和克隆B中在方法M2中的代码长度的和占从克隆A的片段起始处到克隆B的代码结尾处的总长度的比例达到至少70%。
2.根据权利要求1所述的方法,其特征在于,步骤(3)中,所采用的最小克隆长度阈值选择mc为: 40≤mc≤50;最小候选克隆长度阈值mcc选择为15≤mcc≤20,并且mcc不大于最小克隆长度阈值的50%。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910065276.0A CN109828785B (zh) | 2019-01-23 | 2019-01-23 | 一种采用gpu加速的近似代码克隆检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910065276.0A CN109828785B (zh) | 2019-01-23 | 2019-01-23 | 一种采用gpu加速的近似代码克隆检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109828785A CN109828785A (zh) | 2019-05-31 |
CN109828785B true CN109828785B (zh) | 2022-04-12 |
Family
ID=66862313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910065276.0A Active CN109828785B (zh) | 2019-01-23 | 2019-01-23 | 一种采用gpu加速的近似代码克隆检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109828785B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240740B (zh) * | 2020-01-23 | 2021-09-17 | 复旦大学 | 基于演化历史分析的代码克隆危害性评估方法 |
CN112364786A (zh) * | 2020-11-13 | 2021-02-12 | 中国科学院软件研究所 | 一种面向电子表格的表克隆自动化检测方法及电子装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1789589A2 (en) * | 2004-08-24 | 2007-05-30 | Cornell Research Foundation, Inc. | Detection of nucleic acid differences using endonuclease cleavage/ligas releasing reactions and capillary electrophoresis or microarrays |
WO2012079230A1 (en) * | 2010-12-15 | 2012-06-21 | Microsoft Corporation | Intelligent code differencing using code clone detection |
CN104077147A (zh) * | 2014-07-11 | 2014-10-01 | 东南大学 | 一种基于代码克隆自动检测和及时提醒的软件复用方法 |
CN106990956A (zh) * | 2017-03-10 | 2017-07-28 | 苏州棱镜七彩信息科技有限公司 | 基于后缀树的代码文件克隆检测方法 |
CN107066262A (zh) * | 2017-03-10 | 2017-08-18 | 苏州棱镜七彩信息科技有限公司 | 源代码文件克隆邻接表合并检测方法 |
CN108595917A (zh) * | 2018-06-29 | 2018-09-28 | 中国科学技术大学苏州研究院 | 基于fpga的面向基因测序串匹配算法的加速平台及设计方法 |
CN108710564A (zh) * | 2017-09-15 | 2018-10-26 | 苏州棱镜七彩信息科技有限公司 | 基于大数据的源代码综合评测平台 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9413527B2 (en) * | 2009-04-30 | 2016-08-09 | HGST Netherlands B.V. | Optimizing signature computation and sampling for fast adaptive similarity detection based on algorithm-specific performance |
CN106843840B (zh) * | 2016-12-23 | 2020-04-17 | 中国科学院软件研究所 | 一种基于相似度分析的源代码版本演化注释复用方法 |
US10564939B2 (en) * | 2017-06-05 | 2020-02-18 | Devfactory Fz-Llc | Method and system for arbitrary-granularity execution clone detection |
-
2019
- 2019-01-23 CN CN201910065276.0A patent/CN109828785B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1789589A2 (en) * | 2004-08-24 | 2007-05-30 | Cornell Research Foundation, Inc. | Detection of nucleic acid differences using endonuclease cleavage/ligas releasing reactions and capillary electrophoresis or microarrays |
WO2012079230A1 (en) * | 2010-12-15 | 2012-06-21 | Microsoft Corporation | Intelligent code differencing using code clone detection |
CN104077147A (zh) * | 2014-07-11 | 2014-10-01 | 东南大学 | 一种基于代码克隆自动检测和及时提醒的软件复用方法 |
CN106990956A (zh) * | 2017-03-10 | 2017-07-28 | 苏州棱镜七彩信息科技有限公司 | 基于后缀树的代码文件克隆检测方法 |
CN107066262A (zh) * | 2017-03-10 | 2017-08-18 | 苏州棱镜七彩信息科技有限公司 | 源代码文件克隆邻接表合并检测方法 |
CN108710564A (zh) * | 2017-09-15 | 2018-10-26 | 苏州棱镜七彩信息科技有限公司 | 基于大数据的源代码综合评测平台 |
CN108595917A (zh) * | 2018-06-29 | 2018-09-28 | 中国科学技术大学苏州研究院 | 基于fpga的面向基因测序串匹配算法的加速平台及设计方法 |
Non-Patent Citations (2)
Title |
---|
CloneWorks: A Fast and Flexible Large-Scale Near-Miss Clone Detection Tool;J. Svajlenko等;《2017 IEEE/ACM 39th International Conference on Software Engineering Companion》;20170528;第177-179页 * |
一种基于特征矩阵的软件脆弱性代码克隆检测方法;甘水滔等;《软件学报》;20150228;第26卷(第2期);第348-363页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109828785A (zh) | 2019-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | Review on the application of machine learning algorithms in the sequence data mining of DNA | |
CN108573045B (zh) | 一种基于多阶指纹的比对矩阵相似度检索方法 | |
US8533203B2 (en) | Identifying synonyms of entities using a document collection | |
Sirén et al. | Indexing graphs for path queries with applications in genome research | |
US10521441B2 (en) | System and method for approximate searching very large data | |
Tavakoli | Modeling genome data using bidirectional LSTM | |
JP5183155B2 (ja) | 大量配列の一括検索方法及び検索システム | |
CN112735528A (zh) | 一种基因序列比对方法及系统 | |
CN105138514A (zh) | 一种基于词典的正向逐次加一字最大匹配中文分词方法 | |
CN109828785B (zh) | 一种采用gpu加速的近似代码克隆检测方法 | |
CN107908783B (zh) | 检索文本相关性的评估方法、装置、服务器和存储介质 | |
CN109545283B (zh) | 一种基于序列模式挖掘算法的系统发生树构建方法 | |
CN108846033B (zh) | 特定领域词汇的发现及分类器训练方法和装置 | |
Haj Rachid et al. | A practical and scalable tool to find overlaps between sequences | |
CN105224624A (zh) | 一种实现倒排链快速归并的方法和装置 | |
Yuan et al. | DeCban: prediction of circRNA-RBP interaction sites by using double embeddings and cross-branch attention networks | |
EP3955256A1 (en) | Non-redundant gene clustering method and system, and electronic device | |
Huang et al. | Fast algorithms for finding the common subsequence of multiple sequences | |
Almutairy et al. | Comparing fixed sampling with minimizer sampling when using k-mer indexes to find maximal exact matches | |
CN114090769A (zh) | 实体挖掘方法、装置、计算机设备和存储介质 | |
Ahmed et al. | Efficient taxa identification using a pangenome index | |
Cheng et al. | BitMapperBS: a fast and accurate read aligner for whole-genome bisulfite sequencing | |
US20060057586A1 (en) | Transcript mapping method | |
Sohrabi et al. | Finding similar documents using frequent pattern mining methods | |
CN114970553B (zh) | 基于大规模无标注语料的情报分析方法、装置及电子设备 |
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 |