\HeaderA{alongChrom}{A function for plotting expression data from an ExpressionSet for a
given chromosome.}{alongChrom}
\aliasA{buildACMainLabel}{alongChrom}{buildACMainLabel}
\aliasA{cullACXPoints}{alongChrom}{cullACXPoints}
\aliasA{dispACXaxis}{alongChrom}{dispACXaxis}
\aliasA{doACCumPlot}{alongChrom}{doACCumPlot}
\aliasA{doACImagePlot}{alongChrom}{doACImagePlot}
\aliasA{doACLocalPlot}{alongChrom}{doACLocalPlot}
\aliasA{doACMatPlot}{alongChrom}{doACMatPlot}
\aliasA{emptyACPlot}{alongChrom}{emptyACPlot}
\aliasA{fixACPhysPoints}{alongChrom}{fixACPhysPoints}
\aliasA{getACClosestPos}{alongChrom}{getACClosestPos}
\aliasA{getACDataEnv}{alongChrom}{getACDataEnv}
\aliasA{getACExprs}{alongChrom}{getACExprs}
\aliasA{getACGeneSyms}{alongChrom}{getACGeneSyms}
\aliasA{getACPlotLabs}{alongChrom}{getACPlotLabs}
\aliasA{getACStrandVals}{alongChrom}{getACStrandVals}
\aliasA{highlightACDups}{alongChrom}{highlightACDups}
\aliasA{limitACXRange}{alongChrom}{limitACXRange}
\aliasA{scaleACData}{alongChrom}{scaleACData}
\keyword{utilities}{alongChrom}
\begin{Description}\relax
Given a particular ExpressionSet object, a chromLocation object, and a
chromosome name, will plot selected ExpressionSet data using various methods.
\end{Description}
\begin{Usage}
\begin{verbatim}
   alongChrom(eSet, chrom, specChrom,  xlim, whichGenes, 
   plotFormat=c("cumulative", "local","image"),
   xloc=c("equispaced", "physical"), 
   scale=c("none","zscale","rankscale","rangescale","zrobustscale"),
   geneSymbols=FALSE, byStrand=FALSE, colors="red", lty=1, type="S",
   ...)\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{eSet}] The ExpressionSet object to be used.
\item[\code{chrom}] The desired chromosome.
\item[\code{specChrom}] An object of type chromLocation for the species being
represented.
\item[\code{xlim}] A pair of values - either character or integer, which will
denote the range of genes to display (based on base pair: either directly
in the case of integers, or using the locations of the named genes if
character).  If not supplied, the entire chromosome is used.
\item[\code{whichGenes}] If supplied, will limit the displayed genes to the ones
provided in this vector.
\item[\code{xloc}] Determines whether the X axis points (gene names) will be
displayed according to their relative position on the chromosome
(physical), or spaced evenly (equispaced).  Default is equispaced.
\item[\code{plotFormat}] Determines the method which to plot the data.
\item[\code{scale}] Determines what method of scaling will be applied to the
data.  Default is none.
\item[\code{geneSymbols}] Notes whether to use Affy IDs or Gene Symbols,
default is Affy IDs
\item[\code{byStrand}] Determines whether to show the entire plot at once, or
a split plot by strands.  Default is a singular plot
\item[\code{lty}] A vector of line types, which will be cycled. 
\item[\code{type}] Plot type, from par.  Defaults to "S".
\item[\code{colors}] A vector of colors for the plots, which will be cycled.
\item[\code{...}] Any remaining graphics commands may be passed along as per plot()
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The genes on the chromosome of interest are extracted from the
\code{chromLocation} object passed in, which are then intersected with the
genes listed in the ExpressionSet.  These remaining genes will then be
plotted according to the \code{plotFormat} argument.  If \code{image} is
specified, an image plot is created showing the expression levels of
the samples by gene, using a colour map to denote the levels.  If
\code{cumulative} is chosen, the cumulative expression level is plotted
against the genes for each sample.  Likewise, if \code{local} is used, the
raw data is plotted for each sample against the genes using a boxplot format.

Not all parameters are honored for all plotformats.  \code{xloc},
\code{lty}, and \code{type} are only used with the \code{cumulative}
plotformat.
\end{Details}
\begin{Author}\relax
Jeff Gentry
\end{Author}
\begin{Examples}
\begin{ExampleCode}
   data(sample.ExpressionSet)
   ## A bit of a hack to not have a package dependency on hgu95av2
   ## but need to fiddle w/ the warn level to not fail the example anyways.
   curWarn <- options(warn=0)
   on.exit(options(warn=curWarn$warn), add=TRUE)
   if (require("hgu95av2.db")) {
      z <- buildChromLocation("hgu95av2")
      lty <- c(1, 2, 3, 4, 5)
      cols <- c("red", "green", "blue", "orange", "magenta", "black")
      cols <- cols[sample.ExpressionSet$type]
      if (interactive()) {
         par(ask=TRUE)
      }

      ## Here we're using xlim to denote a physical region to display
      xlim <- c(87511280,127717880)
      for (xl in c("equispaced", "physical"))
        for (sc in c("none","rangescale"))
        {
           alongChrom(sample.ExpressionSet, "1", z, xlim=xlim, xloc=xl,
              plotFormat="cumulative", scale=sc,lty=lty, colors=cols)
        }

     ## Here we're looking for specific genes
     which <- c("31540_at","31583_at", "31508_at", "31529_at", "31439_f_at",
               "31729_at")
     ## Gene "31529_at" does not exist in the current set of genes,
     ## here it demonstrates how genes not available are dropped.
      for (xl in c("equispaced", "physical"))
        for (sc in c("none","rangescale"))
        {
            alongChrom(sample.ExpressionSet, "1", z, which=which, xloc=xl,
               plotFormat="cumulative", scale=sc,lty=lty, col=cols)
         }

      ## Do an image plot
      for (bs in c(TRUE,FALSE))
         alongChrom(sample.ExpressionSet, "1",z, xlim=xlim, plotFormat="image",
                   scale="zscale", byStrand=bs)

      ## A boxplot
      for (st in c(TRUE,FALSE))
         alongChrom(sample.ExpressionSet, "1", z, plotFormat="local",
                    colors=cols, byStrand=st)
    } else print("Example can not be run without the hgu95av2 data package")
\end{ExampleCode}
\end{Examples}

