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

时间:2017-09-13 09:15:09

标签: spatstat

我很高兴知道是否可以在机器上的多个处理器上运行像信封或MAD测试这样的spastat函数来加速计算?是否有任何文件或教程可以做到这一点?

谢谢。

1 个答案:

答案 0 :(得分:0)


不幸的是,并行化不是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]