\name{generateExprVal.method.pdnn}
\alias{generateExprVal.method.pdnn}
\alias{pmcorrect.pdnn}
\alias{pmcorrect.pdnnpredict}
\title{Compute PM correction and summary expression value}
\description{
  Computes PM correction and summary expression value with PDNN method.
}
\usage{
pmcorrect.pdnn(object, params, gene=NULL, gene.i=NULL,
               params.chiptype=NULL, outlierlim=3, callingFromExpresso=FALSE)
pmcorrect.pdnnpredict(object, params, gene=NULL, gene.i=NULL,
               params.chiptype=NULL, outlierlim=3, callingFromExpresso=FALSE)
generateExprVal.method.pdnn(probes, params)
}
\arguments{
  \item{object}{object of \code{\link[affy]{ProbeSet}}.}
  \item{probes}{matrix of PM-corrected signals (should be coming out of
  \code{pmcorrect.pdnn}).}
  \item{params}{experiments specific parameters.}
  \item{gene}{gene (probe set) ID (from wich the \code{gene.i} would be
  derived).}
  \item{gene.i}{gene index (see details).}
  \item{params.chiptype}{chip-specific parameters.}
  \item{outlierlim}{threshold for tagging a probe as an outlier.}
  \item{callingFromExpresso}{ is the function called through
    expresso. DO NOT play with that.}
}
\details{
  Only one of \code{gene}, \code{gene.i} should be specified. For most
  the users, this is \code{gene}.
  \code{\link{pmcorrect.pdnn}} and \code{\link{pmcorrect.pdnnpredict}}
  return what is called GSB and GSB + NSB + B in the paper by Zhang Li
  and collaborators.
}
\value{
  \code{pmcorrect.pdnn} and \code{pmcorrect.pdnnpredict} return a matrix (one row per probe, one column
  per chip) with attributes attached. \code{generateExprVal} returns a
  \code{list}:
  \item{exprs}{expression values}
  \item{se.exprs}{se expr. val.}
}
\seealso{\code{\link{pdnn.params.chiptype}}}
\examples{
data(hgu95av2.pdnn.params)
library(affydata)
data(Dilution)

## only one CEL to go faster
abatch <- Dilution[, 1]

## get the chip specific parameters
params <- find.params.pdnn(abatch, hgu95av2.pdnn.params)

## The thrill part: do we get like in the Figure 1-a of the reference ?
par(mfrow=c(2,2))
##ppset.name <- sample(featureNames(abatch), 2)
ppset.name <- c("41206_r_at", "31620_at")
ppset <- probeset(abatch, ppset.name)
for (i in 1:2) {
  ##ppset[[i]] <- transform(ppset[[i]], fun=log) # take the log as they do
  probes.pdnn <- pmcorrect.pdnnpredict(ppset[[i]], params,
                                       params.chiptype=hgu95av2.pdnn.params)
  ##probes.pdnn <- log(probes.pdnn)
  plot(ppset[[i]], main=paste(ppset.name[i], "\n(raw intensities)"))
  matplotProbesPDNN(probes.pdnn, main=paste(ppset.name[i], "\n(predicted intensities)"))
}

## pick the 50 first probeset IDs
## (to go faster)
ids <- featureNames(abatch)[1:100]

## compute the expression set (object of class 'ExpressionSet')
eset <- computeExprSet(abatch, pmcorrect.method="pdnn",
                       summary.method="pdnn", ids=ids,
                       summary.param = list(params, params.chiptype=hgu95av2.pdnn.params))

}
\keyword{manip}