首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微阵列Limma包,在topTable函数中,不要为probsets列指定ID

微阵列Limma包,在topTable函数中,不要为probsets列指定ID
EN

Stack Overflow用户
提问于 2014-04-09 18:05:12
回答 2查看 2K关注 0票数 2

我尝试了丹尼尔·斯旺的一个教程,它运行得非常好。但是,我在topTable函数limma package中遇到了一个问题。

"topTable“函数创建一个"probeset”,但是这个probset列表没有"ID"头(其他列名是它们的示例名称,但是探测列表列没有名称(ID))。

结果,当我在跑步时:

代码语言:javascript
复制
gene.symbols <- getSYMBOL(probeset.list$ID, "hgu133plus2")

我得到了以下错误

代码语言:javascript
复制
  Error in .select(x, keys, columns, keytype = extraArgs[["kt"]], jointype = jointype): 
      'keys' must be a character vector

topTable是:

代码语言:javascript
复制
               logFC  AveExpr        t      P.Value    adj.P.Val        B
204779_s_at 7.367790 4.171707 72.77347 3.284937e-15 8.969850e-11 20.25762
207016_s_at 6.936667 4.027733 57.39252 3.694641e-14 5.044293e-10 19.44987
209631_s_at 5.192949 4.003992 51.24892 1.170273e-13 1.065182e-09 18.96660

我的表达式集由simpleaffy (gcrma)包实现。我在windows 7下运行R3.0.2和最新的生物导体包、simpleaffy_2.38.0、limma_3.18.13和指定文件: hgu133plus2.db_2.10.1、hgu133plus2probe_2.13.0、hgu133plus2cdf_2.13.0

如果有人能帮我,我会非常感激的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-09 18:34:15

ID不是作为ID列存储的,而是作为表的行名存储的。将行更改为:

代码语言:javascript
复制
gene.symbols <- getSYMBOL(rownames(probeset.list), "hgu133plus2")

如果您希望有一个ID列而不是使用行名,您可以用以下方式分配一个:

代码语言:javascript
复制
probeset.list$ID = rownames(probeset.list)

根据toptable函数的文档,ID列将存在的当且仅当有重复的基因名称:

如果“fit”有唯一的行名,那么上述row.names的data.frame按排序顺序是相同的。否则,row.names的data.frame以“fit”表示行号。如果“fit”有重复的行名,那么这些名称将保留在data.frame的“ID”列中,或者如果“genelist”已经包含“ID”列,则保留在“ID0”中。

在其他使用ID的例子中,输入中肯定有重复的基因名。这是有意义的,因为R通常不喜欢有重复的行名(但是在列中有重复的in没有问题)。

票数 1
EN

Stack Overflow用户

发布于 2015-02-09 11:37:58

希望我的工作代码能把你的问题说清楚:

代码语言:javascript
复制
library(limma) # загружаем нужную библиотека
library(siggenes)
library(cluster)
library(stats)

data <- read.table("AneurismDataAllProbesGenesisLog2NormalizedExperAndGenes.tab", sep = "\t", header = TRUE) # read from file

q = as.matrix(data) # данные в матрицу

b = as.matrix(cbind(data[, 2:10], data[, 11:14])) # cмежные колонки данных
m = normalizeQuantiles(b, ties=TRUE)
f = data.frame(condition = c(0,0,0,0,0,0,0,0,0,1,1,1,1)) # дизайн
fit = lmFit(m, f) # линейная модель
e = eBayes(fit) # тест Байеса
volcanoplot(e, coef=1, highlight=5, names=data$GeneName, xlab="Log Fold Change", ylab="Log Odds", pch=19, cex=0.67, col = "dark blue") # график-вулкан
z = rownames(m) = data[, 1]
hc <- hclust(dist(m), "ave") # кластерграмма
plot(hc)
plot(hc, hang = -1)  

print(e$coefficients) # output eBayes coefficients
print(e$p.value) # get out the P values
toptable(e) # select 10 most differentialy expressed genes, the disadvantage that it outputs only the gene row number and not the name
printresult <-toptable(e) # assign the result to a variable
write.csv(printresult, file = "eBayesTableAneurism", row.names = TRUE) # write to the file in the current folder
 volcanoplot(e, coef=1, highlight=10, names=data[,1], xlab="Log Fold Change", ylab="Log Odds", pch=19, cex=0.67, col = "red") # график-вулкан c именами
volcanoplot(e, coef=1, highlight=5, names=data[,1], xlab="Log Fold Change", ylab="Log Odds", pch=19, cex=0.67, col = "blue") # график-вулкан с именами (Volcano with gene names)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22970546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档