繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM