在R中计算Bray Curtis差异时如何克服错误?

时间:2019-11-22 23:15:50

标签: r

我的数据集是一个大型基因计数表,其中包含500,000个基因作为行,6列作为样本(1:3是对照,4:6是疾病)。虽然我的一些样本有很多0值,但是没有一列包含所有0值。

我正在尝试根据Bray-Curtis相异性计算来运行PCoA图。

这是我的代码;

      gctab <- read.csv("final.gene.count.table.nonzero.csv", row.names=1)

     DF = data.frame(id=colnames(gctab),type=rep(c("ctrl","disease"),each=3)) 
     dds =DESeqDataSetFromMatrix(gctab,DF,~type)

     vsd <- vst(dds, blind=TRUE) 
     vegDistOut=vegdist(t(assay(vsd)),"bray")

我无法继续制作PCoA,因为得到的错误消息是:在vegdist(t(assay(vsd)),“ bray”)中:结果可能没有意义,因为数据在方法“ bray”中包含负数。

我不太确定如何克服此错误。请有人指教吗?没有值是负数。

我对PCoA和Permanova的其余代码如下(不确定上面给出的代码是否能正常工作,尤其是Permanova代码,如果有人对此有任何建议,将不胜感激)。

pcoaOut=pcoa(vegDistOut)

varExplained = pcoaOut$values$Relative_eig * 100
varExplained = round(varExplained, digits = 1)

pcoaCols = rep("#009966",6) 
pcoaCols[4:6] ="#330099"  


plot(pcoaOut$vectors[,1], pcoaOut$vectors[,2],
col="black", bg=pcoaCols, pch=21, cex=2,
xlab=paste("PCoA 1 (", varExplained[1], "%)", sep=""),
ylab=paste("PCoA 2 (", varExplained[2], "%)", sep=""))
legend("topleft", legend = c("Cirrhosis", "Control"), fill=c("#330099", "#009966"))

##PERMANOVA **
adonis(formula=vegDistOut ~type,  data=gctab, permutations=999, method= “bray”)

不确定PERMANOVA的代码是否正确,因为我不确定如何计算疾病与对照,因此我不确定如何计算阿多尼斯代码的公式部分,所以〜type就足够了吗?

编辑:使用dput(head(gctab))获取我的数据;

 structure(list(ERR527028 = c(37L, 1L, 187L, 97L, 162L, 16L), 
 ERR527031 = c(0L, 0L, 0L, 0L, 0L, 0L), ERR527081 = c(2L, 
0L, 3L, 6L, 0L, 0L), ERR528324 = c(0L, 0L, 0L, 0L, 0L, 0L
), ERR528725 = c(0L, 0L, 0L, 0L, 0L, 0L), ERR528726 = c(0L, 
0L, 0L, 0L, 0L, 0L)), row.names = c("NODE_1_length_36040_cov_12.4365_1", 
"NODE_1_length_36040_cov_12.4365_3", "NODE_2_length_32139_cov_10.3119_1", 
 "NODE_2_length_32139_cov_10.3119_2", "NODE_2_length_32139_cov_10.3119_3", 
 "NODE_3_length_27992_cov_10.5976_1"), class = "data.frame").

谢谢

0 个答案:

没有答案