是否可以 运行 spatstat 在多个处理器上运行

is it possible to run spatstat functions on multiple processors

我很想知道 spatat 函数(如信封或 MAD 测试)是否可以 运行 在一台机器上的多个处理器上运行以加快计算速度?有没有文档或教程可以做到这一点?

谢谢。


不幸的是,并行化不是 spatstat 的组成部分, 而是留给用户。对于包络和 MAD 测试最简单 选项可能是 运行 envelope 数量较少 每个核心的实现,然后使用组合结果 pool.envelope。如何并行 运行 envelope 可能取决于你的 设置。一个简单的可能性是使用我知道的 parallel::mclapply 在 linux 上开箱即用,但跨平台更好 CRAN 上的软件包中肯定有替代品:

library(spatstat)
ppplist <- replicate(4, cells, simplify = FALSE)
envlist <- parallel::mclapply(ppplist, spatstat::envelope, savefuns = TRUE, nsim = 10)
envfinal <- do.call(pool, envlist)
envfinal
#> Pointwise critical envelopes for K(r)
#> and observed value for 'X[[i]]'
#> Obtained from 40 simulations of CSR
#> Alternative: two.sided
#> Significance level of pointwise Monte Carlo test: 2/41 = 0.0488
#> .....................................................................
#>      Math.label     Description                                      
#> r    r              distance argument r                              
#> obs  hat(K)[obs](r) observed value of K(r) for data pattern          
#> theo K[theo](r)     theoretical value of K(r) for CSR                
#> lo   hat(K)[lo](r)  lower pointwise envelope of K(r) from simulations
#> hi   hat(K)[hi](r)  upper pointwise envelope of K(r) from simulations
#> .....................................................................
#> Default plot formula:  .~r
#> where "." stands for 'obs', 'theo', 'hi', 'lo'
#> Columns 'lo' and 'hi' will be plotted as shading (by default)
#> Recommended range of argument r: [0, 0.25]
#> Available range of argument r: [0, 0.25]