Hi Joao,
The fuction doesn't offer the capacity to easily change the number of
replicates for your controls, but one way to fix this problem would be
to overwrite the default function qpDotsPlot by the same function with
a different value for the number of replicates. To do this, just load
the package arrayQuality, and paste the following code into your R,
then proceed with the same code to read your arrays and run the
quality plot function.:
I already replaced the default value nrep=3 by nrep=2 for you.
library(arrayQuality)
qpDotPlots <- function(mdata, xvar="maA", id="ID", colcode=1, nrep=2,
pch=18, ...)
{
newdata <- eval(call(xvar, mdata))
xlim <- range(newdata, na.rm=TRUE)
Cindex <- maControls(mdata) != "probes"
#Ctl <- cbind(maInfo(maGnames(mdata)), maControls(mdata))
## combined control status and name
Ctl <- cbind(maInfo(maGnames(mdata)), maControls(mdata),
row.names=NULL)
IDindex <- grep(id, colnames(Ctl)) ## Set ID columns
y <- split(Ctl, Ctl[,ncol(Ctl)]) ## The last column of Ctl is the
control status
if(length(y[names(y) != "probes"]) != 0) ## check that there
exist control spots
{
## There are control spots
exty <- lapply(y[names(y) != "probes"], function(x){
ext <- split(x, x[, IDindex])
extid <- lapply(ext,
function(xx){as.integer(row.names(xx))})
extid[lapply(extid, length) > nrep]
})
exty <- exty[lapply(exty, length) != 0]
ylim <- c(1, sum(unlist(lapply(exty, length))))
par(mar=c(4,7,3,2), cex=1) ## A wide left side to allow for
gene names
plot(1,1, type="n", xlim=xlim, ylim=ylim, axes=FALSE,
xlab=xvar, ylab="",...)
ii <- 1
for(i in 1:length(exty))
for(j in 1:length(exty[[i]]))
{
ind <- exty[[i]][[j]]
points(newdata[ind], rep(ii, length(newdata[ind])),
pch=pch, col=colcode[names(exty)[i]])
points(median(newdata[ind], na.rm=TRUE), ii, pch=18,
col="black")
ii <- ii + 1
}
axis(1)
lab <- paste(unlist(lapply(exty, names)), "
(n=",unlist(lapply(exty, lapply, length)), ") ", sep="")
axis(2, at=1:ylim[2], labels=lab, las=2, cex.axis=0.6)
box()
} else
{
## There are NO control spots
plot(1, 1, axes=FALSE, xlab="", ylab="", type="n")
text(1, 1, "No Control Genes")
box()
}
return()
}
Please let me know if this worked for you.
Best,
Agnes
________________________________
From: Jo?o Fadista [mailto:Joao.Fadista@agrsci.dk]
Sent: Tue 3/27/2007 12:44 AM
To: Paquet, Agnes; bioconductor at stat.math.ethz.ch
Subject: RE: [BioC] maQualityPlots (arrayQuality package)
Dear Agnes,
I only have control spots replicated twice on my arrays so I guess I
cannot use this function. Why can?t we work with only controls
replicated 2 times? Is the function much less robust or even
meaningless if this is the case?
Best regards
Jo?o Fadista
Ph.d. student
UNIVERSITY OF AARHUS
Faculty of Agricultural Sciences
Research Centre Foulum
Dept. of Genetics and Biotechnology
Blichers All? 20, P.O. BOX 50
DK-8830 Tjele
Phone: +45 8999 1900
Direct: +45 8999 1900
E-mail: Joao.Fadista at agrsci.dk
Web:
http://www.agrsci.org <http: www.agrsci.org=""/>
This email may contain information that is confidential.
Any use or publication of this email without written permission from
Faculty of Agricultural Sciences is not allowed.
If you are not the intended recipient, please notify Faculty of
Agricultural Sciences immediately and delete this email.
-----Original Message-----
From: Paquet, Agnes [mailto:apaquet@medsfgh.ucsf.edu]
Sent: Monday, March 26, 2007 7:57 PM
To: Jo?o Fadista; bioconductor at stat.math.ethz.ch
Subject: RE: [BioC] maQualityPlots (arrayQuality package)
Dear Joao,
This problem is most likely due to the format of your control spots.
arrayQuality is looking for controls which are replicated more that 3
times on your array (more that 3 times the same oligo id). If you
don't have such controls or if you didn't set up your controls
properly in your RG object, maQualityPlots will fail. One way to
check if your array have such controls could be to use the example R
code below:
test=table(RG$gene$Status)
controlId="ID" ## Use the column name from your gpr file containing
oligo Ids if it's not ID ## For each type of control, check how many
oligos are replicated, ## Return the number of ids replicated more
than 3 times (and how many times they are replicated for(i in
c(1:length(test))[names(test)!="probes"])
{
print(i)
print(table(RG$gene[RG$genes$Status ==
names(test)[i],controlId])[table(RG$gene[RG$genes$Status ==
names(test)[i],controlId])>3])
}
If this code returns 'named integer(0)' only, then you don't have
enough control replication. If it returns something else, or if you
have any problem running this code, could you please send me the R
output so that I can work more on this problem?
Best,
Agnes
________________________________
From: bioconductor-bounces@stat.math.ethz.ch on behalf of Jo?o Fadista
Sent: Mon 3/26/2007 5:09 AM
To: Sean Davis; bioconductor at stat.math.ethz.ch
Subject: Re: [BioC] maQualityPlots (arrayQuality package)
Dear Sean,
You are right. Here it is some back information:
> sessionInfo()
R version 2.4.0 (2006-10-03)
i386-pc-mingw32
locale:
LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
States.1252;LC_MONETARY=English_United
States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
attached base packages:
[1] "methods" "stats" "graphics" "grDevices" "utils"
"datasets"
[7] "base"
other attached packages:
sma limma
"0.5.15" "2.9.13"
> RG <- read.maimages(fnames, source="genepix.custom", path=datadir,
> ext="gpr", columns=columns, wt.fun=wtflags(weight=0,cutoff=0))
> RG$printer <- getLayout(RG$genes,guessdups=TRUE) # extract the
layout from the RG$printer
> types <- readSpotTypes("SpotTypes.txt",path=genedir)
> RG$genes$Status <- controlStatus(types, RG)
> library(arrayQuality)
> maQualityPlots(RG)
> [1] TRUE
> [1] TRUE
> [1] TRUE
> Error in exty[[i]] : subscript out of bounds
Note: My RG has 6 samples in it (3 replicates with dye swap each).
Best regards
Jo?o Fadista
Ph.d. student
UNIVERSITY OF AARHUS
Faculty of Agricultural Sciences
Research Centre Foulum
Dept. of Genetics and Biotechnology
Blichers All? 20, P.O. BOX 50
DK-8830 Tjele
Phone: +45 8999 1900
Direct: +45 8999 1900
E-mail: Joao.Fadista at agrsci.dk
Web:
http://www.agrsci.org <http: www.agrsci.org=""/>
<http: www.agrsci.org=""/>
This email may contain information that is confidential.
Any use or publication of this email without written permission from
Faculty of Agricultural Sciences is not allowed.
If you are not the intended recipient, please notify Faculty of
Agricultural Sciences immediately and delete this email.
-----Original Message-----
From: Sean Davis [mailto:sdavis2@mail.nih.gov]
Sent: Monday, March 26, 2007 12:31 PM
To: bioconductor at stat.math.ethz.ch
Cc: Jo?o Fadista
Subject: Re: [BioC] maQualityPlots (arrayQuality package)
On Monday 26 March 2007 03:22, Jo?o Fadista wrote:
> Dear all,
>
> I found a problem with the function maQualityPlots from the
> arrayQuality
package. It outputs the following message:
> > maQualityPlots(RG)
>
> [1] TRUE
> [1] TRUE
> [1] TRUE
> Error in exty[[i]] : subscript out of bounds
>
> Does anybody knows what seems to be the problem? Thanks in advance.
Joao,
You will probably need to supply some more detail. The best way to
post questions like this is to supply all the commands in a
reproducible example.
Short of that, at least the commands to produce "RG" need to be
present.
Also, the output from sessionInfo() pretty much has to be in all
questions to this list, considering the multiple versions of
bioconductor packages and R and multiple operating systems.
Sean
_______________________________________________
Bioconductor mailing list
Bioconductor at stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/bioconductor
Search the archives:
http://news.gmane.org/gmane.science.biology.informatics.conductor