从 R 中的局部比对识别氨基酸替换
Identifying amino acid substitutions from local alignments in R
我想确定我的序列中特定感兴趣区域的位置和氨基酸变化,并将该信息存储在 table。
是否可以通过使用 bioconductor 包在 R 中做这样的事情?我设法用 DECIPHER 包中的 AlignSeqs() 对序列进行了简单的比对,但我无法自动提取序列中的差异。我从 FASTA 文件开始。
我想以这样的方式结束:
Isolate ID Reference_AA Sample_AA Pos
1 S T 254
2 T D 200
3 L A 230
我有一个 74 AA 长的参考序列,我想查看查询序列(比参考长得多)与参考序列的差异,并将结果列在 table.位置列与参考序列中的位置有关,与查询序列中的位置无关。我希望参考序列中的第一个 AA 从 68 开始,而不是 1。
我发现很难为此添加示例序列,因为它们往往很长,但这里有一些更短的东西可以使用(与上面的 table 无关):
>ref
VGRALPDVR
>query1
KSSYLDYAMSVIVGTALPDVRDGLKPVHRRVLY
>query2
ELKSSYLDYAMSVIVGRAAPDVRDGLKPV
预期输出:
ID Reference_AA Sample_AA Pos
query1 R T 70
query2 A L 72
既然你想要在参考中的位置,你可以只对参考序列使用一系列成对比对。 biostrings
包含一个 mismatchTable
函数,可以为您提供包含所有所需信息的数据框。使用 dplyr
:
进行一些重新格式化
library(Biostrings)
library(dplyr)
seqs<-readAAStringSet("test.fa")
mismatches <- function(query, ref) {
pairwiseAlignment(ref, query, substitutionMatrix = "BLOSUM50",
gapOpening = 3, gapExtension = 1) %>%
mismatchTable() %>%
mutate(ID=names(query),
Pos=PatternStart+67,
Reference_AA=as.character(PatternSubstring),
Sample_AA=as.character(SubjectSubstring)) %>%
select(ID, Reference_AA, Sample_AA, Pos)
}
bind_rows(mismatches(seqs[2], seqs[1]), mismatches(seqs[2], seqs[1]))
#> ID Reference_AA Sample_AA Pos
#>1 query1 R T 70
#>2 query2 L A 72
编辑
以下是使用 lapply
循环输入的方法:
bind_rows(lapply(seq_along(seqs[-1]), function(i) mismatches(seqs[i+1], seqs[1])))
#> ID Reference_AA Sample_AA Pos
#>1 ref R T 70
#>2 ref L A 72
我想确定我的序列中特定感兴趣区域的位置和氨基酸变化,并将该信息存储在 table。
是否可以通过使用 bioconductor 包在 R 中做这样的事情?我设法用 DECIPHER 包中的 AlignSeqs() 对序列进行了简单的比对,但我无法自动提取序列中的差异。我从 FASTA 文件开始。
我想以这样的方式结束:
Isolate ID Reference_AA Sample_AA Pos
1 S T 254
2 T D 200
3 L A 230
我有一个 74 AA 长的参考序列,我想查看查询序列(比参考长得多)与参考序列的差异,并将结果列在 table.位置列与参考序列中的位置有关,与查询序列中的位置无关。我希望参考序列中的第一个 AA 从 68 开始,而不是 1。
我发现很难为此添加示例序列,因为它们往往很长,但这里有一些更短的东西可以使用(与上面的 table 无关):
>ref
VGRALPDVR
>query1
KSSYLDYAMSVIVGTALPDVRDGLKPVHRRVLY
>query2
ELKSSYLDYAMSVIVGRAAPDVRDGLKPV
预期输出:
ID Reference_AA Sample_AA Pos
query1 R T 70
query2 A L 72
既然你想要在参考中的位置,你可以只对参考序列使用一系列成对比对。 biostrings
包含一个 mismatchTable
函数,可以为您提供包含所有所需信息的数据框。使用 dplyr
:
library(Biostrings)
library(dplyr)
seqs<-readAAStringSet("test.fa")
mismatches <- function(query, ref) {
pairwiseAlignment(ref, query, substitutionMatrix = "BLOSUM50",
gapOpening = 3, gapExtension = 1) %>%
mismatchTable() %>%
mutate(ID=names(query),
Pos=PatternStart+67,
Reference_AA=as.character(PatternSubstring),
Sample_AA=as.character(SubjectSubstring)) %>%
select(ID, Reference_AA, Sample_AA, Pos)
}
bind_rows(mismatches(seqs[2], seqs[1]), mismatches(seqs[2], seqs[1]))
#> ID Reference_AA Sample_AA Pos
#>1 query1 R T 70
#>2 query2 L A 72
编辑
以下是使用 lapply
循环输入的方法:
bind_rows(lapply(seq_along(seqs[-1]), function(i) mismatches(seqs[i+1], seqs[1])))
#> ID Reference_AA Sample_AA Pos
#>1 ref R T 70
#>2 ref L A 72