如何从 seqinr SeqFastadna object 转换为 Biostrings DNAStringSet 以在 R 中进行多序列比对

How to convert from seqinr SeqFastadna object to Biostrings DNAStringSet for multiple sequence alignment in R

我正在处理 fasta 文件中的 DNA 序列数据,并且必须只在 R 中为这个项目工作。我使用 seqinr 包做了一些操作(选择序列的子集,改变 fasta headers 等)。对于分析的下一阶段,我想进行多序列比对,并使用了 msa R 包。如果我导入一个 fasta 文件,我可以让 msa 工作,但我正在努力从 seqinr 列表 object 到我用作 msa.

输入的 Biostrings DNAStringSet object

示例数据 - 假设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

msa 如果我直接将 fasta 文件导入为 Biostrings DNAstringset object:

# Import fasta file directly as Biostrings object
seq_dnastring <- readDNAStringSet("fasta_file.fasta") 
seq_alignment <- msa(seq_dnastring, method="ClustalOmega")

我可以保存我使用 seqinr 制作的处理过的 fasta 文件,然后使用 readDNAStringSet re-load 它,但我的问题是是否有一种方法可以直接从 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")