The idea of developing modular software to simulate the dynamics and control of mosquito-borne pathogens originated sometime around 2009 at the Emerging Pathogens Institute, University of Florida. It took much longer than anticipated to finish. The supporting concepts have appeared in various publications. Some algorithms trace back to software packages that never launched. In retrospect, a key challenge was blood feeding, but it was not the only one.
Briefly, ramp.xds
and its supporting
satellite packages have replaced MicroMoB,
and
exDE.
David L Smith developed the prototypes in R, but it
was Sean L. Wu who turned them into the first versions of the
R-packages. In the case of MicroMoB
, the software package
was develoepd with the help of Sophie Libkind. The name
exDE
was changed first to ramp.xde,
which gave
rise to ramp.dts,
a discrete-time version of
ramp.xde.
After a few months, these two merged and were
rebranded as ramp.xds
where development continued. Stable
versions of MicroMoB
and exDE
were restored to
their last stable versions.
The following is a slightly longer and more detailed timeline:
Late in 2021,
MicroMoB
was developed as a software package to build discrete-time dynamical systems models for the epidemiology, transmission dynamics, and control of malaria and other mosquito-transmitted pathogens. The software was born late in 2021. David Smith wrote the first draft of the software. Sean Wu turned it into a software package and added a lot to it, with the help of Sophie Libkind.Late in 2022,
exDE
was developed as a software package to build and solve continuous-time dynamical systems mdoels for the epidemiology, transmission dynamics, and control of malaria and other mosquito-transmitted pathogens. Once again, it was David Smith wrote the first draft of the software. Sean Wu turned it into a software package.-
The first version of
exDE
had been designed to handle non-autonomous systems, but none of those features had been fully implemented. During 2023, new features were added. At some point,exDE
was rebranded asramp.xde
. Among the new features added were:A major change was implemented in the way
ramp.xde
handled delay differential equations. To interalize computation of terms, a new protocol was developed to add dummy variables and uselagderivs
to internalize computation of any term passed to any module. New algorithms were added to Ross-Macdonald models that compute mosquito survival and dispersal through an incubation period varying in length.Inits – initial values, had been handled in a single list, but the protocol was changed so they are now handled separately, with new functions
get_inits()
and theS3
families of functionsget_inits_L()
andget_inits_MYZ()
andget_inits_X().
A new functionupdate_inits()
resets the initial values to the last value simulated. The change avoids any issues that migh arise if two different modules used the same variable name.Indexing – indices for variables are now collected in
pars$ix
Setup – Several new functions were added to set up basic models.
Solving – The
S3
function, now calledxds_solve()
was added to solve differential equations of various classes.Outputs – The
S3
functionparse_deout()
was added to parse the output ofdeSolve
and return the orbits in a set of named lists. These lists are attached topars$outputs$orbits.
New functions were also written to compute the dynamical terms that connect the major components.Demography – Functionality was added to handle human demographic changes, including births, deaths, migration, and aging.
Hosts – An overhaul was required to handle multiple vertebrate host or vector species.
Forcing – The models have been reconfigured to model malaria as a changing baseline that has been modified by vector control. This required changes to the order of functions that implemented various aspects of forcing by weather and other exogenous variables, and to the return values for functions that computed independent effect sizes
ramp.dts
was born in April, 2024. The goal had always been to bringMicroMoB
up to the same level of functionality asexDE
/ramp.xde
but it suddenly seemed easier to cloneramp.xde
and replace the functionsramp.xds
was born when it became clear thatramp.xde
andramp.dts
had large amounts of overlapping code.