\HeaderA{getSYMBOL}{Functions to deal with Data Packages}{getSYMBOL}
\aliasA{getGO}{getSYMBOL}{getGO}
\aliasA{getGOdesc}{getSYMBOL}{getGOdesc}
\aliasA{getLL}{getSYMBOL}{getLL}
\aliasA{getPMID}{getSYMBOL}{getPMID}
\aliasA{getUniqAnnItem}{getSYMBOL}{getUniqAnnItem}
\aliasA{lookUp}{getSYMBOL}{lookUp}
\keyword{manip}{getSYMBOL}
\begin{Description}\relax
The functions documented here are intended to make it easier to map
from a set of manufacturers identifiers (such as you will get from the
chips etc) to other identifiers.
\end{Description}
\begin{Usage}
\begin{verbatim}
getSYMBOL(x, data)
getLL(x, data)
getGO(x, data)
getPMID(x, data)
getGOdesc(x, which)
lookUp(x, data, what)
getUniqAnnItem()
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] The identifiers to be mapped (usually manufacturer)
\item[\code{data}] The basename of the meta-data package to be used. 
\item[\code{what}] \code{what} a character string for the name of an
annotation element of an annotation data package
\item[\code{which}] \code{which} a character string in the form of MF, BP,
CC, or ANY to indicated the GO category of interests
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
Users must supply the basename of the meta-data package that they
want to use to provide the mappings. The name of the meta-data
package is the same as the basename.

Appropriate translations are done. In some cases such as \code{getLL}
and \code{getSYMBOL} there will only be one match and a vector is
returned. In other cases such as \code{getPMID} and \code{getGO} there
may be multiple matches and a list is returned.

For \code{getGOdesc} the input vector is GO identifiers (not
manufacturer identifiers) and in the output any identifier that does
not have a description in the selected GO hierarchy (MF, BP or CC) is
dropped.

\code{lookUp} is a general function that can be used to look
up matches. All other translation functions use \code{lookUp}

A BioC annotation data package contains annotation data environments
whose names are package name (e. g. hgu95av2) + element name
(e. g. PMID). \code{what} must be one of the element names for the
given data package. 

\code{getUniqAnnItem} keeps track of the annotation elements that have
one to one mappings.
\end{Details}
\begin{Value}
Either a vector or a list depending on whether multiple values per
input are possible.
\end{Value}
\begin{Author}\relax
R. Gentleman
\end{Author}
\begin{SeeAlso}\relax
\code{\LinkA{mget}{mget}}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
  data(eset)
  gN <- geneNames(eset)[100:105]
   ## 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 <- getOption("warn")
   options(warn=0)
   on.exit(options(warn=curWarn), add=TRUE)
  if( require("hgu95av2", character.only=TRUE)
       && require("GO", character.only=TRUE) ) {
      lookUp(gN, "hgu95av2", "SYMBOL")
      # Same as lookUp for SYMBOL except the return is a vector
      getSYMBOL(gN,"hgu95av2" )
      gg<- getGO(gN, "hgu95av2")
      lookUp(gg[[2]][[1]][["GOID"]], "GO", "TERM")
      # Same as lookUp for TERM
      getGOdesc(gg[[2]][[1]][["GOID"]], "ANY")
      # For BP only
      getGOdesc(gg[[2]][[1]][["GOID"]], "BP")
      getLL(gN, "hgu95av2")
      getPMID(gN, "hgu95av2")
  } else
   cat("could not run all examples\n")
\end{ExampleCode}
\end{Examples}

