将 fasta 文件读入 R 中分子熵函数的矩阵或向量

Read fasta file into a matrix or vector for MolecularEntropy function in R

我是 R 的新手,所以请原谅我的非常基本的问题。 我想使用 MolecularEntropy 函数:https://www.rdocumentation.org/packages/HDMD/versions/1.2/topics/MolecularEntropy

我尝试使用来自不同包(例如 ape 或 seqinr)的不同读取 fasta 函数。但是 none 使用 MolecularEntropy 函数。

这是我的 fasta 文件的示例:

>sequence_1
ACCTGC--A
>sequence_2
ACC-GCTTA
>sequence_3
ACCTGCTTG

我试过的fasta读取函数没有给出MolecularEntropy函数的错误,但只是给出了错误的结果。

任何帮助将不胜感激!!谢谢!

bioconductor 包 Biostrings 有一个函数,readDNAStringSet 读取 fasta 文件。

seqs <- Biostrings::readDNAStringSet("seqfile.fasta")

> seqs
DNAStringSet object of length 3:
    width seq                                               names               
[1]     9 ACCTGC--A                                         sequence_1
[2]     9 ACC-GCTTA                                         sequence_2
[3]     9 ACCTGCTTG                                         sequence_3

MolecularEntropy 函数的文档说它可以接受序列向量。 您可以使用 as.character.

将上述 biostrings 对象转换为命名向量
seqs <- as.character(seqs)

> seqs
 sequence_1  sequence_2  sequence_3 
"ACCTGC--A" "ACC-GCTTA" "ACCTGCTTG"

文档没有明确说明函数对间隙的期望。 您可以使用 stringr 中的 str_replace_all 函数用您需要的任何内容替换空白。尽管此函数已向量化,但它会从向量中删除序列的名称。您可以通过使用 purrr 中的 map_chr 遍历向量来绕过它。

seqs <- purrr::map_chr(seqs, stringr::str_replace_all, "-", " ")

> seqs
 sequence_1  sequence_2  sequence_3 
"ACCTGC  A" "ACC GCTTA" "ACCTGCTTG" 

如果这仍然导致问题,请回复评论,我可以编辑 post 以进行潜在修复。