I've been learning a bit of Rust in the past few
weeks, mostly by writing some basic SIR-type models (both as ODE systems, and
as continuous-time and discrete-time Markov chains).
It takes most (maybe all) of the things that I like about
OCaml and adds more great features and safety guarantees,
thanks to its ownership model and lifetimes.
It's also very fast (no garbage collector, zero-cost abstractions) and has
fantastic tooling, although compilation
times can be very long, and package ("crate") availability can be very
hit-or-miss.
I've enjoyed it enough that I'm looking forward to writing more Rust code in
the future.
Although I've no plans to rewrite pypfilt or
epifx in Rust any time soon!
Two firsts in one: "Model selection for seasonal influenza
forecasting"
is Alex's first first-author
and my first last-author paper.
It will appear in an upcoming issue of Infectious Disease Modelling, a new
open access journal with a focus on the interface between mathematical
modelling, data analysis, and public health decision support.
This paper presents a likelihood-based method for selecting models that best
predict future data (when conditioned on past data), and uses it to evaluate
the predictive skill of disease transmission models that incorporate various
features, such as inhomogeneous population mixing and climatic effects on
transmission.
I won't say any more here; if you're interested, read the paper!
The source code used to generate all of the results presented in this
manuscript is available under
the BSD 3-Clause license.
Originally prepared as a simple demo for 2016 Open Day, this
interactive model
allows the viewer to explore how a variety of epidemiological parameters
affect the size and duration of an infectious disease epidemic, such as:
- The basic reproduction number \(\left(R_0\right)\), the average number of
persons that a single infectious individual will infect in an entirely
susceptible population;
- The delay between being infected and becoming infectious
\(\left(\frac{1}{\alpha}\right)\);
- The duration for which an individual is infectious
\(\left(\frac{1}{\gamma}\right)\);
- The duration for which an individual is protected from re-infection
\(\left(\frac{1}{\sigma}\right)\);
- The degree to which individuals mix inhomogeneously \(\left(\eta\right)\);
and
- The proportion of the population \(S(0)\) that is initially susceptible.
This is a deterministic SEIR meta-population model, where each individual
in the population is either susceptible to infection, has been exposed to
the pathogen, has progressed to being infectious, or has recovered from
infection and has (temporary or permanent) protection from reinfection.
The source code is
available under the BSD
3-Clause license.
A year has passed since my last post, and much has happened.
I contributed to 6 government reports, submitted 5 first-author papers, became
a reviewer for 4 more journals, gave 3 talks about our influenza forecasting
project, enrolled 2 jurisdictions in our forecasting project, and
joined 1 surveillance system.
Here is the 2015/16 financial year recap …
Thanks to Daniel Hurley from the University of Melbourne
Systems Biology Laboratory, the
whole-kidney model
that I produced with S. Randall Thomas is now available as a
virtual environment
that is straightforward to install and get running.
- Ensure that Git,
Vagrant and
VirtualBox are installed; then
- Run the following commands in a terminal:
git clone https://github.com/uomsystemsbiology/rgm_kidney_vagrant.git
cd rgm_kidney_vagrant
vagrant up
This will open a virtual machine that includes the pre-compiled model
executable, allowing you to run model simulations and reproduce any of our
manuscript figures by double-clicking on a desktop icon!
Our first trial of live influenza forecasting for metropolitan Melbourne is
now available
online, using
publicly available surveillance data.
It will be very exciting to see how the forecasts evolve in the coming months!
And yes, the animated plots are built with D3.js
.
In a recent modelling
study
we extended an existing model of afferent arteriole autoregulation
(originally presented by
Feldberg et al.) by adding an
explicit glomerulus and calculating model SNGFR in addition to afferent blood
and plasma flows.
See this description of our
extensions, the updated model equations, and a number of plots.
The source code is available
under the BSD 3-Clause license.
"Dominant factors that govern pressure natriuresis in diuresis and
antidiuresis: a mathematical
model"
(a collaboration with Anita T. Layton) has been accepted by AJP Renal
and is now available online in advance of final publication.
Building on observations in my previous modelling
study,
we investigated how pressure natriuresis—in both diuresis and
antidiuresis—can be influenced by changes in medullary blood flow
autoregulation and by inhibition of transport in the proximal convoluted
tubule (PCT).
We found that inhibited reabsorption in the model PCT (to degrees consistent
with experimental measurements) is sufficient to stimulate a pressure
natriuresis.
The challenge here is that there is insufficient experimental data to
quantify the pressure-dependent reabsorption inhibition in the PCT, but it
is precisely this response that appears to play the single largest role in
driving pressure natriuresis.
Our modelling study establishes a reasonable benchmark for this quantitative
relationship, which can be applied to future whole-kidney models.
My article "Hormonal regulation of salt and water excretion: a mathematical
model of whole-kidney function and
pressure-natriuresis" (a
collaboration with S. Randall Thomas), has been published in AJP Renal.
It was also selected as the subject for an Editorial Focus essay,
"Advancement in integrated models of renal function: closing the gap between
simulation and real life",
written by Branko Braam.
We present a whole-kidney model that incorporates glomerular and tubular
function, differentiates cortical and medullary function, and describes
vascular and reabsorptive characteristics of the kidney.
Model simulations explore the regulation of renal function by aldosterone,
angiotensin II, and antidiuretic hormone (ADH), and also the inhibition of
sodium reabsorption in response to the administration of a thiazide and of
amiloride.
This model of integrated renal function is quite successful in simulating
renal function, although there are of course several caveats.
The article also provides a broad survey of both renal modelling and the
experimental literature.
In addition to the manuscript itself, interactive versions of a key
figure—a comparison of model excretion rates against data from a number
of experimental studies of acute pressure natriuresis in the rat—allow
the viewer to examine each data series in isolation and refer back to the
original articles.
In "Cardiorenal Syndrome: An Evolutionary Point of
View",
Ito makes a number of very interesting observations about the evolutionary
history of the mammalian kidney, and potential implications this might have
for our organs' ability to cope with high salt intake, obesity, and a
sedentary lifestyle.
A teleological perspective of the renal architecture is also introduced, and
serves to illustrate hypotheses concerning the localisation of vascular damage
("strain vessels") and ischemic injuries.
Finally, the article is exceptionally concise and clear, without sacrificing
detail for brevity.