R 中的 goseq 包“需要 TRUE/FALSE 的缺失值”错误

问题描述

我正在尝试在 R 中运行 GO 分析(我从未做过这种分析,所以我正在尝试不同的包),并且我正在努力寻找 goseq 包中我的代码的问题。

我从这段代码开始,它产生了一个差异表达基因名称的列表:

 de.genes <- rownames(res)[ which(res$padj < fdr.threshold & !is.na(res$padj)) ]

然后我尝试运行此代码(基于小插图的第 7 页 (https://bioconductor.org/packages/devel/bioc/vignettes/goseq/inst/doc/goseq.pdf)

 pwf <- nullp(de.genes,"hg38","genesymbol")

但我收到以下错误

 Can't find hg38/genesymbol length data in genLenDataBase...
 Found the annotation package,TxDb.Hsapiens.UCSC.hg38.kNownGene
 Trying to get the gene lengths from it.
 Error in if (matched_frac == 0) { : missing value where TRUE/FALSE needed
 In addition: Warning message:
 In grep(txdbPattern,installedPackages):argument 'pattern' has length > 1 and only the first element will be used

我发现这个论坛:https://support.bioconductor.org/p/38580/ 说我需要一个“指标变量”,但我不知道这是什么。

对于此错误的任何帮助将不胜感激,或者如果您知道任何其他易于学习的 GO 包。谢谢!

解决方法

您可以查看支持的数据库,hg38 不是其中之一:

library(org.Hs.eg.db)
library(goseq)

supported[grep("hg38|hg19",supported$Genome),]
   Genome         Id  Id Description Lengths in geneLeneDataBase
4    hg19  knownGene  Entrez Gene ID                        TRUE
36   hg19    ensGene Ensembl gene ID                        TRUE
81   hg19 geneSymbol     Gene Symbol                        TRUE
98   hg38                                                  FALSE
   GO Annotation Available
4                     TRUE
36                    TRUE
81                    TRUE
98                    TRUE

您可以通过使用 hg19 大致了解它的外观,您会发现一些缺失或无法匹配的内容应该没问题。你需要有一个二元向量,它应该被命名,例如:

set.seed(111)
allgenes = keys(org.Hs.eg.db,keytype="SYMBOL")
de.genes = rbinom(100,1,0.3)
names(de.genes) = sample(allgenes,100)

看起来像这样:

  GALNT5        TPRKB         CD48       OR52R1 LOC105372708 LOC112163649 
       0            1            0            0            0            0 

LOC105369203 LOC110121115 LOC105377654 LOC105371502 LOC101929964 HPC14 0 0 0 0 0 0 IGHD4-17 LOC101927993 HINT1 BCC3 RPL18P3 LOC108281192 0 0 0 0 0 1 RNU6-793P 六月 0 0

这样就可以了:

res = nullp(de.genes,"hg19","geneSymbol")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...