【发布时间】:2018-06-25 15:30:39
【问题描述】:
我有一个命名列表,它代表生物通路的集合,其中名称是通路名称,列表中的向量是属于该通路的蛋白质。一个小例子是:
ann <- structure(list(`GO:0000010` = c("Q33DR2", "Q9CZQ1", "D6RHT8",
"F6ZCX7", "B8JJX0", "Q33DR3", "F6T4Z4", "E0CYM9"), `GO:0000016` = c("Q5XLR9",
"Q3TZ78", "F8VPT3"), `GO:0000026` = c("Q8BTP0", "Q3TZM9", "A0A077K846",
"F6R220", "A0A077K9W9"), `GO:0000032` = c("Q924M7", "Q3V100",
"F6Q3K8", "Q921Z9"), `GO:0000033` = c("Q9DBE8", "F6RBY3", "Q8BMZ4",
"Q8K2A8", "F6XUH0", "D6RCW8", "Q6P8H8", "Q3URN2")), .Names = c("GO:0000010",
"GO:0000016", "GO:0000026", "GO:0000032", "GO:0000033"))
我对成对的路径感兴趣:
pairs <- t(combn(names(ann), 2))
对于每一对通路,我想获得所有可能的蛋白质组合,其中蛋白质 #1 在通路 #1 中,蛋白质 #2 在通路 #2 中。所需的输出是包含两列矩阵的列表,其中第 1 列包含通路#1 中的蛋白质,第 2 列包含通路#2 中的蛋白质。到目前为止,我有这个:
protein_pairs <- purrr::map2(pairs[, 1], pairs[, 2], ~ as.matrix(expand.grid(ann[[.x]], ann[[.y]])))
但是,由于我感兴趣的配对总数非常大(通常 > 1,000),因此将 expand.grid 映射到所有可能的配对上需要很长时间 - 大约几个小时。
有没有更快的方法从这个列表中获取每对生物通路中所有可能的蛋白质组合?
【问题讨论】:
标签: r optimization combinations