\HeaderA{classifyKNN}{Function to do discrimination analysis}{classifyKNN}
\keyword{methods}{classifyKNN}
\begin{Description}\relax
Function to search by groups of few genes, also called cliques, that
can discriminate (or classify) between two distinct biological
sample types, using the k nearest neighbourhood method. This function
uses exhaustive search.
\end{Description}
\begin{Usage}
\begin{verbatim}
classifyKNN(obj=NULL, sLabelID="Classification", facToClass=NULL,
            gNameID="GeneName", geneGrp=1, path=NULL, nGenes=3, kn=5)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{obj}] object of class \code{\LinkA{maiges}{maiges}} to search the classifiers.
\item[\code{sLabelID}] character string with the identification of the sample
label to be used.
\item[\code{facToClass}] named list with 2 character vectors specifying the
samples to be compared. If NULL (default) the first 2 types of
sLabelID are used.
\item[\code{gNameID}] character string with the identification of gene label ID.
\item[\code{geneGrp}] character or integer specifying the gene group to be
tested (\code{colnames} of \code{GeneGrps} slot). If both \code{geneGrp} and
\code{path} are NULL all genes are used. Defaults to 1 (first group).
\item[\code{path}] character or integer specifying the gene network to be
tested (\code{names} of \code{Paths} slot). If both \code{geneGrp}
and \code{path} are NULL all genes are used. Defaults to NULL.
\item[\code{nGenes}] integer specifying the number of genes in the clique, or
classifier.
\item[\code{kn}] number of neighbours for the \emph{knn} method.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
Pay attention with the arguments \code{geneGrp} and \code{path}, if
both of them is NULL an exhaustive search for all dataset will be done,
and this search may be extremely computational intensive, which may
result in a process during some weeks or months depending on the
number of genes in your dataset.

If you want to construct classifiers from a group of several genes,
the \emph{search and choose} (SC) method may be an interesting option. It is
implemented in the function \code{\LinkA{classifyKNNsc}{classifyKNNsc}}.
This function uses the function \code{\LinkA{knn.cv}{knn.cv}} from
package \emph{class} to construct k-nearest neighbour classifiers. It
possible to use functions \code{\LinkA{classifyLDA}{classifyLDA}} or
\code{\LinkA{classifySVM}{classifySVM}} to construct classifiers using Fisher's
linear discriminant analysis or support vector machines methods, respectively.
\end{Details}
\begin{Value}
The result of this function is an object of class \code{\LinkA{maigesClass}{maigesClass}}.
\end{Value}
\begin{Author}\relax
Elier B. Cristo, adapted by Gustavo H. Esteves <\email{gesteves@vision.ime.usp.br}>
\end{Author}
\begin{SeeAlso}\relax
\code{\LinkA{knn.cv}{knn.cv}}, \code{\LinkA{classifyKNNsc}{classifyKNNsc}},
\code{\LinkA{classifyLDA}{classifyLDA}}, \code{\LinkA{classifySVM}{classifySVM}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
## Loading the dataset
data(gastro)

## Doing KNN classifier with 2 genes for the 6th gene group comparing
## the 2 categories from 'Type' sample label.
gastro.class = classifyKNN(gastro.summ, sLabelID="Type",
  gNameID="GeneName", nGenes=2, geneGrp=6)
gastro.class

## To do classifier with 3 genes for the 6th gene group comparing
## normal vs adenocarcinomas from 'Tissue' sample label
gastro.class = classifyKNN(gastro.summ, sLabelID="Tissue",
  gNameID="GeneName", nGenes=3, geneGrp=6,
  facToClass=list(Norm=c("Neso","Nest"), Ade=c("Aeso","Aest")))
\end{ExampleCode}
\end{Examples}

