r - 使用 Biostrings 编写 R 程序以将核苷酸序列转换为蛋白质序列
问题描述
我有一个包含许多不同序列的 .fasta 文件。我的目标是使用 Biostrings 包将每个单独的序列转换为它的氨基酸序列。.fasta 文件如下所示:
>Sequence 1
AAATTTGGGCCC
>Sequence 2
TTTGGGCCCAAA
任何帮助,将不胜感激。谢谢你。
解决方案
翻译功能会做你想做的事:
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...
推荐阅读
- html - 位置固定显示 flex 保持最后一个孩子最大高度
- python - pandas_datareader 的问题
- python - Python's sh module - is it at all possible for a script to request input?
- php - 我无法通过 PHP 从 json api 打印特定数据
- python - 如何打印列中的事物列表?
- android - 当我打印时间少于 1 分钟而不是 mm 时,它会自动花费 30 并且在小时位置 5 。我希望它显示 00
- javascript - Javascript 承诺返回数据
- javascript - wordpress js 移动重定向脚本仅在前页不起作用时
- javascript - 每次我运行 java 脚本代码时,如何创建一个唯一值?
- java - (JAVA) 可能存在 Thread.sleep() 问题的基于文本的游戏