\name{htmlpage}
\alias{htmlpage}
\title{Functions to build HTML pages}
\description{ This function is designed to create an HTML table
containing both static information as well as links to various online
annotation sources.
}
\usage{
htmlpage(genelist, filename, title, othernames, table.head,
table.center = TRUE, repository = list("en"), ...)
}
\arguments{
\item{genelist}{A list or \code{data.frame} of character vectors
containing ids to be made into hypertext links. See details for more
information.}
\item{filename}{A filename for the resultant HTML table.}
\item{title}{A title for the table.}
\item{othernames}{A list or \code{data.frame} of other things to add
to the table. These will not be hyperlinks. The list of othernames
can contain vectors, matrices, \code{data.frames} or lists.}
\item{table.head}{A character vector of column headers for the table.}
\item{table.center}{Center the table? Defaults to \code{TRUE}.}
\item{repository}{A list of repositories to use
for creating the hypertext links. Currently available repositories
include 'gb' (GenBank), 'en' (EntrezGene), 'omim' (Online Mendelian
Inheritance in Man), 'sp' (SwissProt), 'affy' (Affymetrix), 'ug'
(UniGene), 'fb' (FlyBase), 'go' (Gene Ontology), 'ens' (Ensembl).
Additional repositories can easily be added. See
\code{setRepository} for more information.}
\item{...}{Further arguments to be passed. See details for more
information.}
}
\details{ This function will accept a list or \code{data.frame} of
character vectors, each containing different ids that are to be turned
into hyperlinks (e.g., a list containing affy ids, genbank accession
numbers, and Entrez Gene ids). For instances where there are more than
one id per gene, use a sub-list of character vectors. See the vignette
'HowTo: Get HTML Output' for more information. Othernames should be a
list or \code{data.frame}. Again, if there are multiple entries for a
given gene, use a sub-list. This is more easily explained using an
example - please see the examples section below and the above
mentioned vignette.
In even the simplest case the genelist, othernames and repository have
to be lists. A simple character vector will not suffice.
Note that this function now uses \code{xtable} to create the HTML
table, and there is the ability to pass some arguments on to either
\code{xtable} or \code{print.xtable}. One such argument would be
'append=TRUE', which would allow one to put lots of tables in one
page, as long as the filename argument remained the same.
Additionally, the Ensembl repository needs a species argument in order
to form a usable URI. This argument can be passed in the form of e.g.,
species = "Homo\_sapiens". Note the capitalization of the genus, and
the separation by an underscore (\_).
}
\value{
This function is used only for the side effect of creating an HTML table.
}
\author{Robert Gentleman , further
modifications by James W. MacDonald }
\examples{
library("annotate")
## A very simple example. Two columns, one with links, the other without.
gos <- paste("GO:000000", 1:9, sep="")
notlinks <- LETTERS[1:9]
htmlpage(list(gos), "simple.html", "Two column data", list(notlinks),
c("GO IDs", "Letters"), repository = list("go"))
if(!interactive())
file.remove("simple.html")
## A more complex example with multiple links per cell
## first we create data to annotate
unigene <- list("Hs.600536",c("Hs.596913","HS.655491"),"Hs.76704")
refseq <- list(c("NM_001030050", "NM_001030047", "NM_001648",
"NM_001030049"), "NM_000860", c("NM_001011645", "NM_000044"))
entrez <- c("354", "3248", "367")
genelist <- list(unigene, refseq, entrez)
## now some other data
symb <- c("KLK3","HPGD","AR")
desc <- c("Prostate-specific antigen precursor",
"15-hydroxyprostaglandin dehydrogenase",
"Androgen receptor")
t.stat <- c(40.21, -22.14, 21.56)
p.value <- rep(0,3)
fold.change <- c(3.54, -2.35, 3.18)
expression <- matrix(c(11.78, 11.69, 11.62, 8.17, 5.78, 5.58, 5.68,
8.26, 9.08, 9.28, 9.19, 6.05), ncol=4, byrow=TRUE)
otherdata <- list(symb, desc, t.stat, p.value, fold.change, expression)
table.head <- c("UniGene", "RefSeq", "EntrezGene", "Symbol",
"Description", "t-stat", "p-value", "fold change",
paste("Sample", 1:4))
htmlpage(genelist, "test.html", "Some gene expression data", otherdata,
table.head, repository = list("ug","gb","en"))
if(!interactive())
file.remove("test.html")
}
\keyword{manip}