# RELEASE NOTES ## spatstat 1.41-0 ### 26 February 2015 We thank Ahmed El-Gabbas, Ute Hahn, Aruna Jammalamadaka, Ian Renner, Brian Ripley, Torben Tvedebrink and Sasha Voss for contributions. ### OVERVIEW * Fixed a bug causing a segmentation fault. * Standard errors for kernel estimates of intensity. * Test for segregation. * Tessellations may now have marks. * Nested splitting. * More support for cluster models. Reorganised parametrisation. * Sparse data representation of linear networks. * More support for data on a linear network. * New datasets: 'spiders' and 'dendrite'. * Improvements and bug fixes. * spatstat no longer uses Fortran. * spatstat no longer depends on the package 'scatterplot3d'. * spatstat now imports (rather than 'suggests') the Matrix package. * Nickname: 'Team Australia' ### NEW DATASETS * dendrite Dendritic spines on the dendrite network of a neuron. A point pattern on a linear network. Generously contributed by Aruna Jammalamadaka. * spiders Spider webs on the mortar lines of a brick wall. A point pattern on a linear network. Generously contributed by Sasha Voss. ### NEW FUNCTIONS * segregation.test Test of spatial segregation of types in a multitype point pattern. * clusterfield, clusterkernel Compute the cluster kernel (offspring density) of a cluster process model, or compute the cluster field generated by superimposing copies of the cluster kernel at specified locations. * clusterradius Compute the radius of the support of the offspring density of a cluster process model. * as.linnet.psp Convert a line segment pattern to a linear network by guessing the connectivity using a distance threshold. * iplot.linnet, iplot.lpp Methods for interactive plotting 'iplot' for objects of class lpp and linnet. * Mathematical operations are now supported for pixel images on a linear network. See help(Math.linim) * dirichlet.network, delaunay.network The linear networks formed by the Dirichlet tessellation and Delaunay triangulation. * dirichlet.edges The edges of the Dirichlet tessellation. * selfcut.psp Cut line segments where they cross each other. * vertices.linnet Extract the vertices (nodes) of the linear network. * vertexdegree Compute the degree of each vertex in a linear network. * pixellate.linnet Pixellate a linear network. * subset.hyperframe 'subset' method for class 'hyperframe'. * head.hyperframe, tail.hyperframe 'head' and 'tail' methods for hyperframes. * clickdist Measures the distance between two spatial locations clicked by the user. * solapply, anylapply wrappers for 'lapply' which return a list of class 'solist' or 'anylist'. * Kmark Weighted K-function. Identical to 'markcorrint' and will eventually replace it. * marks.tess, marks<-.tess, unmark.tess: Extract or change the marks associated with the tiles of a tessellation. * quantess Quantile tessellation: divide space into pieces which contain equal amounts of 'stuff'. * nestsplit Nested split * integral New generic function for integrating functions, with methods for 'im', 'msr', 'linim' and 'linfun'. * selfcut.psp Cut line segments where they cross each other * as.function.im Convert a pixel image to a function(x,y). * as.linnet.linim Extract the linear network from a 'linim' object. * pool.fv, pool.anylist New methods for 'pool' * Window.linnet Extract the two-dimensional window containing a linear network. ### SIGNIFICANT USER-VISIBLE CHANGES * linnet, lpp A linear network can now be built in 'sparse matrix' form which requires much less memory. * chicago The Chicago street crimes data are now stored in 'sparse matrix' form. To convert them to non-sparse form, use as.lpp(chicago, sparse=FALSE) * kppm The parametrisation of cluster models has been reorganised. The scale parameter is now always called 'scale'. Results should be backward-compatible. * cauchy.estK, cauchy.estpcf, matclust.estK, matclust.estpcf, thomas.estK, thomas.estpcf, vargamma.estK, vargamma.estpcf The parametrisation of cluster models has been reorganised. The scale parameter is now always called 'scale'. * plot.kppm Also plots the cluster kernel. * density.ppp New argument 'se' allows calculation of standard errors as well. * plot.pp3 Now produces a genuine perspective view. New arguments control the eye position for the perspective view. * Emark, Vmark These functions can now work with multiple columns of marks. * pixellate.psp Can now count the number of segments that intersect each pixel, instead of the total length of intersection. * linfun If g = linfun(f, L), the function f will always be called as f(x,y,seg,tp, ...) It is no longer expected to handle the case where 'seg' and 'tp' are absent. The resulting function g can now be called as g(X) where X is an lpp object, or as g(x,y) or g(x,y,seg,tp) where x,y,seg,tp are coordinates. * tess New argument 'marks' allows marks to be associated with tiles. * anova.lppm Outdated argument 'override' has been removed. * split<-.ppp Preserves the original ordering of the data, if possible. * MultiHard, MultiStrauss, MultiStraussHard, HierStrauss Zero values in the interaction radii are now treated as NA. Improved handling of missing arguments. Printed output now respects options('width') * linearKinhom, linearKcross.inhom, linearKdot.inhom, linearpcfinhom, linearpcfcross.inhom, linearpcfdot.inhom If the intensity argument lambda, lambdaI, lambdaJ, lambdadot is a fitted point process model, the model is first updated by re-fitting it to the data, before computing the fitted intensity. * solutionset The expression will be evaluated using pixel arithmetic (Math.im) if it cannot be evaluated using eval.im. * to.grey Now uses better weights for the R, G, B channels. * rVarGamma Accelerated. * summary.mppm, print.mppm These functions now respect options('width') and spatstat.options('terse'). * print.quadrattest Now respects options('width') and spatstat.options('terse'). * print.pp3 Now respects options('width') * print.lpp Now respects options('width') and options('digits'). * print.owin, print.im, print.summary.owin, print.summary.im Now respect options('width'). * nnmean Now yields a vector, instead of a 1-column matrix, when there is only a single column of marks. * pairdist.psp, crossdist.psp, nndist.psp The option 'method="Fortran"' is no longer supported. The default is 'method="C"'. * [.hyperframe: When a row of data is extracted with drop=TRUE, the result belongs to class 'anylist'. * installation of spatstat A Fortran compiler is no longer needed to compile spatstat from source. * hyperframe class The internal structure of hyperframes has changed slightly: columns of objects are now stored and returned as lists of class 'anylist' or 'solist'. There should be no change in behaviour. * datasets Internal format of the datasets bdspots, bei, clmfires, demohyper, flu, gorillas, heather, Kovesi, murchison, osteo, pyramidal, waterstriders has changed slightly to use the classes 'anylist' and 'solist'. There should be no change in behaviour. * K3est New argument 'ratio'. * spatstat.options New option 'par.points3d' sets default arguments for plot.pp3. * diagnose.ppm New arguments 'xlab', 'ylab', 'rlab' determine the labels in the 4-panel plot, and new argument 'outer' controls their position. The confusing default value for 'compute.sd' has been changed. * iplot.layered New argument 'visible' controls which layers are initially visible. * plot.lpp New argument 'show.window' controls whether to plot the containing window. * textstring Any number of spatial locations (x,y) can be specified, with a corresponding vector of text strings. * plot.hyperframe New argument 'mar' * plot.linnet New argument 'do.plot' * summary.hyperframe Improved output. * eval.linim Improved scoping rules. * pixellate.owin Accelerated. * summary.linnet Now prints more information, and respects options('digits'). * rmpoispp, rmpoint The vector of possible types of points will default to the 'names' vector of the argument 'lambda', 'n', or 'f' where appropriate. * rpoislpp Argument 'L' can be omitted when lambda is a 'linim' or 'linfun' * simulate.ppm, simulate.kppm, simulate.lppm, simulate.slrm New argument 'drop': if nsim = 1 and drop=TRUE, the result is a point pattern rather than a list containing one point pattern. * runifdisc, runifpoint, rpoint, rpoispp, rmpoint, rmpoispp, rMaternI, rMaternII, rSSI, rPoissonCluster, rGaussPoisson, rstrat, rsyst, rcell, rthin, rNeymanScott, rMatClust, rThomas, rCauchy, rVarGamma New argument 'drop' * spatstat.options New option 'units.paren' controls the type of parenthesis enclosing the explanatory text about the unit of length, in print.ppm, plot.fv, etc. * closepairs, crosspairs New option: what="ijd" returns only the indices i, j and the distance d * rCauchy, rMatClust, rNeymanScott, rPoissonCluster, rThomas, rVarGamma Argument names have changed. ### BUG FIXES 1. sumouter A segmentation fault could occur if any data were NA. Fixed. 2. simulate.kppm Simulation failed for log-Gaussian Cox processes (in simulate.kppm only) with an error message from the RandomFields package. Fixed. 3. ppm, predict.ppm, profilepl Crashed sometimes with message "interaction evaluator did not return a matrix". Fixed. 4. lppm step() did not work correctly on 'lppm' objects. Fixed. 5. quadscheme If quadscheme() was called explicitly, with the stipulated number of tiles exceeding the number of dummy points given, then the quadrature weights were sometimes vastly inflated - total quadrature weight was much larger than window area. Spotted by Ian Renner. Fixed. 6. predict.rhohat Result was incorrect for data on a non-rectangular window (and a warning was issued about incorrect vector length). Fixed. 7. Math.im Unary operators did not work (e.g."-x") Fixed. 8. density.ppp Crashed when at="points" if the dataset had exactly 1 point. Fixed. 9. rSSI Crashed if nsim > 1. Fixed. 10. influence.ppm, leverage.ppm, dfbetas.ppm Crashed or issued a warning if any quadrature points had conditional intensity zero under the model (negative infinite values of the sufficient statistic). Fixed. 11. clickppp, clickpoly Did not work correctly in the RStudio display device. Fixed. 12. Iest Ignored the arguments 'r' and 'eps'. Fixed. 13. markvario Result was garbled, when X had more than one column of marks. Fixed. 14. rMatClust, rVarGamma, rCauchy, rNeymanScott Result was a list, but not a 'solist', when nsim > 1. Fixed. 15. print.mppm, summary.mppm, subfits Crashed if a Poisson interaction was implied but not given explicitly. Fixed. 16. Kest Crashed if ratio=TRUE and the window was a rectangle. Fixed. 17. anova.ppm Crashed sometimes with message 'models were not all fitted to the same size of dataset'. (This occurred if there were quadrature points with conditional intensity equal to zero in some models but not in all models.) Fixed. 18. vcov.kppm Occasionally ran out of memory. Fixed. 19. as.linim.linfun Erroneously converted the pixel values to numeric values. Fixed. 20. as.owin.layered Ignored layers with zero area. Fixed. 21. plot.ppm Paused the plot between frames even when there was only one frame. Fixed. 22. plot.layered Did not allocate space for legends of 'lpp' objects. Fixed. 23. plot.lpp Ignored symbolmap arguments like 'cex' and confused the arguments 'col' and 'cols'. Fixed. 24. plot.diagppm Ignored add=TRUE in some cases. Fixed. 25. iplot.layered Did not handle 'diagramobj' objects correctly. Fixed. 26. plot.yardstick Changed arguments.