【问题标题】:Pairwise sequence analysis - finding indexes of unique combinations成对序列分析 - 寻找独特组合的索引
【发布时间】:2020-02-11 04:34:09
【问题描述】:

我有一个很大的 DNA 序列列表 {A,C,T,G}(总共 100,000 个列表,每个列表有 3000 个字符)。我需要成对分析这些列表,从第一个列表开始,然后将其与第二个、第三个、第四个、...、第 100,000 个进行比较。然后移动到第 2 个列表并将其与第 3 个、第 4 个、...、第 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. 似乎执行得更慢!我什至尝试使用整数对这些字符进行编码,但没有发现任何改进。

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

谢谢!

【问题讨论】:

  • 您的尝试到底是什么样的。 “相当慢”到底是什么意思?您的速度要求是什么?
  • 您能否输入第三个列表 (List3) 和您想要的输出?
  • 这将是巨大的输出:3000*100000 !!!!!

标签: r sorting rcpp dna-sequence pairwise


【解决方案1】:

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

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] 

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2012-11-26
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多