agents.map
An attribute of the agents painted on their parcels: each cell takes the value of the agent whose id is the cell's parcel (missing where none).
| Input | Type | What it is |
agentsrequired | agents | agents with an id |
parcelsrequired | map | the parcel id of each cell |
| Output | Type | What it is |
map | map | the attribute of each cell's agent |
| Setting | Type | What it is |
columnrequired | text | the attribute |
agents.parcels
An agent per parcel of a map of parcel ids (its cells sharing an id): the columns id and cells (its size), and for every other map input (any name) the mean of the map over the parcel (name). Parcels in increasing order of id.
| Input | Type | What it is |
parcelsrequired | map | the parcel id of each cell (missing: no parcel) |
| Output | Type | What it is |
agents | agents | an agent per parcel |
agents.summary
The number of agents and the sum and mean of each attribute (a row), to collect along a loop.
| Input | Type | What it is |
agentsrequired | agents | the agents |
| Output | Type | What it is |
table | table | n, then _sum and _mean |
agents.table
Agents from a table written in the model (macro agents: countries, markets): agents is a list of objects of numbers, one per agent, or the input table.
| Input | Type | What it is |
table | table | a table, a row per agent |
| Output | Type | What it is |
agents | agents | the agents |
| Setting | Type | What it is |
agents | any | [{"id": 1, "population": 1e6, ...}, ...] |
agents.update
The agents' behaviour at a step: rules, lines attribute = expression applied in order (each line sees the lines before), over the agents' attributes and the node's number inputs (any name: the step, a price...): map algebra's expressions, if then else, functions; an attribute may be new.
| Input | Type | What it is |
agentsrequired | agents | the agents |
| Output | Type | What it is |
agents | agents | the agents after the rules |
| Setting | Type | What it is |
rulesrequired | text | e.g. wealth = wealth + income - costs; farmer = wealth > 100 |
cars.step
One step of PLUS's CARS: iterations from the current map until every class has the cells of the step's demand, each free cell giving each class the probability of growth x neighbourhood x an adaptive coefficient (random seeds where no neighbour has the class), a roulette wheel picking the class and a decaying threshold deciding the change.
| Input | Type | What it is |
landscaperequired | map | the map at the start of the step |
probabilityrequired | stack | the growth probability of each class (0-1) |
demand | demand | the cells of each class at each step (plus.demand) |
regional | regional | or per region (plus.demand of a regional demand) |
steprequired | integer | the step (1, 2...) |
seedrequired | integer | the seed of the simulation |
restrictions | map | cells that keep their class (non-zero) |
| Output | Type | What it is |
landscape | map | the map at the end of the step |
info | table | iterations, convergence, gap and cells of each class |
| Setting | Type | What it is |
weights | any | neighbourhood weight of each class, 0-1 (1) |
seeds | any | patch generation threshold of each class, 0-1 (0.1) |
decay | number | decay factor of the threshold, (0, 1] (0.9) |
step_size | number | gap reduction below which the threshold decays (500) |
window | integer | side of the neighbourhood, odd (3) |
max_iter | integer | iterations per step (5000) |
allowed | any | 0/1 conversion matrix in the demand's class order |
clumondo.ages
The years each cell has had its land system at the start: the given map (missing cells counted 1), or rand() % max_age + 1 per cell from the runtime generator seeded with the seed (CLUMondo's random ages), else 1.
| Input | Type | What it is |
landscaperequired | map | the map at the start |
history | map | the years each cell has had its system |
seed | integer | the seed of the random ages |
| Output | Type | What it is |
age | map | the ages to carry along the years |
| Setting | Type | What it is |
max_age | integer | random ages from 1 to max_age |
clumondo.step
One year of CLUMondo: the suitability of each land system (logistic regressions in floats, or given maps) with its neighbourhood functions and location preferences, then the allocation that meets the demand for goods and services (conversion resistances, the conversion matrix with its codes, ages). stop is true when the year has no solution (CLUMondo stops there: use it as the loop's until).
| Input | Type | What it is |
landscaperequired | map | the map of land systems at the start of the year |
agerequired | map | the years each cell has had its system (clumondo.ages) |
elasticityrequired | any | the demand's iteration variables (zeros at the start) |
steprequired | integer | the year (1, 2...) |
model | glm | logistic regressions of the systems |
drivers | stack | their drivers |
suitability | stack | or the suitability of each system |
restrictions | map | cells that keep their system (non-zero) |
allow | stack | the conversion maps (codes 2, 3... of the matrix) |
preferences | stack | the location preferences' maps |
| Output | Type | What it is |
landscape | map | the map at the end of the year |
age | map | the ages |
elasticity | any | the iteration variables for the next year |
stop | bool | whether the year had no solution |
info | table | iterations, deviations, supply and cells of each system |
| Setting | Type | What it is |
settingsrequired | any | { systems, services, supply, demand, order, weights, resistance, allowed, deviation, mean_deviation, max_deviation, speed, max_loops, ... } as landschaft's Model.save writes them |
crafty.allocate
One step of CRAFTY's competition for land between agent functional types (AFTs): production of services from the cells' capitals, the value of unmet demand, giving up and taking over. The land map holds the AFT of each cell (1, 2... in the order of afts; 0 unmanaged).
| Input | Type | What it is |
landrequired | map | the AFT of each cell (0: unmanaged; missing: outside) |
capitalsrequired | stack | the capitals of the cells, 0 to 1, by name |
demandrequired | table | the demand of each service (a column each), a row per step |
steprequired | integer | the step (its row of the demand) |
seedrequired | integer | the seed |
| Output | Type | What it is |
land | map | the AFT of each cell after the step |
cover | map | the land cover class of each cell's AFT |
info | table | a row per service (its column in the demand, from 0): demand, supply before and after the step |
| Setting | Type | What it is |
aftsrequired | any | [{name, class, production: {service: p}, sensitivity: {capital: e}, giving_up, giving_in}, ...] |
services | any | the services and the demand's column of each ({"food": "food_sum"}; default: every column) |
search | number | the share of cells offered each step (0.1) |
giving_up_rate | number | the chance a manager below its giving-up threshold leaves at a step (0.1) |
demand.from_maps
The cells of each class at each step, interpolated and extrapolated linearly from observed maps (lulcc's approxExtrapDemand): negative areas set to 0, every step rounded to whole cells that add up to the cells of the first map.
| Input | Type | What it is |
mapsrequired | stack | the observed maps, one band per date |
| Output | Type | What it is |
demand | demand | the demand |
steps | integer | its steps (the dates after the first) |
| Setting | Type | What it is |
times | any | the date of each map (default: the band names) |
out_times | any | the dates of the demand (default: every whole date) |
demand.regional
A demand per region (municipalities, biomes, basins...): each region's cells meet its own demand, cells of no region keep their class. The demand of a region is a table of cells per class and step (CLUE-S, ordered allocation, CARS) or a Markov chain (Expander and Patcher, CARS).
| Input | Type | What it is |
regionsrequired | map | the region id of each cell |
| Output | Type | What it is |
regional | regional | the demand of each region |
steps | integer | their steps |
| Setting | Type | What it is |
idsrequired | any | the region ids |
demandsrequired | any | per id: { table = { classes, rows, times } } or { markov = { classes, single, multi, steps } } |
demand.table
A demand given as a table: classes and one row of cells per step (the first the start).
| Output | Type | What it is |
demand | demand | the demand |
steps | integer | its steps |
| Setting | Type | What it is |
tablerequired | any | { classes = [...], rows = [[...], ...], times = [...] } |
dinamica.continuous_patcher
Dinamica EGO's Patcher of a continuous state (PatcherContinuousState), landschaft's ContinuousPatcher: new patches (logging, clearing, harvest) that take the stock of their cells (biomass, carbon, timber) until a quota is met. Seeds drawn among the cells with stock and probability ranked from the highest (prune_factor x quota of stock), in proportion to the probability; lognormal patch sizes grown as the Patcher's.
| Input | Type | What it is |
stockrequired | map | the stock of each cell (per hectare, cell or area unit: unit) |
probabilityrequired | map | the probability of each cell (no value or <= 0: never) |
quotarequired | number | the stock to take, in the stock's units times the area unit |
step | integer | the step of a simulation (1, 2...; none: the seed as is) |
seed | integer | the seed (1) |
| Output | Type | What it is |
stock | map | the stock left (0 where taken) |
probability | map | the probability, 0 where taken |
taken | map | the stock taken from each cell |
patch | map | the patch of each cell taken (1, 2...), 0 elsewhere |
info | table | quota, taken, remaining (negative: exceeded), patches, cells |
| Setting | Type | What it is |
mean | number | the mean patch size, in unit (1) |
variance | number | the variance of the patch sizes (0) |
isometry | number | 0 single cells, 1 the probabilities, 2 compact (1) |
unit | text | of the patch sizes and the stock's area: hectares (default, Dinamica's), cells or area |
prune_factor | number | the stock ranked, times the quota (10) |
window | any | the neighbour window of growth [rows, columns] ([3, 3]) |
dinamica.cost_map
The cost of reaching every cell from the nearest source over a friction surface, Dinamica EGO's CalcCostMap (landschaft's friction_cost): a step into a cell costs its friction (x sqrt 2 on a diagonal), 8 neighbours, Dijkstra's sums; and the direction of each cell's predecessor (1 NW, 2 N, 3 NE, 4 E, 5 SE, 6 S, 7 SW, 8 W; 0 at the sources, 255 unreached).
| Input | Type | What it is |
sourcesrequired | map | the sources (a value other than 0) |
frictionrequired | map | the effort to cross each cell (> 0; no value: impassable) |
| Output | Type | What it is |
cost | map | the cost (no value where unreached) |
direction | map | the predecessors' directions |
| Setting | Type | What it is |
diagonal | bool | diagonal steps cost sqrt(2) times more (default true) |
relative | bool | frictions per map unit, times the cell size |
dinamica.destinations
Cells drawn by attraction in quadrants of a map, Dinamica EGO's CalcDestinationMap (landschaft's destinations): in each of the horizontal x vertical parts, up to per_quadrant cells in proportion to their attraction, a draw closer than min_distance to an earlier one drawn again.
| Input | Type | What it is |
attractionrequired | map | how attractive each cell is (no value or <= 0: never) |
seed | integer | the seed (1) |
| Output | Type | What it is |
map | map | the attraction of the destinations, no value elsewhere |
| Setting | Type | What it is |
quadrants | any | [horizontal, vertical] divisions ([1, 1]) |
per_quadrant | integer | destinations per quadrant (1) |
min_distance | number | between destinations, map units (0) |
max_attempts | integer | draws of a destination (15) |
dinamica.pathways
Paths from source cells to a network, Dinamica EGO's CalcPathwayMap (landschaft's pathways): from each source (row order) to the cheapest of its 8 neighbours until a cell of cost <= 0 (the network), or along the directions of a cost map until the network.
| Input | Type | What it is |
networkrequired | map | the network (a value other than 0) |
sourcesrequired | map | where paths start (a value other than 0), e.g. destinations |
cost | map | the cost of reaching the network (<= 0 on it) |
directions | map | or the directions of a cost map |
seed | integer | for the lottery (1) |
| Output | Type | What it is |
map | map | the network with the new paths (no value elsewhere) |
| Setting | Type | What it is |
lottery | bool | ties between cheapest neighbours drawn at random |
merge | bool | the network with the new paths (default true), or only them |
value | number | of the new path cells (1) |
dinamica.roads
A step of endogenous road building, Dinamica EGO's road constructor (landschaft's RoadBuilder.step): the attraction kept where the distance to the roads is within distance (and the mask allows), destinations drawn in quadrants, each joined to the network down the cost of reaching it over the friction; the network with the new roads, and the distance to them (a dynamic variable).
| Input | Type | What it is |
networkrequired | map | the roads (a value other than 0) |
frictionrequired | map | the effort to build across each cell (> 0; no value: never) |
attractionrequired | map | how attractive each cell is as a road's end |
mask | map | where roads may end (non-zero) |
step | integer | the step of a simulation (1, 2...; none: the seed as is) |
seed | integer | the seed (1) |
| Output | Type | What it is |
network | map | the network with the new roads |
distance | map | the distance to the roads, map units |
| Setting | Type | What it is |
quadrants | any | [horizontal, vertical] divisions ([2, 10]) |
distance | any | [least, most] distance from the roads of a new end ([1500, 3000]) |
spacing | number | the least distance between destinations of a step (1000) |
per_quadrant | integer | destinations per quadrant (1) |
max_attempts | integer | draws of a destination (15) |
lottery | bool | ties drawn at random (default true) |
diagonal | bool | diagonal steps cost sqrt(2) times more (default true) |
relative | bool | frictions per map unit |
dinamica.step
One step of Dinamica's Expander and Patcher: the changes of each transition (its rate per step times the cells of its origin class) split between the Expander, which grows existing patches, and the Patcher, which seeds new ones, with lognormal patch sizes shaped by the isometry.
| Input | Type | What it is |
landscaperequired | map | the map at the start of the step |
probabilityrequired | stack | a layer per transition (e.g. woe.probability) |
rates | markov | the rates per step |
regional | regional | or the rates of each region (Markov chains) |
patchesrequired | patches | the Expander and Patcher settings |
steprequired | integer | the step (1, 2...) |
seedrequired | integer | the seed of the simulation |
| Output | Type | What it is |
landscape | map | the map at the end of the step |
info | table | cells requested and made by each function, patches |
| Setting | Type | What it is |
prune_factor | number | cells ranked per change for the draws (10) |
window | any | the neighbour window [rows, columns] ([3, 3]) |
dynamic.distance_to
The distance from each cell to the nearest cell of some classes (exact Euclidean distance between cell centres), in map units or cells: a driver that moves with the simulated map.
| Input | Type | What it is |
landscaperequired | map | the map |
cost | stack | a transition of conductances, a layer per direction (the accumulated cost instead of the distance) |
| Output | Type | What it is |
distance | map | the distances (NaN where the map has no value) |
| Setting | Type | What it is |
classesrequired | any | a class or a list |
unit | text | "map" (default; square cells) or "cells" |
layout | any | the transition's { directions, symmetric, extent, wrap } (with cost) |
dynamic.share_of
The share of the cells around each cell that hold some classes (the mean of the window's weights x presence over the cells with a value): a driver that moves with the simulated map.
| Input | Type | What it is |
landscaperequired | map | the map |
| Output | Type | What it is |
share | map | the shares (NaN where the map has no value) |
| Setting | Type | What it is |
classesrequired | any | a class or a list |
window | any | the side of a window of ones (3), or its weights |
futures.calibrate
The calibration of FUTURES' patches (r.futures.calib through landschaft's calibrate_patches): the patches developed between the start and the end give the patch library and the histograms of patch area and compactness (perimeter / (2 sqrt(pi area))); every combination of the compactness means, ranges and discount factors is simulated repeat times from the start (futures.simulation's settings, seeds (seed + k) 10000 + i) and its patches compared with the observed ones by the histograms' chi-square distance. The combinations from the best, as landschaft's.
| Input | Type | What it is |
landscaperequired | map | developed cells at the start (1 developed, 0 not) |
pressurerequired | map | the development pressure at the start |
drivers | stack | the potential's predictors, by name |
subregions | map | the subregions (default: one) |
potential_subregions | map | the subregions of the coefficients |
weight | map | -1 to 1, changing the probability |
zoning | map | zone ids |
restrictions | map | cells never developed (non-zero) |
catchments | map | floods: the catchments (HUCs) |
adaptive_capacity | map | floods: adaptive capacity, -1 to 1 |
hand | map | floods: height above the nearest drainage |
floods | stack | floods: the depth or probability maps |
damage_regions | map | floods: the depth-damage region of each cell |
adaptation | map | floods: the return period cells are protected against |
endrequired | map | developed (1) at the end of the observed period |
| Output | Type | What it is |
table | table | per combination, from the best: discount_factor, compactness_mean, compactness_range, area_error, compactness_error (each over its largest) and combined_error (their mean) |
library | any | the observed patch library, as futures.simulation's patch_sizes |
| Setting | Type | What it is |
potentialrequired | any | { ids, intercept, devpressure, predictors, coefficients } |
demandrequired | any | { subregions, rows, years, population } |
neighborhoodrequired | integer | the radius of the pressure's window (cells) |
approachrequired | text | the pressure's decay |
gammarequired | number | the pressure's decay exponent |
scaling_factorrequired | number | the pressure's scaling factor |
num_neighborsrequired | integer | 4 or 8 |
seed_searchrequired | text | how seeds are drawn |
incentive_powerrequired | number | infill (> 1) or sprawl (< 1) |
zoning_effects | any | { ids, stringency, zones, effects } |
climate | any | the flood submodel |
compactness_means | any | the compactness means to try (default [0.4]) |
compactness_ranges | any | the ranges to try (default [0.05]) |
discount_factors | any | the discount factors to try (default [1]) |
repeat | integer | simulations per combination (default 10) |
seed | integer | the first combination's seed (default 1) |
threshold | number | the smallest patch area kept (map units; 0) |
per_subregion | bool | a patch library per subregion (default false) |
futures.devpressure
The development pressure of each cell (r.futures.devpressure through landschaft): the sum over the developed cells within a radius (a circular window, the cell itself left out) of 1 (occurrence), scaling / d^gamma (gravity) or scaling exp(-2 d / gamma) (kernel), as GRASS's r.mfilter computes it; the pressure futures.simulation starts from.
| Input | Type | What it is |
developedrequired | map | 1 developed, 0 not, missing excluded |
| Output | Type | What it is |
map | map | the pressure (floats; missing where excluded) |
| Setting | Type | What it is |
sizerequired | integer | the window's radius in cells |
method | text | gravity (default), occurrence or kernel |
gamma | number | the decay with distance (default 1.5) |
scaling_factor | number | default 1 |
pad | bool | pad with undeveloped cells (the module's -n, default): the cells near the edges get their pressure |
futures.patch_library
The sizes of the patches developed between two maps (r.futures.calib's patch library through landschaft): the 4-connected groups of cells developed in the end and not at the start (inside a subregion), in cells, sorted; one library per subregion (each patch cut to its part in it), or one for all. The patch_sizes futures.simulation draws from.
| Input | Type | What it is |
startrequired | map | developed (1) at the start |
endrequired | map | developed (1) at the end |
subregions | map | subregions (0 and missing ignored) |
| Output | Type | What it is |
library | any | { ids, lists }, as futures.simulation's patch_sizes |
table | table | subregion (empty: all), size |
| Setting | Type | What it is |
per_subregion | bool | a library per subregion (default false) |
threshold | number | the smallest patch area kept (map units; 0) |
futures.simulation
FUTURES' patch growing (r.futures.simulation): at every step each subregion develops its demand in patches grown from seeds drawn on the development probability (the potential's coefficients, the development pressure updated around every new cell, zoning, incentives), with the flood submodel (damage, retreat, adaptation, migration) when given.
| Input | Type | What it is |
landscaperequired | map | developed cells at the start (1 developed, 0 not) |
seedrequired | integer | the seed of the simulation |
pressurerequired | map | the development pressure at the start |
drivers | stack | the potential's predictors, by name |
subregions | map | the subregions (default: one) |
potential_subregions | map | the subregions of the coefficients |
weight | map | -1 to 1, changing the probability |
zoning | map | zone ids |
restrictions | map | cells never developed (non-zero) |
catchments | map | floods: the catchments (HUCs) |
adaptive_capacity | map | floods: adaptive capacity, -1 to 1 |
hand | map | floods: height above the nearest drainage |
floods | stack | floods: the depth or probability maps |
damage_regions | map | floods: the depth-damage region of each cell |
adaptation | map | floods: the return period cells are protected against |
| Output | Type | What it is |
maps | series | developed (1) or not (0) after each step |
development | series | the step each cell was developed in (-1 never) |
info | series | cells developed and carried over, per step and subregion |
| Setting | Type | What it is |
potentialrequired | any | { ids, intercept, devpressure, predictors, coefficients } |
demandrequired | any | { subregions, rows, years, population } |
patch_sizesrequired | any | { ids, lists } |
neighborhoodrequired | integer | the radius of the pressure's window (cells) |
approachrequired | text | the pressure's decay |
gammarequired | number | the pressure's decay exponent |
scaling_factorrequired | number | the pressure's scaling factor |
discount_factorrequired | number | multiplies the patch sizes |
compactness_meanrequired | number | the patches' distance exponent |
compactness_rangerequired | number | its range |
num_neighborsrequired | integer | 4 or 8 |
seed_searchrequired | text | how seeds are drawn |
incentive_powerrequired | number | infill (> 1) or sprawl (< 1) |
zoning_effects | any | { ids, stringency, zones, effects } |
climate | any | the flood submodel |
glm.coefficients
Logistic regressions given in the model: per class, its drivers and coefficients (the intercept first), as glm.fit gives them.
| Output | Type | What it is |
model | glm | the regressions |
| Setting | Type | What it is |
fitsrequired | any | [{ class, drivers, coefficients, pivot, rank }, ...] |
glm.fit
Logistic regression of the presence of each class on the drivers (lulcc's glmModels, R's glm.fit operation for operation), on the cells with a value in the map and in the class's drivers.
| Input | Type | What it is |
landscaperequired | map | the map the presences come from |
driversrequired | stack | the explanatory variables |
| Output | Type | What it is |
model | glm | the fitted regressions |
| Setting | Type | What it is |
formulas | any | { class = [driver, ...] } (default: every class on every driver); the intercept is always in |
maxit | integer | glm.fit's iteration limit (25) |
epsilon | number | glm.fit's convergence tolerance (1e-8) |
glm.predict
The probability of each class in every cell from fitted logistic regressions (NaN where a driver, or the landscape when given, is missing).
| Input | Type | What it is |
modelrequired | glm | the fitted regressions |
driversrequired | stack | the explanatory variables (they may have changed) |
landscape | map | a map whose missing cells stay missing |
| Output | Type | What it is |
suitability | stack | a layer per class |
lulcc.history
The steps each cell has had its class at the start (lulcc's hist): the given map, missing cells counted 1, else 1 everywhere.
| Input | Type | What it is |
landscaperequired | map | the map at the start |
history | map | the steps each cell has had its class |
| Output | Type | What it is |
history | map | the history to carry along the steps |
lulcc.step
One step of a CLUE-S or ordered allocation (lulcc's allocate): the elasticity of each cell's class (CLUE), the neighbourhood rules, the conversion matrix with its time and demand codes, the automatic conversions of cells whose class is no longer allowed, then the allocation of the step's demand.
| Input | Type | What it is |
landscaperequired | map | the map at the start of the step |
historyrequired | map | the steps each cell has had its class |
suitabilityrequired | stack | a layer per class (e.g. glm.predict) |
demand | demand | the cells of each class at each step |
regional | regional | or a demand per region (demand.regional) |
steprequired | integer | the step (1, 2...) |
rngrequired | rng | R's generator, carried from step to step |
restrictions | map | cells that keep their class (non-zero) |
| Output | Type | What it is |
landscape | map | the map at the end of the step |
history | map | the history updated |
info | table | iterations, convergence and cells of each class |
| Setting | Type | What it is |
allocationrequired | any | { method = "clue", jitter, scale, max_iter, max_diff, mean_diff } or { method = "ordered", order = [...], stochastic } |
elasticity | any | per class (CLUE): one value, a list or { class = value } |
allowed | any | the conversion matrix, in the demand's class order |
neighbourhood | any | { rules = { class = threshold }, weights = window } |
markov.fit
A Markov chain of land change from two maps: the transition probabilities of the period (cells of each class at the start that hold each class at the end) and, over steps time steps, those of one step (the principal root of the period's matrix, as Dinamica EGO's DetermineTransitionMatrix).
| Input | Type | What it is |
t0required | map | the map at the start of the period |
t1required | map | the map at its end |
stepsrequired | integer | time steps in the period |
| Output | Type | What it is |
markov | markov | the chain |
markov.matrix
A Markov chain given in the model: the transition probabilities of a period over steps steps (rows the class at the start); those per step are its principal root, unless given.
| Output | Type | What it is |
markov | markov | the chain |
| Setting | Type | What it is |
classesrequired | any | the class of each row and column |
singlerequired | any | the probabilities of the period, a row per class |
multi | any | the probabilities per step (default: the root) |
steps | integer | steps in the period (1) |
molusce.step
One iteration of MOLUSCE's Simulator: every cell is predicted the transition of largest total weight (or the class of largest potential) with a confidence (100 x the gap to the second, truncated); then for each pair of classes of the map, the cells predicted to take it with the highest confidence + U(0, 1) / 1000 change, as many as the observed cross table says.
| Input | Type | What it is |
landscaperequired | map | the map at the start of the iteration |
total | stack | the total weight of each transition (molusce.total) |
potential | stack | or a potential per class |
rngrequired | rng | numpy's generator (rng.numpy), carried from step to step |
steprequired | integer | the iteration (1, 2...) |
| Output | Type | What it is |
landscape | map | the map at the end of the iteration |
info | table | the cells each transition changed |
| Setting | Type | What it is |
classesrequired | any | the classes of the model |
countsrequired | any | the cells of each transition: [{ from, to, cells }] |
molusce.total
MOLUSCE's total weight of each transition: per transition, the sum over the drivers of the weight of each cell's category (drivers cut by their bins, or integer categories); NaN where a driver has no value.
| Input | Type | What it is |
driversrequired | stack | the drivers, by name |
| Output | Type | What it is |
total | stack | a layer per transition ("from_to_to", persistence included) |
| Setting | Type | What it is |
classesrequired | any | the classes of the model |
driversrequired | any | the drivers, in order |
bins | any | { driver = [bounds] } |
weightsrequired | any | [{ from, to, driver, categories, weights }] |
patches.observe
The Expander and Patcher settings of each transition with a rate, measured on the observed change: the share of the changed cells in expansions of existing patches (8 neighbours), and the mean and variance of the sizes of the expansion and new patches; the isometry is given.
| Input | Type | What it is |
t0required | map | the map at the start |
t1required | map | the map at the end |
markovrequired | markov | the transitions with a rate |
| Output | Type | What it is |
patches | patches | the settings of each transition |
| Setting | Type | What it is |
expansion | number | the Expander's share for all (default: observed) |
isometry | number | the isometry of the patches (1.5) |
patches.settings
The Expander and Patcher settings given in the model: per transition the Expander's share and the mean, variance and isometry of the patches of each function.
| Output | Type | What it is |
patches | patches | the settings |
| Setting | Type | What it is |
transitionsrequired | any | [{ from, to, expansion, expander = [mean, variance, isometry], patcher = [...] }, ...] |
plus.demand
The cells of each class at each step for CARS: a Markov chain projected from the starting map (PLUS's default, rounded to whole cells), or an area demand.
| Input | Type | What it is |
startrequired | map | the map the simulation starts from |
markov | markov | a Markov chain |
demand | demand | or an area demand |
regional | regional | or a demand per region (Markov chains or areas) |
| Output | Type | What it is |
demand | demand | cells per class and step |
regional | regional | or per region and class, for a regional demand |
steps | integer | its steps |
| Setting | Type | What it is |
steps | integer | steps (default: the chain's or the demand's) |
validate.agreement
How a simulated map matches the observed one, both from the same start: the share of cells of the same class, the figure of merit (hits / (hits + misses + false alarms + wrong hits)) and its terms.
| Input | Type | What it is |
startrequired | map | the map both start from |
observedrequired | map | the observed map |
simulatedrequired | map | the simulated map |
| Output | Type | What it is |
table | table | overall, figure_of_merit, hits, misses, false_alarms, wrong_hits |
validate.error_budget
MOLUSCE's error budget (Pontius 2002, through landschaft): the agreement of the maps when the simulation has no, medium or perfect information of quantity and location, at the maps' resolution and coarser ones, merging scale x scale cells each time (the edges left over dropped).
| Input | Type | What it is |
referencerequired | map | the reference map |
simulatedrequired | map | the simulated map (no classes the reference lacks) |
| Output | Type | What it is |
table | table | per resolution: cells, no_no, no_medium, medium_medium, medium_perfect, perfect_perfect |
| Setting | Type | What it is |
iterations | integer | the resolutions (default 3) |
scale | integer | cells merged per side each time (default 2) |
validate.futures
FUTURES' validation (r.futures.validation through landschaft): the quantity and allocation disagreement per class and in total (Pontius & Millones 2011) and kappa; with the original map, kappa simulation (van Vliet et al. 2011) and, for 0/1 maps, misses, hits, false alarms, null successes, the figure of merit, producer's and user's accuracy (Pontius et al. 2008).
| Input | Type | What it is |
referencerequired | map | the observed map (integer classes) |
simulatedrequired | map | the simulated map |
original | map | the map at the start |
| Output | Type | What it is |
metrics | table | the scalar metrics (empty where they cannot be computed) |
classes | table | per class: quantity and allocation disagreement |
validate.futures_grid
FUTURES' validation per tile or per region (r.futures.gridvalidation through landschaft): a row per tile of size x size cells from the top-left (its row, column and centre) or per region, the metrics of validate.futures and the cells compared.
| Input | Type | What it is |
referencerequired | map | the observed map (integer classes) |
simulatedrequired | map | the simulated map |
original | map | the map at the start |
regions | map | region ids, in place of tiles |
| Output | Type | What it is |
table | table | per tile or region: where, cells, the metrics |
| Setting | Type | What it is |
size | integer | the tiles' side in cells |
validate.kappa
MOLUSCE's comparison of two maps of classes (DependenceCoef through landschaft): kappa, kappa location and kappa histogram and the % of cells of the same class over the classes of both maps; Cramer's V and the joint information uncertainty; the correlation of the class values.
| Input | Type | What it is |
referencerequired | map | the reference map |
simulatedrequired | map | the simulated map |
| Output | Type | What it is |
table | table | kappa, kappa_location, kappa_histogram, correctness, cramer, jiu, correlation |
validate.similarity
Dinamica EGO's validation: the fuzzy similarity of the simulated and the observed change (the cells that changed from the start, in their new class) in windows of growing size; the minimum of the two directions is Dinamica's result.
| Input | Type | What it is |
startrequired | map | the map both start from |
observedrequired | map | the observed map |
simulatedrequired | map | the simulated map |
| Output | Type | What it is |
table | table | a row per window |
| Setting | Type | What it is |
windows | any | the window sides, odd ([1, 3, 5, 7, 9, 11]) |
decay | text | "exponential" (default) or "constant" |
validate.three_map
The three-map comparison of a simulation (Pontius, Peethambaram & Castella 2011; lulcc's ThreeMapComparison through landschaft): the reference at the start and at the end and the simulated end compared at blocks of several sizes, the budget of agreement and disagreement (misses, hits, wrong hits, false alarms, correct rejections; overall, per class, per transition) and the figure of merit. The cells without a value in any map are left out of all three.
| Input | Type | What it is |
t0required | map | the reference map at the start |
t1required | map | the reference map at the end |
simulatedrequired | map | the simulated map of the end |
| Output | Type | What it is |
table | table | per factor lulcc's table: t0 class within t1 class (empty: total), the simulated classes, total |
budget | table | level (0 overall, 1 class, 2 transition), from, to, factor, misses, hits, wrong_hits, false_alarms, correct_rejections |
figure_of_merit | table | per factor: overall, then per class |
transitions | table | per factor and class from: the figure of merit to each |
| Setting | Type | What it is |
factors | any | the blocks' sides in cells (default [1]) |
categories | any | the classes (default those of the maps) |
woe.fit
Weights of evidence of each transition, calibrated on two maps as Dinamica EGO does: the ranges of a continuous variable from nested buffers of increment cut by line generalisation (a new range when the direction deviates by more than tolerance degrees or the range passes max_delta cells, none below min_delta), a range per category of a categorical one; W+ per range.
| Input | Type | What it is |
t0required | map | the map at the start |
t1required | map | the map at the end |
driversrequired | stack | the explanatory variables |
markov | markov | its transitions with a rate are calibrated |
| Output | Type | What it is |
model | woe | the weights |
table | table | Dinamica's weights report |
| Setting | Type | What it is |
increment | any | buffer increment, or "auto" (a hundredth of the range) |
min_delta | number | smallest range, cells (1) |
max_delta | number | largest range, cells (100000) |
tolerance | number | tolerance angle, degrees (5) |
ranges | any | per variable: "categorical", an increment, limits or options; per transition ("1->2") its own |
weights | any | W+ set by hand: {"1->2": {variable: [a weight per range, or null]}} (the viewer's WoE editor) |
categorical | any | names of categorical variables |
fix_abnormal | bool | finite weights for ranges without transitions |
possible | text | "any" (default) or "stay" |
transitions | any | [[from, to], ...] (default: the Markov chain's) |
woe.probability
The probability of each calibrated transition at every cell of its initial class, from the weights of evidence (Dinamica EGO's CalcWOfEProbabilityMap).
| Input | Type | What it is |
modelrequired | woe | the weights |
landscaperequired | map | the map the probabilities are for |
driversrequired | stack | the explanatory variables (they may have changed) |
| Output | Type | What it is |
probability | stack | a layer per transition |
woe.weights
Weights of evidence given in the model (as woe.fit gives them): transitions, ranges and weights.
| Output | Type | What it is |
model | woe | the weights |
| Setting | Type | What it is |
weightsrequired | any | the fitted weights (woe.fit's model) |