2013-10-25 16 views
1

我正在分析蛋白质数据集。我试图在R中构建一个包phangorn的树。 当我构建它时,我会得到负边长,有时会使分析难以继续(modelTest)。 根据数据集的大小(超过250种蛋白质),我无法执行modelTest。显然,由于边缘长度不足,存在问题。但是,对于较短的数据集,即使存在一些负边长,我也可以执行modelTest。 我直接从终端运行它。modelTest和负极长度与R中的phangorn

library(phangorn) 
dat = read.phyDat(file, format="fasta", type="AA") 
tax <- read.table("organism_names.txt", sep="\t", row.names=1) 
names(dat) <- tax[,1] 
distance <- dist.ml(dat, model="WAG") 
tree <- bionj(distance) 
mt <- modelTest(dat, tree, model=c("WAG", "LG", "cpREV", "mtArt", "MtZoa", "mtREV24"),multicore=TRUE) 

    Error: NA/NaN/Inf in foreign function call (arg 1) 
    In addition: Warning message: 
    In pml(tree, data) : negative edges length changed to 0! 

有人知道我该怎么办?

欢呼声中,阿尔巴

+0

欢迎来到SO - 您的示例不可重现,因为您的数据集不可用。看看您是否可以提供一个小数据示例,让其他人能够更好地提供示例。有关在R中创建可重复示例的提示,请参阅以下链接:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

答案在这里,如注释中所述下面是那个phangorn.ModelTest是给出大于220个分类群的数据集的错误。问题不是负分支长度。 – Argalatyr

+0

我遇到了同样的错误信息,问题在于我的树不是超密度的。 – user1981275

回答

1

正如@Marc说,你的榜样是不是真的...重复性

如果问题真的是负数或零米分支长度,您可以尝试让他们一个非常小的正数,例如:

tree$edge.length[which(tree$edge.length <= 0)] <- 0.0000001 

另一个技巧是订阅R-sig-phylo,有关R.人系统发育邮件列表有真正懂行的通常是很快速的响应。

+0

非常感谢dudu的解答。我试图让这个例子具有可重复性,但最终我可以确定最大的一组数据phangorn分析是220个序列。因此,当我尝试使用更大的数据集时,modelTest给了我一个错误。 – aLbAc