#' @importClassesFrom limma MAList
#' @export
"GDS2MA" <- function(GDS, do.log2 = FALSE, GPL = NULL, AnnotGPL = TRUE, getGPL = TRUE) {
if (!is.null(GPL) & getGPL) {
GPL <- getGEO(Meta(GDS)$platform, AnnotGPL = AnnotGPL)
ord.table <- match(Table(GDS)[, 1], Table(GPL)[, 1])
# exclude non-numeric columns
}
inc.columns <- grep("GSM", colnames(Table(GDS)))
mat <- suppressWarnings(as.matrix(apply(Table(GDS)[, inc.columns], 2, function(x) {
as.numeric(as.character(x))
})))
if (do.log2) {
M <- log2(mat)
} else {
M <- mat
}
if (is.null(GPL)) {
## No GPL requested
return(new("MAList", list(M = M, A = NULL, targets = Columns(GDS), notes = Meta(GDS))))
} else {
## include GPL
return(new("MAList", list(M = M, A = NULL, targets = Columns(GDS), genes = Table(GPL)[ord.table,
], notes = Meta(GDS))))
}
return(MA)
}
#' @importClassesFrom Biobase ExpressionSet
#' @export
"GDS2eSet" <- function(GDS, do.log2 = FALSE, GPL = NULL, AnnotGPL = TRUE, getGPL = TRUE) {
# exclude non-numeric columns
inc.columns <- grep("GSM", colnames(Table(GDS)))
mat <- suppressWarnings(as.matrix(apply(Table(GDS)[, inc.columns], 2, function(x) {
as.numeric(as.character(x))
})))
if (do.log2) {
expr <- log2(mat)
} else {
expr <- mat
}
rownames(expr) <- as.character(Table(GDS)$ID_REF)
tmp <- Columns(GDS)
rownames(tmp) <- as.character(tmp$sample)
pheno <- new("AnnotatedDataFrame", data = tmp)
mabstract = ifelse(is.null(Meta(GDS)$description), "", Meta(GDS)$description)
mpubmedids = ifelse(is.null(Meta(GDS)$pubmed_id), "", Meta(GDS)$pubmed_id)
mtitle = ifelse(is.null(Meta(GDS)$title), "", Meta(GDS)$title)
featuredata = new("AnnotatedDataFrame", data = data.frame(row.names = rownames(expr)))
if (getGPL | !is.null(GPL)) {
if (is.null(GPL)) {
GPL <- getGEO(Meta(GDS)$platform, AnnotGPL = AnnotGPL)
}
ord.table <- match(Table(GDS)[, 1], Table(GPL)[, 1])
dt <- Table(GPL)
rownames(dt) <- as.character(dt$ID)
vardt = data.frame(Column = Columns(GPL)[, 1], labelDescription = Columns(GPL)[,
2])
## GEO started using the same column names for both GO IDs and textual
## descriptions, so had to be made unique.
vardt[, 1] <- make.unique(as.character(vardt[, 1]))
rownames(vardt) = vardt[, 1]
colnames(dt) <- rownames(vardt)
featuredata <- new("AnnotatedDataFrame", data = dt[ord.table, ], varMetadata = vardt)
}
eset <- new("ExpressionSet", exprs = expr, phenoData = pheno, featureData = featuredata,
experimentData = new("MIAME", abstract = mabstract, title = mtitle, pubMedIds = mpubmedids,
other = Meta(GDS)))
return(eset)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.