[英]How to convert from seqinr SeqFastadna object to Biostrings DNAStringSet for multiple sequence alignment in R
我正在处理 fasta 文件中的 DNA 序列数据,并且必须仅在 R 中为该项目工作。 我使用seqinr包进行了一些操作(选择序列的子集,更改 fasta 标头等)。 对于分析的下一阶段,我想进行多序列比对,并使用了msa R 包。 如果我导入一个 fasta 文件,我可以让msa工作,但是我很难在 R 中直接从seqinr列表对象移动到我用作msa输入的 Biostrings DNAStringSet 对象。
示例数据 - 假设 fasta_file.fasta 是一个内容如下的 fasta 文件:
>seq1
ATATATAT
>seq2
CGCGCGCG
>seq3
ATATCGCG
>seq4
ATATATAT
我使用的代码是:
# Load packages
library(tidyverse)
library(seqinr)
library(msa)
library(adegenet)
library(bios2mds)
library(ape)
library(ggtree)
# Import sequences (using seqinr)
sequences <- read.fasta("fasta_file.fasta")
# Define sequences for selection
seqs_select <- c("seq1", "seq2", "seq3")
# Select chosen sequences
seq_sub <- sequences[names(sequences) %in% seqs_select]
# Check the number of sequences left
length(sequences) # 4 original
length(seq_sub) # 3 after selection
# Run multiple sequence alignment using msa
seq_alignment <- msa(seq_sub, method="ClustalOmega") # Generates an error message because seq_sub is the wrong input
如果我立即将 fasta 文件作为 Biostrings DNAstringset 对象导入,则msa有效:
# Import fasta file directly as Biostrings object
seq_dnastring <- readDNAStringSet("fasta_file.fasta")
seq_alignment <- msa(seq_dnastring, method="ClustalOmega")
我可以保存使用 seqinr 制作的处理过的 fasta 文件,然后使用 readDNAStringSet 重新加载它,但我的问题是是否有办法直接从 seq_sub 转换为msa可以用作输入来运行对齐的内容。 IE。 将 seq_sub 格式转换为 seq_dnastring 格式。 谢谢您的帮助。
另一种选择是在 Biostrings 中处理您的序列,而不是 seqinr。 尽管如此,我认为这可以解决问题
library(Biostrings)
library(seqinr)
FUN = function(x)
paste(getSequence(x), collapse = "")
as(vapply(sequences, FUN, character(1)), "DNAStringSet")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.