逐对序列分析-查找唯一组合的索引
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
我已经尝试使用Rcpp
和for
循环和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]
对于每个列表对,然后合并结果。
以上是关于逐对序列分析-查找唯一组合的索引的主要内容,如果未能解决你的问题,请参考以下文章