\documentclass[11pt]{article}
\usepackage{graphicx}
\usepackage{Sweave}
\usepackage{bm}
\usepackage{anysize}

\marginsize{2cm}{2cm}{2cm}{2cm}

% \VignetteIndexEntry{Summary of Recent Updates to Spatstat}

\newcommand{\pkg}[1]{\texttt{#1}}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\R}{{\sf R}}
\newcommand{\spst}{\pkg{spatstat}}
\newcommand{\Spst}{\pkg{Spatstat}}

\begin{document}
\bibliographystyle{plain}

<<echo=FALSE,results=hide>>=
library(spatstat)
sversion <- read.dcf(file = system.file("DESCRIPTION", package = "spatstat"),
         fields = "Version")
options(useFancyQuotes=FALSE)
@ 

\title{Summary of recent updates to \spst}
\author{Adrian Baddeley, Rolf Turner and Ege Rubak}
\date{For \spst\ version \texttt{\Sexpr{sversion}}}
\maketitle

This is a summary of changes that have been made 
to the \spst\  package since 2010, when the 
last set of workshop notes \cite{badd10wshop} 
was published. Those notes covered \spst\ version \texttt{1.21-2}. 

The current version of \spst\ is \texttt{\Sexpr{sversion}}. 
\Spst\ has almost tripled in size since 2010,
and now contains over 100,000 lines of code.

<<echo=FALSE,results=hide>>=
z <- read.table("packagesizes.txt", header=TRUE)
z$date <- as.Date(z$date)
Plot <- function(fmla, ..., dat=z) {
  yvals <- eval(as.expression(fmla[[2]]), envir=dat)
  plot(fmla, ..., data=dat, type="l", xlab="", lwd=2, ylim=c(0, max(yvals)))
}
@ 
<<echo=FALSE,results=hide,fig=FALSE>>=
options(SweaveHooks=list(fig=function() par(mar=0.2+c(2,4,2,0))))
@ 
\SweaveOpts{eps=TRUE}
\setkeys{Gin}{width=0.45\textwidth}

\centerline{
<<fig=TRUE,echo=FALSE,results=hide>>=
Plot((Rlines + srclines)/1000 ~ date, ylab="Lines of code (x 1000)", 
     main="Spatstat growth")
lines(srclines/1000 ~ date, data=z)
text(as.Date("2013-01-01"), 9.5, "C code")
text(as.Date("2013-01-01"), 50, "R code")
@ 
}

\tableofcontents

\newpage
\section{Overview}

Following is an overview of the most important changes.

\begin{itemize}
  \item \spst\ and all its dependencies are now Free Open Source.
    
 \item polygon clipping is now performed
   by the Free Open Source library \pkg{polyclip}.
   The library \pkg{gpclib} is no longer used.

  \item \spst\ now `Imports' (rather than `Depends' on) 
   the libraries \pkg{mgcv}, \pkg{deldir}, \pkg{abind}, \pkg{tensor}, 
   \pkg{polyclip}.
   This means that these libraries are not accessible to the user
   unless the user explicitly loads them by typing \code{library(mgcv)}
   and so on.

 \item polygon calculations are now enabled, always. 
   
 \item geometrical errors in polygon data are now repaired automatically.

  \item Improvements to Gibbs models (\texttt{ppm}):
    \begin{itemize}
   \item 
     now accepts syntax \verb!ppm(X ~ Z)! 
     similar to \texttt{lm} and \texttt{glm},
     as well as old syntax \verb!ppm(X, ~Z)!
   \item 
     Covariates no longer have to be passed in the argument 
     \texttt{covariates} but can be objects in the {\sf R} session;
    \item 
     new 'logistic likelihood' method;
   \item 
     variance-covariance matrix;
   \item 
     print method shows standard errors and CI for coefficients;
   \item 
     new interactions (\texttt{Triplets}, \texttt{Concom});
   \item 
     hybrids of interactions;
   \item 
     self-starting feature of interactions;
   \item 
     better control over dummy points;
   \item 
     improved quadrature schemes (removing a source of bias);
   \item 
     spatial covariate functions can depend on additional parameters;
   \item 
     extract interaction from a fitted model;
   \item 
     check whether model is valid;
   \item 
     project to a valid model;
   \item 
     calculate \emph{intensity} of fitted model;
   \item 
     calculate $K$-function and pair correlation function of fitted model;
   \item 
     confidence intervals using \texttt{confint};
   \item 
     improvements/extensions to \texttt{rmh};
   \item 
     exact simulation for many models;
   \item 
     predict conditional intensity for another point pattern
   \item 
     compute confidence intervals and prediction intervals
     for intensity, and for total number of points in a region.
   \item 
     covariates can be tessellations.
    \end{itemize}
\item 
    Diagnostics for Gibbs models:
     Leverage, influence, partial residuals, 
     score residuals, residual summary functions
     (\texttt{Kcom}, \texttt{Kres}, \texttt{Gcom}, \texttt{Gres}, 
     \texttt{psst}, \texttt{psstA}, \texttt{psstG}, \texttt{compareFit})
\item 
    Improvements to cluster/Cox models (\texttt{kppm}): 
    \begin{itemize}
   \item 
     now accepts syntax \verb!kppm(X ~ Z)! 
     similar to \texttt{lm} and \texttt{glm},
     as well as old syntax \verb!kppm(X, ~Z)!
   \item 
     Covariates no longer have to be passed in the argument 
     \texttt{covariates} but can be objects in the {\sf R} session;
    \item 
     Guan's second order composite likelihood;
   \item 
     new cluster types \texttt{"Cauchy"}, \texttt{"VarGamma"};
   \item 
     log-Gaussian Cox processes;
   \item 
     fitted intensity;
   \item 
     variance-covariance of trend parameters;
   \item 
     generic support e.g. \texttt{coef}, \texttt{model.matrix};
   \item 
     conversion e.g. \texttt{as.fv}
   \item 
     extract K function (\texttt{Kmodel}, \texttt{pcfmodel});
   \item 
     more control over trend (more arguments passed to \texttt{ppm});
   \item 
     confidence intervals using \texttt{confint}
   \item 
     covariates can be tessellations.
    \end{itemize}
\item
    Support for point patterns on a linear network,
   including geometrically-corrected linear $K$ function, 
   pair correlation function, point process models, envelopes, tests.

\item Support for replicated point patterns:
      An object of class \texttt{mppm} 
      represents a point process model fitted to
      several point patterns. The patterns may be treated as independent replicate observations
     of the same model, or as the responses from different units in a 
     designed experiment.
     Methods for this class include \texttt{plot}, \texttt{print}, 
     \texttt{summary}, \texttt{fitted}, \texttt{predict}, \texttt{simulate}, ...

\item 
    Nonparametric/summary statistics e.g.
    \begin{itemize}
    \item 
      \texttt{rhohat} (nonparametric estimate of intensity as function of covariate)
    \item 
      \texttt{idw} (inverse distance weighted smoothing)
    \item 
      \texttt{convolve.im} (image convolution)
    \item 
      $k$-th nearest neighbours (\texttt{nndist}, \texttt{nncross}, \texttt{nnwhich})
     \item more methods for \code{intensity}.
    \end{itemize}
\item
    Statistical tools e.g.
    \begin{itemize}
    \item 
      several algorithms for bandwidth selection (\texttt{bw.*})
    \item 
      bootstrap confidence intervals for summary functions (\texttt{lohboot})
    \item 
      pooling operations (\texttt{pool.*})
    \end{itemize}
\item
  Changes to \texttt{ppx} format:
   An object of class \texttt{ppx} may now include 'local' coordinates 
   as well as 'spatial' and 'temporal' coordinates, and marks.

\item
    Improvements to plots :
    \begin{itemize}
    \item 
      colour map objects
    \item 
      graphics symbol map objects
    \item 
      texture map objects
    \item 
      automatic legend in \texttt{plot.ppp}
    \item 
      collision avoidance in \texttt{plot.fv}
    \item 
      \texttt{plot.im(log=TRUE)}
    \item 
      \texttt{plot.listof(equal.ribbon=TRUE)}
    \item 
      improved labels in \texttt{plot.fv}
    \item 
      Switch all plots from colour to greyscale by setting
      \texttt{spatstat.options(monochrome=TRUE)}
    \end{itemize}
\item
    simulation:
    \begin{itemize}
    \item 
      \texttt{rmh} interface restructured
    \item
      \texttt{rmh} can save transition history
    \item 
      visual debugger for \texttt{rmh}
    \item 
      exact simulation for many models
    \item 
      quasirandom point patterns and sequences
    \end{itemize}

\item envelopes: 
       Extended functionality;
       Envelopes can be pooled and transformed.

\item Many, many, many bug fixes.

\item Substantially increased performance.

\item 
  data in \spst\  are now lazy-loaded,
   so you don't have to type \texttt{data(amacrine)}, etc.

\item user interrupt:
   Long calculations in \spst\ 
   now respond to the Interrupt/Stop signal.

\item vignettes:
   New vignettes 'Getting Started with the Spatstat Package',
   'Analysing Replicated Point Patterns in Spatstat'
   and `Summary of Recent Changes to Spatstat'
   
\item demonstrations:   
  New demonstration \texttt{demo(sumfun)} shows the 
  nonparametric summary functions in \spst.
 \end{itemize}

\section{New classes}

Important new classes of objects are listed here.

\begin{itemize}

\item \texttt{linnet}:
      An object of class '\texttt{linnet}' represents a linear network,
      i.e. a connected network of line segments, such as a road network.
      Methods for this class include plot, print, summary etc.

\item \texttt{lpp}:
      An object of class '\texttt{lpp}' represents a point pattern on a linear network,
      such as a record of the locations of road accidents on a road network.
      Methods for this class include plot, print, summary etc.

\item \texttt{lppm}: 
      An object of class '\texttt{lppm}' represents a point process model
      fitted to a point pattern on a linear network.
      Methods for this class include plot, print, summary, fitted, predict, simulate, ...

\item \texttt{linim}:
      Pixel image on a linear network.

\item \texttt{linfun}
      Function defined on a linear network (e.g. a distance function)

\item \texttt{mppm}:
     An object of class '\texttt{mppm}' represents a point process model
     fitted to several point pattern datasets. 
     The patterns may be treated as independent replicate observations
     of the same model, or as the responses from different units in a 
     designed experiment.
     Methods for this class include plot, print, summary, fitted, predict, simulate, ...

\item \texttt{rhohat}:
    Nonparametric estimate of intensity as function of covariate
    (result of '\texttt{rhohat}'). Can be used as an R function.
     Methods include \texttt{predict} 

\item \texttt{layered} :
     A simple mechanism for controlling plots that consist of
     several successive layers of data.

\item \texttt{timed}:
     A simple mechanism for recording the computation time taken.

\item \texttt{rat}:
    'Ratio objects' (suitable for pooling)

\item \texttt{objsurf}:
  An object of class '\texttt{objsurf}' contains values of the likelihood 
  or objective function in a neighbourhood of the maximum.

\item \texttt{simplepanel}:
  An object of class '\texttt{simplepanel}' 
  represents a spatial arrangement of buttons
  that respond to mouse clicks, supporting a simple, robust graphical interface.

\item \texttt{symbolmap}:
  An object of class '\texttt{symbolmap}' 
  represents a mapping from data values to graphical symbols.
  This makes it easy to ensure that
  the \emph{same} graphics map is used in two different plots.
  The graphics map can also be plotted in its own right as a legend
  to the plots.

\item \texttt{texturemap}:
  An object of class '\texttt{texturemap}' 
  represents a mapping from data values to graphical textures.
\end{itemize}
  
\section{New datasets}  

The following datasets have been added to the package.

\begin{itemize}
\item \texttt{pyramidal}:
   Diggle-Lange-Benes data on pyramidal neurons in cingulate cortex.
   31 point patterns divided into 3 groups.
   
\item \texttt{waterstriders}:
   Nummelin-Penttinen waterstriders data.
   Three independent replicates of a point pattern formed by insects.

\item \texttt{simba}:
   Simulated data 

\item \texttt{demohyper}:
   Simulated data example for \texttt{mppm}.
   Point patterns and pixel image covariates, in two groups
   with different regression coefficients.

\item \texttt{clmfires}:
   Forest fires in Castilla-La Mancha

\item \texttt{gordon}:
   People sitting on the grass in Gordon Square, London

\item \texttt{hyytiala}: 
   Mixed forest in Hyytiala, Finland (marked by species)

\item \texttt{paracou}:
   Kimboto trees in Paracou, French Guiana (marked as adult/juvenile)

\item \texttt{waka}:
   Trees in Waka national park (marked with diameters)

\item \texttt{mucosa}:
   Cells in gastric mucosa

\item \texttt{gorillas}:
   Gorilla nest sites in a National Park in Cameroon.

\item \texttt{chicago}:
    Street crimes in the University district of Chicago.
    A point pattern on a linear network.

\item \texttt{flu}:
       Spatial point patterns giving the locations of 
       influenza virus proteins on cell membranes.
       Kindly released by Dr George Leser and Dr Robert Lamb.

 \item \texttt{simplenet}:
      Simple example of a linear network
\end{itemize}

\section{New Functions}

Following is a list of all the functions that have been added.

\begin{itemize}
\item 
  \texttt{split.hyperframe}:
  method for \texttt{split} for hyperframes.
\item 
  \texttt{complementarycolour}:
  Compute the complementary colour value of a given colour value,
  or the complementary colour map of a given colour map.
\item 
  \texttt{dmixpois}, \texttt{pmixpois}, \texttt{qmixpois}, \texttt{rmixpois}:
  (log-)normal mixture of Poisson distributions.
\item \texttt{gauss.hermite}:
   Gauss-Hermite quadrature approximation to the expectation
   of any function of a normally-distributed random variable.	
\item 
  \texttt{minnndist}, \texttt{maxnndist}:
  faster ways to compute \texttt{min(nndist(X))} and 
  \texttt{max(nndist(X))}
\item 
  \texttt{boundingbox}:
  Generic function, replaces \texttt{bounding.box}.
\item 
  \texttt{Smoothfun}:
  create a \texttt{function(x,y)} equivalent to the result of
  \texttt{Smooth.ppp}
\item
  \code{vdCorput}, \code{Halton}, \code{Hammersley}, \code{rQuasi}:
     quasirandom point patterns and sequences.
\item 
  \code{ellipse}: create an elliptical window.
\item 
  \code{clickbox}: interactively specify a rectangle
  by point-and-click on a graphics device.
     
   \item \code{symbolmap}: Create a graphics symbol map
     (a mapping from data values to graphical symbols)
     
   \item \code{update.symbolmap}: Modify a graphics symbol map

   \item \code{invoke.symbolmap}:
   Apply graphics symbol map to data values, and plot the symbols

   \item \code{plot.symbolmap}: 
   Plot the graphics symbol map in the style of a legend

\item \code{add.texture}: Draw a simple texture inside a specified region.

\item \code{textureplot}: 
  Display a factor-valued pixel image using texture fill.

   \item \code{texturemap}: Create a graphics texture map
     (a mapping from data values to graphical textures)
     
   \item \code{plot.texturemap}: 
   Plot the graphics texture map in the style of a legend

\item \code{reload.or.compute}: 
  Utility for use in {\sf R} scripts.
  Either reload results from file, or compute them.

\item \code{im.apply}: 
   Apply a function to corresponding pixel values in several images.

\item \code{hexgrid}, \code{hextess}:
   Create a hexagonal grid of points, or a tessellation of hexagonal tiles

\item \code{shift.tess}, \code{rotate.tess}, \code{reflect.tess}, 
   \code{scalardilate.tess}, \code{affine.tess}:
   Apply a geometrical transformation to a tessellation.

\item \code{quantile.ewcdf}:
   Extract quantiles from a weighted cumulative distribution function.

\item \code{scanLRTS}:
   Evaluate the spatially-varying test statistic for the scan test.

\item \code{intensity.splitppp}:
   Estimate intensity in each component of a split point pattern.

\item \code{intensity.quadratcount}:
   Use quadrat counts to estimate intensity in each quadrat.

\item \code{as.owin.quadratcount}, \code{as.owin.quadrattest}:
   Extract the spatial window in which quadrat counts were performed.

 \item \texttt{mppm}:
  Fit a Gibbs model to several point patterns.
  The point pattern data may be organised as a designed experiment
  and the model may depend on covariates associated with the design.

\item \texttt{anova.mppm}:
  Analysis of Deviance for models of class \texttt{mppm}

\item \texttt{coef.mppm}:
  Extract fitted coefficients from a model of class \texttt{mppm}

\item \texttt{fitted.mppm}:
  Fitted intensity or conditional intensity for a model of class \texttt{mppm}

\item \texttt{kstest.mppm}:
  Kolmogorov-Smirnov test of goodness-of-fit for a model of class \texttt{mppm}

\item \texttt{logLik.mppm}:
  log likelihood or log pseudolikelihood for a model of class \texttt{mppm}

\item \texttt{plot.mppm}:
  Plot the fitted  intensity or conditional intensity of a model of class \texttt{mppm}

\item \texttt{predict.mppm}:
  Compute the fitted  intensity or conditional intensity 
  of a model of class \texttt{mppm}

\item \texttt{quadrat.test.mppm}:
  Quadrat counting test of goodness-of-fit for a model of class \texttt{mppm}

\item \texttt{residuals.mppm}:
 Point process residuals for a model of class \texttt{mppm}


\item \texttt{subfits}:
  Extract point process models for each individual point pattern dataset,
  from a model of class \texttt{mppm}.

\item \texttt{vcov.mppm}:
  Variance-covariance matrix for a model of class \texttt{mppm}

\item \texttt{integral.msr}:
  Integral of a measure.

\item \texttt{objsurf}:
  For a model fitted by optimising an objective function, this command
  computes the objective function in a neighbourhood of the optimal value.

\item \texttt{contour.objsurf}, \texttt{image.objsurf}, 
\texttt{persp.objsurf}, \texttt{plot.objsurf}: 
  Plot an 'objsurf' object.

\item
   \texttt{fvnames}:
  Define groups of columns in a function value table, 
  for use in \texttt{plot.fv}, etc

\item \texttt{multiplicity}:
  New generic function for which \texttt{multiplicity.ppp} is a method.

 \item \texttt{unique.ppx}, \texttt{duplicated.ppx}, \texttt{multiplicity.ppx}:
  Methods for \texttt{unique}(), \texttt{duplicated}() and \texttt{multiplicity}() for '\texttt{ppx}' objects.
  These also work for '\texttt{pp3}' and \texttt{lpp} objects.

\item \texttt{closepairs}, \texttt{crosspairs}, \texttt{closepaircounts}, 
  \texttt{crosspaircounts}:
  Low-level functions for finding all close pairs of points 

\item \texttt{nnfun.ppp}, \texttt{distfun.ppp}:
   New argument \texttt{k} allows these functions to compute $k$-th nearest neighbours.

\item  \texttt{nndensity}: 
  Estimate point process intensity using $k$-th nearest neighbour distances

\item \texttt{simplepanel}, \texttt{run.simplepanel}:
  Support for a simple point-and-click interface for general use.

  \item \texttt{as.lpp}:
   Convert data to a point pattern on a linear network.

  \item \texttt{distfun.lpp}:
   Distance function for point pattern on a linear network.

  \item \texttt{eval.linim}:
   Evaluate expression involving pixel images on a linear network.

  \item \texttt{linearKcross}, \texttt{linearKdot}, 
    \texttt{linearKcross.inhom}, \texttt{linearKdot.inhom}:
   Multitype $K$ functions for point patterns on a linear network

  \item \texttt{linearmarkconnect}, \texttt{linearmarkequal}:
   Mark connection function and mark equality function 
   for multitype point patterns on a linear network

  \item \texttt{linearpcfcross}, \texttt{linearpcfdot}, 
    \texttt{linearpcfcross.inhom}, \texttt{linearpcfdot.inhom}:
    Multitype pair correlation functions for point patterns on a linear network

  \item \texttt{linfun}:
   New class of functions defined on a linear network

  \item \texttt{nndist.lpp}, \texttt{nnwhich.lpp}, \texttt{nncross.lpp}:
   Methods for \texttt{nndist}, \texttt{nnwhich}, \texttt{nncross} 
   for point patterns on a linear network

  \item \texttt{nnfun.lpp}:
   Method for \texttt{nnfun} for point patterns on a linear network

  \item \texttt{vcov.lppm}:
   Variance-covariance matrix for parameter estimates of a fitted
   point process model on a linear network.

  \item \texttt{bilinearform}
   Computes a bilinear form 

  \item \texttt{tilenames}, \verb!tilenames<-!:
   Extract or change the names of tiles in a tessellation.

   \item \texttt{bw.ppl}:
    Likelihood cross-validation technique 
    for bandwidth selection in kernel smoothing.

   \item \texttt{is.lppm}, \texttt{is.kppm}, \texttt{is.slrm}:
    Tests whether an object is of class 'lppm', 'kppm' or 'slrm'

   \item \texttt{Smooth}:
    New generic function for spatial smoothing.

   \item \texttt{Smooth.ppp}, \texttt{Smooth.fv}, \texttt{Smooth.msr}:
    Methods for \texttt{Smooth}
    (identical to \texttt{smooth.ppp}, \texttt{smooth.fv}, \texttt{smooth.msr}
    respectively)

   \item \texttt{fitted.kppm}:
    Method for \texttt{fitted} for cluster/Cox models

  \item \texttt{nncross.pp3}:
   Method for \texttt{nncross} for point patterns in 3D

  \item \texttt{nnmark}:
   Mark of nearest neighbour - can be used for interpolation

  \item \texttt{dclf.progress}, \texttt{mad.progress}:
   Progress plots (envelope representations) for the DCLF and MAD tests.

  \item \texttt{deriv.fv}:
   Numerical differentiation for \texttt{fv} objects.

  \item \texttt{interp.colourmap}:
   Smooth interpolation of colour map objects - makes it easy to build
   colour maps with gradual changes in colour

  \item \texttt{tweak.colourmap}
   Change individual colour values in a colour map object

  \item \texttt{beachcolourmap}:
   Colour scheme appropriate for `altitudes' (signed numerical values)

  \item \texttt{as.fv}:
   Convert various kinds of data to an 'fv' object

  \item \texttt{quadscheme.logi}:
   Generates quadrature schemes for the logistic method of ppm.

  \item \texttt{beginner}
   Introduction for beginners.

  \item \texttt{nnmap}:
   Given a point pattern, finds the k-th nearest point in the pattern
   from each pixel in a raster.

  \item \texttt{coef.fii}, \texttt{coef.summary.fii}:
   Extract the interaction coefficients of a fitted interpoint interaction

  \item \texttt{edges2vees}:
   Low-level function for finding triples in a graph.

  \item \texttt{affine.lpp}, \texttt{shift.lpp}, \texttt{rotate.lpp}, 
    \texttt{rescale.lpp}, \texttt{scalardilate.lpp}:
   Geometrical transformations for point patterns on a linear network

  \item \texttt{affine.linnet}, \texttt{shift.linnet}, \texttt{rotate.linnet}, 
   \texttt{rescale.linnet}, \texttt{scalardilate.linnet}:
   Geometrical transformations for linear networks

  \item \verb![.linnet!
   Subset operator for linear networks

  \item \texttt{timed}:
   Records the computation time taken
   
  \item \texttt{connected.ppp}:
   Find clumps in a point pattern.

  \item \texttt{kstest.lpp}, \texttt{kstest.lppm}:
   The spatial Kolmogorov-Smirnov test can now be applied 
   to point patterns on a linear network (class \texttt{lpp}) and 
   point processes on a linear network (class \texttt{lppm}).

  \item \texttt{bermantest.lpp}, \texttt{bermantest.lppm}:
   Berman's Z1 and Z2 tests can now be applied to point patterns
   on a linear network (class \texttt{lpp}) and point processes on a linear
   network (class \texttt{lppm}).

  \item \texttt{rhohat.lpp}, \texttt{rhohat.lppm}:
   Nonparametric estimation of the dependence of a point pattern
   on a spatial covariate: \texttt{rhohat} now applies to 
   objects of class \texttt{lpp} and \texttt{lppm}.

  \item \texttt{intensity.lpp}:
   Empirical intensity of a point pattern on a linear network.

  \item \texttt{as.function.rhohat}:
   Converts a \texttt{rhohat} object to a function,
   with extrapolation beyond the endpoints.

  \item \verb![.layered!:
   Subset operator for layered objects.

  \item \texttt{shift}, \texttt{rotate}, \texttt{affine}, 
    \texttt{rescale}, \texttt{reflect}, \texttt{flipxy}, \texttt{scalardilate}:
   These geometrical transformations now work for \texttt{layered} objects.

  \item \texttt{iplot.layered}:
   Interactive plotting for \texttt{layered} objects.

  \item \texttt{as.owin.layered}:
   Method for as.owin for layered objects.

  \item \verb![.owin!:
   Subset operator for windows, equivalent to \texttt{intersect.owin}.

  \item \texttt{rcellnumber}:
   Generates random integers for the Baddeley-Silverman counterexample.

  \item \texttt{is.lpp}:
   Tests whether an object is a point pattern on a linear network.

  \item \texttt{is.stationary.lppm}, \texttt{is.poisson.lppm}:
   New methods for \texttt{is.stationary} and \texttt{is.poisson}
   for class \texttt{lppm}

  \item \texttt{sessionLibs}:
   Print library names and version numbers (for use in \texttt{Sweave} scripts)

  \item \texttt{round.ppp}:
   Round the spatial coordinates of a point pattern 
   to a specified number of decimal places.

  \item \texttt{rounding}:
   Determine whether a dataset has been rounded.

  \item \texttt{Hybrid}:
   The hybrid of several point process interactions
   [Joint research with Jorge Mateu and Andrew Bevan]

  \item \texttt{is.hybrid}:
   Recognise a hybrid interaction or hybrid point process model.

  \item \texttt{Finhom}, \texttt{Ginhom}, \texttt{Jinhom}
   Inhomogeneous versions of the F, G and J functions

  \item \texttt{delaunay.distance}:
   Graph distance in the Delaunay triangulation.

  \item \texttt{distcdf}:
   Cumulative distribution function of the distance between
   two independent random points in a given window.

  \item \texttt{bw.frac}:
   Bandwidth selection based on window geometry

  \item \texttt{shortside.owin}, \texttt{sidelengths.owin}:
   Side lengths of (enclosing rectangle of) a window

  \item \texttt{clusterset}:
   Allard-Fraley estimator of high-density features in a point pattern

  \item \texttt{pool.quadrattest}:
   Pool several quadrat tests

  \item \texttt{nnfun}:
   Nearest-neighbour map of a point pattern or a line segment pattern

  \item \texttt{as.ppm}:
   Converts various kinds of objects to \texttt{ppm}.

  \item \texttt{crossdist.lpp}:
   Shortest-path distances between pairs of points in a linear network

  \item \texttt{nobs.lppm}:
   Method for \texttt{nobs} for \texttt{lppm} objects.

  \item \texttt{as.linim}:
   Converts various kinds of objects to \texttt{linim}.

  \item \texttt{model.images.slrm}:
   Method for \texttt{model.images} for \texttt{slrm} objects

  \item \texttt{rotate.im}:
   Rotate a pixel image

  \item \texttt{parres}:
   Partial residual plots for spatial point process models.
   A diagnostic for the form of a covariate effect.

  \item \texttt{addvar}:
   Added variable plots for spatial point process models.
   A diagnostic for the existence of a covariate effect.

  \item \texttt{intensity}, \texttt{intensity.ppp}, \texttt{intensity.ppm}
   Calculate the intensity of a dataset or fitted model.
   Includes new approximation to the intensity of a fitted Gibbs model

  \item \texttt{LambertW}:
   Lambert's W-function

  \item \texttt{exactMPLEstrauss}:
   Fits the stationary Strauss point process model
   using an exact maximum pseudolikelihood technique.
   This is mainly intended for technical investigation of algorithms.

  \item \texttt{split.ppx}:
   Method for \texttt{split} for multidimensional point patterns 
   (class \texttt{ppx}).
   This also works for point patterns on a linear network (class \texttt{lpp}).

  \item \texttt{model.images}:
   This function is now generic, with methods for classes 
   \texttt{ppm}, \texttt{kppm}, \texttt{lppm}

  \item \texttt{model.frame}, \texttt{model.matrix}:
   These generic functions now have methods for classes \texttt{kppm}, 
   \texttt{lppm}

  \item \texttt{as.owin.kppm}, \texttt{as.owin.lppm}:
   New methods for 'as.owin' for objects of class \texttt{kppm}, \texttt{lppm}

  \item \texttt{as.linnet.lppm}:
   Extracts the linear network in which a point process model was fitted.

  \item \texttt{dclf.test}:
   Perform the Diggle (1986)/ Cressie (1991)/ 
   Loosmore and Ford (2006) test of CSR 
   (or another model)

  \item \texttt{mad.test}:
   Perform the Maximum Absolute Deviation test of CSR (or another model).

  \item \texttt{convolve.im}:
   Compute convolution of pixel images.

  \item \texttt{Kmulti.inhom}:
   Counterpart of \texttt{Kmulti} for spatially-varying intensity.

  \item \texttt{rmhexpand}:
   Specify a simulation window, or a rule for expanding the
   simulation window, in Metropolis-Hastings simulation (\texttt{rmh})

  \item \texttt{transect.im}:
   Extract pixel values along a line transect.

  \item \texttt{affine.im}:
   Apply an affine transformation to a pixel image.

  \item \texttt{scalardilate}:
   Perform scalar dilation of a geometrical object 
   relative to a specified origin.

  \item \texttt{reflect}:
   Reflect a geometrical object through the origin.

  \item \verb![.lpp!, \verb![.ppx!:
   Subset operators for the classes \texttt{lpp} (point pattern on 
   linear network) and \texttt{ppx} (multidimensional space-time
   point pattern).
 
  \item \texttt{is.rectangle}, \texttt{is.polygonal}, \texttt{is.mask}:
   Determine whether a window w is a rectangle, a domain with polygonal 
   boundaries, or a binary pixel mask.

  \item \texttt{has.offset}:
   Determines whether a fitted model object (of any kind)
   has an offset.

 \item \texttt{lohboot}:
  Computes bootstrap confidence bands for pair correlation function
  and $K$ function using Loh's (2008) mark bootstrap.

  \item \texttt{rho2hat}:
   Bivariate extension of \texttt{rhohat} for estimating spatial residual risk, 
   or intensity as a function of two covariates.

  \item \texttt{rStraussHard}:
   Perfect simulation for Strauss-hardcore process (with $\gamma \le 1$)

  \item \texttt{simulate.slrm}:
   Method for \texttt{simulate} for spatial logistic regression models.

  \item \texttt{labels.ppm}, \texttt{labels.kppm}, \texttt{labels.slrm}:
   Methods for \texttt{labels} for fitted point process models.

  \item \texttt{commonGrid}:
   Determine a common spatial domain and pixel resolution
   for several pixel images and/or binary masks

  \item \texttt{as.matrix.owin}:
   Converts a window to a logical matrix.

  \item \texttt{rDiggleGratton}, \texttt{rDGS}, \texttt{rHardcore}:
   Perfect simulation for the Diggle-Gratton process,
   Diggle-Gates-Stibbard process, and Hardcore process.

  \item \texttt{bw.scott}:
   Scott's rule of thumb for bandwidth selection in
   multidimensional smoothing

  \item \texttt{valid.ppm}:
   Checks whether a fitted point process model is a valid point process

  \item \texttt{project.ppm}:
   Forces a fitted point process model to be a valid point process

  \item \texttt{leverage.ppm}, \texttt{influence.ppm}, \texttt{dfbetas.ppm}:
   Leverage and influence for point process models

  \item \texttt{ippm}:
   Experimental extension to 'ppm' which fits irregular parameters in trend
   by Fisher scoring algorithm.

  \item \texttt{Tstat}:
   Third order summary statistic for point patterns
   based on counting triangles.

  \item \texttt{rCauchy}, \texttt{rVarGamma}:
   simulation of a Neyman-Scott process with Cauchy clusters
   or Variance Gamma (Bessel) clusters.
   Contributed by Abdollah Jalilian.

  \item \texttt{rPoissonCluster}:
   simulation of a general Poisson cluster process

  \item \texttt{model.covariates}:
   Identify the covariates involved in a model (\texttt{lm}, \texttt{glm}, 
   \texttt{ppm} etc)

  \item \texttt{as.im.distfun}:
   Converts a 'distfun' to a pixel image.

  \item \texttt{cauchy.estK}, \texttt{cauchy.estpcf}, 
    \texttt{vargamma.estK}, \texttt{vargamma.estpcf}:
   Low-level model-fitting functions for the Neyman-Scott process 
   with Cauchy or Variance-Gamma cluster kernel.
   Contributed by Abdollah Jalilian.

  \item \texttt{Triplets}:
   Geyer's triplet interaction, for point process models

  \item \texttt{coef.summary.ppm}:
   You can now type \texttt{coef(summary(fit))} to extract a table
   of the fitted coefficients of the point process model \texttt{fit}

  \item \texttt{scan.test}:
     Spatial scan test of clustering

  \item \texttt{rat}:
   New class of 'ratio objects'

  \item \texttt{pool.rat}:
   New method for \texttt{pool}.
   Combines K function estimates for replicated point patterns (etc) 
   by computing ratio-of-sums 

  \item \texttt{unnormdensity}:
   Weighted kernel density with weights that do not sum to 1
   and may be negative.

  \item \texttt{compatible}:
   New generic function with methods for \texttt{fv}, \texttt{im}, 
   \texttt{fasp} and \texttt{units}.

  \item \texttt{imcov}:
   Spatial covariance function of pixel image
   or spatial cross-covariance function of two pixel images

  \item \texttt{harmonise.im}:
   Make several pixel images compatible 
   by converting them to the same pixel grid

  \item \texttt{contour.listof}, \texttt{image.listof}:
   Methods for \texttt{contour}() and \texttt{image}() for lists of objects

  \item \texttt{dummify}:
   Convert data to numeric values by constructing dummy variables.

  \item \texttt{pool}:
   Pool data from several objects of the same class

  \item \texttt{pool.envelope}
   Pool simulated data from several envelope objects and create a new envelope

  \item \texttt{pool.fasp}:
   Pool simulated data from several function arrays and create a new array

  \item \texttt{envelope.envelope}:
   Recalculate an envelope from simulated data using different parameters

  \item \texttt{bw.diggle}:
   Bandwidth selection for density.ppp by mean square error cross-validation.

  \item \texttt{bw.smoothppp}:
   Bandwidth selection for smooth.ppp by least-squares cross-validation.

  \item \texttt{layered}, \texttt{plot.layered}:
   A simple mechanism for controlling plots that consist of
   several successive layers of data.

  \item \texttt{model.depends}:
   Given a fitted model (of any kind), identify which of the covariates
   is involved in each term of the model.

  \item \texttt{model.is.additive}:
   Determine whether a fitted model  (of any kind) is additive, 
   in the sense that each term in the model involves at most one covariate.

   \item \texttt{sumouter}, \texttt{quadform}:
    Evaluate certain quadratic forms.

   \item \texttt{flipxy}:
    Exchange x and y coordinates.

   \item \texttt{idw}:
      Inverse-distance weighted smoothing.

   \item \texttt{localKinhom}, \texttt{localLinhom}, \texttt{localpcfinhom}:
      Inhomogeneous versions of \texttt{localK}, \texttt{localL}, 
      \texttt{localpcf}:

   \item \texttt{envelope.lpp}:
      Simulation envelopes for point patterns on a linear network

   \item \texttt{lineardisc}:
      Compute the 'disc' of radius $r$ in a linear network 

   \item \texttt{linearpcf}: 
      Pair correlation for point pattern on a linear network

   \item \texttt{linearKinhom}, \texttt{linearpcfinhom}:
      Inhomogeneous versions of the K function and pair correlation function
      for point patterns on a linear network

   \item \texttt{lppm}: 
      Fit point process models on a linear network.

   \item \texttt{anova.lppm}:
      Analysis of deviance for point process models on a linear network.

   \item \texttt{predict.lppm}:
      Prediction for point process models on a linear network.

   \item \texttt{envelope.lppm}:
      Simulation envelopes for point process models on a linear network.

   \item \texttt{linim}:
      Pixel image on a linear network

   \item \texttt{plot.linim}:
      Plot a pixel image on a linear network

   \item  \texttt{Gcom}, \texttt{Gres}, \texttt{Kcom}, \texttt{Kres}:
       New diagnostics for fitted Gibbs or Poisson point process models
       based on score residuals.
       \texttt{Gcom} is the compensator of the $G$ function;
       \texttt{Gres} is the residual of the $G$ function;
       \texttt{Kcom} is the compensator of the $K$ function;
       \texttt{Kres} is the residual of the $K$ function.

   \item  \texttt{psst}, \texttt{psstA}, \texttt{psstG}:
       New diagnostics for fitted Gibbs or Poisson point process models
       based on pseudoscore residuals.
       \texttt{psst} is the pseudoscore diagnostic for a general alternative;
       \texttt{psstA} is the pseudoscore diagnostic
       for an Area-interaction alternative;
       \texttt{psstG} is the pseudoscore diagnostic for
       a Geyer saturation alternative.

   \item  \texttt{compareFit}:
       Computes and compares several point process models
       fitted to the same dataset, using a chosen diagnostic.

   \item  \texttt{as.interact}:
       Extracts the interpoint interaction structure (without parameters)
       from a fitted point process model or similar object.

   \item  \texttt{is.stationary}, \texttt{is.poisson}:
       New generic functions for testing whether a point process model 
       is stationary and/or Poisson.
       Methods for \texttt{ppm}, \texttt{kppm}, \texttt{slrm} etc.

   \item  \texttt{raster.xy}:
       raster coordinates of a pixel mask

   \item  \texttt{zapsmall.im}:
       'zapsmall' for pixel images

   \item \texttt{linearK}:
      Computes the Okabe-Yamada network K-function 
      for a point pattern on a linear network.

   \item \texttt{pairdist.lpp}:
      Shortest-path distances between each pair of points 
      on a linear network.

   \item \texttt{vcov.kppm}:
      Asymptotic variance-covariance matrix for regression parameters
      in kppm object. 
      [Contributed by Abdollah Jalilian and Rasmus Waagepetersen]

   \item \texttt{rLGCP}:
      Simulation of log-Gaussian Cox processes
      [Contributed by Abdollah Jalilian and Rasmus Waagepetersen]

   \item \texttt{predict.rhohat}:
      Method for \texttt{predict} for objects of class \texttt{rhohat}.
      Computes a pixel image of the predicted intensity.

   \item \texttt{Kmodel}, \texttt{pcfmodel}:
      Generic functions that compute the K-function or pair correlation function
      of a point process \emph{model}. 
      There are methods for \texttt{kppm} and \texttt{ppm}.

   \item \texttt{as.function.fv}
      Converts a function value table (class \texttt{fv}) to a function in R

   \item \texttt{coef.kppm}:
      Method for \texttt{coef} for objects of class \texttt{kppm}

   \item \texttt{unitname}, \verb!unitname<-!:
      These generic functions now have methods for fitted model objects
      (classes \texttt{ppm}, \texttt{slrm}, \texttt{kppm}, \texttt{minconfit}) 
      and quadrature schemes (\texttt{quad}).

   \item \texttt{nobs.ppm}:
      Method for \texttt{nobs} for class \texttt{ppm}.
      Returns the number of points in the original data.

   \item \texttt{rgbim}, \texttt{hsvim}:
      Specify three colour channels.
      These functions convert three pixel images with numeric values
      into a single image whose pixel values are strings representing colours.

   \item \texttt{scaletointerval}:
      Generic utility function to rescale data (including spatial data)
      to a specified interval

   \item \texttt{runiflpp}:
      Uniformly distributed random points on a linear network

   \item \texttt{rpoislpp}:
      Poisson point process on a linear network

   \item \texttt{clickjoin}:
      Interactive graphics to create a linear network
    
   \item \texttt{superimpose}:
      The function 'superimpose' is now generic, with methods
      for ppp, psp and a default method.

   \item \texttt{as.ppp.psp}: 
      New method for \texttt{as.ppp} extracts the endpoints and marks
      from a line segment pattern

   \item \texttt{runiflpp}:
      Uniformly distributed random points on a linear network

   \item \texttt{rpoislpp}:
      Poisson point process on a linear network

   \item \texttt{clickjoin}:
      Interactive graphics to create a linear network
    
   \item \texttt{superimpose}:
      The function \texttt{superimpose} is now generic, with methods
      for \texttt{ppp}, \texttt{psp} and a default method.

   \item \texttt{nsegments}:
    	Number of segments in a line segment pattern

   \item \texttt{clarkevans.test}
    	Classical Clark-Evans test of randomness

   \item \texttt{msr}
	New class \texttt{msr} of signed measures and vector-valued measures
	supporting residual analysis.

   \item \texttt{quadrat.test.quadratcount}:
	Method for \texttt{quadrat.test} for objects of class 
        \texttt{quadratcount}
	(allows a $\chi^2$ test to be performed on quadrat counts
	rather than recomputing from the original data)

   \item \texttt{tile.areas}:
	Computes areas of tiles in a tessellation (efficiently)
      \end{itemize}

\section{Precis of all changes}

Here is the text from the `overview' sections of 
the News and Release Notes for each update. 

\begin{itemize}
  \item Likelihood cross-validation for smoothing bandwidth.

  \item Faster computations for pairwise interaction models.

  \item More flexible models of intensity in cluster/Cox processes.

  \item New generic function for smoothing.

  \item Substantial acceleration of many functions

  \item New 'logistic likelihood' method for fitting Gibbs models.

  \item Nearest neighbours for point patterns in 3D

  \item Nearest-neighbour interpolation in 2D

  \item New 'progress plots' 

  \item Hard core thresholds can be estimated automatically.

  \item More support for colour maps

  \item More support for 'fv' objects

  \item More support for pooling of envelopes.

  \item More functionality for nearest neighbours

  \item More support for 'layered' objects.

  \item Find clumps in a point pattern.

  \item Connected component interaction model.

  \item Improvements to interactive plots.

  \item Visual debugger for Metropolis-Hastings algorithm.

  \item Rounding of spatial coordinates

  \item The spatstat manual now exceeds 1000 pages.

  \item Hybrids of Gibbs point process models.

  \item Second order composite likelihood method for kppm.

  \item Inhomogeneous F, G and J functions.

  \item Delaunay graph distance

  \item Pixel images can now be displayed with a logarithmic colour map.

  \item random sequential packing
 
  \item Allard-Fraley estimator

  \item method for pooling several quadrat tests

  \item better control over dummy points in ppm

  \item nearest neighbour map 

  \item changes to subsetting of images

  \item New code for Partial Residual Plots and Added Variable Plots.

  \item maximum profile pseudolikelihood computations vastly accelerated.

  \item now possible to capture every k-th state of Metropolis-Hastings algorithm.

  \item scope of 'intensity.ppm' extended.

  \item quadrat.test can now perform Monte Carlo tests and one/two-sided tests

  \item improvements to 'plot.fv'

  \item improvement to 'rescale'

  \item some datasets reorganised/corrected.

  \item New approximation to the intensity of a fitted Gibbs model.

  \item Improvements to 3D summary functions.

  \item A multidimensional point pattern (ppx) can now have 'local' coordinates
   as well as spatial and temporal coordinates and marks.

  \item More support for fitted cluster models (kppm).

  \item split method for multidimensional point patterns (ppx)
   and point patterns on a linear network (lpp).

  \item Variance estimates are now available for all Gibbs point process models.

  \item Cressie-Loosmore-Ford test implemented

  \item plot.fv now avoids collisions between the legend and the graphics.

  \item Extension to predict.ppm

  \item Improvements to envelopes and multitype summary functions. 

  \item Line transects of a pixel image.

  \item Changes to defaults in Metropolis-Hastings simulations.

  \item More geometrical operations

  \item Variance-covariance matrix for Gibbs point process models.

  \item Bootstrap confidence bands for pair correlation function and K function.

  \item Nearest neighbour distance computations accelerated.

  \item Improved support for fitted point process models.

  \item Improved mechanism for handling 'invalid' point processes

  \item New functions for perfect simulation 

  \item Code for ensuring a fitted point process model is a valid point process

  \item Leverage and influence for point process models

  \item New cluster models (support for model-fitting and simulation).

  \item Fit irregular parameters in trend of point process model

  \item Third order summary statistic.

  \item Geyer's triplet interaction

  \item more functionality for replicated point patterns

  \item changed default for simulation window in point process simulation

  \item changed default for edge correction in Kcom, Gcom
 
  \item data in spatstat is now lazy-loaded

  \item Spatial Scan Test

  \item Functionality for replicated point patterns

  \item Spatial covariance functions of windows and pixel images.

  \item Area-interaction models can now be fitted in non-rectangular windows

  \item New vignette on 'Getting Started with Spatstat'

  \item Functions to pool data from several objects of the same class.

   \item Bandwidth selection for density.ppp and smooth.ppp

   \item Layered plots. 

   \item Model-handling facilities.

   \item Inverse-distance weighted smoothing.

   \item Inhomogeneous versions of neighbourhood density functions.

   \item  changes to renormalisation of estimates in Kinhom and pcfinhom

   \item  new diagnostics based on score residuals

   \item  Fitting and simulation of log-Gaussian Cox processes
       with any covariance function

   \item  More support for 'kppm' and 'rhohat' objects

   \item  Metropolis-Hastings algorithm now saves its transition history

   \item  Easier control of dummy points in ppm

   \item  Convert an 'fv' object to an R function 

   \item  marked line segment patterns can now be plotted

   \item  multitype point process models are now 'self-starting'

   \item  new functions to manipulate colour images

   \item  \texttt{superimpose} is now generic

   \item  improved mathematical labels when plotting functions

   \item   A line segment pattern can now have a data frame of marks.

   \item  Increased numerical stability.
	
   \item  New 'self-starting' feature of interpoint interactions.
	
   \item Point process model covariates may now depend on additional parameters.

   \item New class of signed measures, for residual analysis.

  \item Spatstat now has version nicknames.

   \item Improved quadrature schemes in \code{ppm}

   \item More methods for \code{intensity}

   \item Counterpart of \code{apply} for lists of images.

   \item Hexagonal grids and tessellations.

   \item Extensions to scan test and Allard-Fraley cluster set estimator

   \item Extensions and improvements to plotting functions.

   \item Improvements to labelling of \code{fv} objects.

   \item Geometrical errors in polygons are now repaired automatically.

   \item Switch all plots from colour to greyscale using a single command.

   \item Change parameters of fitted model before simulating it.

   \item Improvements to layout of printed output.
     
   \item Plots using texture fill.

   \item Changed default behaviour of perfect simulation algorithms.

   \item New syntax for point process models (\texttt{ppm}, \texttt{kppm},
     \texttt{lppm}) equivalent to syntax of \texttt{lm}, \texttt{glm}, \ldots

   \item Covariates in \texttt{ppm}, \texttt{kppm} can be tessellations.
  \end{itemize}
  
\section{Alphabetical list of changes}

Here is a list of all changes made to existing functions,
listed alphabetically.

   \begin{itemize}
   \item \code{adaptive.density}:  Now has argument 'verbose'
     
 \item \texttt{affine}:
   Argument \texttt{vec} can be in various formats.
   
 \item \texttt{as.function.fv}:
   Now allows multiple columns to be interpolated.

  \item \texttt{alltypes}
   Now works for lpp objects 

 \item \texttt{ants}:
  The function \verb!ants.extra$plot()! has been renamed plotit() 
  for conformity with other datasets.
      The auxiliary data \texttt{ants.extra} 
      now includes a function called \texttt{side}
      determining whether a given location is in the scrub or field region.
      Can be used as a covariate in \texttt{ppm}, \texttt{kppm}, \texttt{slrm}.

  \item \texttt{applynbd}
   The arguments \texttt{N}, \texttt{R} and \texttt{criterion} 
   may now be specified together.

  \item \texttt{areaGain}, \texttt{areaLoss}
   These now handle arbitrary windows \texttt{W}.
   They are now more accurate when \texttt{r} is very small.

  \item \texttt{AreaInter}
   Point process models with the \texttt{AreaInter} interaction
   can now be fitted to point pattern data in any window.

  \item \texttt{as.box3}:
   Now accepts objects of class \texttt{ppx} or \texttt{boxx}.

  \item \texttt{as.fv}:
      Now handles objects of class \texttt{kppm} or \texttt{minconfit}.

  \item \texttt{as.mask}:
   Argument \texttt{eps} can now be a 2-vector, specifying x and y resolutions.

  \item \texttt{as.owin.ppm}, \texttt{as.owin.kppm}:
   New argument \texttt{from} allows the user to extract the spatial window
   of the point data (\texttt{from="points"}) 
   or the covariate images (\texttt{from="covariates"})

 \item \texttt{betacells}:
  This dataset has been restructured. The vector of cell profile areas,
  formerly given by \verb!betacells.extra$area!, has now been included
  as a column of marks in the point pattern \texttt{betacells}.

  \item \texttt{bw.relrisk}:
   Computation in large datasets accelerated.
   New arguments \texttt{hmin}, \texttt{hmax} 
   control the range of trial values of bandwidth.

  \item \texttt{clusterset}:
   The argument \code{result} has been renamed \code{what}.
   It is now possible to give multiple values to \code{what}
   so that both types of result can be computed together.

 \item \texttt{colourmap}:
	The argument \texttt{col} can now be any kind of colour data

  \item \texttt{connected}:
   \texttt{connected} is now generic, with methods for 
   \texttt{im}, \texttt{owin} and \texttt{ppp}.

  \item \texttt{crossdist.ppp}, \texttt{crossdist.pp3}, 
    \texttt{crossdist.default}:
   New argument \texttt{squared} allows the squared distances to be computed
   (saving computation time in some applications)

  \item \texttt{crossing.psp}:
   New argument \texttt{fatal} allows the user to handle empty intersections

  \item \texttt{dclf.test}, \texttt{mad.test}:
   The argument X can now be an object produced by a previous call
   to \texttt{dclf.test} or \texttt{mad.test}.

  \item \texttt{default.dummy}:
    Can now generate dummy points as a quasirandom sequence.

  \item \texttt{default.rmhcontrol}, \texttt{default.expand}:
   These functions now work with models of class \texttt{rmhmodel} 
   as well as \texttt{ppm}.

  \item \texttt{density.ppp}:
    \begin{itemize}
    \item    The argument \texttt{weights} can now be a matrix
      or an \code{expression}.
    \item    Numerical underflow no longer occurs when \texttt{sigma} 
      is very small and \texttt{at="points"}. A warning is no longer issued.
    \item 
      New argument \texttt{diggle} allows choice of edge correction.
    \item 
      New argument \texttt{adjust} makes it easy to adjust 
      the smoothing bandwidth.

    \end{itemize}

   \item \texttt{disc}:
     Argument \texttt{centre} can be in various formats.

   \item \texttt{distcdf}:
    Arguments W and V can now be point patterns.

  \item \texttt{distfun}:
   The internal format of objects of class \texttt{distfun} has been changed.

  \item \texttt{duplicated.ppp}, \texttt{unique.ppp}   
   New argument \texttt{rule} allows behaviour 
   to be consistent with package \texttt{deldir}.

  \item \texttt{effectfun}:
   Now has argument \texttt{se.fit} allowing calculation of standard errors
   and confidence intervals.

   \item \texttt{envelope}:
    All methods for \texttt{envelope} now handle \texttt{fun=NULL}.
    New argument \texttt{envir.simul} determines the environment
    in which to evaluate the expression \texttt{simulate}.

  \item \texttt{envelope.lpp}:
   Now handles multitype point patterns.

  \item \texttt{envelope.envelope}:
   New argument \texttt{transform} allows the user to apply a transformation
   to previously-computed summary functions.

  \item \texttt{envelope.envelope}:
   In \texttt{envelope(E, fun=NULL)} if \texttt{E} does not contain simulated
   summary functions, but does contain simulated point patterns, 
   then \texttt{fun} now defaults to \texttt{Kest}, 
   instead of flagging an error.

 \item \texttt{envelope}:
  Can now calculate an estimate of the true significance level
  of the "wrong" test (which declares the observed summary function
  to be significant if it lies outside the pointwise critical boundary
  anywhere). Controlled by new argument \texttt{do.pwrong}.

 \item \texttt{envelope}:
  Improved plot labels for envelopes that were generated using
  the \texttt{transform} argument.

  \item \texttt{erosion}, \texttt{dilation}, \texttt{opening}, \texttt{closing}:
   If the original set is a polygon, the result is a polygon.

   \item \texttt{eval.fv}, \texttt{eval.fasp}:
   Improved behaviour when plotted.
   Evaluation is now applied only to columns that contain
   values of the function itself (rather than values of the
   derivative, hazard rate, etc). This is controlled by the
   new argument \texttt{dotonly}.

  \item \texttt{eval.im}:
   Images with incompatible dimensions are now resampled 
   to make them compatible (if \texttt{harmonize=TRUE}).
   When the argument \texttt{envir} is used, \texttt{eval.im} now recognises
   functions as well as variables in \texttt{envir}

 \item \texttt{exactMPLEstrauss}:
  New argument \texttt{project} determines whether the parameter gamma
  is constrained to lie in $[0,1]$.

  \item \texttt{expand.owin}:
   Functionality extended to handle all types of expansion rule.

  \item \texttt{F3est}:
   Calculation of theoretical Poisson curve (\texttt{theo}) has changed,
   and is now controlled by the argument \texttt{sphere}.

 \item \texttt{fitted.ppm}, \texttt{predict.ppm}:
   Argument \texttt{new.coef} specifies a vector of parameter values
   to replace the fitted coefficients of the model.

  \item \texttt{fryplot}:
   Now has arguments \texttt{to} and \texttt{from}, allowing 
   selection of a subset of points.

  \item \texttt{fryplot}, \texttt{frypoints}:
   These functions now handle marked point patterns properly.

  \item \texttt{Hardcore}, \texttt{StraussHard}:
   The hard core distance \texttt{hc} can now be omitted; 
   it will be estimated from data.

  \item \texttt{identify.ppp}: now handles multivariate marks.
    
  \item \texttt{im}, \texttt{as.im}:
   The pixel coordinates in an image object are now generated
   more accurately. This avoids a numerical error in \texttt{plot.im}.

  \item \texttt{image.listof}:
   New argument \texttt{equal.ribbon} allows several images to be plotted
   with the same colour map.
   If \texttt{equal.ribbon=TRUE}, the colour ribbon will no longer be 
   displayed repeatedly for each panel, 
   but will now be plotted only once, at the right hand side of the plot array.

  \item \texttt{inside.owin}:
   Now accepts the form \texttt{list(x,y)} for the first argument.

   \item \code{intensity.ppp}:
   Now has argument \code{weights}.
   
 \item \texttt{intensity.ppm}:
  Now works for stationary point process models with the interactions
  \texttt{DiggleGratton}, \texttt{DiggleGatesStibbard}, \texttt{Fiksel}, 
  \texttt{PairPiece} and \texttt{Softcore}.

  \item \texttt{intersect.owin}, \texttt{union.owin}, \texttt{setminus.owin}:
   If A and B are polygons, the result is a polygon.

  \item \texttt{intersect.tess}, \texttt{dirichlet}:
   The tiles of the resulting tessellation are polygons 
   if the input was polygonal.

  \item \texttt{iplot}:
   \texttt{iplot} is now generic, with methods for 
   \texttt{ppp}, \texttt{layered} and \texttt{default}.
   \texttt{iplot} methods now support zoom and pan navigation.

   \item \texttt{Kest}:
     \begin{itemize}
     \item 
    Now includes fast algorithm for \texttt{correction="none"}
    which will handle patterns containing millions of points.
  \item 
    New option: \texttt{correction = "good"} 
    selects the best edge correction that can be computed in reasonable time.
  \item 
    Options \texttt{correction='border'} and \texttt{correction='none'}
    now run about 4 times faster, thanks to Julian Gilbey.
  \item 
    New argument \texttt{ratio} determines whether the numerator and denominator
    of the estimate of the K-function will be stored. 
    This enables analysis of replicated point patterns, 
    using \texttt{pool.rat} to pool the K function estimates.
     \end{itemize}

  \item \texttt{Kcross}, \texttt{Kdot}, \texttt{Kmulti}:
   New argument \texttt{ratio} determines whether the numerator and denominator
   of the estimate of the multitype K-function will be stored. 
   This enables analysis of replicated point patterns, 
   using \texttt{pool.rat} to pool the K function estimates.

  \item \texttt{Kinhom}
    \begin{itemize}
    \item 
     New argument \texttt{normpower} allows different types of renormalisation.
   \item 
     Now accepts \texttt{correction="good"}.
   \item 
     New argument \texttt{update}.
     If \texttt{lambda} is a fitted model (class
     \texttt{"ppm"} or \texttt{"kppm"}) and \texttt{update=TRUE},
     the model is re-fitted to the data pattern, before the intensities
     are computed.
   \end{itemize}

  \item \texttt{Kmulti}, \texttt{Gmulti}, \texttt{Jmulti}:
   The arguments \texttt{I}, \texttt{J} can now be any kind of subset index
   or can be functions that yield a subset index.

  \item \texttt{Kcom}, \texttt{Gcom}:
   New argument \texttt{conditional} gives more explicit control
   over choice of edge correction in compensator.
   Simplified defaults for edge correction.  

  \item \texttt{Kscaled}, \texttt{Lscaled}:
    Argument \texttt{lambda} can now be a fitted model object
    (class \texttt{"ppm"}).

  \item \texttt{kppm}
     \begin{itemize}
   \item 
     now accepts syntax \verb!kppm(X ~ Z)! 
     similar to \texttt{lm} and \texttt{glm},
     as well as old syntax \verb!kppm(X, ~Z)!
   \item 
     Covariates no longer have to be passed in the argument 
     \texttt{covariates} but can be objects in the {\sf R} session;
     \item 
   Now has the option of fitting models using Guan's (2006)
   second order composite likelihood.
 \item 
    More flexible models of the intensity, and greater control over the
    intensity fitting procedure, are now possible using the arguments
    \texttt{covfunargs}, \texttt{use.gam}, \texttt{nd}, \texttt{eps} 
    passed to \texttt{ppm}.
  \item 
    Also the argument \texttt{X} may now be a quadrature scheme.
  \item 
    Error messages from the optimising function \texttt{optim} are now trapped
    and handled.
  \item 
   Confidence intervals for the fitted trend parameters
   can now be obtained using \texttt{confint}
 \item 
   Now accepts \texttt{clusters="Cauchy"} or \texttt{clusters="VarGamma"}
   for the Neyman-Scott process with Cauchy or Variance-Gamma cluster kernel.
 \item 
    Can now fit a log-Gaussian Cox process with any covariance function implemented by the \texttt{RandomFields} package.
  \item Covariates can now be tessellations.
     \end{itemize}

  \item \texttt{latest.news}:
   The text is now displayed one page at a time.
   Can now be executed by typing the name of the function without parentheses.

   \item \texttt{layered}, \code{layerplotargs}, \code{plot.layered}:
     The plotting argument can now be a list of length 1,
     which will be replicated to the correct length.  

   \item \verb!layerplotargs<-!:
     Now handles any spatial object, converting it to a \texttt{layered} object.
     
   \item \texttt{Lest}:
   Now handles theoretical variance estimates (using delta method)
   if \texttt{var.approx=TRUE}

   \item \texttt{LennardJones}
	Increased numerical stability.
	New (optional) scaling argument \texttt{sigma0}.
	Interpoint distances are automatically rescaled
	using 'self-starting' feature. 

  \item \texttt{lgcp.estK}, \texttt{Kmodel}:
   Computation can be greatly accelerated 
   by setting \texttt{spatstat.options(fastK.lgcp=TRUE)}.

  \item \texttt{logLik.ppm}:
    New argument \texttt{new.coef} allows the user to evaluate
    the likelihood for a different value of the parameter.

\item \texttt{lohboot}:
   When the result is plotted, the confidence limits are now shaded.
   New argument \texttt{global} allows global (simultaneous) confidence bands
   instead of pointwise confidence intervals.

  \item \texttt{lppm}:
    \begin{itemize}
    \item The model-fitting function \texttt{lppm} now accepts 
      a syntax similar to \texttt{lm} or \texttt{glm}, 
      for example \verb!lppm(X ~ Z)!, 
      but still accepts the older syntax \verb!lppm(X, ~Z)!.
      To support both kinds of syntax, the function \texttt{lppm}
      is now generic, 
      with methods for the classes \texttt{formula} and
      \texttt{lppp}.
      The \texttt{formula} method handles a syntax like
      \verb!lppm(X ~ Z)! while the
      \texttt{lpp} method handles the old syntax \verb!lppm(X, ~Z)!.
    \item 
      Covariates no longer have to be passed in the argument 
      \texttt{covariates}:
      variable names appearing in the model formula can simply be the names
      of objects in the {\sf R} session.
    \item New arguments \texttt{eps} and \texttt{nd} control 
      the quadrature scheme.
    \item 
      Stepwise model selection using \texttt{step} now works 
      for \texttt{lppm} objects.       
    \end{itemize}



  \item \texttt{markstat}:
   The arguments \texttt{N} and \texttt{R} may now be specified together.

  \item \texttt{marks.ppp}, \verb!marks<-.ppp!:
    New argument \texttt{drop} determines whether a 
    data frame of marks with only one column will be
    converted to a vector.

  \item \texttt{model.depends}:
   Now also recognises 'offset' terms.

   \item \texttt{MultiStrauss}, \texttt{MultiHard}, \texttt{MultiStraussHard}:
     \begin{itemize}
     \item 
      The argument \texttt{types} can now be omitted or NULL;
      it will be inferred from the point pattern data.
    \item 
      The ordering of the arguments has changed. 
      (The old syntax will still work.)
     \end{itemize}

 \item \texttt{nbfires}:
  For conformity with other datasets, there is now an object 
  \texttt{nbfires.extra}.

    \item \texttt{nnclean}:
   Extra arguments are now passed to hist.default.
   The result now has attributes which give the fitted parameter values,
   information about the fitting procedure, and the histogram bar heights.

  \item \texttt{nncross}:
   This function is now generic, with methods for \texttt{ppp} 
   and \texttt{default}.
   \texttt{nncross.ppp} can now find the $k$-th nearest neighbours, for any $k$.
   New arguments added to control the return value and the sorting of data.

  \item \texttt{nndist}, \texttt{nnwhich}:
   New argument \texttt{by} makes it possible to find nearest neighbours
   belonging to specified subsets in a point pattern, for example,
   the nearest neighbour of each type in a multitype point pattern.

  \item \texttt{nncorr}, \texttt{nnmean}, \texttt{nnvario}
   These functions now handle data frames of marks.

  \item pairwise interaction Gibbs models:
   Many calculations for these models have been accelerated.

 \item \texttt{owin}: 
   Polygon data are no longer subjected to strict checks on their
   geometrical validity (self-intersections, overlaps, etc).
   Instead, geometrical inconsistencies in polygon data are automatically 
   repaired. 
   
\item \texttt{pcf.ppp}:
   New argument \texttt{domain} allows the computation to be 
   restricted to a subset of the window.
   
\item \texttt{pcf.ppp}, \texttt{pcfinhom}:
   New argument \texttt{divisor} enables better performance of the estimator
   of pair correlation function for distances close to zero.
   
  \item \texttt{pcfcross, pcfdot}:
   Algorithms have been reimplemented using a single-pass kernel smoother
   and now run much faster. Bandwidth selection rule improved.

  \item \texttt{pcfinhom}:
     Now performs renormalisation of estimate. 
     Default behaviour changed - estimates are now renormalised by default.

   \item \texttt{persp.im}:
	The \texttt{colmap} argument can now be a \texttt{colourmap} object

  \item  pixel images and grids:
      The default size of a pixel grid, given by 
      \texttt{spatstat.options("npixel")},
      has been changed from 100 to 128. A power of 2 gives faster
      and more accurate results in many cases.

  \item 
    \texttt{plot.fasp}, 
    \texttt{plot.fv}, 
    \texttt{plot.im}, 
    \texttt{plot.ppp}, 
    \texttt{plot.owin}, 
    \texttt{plot.im}:
    Can be switched from colour to greyscale by setting
    \texttt{spatstat.options(monochrome=TRUE)}.
    
  \item \texttt{plot.colourmap}:
   Now passes arguments to \texttt{axis} to control the plot.
   Appearance of plot improved.

   \item \texttt{plot.envelope}:
    	If the upper envelope is NA but the lower envelope is finite,
	the upper limit is now treated as +Infinity

\item \texttt{plot.hyperframe}: 
   The argument \texttt{e} now has a different format.
   Instead of \texttt{plot(h, plot(XYZ))}
   one must now type \texttt{plot(h, quote(plot(XYZ)))}
   This is necessary in order to avoid problems with 'S4 method dispatch'

  \item \texttt{plot.fasp}:
   New argument \texttt{samey} controls whether all panels 
   have the same $y$ limits.
   Changed default value of \texttt{samex}.

 \item \texttt{plot.fii}:
  Increased resolution of the plot obtained from 
  \texttt{plot(fitin(ppm(...)))} 

  \item \texttt{plot.fv}:
    \begin{itemize}
    \item 
   Improved collision-avoidance algorithm
   (for avoiding overlaps between curves and legend).
 \item 
   Labelling of plots has been improved in some cases.
 \item 
   New argument \texttt{log} allows plotting on logarithmic axes.
 \item 
   The formula can now include the symbols \texttt{.x} and \texttt{.y}
   as abbreviation for the function argument and the 
   recommended function value, respectively.
 \item 
   New argument \texttt{add}
 \item 
      Argument \texttt{legendmath} now defaults to TRUE.
    \item 
      New argument \texttt{legendargs} gives more control 
      over appearance of legend.
    \item 
      Increased default spacing between lines in legend.
    \item 
      Improved handling of argument \code{shade}.
    \end{itemize}

  \item \texttt{plot.fv}, \texttt{plot.envelope}:
   New argument \texttt{limitsonly} allows calculation of 
   a common x,y scale for several plots.

  \item \texttt{plot.im}:
    \begin{itemize}
    \item 
     Now handles many arguments recognised by plot.default
     such as \texttt{cex.main}. Also handles argument \texttt{box}.
   \item 
     New argument \texttt{ribargs} contains parameters controlling the
     ribbon plot only.
   \item 
     Now returns the colour map used.
   \item 
     Argument \texttt{col} can now be a function.
   \item 
     New argument \texttt{log} allows colour map 
     to be equally spaced on a log scale.
   \item 
    The colour ribbon can now be placed left, right, top or bottom 
    using new argument \texttt{ribside}.
  \item 
      Can now plot images whose pixel values are strings representing colours.
      New argument \texttt{valuesAreColours}
    \item  
      New arguments \code{add}, \code{do.plot}, \texttt{clipwin}.
    \item 
      More arguments recognised by \code{ribargs}
    \end{itemize}
  
  \item \texttt{plot.kstest}:
   Can now perform P-P and Q-Q plots as well.

   \item \texttt{plot.layered}:
     New arguments \code{add}, \code{main}.  
     Better argument handling.
     
  \item \texttt{plot.listof},\texttt{ plot.splitppp}, \texttt{contour.listof}, 
    \texttt{image.listof}:
    \begin{itemize}
    \item  
      Default behaviour has changed: panels are now plotted on different scales.
    \item 
      When \code{equal.scales=TRUE} the panels are plotted on
      exactly equal scales and are exactly aligned (under certain conditions).
    \item
      The arguments \texttt{panel.begin} and \texttt{panel.end} 
      can now be objects such as windows.
    \item 
      New arguments \texttt{hsep, vsep} allow increased spacing between plots
      without adding white space around the outer margin.
    \item 
      Argument \texttt{mar.panel} may have length 1, 2 or 4.
    \end{itemize}

  \item \texttt{plot.lpp}: New arguments.
    Automatically plots a legend.
    
  \item \texttt{plot.owin}:
    \begin{itemize}
    \item    Polygons with holes can now be plotted with filled colours
      on any device.
    \item The window can now be filled with one of 8 different textures.
    \end{itemize}
   
  \item \texttt{plot.ppp}:
    \begin{itemize}
    \item 
      Automatically plots a legend
    \item 
      Return value is now a graphics map object
    \item 
      Now behaves differently if there are multiple columns of marks.
      Each column of marks is plotted, in a series of separate plots
      arranged side-by-side.
    \item 
      An `empty' plot can now be generated by setting \texttt{type="n"}.
    \item 
      New arguments \code{show.window}, \code{show.all}, \texttt{do.plot},
      \texttt{clipwin}
   \end{itemize}

   \item \texttt{plot.psp}:
      Now handles marked line segment patterns 
      and plots the marks as colours.

  \item \code{plot.scan.test}, \code{as.im.scan.test}:
   These functions can now give the optimal value of circle radius \code{r}.

   \item \code{plot.tess}:
   For a tessellation represented by a pixel image, 
   \code{plot.tess} no longer treats the pixel labels as palette colours.
   
   \item \code{plot.ppp}, \code{plot.owin}, \code{plot.im}, \code{plot.psp},
     \code{plot.tess}, \code{plot.layered}:
     New universal argument \code{show.all} determines what happens
   when a plot is added to an existing plot. If \code{show.all = TRUE}
   then everything is plotted, including the main title and colour ribbon.
 
   \item \code{plot.quadratcount}, \code{plot.quadrattest}:
   These functions have now been documented.

   \item \texttt{print.fv}: improved layout.
     
 \item \texttt{pool.envelope}:
   New arguments \texttt{savefuns} and \texttt{savepatterns}.
   Envelopes generated with \texttt{VARIANCE=TRUE} can now be pooled.
   The plot settings of the input data are now respected.

  \item \texttt{ppm}:
    \begin{itemize}
    \item 
      The model-fitting function \texttt{ppm} now accepts 
      a syntax similar to \texttt{lm} or \texttt{glm}, 
      for example \verb!ppm(X ~ Z)!, 
      but still accepts the older syntax \verb!ppm(X, ~Z)!.
      To support both kinds of syntax, the function \texttt{ppm}
      is now generic, 
      with methods for the classes \texttt{formula}, 
      \texttt{ppp} and \texttt{quad}. 
      The \texttt{formula} method handles a syntax like
      \verb!ppm(X ~ Z)! while the
      \texttt{ppp} method handles the old syntax \verb!ppm(X, ~Z)!.
    \item 
      Covariates no longer have to be passed in the argument 
      \texttt{covariates}:
      variable names appearing in the model formula can simply be the names
      of objects in the {\sf R} session.
    \item 
   Can now fit models with 'hybrid' interactions.
 \item 
   New option: \texttt{method = "logi"} for the 'logistic likelihood' method.
 \item 
   New argument \texttt{nd} controls the number of dummy points.
 \item 
   New argument \texttt{eps} determines the spacing between dummy points.
   (also works for related functions \texttt{quadscheme}, 
   \texttt{default.dummy}, ...)
  \item 
    The default quadrature scheme for a point pattern
   has been improved (in the case of a non-rectangular window)
   to remove a possible source of bias.
 \item 
   Confidence intervals for the fitted trend parameters
   can now be obtained using \texttt{confint} .
 \item 
   New argument \texttt{project} determines whether the fitted model
   is forced to be a valid point process.
 \item 
        Interaction objects may now be 'self-starting'
    	i.e. initial parameter estimates can be computed
	from the point pattern dataset.
      \item 
   The spatial trend can now depend on additional parameters.
   This is done by allowing spatial covariate functions
   to have additional parameters: \texttt{function(x, y, ...)}
   where \texttt{...} is controlled by the new argument \texttt{covfunargs}
   to \texttt{ppm}.
 \item 
     The print and summary methods for \texttt{ppm} objects 
     now show standard errors for parameter estimates
     if the model is Poisson.
   \item Covariates can now be tessellations.
 \end{itemize}


\item \item \texttt{ppp}: 
    New argument \texttt{drop} determines whether a 
    data frame of marks with only one column will be
    converted to a vector.

  \item \texttt{ppx}:
   Arguments have changed.
   An object of class \texttt{ppx} may now include 'local' coordinates 
   as well as 'spatial' and 'temporal' coordinates, and marks.

  \item \texttt{predict.ppm}:
    \begin{itemize}
      \item
        Can now calculate the conditional intensity of a model
        relative to any point pattern \texttt{X} 
        (not just the original data pattern).
      \item 
        New argument \texttt{correction} allows choice of edge correction
        when calculating the conditional intensity.
      \item 
        New argument \texttt{interval} allows confidence intervals
        or prediction intervals
        to be calculated.
      \item 
        New argument \texttt{total} allows for prediction of the
        total number of points
        in a specified region.
      \end{itemize}

  \item \texttt{predict.slrm}:
   New argument \texttt{window} 

   \item \texttt{print.ppp}, \texttt{print.summary.ppp}, 
     \texttt{print.owin}, \texttt{print.summary.owin},
     \texttt{print.im}, \texttt{print.summary.im}, \texttt{print.fv},
     \texttt{print.msr}:
   These functions now avoid over-running the text margin
   (i.e.\ they respect \texttt{options('width')} where possible).
   
  \item \texttt{print.ppp}, \texttt{summary.ppp}:
   If the point pattern x was generated by Metropolis-Hastings
   simulation using \texttt{rmh}, then \texttt{print(x)} and 
   \texttt{summary(x)} show 
   information about the simulation parameters.

  \item \texttt{print.ppm}:
   Standard errors for the parameter estimates,
   and confidence intervals for the parameters,
   can now be printed for all Gibbs models 
   (but are printed only for Poisson models by default).
   Now has argument \texttt{what}
   to allow only selected information to be printed.

  \item \texttt{print.summary.ppm}:
   Output gives a more precise description of the fitting method.

 \item \texttt{profilepl}:
   Accelerated (typically by a factor of 5).
   Does not generate warnings when some of the candidate models
   have zero likelihood - for example when fitting model with a hard core.
   Can now maximise over trend parameters as well as interaction parameters

  \item \texttt{progressreport}:
   Improved output (also affects many functions which print progress reports)

  \item \texttt{project.ppm}:
     Improved algorithm.
     Now handles terms in the trend formula as well as the interaction.
     The projected point process is now obtained by re-fitting the model,
     and is guaranteed to be the maximum pseudolikelihood fit.

   \item \texttt{psp}: 
        A line segment pattern (object of class 'psp') can now have a 
	data frame of marks. 

  \item \texttt{psst}:
   Argument \texttt{funcorrection} changed to 
   \texttt{funargs} allowing greater flexibility.

  \item \texttt{quad.ppm}: Now accepts \texttt{kppm} objects.
    New argument \texttt{clip}.

  \item \texttt{quadscheme}: 
    Can now generate dummy points from a quasirandom sequence.

  \item \texttt{quadrat.test.splitppp}:
   The result is now a single object of class \texttt{quadrattest}

   \item \texttt{quadrat.test}:
       Can now perform Monte Carlo test as well 
       (for use in small samples where the $\chi^2$ approximation is inaccurate)
        New argument \texttt{alternative} 
        allows choice of alternative hypothesis
        and returns one-sided or two-sided $p$-values as appropriate.
	The print method for \texttt{quadrattest} objects
	now displays information about the quadrats.

  \item \texttt{raster.x}, \texttt{raster.y}, \texttt{raster.xy}:
   These functions have a new argument \texttt{drop}

  \item \texttt{rDiggleGratton}, \texttt{rDGS}, \texttt{rHardcore},
        \texttt{rStrauss}, \texttt{rStraussHard}:
        By default the point pattern is now generated on
	a larger window, and trimmed to the original window.
	New argument \texttt{expand=TRUE}.
        
  \item \texttt{redwoodfull} (Full redwood data):
    The function \verb!redwoodfull.extra$plot()! has been renamed 
    \texttt{plotit} 
    for conformity with other datasets, and improved.

  \item \texttt{relrisk}: 	
       New argument \texttt{casecontrol} determines whether a bivariate
       point pattern should be treated as case-control data.
       New argument \texttt{case} allows the user to specify which mark value
       corresponds to the cases in a case-control dataset.

 \item \texttt{rescale}:
   \begin{itemize}
   \item 
  If scale argument \texttt{s} is missing, then the data are rescaled
  to native units. For example if the current unit is 0.1 metres, 
  coordinates will be re-expressed in metres.
\item New argument \texttt{unitname} makes it possible to change the name of
  the unit of length.
   \end{itemize}

  \item \texttt{residuals.ppm}:
       New arguments \texttt{new.coef} and \texttt{quad} for advanced use
       (make it possible to compute residuals from a
        modified version of the fitted model.)
    	The value returned by \texttt{residuals.ppm} is now an object 
	of class \texttt{msr}. It can be plotted directly.

   \item \texttt{rhohat}:
      Now has arguments \texttt{eps}, \texttt{dimyx} 
      to control pixel resolution.
      If \texttt{covariate = "x"} or \texttt{"y"}, 
      the resulting object has the same
      \texttt{unitname} as the original point pattern data.
      Estimation can now be performed using local likelihood fitting
      with the \texttt{locfit} package, or using kernel smoothing.

  \item \texttt{rlabel}:
   Now works for \texttt{lpp}, \texttt{pp3}, \texttt{ppx} objects.

  \item \texttt{rlinegrid}, \texttt{rpoisline}:
    These functions now handle binary mask windows.
    
  \item \texttt{rmh}:
      If \texttt{track=TRUE}, 
      the history of transitions of the Metropolis-Hastings
      algorithm is saved and returned.

  \item \texttt{rmh}, \texttt{rmhstart}:
   The initial state ('\texttt{start}') can now be missing or null.

 \item \texttt{rmh}, \texttt{rmhcontrol}:
  It is now possible to save every $k$-th iteration of the Metropolis-Hastings
  algorithm. The arguments \texttt{nsave} and \texttt{nburn} 
  may be given to \texttt{rmh} or to \texttt{rmhcontrol}. 
  They specify that the point pattern will be saved
  every \texttt{nsave} iterations, after an initial burn-in of 
  \texttt{nburn} iterations.

  \item \texttt{rmh.default}:
   New argument \texttt{snoop} allows the user to activate a visual debugger
   for the Metropolis-Hastings algorithm.

 \item \texttt{rmh.default}:
  \texttt{track} is no longer a formal argument of \texttt{rmh.default}; 
  it is now a parameter of \texttt{rmhcontrol}. 
  However there is no change in usage: 
  the argument \texttt{track} can still be given to \texttt{rmh.default}.

  \item \texttt{rmh.ppm}, \texttt{simulate.ppm}, \texttt{default.expand}:
   For point process models which have a trend depending only on x and y,
   the simulation window is now taken to be the same as the original 
   window containing the data (by default). 
   That is, `expansion' does not take place, by default.
   (In previous versions of spatstat the simulation window was larger
   than the original data window.)
   
  \item \texttt{rmh.ppm}, \texttt{simulate.ppm}:
   The argument sequence for these functions has changed.
   New argument \texttt{expand} allows more explicit control 
   over simulation domain.

  \item \texttt{rmh.ppm}, \texttt{simulate.ppm}, \texttt{rmhmodel.ppm}:
    New argument \texttt{new.coef} allows the user to change the 
    parameters of a fitted model before it is simulated.
   
  \item \texttt{rmhcontrol}:
   The default value of the parameters \texttt{periodic} and \texttt{expand}
   has changed.

  \item \texttt{rmhcontrol}:
   The parameter \texttt{expand} can now be in any format 
   acceptable to \texttt{rmhexpand}.

  \item \texttt{rmh.ppm}, \texttt{rmh.default}, \texttt{simulate.ppm}:
   Any \texttt{rmhcontrol} parameter can now be given directly 
   as an argument to \texttt{rmh.ppm}, \texttt{rmh.default} or 
   \texttt{simulate.ppm}.

  \item \texttt{rNeymanScott}:
   Argument \texttt{rcluster} may now take a different format.

   \item \texttt{rotate}: 
     The user can specify the centre of rotation.

   \item \texttt{rotate.owin}, \texttt{affine.owin}:
       These functions now handle binary pixel masks.
       New argument \texttt{rescue} determines whether 
       rectangles will be preserved.

 
  \item \texttt{rSSI}:
   Performs 'Random Sequential Packing' if \texttt{n=Inf}.

  \item \texttt{runifpointOnLines}, \texttt{rpoisppOnLines}, 
    \texttt{runiflpp}, \texttt{rpoislpp}:
   Can now generate multitype point patterns.

  \item \texttt{rVarGamma}, \texttt{kppm}, \texttt{vargamma.estK}, 
    \texttt{vargamma.estpcf}:
   New argument \texttt{nu.pcf} provides an alternative way to specify
   the kernel shape in the VarGamma model, instead of the existing
   argument \texttt{nu.ker}. Function calls that use the ambiguous argument
   name \texttt{nu} will no longer be accepted.

  \item second order summary functions
   (\texttt{Kest}, \texttt{Lest}, \texttt{Kinhom}, \texttt{pcf.ppp}, 
   \texttt{Kdot}, \texttt{Kcross}, \texttt{Ldot} etc etc)
   These functions now accept \texttt{correction="translation"} as an 
   alternative to \texttt{correction = "translate"}, for consistency.

 \item \code{scan.test}:
   Now handles multiple values of circle radius 'r'.

 \item \texttt{setcov}:
   Can now compute the `cross-covariance' between two regions

 \item \texttt{shift}:
   Argument \texttt{vec} can be in various formats.
   
 \item \texttt{simulate.ppm}:
  New argument \texttt{singlerun} determines whether the simulated patterns
  are generated using independent runs of the Metropolis-Hastings algorithm
  or are obtained by performing one long run of the algorithm and saving
  every k-th iteration.

  \item \texttt{simulate.ppm}, \texttt{simulate.kppm}:
   The total computation time is also returned.

  \item \texttt{simulate.kppm}:
   Now catches errors (such as 'insufficient memory').

  \item \texttt{slrm}:
   Confidence intervals for the fitted trend parameters
   can now be obtained using \texttt{confint} 
   
  \item \texttt{smooth.fv}:
   Further options added.

  \item \texttt{smooth.ppp}:
   Accelerated, when there are several columns of marks.
   Bandwidth \texttt{sigma} is now selected by least-squares cross-validation.

  \item \texttt{smooth.ppp}:
   Now handles bandwidths equal to zero (by invoking \texttt{nnmark})

   \item \texttt{smooth.ppp}, \texttt{smooth.fv}, \texttt{smooth.msr}:
    These functions are now 'Deprecated' in favour of
    the methods \texttt{Smooth.ppp}, \texttt{Smooth.fv}, 
    \texttt{Smooth.msr} respectively.

    \item \texttt{Smooth.ppp}: 
      \code{sigma} is now a formal argument of \code{Smooth.ppp}
      
 \item \texttt{Softcore}:
  Improved numerical stability.
  New argument \texttt{sigma0} for manual control over rescaling.

  \item \texttt{spatstat.options}:
    \begin{itemize}
    \item New option \texttt{nvoxel}.
    \item New option \texttt{print.ppm.SE} controls whether standard errors 
   and confidence intervals are printed for all Gibbs models,
   for Poisson models only, or are never printed.
 \item 
   New option \texttt{project.fast} allows a faster shortcut for \texttt{project.ppm}.
 \item 
     New options \texttt{rmh.p}, \texttt{rmh.q}, \texttt{rmh.nrep} 
     determine the default values
     of the parameters \texttt{p}, \texttt{q} and \texttt{nrep} 
     of the Metropolis-Hastings algorithm.
     See \texttt{rmhcontrol}.
   \item 
     New parameter \texttt{n.bandwidth}
   \item New parameter \texttt{monochrome} switches all plots
     from colour to greyscale.
    \end{itemize}

 \item \texttt{square}
  Now accepts vectors of length 2.

  \item \texttt{str}
   This generic function (for inspecting the internal structure of an object)
   now produces sensible output for objects of class 
   \texttt{hyperframe}, \texttt{ppx}, \texttt{lpp}.

   \item \texttt{stratrand}, \texttt{overlap.owin}, 
     \texttt{update.slrm}, \texttt{edge.Trans}, \texttt{edge.Ripley}:
    These already-existing functions are now documented.

  \item \texttt{summary.ppm}:
   Now reports whether the spatial coordinates have been rounded.
   Improved behaviour when the model covariates are a data frame.

   \item \texttt{superimposePSP}: 
      This function is now deprecated in favour of \texttt{superimpose}

   \item \texttt{superimpose}:
      Now handles data frames of marks.

  \item \texttt{union.owin}:
   It is now guaranteed that if \texttt{A} is a subset of \texttt{B}, 
   then \texttt{union.owin(A,B)=B}.
   Now handles a single argument: \texttt{union.owin(A)} returns \texttt{A}.

   \item \code{varblock}:
      Ugly legends have been repaired.
      
  \item \texttt{vcov.ppm}:
   This function now handles all Gibbs point process models.
   New argument \texttt{matrix.action} controls what happens when
   the matrix is ill-conditioned.

  \item \texttt{vcov.slrm}:
   Can now calculate correlation matrix or Fisher information matrix
   as well as variance-covariance matrix.

  \item \texttt{with.fv}:
   Argument \texttt{drop} replaced by new argument \texttt{fun}
   (with different interpretation).
   New argument \texttt{enclos} allows evaluation in other environments.

 \item \verb![.fv!
   Now handles the argument 'drop'.
   Improved behaviour when plotted.

  \item \verb![.im! and \verb![<-.im!
   New argument 'j' allows any type of matrix indexing to be used.

  \item \verb![.im!
   Default behaviour changed in the case of a rectangular subset.
   New argument 'rescue' can be set to TRUE to reinstate previous behaviour.

  \item \verb![.lpp!
   Subset index may now be a window (class 'owin')

  \item \verb![.msr!
   Now handles character-valued indices. 

  \item \verb![.psp!
   Now handles binary mask windows.

 \end{itemize}

\section{Serious Bugs Fixed}

<<echo=FALSE,results=hide>>=
nbugs <- nrow(news(grepl("^BUG", Category), 
                   package="spatstat"))
nbugssince <- nrow(news(Version > "1.21-2" & grepl("^BUG", Category), 
                   package="spatstat"))
@ 

Hundreds of bugs have been detected and fixed in \spst\ 
since the version covered by the workshop notes \cite{badd10wshop}. 
Bugs that may have affected the user are listed in the 
package \texttt{NEWS} file. To read all these bug reports, type
<<eval=FALSE>>=
news(grepl("^BUG", Category), package="spatstat")
@ 
which currently produces a list of \Sexpr{nbugs} bugs,
of which \Sexpr{nbugssince} were detected after publication of the
workshop notes.

Following is a list of the {\bf most serious bugs} only, in order
of potential impact.

\newcommand\bugger[4]{%
  \\  {} %
  {\small (Bug introduced in \texttt{spatstat {#1}}, {#2}; %
    fixed in \texttt{spatstat {#3}}, {#4})}%
}
  
\begin{itemize}
\item \texttt{nncross.ppp}:
  
  Results were completely incorrect if $k > 1$.
  \bugger{1.31-2}{april 2013}{1.35-0}{december 2013}

\item \texttt{nncross.pp3}:
  Results were completely incorrect in some cases.
  \bugger{1.32-0}{august 2013}{1.34-0}{october 2013}

\item \texttt{rmh}:
  
   \begin{itemize}
   \item Simulation was completely incorrect in the case of 
     a multitype point process with an interaction that does not depend
     on the marks, such as \verb!ppm(betacells, ~marks, Strauss(60))!
     due to a coding error in the \texttt{C} interface.
     \bugger{1.22-3}{march 2010}{1.22-3}{june 2011}
   \item 
     Simulation of the Area-Interaction model was completely incorrect.
     \bugger{1.23-6}{october 2011}{1.31-0}{january 2013}
   \item 
     Simulation of the Geyer saturation process was completely incorrect.
     \bugger{1.31-0}{january 2013}{1.31-1}{march 2013}
   \item 
     Simulation of the Strauss-Hard Core process was partially incorrect,
     giving point patterns with a slightly lower intensity.
     \bugger{1.31-0}{january 2013}{1.37-0}{may 2014}
   \item 
     Simulation of the Geyer saturation process was 
     incorrectly initialised, so that the results of a short run 
     (i.e. small value of \texttt{nrep}) were incorrect, 
     while long runs were correct.
     \bugger{1.17-0}{october 2009}{1.31-1}{march 2013}
   \end{itemize}
   
\item \texttt{nncross}, \texttt{distfun}, \texttt{AreaInter}:
  Results of \texttt{nncross} were possibly incorrect 
  when \code{X} and \code{Y} did not have the same window. 
  This bug affected values of \texttt{distfun} and may also 
  have affected ppm objects with interaction \texttt{AreaInter}.
  \bugger{1.9-4}{june 2006}{1.25-2}{january 2012}

\item \texttt{envelope.ppm}:
   If the model was an inhomogeneous Poisson process, 
   the resulting envelope object was incorrect
   (the simulations were correct, but the envelopes were calculated
   assuming the model was CSR). 
   \bugger{1.23-5}{september 2011}{1.23-6}{october 2011}

 \item \texttt{leverage.ppm}, \texttt{influence.ppm}, \texttt{dfbetas.ppm}:
   Results were incorrect for non-Poisson processes.  
   \bugger{1.25-0}{december 2011}{1.34-0}{october 2013}
   
\item \texttt{rVarGamma}:
   Simulations were incorrect; they were generated using the wrong value
   of the parameter \texttt{nu.ker}.  
   \bugger{1.25-0}{december 2011}{1.35-0}{december 2013}

 \item \texttt{rCauchy}:
   Simulations were incorrect; they were generated using the wrong value
   of the parameter \texttt{omega}.
   \bugger{1.25-0}{december 2011}{1.25-2}{january 2012}

 \item \texttt{kppm}, \texttt{matclust.estpcf}, \texttt{pcfmodel}:
    The pair correlation function of the M\'atern Cluster Process
    was evaluated incorrectly at distances close to 0.
    This could have affected the fitted parameters 
    in \texttt{matclust.estpcf()} or \texttt{kppm(clusters="MatClust")}.
    \bugger{1.20-2}{august 2010}{1.33-0}{september 2013}
    
 \item \texttt{ppm}:
   Results were incorrect for the Geyer saturation model
   with a non-integer value of the saturation parameter \texttt{sat}.
   \bugger{1.20-0}{july 2010}{1.31-2}{april 2013}
   
 \item \texttt{lppm}:
   For multitype patterns, the fitted model was completely incorrect
   due to an error in constructing the quadrature scheme.
   \bugger{1.23-0}{july 2011}{1.30-0}{december 2012}
   
 \item \texttt{Geyer}:
   For point process models with the \texttt{Geyer} interaction, 
   \texttt{vcov.ppm} and \texttt{suffstat} sometimes gave incorrect answers.
   \bugger{1.27-0}{may 2012}{1.30-0}{december 2012}
   
 \item \texttt{vcov.ppm}, \texttt{suffstat}:
   These functions sometimes gave incorrect values 
   for marked point process models.   
   \bugger{1.27-0}{may 2012}{1.29-0}{october 2012}
   
 \item \texttt{linearK}, \texttt{linearKinhom}:
   If any data points were located exactly at a vertex of the 
   linear network, the weights for Ang's correction were incorrect, 
   due to numerical error. This sometimes produced infinite 
   or NA values of the linear $K$ function.  
   \bugger{1.23-0}{july 2011}{1.27-0}{may 2012}

 \item \texttt{Kinhom}:
   the results were not renormalised (even if \texttt{renormalise=TRUE})
   in some cases.
   \bugger{1.21-0}{december 2010}{1.37-0}{may 2014}
     
 \item \texttt{predict.ppm}
   Calculation of the conditional intensity omitted the edge correction
   if \texttt{correction='translate'} or \texttt{correction='periodic'}. 
   \bugger{1.17-0}{october 2009}{1.31-3}{may 2013}
   
 \item \texttt{scan.test}
   Results were sometimes incorrect due to numerical instability
   (a 'Gibbs phenomenon').    
   \bugger{1.24-1}{october 2011}{1.26-1}{april 2012}

 \item \texttt{selfcrossing.psp}:
   $y$ coordinate values were incorrect.   
   \bugger{1.23-2}{august 2011}{1.25-3}{february 2012}
     
 \item \texttt{predict.slrm}:
   Results of \texttt{predict(object, newdata)} were incorrect 
   if the spatial domain of \texttt{newdata}
   was larger than the original domain.
   \bugger{1.21-0}{november 2010}{1.25-3}{february 2012}
   
 \item \texttt{Lest}:
   The variance approximations (Lotwick-Silverman and Ripley)
   obtained with \texttt{var.approx=TRUE} were incorrect for \texttt{Lest}
   (although they were correct for \texttt{Kest}) due to a coding error.
   \bugger{1.24-1}{october 2011}{1.24-2}{november 2011}
 
 \item \texttt{bw.diggle}:
   Bandwidth was too large by a factor of 2.
   \bugger{1.23-4}{september 2011}{1.23-5}{september 2011}
 
 \item pair correlation functions (\texttt{pcf.ppp}, \texttt{pcfdot}, 
    \texttt{pcfcross} etc:)
    The result had a negative bias at the maximum $r$ value,
    because contributions to the pcf estimate from interpoint distances
    greater than \texttt{max(r)} were mistakenly omitted. 
    {\small (Bugs fixed in \texttt{spatstat 1.35-0}, december 2013)}
    
 \item \texttt{Kest}, \texttt{Lest}:
   Gave incorrect values in very large datasets, due to numerical overflow.
   `Very large' typically means about 1 million points in a random pattern, 
   or 100,000 points in a tightly clustered pattern.
   [Overflow cannot occur unless there are at least 46,341 points.]
   
 \item \texttt{bw.relrisk}:
    Implementation of \texttt{method="weightedleastsquares"} was incorrect
    and was equivalent to \texttt{method="leastsquares"}.
    \bugger{1.21-0}{november 2010}{1.23-4}{september 2011}
  
\item \texttt{bdist.tiles}
   Values were incorrect in some cases due to numerical error.
    {\small (Bug fixed in \texttt{spatstat 1.29-0}, october 2012)}
   
\item polygon geometry
    The point-in-polygon test gave the wrong answer in some boundary cases.
    {\small (Bug fixed in \texttt{spatstat 1.23-2}, august 2011)}
    
\end{itemize}


\begin{thebibliography}{1}
\bibitem{badd10wshop}
A.~Baddeley.
\newblock Analysing spatial point patterns in {{R}}.
\newblock Technical report, CSIRO, 2010.
\newblock Version 4. Available at {\texttt{www.csiro.au/resources/pf16h.html}}.
\end{thebibliography}
 
\end{document}
