【问题标题】:R - Create biosequence from a list of sequences with sample()R - 使用 sample() 从序列列表中创建生物序列
【发布时间】:2022-01-22 17:52:27
【问题描述】:

我有一个非常相似的生物序列列表。首先,我想创建一个距离矩阵 NxN,然后我想使用 sample() 生成另一个序列,该序列也与其他序列非常相似但不相同。我尝试使用示例函数创建序列,但它返回我的初始列表的副本。最后,我想更新矩阵以包含生成序列的距离。有没有办法简单地绑定新的距离或者我需要创建一个新的距离?

sequences <- read.fasta('/media/losve/Νέος τόμος/Scripts/bnp54/ergasia 2/histone4.fa')
seqnames <- c("human", "mouse", "fly", "plant", "cow", "worm", "chick", "rat","yeast", "frog")
myseqs <- list() 
for(i in 1:length(sequences))
{
  myseqs[i] = toupper(paste(sequences[[i]], collapse=''))
}

names(myseqs) <- seqnames
dist_matrix <- matrix(, nrow = length(sequences), ncol = length(sequences))

for(i in 1:length(sequences))
{
  for(j in 1:length(sequences))
  {
  dist_matrix[i][j] <- pairwiseAlignment(myseqs[i], myseqs[j], substitutionMatrix = "BLOSUM50")
  }
}

new_sequence <- sample(myseqs, replace = TRUE )

【问题讨论】:

    标签: r sample


    【解决方案1】:

    sample 默认情况下只从向量中绘制元素而不进行替换。它不打算以任何方式修改元素。如果 n

    引入排序错误

    您应该考虑使用 shell 工具在基因组序列中引入随机突变错误,例如磨床、梅森或 SimSeq。

    获取每个序列的排列

    library(tidyverse)
    set.seed(1337)
    
    list("AATTGG", "GGCCGG") %>%
      map_chr(~ {
        .x %>%
          str_split(pattern = "") %>%
          simplify() %>%
          sample() %>%
          paste0(collapse = "")
      })
    #> [1] "ATGATG" "CCGGGG"
    

    【讨论】:

    • 我不想添加突变错误,我想创建一个具有相同元素但顺序不完全相同的新序列。这样他们之间就会有一些距离。
    • @Greggs 我修改了答案
    • 太好了,这正是我想要完成的。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多