# 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.