gpt4 book ai didi

r - 如何在 R 中执行基本的多序列比对?

转载 作者:行者123 更新时间:2023-12-04 05:43:27 27 4
gpt4 key购买 nike

(我试过在 BioStars 上问这个问题,但是对于文本挖掘的人认为有更好的解决方案的可能性很小,我也在此处重新发布)

我要完成的任务是对齐几个序列。

我没有要匹配的基本模式。我所知道的是,“真”模式的长度应该是“30”,并且我在随机点引入了缺失值的序列。

这是此类序列的一个示例,在左侧我们看到缺失值的真实位置,在右侧我们看到我们将能够观察到的序列。

我的目标是仅使用我在右列中获得的序列来重建左列(基于每个位置的许多字母相同的事实)

                     Real_sequence           The_sequence_we_see
1 CGCAATACTAAC-AGCTGACTTACGCACCG CGCAATACTAACAGCTGACTTACGCACCG
2 CGCAATACTAGC-AGGTGACTTCC-CT-CG CGCAATACTAGCAGGTGACTTCCCTCG
3 CGCAATGATCAC--GGTGGCTCCCGGTGCG CGCAATGATCACGGTGGCTCCCGGTGCG
4 CGCAATACTAACCA-CTAACT--CGCTGCG CGCAATACTAACCACTAACTCGCTGCG
5 CGCACGGGTAAGAACGTGA-TTACGCTCAG CGCACGGGTAAGAACGTGATTACGCTCAG
6 CGCTATACTAACAA-GTG-CTTAGGC-CTG CGCTATACTAACAAGTGCTTAGGCCTG
7 CCCA-C-CTAA-ACGGTGACTTACGCTCCG CCCACCTAAACGGTGACTTACGCTCCG

这是重现上述示例的示例代码:
ATCG <- c("A","T","C","G")
set.seed(40)
original.seq <- sample(ATCG, 30, T)
seqS <- matrix(original.seq,200,30, T)
change.letters <- function(x, number.of.changes = 15, letters.to.change.with = ATCG)
{
number.of.changes <- sample(seq_len(number.of.changes), 1)
new.letters <- sample(letters.to.change.with , number.of.changes, T)
where.to.change.the.letters <- sample(seq_along(x) , number.of.changes, F)
x[where.to.change.the.letters] <- new.letters
return(x)
}
change.letters(original.seq)
insert.missing.values <- function(x) change.letters(x, 3, "-")
insert.missing.values(original.seq)

seqS2 <- t(apply(seqS, 1, change.letters))
seqS3 <- t(apply(seqS2, 1, insert.missing.values))

seqS4 <- apply(seqS3,1, function(x) {paste(x, collapse = "")})
require(stringr)
# library(help=stringr)
all.seqS <- str_replace(seqS4,"-" , "")

# how do we allign this?
data.frame(Real_sequence = seqS4, The_sequence_we_see = all.seqS)

我明白,如果我只有一个字符串和一个模式,我就可以使用
library(Biostrings)
pairwiseAlignment(...)

但是在我提出的情况下,我们正在处理许多序列以相互对齐(而不是将它们对齐到一个模式)。

在 R 中是否有已知的方法可以做到这一点?

最佳答案

您可以在 中执行多重对齐R DECIPHER包裹。

按照您的示例,它看起来像:

library(DECIPHER)
dna <- DNAStringSet(all.seqS)
aligned_DNA <- AlignSeqs(dna)

它速度快,至少与此处列出的其他方法一样准确(参见 paper)。我希望这会有所帮助!

关于r - 如何在 R 中执行基本的多序列比对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4497747/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com