逐对序列分析-查找唯一组合的索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逐对序列分析-查找唯一组合的索引相关的知识,希望对你有一定的参考价值。

我有大量DNA序列A,C,T,G(总共100,000个列表,每个列表3000个字符)。我需要成对分析这些列表,从第一个列表开始,然后将其与第二个,第三个,第四个,...,第100,000个进行比较。然后转到第二个列表,并将其与第三,第四,...,第100,000个等进行比较。

在每个成对比较中,我需要找到元素的唯一组合的索引。例如:

List1 =“ A”,“ C”,“ A”,“ G”,“ T”,“ A”,“ C”,“ T”,“ C”。

List2 =“ A”,“ G”,“ G”,“ G”,“ C”,“ A”,“ G”,“ G”,“ C”。

我想要的输出是:

AA = 1,6

CG = 2,7

AG = 3

GG = 4

TC = 5

TG = 8

CC = 9

我已经尝试使用Rcppfor循环和if/else语句对此进行编码,但是事实证明它相当慢。使用R之类的apply, unique, etc.功能似乎执行得更慢!我什至尝试使用Integers对这些字符进行编码,但没有发现任何改进。

只是想知道是否有人可以想到一种更快的方法...

谢谢!

答案

假设它们实际上是列表,您可以执行类似操作

library(data.table)
Df <- data.table(list1, list2) 
Df[, .(str = factor(paste0(list1, list2)), 
       row = seq(.N))][, .(str, 
                          paste0(row, collapse = ',')), #collapse ID
                         by = str] 

对于每个列表对,然后合并结果。

以上是关于逐对序列分析-查找唯一组合的索引的主要内容,如果未能解决你的问题,请参考以下文章

索引常识

索引补充,命中索引

数据库索引补充

关于数据库的索引

Mysql --- 索引

索引补充