MGSurvE package

Submodules

MGSurvE.auxiliary module

Various functions that are serve I/O purposes or not relevant to any specific module.

MGSurvE.auxiliary.cheapRuler(pointA, pointB)

Calculates the distance between two (lon,lat) points assumming flat approximations. https://blog.mapbox.com/fast-geodesic-approximations-with-cheap-ruler-106f229ad016

MGSurvE.auxiliary.dumpLandscape(landscape, fPath, fName, fExt='bz2')

Exports a serialized landscape to disk.

Parameters:
  • landscape (object) – Landscape object to export.

  • fPath (path) – Path to where the landscape will be exported.

  • fName (string) – Filename.

  • fExt (string) – File extension.

MGSurvE.auxiliary.exportLandscape(landscape, fPath, fName)

Exports a landscape to disk to CSV files (for use in MGDrivE).

Parameters:
  • landscape (object) – Landscape object to export.

  • fPath (path) – Path to where the landscape will be exported.

  • fName (string) – Filename.

MGSurvE.auxiliary.haversineDistance(pointA, pointB)

Calculates the distance between two (lon,lat) points using the haversine approximation.

MGSurvE.auxiliary.isNotebook()

Checks if the script is running from a Jupyter environment.

Returns:

Flags Jupyter environment.

Return type:

bool

MGSurvE.auxiliary.loadLandscape(fPath, fName, fExt='bz2')

Loads a serialized landscape from disk.

Parameters:
  • fPath (path) – Path from where the landscape will be loaded.

  • fName (string) – Filename.

  • fExt (string) – File extension.

Returns:

Landscape object.

Return type:

(object)

MGSurvE.auxiliary.makeFolder(path)

Crates a folder in the specified directory.

Parameters:

path (string) – Path of the folder than needs to be created.

MGSurvE.auxiliary.makeFolders(pathsList)

Creates a list of folders if they don’t exist.

Parameters:

paths (list) – List path to the desired directories.

MGSurvE.auxiliary.vincentyDistance(pointA, pointB, meters=True)

Calculates the Vincenty arc distance between points.

Parameters:
  • pointA (tuple) – First point in (lon, lat) format.

  • pointB (tuple) – Second point in (lon, lat) format.

Returns:

Distance between points

Return type:

(float)

MGSurvE.colors module

Color-related functions for alphas and cmaps.

MGSurvE.colors.colorPaletteFromHexList(clist)

Generates a matplotlib-compliant cmap from a list of hex colors.

Parameters:

clist (list) – List of hex codes (eg. ‘#f72585’) to blend in the map.

Returns:

Matplotlib’s colormap object.

Return type:

cmap

MGSurvE.constants module

Constants used across the pkg (colors, symbols, bio).

MGSurvE.constants.AEDES_EXP_PARAMS = [0.01848777, 1e-10, inf]

Aedes aegypti’s migration parameters for kernel.

MGSurvE.constants.BASIC_EXP_TRAP = {'A': 0.5, 'b': 0.15}

Generic params for an exponential-decay trap

MGSurvE.constants.LAND_TUPLES = (('10m', '#dfe7fd55', 30), ('10m', '#ffffffDD', 5))

Base colors for land boundaries.

MGSurvE.constants.MCOL = ('#bdb2ff', '#a0c4ff', '#e0c3fc', '#ffd6a5', '#caffbf', '#d0d1ff')

A cute pastel colors list.

MGSurvE.constants.MEDIUM_MOV_EXP_PARAMS = [0.075, 1e-10, inf]

Dummy migration parameters for short-distance kernel.

MGSurvE.constants.MKRS = ('o', '^', 's', 'p', 'd', 'X')

Markers for point-types

MGSurvE.constants.PINK_NAVY = <matplotlib.colors.LinearSegmentedColormap object>

Pink to Navy Blue cmap.

MGSurvE.constants.SHORT_EXP_PARAMS = [1, 1e-10, inf]

Dummy migration parameters for short-distance kernel.

MGSurvE.constants.TRP_COLS = {0: '#f7258515', 1: '#5ddeb125', 2: '#fe5f5515', 3: '#f038ff15', 4: '#e2ef7015', 5: '#9381ff15'}

Base colors for trap types.

MGSurvE.kernels module

Kernel functions and operations used for movement and traps attractivenesses.

MGSurvE.kernels.exponentialAttractiveness(dist, A=1, k=1, s=1, gamma=1, epsilon=1)

Calculates the probability of moving between points as a complex decaying exponential.

Parameters:
  • dist (float) – Distance between points.

  • A (float) – Maximum amplitude at distance 0 (attractiveness).

  • k (float) –

  • s (float) –

  • gamma (float) –

  • epsilon (float) – Error term

Returns:

Movement probability.

Return type:

float

MGSurvE.kernels.exponentialDecay(dist, A=1, b=1)

Calculates the probability of moving between points as a decaying exponential.

Parameters:
  • dist (float) – Distance between points.

  • A (float) – Maximum amplitude at distance 0.

  • b (float) – Decay rate (higher means tighter kernel).

Returns:

Movement probability.

Return type:

float

MGSurvE.kernels.exponentialKernel(distMat, decay=0.01848777)

Calculates the migration matrix using a decaying exponential function.

Parameters:
  • distMat (numpy array) – Distances matrix.

  • decay (float) – Exponential decay rate

Returns:

Migration matrix.

Return type:

numpy array

MGSurvE.kernels.inverseLinearStep(distance, params=[0.75, 1])

Calculates the zero-inflated linear distance-based movement probability.

Parameters:

distMat (numpy array) – Distances matrix.

Returns:

Migration matrix.

Return type:

numpy array

MGSurvE.kernels.nSolveKernel(kernelDict, yVal, guess=0, latlon=False, R=6371000.0)

Calculates the distance it takes for the kernel to match a given probability (yVar).

Parameters:
  • kernelDict (dict) – Dictionary with the kernel info {‘kernel’, ‘params’}.

  • yVal (float) – Probability for which we are solving the distance.

  • guess (float) – Initial guess for the distance.

Returns:

Distance for the probability value.

Return type:

float

MGSurvE.kernels.sigmoidDecay(dist, A=1, rate=0.5, x0=10)

Calculates the probability of moving between points as a sigmod.

Parameters:
  • dist (float) – Distance between points.

  • A (float) – Maximum amplitude at distance 0.

  • rate (float) – Logistic growth rate or steepness of the curve.

  • x0 (float) – The x value of the sigmoid’s midpoint

Returns:

Movement probability.

Return type:

float

MGSurvE.kernels.truncatedExponential(distance, params=[0.01848777, 1e-10, inf])

Calculates the zero-inflated exponential distance-based movement probability.

Parameters:
  • distance (float) – Distances matrix.

  • params (list) – Shape distribution parameters [rate, a, b].

Returns:

Migration probability.

Return type:

float

MGSurvE.kernels.zeroInflatedExponentialKernel(distMat, params=[0.01848777, 1e-10, inf], zeroInflation=0.75)

Calculates the migration matrix using a zero-inflated exponential function.

Parameters:
  • distMat (numpy array) – Distances matrix.

  • params (list) – Shape distribution parameters [rate, a, b].

  • zeroInflation (float) – Probability to stay in the same place.

Returns:

Migration matrix.

Return type:

numpy array

MGSurvE.kernels.zeroInflatedLinearMigrationKernel(distMat, params=[0.75, 1])

Calculates the zero-inflated linear distance-based movement probability.

Parameters:

distMat (numpy array) – Distances matrix.

Returns:

Migration matrix.

Return type:

numpy array

MGSurvE.landscape module

Main object with sites, traps, and masks to optimize and visualize the landscape to be analyzed.

class MGSurvE.landscape.Landscape(points, pointsTrapBanned=None, maskingMatrix=None, attractionVector=None, distanceMatrix=None, distanceFunction=None, migrationMatrix=None, kernelFunction=<function zeroInflatedExponentialKernel>, kernelParams={'params': [1, 1e-10, inf], 'zeroInflation': 0.75}, maskedMigrationMatrix=None, traps=None, trapsKernels={0: {'inverse': None, 'kernel': <function exponentialDecay>, 'params': {'A': 0.5, 'b': 0.15}}}, trapsMask=None, trapsRadii=[0.25, 0.2, 0.1, 0.05], landLimits=None, populations=None)

Bases: object

Stores the information for a mosquito landscape. Works with different point-types in the form of matrices and coordinates.

Parameters:
  • points (pandas dataframe) – Sites positions with mandatory {x,y} coordinates and optional {t: type, a: attractiveness} values for each site in the landscape.

  • kernelFunction (function) – Function that determines de relationship between distances and migration probabilities.

  • kernelParams (dict) – Parameters required for the kernel function to determine migration probabilities.

  • maskingMatrix (numpy array) – Matrix that determines the probability of shifting from one point-type to another one (squared with size equal to the number of point types). If None, every point-type transition is equiprobable.

  • attractionVector (list) – Relative attraction of one site to another (does not preserve migration matrix diagonal)

  • distanceMatrix (numpy array) – Matrix with the distances between all the points in the landscape. If None, it’s auto-calculated (see calcPointsDistances).

  • migrationMatrix (numpy array) – Markov matrix that determines the probability of moving from one site to another. If None, it’s auto-calculated (see calcPointsMigration).

  • maskedMigrationMatrix (numpy array) – Markov matrix that biases migration probabilities as dictated by the masking matrix. If None, it’s auto-calculated (see calcPointsMaskedMigration).

  • distanceFunction (function) – Function that takes two points in the landscape and calculates the distance between them.

  • traps (pandas dataframe) – Traps positions with mandatory {x,y} coordinates and optional {t: trap type integer, f: fixed bool (immovable)}.

  • trapsKernels (dict) – Traps’ kernels functions and parameters in dictionary form (where the indices must match the “t” values in the traps dataframe).

  • trapsMask (numpy array) – Traps’ masking matrix to make traps act upon mosquitos searching for a specific resource (shape: {trapsNum, sitesNum}).

  • trapsRadii (list) – List of probability values at which we want rings to be plotted in dataviz functions.

  • landLimits (tuple) – Landscape’s bounding box.

calcFundamentalMatrix()

Calculates the Markov fundamental matrix on the landscape.

calcPointsDistances()

Calculates the distancesMatrix amongst the points (in place).

calcPointsMaskedMigration()

Calculates the maskedMigrationMatrix depending on point-type (in place).

calcPointsMigration()

Calculates the migrationMatrix amongst the points (in place).

calcTrapsDistances()

Calculates the trapsDistances matrix (in place).

calcTrapsMigration()

Replaces section in the trapsMigration matrix (in place).

exportForMGDrivE()
getBoundingBox()

Returns the landscape’s ((minX, maxX), (minY, maxY)).

getDaysTillTrapped(fitFuns={'inner': <function max>, 'outer': <function mean>})

Gets the number of timesteps until a walker falls into a trap

plotDirectedNetwork(fig, ax, markers=('o', '^', 's', 'p', 'd', 'X'), colors=('#bdb2ff', '#a0c4ff', '#e0c3fc', '#ffd6a5', '#caffbf', '#d0d1ff'), edgecolors='black')
plotLandBoundary(fig, ax, landTuples=(('10m', '#dfe7fd55', 30), ('10m', '#ffffffDD', 5)))
plotMaskedMigrationNetwork(fig, ax, lineColor='#03045e', lineWidth=20, alphaMin=0.5, alphaAmplitude=2.5, zorder=0, **kwargs)

Plots the base sites migration network.

plotMigrationNetwork(fig, ax, lineColor='#03045e', lineWidth=20, alphaMin=0.5, alphaAmplitude=2.5, zorder=0, **kwargs)

Plots the base sites migration network.

plotSites(fig, ax, markers=('o', '^', 's', 'p', 'd', 'X'), colors=('#bdb2ff', '#a0c4ff', '#e0c3fc', '#ffd6a5', '#caffbf', '#d0d1ff'), size=350, edgecolors='w', linewidths=2, zorder=5, **kwargs)

Plots the sites coordinates.

plotTraps(fig, ax, colors={0: '#f7258515', 1: '#5ddeb125', 2: '#fe5f5515', 3: '#f038ff15', 4: '#e2ef7015', 5: '#9381ff15'}, marker='X', edgecolor='w', lws=(2, 1), ls=':', size=300, zorders=(25, -5), **kwargs)

Plots the traps locations.

plotTrapsNetwork(fig, ax, lineColor='#f72585', lineWidth=20, alphaMin=0.5, alphaAmplitude=1.5, zorder=0, **kwargs)

Plots the traps networks.

updateTraps(traps, trapsKernels)

Updates the traps locations and migration matrices (in place).

Parameters:
  • traps (pandas dataframe) –

  • trapsKernel (dictionary) –

updateTrapsCoords(trapsCoords)

Updates current trap coordinates.

Parameters:

trapsCoords (numpy array) –

updateTrapsCoordsByID(trapPositionsID)

Updates current trap coordinates by sites ID.

Parameters:

trapPositionsID (numpy array) –

updateTrapsRadii(probValues)

MGSurvE.matrices module

Migration and masking operations upon matrices.

MGSurvE.matrices.calcAttractiveness(migrationMtx, attractionVector)

Calculates the effects of attractiveness in the migration matrix.

Parameters:
  • migrationMtx (numpy array) – Original migration matrix (Tau).

  • attractivenessVct (numpy array) – Relative attractiveness modifier for sites.

Returns:

Full migration matrix with attractiveness effects.

Return type:

(numpy array)

MGSurvE.matrices.calcDistanceMatrix(pointCoords, distFun=<built-in function dist>)

Calculates the distance matrix between all the provided coordinates.

Parameters:
  • pointCoords (numpy array) – Coordinates of the sites.

  • distFun (function) – Distance function to be used in the computations.

Returns:

Distances matrix

Return type:

(numpy array)

MGSurvE.matrices.calcMaskedMigrationMatrix(migrationMatrix, maskingMatrix, pointTypes)

Calculates the masked migration matrix between points according to their types.

Parameters:
  • migrationMatrix (numpy array) – Migration probabilities amongst points.

  • maskingMatrix (numpy array) – Transition probabilities between point-types.

  • pointTypes (numpy vector) – Point-types for each one of the sites in the matrix (in the same order).

Returns:

Masked migration matrix

Return type:

(numpy array)

MGSurvE.matrices.calcTrapsProbabilities(trapsDistances, trapsTypes, trapsKernels, trapsMask, pointTypes)

Calculates the traps probabilities given distances to points in the landscape and their effectiveness kernels.

Parameters:
  • trapsDistances (numpy array) – Distances to all points.

  • trapsTypes (numpy array) – Types of the traps.

  • trapsKernels (function) – Kernels functions and params for trap types.

  • trapsMask (np array) – Traps’ catching bias mask (with shape: trapTypes, pointTypes)

  • pointTypes (list) –

Returns:

Traps probabilities

Return type:

(numpy array)

MGSurvE.matrices.calcTrapsToPointsDistances(trapsCoords, pointCoords, dFun=<built-in function dist>)

Generates the distances matrix between the traps and the sites.

Parameters:
  • trapsCoords (numpy array) – Coordinates of the traps.

  • pointsCoords (numpy array) – Coordinates of the sites.

  • dFun (function) – Distance function to be used in the computations.

Returns:

Distances matrix

Return type:

(numpy array)

MGSurvE.matrices.genVoidFullMigrationMatrix(migrationMatrix, trapsNumber)

Calculates a migration matrix with sections for traps (Xi) to be filled in place.

Parameters:
  • migrationMatrix (numpy array) – Migration matrix without any traps (Tau).

  • trapsNumber (int) – Number of traps in the landscape

Returns:

Full migration matrix with no traps effects

Return type:

(numpy array)

MGSurvE.network module

Network-analysis operations.

MGSurvE.network.calculateNetworkCentralities(transitionsMatrix, nodeCentrality=<function newman_betweenness_centrality>, edgeCentrality=<function edge_betweenness_centrality>, weight='distance')

MGSurvE.optimization module

GA Operators to calculate fitness and perform operations to search through optimization space.

MGSurvE.optimization.calcDiscreteFitness(chromosome, landscape, optimFunction=<function getDaysTillTrapped>, optimFunctionArgs={'inner': <function max>, 'outer': <function mean>})

Calculates the fitness function of the landscape given a chromosome (in place, so not thread-safe).

Parameters:
  • chromosome (list) – Discrete optimization chromosome.

  • landscape (object) – Landscape object to use for the analysis.

  • optimFunction (function) – Function that turns a matrix into a fitness value.

  • optimFunctionArgs (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

Returns:

Landscape’s fitness function.

Return type:

(tuple of floats)

MGSurvE.optimization.calcDiscreteFitnessPseudoInverse(chromosome, landscape, optimFunction=<function getDaysTillTrappedPseudoInverse>, optimFunctionArgs={'inner': <function max>, 'outer': <function mean>}, rcond=1e-30)

Calculates the fitness function of the landscape given a chromosome (in place, so not thread-safe).

Parameters:
  • chromosome (list) – Discrete optimization chromosome.

  • landscape (object) – Landscape object to use for the analysis.

  • optimFunction (function) – Function that turns a matrix into a fitness value.

  • optimFunctionArgs (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

  • rcond (float) – Cutoff for small singular values.

Returns:

Landscape’s fitness function.

Return type:

(tuple of floats)

MGSurvE.optimization.calcDiscreteSexFitness(chromosome, landscapeMale=None, landscapeFemale=None, weightMale=1, weightFemale=1, optimFunction=<function getDaysTillTrapped>, optimFunctionArgs={'inner': <function max>, 'outer': <function mean>})

Calculates the fitness function of a Male/Female set of landscapes with a weighted sum of the time-to catch between them.

Parameters:
  • chromosome (floats numpy array) – GA’s float chromosome generated by initChromosome.

  • landscapeMale (object) – Male landscape object to use for the analysis.

  • landscapeFemale (object) – Female landscape object to use for the analysis.

  • weightMale (float) – Preference on catching males over females.

  • weightFemale (float) – Preference on catching females over males.

  • optimFunction (function) – Function that turns a matrix into a fitness value.

  • optimFunctionArgs (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

Returns:

Landscape’s fitness function.

Return type:

(tuple of floats)

MGSurvE.optimization.calcFitness(chromosome, landscape=None, optimFunction=<function getDaysTillTrapped>, optimFunctionArgs={'inner': <function max>, 'outer': <function mean>})

Calculates the fitness function of the landscape given a chromosome (in place, so not thread-safe).

Parameters:
  • chromosome (floats numpy array) – GA’s float chromosome generated by initChromosome.

  • landscape (object) – Landscape object to use for the analysis.

  • optimFunction (function) – Function that turns a matrix into a fitness value.

  • optimFunctionArgs (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

Returns:

Landscape’s fitness function.

Return type:

(tuple of floats)

MGSurvE.optimization.calcFitnessPseudoInverse(chromosome, landscape=None, optimFunction=<function getDaysTillTrappedPseudoInverse>, optimFunctionArgs={'inner': <function max>, 'outer': <function mean>}, rcond=1e-30)

Calculates the fitness function of the landscape given a chromosome using the matrix pseudo-inverse function (in place, so not thread-safe).

Parameters:
  • chromosome (floats numpy array) – GA’s float chromosome generated by initChromosome.

  • landscape (object) – Landscape object to use for the analysis.

  • optimFunction (function) – Function that turns a matrix into a fitness value.

  • optimFunctionArgs (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

  • rcond (float) – Cutoff for small singular values.

Returns:

Landscape’s fitness function.

Return type:

(tuple of floats)

MGSurvE.optimization.calcSexFitness(chromosome, landscapeMale=None, landscapeFemale=None, weightMale=1, weightFemale=1, optimFunction=<function getDaysTillTrapped>, optimFunctionArgs={'inner': <function max>, 'outer': <function mean>})

Calculates the fitness function of a Male/Female set of landscapes with a weighted sum of the time-to catch between them.

Parameters:
  • chromosome (floats numpy array) – GA’s float chromosome generated by initChromosome.

  • landscapeMale (object) – Male landscape object to use for the analysis.

  • landscapeFemale (object) – Female landscape object to use for the analysis.

  • weightMale (float) – Preference on catching males over females.

  • weightFemale (float) – Preference on catching females over males.

  • optimFunction (function) – Function that turns a matrix into a fitness value.

  • optimFunctionArgs (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

Returns:

Landscape’s fitness function.

Return type:

(tuple of floats)

MGSurvE.optimization.chromosomeIDtoXY(chromosome, ptsID, pointCoords)

Converts a sites-ID crhomosome into a set of XY or lon-lat coordinates.

Parameters:
  • chromosome (list) – Discrete optimization chromosome.

  • ptsID (list) – Set of IDs for the sites (usually lnd.pointID).

  • pointCoords (numpy array) – Set of coordinates for matching points IDs (usually lnd.pointCoords)

Returns:

Traps positions xy or lon-lat pairs as defined by the selected sites IDs.

Return type:

(numpy array)

MGSurvE.optimization.cxBlend(ind1, ind2, fixedTrapsMask, alpha=0.5)

Mates two chromosomes by “blend” based on the provided mask (in place).

This implementation is similar to DEAP’s cxBlend (https://deap.readthedocs.io/en/master/api/tools.html#deap.tools.cxBlend). Follow this link for the original code: https://github.com/DEAP/deap/blob/master/deap/tools/crossover.py

Parameters:
  • ind1 (floats numpy array) – GA’s float chromosome generated by initChromosome.

  • ind2 (floats numpy array) – GA’s float chromosome generated by initChromosome.

  • fxdTrpsMsk (bool numpy array) – Array of bools that define which alleles can be mutated (1).

  • alpha (float) – weight for each of the chromosomes.

Returns:

Mated individuals.

Return type:

(list of chromosomes)

MGSurvE.optimization.cxDiscreteUniform(ind1, ind2, fixedTraps, indpb=0.5)

Mates two chromosomes in place by swapping alleles between them.

Parameters:
  • ind1 (list) – Chromosome of the first parent in the mating operation.

  • ind2 (list) – Chromosome of the first parent in the mating operation.

  • fixedTraps (_type_) – List of flags on traps that can be moved (lnd.trapsFixed).

  • indpb (float, optional) – Mutation probability for each independent allele. Defaults to 0.5.

Returns:

Mated individuals.

Return type:

(list of chromosomes)

MGSurvE.optimization.exportLog(logbook, outPath, filename)

Dumps a dataframe with the report of the GA’s history.

Parameters:
  • logbook (object) – DEAP GA object.

  • outPath (path) – Path where the file will be exported.

  • F_NAME (string) – Filenamme (without extension).

MGSurvE.optimization.genFixedTrapsMask(trapsFixed, dims=2)

Creates a mask for the fixed traps (non-movable).

Parameters:
  • trapsFixed (bool numpy array) – Boolean array with the traps that are not movable (lnd.trapsFixed).

  • dims (int) – Unused for now, but it’s the number of dimensions for the landscape.

Returns:

Mask of the elements that can be moved in the GA operations.

Return type:

(numpy array)

MGSurvE.optimization.getCanonicalElements(tau, sitesN, trapsN)

Helper function to return canonical elements of the traps matrix (Q (tau), R (v), I).

Parameters:
  • tau (numpy array) – Migration matrix with traps included

  • sitesN (int) – Number of sites

  • trapsN (int) – Number of traps

Returns:

Dictionary of elements in canonical matrix.

Return type:

(dict)

MGSurvE.optimization.getDaysTillTrapped(landscape, fitFuns={'inner': <function max>, 'outer': <function mean>})

Gets the number of timesteps until a walker falls into a trap.

Parameters:
  • landscape (object) – Landscape object to use for the analysis.

  • fitFuns (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

Returns:

Number of days for mosquitoes to fall into traps given the fitFuns.

Return type:

(float)

MGSurvE.optimization.getDaysTillTrappedPseudoInverse(landscape, fitFuns={'inner': <function max>, 'outer': <function mean>}, rcond=1e-30)

Gets the number of timesteps until a walker falls into a trap (using pseudo-inverse matrix function).

Parameters:
  • landscape (object) – Landscape object to use for the analysis.

  • fitFuns (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

  • rcond (float) – Cutoff for small singular values.

Returns:

Number of days for mosquitoes to fall into traps given the fitFuns.

Return type:

(float)

MGSurvE.optimization.getDaysTillTrappedVector(landscape, fitFuns={'inner': None, 'outer': <function mean>})

Gets the number of timesteps until a walker falls into a trap in vector form.

Parameters:
  • landscape (object) – Landscape object to use for the analysis.

  • fitFuns (dict) – Dictionary with the outer (row) and inner (col) functions to use on the matrix.

Returns:

Number of days for mosquitoes to fall into traps given the fitFuns.

Return type:

(float)

MGSurvE.optimization.getFundamentalFitness(fundamentalMatrix, fitFuns={'inner': <function max>, 'outer': <function mean>})

Get fitness from Markov’s fundamental matrix.

Parameters:
  • fundamentalMatrix (numpy array) – Markov’s fundamental matrix (calcFundamentalMatrix)

  • fitFuns (dict) – Dictionary containing the inner (row) and outer (col) operations for the fundamental matrix.

Returns:

Summarized fitness function for the fundamental matrix.

Return type:

(float)

MGSurvE.optimization.getFundamentalMatrix(tau, sitesN, trapsN)

Get Markov’s fundamental matrix (pseudo-inverse).

Equivalent to using reshapeInCanonicalForm and getMarkovAbsorbing (which

should be deprecated).

Parameters:
  • tau (numpy array) – Traps migration matrix in canonical form.

  • sitesN (int) – Number of sites.

  • trapsN (int) – Number of traps.

Returns:

Time to fall into absorbing states from anywhere in landscape.

Return type:

(numpy array)

MGSurvE.optimization.getFundamentalMatrixPseudoInverse(tau, sitesN, trapsN, rcond=1e-20)

Get Markov’s fundamental matrix (inverse).

Equivalent to using reshapeInCanonicalForm and getMarkovAbsorbing (which

should be deprecated).

Parameters:
  • tau (numpy array) – Traps migration matrix in canonical form.

  • sitesN (int) – Number of sites.

  • trapsN (int) – Number of traps.

  • rcond (float) – Cutoff for small singular values.

Returns:

Time to fall into absorbing states from anywhere in landscape.

Return type:

(numpy array)

MGSurvE.optimization.getFundamentalVector(tau, sitesN)

Get Markov’s fundamental vector.

Equivalent to:

np.sum(srv.getFundamentalMatrix(tau, sitesN, trapsN), axis=1) np.sum(srv.getFundamentalMatrixPseudoInverse(tau, sitesN, trapsN), axis=1)

Parameters:
  • tau (numpy array) – Traps migration matrix in canonical form.

  • sitesN (int) – Number of sites.

Returns:

Time to fall into absorbing states from anywhere in landscape.

Return type:

(numpy array)

MGSurvE.optimization.getMarkovAbsorbing(tauCan, trapsN)

Get Markov’s absorbing states (deprecated).

Parameters:
  • tauCan (numpy array) – Traps migration matrix in canonical form.

  • trapsN (int) – Number of traps.

Returns:

Time to fall into absorbing states from anywhere in landscape.

Return type:

(numpy array)

MGSurvE.optimization.getMeanTimeToCapture(canonElems, pseudoInv=True, rcond=1e-20)

Calculates the average time to capture given the Q, R, I Markov canonical elements.

Parameters:
  • canonElems (dict) – Dictionary containing the Q, R, and I matrices as calculated by Markov’s fundamental matrix.

  • pseudoInv (bool, optional) – Boolean to choose either normal matrix inverse or matrix pseudo-inverse. Defaults to True.

  • rcond (_type_, optional) – Limit condation for floating precision on pseudo-inverse. Defaults to 1e-20.

Returns:

Mean time to capture.

Return type:

float

MGSurvE.optimization.getTimeToCapture(landscape, fitFuns={'outer': <function sum>}, pseudoInv=True, rcond=1e-10)

Wrapper function for ‘getMeanTimeToCapture’ given a landscape.

Parameters:
  • landscappe (object) – Landscape object

  • fitFuns (dict) – Dictionary containing the outer function for summarize.

Returns:

Mean time to capture.

Return type:

float

MGSurvE.optimization.importLog(inPath, filename)

Gets the number of timesteps until a walker falls into a trap.

Parameters:
  • LOG_PTH (path) – Path where the file is stored.

  • F_NAME (dict) – Filename with extension.

Returns:

GA optimization log.

Return type:

(pandas dataframe)

MGSurvE.optimization.initChromosome(trapsCoords, fixedTrapsMask, coordsRange)

Generates a random uniform chromosome for GA optimization.

Parameters:
  • trapsCoords (int) – Number of traps to lay down in the landscape.

  • fixedTrapsMask (list of bools) – Mask with coordinates that can be moved (true) and which can’t (false).

  • coordsRange (tuple of tuples of floats) –

Returns:

List of xy coordinates for the traps’ positions.

Return type:

(list)

MGSurvE.optimization.initChromosomeMixed(trapsCoords, fixedTrapsMask, typeOptimMask, coordsRange, trapsPool, indpb=0.75)

Generates a compound chromosome for optimization with a coordinates-type composition (currently unusued).

Parameters:
  • trapsCoords (numpy array) – Current traps positions.

  • fxdTrpsMsk (bool numpy array) – Array of bools that define which alleles can be mutated (1).

  • typeOptimMask (bool numpy array) – Array of bools that define which alleles can be mutated (1).

  • coordsRange (numpy array) – Allowed trap coordinates for init.

  • trapsPool (integers array) – Types of traps available in the pool.

  • indpb (float, optional) – Allele mutation probability. Defaults to .75.

Returns:

Randomly-generated chromosome.

Return type:

list

MGSurvE.optimization.initDiscreteChromosome(ptsIds, fixedTraps, trapsSiteID=None, banSites=None)

Generates a random uniform chromosome for discrete GA optimizations (from available sites).

Parameters:
  • ptsIds (list) – List of points ids as stored in landscape (lnd.pointID).

  • fixedTraps (list) – List of flags on traps that can be moved (lnd.trapsFixed).

  • banSites (set) – List of sites that should not be taken into account for optimization (lnd.trapsBan).

Returns:

List of sites at which the traps are located for GA optimization.

Return type:

list

MGSurvE.optimization.mutShuffleIndexes(individual, typeOptimMask, indpb=0.5)

Shuffles allele indices in pairs.

Parameters:
  • individual (list) – Chromosome for optimization

  • typeOptimMask (bool numpy array) – Array of bools that define which alleles can be mutated (1).

  • indpb (float, optional) – Mutation probability for each independent allele. Defaults to 0.5.

Returns:

Mutated chromosome

Return type:

list

MGSurvE.optimization.mutateChromosome(chromosome, fixedTrapsMask, randFun=<built-in method normal of numpy.random.mtrand.RandomState object>, randArgs={'loc': 0, 'scale': 0.1}, indpb=0.5)

Mutates a chromosome with a probability distribution based on the mutation mask (in place).

Parameters:
  • chromosome (floats numpy array) – GA’s float chromosome generated by initChromosome.

  • fxdTrpsMsk (bool numpy array) – Array of bools that define which alleles can be mutated (1).

  • randFun (function) – Probability function for the mutation operation.

  • randArgs (dict) – Arguments to control the shape of the probability function.

  • indpb (float) – Independent probability to mutate each allele.

Returns:

Selectively-mutated chromosome.

Return type:

(numpy array list)

MGSurvE.optimization.mutateChromosomeAsymmetric(chromosome, fixedTrapsMask, randFun=<built-in method normal of numpy.random.mtrand.RandomState object>, randArgs={'x': {'loc': 0, 'scale': 0.1}, 'y': {'loc': 0, 'scale': 0.1}}, indpb=0.5)

Mutates a chromosome with a probability distribution based on the mutation mask with different probabilities for XY elements (in place).

Parameters:
  • chromosome (floats numpy array) – GA’s float chromosome generated by initChromosome.

  • fxdTrpsMsk (bool numpy array) – Array of bools that define which alleles can be mutated (1).

  • randFun (function) – Probability function for the mutation operation.

  • randArgs (dict) – Arguments to control the shape of the probability function (‘x’ and ‘y’ entries).

  • indpb (float) – Independent probability to mutate each allele.

Returns:

Selectively-mutated chromosome.

Return type:

(numpy array list)

MGSurvE.optimization.mutateChromosomeMixed(chromosome, fixedTrapsMask, typeOptimMask, mutCoordFun=<function mutateChromosome>, mutCoordArgs={'indpb': 0.5, 'randArgs': {'loc': 0, 'scale': 10}, 'randFun': <built-in method normal of numpy.random.mtrand.RandomState object>}, mutTypeFun=<function mutShuffleIndexes>, mutTypeArgs={'indpb': 0.5})

Generates a compound chromosome for optimization with a coordinates-type composition (currently unusued).

Parameters:
  • trapsCoords (numpy array) – Current traps positions.

  • fxdTrpsMsk (bool numpy array) – Array of bools that define which alleles can be mutated (1).

  • typeOptimMask (bool numpy array) – Array of bools that define which alleles can be mutated (1).

  • mutCoordFun (function) – Coordinates mutation function.

  • mutCoordArgs (dictionary) – Coordinates mutation function’s arguments.

  • mutTypeFun (function) – Trap types mutation function.

  • mutTypeArgs (dictionary) – Trap types mutation function’s arguments.

Returns:

Mutated chromosome.

Return type:

list

MGSurvE.optimization.mutateDiscreteChromosome(chromosome, ptsIds, fixedTraps, indpb=0.5, banSites=None)

Mutates a discrete chromosome from the available sites in the landscape (in place).

Parameters:
  • chromosome (list) – GA’s float chromosome generated by initChromosome.

  • ptsIds (list) – List of IDs for the sites (points) in the landscape (lnd.pointID).

  • fixedTraps (list) – List of flags on traps that can be moved (lnd.trapsFixed).

  • indpb (float, optional) – Mutation probability for each independent allele. Defaults to 0.5.

  • banSites (set, optional) – List of sites that should not be taken into account for optimization (lnd.trapsBan). Defaults to None.

Returns:

Mutated chromosome (in place).

Return type:

list

MGSurvE.optimization.optimizeDiscreteTrapsGA(landscape, generations=1000, bbox='auto', pop_size='auto', mating_params={'cxpb': 0.3, 'indpb': 0.5}, mutation_params={'indpb': 0.5, 'mutpb': 0.4}, selection_params={'tSize': 3}, fitnessFun=<function calcDiscreteFitness>, optimFunction=<function getDaysTillTrapped>, fitFuns={'inner': <function max>, 'outer': <function mean>}, verbose=True)

Optimizes the traps’ positions using a simple GA algorithm.

Parameters:
  • landscape (object) – Landscape object to use for the analysis.

  • generations (int, optional) – Number of generations to run in the GA. Defaults to 1000.

  • bbox (tuple, optional) – If not ‘auto’, tuple with the landscape’s bounding box for mutation operations. Defaults to ‘auto’.

  • pop_size (str, optional) – If not ‘auto’, size of the chromosome population size in the GA. Defaults to ‘auto’.

  • mating_params (dict, optional) – Mating probability (‘mate’) and crossover blending rate (‘cxpb’) for mating operations. Defaults to {‘mate’: .3, ‘cxpb’: 0.5}.

  • mutation_params (dict, optional) – Gaussian mean (‘mean’) and deviation (‘sd’) for mutation operations, as well as independent allele mutation probability (‘ipb’). Defaults to {‘mean’: 0, ‘sd’: 100, ‘mutpb’: .4, ‘ipb’: .5}.

  • selection_params (dict, optional) – Tournament size for the selection algorithm. Defaults to {‘tSize’: 3}.

  • optimFunction (function, optional) – Fitness function to be used upon the movement matrices. Defaults to getDaysTillTrapped.

  • fitFuns (dict, optional) – Fitness matrix reduction statistics (inner applied first, and outter applied to the result). Defaults to {‘outer’: np.mean, ‘inner’: np.max}.

  • verbose (bool, optional) – Verbosity on the optimization. Defaults to True.

Returns:

Returns the landscape and logbook for the optimization.

Return type:

(object, dataframe)

MGSurvE.optimization.optimizeTrapsGA(landscape, generations=1000, bbox='auto', pop_size='auto', mating_params={'alpha': 0.5, 'cxpb': 0.5}, mutation_params={'ipb': 0.5, 'mean': 0, 'mutpb': 0.4, 'sd': 100}, selection_params={'tSize': 3}, fitnessFun=<function calcFitness>, optimFunction=<function getDaysTillTrapped>, fitFuns={'inner': <function max>, 'outer': <function mean>}, verbose=True)

Optimizes the traps’ positions using a simple GA algorithm.

Parameters:
  • landscape (object) – Landscape object to use for the analysis.

  • generations (int, optional) – Number of generations to run in the GA. Defaults to 1000.

  • bbox (tuple, optional) – If not ‘auto’, tuple with the landscape’s bounding box for mutation operations. Defaults to ‘auto’.

  • pop_size (str, optional) – If not ‘auto’, size of the chromosome population size in the GA. Defaults to ‘auto’.

  • mating_params (dict, optional) – Mating probability (‘mate’) and crossover blending rate (‘cxpb’) for mating operations. Defaults to {‘mate’: .3, ‘cxpb’: 0.5}.

  • mutation_params (dict, optional) – Gaussian mean (‘mean’) and deviation (‘sd’) for mutation operations, as well as independent allele mutation probability (‘ipb’). Defaults to {‘mean’: 0, ‘sd’: 100, ‘mutpb’: .4, ‘ipb’: .5}.

  • selection_params (dict, optional) – Tournament size for the selection algorithm. Defaults to {‘tSize’: 3}.

  • optimFunction (function, optional) – Fitness function to be used upon the movement matrices. Defaults to getDaysTillTrapped.

  • fitFuns (dict, optional) – Fitness matrix reduction statistics (inner applied first, and outter applied to the result). Defaults to {‘outer’: np.mean, ‘inner’: np.max}.

  • verbose (bool, optional) – Verbosity on the optimization. Defaults to True.

Returns:

Returns the landscape and logbook for the optimization.

Return type:

(object, dataframe)

MGSurvE.optimization.optimizeTwoSexesTrapsGA(landscapeMale, landscapeFemale, sexWeights={'F': 0.5, 'M': 0.5}, generations=1000, bbox='auto', pop_size='auto', mating_params={'alpha': 0.5, 'cxpb': 0.3}, mutation_params={'ipb': 0.5, 'mean': 0, 'mutpb': 0.4, 'sd': 100}, selection_params={'tSize': 3}, optimFunction=<function getDaysTillTrapped>, fitFuns={'inner': <function max>, 'outer': <function mean>}, verbose=True)

Optimizes the traps’ positions using a simple GA algorithm for two-sexes kernels.

Parameters:
  • landscapeMale (object) – Male landscape object to use for the analysis.

  • landscapeFemale (object) – Female landscape object to use for the analysis.

  • sexWeights (dictionary) – Male-to-Female priority dictionary.

  • generations (int, optional) – Number of generations to run in the GA. Defaults to 1000.

  • bbox (tuple, optional) – If not ‘auto’, tuple with the landscape’s bounding box for mutation operations. Defaults to ‘auto’.

  • pop_size (str, optional) – If not ‘auto’, size of the chromosome population size in the GA. Defaults to ‘auto’.

  • mating_params (dict, optional) – Mating probability (‘mate’) and crossover blending rate (‘cxpb’) for mating operations. Defaults to {‘mate’: .3, ‘cxpb’: 0.5}.

  • mutation_params (dict, optional) – Gaussian mean (‘mean’) and deviation (‘sd’) for mutation operations, as well as independent allele mutation probability (‘ipb’). Defaults to {‘mean’: 0, ‘sd’: 100, ‘mutpb’: .4, ‘ipb’: .5}.

  • selection_params (dict, optional) – Tournament size for the selection algorithm. Defaults to {‘tSize’: 3}.

  • optimFunction (function, optional) – Fitness function to be used upon the movement matrices. Defaults to getDaysTillTrapped.

  • fitFuns (dict, optional) – Fitness matrix reduction statistics (inner applied first, and outter applied to the result). Defaults to {‘outer’: np.mean, ‘inner’: np.max}.

  • verbose (bool, optional) – Verbosity on the optimization. Defaults to True.

Returns:

Returns the landscape and logbook for the optimization.

Return type:

(object, dataframe)

MGSurvE.optimization.reshapeInCanonicalForm(tau, sitesN, trapsN)

Reshapes a migration matrix into canonical form (deprecated).

Parameters:
  • tau (numpy array) – Traps migration matrix.

  • sitesN (int) – Number of sites.

  • trapsN (int) – Number of traps.

Returns:

Reshaped matrix in canonical form.

Return type:

(numpy array)

MGSurvE.optimizationPSO module

PSO Operators to calculate fitness and perform operations to search through optimization space.

class MGSurvE.optimizationPSO.Particle_Swarm(traps, p_min, p_max, lnd, num_particles=50, num_gens=500, s_min=-3, s_max=3, phi1=2, phi2=2, optimFunction=<function getDaysTillTrapped>, optimFunctionArgs={'inner': <function max>, 'outer': <function mean>})

Bases: object

evaluate()

Main function that executes PSO.

Output:

pop: The resulting particle locations logbook: Log of the changes that particles underwent best: The global best trap locations found by PSO

generate(p_min, p_max, smin, smax)

Generate 1 particle.

Particle location is randomized for movable traps; it remains the same for immovable traps. Particle speed is randomized for all elements in vector regardless of movable/immovable. This is fine because we multiply the speed by the trpMsk. smin, smax set by variables passed in.

getImmovableLocMask(traps_df)

Generate a mask for immovable trap locations. If trap movable, location mask should be (0, 0). If trap immovable, location mask should be its original location (x, y)

Input:
traps: dataframe representing original locations of traps with the following 4 columns:

x: x coordinate y: y coordinate t: type of trap f: 0 if movable, 1 if immovable

setup_toolbox()

Set up toolbox by registering particles, population, update function, and evaluate function.

Output: toolbox object for DEAP package

updateParticle(best, phi1, phi2)

Update location of the particle for 1 timestep.

Inputs:

part: Array containing particle positions in (x, y) coordinates best: Global best particle position so far phi1: Upper bound for random number generation for particle velocity (u1) phi2: Upper bound for random number generation for particle velocity (u2) equation from https://machinelearningmastery.com/a-gentle-introduction-to-particle-swarm-optimization/ speed/velocity per particle: V[t] X[t+1] = X[t] + V[t+1] V[t+1] = w * V[t] + c1 * r1 * (personal_best - X[t]) + c2 * r2 * (global_best - X[t])

w: inertia weight constant = 1 c1 = 1 r1 = u1 c2 = 1 r2 = u2 v_u1 = r1 * (personal_best - X[t]) = u1 * (part.best - part) v_u2 = r2 * (global_best - X[t]) = u2 * (best - part)

MGSurvE.optimizationPSO.setup_stats(pop)

Set up Statistics

MGSurvE.plots module

Data-Visualization functions (thanks to Elijah Bartolome in the implementation of some of the visualization functions).

MGSurvE.plots.plotClean(fig, ax, frame=False, bbox=None, labels=False, pad=(0, 0))

Makes axes equally spaced and removes frame.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • frame (bool) – Flag to remove plot’s frame.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotDirectedNetwork(fig, ax, sites, pTypes, transMtx, markers=('o', '^', 's', 'p', 'd', 'X'), colors=('#bdb2ff', '#a0c4ff', '#e0c3fc', '#ffd6a5', '#caffbf', '#d0d1ff'), alphaNodeMin=1, alphaEdgeMin=1, alphaNodeAmplitude=50, alphaEdgeAmplitude=100, sizeNodeAmplitude=10000000000, widthEdgeAmplitude=10, edgecolors='black', transform=None, **kwargs)

Plots edge and node centrality.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • sites (numpy array) – Coordinates of the points.

  • pTypes (numpy array) – Point types.

  • transMtx (numpy matrix) – Transitions matrix.

  • markers (list) – List of marker shapes for point-types (matplotlib).

  • colors (list) – List of colors for point-types (matplotlib).

  • alphaNodeMin (float) – Minimum alpha value allowed for nodes.

  • alphaEdgeMin (float) – Minimum alpha value allowed for edges.

  • alphaNodeAmplitude (float) – Alpha multiplier for nodes of matrix.

  • alphaEdgeAmplitude (float) – Alpha multiplier for edges of matrix.

  • sizeNodeAmplitude (float) – Size multiplier for nodes of matrix.

  • widthEdgeAmplitude (float) – Width multiplier for edges of matrix.

  • edgecolors (color) – Edge color.

  • kwargs (dict) – Matplotlib’s plot-compliant kwargs.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotFitness(fig, ax, fitness, pos=(0.5, 0.5), fmt='{:.2f}', fontSize=125, color='#00000011', zorder=5, **kwargs)

Adds the fitness value to the plot.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • pos (floats tuple) – Position for the text.

  • fmt (string formating) – String format for the fitness text.

  • fontSize (float) – Text’s font size.

  • color (color) – Font color

  • zorder (int) – Zorder for the text.

  • **kwargs – Matplotlib’s text kwargs.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotGAEvolution(fig, ax, gaLog, colors={'envelope': '#1565c0', 'mean': '#ffffff'}, alphas={'envelope': 0.5, 'mean': 0.75}, aspect=0.3333333333333333)

Makes axes equally spaced and removes frame.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • gaLog (pandas dataframe) – Flag to remove plot’s frame.

  • colors (dict) – Mean and envelope colors

  • alphas (dict) – Mean and envelope alphas

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotLandBoundary(fig, ax, landTuples=(('10m', '#dfe7fd55', 30), ('10m', '#ffffffDD', 5)))

Plots the land’s boundary as a polygon.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • landTuples (list of tuples) – Check the constants.py file for format.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotMatrix(fig, ax, matrix, trapsNumber=None, vmin=0, vmax=1, cmap='Purples', linecolor='#222222', linestyle=':', lw=0.5, ticks=False, **kwargs)

Block matrix plot for the connection network.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • trapsNumber (int) – Number of traps in landscape.

  • vmin (float) – Lower clipping value.

  • vmax (float) – Higher clipping value.

  • cmap (matplotlib colormap) – Matplotlib’s colormap object.

  • lineColor (color) – Color for the block’s boundaries.

  • lineStyle (matplotlib linestyle) – Linestyle for the block matrix’ boundaries.

  • lw (float) – Linewidth for block matrix boundaries.

  • ticks (bool) – Imshow ticks on/off

  • zorders (tuple) – Zorders for marker and circles.

  • kwargs (dict) – Matplotlib’s plot-compliant kwargs.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotMigrationNetwork(fig, ax, transMtx, sitesB, sitesA, lineColor='#03045e', lineMin=0.025, lineWidth=20, alphaMin=0.5, alphaAmplitude=2.5, zorder=0, transform=None, **kwargs)

Plots a transitions matrix.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • transMtx (numpy matrix) – Transitions matrix.

  • sitesB (numpy array) – Coordinates of the vertices origins (sites/traps).

  • sitesA (numpy array) – Coordinates of the vertices desinations (sites/traps).

  • lineColor (color) – Color for the network.

  • lineWidth (float) – Amplitude for the linewidth.

  • alphaMin (float) – Minimum alpha value allowed.

  • alphaAmplitude (float) – Alpha multiplier for matrix.

  • zorder (int) – Matplotlib’s zorder.

  • kwargs (dict) – Matplotlib’s plot-compliant kwargs.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotMovementKernel(fig, ax, xPoints, lnd, colors=('#8093f1', '#ec0868', '#7371fc22'), lineWidths=(4, 8, 0.5))

Generates a relative movement kernel plot.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • xPoints (np array) – Set of points

  • colors (list of hex) – List of colors to be used in the kernel profiles (zero inflation, kernel, vlines).

  • lineWidths (list of floats) – List of line widths to be used in the kernel profiles (zero inflation, kernel, vlines)

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotSites(fig, ax, sites, pTypes, markers=('o', '^', 's', 'p', 'd', 'X'), colors=('#bdb2ff', '#a0c4ff', '#e0c3fc', '#ffd6a5', '#caffbf', '#d0d1ff'), size=350, edgecolors='w', linewidths=1.25, zorder=5, transform=None, **kwargs)

Plots a transitions matrix.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • sites (numpy array) – Coordinates of the points.

  • pTypes (numpy array) – Point types.

  • markers (list) – List of marker shapes for point-types (matplotlib).

  • colors (list) – List of colors for point-types (matplotlib).

  • size (float) – Marker size.

  • edgecolors (color) – Edge color for markers.

  • linewidths (float) – Edge line width for markers.

  • zorder (int) – Matplotlib’s zorder.

  • kwargs (dict) – Matplotlib’s plot-compliant kwargs.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotTraps(fig, ax, trapsCoords, trapsTypes, trapsKernels, trapsFixed, colors={0: '#f7258515', 1: '#5ddeb125', 2: '#fe5f5515', 3: '#f038ff15', 4: '#e2ef7015', 5: '#9381ff15'}, marker='X', edgecolors=('w', 'k'), lws=(2, 1), ls=':', size=350, zorders=(25, -5), fill=True, transform=None, transparencyHex='DD', latlon=False, proj=None, **kwargs)

Plots the traps with the radii of effectiveness.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • trapsCoords (numpy array) – Coordinates of the vertices.

  • trapsTypes (list ints) – Trap types IDs.

  • trapsKernels (dict) – Dictionary of traps kernels.

  • colors (dict) – List of colors for different trap types.

  • marker (mrk) – Marker type for matplotlib.

  • edgecolor (color) – Edgecolor for trap marker.

  • lws (tuple) – Line widths for marker and radii (in order).

  • ls (str) – Linestyle for the radii.

  • size (float) – Size of the marker.

  • zorders (tuple) – Zorders for marker and circles.

  • kwargs (dict) – Matplotlib’s plot-compliant kwargs.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotTrapsKernels(fig, ax, lnd, colors={0: '#f7258515', 1: '#5ddeb125', 2: '#fe5f5515', 3: '#f038ff15', 4: '#e2ef7015', 5: '#9381ff15'}, alpha=0.75, distRange=(0, 100), aspect=0.3)

Creates a distance-attractiveness plot for kernels present in the landscape.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • colors (list of hex) – List of colors to be used in the kernel profiles.

  • alpha (float) – Opacity for the traces.

  • distRange (tuple) – Distances range for the x-axis.

  • aspect (float) – Aspect ratio for the axes.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotTrapsNetwork(fig, ax, transMtx, traps, sites, lineColor='#3d0e61', lineWidth=20, alphaMin=0.5, alphaAmplitude=2.5, zorder=0, transform=None, **kwargs)

Plots the connectivity network of traps in the landscape.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • transMtx (numpy array) – Full transitions matrix.

  • traps (numpy array) – Traps’ coordinates.

  • sites (numpy array) – Sites’ coordinates.

  • lineColor (color) – Color for the network’s line.

  • lineWidth (float) – Base width for the connections.

  • alphaMin (float) – Minimum alpha value for connections.

  • alphaAmplitude (float) – Multiplier for the alpha (proportional to connection).

  • zorders (tuple) – Z-orders for marker and circles.

  • kwargs (dict) – Matplotlib’s plot-compliant kwargs.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.plots.plotsClearMemory()

Forces matplotlib to clear all memory (probably an overkill). https://stackoverflow.com/questions/28757348/how-to-clear-memory-completely-of-all-matplotlib-plots

MGSurvE.plots.saveFig(fig, ax, filepath, filename, dpi=300, facecolor='w', transparent=False, bbox_inches='tight', pad_inches=0, **kwargs)

Save figure to disk.

Parameters:
  • fig (matplotlib) – Matplotlib fig object.

  • ax (matplotlib) – Matplotlib ax object.

  • filepath (string) – Path for figure export.

  • filename (string) – Filename for the export.

  • dpi (int) – Image resolution.

  • facecolor (color) – Background for the plot.

  • transparent (bool) – Transparent background.

  • bbox_inches (string) – Bounding box inches.

  • pad_inches (float) – Padding inches.

  • **kwargs – Matplotlib savefig kwargs.

Returns:

Matplotlib (fig, ax) tuple.

Return type:

(fig, ax)

MGSurvE.pointProcess module

Synthetic Landscape generation functions (thanks to Elijah Bartolome in the impelemntation of some of the point-process functions).

MGSurvE.pointProcess.ptsDonut(pointsNumber, radii, center=(0, 0))

Creates a distribution of points laid around a donut shape.

Parameters:
  • pointsNumber (int) – Number of sites.

  • radii (tuple of floats) – Minimum and maximum radii for the donut shape.

  • center (tuple of floats) – Coordinates for the center of the donut (x, y).

Returns:

Points’ coordinates.

Return type:

(numpy array)

MGSurvE.pointProcess.ptsPossion(pointsNumber, clustersNumber, radius, randomState=1698953410.342164, bbox=None, polygon=None)

Generates a synthetic landscape from a Poisson distribution.

Parameters:
  • pointsNumber (int) – Number of sites.

  • clustersNumber (int) – Number of sites’ clusters.

  • radius (float) – Radius of the circle centered on each parent.

  • randomState (int) – Random seed.

  • bbox (tuple of tuples) – Bounding box in the form ((xLo, xHi), (yLo, yHi))

  • polygon (name of shp file) – Shape-file for the points to be generated within.

Returns:

Points’ coordinates

Return type:

(numpy array)

MGSurvE.pointProcess.ptsRandUniform(pointsNumber, bbox)

Creates a random unifor distribution of points.

Parameters:
  • pointsNumber (int) – Number of sites

  • bbox (tuple of tuples) – Bounding box in the form ((xLo, xHi), (yLo, yHi))

Returns:

Points’ coordinates

Return type:

(numpy array)

MGSurvE.pointProcess.ptsRegularCircle(pointsNumber, radius, solStart=10)

Creates concentric circles of points.

Parameters:
  • pointsNumber (int) – Approximate number of sites (real number will be lower).

  • radius (float) – Radius of the circle to set points on.

  • solStart (float) – Starting point for the steps solver

Returns:

Points’ coordinates.

Return type:

(numpy array)

MGSurvE.pointProcess.ptsRegularGrid(pointsNumber, bbox)

Creates a regular grid (lattice) of points.

Parameters:
  • pointsNumber (int) – Number of sites.

  • bbox (tuple of tuples) – Bounding box in the form ((xLo, xHi), (yLo, yHi)).

Returns:

Points’ coordinates.

Return type:

(numpy array)

Module contents