\name{PlotGroups}
\alias{PlotGroups}

\title{ Function for plotting gene expression profile at different experimental groups}
\description{
  This function displays the gene expression profile for each experimental group in a time series
     gene expression experiment.
}
\usage{
PlotGroups(data, edesign = NULL, time = edesign[,1], groups = edesign[,c(3:ncol(edesign))], 
           repvect = edesign[,2], show.fit = FALSE, dis = NULL, step.method = "backward", 
           min.obs = 2, alfa = 0.05, nvar.correction = FALSE, summary.mode = "median", show.lines = TRUE, groups.vector = NULL, 
           xlab = "time", cex.xaxis = 1, ylim = NULL, main = NULL, cexlab = 0.8, legend = TRUE, sub = NULL)
}

\arguments{
  \item{data}{ vector or matrix containing the gene expression data }
  \item{edesign}{ matrix describing experimental design. Rows must be arrays and columns experiment descriptors}
  \item{time}{ vector indicating time assigment for each array }
  \item{groups}{ matrix indicating experimental group to which each array is assigned }
  \item{repvect}{ index vector indicating experimental replicates}
  \item{show.fit}{ logical indicating whether regression fit curves must be plotted}
  \item{dis}{ regression design matrix  }
  \item{step.method}{stepwise regression method to fit models for cluster mean profiles. It can be either \code{"backward"}, \code{"forward"}, \code{"two.ways.backward"} or \code{"two.ways.forward"} }
  \item{min.obs}{minimal number of observations for a gene to be included in the analysis}
  \item{alfa}{ significance level used for variable selection in the stepwise regression }
  \item{nvar.correction}{argument for correcting stepwise regression significance level. See \code{\link{T.fit}} }
  \item{summary.mode}{ the method to condensate expression information when more than one gene is present in the data. Possible values are \code{"representative"} and \code{"median"} }
  \item{show.lines}{ logical indicating whether a line must be drawn joining plotted data points for reach group}
  \item{groups.vector}{ vector indicating experimental group to which each variable belongs }
  \item{xlab}{ label for the x axis }
  \item{cex.xaxis}{ graphical parameter maginfication to be used for x axis in plotting functions }
  \item{ylim}{ range of the y axis }
  \item{main}{plot main title }
  \item{cexlab}{ graphical parameter maginfication to be used for x axis label in plotting functions  }
  \item{legend}{ logical indicating whether legend must be added when plotting profiles}
  \item{sub}{ plot subtitle }
}
\details{
     To compute experimental groups either a edesign object must be provided, or separate values must be given for the \code{time}, \code{repvect} and \code{groups} 
     arguments.
\newline
     When data is a matrix, the average expression value is displayed.
\newline
     When there are array replicates in the data (as indicated by \code{repvect}), values are averaged by \code{repvect}.
\newline
     PlotGroups plots one single expression profile for each experimental group even if there are more that one genes in the data set. The way data
     is condensated for this is given by \code{summary.mode}. When this argument takes the value \code{"representative"}, the gene with the lowest
     distance to all genes in the cluster will be plotted. When the argument is  \code{"median"}, then median expression value is computed.
\newline
     When \code{show.fit} is \code{TRUE} the stepwise regression fit for the data will be computed and the regression curves will be displayed. 
     If data is a matrix of genes and \code{summary.mode} is \code{"median"}, the regression fit will be computed for the median expression value.
}
\value{
  Plot of gene expression profiles by-group.
}
\references{Conesa, A., Nueda M.J., Alberto Ferrer, A., Talon, T. 2005.
maSigPro: a Method to Identify Significant Differential Expression Profiles in Time-Course Microarray Experiments.
 }
\author{Ana Conesa, aconesa@ivia.es; Maria Jose Nueda, mj.nueda@ua.es}

\seealso{\code{\link{PlotProfiles}}}

\examples{

#### GENERATE TIME COURSE DATA
## generate n random gene expression profiles of a data set with 
## one control plus 3 treatments, 3 time points and r replicates per time point.

tc.GENE <- function(n, r,
             var11 = 0.01, var12 = 0.01,var13 = 0.01,
             var21 = 0.01, var22 = 0.01, var23 =0.01,
             var31 = 0.01, var32 = 0.01, var33 = 0.01,
             var41 = 0.01, var42 = 0.01, var43 = 0.01,
             a1 = 0, a2 = 0, a3 = 0, a4 = 0,
             b1 = 0, b2 = 0, b3 = 0, b4 = 0,
             c1 = 0, c2 = 0, c3 = 0, c4 = 0)
{

  tc.dat <- NULL
  for (i in 1:n) {
    Ctl <- c(rnorm(r, a1, var11), rnorm(r, b1, var12), rnorm(r, c1, var13))  # Ctl group
    Tr1 <- c(rnorm(r, a2, var21), rnorm(r, b2, var22), rnorm(r, c2, var23))  # Tr1 group
    Tr2 <- c(rnorm(r, a3, var31), rnorm(r, b3, var32), rnorm(r, c3, var33))  # Tr2 group
    Tr3 <- c(rnorm(r, a4, var41), rnorm(r, b4, var42), rnorm(r, c4, var43))  # Tr3 group
    gene <- c(Ctl, Tr1, Tr2, Tr3)
    tc.dat <- rbind(tc.dat, gene)
  }
  tc.dat
}

## create 10 genes with profile differences between Ctl, Tr2, and Tr3 groups
tc.DATA <- tc.GENE(n = 10,r = 3, b3 = 0.8, c3 = -1, a4 = -0.1, b4 = -0.8, c4 = -1.2)
rownames(tc.DATA) <- paste("gene", c(1:10), sep = "")
colnames(tc.DATA) <- paste("Array", c(1:36), sep = "")

#### CREATE EXPERIMENTAL DESIGN
Time <- rep(c(rep(c(1:3), each = 3)), 4)
Replicates <- rep(c(1:12), each = 3)
Ctl <- c(rep(1, 9), rep(0, 27))
Tr1 <- c(rep(0, 9), rep(1, 9), rep(0, 18))
Tr2 <- c(rep(0, 18), rep(1, 9), rep(0, 9))
Tr3 <- c(rep(0, 27), rep(1, 9))

PlotGroups (tc.DATA, time = Time, repvect = Replicates, groups = cbind(Ctl, Tr1, Tr2, Tr3))

}
\keyword{ aplot}