\documentclass[10pt]{book}
% alternative fonts: 
% times, mathptmx, mathpazo, newcent, bookman
% xref http://www.ce.cmu.edu/~kijoo/latex2pdf.pdf
\usepackage{times}
%\usepackage{fullpage}
\usepackage{relsize}   % the \smaller command, used in \ccode for example
\usepackage{fancyvrb}
\usepackage{array}
\usepackage[numbers,sort&compress]{natbib}
\usepackage[pdftex]{graphicx}
\usepackage[usenames,dvipsnames]{color}
\usepackage[backref,colorlinks]{hyperref}

\hypersetup{
  linkcolor   = RoyalBlue,
  anchorcolor = RoyalBlue,
  citecolor   = RoyalBlue,
  filecolor   = RoyalBlue,
  menucolor   = RoyalBlue,
  runcolor    = RoyalBlue,
  urlcolor    = RoyalBlue,
}

\usepackage{ifthen}
\newboolean{completedraft}
\setboolean{completedraft}{true}   %  if compiling the entire guide
%\setboolean{completedraft}{false}   % if writing/testing a piece at a time...
                                     %   comment out the \ifthenelse
                                     %   around the piece you're
                                     %   working on. 

\input{macros}

\setcounter{secnumdepth}{1}

\begin{document}

\ifthenelse{\boolean{completedraft}}{
   \input{titlepage}
   \input{copyright}
   \newpage
   \tableofcontents
}{}

% A \sloppy command helps a lot with line justification; 
% we have a lot of \texttt's in this thing, and they screw up justification.
\sloppy

\ifthenelse{\boolean{completedraft}}{
   \newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Introduction}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \begin{quote}
    \emph{...using another person's software is sometimes treated like 
    using their toothbrush.}\\
   \hspace*{1em}\hfill - Webb Miller \citep{Miller01}
   \end{quote}
   \input{intro}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{\eslmodincmd{easel}: the foundation}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \begin{quote}
   \emph{Lack of skill dictates economy of style.} 
   \hspace*{1em}\hfill -- Joey Ramone
   \end{quote}     
   \input{easel}
   \section{Functions in the easel module}
   \input{autotext/easel_functions}
   \vspace*{\fill}
}{}

\ifthenelse{\boolean{completedraft}}{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Biosequence data modules}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{alphabet}: digitized biosequences}
   \input{esl_alphabet}
   \subsection{Functions in the alphabet module}
   \input{autotext/esl_alphabet_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{sq}: single biological sequences}
   \input{esl_sq}
   \subsection{Functions in the sq module}
  \input{autotext/esl_sq_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{msa}: Multiple sequence alignments and i/o}
   \input{esl_msa}
   \subsection{Functions in the msa module}
   \input{autotext/esl_msa_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{randomseq}: sampling random sequences}
   \input{esl_randomseq}
   \subsection{Functions in the randomseq module}
   \input{autotext/esl_randomseq_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{sqio}: unaligned sequence file input/output}
   \input{esl_sqio}
   \subsection{Functions in the sqio module}
   \input{autotext/esl_sqio_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{dsqdata}: faster sequence file input}
   \input{esl_dsqdata}
   \subsection{Functions in the dsqdata module}
   \input{autotext/esl_dsqdata_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{ssi}: indexing flatfiles for record retrieval}
   \input{esl_ssi}
   \subsection{Functions in the ssi module}
   \input{autotext/esl_ssi_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Multiple sequence alignment modules}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{msacluster}: Clustering aligned sequence families}
   \input{esl_msacluster}
   \subsection{Functions in the msacluster module}
   \input{autotext/esl_msacluster_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{msaweight}: Ad hoc sequence weighting}

   \begin{quote}
    \emph{... as if someone were to buy several copies of the morning
    newspaper to assure himself that what is said is true.}\\
   \hspace*{1em}\hfill -- Ludwig Wittgenstein \citep[cited in]{Altschul89}
   \end{quote}

   \input{esl_msaweight}
   \subsection{Functions in the msaweight module}
   \input{autotext/esl_msaweight_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Multiple sequence alignment formats}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   \section{\eslmodincmd{msafile}: input/output of multiple sequence alignments}
%   \input{esl_msafile}
   
%   \subsection{Functions in the msafile module}
%   \input{autotext/esl_msafile_functions}
  
   
}{}

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% \chapter{Pairwise sequence alignment}
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% \begin{quote}
%%  \emph{And how will it ever end?\\ 
%%        unless the day finally arrives\\
%%        when we have compared everything in the world\\
%%        to everything else in the world,\\
%%        and there is nothing left to do\\
%%        but quietly close our notebooks\\
%%        and sit with our hands folded on our desks.}\\
%% \hspace*{1em}\hfill -- Billy Collins, \emph{The Trouble with Poetry}
%% \end{quote}

%% \newpage
%% \section{\eslmodincmd{swat}: Smith/Waterman local alignment}
%% \input{esl_swat}
%% \subsection{Functions in the swat module}
%% \input{autotext/esl_swat_functions}



\ifthenelse{\boolean{completedraft}}{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Probabilistic modeling modules}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \begin{quote}
     \emph{Probability theory is nothing but common sense reduced to
     calculation.}\\
   \hspace*{1em}\hfill -- Laplace
   \end{quote}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{scorematrix}: Pairwise alignment scores}
   \input{esl_scorematrix}
   \subsection{Functions in the scorematrix module}
   \input{autotext/esl_scorematrix_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{ratematrix}: Continuous-time Markov models of evolution}
   \input{esl_ratematrix}
   \subsection{Functions in the ratematrix module}
   \input{autotext/esl_ratematrix_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{paml}: Reading data files from PAML}
   \input{esl_paml}
   \subsection{Functions in the paml module}
   \input{autotext/esl_paml_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Sequence annotation}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{wuss}: RNA secondary structure annotation}
   \input{esl_wuss}
   \subsection{Functions in the wuss module}
   \input{autotext/esl_wuss_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Numerical computing}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{vectorops}: Vector operations}
   \input{esl_vectorops}
   \subsection{Functions in the vectorops module}
   \input{autotext/esl_vectorops_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{dmatrix}: 2D matrices and linear algebra}
   \input{esl_dmatrix}
   \subsection{Functions in the dmatrix module}
   \input{autotext/esl_dmatrix_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{minimizer}: Conjugate gradient descent}
   \input{esl_minimizer}
   \subsection{Functions in the minimizer module}
   \input{autotext/esl_minimizer_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{rootfinder}: One-dimensional rootfinding}
   \input{esl_rootfinder}
   \subsection{Functions in the rootfinder module}
   \input{autotext/esl_rootfinder_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Phylogenetic inference modules}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{tree}: Phylogenetic trees}
   \input{esl_tree}
   \subsection{Functions in the tree module}
   \input{autotext/esl_tree_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
   \section{\eslmodincmd{distance}: Distance calculations}
   \input{esl_distance}
   \subsection{Functions in the distance module}
   \input{autotext/esl_distance_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Statistics modules}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \begin{quote}
   \emph{In any case, my experience is that while engaged in
     cryptanalysis I started to believe in statistics!}\\
   \hspace*{1em}\hfill -- Albrecht Beutelspacher, \emph{Cryptology}
   \end{quote}

   \input{statistics}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{stats}: Basic statistics routines}
\input{esl_stats}
\subsection{Functions in the stats module}
\input{autotext/esl_stats_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{histogram}: Collecting histograms}
\input{esl_histogram}
\subsection{Functions in the histogram module}
\input{autotext/esl_histogram_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{dirichlet}: Beta, Gamma, Dirichlet densities and priors}
\input{esl_dirichlet}
\subsection{Functions in the dirichlet module}
\input{autotext/esl_dirichlet_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{exponential}: Exponential distributions}
\input{esl_exponential}
\subsection{Functions in the exponential module}
\input{autotext/esl_exponential_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{gamma}: Gamma distributions}
\input{esl_gamma}
\subsection{Functions in the gamma module}
\input{autotext/esl_gamma_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{gev}: Generalized extreme value distributions}
\input{esl_gev}
\subsection{Functions in the gev module}
\input{autotext/esl_gev_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{gumbel}: Type I extreme value (Gumbel) statistics}
\input{esl_gumbel}
\subsection{Functions in the gumbel module}
\input{autotext/esl_gumbel_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{hyperexp}: Hyperexponential distributions}
\input{esl_hyperexp}
\subsection{Functions in the hyperexp module}
\input{autotext/esl_hyperexp_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{mixdchlet}: Mixture Dirichlet distributions}
%\input{esl_mixdchlet}
\subsection{Functions in the mixdchlet module}
%\input{autotext/esl_mixdchlet_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{mixgev}: Mixture generalized extreme value distributions}
%\input{esl_mixgev}
%\subsection{Functions in the mixgev module}
%\input{autotext/esl_mixgev_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{normal}: Normal (Gaussian) distributions}
\input{esl_normal}
\subsection{Functions in the normal module}
\input{autotext/esl_normal_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{stretchexp}: Stretched exponential distributions}
\input{esl_stretchexp}
\subsection{Functions in the stretchexp module}
\input{autotext/esl_stretchexp_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{weibull}: Weibull distributions}
\input{esl_weibull}
\subsection{Functions in the weibull module}
\input{autotext/esl_weibull_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Utility modules}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\chapter{Core modules}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{buffer}: reading from any sort of input}
\input{esl_buffer}
\subsection{Functions in the buffer module}
\input{autotext/esl_buffer_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{cluster}: single linkage clustering}
\input{esl_cluster}
\subsection{Functions in the cluster module}
\input{autotext/esl_cluster_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{fileparser}: token-based data file input}
\input{esl_fileparser}
\subsection{Functions in the fileparser module}
\input{autotext/esl_fileparser_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{getopts}: command line parsing}
\input{esl_getopts}
\subsection{Functions in the getopts module}
\input{autotext/esl_getopts_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{keyhash}: associative hashes}
\input{esl_keyhash}
\subsection{Functions in the keyhash module}
\input{autotext/esl_keyhash_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{random}: pseudorandom numbers and sampling}
   \begin{quote}
   \emph{Nec Babylonios temptaris numeros. \\
   (Don't attempt the Babylonian numbers.)}\\
   \hspace{3em} -- Horace, Ode 1.11. \\ 
\end{quote}     
\input{esl_random}
\subsection{Functions in the random (rnd) module}
\input{autotext/esl_random_functions}
\vspace*{\fill}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{regexp}: regular expression matching}
\input{esl_regexp}
\subsection{Functions in the regexp module}
\input{autotext/esl_regexp_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{stack}: pushdown stacks for integers, chars, and pointers}
\input{esl_stack}
\subsection{Functions in the stack module}
\input{autotext/esl_stack_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{stopwatch}: timing parts of programs}
\input{esl_stopwatch}
\subsection{Functions in the stopwatch module}
\input{autotext/esl_stopwatch_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
   \newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Optional parallel computing support}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{sse}: SIMD minivectors on Intel and AMD }
\input{esl_sse}
\subsection{Functions in the sse module}
\input{autotext/esl_sse_functions}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{\eslmodincmd{mpi}: MPI parallelization}
\input{esl_mpi}
\subsection{Functions in the MPI module}
\input{autotext/esl_mpi_functions}
}{}


\ifthenelse{\boolean{completedraft}}{
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{File formats}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
\section{Stockholm format for multiple sequence alignments}
\input{format_stockholm.tex}
}{}

\ifthenelse{\boolean{completedraft}}{
\section{A2M format for multiple sequence alignments}
\input{format_a2m.tex}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{WUSS notation for RNA secondary structures}
\input{format_wuss.tex}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
\section{NCBI BLAST database foramt}
\input{format_ncbi.tex}
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Developer's guide}

\begin{quote}
   \emph{This is the great nightmare, when you're doing something long
     and hard, is you're terrified that it will be perceived as
     gratuitously hard and difficult, that it is some
     avant-garde-for-its-own-sake kind of exercise.}\\
   \hspace*{1em}\hfill -- David Foster Wallace, speaking of \emph{Infinite Jest}
\end{quote}

   \input{codestyle}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Installation instructions}
   \input{installation}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
}{}

\ifthenelse{\boolean{completedraft}}{
\newpage
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \chapter{Credits and acknowledgements}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   \begin{quote}
   \emph{There are every year works published whose contents show them to
     be by real lunatics.}
   \hspace*{1em}\hfill -- William James, \emph{The Principles of Psychology}
   \end{quote}
}{}

\newpage
%\newcommand{\bibfont}{\footnotesize}
\bibliographystyle{abbrvnat}
%\bibliography{master,lab,books,new}
\bibliography{master,lab,books}

\end{document}

