RELEASE NOTES spatstat 1.8-6 23 February 2005 We thank Agnes Gault, Mandy Hering and Mark Stevenson for contributions. OVERVIEW Many bugs in the handling of empty point patterns have been fixed. Various minor improvements are introduced. NEW FUNCTIONS unique.ppp duplicated.ppp new methods for `unique' and `duplicated' for point patterns. These make it possible to identify and remove any duplicated points in a point pattern. multiplicity.ppp Counts the number of duplicates of each point in a point pattern. dilate.owin performs morphological dilation of a window (compare erode.owin) IMPROVEMENTS/ENHANCEMENTS empty point patterns In spatstat, a point pattern object is allowed to be empty (i.e. to contain no points). Such patterns are occasionally generated in simulations. In this release we have improved the handling of empty patterns throughout spatstat, and fixed several bugs [1]-[5] which occurred with empty patterns. diagnose.ppm plot.diagppm plot.im persp.im contour.im These functions now pay (more) attention to their "..." arguments which modify the plot behaviour. qqplot.ppm Now prints some diagnostic information about the simulated point patterns. summary.ppp Prints a message if the point pattern contains duplicated points. BUGS [1] ppm If a pairwise interaction model was fitted to an empty point pattern, ppm() crashed with the message "Error in apply(POT, c(2, 3), sum): dim(X) must have a positive length". This was a bug in pairwise.family. Fixed. [2] qqplot.ppm Sometimes crashed with the error message "Error in apply(POT, c(2, 3), sum): dim(X) must have a positive length". This was an instance of bug [1]. It occurred randomly, when one of the simulated point patterns was empty. Eliminated. [3] qqplot.ppm In some cases the simulated patterns were ALL empty. This is a quirk of the simulation method. The default behaviour of qqplot.ppm is to simulate patterns on an expanded window (specified through the argument `control') in order to avoid edge effects. The trend is extrapolated over this expanded window. If the trend is strongly inhomogeneous, the extrapolated trend may have very large (or even infinite) values. This causes the simulation algorithm to produce empty patterns. This problem was most likely to occur when the original data were in a non-rectangular window. In that case the default expansion window (computed by default.expand) was much larger than the original window. We have changed the default expansion window for non-rectangular windows, so that the problem is now very unlikely to occur. The problem may still occur in extreme cases. qqplot.ppm will now issue a warning when it occurs. The only way to suppress this problem entirely is to prohibit the expansion of the window, by setting the `control' argument to qqplot.ppm, e.g. qqplot.ppm(....., control=list(nrep=1e6, expand=1)) where `expand=1' means there will be no expansion. [4] print.ppp, summary.ppp, summary.quad Generated an obscure error message when the point pattern is empty. This was a bug in summary.quad. Fixed. [5] ppm If a uniform Poisson model was fitted to an empty point pattern, the fitted model had $maxlogpl=NaN. Fixed. [6] plot.im Refused to plot an image containing logical values. Fixed. [7] anova.ppm Erroneously complained that `some models were not fitted with use.gam=TRUE' when one of the models was the uniform Poisson process. Fixed. [8] density.psp Yielded an image containing only NA's, if one of the line segments had zero length. Fixed. [9] envelope Did not correctly handle the argument 'r'. Fixed.