首页 > 解决方案 > 使用 Biostrings 编写 R 程序以将核苷酸序列转换为蛋白质序列

问题描述

我有一个包含许多不同序列的 .fasta 文件。我的目标是使用 Biostrings 包将每个单独的序列转换为它的氨基酸序列。.fasta 文件如下所示:

>Sequence 1
AAATTTGGGCCC
>Sequence 2
TTTGGGCCCAAA

任何帮助,将不胜感激。谢谢你。

标签: rbioinformatics

解决方案


翻译功能会做你想做的事:

library(Biostrings)

`Sequence 1` <- DNAString("AAATTTGGGCCC")
`Sequence 2` <- DNAString("TTTGGGCCCAAA")

seq_1 <- translate(`Sequence 1`, no.init.codon=TRUE)
seq_1
#> 4-letter AAString object
#> seq: KFGP

seq_2 <- translate(`Sequence 2`, no.init.codon=TRUE)
seq_2
#> 4-letter AAString object
#> seq: FGPK

要读入整个 fasta 文件:

seqs <- Biostrings::readDNAStringSet("file.fasta", format = "fasta", use.names = TRUE)
seqs_translated <- translate(seqs, no.init.codon = TRUE)
seqs_translated
#> AAStringSet object of length 2:
#>     width seq                               names               
#> [1]     4 KFGP                              Sequence 1
#> [2]     4 FGPK                              Sequence 2

编辑

你翻译你的fasta文件的问题是序列使用'完整'字母,而不仅仅是ATCG - 你有'无呼叫'(“N”),间隙(“-”)和矛盾/未解决的呼叫,例如“K”(鸟嘌呤或胸腺嘧啶)。我使用 sed 找到了这些:

grep -v ">" SEQUENCE_orf1ab.fasta | sed 's/[ATCG]//g' | sed '/^$/d'
# explanation: remove lines beginning with ">"
# then remove all A/T/C/G's and blank lines
# what you have left is causing the "not a base" error

如果您使用例如删除这些“非碱基”碱基

sed '/^>/! s/[-NYRKW]//g' SEQUENCE_orf1ab.fasta > test.fasta 
#explanation: in lines not beginning with ">", substitute all of the characters "-NYRKW" with nothing (i.e. delete them)

然后文件被翻译没有问题:

seqs <- Biostrings::readDNAStringSet("test.fasta", format = "fasta", use.names = TRUE)
seqs_translated <- translate(seqs, no.init.codon = TRUE)
seqs_translated

#>  AAStringSet object of length 91:
#>       width seq                              names               
#>  [1]  7095 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MZ505877.1 |Sever...
#>  [2]  7095 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MZ020653.1 |Sever...
#>  [3]  7092 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MW988268.1 |Sever...
#>  [4]  7095 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MW928277.1 |Sever...
#>  [5]  7095 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MW885875.1 |Sever...
#>  ...   ... ...
#> [87]  7095 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MN996529.1 |Sever...
#> [88]  7095 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MN996530.1 |Sever...
#> [89]  7095 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MN996531.1 |Sever...
#> [90]  7094 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MN988713.1 |Sever...
#> [91]  7095 MESLVPGFNEKTHVQ...KTTELLFLVMFLLT MN975262.1 |Sever...

推荐阅读