% % Lectures for Microarray Course % % This is the template file for all lectures to ensure consistent % layout, fonts, and colors. % % Remember to update the hypersetup to include individual lecture % titles, change the leftheader to include the lecture title, and % then start at begin{document} .... % Also, produce a printable (black and white version) according % to the cues immediately following begin{document}. % % Author: Keith Baggerly and Kevin R. Coombes % Date : 17 August 2004 % % Compile this document with: % pdflatex .tex % and then: % ppower4pb .pdf .pdf % \documentclass[Screen4to3,25pt,headrule,footrule]{foils} \usepackage[pdftex]{color} %for colors \definecolor{Teal}{rgb}{0.0,0.47,0.46} \definecolor{PaleTeal}{rgb}{0.0,0.8,0.6} \definecolor{DarkTeal}{rgb}{0.0,0.2157,0.2118} \definecolor{Lemon}{rgb}{1.0,1.0,0.4} \definecolor{Orange}{rgb}{1.0,0.6,0.0} \definecolor{PaleBlue}{rgb}{0.0,0.8,1.0} \definecolor{Gray7}{rgb}{0.7,0.7,0.7} \definecolor{DarkBurgundy}{rgb}{0.2745,0.0,0.0} \definecolor{Burgundy}{rgb}{0.62,0.06,0.41} \definecolor{DarkGreen}{rgb}{0.5,0.8,0.6} \definecolor{RGBblack}{rgb}{0.0,0.0,0.0} %black does not work (?) for % {h,v}pagecolor so use this \usepackage[pdftex]{graphicx} %for importing graphics \usepackage{times} %for nice fonts \usepackage[pdftex]{hyperref} %for hyperlinking and other effects \hypersetup{ pdftitle={Lecture 20: Genome Browsing}, pdfsubject={Analysis of Microarray Data}, pdfauthor={Keith A. Baggerly and Kevin R. Coombes, Department of Bioinformatics and Computational Biology, UT M.D. Anderson Cancer Center, , }, pdfkeywords={microarray,R}, pdfpagemode={None}, linkcolor=PaleBlue, citecolor=Gray7, pagecolor=PaleBlue, urlcolor=PaleBlue } \usepackage{pause} %required for ppower4 \usepackage{background} %required for ppower4 \usepackage{pp4slide} %required for ppower4 \usepackage{pp4link} \usepackage[pdftex]{geometry} %for resizing the header areas \geometry{hscale=0.85, %make the slides 85% of horizontal vscale=0.8 % and 80% of vertical } \setcounter{page}{0} %don't count the title page \setlength{\foilheadskip}{-0.5in} %skip less space below the title %\setlength{\itemsep}{1pt} %set distance between list items % doesn't seem to do anything % use different colored bullets in nested lists % color choices come from MDACC graphics standards \renewcommand{\labelitemi}{\textcolor{PaleTeal}{$\bullet$}} \renewcommand{\labelitemii}{\textcolor{Orange}{$\bullet$}} \renewcommand{\labelitemiii}{\textcolor{PaleBlue}{$\bullet$}} \renewcommand{\labelitemiv}{\textcolor{Lemon}{$\bullet$}} \def\rcode#1{\texttt{\textcolor{Orange}{#1}}} % change color of slide titles %\renewcommand\normalcolor{\color{black}} %\def\Black#1{\color{black}#1} % change the default background, again an MDACC standard \vpagecolor[RGBblack]{Teal} \raggedright %no right-justify % put lecture specific items in the header and consistent course % items in the footer \leftheader{\hyperlink{start}{\textsc{Introduction to Microarrays}}} \rightheader{\textsf{\thepage}} \MyLogo{{\copyright\ Copyright 2004--2007 Kevin R.~Coombes and Keith A.~Baggerly}} % left footer \rightfooter{\textsc{GS01 0163: Analysis of Microarray Data}} \begin{document} \hypersetup{pdfpagetransition=Replace} %\color{black} % for black-and-white version % Also, run M-x replace-string \textcolor{white} \textcolor{black}. % Then, using pdflatex only (no ppower4 step) should produce the % black and white version with pauses shown as colored boxes. % Remember to run M-x replace-string \textcolor{black} \textcolor{white} % afterwards to reset! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Title Page \title{\textcolor{Lemon}{GS01 0163\\ Analysis of Microarray Data}} \author{\textcolor{white}{Keith Baggerly and Kevin Coombes}\\ \textcolor{white}{Department of Bioinformatics and Computational Biology}\\ \textcolor{white}{UT M. D. Anderson Cancer Center}\\ \textcolor{Orange}{\tt kabagg@mdanderson.org}\\ \textcolor{Orange}{\tt kcoombes@mdanderson.org}} \date{\textcolor{Lemon}{6 November 2007}} \LogoOff \maketitle % these are use to change whether the R prompt is displayed. See the % end of the file for a demo of exactly how to use them <>= options(prompt=' ', continue=' ') @ <>= options(prompt='> ', continue='+ ') @ <>= options(width=60) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Individual Lecture Title Page \foilhead{\hypertarget{start}{Lecture 20}: Genome Browsing} \LogoOn % In most cases, this slide should be an outline of topics to be % covered in this lecture, presented as an itemized list. Each item in % the list should provide a hyperlink to the slide where discussion of % that topic begins. \begin{itemize} \item \hyperlink{biocbrowser}{Learning What BioConductor Contains} \item \hyperlink{annoenv}{Annotation Environments in R} \item \hyperlink{annbuilder}{AnnBuilder: Rolling Your Own Annotations} \item \hyperlink{ucsc}{The UCSC Genome Browser} \item \hyperlink{chrloc}{Chromosome Locations} \item \hyperlink{custom}{Building a Custom Track} \item \hyperlink{view}{Viewing Your Custom Track} \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\hypertarget{biocbrowser}{Learning What BioConductor Contains}} We are developing (i.e., it is not completed, so may behave strangely at times) a graphical tool to browse through the BioConductor documentation. \begin{center} \url{http://jonas.mdanderson.org/pub/bioconductor/} \includegraphics[height=4in]{Figs/dumb-browse} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{The Documentation Graph} \begin{center} \includegraphics[height=6in]{Figs/biobase-star} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Hovering the Mouse Gives a Summary} \begin{center} \includegraphics[height=6in]{Figs/hover} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Left-click Takes You to the Documentation} \begin{center} \includegraphics[height=6in]{Figs/popdock} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Left-click Also Recenters on a New Selection} \begin{center} \includegraphics[height=6in]{Figs/center-ab} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Right-click Lets You Hide Part of the Graph} \begin{center} \includegraphics[height=6in]{Figs/hide-node} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Hiding BioBase Often Clarifies the Structure} \begin{center} \includegraphics[height=6in]{Figs/ann-builder} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Hubs in the Documentation Graph Are Probably Important} We talked about the \rcode{annotate} package previously. It is clear from the graph that this is a central ``hub'' upon which many of the annotation-related packages depend. (We can also see that \rcode{affy} is another hub, defining the basic tools for Affymetrix arrays, and that the \rcode{multtest} package for multiple testing is another hub.) One of the annotation tools that is worth exploring is \rcode{biomaRt}, but we are going to leave that for another time. If you want to find out more about the BioMart project, go to \url{http://www.biomart.org}. Right now, we want to look at the \rcode{AnnBuilder} package. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Documentation for the AnnBuilder Package} \begin{center} \includegraphics[height=6in]{Figs/annbuilder-doc} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\hypertarget{annoenv}{Annotation Environments in R}} For most Affymetrix arrays, annotation packages are available directly (and automatically) from BioConductor whenever you need them. These packages were built using \rcode{AnnBuilder}. You can load one of these packages as follows: <>= require(hgu95av2) @ To see what is in an annotation package, use its name as a function: <>= hgu95av2() @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Getting Annotations From Environments} Each of the items in the package is an \rcode{environment}, which computer scientists may recognize better if we tell them it is a hash table. The key into the probe-based hash table environments is the manufacturers identifier (i.e., an Affymetrix probe set id such as \texttt{1854\_at}. <>= get("1854_at", hgu95av2ACCNUM) get("1854_at", hgu95av2UNIGENE) @ \foilhead{} % empty title for a page break <>= get("1854_at", hgu95av2CHR) get("1854_at", hgu95av2MAP) get("1854_at", hgu95av2CHRLOC) get("1854_at", hgu95av2SYMBOL) get("1854_at", hgu95av2GENENAME) get("1854_at", hgu95av2ENTREZID) @ We have also talked previously about how to find the probe set ids if you start with a gene symbol or a UniGene cluster id. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\hypertarget{annbuilder}{AnnBuilder: Rolling Your Own Annotations}} We recently had to analyze some data from an Agilent 44K two-color glass microarray. The corresponding annotation package was not available, so we had to build our own. Finding the manufacturers basic annotations was a nontrivial task. We started at the web site (\url{http://www.agilent.com}), then followed the link under ``Products and Services'' for ``Life Sciences'' to get to the ``DNA Microarrays'' page. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Follow the Link for ``Whole Human Genome''} \begin{center} \includegraphics[height=6in]{Figs/agilent-array} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Follow the Link for ``Download Gene Lists''} \begin{center} \includegraphics[height=6in]{Figs/agilent-array} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Reading the Feature Info} In any event, we finally obtained a pair of files that contained the mappings from spots to genomic material. (In addition to the ``download gene lists'', you can also follow the link to ``Download design files'', but this will only work if you know one of the barcodes on the slides.) We used the \rcode{read.table} command to get this file into R: <>= featureInfo <- read.table("012391_D_DNAFront_BCBottom_20050601.tsv", header=TRUE, row.names=NULL, sep="\t", quote="", comment.char="") @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Looking at the Feature Info} Here is part of the file: <>= colnames(featureInfo) featureInfo[1:5, 1:4] @ The critical information is given by the columns that contain the manufaturers identifier (\texttt{ID}) and the GenBank or RefSeq accession number (\texttt{Name}). The function we are going to use to build annotations requires only these two columns (in the reverse order) to be present in a file. So we make them available: <>= temp <- featureInfo[,c(4,3)] write.table(temp,"agilentGenes.tsv", sep="\t", quote=FALSE, col.names=NA) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Setting Up the Annotation Package} <>= library(AnnBuilder) baseName <- "agilentGenes.tsv" baseType <- "gb" #genbank srcUrls <- getSrcUrl("all", organism="Homo sapiens") myDir <- getwd() @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Building the Annotation Package} The next command takes a \textbf{very} long time, since it makes calls to databases all over the internet for every one of the $44,000$ probes on the array. Be prepared to go get lunch while it executes. <>= <> @ <>= ABPkgBuilder(baseName=baseName, srcUrls=srcUrls, baseMapType=baseType, pkgName="Agilent44K", pkgPath=myDir, organism="Homo sapiens", version="1.0", author=list(authors="krc@mdacc.tmc.edu", maintainer="krc@mdacc.tmc.edu"), fromWeb=TRUE) @ <>= <> @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Producing the Final Package} This command produces the \textbf{source} for a package, which must still be compiled and zipped into a binary package that can be installed easily. This task is most easily accomplished on a UNIX based machine: \begin{verbatim} helios% R CMD build Agilent44K helios% R CMD build --binary Agilent44K \end{verbatim} You can then convert the resulting \texttt{.tar.gz} file to a \texttt{.zip} file, which is the preferred form for distributing a Windows package. You can check out the results by getting the annotation package from our course web site. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{The Agilent 44K Annotations} <>= library(Agilent44K) Agilent44K() @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\hypertarget{ucsc}{The UCSC Genome Browser}} We are going to shift gears slightly: \begin{center} \url{http://genome.ucsc.edu/} \includegraphics[height=5.25in]{Figs/ucsc-home} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Follow the Link to ``Genome Browser''} \begin{center} \includegraphics[height=6in]{Figs/ucsc-gateway} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Press ``Submit'' to Start Browsing} \begin{center} \includegraphics[height=6in]{Figs/basic-browsing} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{About the Genome Browser} The genome browser lets you see a great deal of information laid out along the latest completed build of the human genome. The most obvious thing to look at are the known genes, which are typically displayed in such a way that you can see the individual introns and exons (provided you zoom in closely). For our purposes (as people who analyze microarray data), an extremely interesting feature of the Genome Browser is that it lets you add your own ``Custom Tracks'', which is their name for a set of annotations you can define. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Custom Tracks} To learn about the genome (custom) tracks, go to the FAQ. \begin{center} \includegraphics[height=5.5in]{Figs/ucsc-faq} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{BED Format} \begin{center} \includegraphics[height=6in]{Figs/bed-format} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\hypertarget{chrloc}{Chromosome Locations}} You can read more of the custom track documentation on your own; here, we are going to focus on how to build a custom track in R. The first thing we want to point out is that we need to know both the starting base location and the ending base location in order to build a custom track. Thus, the \texttt{CHRLOC} annotations that the \rcode{AnnBuilder} BioConductor package constructs are not adequate. Fortunately, we can get start and end points directly from the folks at the UCSC Genome Browser. Go back to the main page, then follow the link for ``Downloads''. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{UCSC Download Page} \begin{center} \includegraphics[height=6in]{Figs/ucsc-downloads} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Follow the link for ``Human''} \begin{center} \includegraphics[height=6in]{Figs/ucsc-human} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{In ``Annotation Database'', Scroll To ``refGene''} \begin{center} \includegraphics[height=6in]{Figs/ucsc-refgene} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Using the RefGene locations in R} Load the file. <>= refgene <- read.table("refGene.txt", header=FALSE, sep="\t", comment.char="", quote="") @ Add the column names, which are not included. <>= colnames(refgene) <- c("bin", "name", "chrom", "strand", "txStart", "txEnd", "cdsStart", "cdsEnd", "exonCount", "exonStarts", "exonEnds", "id", "name2", "cdsStartStat", "cdsEndStat", "exonFrames") @ We are going to ignore the intron and exon boundaries. We are also going to remove duplicate entries, which seem for some reason to exist; the search to identify these is time consuming. <>= temprg <- refgene[, c(1:9, 13:15)] omit <- unlist(lapply(levels(temprg$name), function(x, n) { which(n==x)[1] }, as.character(temprg$name))) summary(omit) refgene <- temprg[omit,] rownames(refgene) <- as.character(refgene[, "name"]) @ Finally, we save this as a binary object that we can load later. <>= save(refgene, file="refgene.rda") @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Linking the Agilent Array to RefGene locations} First, convert the environment in the AnnBuilder package for the Agilent 44K arrays to a list. <>= temp2 <- as.list(Agilent44KREFSEQ) @ Next, we produce a list that maps the annotations to the spots. This code works because the \texttt{ID} column of the \rcode{featureInfo} object contains RefSeq IDs (primarily), which are the names of the rows in the \rcode{temp2} object we just created. <>= ag.annoList <- temp2[as.character(featureInfo[, "ID"])] @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Alternative Splicing} <>= ag.annoList[1] @ Notice that some probes are associated with more than one RefSeq gene; this happens because different isoforms (produced by alternative splicing) of the same gene have different RefSeq identifiers. That is, the same piece of DNA can give rise to different mRNA molecules. So, we now search through and select just the first annotation for each spot. <>= agilent.lc <- unlist(lapply(ag.annoList, length)) agilentREFSEQ <- unlist(lapply(ag.annoList, function(x) { if(length(x)==0) { return(NA) } if(length(x)==1) {return(x) } idx <- 1 while(idx <= length(x)) { if (x[[idx]]=="") { idx <- idx+1; next} return(x[[idx]]) } return(NA) })) agilentREFSEQ[agilentREFSEQ==""] <- NA @ <>= length(agilentREFSEQ) sum(!is.na(agilentREFSEQ)) @ Finally, we use the updated RefSeqs (that we just constructed in the \rcode{agilentREFSEQ} object) as indices into the \rcode{refgene} chromosome locations above. This computation is also slow, since it uses a search in a list instead of in a hash. <>= agilent2refgene <- refgene[agilentREFSEQ,] @ <>= agilent2refgene[1:3,] @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\hypertarget{custom}{Building a Custom Track}} We analyzed the Agilent 44K microarray data using a linear model. The results are contained in an object called ourResults: <>= ourResults <- krc.nor[,c(1,2,7)] colnames(ourResults) <- c("UntreatedMeanLog", "Beta", "PValue") @ <>= summary(ourResults) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Computing a Displayable Score} We are going to us the p-values to decide which genes to display, and we are going to use the coefficient (\texttt{Beta}) to compute a score that shows the amount of differential expression. The allowed scores for a custom track range from $0$ to $1000$. Since the true values of \texttt{Beta} range between $-3$ and $+3$ (more or less), we are going to multiply by $300$ to get a useful score. <>= score <- 300*ourResults[,"Beta"] score[score>1000] <- 1000 score[score < -1000] <- -1000 score <- abs(score) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{A Track Data Frame} Now we build a data frame that includes the information we need for a custom track in the desired order: <<>>= temp <- data.frame(agilent2refgene[, c("chrom", "txStart", "txEnd", "name2")], score=score, strand=agilent2refgene[, "strand"]) temp[1:3,1:5] @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Significant Overexpressed Genes} We built this data frame for all genes; now we are going to select the ones that are significant (p-value $< 0.02$) and are overexpressed in response to the treatment ($\beta > 0$). We further restrict to those genes that we are able to map to the genome. <<>>= trackInfo <- temp[!is.na(temp[,"chrom"]) & ourResults[,"PValue"] < 0.02 & ourResults[,"Beta"] > 0,] @ We also have to create a header line that tells the browser to make use of the scores. <>= options(width=46) @ <>= trackheader <- paste('track name=upNormal', 'description="Increased in Normal Cells"', 'useScore=1 color=0,60,120') @ <>= options(width=50) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Writing the Track Info to a File} We can now write the header line followed by the track data: <>= write(trackheader, file="upNormalRNA.tsv", append=FALSE) write.table(trackInfo, file="upNormalRNA.tsv", append=TRUE, quote=FALSE, sep="\t", row.names=FALSE, col.names=FALSE) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{} Finally, we do the same thing for the genes that are underexpressed. <>= options(width=60) @ <>= trackInfo <- temp[!is.na(temp[,"chrom"]) & ourResults[,"PValue"] < 0.02 & ourResults[,"Beta"] < 0,] @ <>= options(width=46) @ <>= trackheader <- paste('track name=downNormal', 'description="Decreased in Normal Cells"', 'useScore=1 color=100,50,0') @ <>= options(width=50) @ <>= write(trackheader, file="dnNormalRNA.tsv", append=FALSE) write.table(trackInfo, file="dnNormalRNA.tsv", append=TRUE, quote=FALSE, sep="\t", row.names=FALSE, col.names=FALSE) @ <>= options(width=60) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\hypertarget{view}{Viewing Your Custom Track}} Now we can return to the genome browser and look at our custom tracks. Unfortunately, their web page only lets you attach one at a time unless you can make them available from a web site: \begin{center} \includegraphics[height=4.75in]{Figs/add-custom} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\url{http://bioinformatics.mdanderson.org/MicroarrayCourse/customTrack.html}} \begin{center} \includegraphics[height=5.5in]{Figs/our-custom} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Displaying Our Tracks} \begin{center} \includegraphics[height=6in]{Figs/view-our-tracks} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Searching for a Gene} \begin{center} \includegraphics[height=6in]{Figs/search-box} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Searching for a Gene} \begin{center} \includegraphics[height=6in]{Figs/search-result} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Searching for a Gene} \begin{center} \includegraphics[height=6in]{Figs/p53} \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{Searching for a Gene} \begin{center} \includegraphics[height=6in]{Figs/p53-neighbors} \end{center} \end{document} % clean up the R library so the generated tex file is consistent % while debugging <>= detach("package:Agilent44K") detach("package:AnnBuilder") detach("package:annotate") detach("package:XML") detach("package:Biobase") detach("package:tools") detach("package:hgu95av2") @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % template-like objects live below here %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= <> @ <>= <> @ \begin{itemize} \item \hyperlink{FIRSTTOPIC}{} \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{\hypertarget{FIRSTTOPIC}{}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \foilhead{} \begin{center} \includegraphics[height=6in]{Figs/} \end{center}