如何使用 R 计算具有多个蛋白质序列的 FASTA 文件中的氨基酸

How to count amino acids in a FASTA file with multiple protein sequences, using R

有一个包含蛋白质序列的 fasta 文件,如下所示,我想计算氨基酸 A 在每个序列中出现的次数。

>sp|P01920|DQB1_HUMAN HLA class II histocompatibility antigen, DQ beta 1 chain OS=Homo sapiens OX=9606 GN=HLA-DQB1 PE=1 SV=2
MSWKKALRIPGGLRAATVTLMLAMLSTPVAEGRDSPEDFVYQFKAMCYFTNGTERVRYVT
RYIYNREEYARFDSDVEVYRAVTPLGPPDAEYWNSQKEVLERTRAELDTVCRHNYQLELR
TTLQRRVEPTVTISPSRTEALNHHNLLVCSVTDFYPAQIKVRWFRNDQEETTGVVSTPLI
RNGDWTFQILVMLEMTPQHGDVYTCHVEHPSLQNPITVEWRAQSESAQSKMLSGIGGFVL
GLIFLGLGLIIHHRSQKGLLH

>sp|P18440|ARY1_HUMAN Arylamine N-acetyltransferase 1 OS=Homo sapiens OX=9606 GN=NAT1 PE=1 SV=2
MDIEAYLERIGYKKSRNKLDLETLTDILQHQIRAVPFENLNIHCGDAMDLGLEAIFDQVV
RRNRGGWCLQVNHLLYWALTTIGFETTMLGGYVYSTPAKKYSTGMIHLLLQVTIDGRNYI
VDAGFGRSYQMWQPLELISGKDQPQVPCVFRLTEENGFWYLDQIRREQYIPNEEFLHSDL
LEDSKYRKIYSFTLKPRTIEDFESMNTYLQTSPSSVFTSKSFCSLQTPDGVHCLVGFTLT
HRRFNYKDNTDLIEFKTLSEEEIEKVLKNIFNISLQRKLVPKHGDRFFTI

This code

library(seqinr)
data <- read.fasta(file = "yourlist.fasta", as.string = TRUE)
library(stringr)
ACount <- stri_count_regex("A",data)

结果如图所示

Although the character A excists in both sequences they are not counted. Any ideas on why is this happening? Thank you for your interest.

我知道我会怎么做,但我不确定它是否适用于你的字符串,但我想我会回答。您可能可以使用 stringr 包检测字符串,使用 str_count。这是一些信息 https://stringr.tidyverse.org/reference/str_detect.html

我刚刚用上面的字符串做了一个简短的例子。

dna<- "MDIEAYLERIGYKKSRNKLDLETLTDILQHQIRAVPFENLNIHCGDAMDLGLEAIFDQVVRRNRGGWCLQVNHLLYWALTTIGFETTMLGGYVYSTPAKKYSTGMIHLLLQVTIDGRNYIVDAGFGRSYQMWQPLELISGKDQPQVPCVFRLTEENGFWYLDQIRREQYIPNEEFLHSDLLEDSKYRKIYSFTLKPRTIEDFESMNTYLQTSPSSVFTSKSFCSLQTPDGVHCLVGFTLTHRRFNYKDNTDLIEFKTLSEEEIEKVLKNIFNISLQRKLVPKHGDRFFTI"

str_count(string= dna, pattern= "VGFTL")
#1

或者我在网上看到包 sequences,但它只计算“A”、“C”、“G”和“T”碱基,所以不会显示字符串。这是起重机,以防万一您想看一看。 https://cran.r-project.org/web/packages/sequences/sequences.pdf

您的代码似乎有一些错误。按照您的程序,这对我来说效果很好:

library(seqinr)
data <- read.fasta(file = "yourlist.fasta", seqtype = "AA", as.string = TRUE, set.attributes = FALSE)

library(stringi)
ACount <- stri_count_regex(data, "A")

您必须使用 seqtype 参数指定序列类型,默认为 "DNA"。您必须将其更改为 "AA"(蛋白质)。 stri_count_regex 函数是 stringi 基础 R 包的一部分。

我现在得到:

> str(ACount)
 int [1:2] 14 7