Abstract
Genetic surveillance of mosquito populations is becoming increasingly relevant as genetics-based mosquito control strategies advance from laboratory to field testing. Especially applicable are mosquito gene drive projects, the potential scale of which leads monitoring to be a significant cost driver. For these projects, monitoring will be required to detect unintended spread of gene drive mosquitoes beyond field sites, and the emergence of alternative alleles, such as drive-resistant alleles or non-functional effector genes, within intervention sites. This entails the need to distribute mosquito traps efficiently such that an allele of interest is detected as quickly as possible - ideally when remediation is still viable. Additionally, insecticide-based tools such as bednets are compromised by insecticide-resistance alleles for which there is also a need to detect as quickly as possible. To this end, we present MGSurvE (Mosquito Gene SurveillancE): a computational framework that optimizes trap placement for genetic surveillance of mosquito populations such that the time to detection of an allele of interest is minimized. A key strength of MGSurvE is that it allows important biological features of mosquitoes and the landscapes they inhabit to be accounted for, namely: i) resources required by mosquitoes (e.g., food sources and aquatic breeding sites) can be explicitly distributed through a landscape, ii) movement of mosquitoes may depend on their sex, the current state of their gonotrophic cycle (if female) and resource attractiveness, and iii) traps may differ in their attractiveness profile. Example MGSurvE analyses are presented to demonstrate optimal trap placement for: i) an Aedes aegypti population in a suburban landscape in Queensland, Australia, and ii)an Anopheles gambiae population on the island of São Tomé, São Tomé and Príncipe. Further documentation and use examples are provided in project’s documentation. MGSurvE is freely available as an open-source Python package on pypi (https://pypi.org/project/MGSurvE/). It is intended as a resource for both field and computational researchers interested in mosquito gene surveillance.
Author summary Mosquito-borne diseases such as malaria and dengue fever continue to pose a major health burden throughout much of the world. The impact of currently-available tools, such as insecticides and antimalarial drugs, is stagnating, and gene drive-modified mosquitoes are considered a novel tool that could contribute to continuing reductions in disease transmission. Gene drive approaches are unique in the field of vector control in that they involve transgenes that could potentially spread on a wide scale, and consequently, surveillance is expected to be a major cost driver for the technology. This is needed to monitor for unintended spread of intact drive alleles, and the emergence of alternative alleles such as homing-resistance alleles and non-functional effector genes. Additionally, surveillance of insecticide-resistance alleles is of interest to support the impact of insecticide-based tools such as bednets. Here, we present MGSurvE, a computational framework that optimizes trap placement for genetic surveillance of mosquito populations in order to minimize the time to detection for an allele of interest. MGSurvE has been tailored to various features of mosquito ecology, and is intended as a resource for researchers to optimize the efficiency of limited surveillance resources.
Introduction
Mosquito-borne diseases such as malaria, dengue and yellow fever continue to pose a major public health burden throughout much of the world. Gene drive-modified mosquitoes have been proposed as a potentially transformative tool to complement currently-available tools by biasing inheritance in favor of an introduced allele intended to spread through a population [1]. Progress has been made in Anopheles malaria vectors towards two general classes of gene drive strategies: i) “population replacement”, whereby inheritance is biased in favor of an allele that confers refractoriness to pathogen transmission [2, 3], and ii) “population suppression”, whereby vector populations are suppressed by biasing inheritance in favor of an allele that induces a severe fitness cost or sex bias [4, 5]. In Aedes arboviral vectors, a “split drive” system has been engineered with Cas and guide RNA drive components at separate loci [6]. The potential spread and scale of impact of this technology is promising; however, surveillance programs present a major cost driver as they must scale with the intervention [7, 8].
Surveillance for gene drive projects will be required to monitor the effectiveness of the strategy at field sites, as has been done for previous self-limiting genetic control projects [9]; however, a more demanding task will be to detect unintended spread of gene drive alleles beyond field sites, and to detect the emergence of alternative alleles both within and beyond field sites. One concern for these systems is the emergence of drive-resistant alleles which, especially for population suppression strategies, would have a significant fitness advantage over intact drive alleles, leading vector populations to rebound [10, 11]. This is also a concern for population replacement strategies, as when the drive has spread and there are fewer cleavable wild-type alleles remaining, less costly resistant alleles may replace the drive alleles, reducing their duration of impact [12]. Another concern for population replacement strategies is the emergence and spread of drive alleles lacking a functional effector gene [13].
For spread beyond field sites, open questions relate to the optimal density and placement of traps and the frequency of sampling required to detect gene drive alleles, drive-resistant alleles or non-functional effector genes while they can still be effectively managed. Similar questions relate to the spread of new alleles conferring resistance to other interventions, such as bednets or indoor residual spraying with insecticides. Lessons may be learned from studies of invasive species, a key result for which is that early detection is critical to minimizing invasion impact, preserving the possibility of local elimination, and maximizing the cost-effectiveness of surveillance programs [14, 15].
To this end, we present MGSurvE: an analytical framework that optimizes trap placement for surveillance of mosquito populations such that the time to detection of an allele of interest is minimized. MGSurvE takes into account biological features of mosquitoes and the landscapes they inhabit - namely, resources required by mosquitoes (e.g., blood and sugar-based food sources and aquatic breeding sites) and movement of mosquitoes between these resources on a landscape. It also accommodates traps with differing attractiveness profiles. MGSurvE may be used in parallel with MGDrivE [16] or MGDrivE 2 [17] to determine the expected distribution of times to detection or the number of individuals having the allele of interest at this time point. We describe how to set up, run and interpret output from MGSurvE, and provide examples of trap placement optimization for an Aedes aegypti population in Queensland, Australia, and an Anopheles gambiae population on the tropical island of São Tomé, São Tomé and Príncipe. We then conclude with a discussion of future modeling needs and applications for genetic surveillance of mosquito populations.
Design and Implementation
MGSurvE provides a computational framework to distribute mosquito traps through a landscape such that the time to detection of an allele of interest is minimized. To do so, the MGSurvE package includes three major components, described here: i) “landscape specification,” in which mosquito sites (or groups of sites) are attributed to nodes, with movement rates between nodes determined by movement rules and dispersal kernels, ii) “trap optimization,” in which the spatial distribution of a given number of mosquito traps is optimized by minimizing the expected time for an allele of interest to reach the device, as determined by an optimization routine, and iii) “analysis and visualization of results,” in which optimization reports are exported, and landscapes including traps may be visualized (Fig 1) These components are reflected in the structure of the codebase, which is developed in Python [18]. We now describe the model components here, with the mathematical representation provided in the S1 Text.
The MGSurvE package includes three major components, reflected in the codebase, to distribute mosquito traps through a landscape such that the time to detection of an allele of interest is minimized: (A) landscape specification, (B) optimization of trap distribution, and (C) analysis and visualization of results.
Landscape Specification
Before the distribution of traps can be optimized, a landscape must first be specified. In MGSurvE, the landscape is a metapopulation within which discrete mosquito population nodes are distributed. The appropriate scale at which populations are modeled depends on the species of interest and the resolution at which optimized trap placement is desired. For instance, a household scale may be adequate for Ae. aegypti populations, which are thought to be relatively local dispersers [19], while a village scale may be more appropriate for An. gambiae populations, which disperse over greater distances [20]. Nodes in MGSurvE may also represent specific resources - e.g., blood and sugar sources for feeding, and water sources for egg-laying - the inclusion of which allows traps to be distributed in relation to these. Landscapes in MGSurvE may be sex-specific, which is particularly relevant if specific resources are included, as only females blood-feed and lay eggs, while both females and males sugar-feed.
Once a point set of mosquito population nodes has been defined, the next step is to define the daily per-capita movement probabilities between each pair of nodes. Movement is assumed to be Markovian (i.e., the conditional distribution of future states depends only on the current state), and is calculated from dispersal kernels, which derive movement probabilities from the distance between each coordinates pair. The base MGSurvE implementation provides functions to implement exponential decay, long-tailed exponential and zero-inflated exponential kernels; which encompass a basic family of short-distance flight-types for mosquitoes. The zero-inflated exponential, for example, takes into account the Aedes’ tendency to dwell in a given point only to fly to nearby locations; whereas Anopheles disperse further from their immediate neighborhood, which can be characterized by a decaying-exponential kernel. However, the MGSurvE framework is not limited to these, and any function that takes two node coordinates and the required parameters can be defined and used. In the event that specific resources are included in a landscape, movement probabilities are modified by a “masking matrix,” which is determined by the resource type of the mosquito’s current node. For instance, a mosquito currently in a node with blood-feeding resources may be more likely to seek a node with water resources for egg-laying. This type of movement is similar to that of the MBITES framework (Mosquito Bout-based and Individual-based Transmission Ecology Simulator) [21].
With a point set and movement probabilities defined, the final step in specifying the landscape is to define and incorporate traps, the positions of which will be updated through the iterations of the optimization process. MGSurvE can incorporate a wide range of traps (e.g., BG Sentinel traps, CDC light traps, ovitraps, etc.), which may differ in their attractiveness as defined by parameters and attributes such as mean radius of attractiveness, mosquito sex, and resource type of the current mosquito node. For instance, an ovitrap will be most likely to attract nearby female mosquitoes that are currently in a node with a food resource and hence may soon seek an egg-laying site. Of note, specific traps can be flagged as “immovable,” so the positions of other traps may be optimized given the fixed trap locations. The trap attractiveness profiles are used to modify the movement probabilities of the movement matrix, and it is this modified matrix that is used by the optimization algorithm to optimize trap placement. A demonstration of landscape specification on a six-node metapopulation with resource types is provided in Fig 2.
(A) A metapopulation consisting of six mosquito population nodes is depicted on the left, with a corresponding movement matrix depicted on the right (shades represent daily per-capita movement probabilities, with lighter shades representing less movement, and darker shades representing more movement). Here, movement probabilities depend only on distance, and are derived from a zero-inflated exponential dispersal kernel with a staying probability of 0.75 and a mean dispersal distance, conditional upon movement, of 1. (B) The same metapopulation is depicted with resources attributed to nodes on the left (circles represent blood-feeding sites, and triangles represent water/egg-laying sites). The corresponding movement matrix is depicted on the right. A masking matrix is used to modify movement probabilities according to the resource type of the mosquito’s current node (e.g., to account for the fact that a recently blood-fed mosquito is more likely to seek a node with water for egg-laying, etc.). (C) Two traps with mean radii attractiveness of 1 (red) and 0.5 (green), and mean amplitudes of 0.5 and 0.3, respectively, are incorporated into the metapopulation with resources attributed, depicted on the left. The coordinates and attractiveness profiles of the traps are used to modify the movement matrix, depicted on the right. Here, τ represents the trap-modified version of the movement matrix from panel B, υ represents the attractiveness of the traps to mosquitoes in the metapopulation nodes, I represents the identity matrix, and 0 represents a matrix of zeros. The structure of the additional rows and columns reflects the fact that traps are absorbing.
Optimization of trap distribution
MGSurvE makes use of a genetic algorithm (GA) to optimize trap placement, using the DEAP framework (Distributed Evolutionary Algorithms in Python) [22], by default. GAs are a subset of evolutionary algorithms that search solution space, encoded by “chromosomes,” using biologically-inspired operators such as mutation, crossover and selection [23]. In the case of MGSurvE, chromosomes consist of a list of alleles, each of which contains information pertaining to a trap. MGSurvE considers two classes of optimization problems: i) “discrete optimization,” in which traps may only be placed within the set of currently-listed population nodes, and ii) “continuous optimization,” in which traps may be placed anywhere in the landscape. Discrete optimization may be appropriate for applications on a larger spatial scale - e.g., for cases where population nodes are villages and traps may only be placed within villages. Continuous optimization may be appropriate for applications on a finer scale - e.g., where nodes represent specific resources (blood, sugar or water sources), and traps are placed relative to these. For discrete optimization, the chromosomes of the GA consist of a list of trap IDs (identification numbers), while for continuous optimization, the chromosomes consist of a list of coordinates representing trap longitude and latitude.
In each iteration of the optimization, the GA applies mutation and crossover operations and selects the fittest chromosomes, as defined by the “fitness function,” for the next iteration. MGSurvE provides the following extensions to the base GA algorithms of the DEAP framework [22], from which the user may select:
Mutation: Extensions are provided to the Gaussian floating-point mutation operator for the continuous-optimization case, and a replacement mutation operator for the discrete optimization case.
Crossover: An extension is provided to the “blend” crossover operator of the base package. A “uniform” crossover operator is provided for both continuous and discrete optimization cases.
Selection: A default fitness function is provided that calculates the maximum or average expected time for a given mosquito to reach a trap over all possible origin sites on the landscape. Optimization may consider the female-only, male-only or female-and-male case. In the female-and-male case, separate female and male movement matrices are constructed, modified to include sex-specific trap attractiveness profiles, parallel optimization takes place, and preferential capture of one sex over the other may be weighted within the fitness function.
Other mutation and crossover operators [24, 25] may be used instead of the ones provided by either DEAP [22] or MGSurvE, as long as they adhere to the structural requirements of both frameworks.
Analysis and visualization of results
MGSurvE provides a number of functions to analyze and visualize results from the trap placement optimization procedure. Landscape and optimization reports are generated and exported to disk for performance checks and further analysis. Optimal trap placement can be plotted alongside the distribution of mosquito population nodes, with examples provided in the following use case section and Figs 2-4. MGSurvE’s plots are fully compatible with matplotlib [26], and the movement matrices generated can be exported to disk and mosquito spatial simulation frameworks such as MGDrivE [16], MGDrivE 2 [21] and MBITES [21]
Results
To demonstrate how the MGSurvE framework can be used to distribute traps on a landscape in order to minimize time to detection of an allele of interest, we compute and visualize optimal trap placement for two example species and landscapes: i) an Ae. aegypti population in the suburban landscape of Yorkeys Knob in Queensland, Australia, and ii) an An. coluzzii population on the island of São Tomé, São Tomé and Príncipe. Code for these examples is available at the MGSurvE repository (https://github.com/Chipdelmal/MGSurvE).
Discrete and continuous optimization on a suburban landscape (Ae. aegypti in Queensland, Australia)
Here, we demonstrate the application of MGSurvE to distribute traps in order to minimize time to detection of an allele of interest for Ae. aegypti populations in the suburb of Yorkeys Knob 17 km northwest of Cairns, Queensland, Australia. Yorkeys Knob was a trial site for a successful release of Wolbachia-infected mosquitoes in 2011 [27] (Fig 3B). Ae. aegypti is a relatively local disperser [28], and so households serve as an appropriate population node for the landscape. Resource types do not need to be specified, as a household provides all the feeding and breeding resources required by Ae. aegypti. Household coordinates in Yorkeys Knob were sourced from OpenStreetMap (https://www.openstreetmap.org/), and daily movement probabilities between households were derived from a zero-inflated exponential kernel with a daily staying probability of 72% [19, 29], and a mean dispersal distance conditional upon movement of 54 m [28].
Household-based mosquito population nodes are depicted for Yorkeys Knob (B), a suburb 17 km northwest of Cairns in Queensland, Australia. Daily movement probabilities between households are derived from a zero-inflated exponential kernel with a daily staying probability of 72% [19,29], and a mean dispersal distance conditional upon movement of 54 m [28]. The genetic algorithm of MGSurvE distributes traps such that the mean (B1-2) and maximum (B3) expected times for a given mosquito to be trapped, considering all possible origin sites on the landscape, is minimized (C). (A) We consider two types of traps with distinct attractiveness profiles represented by: i) an exponential kernel (green) with an amplitude of 0.5 and a mean radius of attractiveness of 15.88 m, and ii) a sigmoidal kernel (magenta) with an amplitude of 0.5, an inflection radius of 16 m and a shape parameter of 0.25. See S1 Video, S2 Video and S3 Video for animations of the iterations of the optimization process (also viewable at https://youtube.com/playlist?list=PLRzY6w7pvIWpVx-Zh9x9IoeMwlfFMH8yo)
In optimizing trap placement, we consider two types of traps with distinct attractiveness profiles represented by: i) an exponential kernel with a mean radius of attractiveness of 16 m [30], and ii) a sigmoidal kernel with an inflection radius of 16 m and shape parameter of 0.25 (Fig 3A). Both traps have an amplitude of 0.5, meaning that, for a trap placed within a population node, the ratio of mosquitoes that enter the trap to those that do not per time-step is 0.5:1 (i.e., in this case, a third of mosquitoes in the same node as the trap enter the trap per day). In Yorkeys Knob, 16 traps were assigned, to reflect the number of traps used to monitor the Wolbachia trial at this site [27]. Half were assigned the exponential kernel, and half were assigned the sigmoidal kernel, to demonstrate the simultaneous placement of two trap types. We considered both discrete and continuous optimization cases to compare their results, although using the discrete case is preferred due to the fact that traps would likely be assigned to households without a more precise location being specified. The placement of each trap was then optimized according to two fitness functions - minimizing the mean and maximum expected times for a given mosquito to be trapped, considering all possible origin sites on the landscape. The GA implemented default mutation and crossover operators. The code for this analysis is available in the S2 Text and at https://github.com/Chipdelmal/MGSurvE/tree/main/MGSurvE/demos/YKN, and the resulting trap distributions are depicted in Fig 3B1-B2 (for the case of the mean expected time for a mosquito to be trapped) and Fig 3B3 (for the case of maximum expected time for a mosquito to be trapped). From this output, we see that the GA distributes traps throughout the landscape, often placing them within concentrations of nodes, and sometimes in regions where sub-networks connect to the main section of the landscape, all of which are consistent with faster trapping times.
Discrete optimization on an island landscape (An. coluzzii in São Tomé, São Tomé and Príncipe)
In the second example, we use MGSurvE to distribute traps in order to minimize time to detection of an allele of interest for An. coluzzii populations on the island of São Tomé, São Tomé and Príncipe. São Tomé has been identified as a suitable candidate for field trials of gene drive mosquitoes due to the presence of a single dominant malaria vector species (An. coluzzii), relative isolation from mainland Africa, and a history of ecological studies of mosquitoes on the island [31] (Fig 4B). An. coluzzii can disperse relatively large distances [28], and so villages and suburbs of comparable size serve as appropriate population nodes. Due to the scale of these localities, resource types do not need to be specified. Locality coordinates in São Tomé were sourced by aligning locations in the São Tomé and Príncipe census (https://projectsportal.afdb.org/dataportal/VProject/show/P-ST-KF0-001) with locations in Google Maps (https://www.google.com/maps), and the DBSCAN algorithm (Density-Based Spatial Clustering of Applications with Noise) [32] was used to aggregate nearby localities in order to maintain a minimum distance of 500 m between nodes. Daily movement probabilities between localities were derived using an ecology-motivated algorithm in which mosquito movement is simulated as correlated random walks through a resistance landscape, with resistance being provided by elevation and land use [33]. Data from mark-release-recapture experiments on An. gambiae sensu lato [20, 30, 34] were used to calibrate the movement model according to a daily staying probability of 0.05 and mean lifetime dispersal distance of 7.0 km.
Mosquito population nodes are depicted for São Tomé (B), an island 225 km west of the coast of Gabon. Population nodes represent villages and suburbs of comparable size, aggregated by a clustering algorithm [32] to maintain a minimum distance of 500 m between nodes. Daily movement probabilities between localities are derived using an ecology-motivated algorithm in which mosquito movement is simulated as correlated random walks through a resistance landscape calibrated to a daily staying probability of 0.05 and mean lifetime dispersal distance of 7.0 km [20, 34, 35]. The genetic algorithm of MGSurvE distributes traps such that the mean expected time for a given mosquito to be trapped, considering all possible origin sites on the landscape, is minimized (C). We consider optimally placing 5 (B1), 10 (B2), 15 (B3) and 20 (B4) traps on the landscape, each having an exponential kernel with a mean radius of attractiveness of 24 m [30] and an amplitude of 0.5 (E). See S4 Video for an animation of the iterations of the optimization process (also viewable at https://youtu.be/7Dg8DPtzqmw).
In optimizing trap placement, this time we consider a variable number (5-20) of a single type of trap with an attractiveness profile represented by an exponential kernel with a mean radius of attractiveness of 24 m [30] and an amplitude of 0.5 (Fig 4A). We used discrete optimization due to the spatial scale, at which traps are most likely to be placed within localities. The placement of each trap was optimized according to a fitness function corresponding to minimizing the mean expected time for a given mosquito to be trapped, considering all possible origins on the landscape. The GA again implemented default mutation and crossover operators. The code for this analysis is available in the S2 Text and at https://github.com/Chipdelmal/MGSurvE/tree/main/MGSurvE/demos/STP, and the resulting trap distribution is depicted in Fig 4B1-B4 for the cases of 5, 10, 15 and 20 traps, respectively. From this output, we see that the GA distributes traps throughout the landscape while emphasizing its least accessible regions (west and south) - a result of the fitness function representing the maximum time to detection beginning anywhere on the landscape, and hence prioritizing the least connected nodes.
Availability and Future Directions
MGSurvE is installable through PyPI and is available at https://pypi.org/project/MGSurvE/. The software has been tested to work on Python 3.9 and above and the source code is under the GPL3 License and free for other groups to use and extend as needed. Mathematical details of the model formulation are available in the S1 Text, and documentation for all MGSurvE functions are available at the project’s website at https://chipdelmal.github.io/MGSurvE/. For examples of how to set up scripts, including several use case demonstrations, we encourage readers to visit https://chipdelmal.github.io/MGSurvE/build/html/demos.html. Visualizations of several use case examples are also available on our YouTube playlist at https://youtube.com/playlist?list=PLRzY6w7pvIWrOSwOlu_MXbOr14wx9xuwT.
We are continuing to develop the MGSurvE software package and welcome suggestions and requests from the research community regarding future directions. Current developments include: i) incorporating additional trap attractiveness kernels, and calibrating these to available ecological data, ii) incorporating new fitness functions to capture a wider range of priorities for trap placement, and iii) including optimization algorithms additional to GAs, such as particle swarm optimization [36], which may have reduced risk of becoming stuck in local optima. We are also validating optima obtained through MGSurvE by running parallel simulations in MGDrivE [16] or MGDrivE 2 [17] to determine the expected distribution of times to detection of an allele of interest. Notably, MGSurvE calculates time to detection purely from an adult movement matrix, ignoring mosquito life history and intergenerational movement. We expect this to provide a sufficiently accurate metric from which to compare relative times to detection; however, simulations incorporating life history will allow the limitations of this approach to be explored, and for detection times to be corrected in the context of sessile juvenile forms.
We have proposed MGSurvE to optimize trap placement in order to minimize the time to detection of gene drive and alternative alleles, and insecticide-resistant alleles in spatially-explicit mosquito populations. While MGSurvE was designed with mosquito species in mind, optimal trap distribution is a broad ecological problem, particularly for invasive species management [14, 15]. In cases where minimizing time to detection is the goal for optimizing trap placement, we believe that formulating the problem as an absorbing Markov chain, where traps represent the absorbing states, could be widely applicable for many other species.
Funding statement
HMSC and JMM were supported by funds from the Bill & Melinda Gates Foundation (INV-017683) and the UC Irvine Malaria Initiative awarded to JMM. JMM was supported by a National Institutes of Health R01 Grant (1R01AI143698-01A1) awarded to JMM. DSL was supported by funds from the Bill and Melinda Gates Foundation (INV 030600), and National Institute of Allergies and Infectious Diseases (R01 AI163398), awarded to DSL. The funders had no role in the study design, data collection and analysis, decision to publish, or preparation of the manuscript.
Supporting Information
S1 Text. Description of the modeling framework. A description of the mathematical equations that govern mosquito movement and trap attractiveness implemented as an absorbing Markov chain.
S2 Text. Example use cases in suburban and island landscapes. Code used to optimize trap placement for Ae. aegypti in Queensland, Australia and An. coluzzii in São Tomé, São Tomé and Príncipe, as described in the manuscript.
S1 Video. Iterations of discrete optimization algorithm on suburban landscape (minimizing mean detection time). Video depicting iterations of genetic algorithm to optimize trap placement for Ae. aegypti in Queensland, Australia (https://youtu.be/LWOph4feL6A).
S2 Video. Iterations of continuous optimization algorithm on suburban landscape (minimizing mean detection time). Video depicting iterations of genetic algorithm to optimize trap placement for Ae. aegypti in Queensland, Australia (https://youtu.be/CFRuDPlfyO4).
S3 Video. Iterations of discrete optimization algorithm on suburban landscape (minimizing maximum detection time). Video depicting iterations of genetic algorithm to optimize trap placement for Ae. aegypti in Queensland, Australia (https://youtu.be/uQX_dt9gCWA).
S4 Video. Iterations of discrete optimization algorithm on island landscape (minimizing mean detection time). Video depicting interactions of genetic algorithm to optimize trap placement for An. coluzzii in São Tomé, São Tomé and Príncipe (https://youtu.be/7Dg8DPtzqmw).
Acknowledgments
We thank Dr. Tomás León and Dr. Jared Bennett for steering the initial phase of package development, and for testing software applications. We also thank Elijah Bartolome, Topiltzin Hernández Mares, Lillian Weng, Xingli Yu, Ayden Salazar, and Joanna Yoo for help with developing and testing the package.