\HeaderA{matchprobes}{A function to match a query sequence to the sequences of a set of
probes.}{matchprobes}
\keyword{manip}{matchprobes}
\begin{Description}\relax
The \code{query} sequence, a character string (probably representing
a transcript of interest), is scanned for the presence of exact
matches to the sequences in the character vector \code{records}.
The indices of the set of matches are returned.

The function is inefficient: it works on R's character vectors, and
the actual matching algorithm is of time complexity \code{length(query)}
times \code{length(records)}!

See \code{\LinkA{matchPattern}{matchPattern}}, \code{\LinkA{vmatchPattern}{vmatchPattern}} and
\code{\LinkA{matchPDict}{matchPDict}} for more efficient sequence matching functions.
\end{Description}
\begin{Usage}
\begin{verbatim}
  matchprobes(query, records, probepos=FALSE)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{query}] A character vector. For example, each element may represent
a gene (transcript) of interest. See Details.
\item[\code{records}] A character vector. For example, each element may represent
the probes on a DNA array.
\item[\code{probepos}] A logical value. If TRUE, return also the start
positions of the matches in the query sequence.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
\code{\LinkA{toupper}{toupper}} is applied to the arguments \code{query} and
\code{records} before matching. The intention of this is to make
the matching case-insensitive.
The function is embarrassingly naive.
The matching is done using the C library function \code{strstr}.
\end{Details}
\begin{Value}
A list.
Its first element is a list of the same length as the input vector.
Each element of the list is a numeric vector containing the indices of
the probes that have a perfect match in the query
sequence.

If \code{probepos} is TRUE,
the returned list has a second element: it is of the same shape
as described above, and gives the respective positions of the
matches.
\end{Value}
\begin{Author}\relax
R. Gentleman, Laurent Gautier, Wolfgang Huber
\end{Author}
\begin{SeeAlso}\relax
\code{\LinkA{matchPattern}{matchPattern}}, \code{\LinkA{vmatchPattern}{vmatchPattern}}, \code{\LinkA{matchPDict}{matchPDict}}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
  if(require("hgu95av2probe")){
    data("hgu95av2probe")
    seq <- hgu95av2probe$sequence[1:20]
    target <- paste(seq, collapse="")
    matchprobes(target, seq, probepos=TRUE)
  }
\end{ExampleCode}
\end{Examples}

