繁体   English   中英

多个部分匹配的 DNA 序列的计数

[英]count of multiple partially matching DNA sequences

我有一个部分匹配的 DNA 序列数据集,我想为部分匹配的序列分配不同的数字索引。

IE:

sequences <- c("AAAAAAAAAAAAAAA",
               "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
               "AAAAAAAAAAAAAAAAAAAAAAAAAAAACCC",
               "AAAAAAAAAAAAAAAAAAAAAAAAACC",
               "CATTTTCAG", 
               "CATTTTCAGTCAAAATTT", 
               "CATG", 
               "CATGG", 
               "CATGGGTT", 
               "GATC")

第一个在第 2、第 3 和第 4 个重复出现,它们都应该得到值 1,第 5 个在第 6 个重复出现,它们都应该得到 2,第 7 个在第 8 个和第 9 个重复出现,并且都应该得到一个 3,第 10 个不会重复出现,应该得到 4 作为索引。 当然,这只是一个示例,有时数据集可能包含 >3000 行。

我尝试了几种解决方案,包括 grepl 和 str_count。 最新的尝试之一是首先创建一个字典来存储所有序列和索引,创建一个前缀列表,然后迭代前缀以分配索引。 然而,结果并不是我所期望的,因为所有序列的索引都是 1。

# Create a dictionary to store the sequences and their indices
indices <- as.list(1:length(sequences))
names(indices) <- sequences

# Create a function that returns the first 7 characters of a sequence
get_prefix <- function(seq) {
  return(substring(seq, 1, 7))
}

# Create a list of unique prefixes
prefixes <- unique(sapply(sequences, get_prefix))

# Iterate over the prefixes and assign the same index to all sequences that start with the same prefix
for (i in 1:length(prefixes)) {
  prefix <- prefixes[i]
  seqs <- sequences[sapply(sequences, get_prefix) == prefix]
  indices[seqs] <- which.min(indices[seqs])
}

# Print the final indices
print(indices)

欢迎任何帮助! 谢谢!

这个问题与使用关系数据进行分组有关。 您可以使用grep + igraph这样做:

library(igraph)
sapply(sequences, grep, sequences, value = TRUE) |>
  stack() |>
  graph.data.frame() |>
  clusters() |>
  getElement("membership") |>
  stack()

   values                                ind
1       1                    AAAAAAAAAAAAAAA
2       1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
3       1    AAAAAAAAAAAAAAAAAAAAAAAAAAAACCC
4       1        AAAAAAAAAAAAAAAAAAAAAAAAACC
5       2                          CATTTTCAG
6       2                 CATTTTCAGTCAAAATTT
7       3                               CATG
8       3                              CATGG
9       3                           CATGGGTT
10      4                               GATC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM