计算给定段的核苷酸段的核苷酸频率

时间:2017-07-14 12:51:06

标签: r string bioinformatics bioconductor

我有一个下面给定格式的xyz.txt文件。

 AATGCC AAGAAA AAGGAA AAGGTA AAGCAG AAGCGA

我想要做的就是在R环境中上传它,我用这个命令做了:

library(Biostrings)

string <- read.table("/home/Folder/MY_FOLD/MYZ/mp.txt")

现在因为我试图通过这个命令获得四个核苷酸序列的频率:

st <- AAStringSet(string)    /this works fine in windows but not in linux/

错误是:

Error in (function (classes, fdef, mtable)  : 
unable to find an inherited method for function ‘XString’ for signature‘"data.frame"’

我无法弄清楚为什么会出现这个错误以及我哪里出错了?如何修复此错误以使这对代码在LINUX平台上运行?

2 个答案:

答案 0 :(得分:4)

the documentation中所列,该函数需要一个字符向量。在read.table之后,你有一个数据帧。您可以尝试以下方法:

data = read.table("test.txt")
string <- apply( data , 1 , paste , collapse = " " )
st <- AAStringSet(string)

希望这有帮助! 弗洛里安

答案 1 :(得分:1)

您的数据转换为数据框:

original <- "AATGCC AAGAAA AAGGAA AAGGTA AAGCAG AAGCGA"
original <- as.data.frame(original)

我们假设这是一个单一的DNA序列,所以删除空格:

nospace <- df %>% mutate(original = gsub(" ", "", original))

您实际上需要一个DNAString-class ,这是一个特定于Biostrings包的特殊类:

d <- DNAString(nospace$original)

获得4-mer频率表:

fourmer <- oligonucleotideFrequency(d, 4, step=1)

head(fourmer)
AAAA AAAC AAAG AAAT AACA AACC 
   3    0    3    0    0    0