# Performs least-cost path analysis based on a friction matrix

`gl.genleastcost.Rd`

This function calculates the pairwise distances (Euclidean, cost path
distances and genetic distances) of populations using a friction matrix and
a spatial genind object. The genind object needs to have coordinates in the
same projected coordinate system as the friction matrix. The friction
matrix can be either a single raster of a stack of several layers. If a
stack is provided the specified cost distance is calculated for each layer
in the stack. The output of this function can be used with the functions
`wassermann`

or
`lgrMMRR`

to test for the significance of a
layer on the genetic structure.

## Usage

```
gl.genleastcost(
x,
fric.raster,
gen.distance,
NN = NULL,
pathtype = "leastcost",
plotpath = TRUE,
theta = 1,
verbose = NULL
)
```

## Arguments

- x
A spatial genind object. See ?popgenreport how to provide coordinates in genind objects [required].

- fric.raster
A friction matrix [required].

- gen.distance
Specification which genetic distance method should be used to calculate pairwise genetic distances between populations ( 'D', 'Gst.Nei', 'Gst.Hedrick') or individuals ('Smouse', 'Kosman', 'propShared') [required].

- NN
Number of neighbours used when calculating the cost distance (possible values 4, 8 or 16). As the default is NULL a value has to be provided if pathtype='leastcost'. NN=8 is most commonly used. Be aware that linear structures may cause artefacts in the least-cost paths, therefore inspect the actual least-cost paths in the provided output [default NULL].

- pathtype
Type of cost distance to be calculated (based on function in the

`gdistance`

package. Available distances are 'leastcost', 'commute' or 'rSPDistance'. See functions in the gdistance package for futher explanations. If the path type is set to 'leastcost' then paths and also pathlength are returned [default 'leastcost'].- plotpath
switch if least cost paths should be plotted (works only if pathtype='leastcost'. Be aware this slows down the computation, but it is recommended to do this to check least cost paths visually.

- theta
value needed for rSPDistance function. See

`rSPDistance`

in package`gdistance`

[default 1].- verbose
Verbosity: 0, silent or fatal errors; 1, begin and end; 2, progress log; 3, progress and results summary; 5, full report [default 2, unless specified using gl.set.verbosity].

## Value

Returns a list that consists of four pairwise distance matrices (Euclidean, Cost, length of path and genetic) and the actual paths as spatial line objects.

## References

Cushman, S., Wasserman, T., Landguth, E. and Shirk, A. (2013). Re-Evaluating Causal Modeling with Mantel Tests in Landscape Genetics. Diversity, 5(1), 51-72.

Landguth, E. L., Cushman, S. A., Schwartz, M. K., McKelvey, K. S., Murphy, M. and Luikart, G. (2010). Quantifying the lag time to detect barriers in landscape genetics. Molecular ecology, 4179-4191.

Wasserman, T. N., Cushman, S. A., Schwartz, M. K. and Wallin, D. O. (2010). Spatial scaling and multi-model inference in landscape genetics: Martes americana in northern Idaho. Landscape Ecology, 25(10), 1601-1612.

## Author

Bernd Gruber (bugs? Post to https://groups.google.com/d/forum/dartr)

## Examples

```
if (FALSE) {
data(possums.gl)
library(raster) #needed for that example
landscape.sim <- readRDS(system.file('extdata','landscape.sim.rdata',
package='dartR'))
glc <- gl.genleastcost(x=possums.gl,fric.raster=landscape.sim ,
gen.distance = 'D', NN=8, pathtype = 'leastcost',plotpath = TRUE)
library(PopGenReport)
PopGenReport::wassermann(eucl.mat = glc$eucl.mat, cost.mat = glc$cost.mats,
gen.mat = glc$gen.mat)
lgrMMRR(gen.mat = glc$gen.mat, cost.mats = glc$cost.mats,
eucl.mat = glc$eucl.mat)
}
```