【问题标题】:Using GEOquery and SAM/Siggenes in R在 R 中使用 GEOquery 和 SAM/Siggenes
【发布时间】:2011-11-15 04:38:47
【问题描述】:

由于需要,我最近开始学习 R,到目前为止,我认为非常好。但我仍处于早期阶段。然而,我在 R 中面临着这个重大的紧迫挑战,我将非常感谢一些帮助。我的编程技能显然是业余的,并且肯定会接受我能得到的任何帮助。如下:

  1. 创建要从 GEO 检索的数据集列表 (gdslist) 使用 GEOquery 包的数据库
  2. 将 gdslist 项目 (gdsid) 转换为表达式数据。那是, 可以与我的分析一起使用的数据。为此,一个 GDS2eSet 函数 工作正常。
  3. 以以下方式读入转换后的表达式数据 可以创建类/级别文件 (.cls)。 GDS3715 数据集 例如,有 3 个级别——胰岛素抵抗、胰岛素敏感和 糖尿病患者。有时,数据集就这么简单。但 其他时候,比如在这种情况下,分析级别将是 6 目的,因为虽然表型上有 3 个水平,但它们 分为治疗组和未治疗组。经常有一个 在这种情况下添加“代理”列。每个班级/级别都需要 分配了一个数字(0,1,2...)。大致就是这样 .cls 文件的格式。
  4. 要运行 Siggenes/SAM 分析(也是 R 中的一个包),两个文件是 每个数据集都需要:一个表达式文件(从 2 上)和随附的集群文件(来自 3)。
  5. 为了能够以一种 循环并将我的数据存储在指定的目录中。

我目前只能进入第 2 步。我认为第 3 步是挑战的关键......

非常感谢期待。

到目前为止的脚本:

> gdslist = c('GDS3715','GDS3716','GDS3717'...)#up to perhaps 100 datasets
> analysisfunc = function(gdsid) {
    gdsdat = getGEO(gdsid,destdir=".")
    gdseset = GDS2eSet(gdsdat)
    pData(gdseset)$disease.state #Needed assignment, etc...Step 3 stuff ;Siggenes/SAM can perhaps be done here
    return(sprintf("Results from %s should be here",gdsid))
  }
> resultlist = sapply(gdslist,analysisfunc) #loop function 

【问题讨论】:

  • 我不熟悉您的分析细节,但我经常发现使用单个文件很容易 - 降低您的分析步骤,然后将其抽象为使用文件列表立刻。您可以对单个文件执行所需的分析吗?
  • library(siggenes); ?sam 表示 res = sam(gdseset, gdseset$disease.state) 将带您进入第 5 步。如果主要目标是副作用(将 res 输出到文件),请使用 for 循环。
  • @Chase; @马丁摩根。非常感谢,蔡斯和马丁。使用我在帖子中包含的代码,我无法用一个实现想要的结果。但感谢您的建议。在我回复之前,我想尝试一下“res = sam(gdseset, gdseset$disease.state)”,但我的互联网连接目前有点问题,但我想确认输入并说声谢谢。希望在接下来的几个小时内尝试该代码时,我会更新帖子。
  • @Avoks。没问题。如您所见,它使您的问题更易于阅读。您可以使用问题编辑器中的{} 按钮自行完成。
  • @Andrie。是的,确实如此。著名的。谢谢。

标签: r bioconductor


【解决方案1】:

这应该适用于所有 gds 数据集。

 GEOSAM.analysis <- function( gdsid, destdir = getwd() ) {
       require( 'GEOquery' )
       require( 'siggenes' )
       ## test if gdsid is gdsid
       if( length(grep('GDS', gdsid)) == 0 ){
        stop()
       }
       gdsdat = getGEO( gdsid, destdir = destdir )
       gdseset = GDS2eSet( gdsdat )
       gdseset.pData <- pData( gdseset )
       gds.factors <- names( gdseset.pData )
       gds.factors[gds.factors == 'sample'] <- NA
       gds.factors[gds.factors == 'description'] <- NA
       gds.factors <- gds.factors[!is.na( gds.factors )]
       cl.list <- sapply( gdseset.pData[gds.factors], as.character)
       cl.list <- factor( apply( cl.list, 1, function(x){ paste( x , collapse = '-' )} ) )
       if( length( levels ( cl.list ) ) == 2 ){
        levels( cl.list ) <- 0:length( levels( cl.list ) )
       } else {
        levels( cl.list ) <- 1:length( levels( cl.list ) )
       }
       sam.gds <- sam( gdseset, cl.list )
       results.file <- file.path( destdir, paste( gdsid, '.sam.gds.rdata', sep =''  ) )
       save( sam.gds, file = results.file )
       return( sprintf( "Results from %s are saved in '%s'. These can be loaded by 'load('%s')'.",gdsid, results.file, results.file ) )
  }

  gdslist = c('GDS3715', 'GDS3716', 'GDS3717')
  resultlist = sapply(gdslist, GEOSAM.analysis)  
  print(resultlist)

【讨论】:

    猜你喜欢
    • 2012-07-08
    • 2020-02-09
    • 2013-05-20
    • 2020-11-13
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2017-11-26
    相关资源
    最近更新 更多