45dab54b |
setMethod("[", "CrlmmSetList", function(x, i, j, ..., drop = FALSE){
if (missing(drop)) drop <- FALSE
if (missing(i) && missing(j))
{
if (length(list(...))!=0)
stop("specify genes or samples to subset; use '",
substitute(x), "$", names(list(...))[[1]],
"' to access phenoData variables")
return(x)
}
if (!missing(j)){
f1 <- function(x, j){
x <- x[, j]
}
x <- lapply(x, f1, j)
}
if(!missing(i)){
f2 <- function(x, i){
x <- x[i, ]
}
x <- lapply(x, f2, i)
}
as(x, "CrlmmSetList")
})
|
bd722b7c |
setMethod("$", "CrlmmSetList", function(x, name) {
##if(!(name %in% .parameterNames()[output(x) != 0])){
if(length(x) != 3){
stop("'$' operature reserved for accessing parameter names in CopyNumberSet object. CrlmmSetList must be of length 3")
}
j <- grep(name, fvarLabels(x[[3]]))
if(length(j) < 1)
stop(name, " not in fvarLabels of CopyNumberSet object")
if(length(j) > 1){
warning("Multiple instances of ", name, " in fvarLabels. Using the first instance")
j <- j[1]
}
param <- fData(x[[3]])[, j]
param
})
setMethod(".harmonizeDimnames", "CrlmmSetList", function(object){
i <- length(object)
while(i > 1){
object[[i-1]] <- harmonizeDimnamesTo(object[[i-1]], object[[i]])
i <- i-1
}
object
})
|
b9c71726 |
|
45dab54b |
setMethod("A", "CrlmmSetList", function(object) A(object[[1]]))
|
2ae7850e |
setMethod("addFeatureAnnotation", "CrlmmSetList", function(object, CHR){
if(missing(CHR)) stop("Must specificy chromosome")
cdfName <- annotation(object)
pkgname <- paste(cdfName, "Crlmm", sep="")
path <- system.file("extdata", package=pkgname)
loader("cnProbes.rda", pkgname=pkgname, envir=.crlmmPkgEnv)
cnProbes <- get("cnProbes", envir=.crlmmPkgEnv)
loader("snpProbes.rda", pkgname=pkgname, envir=.crlmmPkgEnv)
snpProbes <- get("snpProbes", envir=.crlmmPkgEnv)
##Feature Data
snps <- featureNames(object)[snpIndex(object)]
nps <- featureNames(object)[cnIndex(object)]
position.snp <- snpProbes[match(snps, rownames(snpProbes)), "position"]
names(position.snp) <- snps
position.np <- cnProbes[match(nps, rownames(cnProbes)), "position"]
names(position.np) <- nps
position <- c(position.snp, position.np)
position <- position[match(featureNames(object), names(position))]
stopifnot(identical(names(position), featureNames(object)))
if(sum(duplicated(names(position))) > 0){
warning("Removing rows with NA identifiers...")
##RS: fix this
I <- which(!is.na(names(position)))
} else I <- seq(along=names(position))
fd <- data.frame(cbind(CHR,
position[I]))
colnames(fd) <- c("chromosome", "position")
rownames(fd) <- featureNames(object)
fD <- new("AnnotatedDataFrame",
data=fd,
varMetadata=data.frame(labelDescription=colnames(fd)))
return(fD)
})
|
43b13ec9 |
setMethod("annotation", "CrlmmSetList", function(object) annotation(object[[1]]))
|
45dab54b |
setMethod("B", "CrlmmSetList", function(object) B(object[[1]]))
|
bd722b7c |
setMethod("batch", "CrlmmSetList", function(object) batch(object[[3]]))
|
b9c71726 |
setMethod("CA", "CrlmmSetList", function(object, ...) CA(object[[3]], ...))
setMethod("CB", "CrlmmSetList", function(object, ...) CB(object[[3]], ...))
|
45dab54b |
setMethod("calls", "CrlmmSetList", function(object) calls(object[[2]]))
|
2ae7850e |
setMethod("chromosome", "CrlmmSetList", function(object){
chr <- NULL
for(i in 1:length(object)){
if(length(fvarLabels(object[[i]])) > 0){
if("chromosome" %in% fvarLabels(object[[i]])){
chr <- chromosome(object[[i]])
break()
}
}
}
if(is.null(chr)) warning("fvarLabel 'chromosome' not in any element of the CrlmmSetList object")
return(chr)
##chromosome(object[[3]])
})
setMethod("position", "CrlmmSetList", function(object){
pos <- NULL
for(i in 1:length(object)){
if(length(fvarLabels(object[[i]])) > 0){
if("position" %in% fvarLabels(object[[i]])){
pos <- position(object[[i]])
break()
}
} else next()
}
if(is.null(pos)) warning("fvarLabel 'position' not in any element of the CrlmmSetList object")
return(pos)
})
|
43b13ec9 |
setMethod("cnIndex", "CrlmmSetList", function(object, ...) {
match(cnNames(object[[1]], annotation(object)), featureNames(object))
})
|
45dab54b |
setMethod("combine", signature=signature(x="CrlmmSetList", y="CrlmmSetList"),
function(x, y, ...){
x.abset <- x[[1]]
y.abset <- y[[1]]
x.snpset <- x[[2]]
y.snpset <- y[[2]]
abset <- combine(x.abset, y.abset)
##we have hijacked the featureData slot to store parameters. Biobase will not allow combining our 'feature' data.
|
64463948 |
warning("the featureData is not easily combined... removing the featureData")
|
45dab54b |
##fd1 <- featureData(x.snpset)
##fd2 <- featureData(y.snpset)
featureData(x.snpset) <- annotatedDataFrameFrom(calls(x.snpset), byrow=TRUE)
featureData(y.snpset) <- annotatedDataFrameFrom(calls(y.snpset), byrow=TRUE)
snpset <- combine(x.snpset, y.snpset)
merged <- list(abset, snpset)
merged <- as(merged, "CrlmmSetList")
merged
})
|
bd722b7c |
setMethod("confs", "CrlmmSetList", function(object) confs(object[[2]]))
setMethod("copyNumber", "CrlmmSetList", function(object) copyNumber(object[[3]]))
setMethod("dims", "CrlmmSetList", function(object) sapply(object, dim))
|
45dab54b |
setMethod("featureNames", "CrlmmSetList", function(object) featureNames(object[[1]]))
|
b9c71726 |
setMethod("ncol", signature(x="CrlmmSetList"), function(x) ncol(x[[1]]))
setMethod("nrow", signature(x="CrlmmSetList"), function(x) nrow(x[[1]]))
|
45dab54b |
setMethod("plot", signature(x="CrlmmSetList"),
function(x, y, ...){
A <- log2(A(x))
B <- log2(B(x))
plot(A, B, ...)
})
setMethod("points", signature(x="CrlmmSetList"),
function(x, y, ...){
A <- log2(A(x))
B <- log2(B(x))
points(A, B, ...)
})
setMethod("sampleNames", "CrlmmSetList", function(object) sampleNames(object[[1]]))
setMethod("show", "CrlmmSetList", function(object){
|
43b13ec9 |
cat("\n Elements in CrlmmSetList object: \n")
cat("\n")
for(i in 1:length(object)){
cat("class: ", class(object[[i]]), "\n")
cat("assayData elements: ", ls(assayData(object[[i]])), "\n")
cat("Dimensions: ", dim(object[[i]]))
cat("\n \n")
}
|
b9c71726 |
})
|
43b13ec9 |
setMethod("snpIndex", "CrlmmSetList", function(object, ...){
match(snpNames(object[[1]], annotation(object)), featureNames(object))
})
|
45dab54b |
setMethod("splitByChromosome", "CrlmmSetList", function(object, cdfName, outdir){
path <- system.file("extdata", package=paste(cdfName, "Crlmm", sep=""))
load(file.path(path, "snpProbes.rda"))
|
b9c71726 |
load(file.path(path, "cnProbes.rda"))
k <- grep("chr", colnames(snpProbes))
if(length(k) < 1) stop("chr or chromosome not in colnames(snpProbes)")
|
45dab54b |
for(CHR in 1:24){
cat("Chromosome ", CHR, "\n")
|
b9c71726 |
snps <- rownames(snpProbes)[snpProbes[, k] == CHR]
cnps <- rownames(cnProbes)[cnProbes[, k] == CHR]
|
45dab54b |
index <- c(match(snps, featureNames(object)),
match(cnps, featureNames(object)))
|
43b13ec9 |
index <- index[!is.na(index)]
crlmmSetList <- object[index, ]
save(crlmmSetList, file=file.path(outdir, paste("crlmmSetList_", CHR, ".rda", sep="")))
|
45dab54b |
}
})
|
bd722b7c |
setMethod("update", "CrlmmSetList", function(object, ...){
computeCopynumber(object, ...)
})
|
45dab54b |
|
2ae7850e |
setReplaceMethod("CA", signature(object="CrlmmSetList", value="matrix"),
function(object, value){
CA(object[[3]]) <- value
object
})
setReplaceMethod("CB", signature(object="CrlmmSetList", value="matrix"),
function(object, value){
CB(object[[3]]) <- value
object
})
setReplaceMethod("A", signature(object="CrlmmSetList", value="matrix"),
function(object, value){
A(object[[1]]) <- value
object
})
setReplaceMethod("B", signature(object="CrlmmSetList", value="matrix"),
function(object, value){
B(object[[1]]) <- value
object
})
|
45dab54b |
|
bd722b7c |
setMethod("boxplot", "CrlmmSetList", function(x, ...){
##boxplot.CrlmmSetList <- function(x, ...){
if(length(x) != 3) stop("elements of list should be of class ABset, SnpSet, and CopyNumberSet, respectively.")
genotypes <- calls(x)-1
A1 <- A(x)
B1 <- B(x)
Alist <- split(A1, genotypes)
|
2ae7850e |
Alist <- as(rev(Alist), "data.frame")
|
bd722b7c |
Blist <- split(B1, genotypes)
ylim <- range(unlist(Alist))
boxplot(Alist, xaxt="n", ylab=expression(I[A]),
cex.axis=0.6,
xlab="",
ylim=range(unlist(Alist), na.rm=TRUE),
border="grey50", xaxs="i", at=0:2, xlim=c(-0.5, 2.5),
cex.main=0.9, xaxt="n",
yaxt="n",
col=cols)
axis(2, at=pretty(ylim), cex.axis=0.8)
axis(1, at=0:2, labels=rev(c("2A (AA genotype)", "1A (AB genotype)", "0A (BB genotype)")), cex.axis=0.7)
##extracts nuA for first batch
suppressWarnings(nuA <- x$nuA)
segments(-1, nuA,
0, nuA, lty=2, col="blue")
suppressWarnings(phiA <- x$phiA)
##phiA <- fData(x)[["phiA_A"]]
segments(0, nuA,
2.5, nuA+2.5*phiA, lwd=2, col="blue")
axis(2, at=nuA, labels=expression(hat(nu[A])), cex.axis=0.9)
text(0, ylim[1], labels=paste("n =", length(Alist[[1]])), cex=0.8)
text(1, ylim[1], labels=paste("n =", length(Alist[[2]])), cex=0.8)
text(2, ylim[1], labels=paste("n =", length(Alist[[3]])), cex=0.8)
## segments(0.5, nuA+0.5*phiA,
## 1, pretty(ylim, n=5)[2], lty=2, col="blue")
## segments(1, pretty(ylim, n=5)[2],
## 1.2, pretty(ylim)[2], lty=2, col="blue")
## text(1.25, pretty(ylim)[2], pos=4,
## labels=expression(hat(nu[A]) + c[A]*hat(phi[A])))
legend("topleft", fill=rev(cols), legend=c("AA", "AB", "BB"))##, title="diallelic genotypes")
ylim <- range(unlist(Blist))
boxplot(Blist, xaxt="n", ylab=expression(I[B]),
##xlab="diallelic genotypes",
cex.axis=0.6,
ylim=range(unlist(Blist), na.rm=TRUE),
border="grey50", xaxs="i",
at=0:2, xlim=c(-0.5, 2.5),
cex.main=0.9, yaxt="n",
col=rev(cols))
axis(2, at=pretty(ylim), cex.axis=0.8)
axis(1, at=0:2, labels=c("0B (AA genotype)", "1B (AB genotype)", "2B (BB genotype)"), cex.axis=0.7)
##nuB <- fData(x)[["nuB_A"]]
suppressWarnings(nuB <- x$nuB)
segments(-1, nuB,
0, nuB, lty=2, col="blue")
##phiB <- fData(x[i,])[["phiB_A"]]
suppressWarnings(phiB <- x$phiB)
segments(0, nuB,
2.5, nuB+2.5*phiB, lwd=2, col="blue")
axis(2, at=nuB, labels=expression(hat(nu[B])), cex.axis=0.9)
text(0, ylim[1], labels=paste("n =", length(Blist[[1]])), cex=0.8)
text(1, ylim[1], labels=paste("n =", length(Blist[[2]])), cex=0.8)
text(2, ylim[1], labels=paste("n =", length(Blist[[3]])), cex=0.8)
## segments(0.5, nuB+0.5*phiB,
## 1, pretty(ylim,n=5)[2], lty=2, col="blue")
## segments(1, pretty(ylim, n=5)[2],
## 1.2, pretty(ylim,n=5)[2], lty=2, col="blue")
## text(1.25, pretty(ylim,n=5)[2], pos=4, labels=expression(hat(nu[B]) + c[B]*hat(phi[B])))
mtext(featureNames(x)[i], 3, outer=TRUE, line=1)
})
|