【问题标题】:How to count how many times a character occurs in a string? [closed]如何计算一个字符在字符串中出现的次数? [关闭]
【发布时间】:2018-06-10 17:36:44
【问题描述】:

我有一个 DNA 序列作为我的论据。

sequence<-c("ATGAATTTTGATTTA")

我想知道 ATG 重复了多少次以及其他 64 个密码子, 编码特定氨基酸的64个密码子是

codon <- list(ATA = "I", ATC = "I", ATT = "I", ATG = "M", ACA = "T", 
              ACC = "T", ACG = "T", ACT = "T", AAC = "N", AAT = "N", AAA = "K", 
              AAG = "K", AGC = "S", AGT = "S", AGA = "R", AGG = "R", CTA = "L", 
              CTC = "L", CTG = "L", CTT = "L", CCA = "P", CCC = "P", CCG = "P", 
              CCT = "P", CAC = "H", CAT = "H", CAA = "Q", CAG = "Q", CGA = "R", 
              CGC = "R", CGG = "R", CGT = "R", GTA = "V", GTC = "V", GTG = "V", 
              GTT = "V", GCA = "A", GCC = "A", GCG = "A", GCT = "A", GAC = "D", 
              GAT = "D", GAA = "E", GAG = "E", GGA = "G", GGC = "G", GGG = "G", 
              GGT = "G", TCA = "S", TCC = "S", TCG = "S", TCT = "S", TTC = "F", 
              TTT = "F", TTA = "L", TTG = "L", TAC = "Y", TAT = "Y", TAA = "stop", 
              TAG = "stop", TGC = "C", TGT = "C", TGA = "stop", TGG = "W")

然后,我想计算形成特定氨基酸的密码子的百分比,并希望以下列方式输出。

codon   count   amino_acids  percentage
CTC     19666       L           0.18
CTT     27340       L           0.13
CTA     31534       L           0.20
CTG     76644       L           0.49

请帮我解决这个问题。

【问题讨论】:

  • 您对没有生物背景的用户提出的问题是无法理解的:密码子是什么?它与amino_acids 有什么关系?让你的问题更简单。当CTC 19666 不在给定序列中时,您是如何获得计数的?
  • 你在哪里数“ATG”?
  • DNA 转化为氨基酸,形成蛋白质,这是每个生物加工的功能关键。三组 dna 序列被称为密码子,例如 ATG、TTT,它们编码特定的氨基酸,如 M(蛋氨酸)。我给出了一个列表,其中包括编码哪些氨基酸的密码子列表。 CTC 计数 19666 也是虚构的,只是为了给你一个想法@PoGibas
  • 我想检查所有 64 个密码子的频率,而不仅仅是单个 ATG @Onyambu
  • 您在哪里签到?这就是问题

标签: r bioinformatics dna-sequence


【解决方案1】:

只要您的密码子没有移位或间隙对齐

sequence<-c("ATGAATTTTGATTTAATG")

#split into 3-character codons
splitseq<-substring(sequence, seq(1, nchar(sequence)-1, 3), seq(3, nchar(sequence), 3))

[1] "ATG" "AAT" "TTT" "GAT" "TTA" "ATG"

#table them to get the frequency
x<-as.data.frame(table(splitseq))

#match up codon translation
x$codon<-codon[match(x$splitseq, names(codon))]

#get percentage
x$percentage<-x$Freq / sum(x$Freq)

x
splitseq Freq codon percentage
1      AAT    1     N  0.1666667
2      ATG    2     M  0.3333333
3      GAT    1     D  0.1666667
4      TTA    1     L  0.1666667
5      TTT    1     F  0.1666667

【讨论】:

  • 这是一个很好的开始,但我假设他的 DNA 字符串并不那么简单,因为我们一开始并不总是有 ATG。我们可能应该做的是运行start &lt;- stringr::str_detect(sequence, "ATG"),然后为每个终止密码子再次运行它,然后运行您的脚本来检测所有氨基酸。希望我们不必处理反向的 3'-5'(然后向后阅读所有内容)
  • 好点子,需要 OP 提供更多关于序列本身的外观的信息,如果它们已被预过滤,等等。
猜你喜欢
  • 2011-07-04
  • 1970-01-01
  • 2021-01-27
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-28
  • 2014-11-14
相关资源
最近更新 更多