Как считать аминокислоты в файле FASTA с несколькими белковыми последовательностями, используя R - PullRequest
0 голосов
/ 08 апреля 2020

Имея файл 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

Этот код

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

дает результат, показанный на картинке. enter image description here

Хотя символ А существует в обеих последовательностях, они не учитываются. Любые идеи о том, почему это происходит? Спасибо за ваш интерес.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Кажется, в вашем коде есть ошибки. Следуя вашей процедуре, я сработал нормально:

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 тип последовательности, по умолчанию это «ДНК». Вы должны изменить его на «АА» (белок). Функция stri_count_regex является частью пакета stringi base R.

Я получаю сейчас:

> str(ACount)
 int [1:2] 14 7
0 голосов
/ 08 апреля 2020

У меня есть идея, как мне это сделать, но я не уверен, сработает ли это в вашей строке, но я подумал, что отвечу. Вероятно, вы можете обнаружить строку, используя пакет 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...