【问题标题】:Counting repeated 5-mers gene from 100 DNA sequence samples从 100 个 DNA 序列样本中计数重复的 5-mers 基因
【发布时间】:2019-08-26 15:40:46
【问题描述】:

我是 R 的初学者并试图解决这个问题,但已经苦苦挣扎了几天。请帮助新手。

我从 100,000 个 DNA 序列中提取了 100 个样本,每个样本长度为 1000。然后,我想计算“AATAA”在每个样本中出现了多少次。

dog_100
#  [1] "GGGTCCTTGAAAGAAGCACAGGGTGGGGGTGGGGGTGGGGGTGGGGGAAGGCAGAGAGGAGGAAACAGGTTTTTGTCCTCAGGGCGTTGCCAGTCTGAAGGAGGTGATGGGATAATTATTTATGAGAGTTCAGGAATGCCAGGCATGGATTAAATGCAAACTAATGGAAATGACACAGAACAATACATTACAC......................................"
#[2] "CCAGGCCAGAACTGAGGCCCTCAGGGCCCCCCAGAATTCCTCATTTGCAGGATAAAAATATACTCAGCTCTTCAATCTTGGTTCTTGCTACTGCACCATGTGCTTCCTGGACTCTGGGAGGCCAGGGGTTAAGTGGGAGTGTTTGAATAAGGGAAAGGATGAGCCCTTTCCCCACACTTTGCCCCAAATAAC......................................"
#[3]
#........
# [4]
#........
# [100]
#........ 

我编写了一个函数来识别和计算“AATAA”。

R

library(stringr)

cal_AATAA <- function(DNA){
  sam_pro <- numeric(length(DNA))
  k <- 5
  sam_code <- "AATAA"
  for(i in 1:(length(DNA))){
    Num <- str_length(DNA[i])
    for(j in 1:(Num - k +1)){
      if ((str_sub(DNA[i], j, j+k-1)) == sam_code){
        sam_pro[i] <- sam_pro[i] + 1
      }
      else {
        sam_pro[i] <- sam_pro[i]
      }
    }
    return (sam_pro)
  }
}

sample_100 <- cal_AATAA(dog_100)

运行函数后得到的是

> sample_100
  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 [46] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 [91] 0 0 0 0 0 0 0 0 0 0 

尝试调试我的代码,但不知道哪里出错了。感谢任何提示或指导。

【问题讨论】:

    标签: r dna-sequence


    【解决方案1】:

    R 有一个名为gregexpr 的内置函数,可用于计算字符串中的模式。它输出一个list,所以我们必须使用sapply 来循环输出的元素。对于每个元素,我们计算大于零的值的数量,因为值-1 表示未找到任何匹配项。以gregexpr("ap", c("appleap", "orange"))的输出为例。

    dna = c("AGTACGTGCATAGC", "GTAGCTAGCTAGCAT")
    sam = "AGC"
    sapply(gregexpr(sam, dna), function(x) sum(x > 0))
    #[1] 1 3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2013-03-02
      相关资源
      最近更新 更多