如何使用 R 进行基因表达数据集分析

Posted

技术标签:

【中文标题】如何使用 R 进行基因表达数据集分析【英文标题】:How to do Gene Expression dataset analysis with R [closed] 【发布时间】:2018-10-31 01:48:42 【问题描述】:

我们的数据集包含超过 100 个样本收集的 50K+ 基因表达。此 csv 文件的大小仅为 70MB。在 R local 上运行会出现错误:下面第 6 行的“无法分配大小为 22gb 的向量”。这是编写的代码:

data=as.matrix(read.table("geneExp.csv.csv", row.names = 1, header =T, sep = ','))
logdata=log2(data)
t_logdata=t(logdata)
output=/* the output label vectors 0 or 1 */
library(MASS)
lda.fit=lda(output~., data=as.data.frame(t_logdata), CV=TRUE)
summary(lda.fit)

LDA 也被尝试作为一种降维方法,仅用于实验目的。这是数据的快照: - 行是基因,列是样本。 我们找不到一篇全面的在线帖子,涵盖了编写 R 代码(例如使用 cloudml_train(file="train.R") 提交的那个)在云上运行它。我们已经尝试使用来自 rstudio 的 cloudml,但它退出时出现错误。也许这段代码不适合在 cloudml 上运行?是否应该将其更改为 tensorflow 代码?在云上运行 LDA 模型的示例会有所帮助。谢谢。

【问题讨论】:

"Cannot allocate vector of size" 意味着机器没有足够的内存来做你想做的事。您的数据集似乎没有那么大,但我不确定lda 需要哪些资源。此外,您的代码正在将 data 从数据帧(read.table 的输出)转换为矩阵,然后再转换回数据帧。这是浪费和不必要的。 谷歌搜索“线性判别分析 R 内存”会出现 this package。我不知道它是否有用,但 SO 是针对特定编程问题的问题 - 不是针对教程材料指针的请求... @BenBolker 当然,很抱歉。我已经相应地编辑了问题。 @neilfws 谢谢。是的,数据集只有几 MB。感谢代码审查评论。 这有帮助,但恐怕这个问题仍然很模糊/广泛。如果您尝试过Cloud ML 并遇到了麻烦,为什么不使用具体的细节来编辑您的问题呢? This paper 有一些关于 LDA 内存强度的信息。 【参考方案1】:

不是一个完整的答案,而是一个探索建议(并且太长/格式太长,无法发表评论)。我拼凑了一个在一个简单的合成数据集上运行 LDA 的函数,只是为了了解可以做什么(我在一台旧的 MacBook Pro 上具有

f <- function(nr=200,nc=1e3,seed=101) 
    set.seed(seed)
    grouping <- rbinom(nr,size=1,prob=0.2)
    x <- matrix(rnorm(nr*nc),nrow=nr)
    m <- MASS::lda(x=x,grouping=grouping)
    return(m)


system.time(m0 <- f())     ## 1 second
system.time(m0 <- f(5e3))  ## 30 seconds
system.time(m0 <- f(8e3))  ## 48 seconds
system.time(m0 <- f(25e3)) ## 163 seconds

所以我可以轻松获得多达 200 行 x 25000 列(top 报告的最大示例仅占用 25% 的内存使用率,即大约 1G),尽管事情开始变得比我想要的要慢一些。

Wickham 的 Advanced R book 有一些关于内存分析的内容...

【讨论】:

以上是关于如何使用 R 进行基因表达数据集分析的主要内容,如果未能解决你的问题,请参考以下文章

GSEA 分析

拓端tecdat|R语言高维数据惩罚回归方法:主成分回归PCR岭回归lasso弹性网络elastic net分析基因数据

转录组差异分析流程三大R包比较

R语言DESeq2基因差异表达分析

GSVA全名Gene set variation analysis(基因集变异分析)简介

快来看看如何使用R语言绘制一张漂亮的火山图