- What is HOM?
- How does it work?
- Who uses HOM?
- How will students benefit from HOM?
- How will teachers benefit from HOM?
- What are the disadvantages of HOM?
- Who develops HOM?
- Why Java?
- What does the interface comprise?
- What physiology is modelled?
- What happens if Jason dies?
- What advanced features are there?
- Why is the behaviour of HOM inconsistent?
- What physiology is not implemented yet?
What is HOM?
HOM is a computer program written in Java
that is intended to be an aid to the teaching
of human physiology. It is a
simulated numerical model of physiology, that runs in real or
accelerated time, and allows the user to dynamically perturb the
environment, and observe changes in the system.
Who uses HOM?
HOM was intended primarily to be useful to undergraduate Biologists and Medics.
The program was first used in 2005 at the Department of Physiology
at Cambridge University as an alternative/adjunct to some practical experiments.
It is used in lectures to demonstrate, and by large classes in a lab with over
40 PCs running individual copies of the program. It is hoped that HOM could
eventually also be useful to physiology researchers in hypothesis testing,
How does it work?
The model has a core of 150 numerical variables, plus other values that
determine the behaviour of the system. In total, the exact state of the
system at any instant can be specified by 538 double-precision values.
These values interact with each other by a series of first-order coupled
differential equations. Variables can be graphed on the screen, and some
can be altered using controls.
Who uses HOM?
HOM is used by staff at the
Department of Physiology at the University of Cambridge for teaching of the
Medical and Veterinary Sciences tripos (MVST) Part I (Homeostasis) course and
Natural Sciences Tripos physiology. It is used for practical classes in a lab
containing about 40 independent PC's running HOM under Windows. Students follow
a practical handout which guides them through a physiological scenario, and
explains the equations behind the appropriate part of the model. Advanced students
can then experiment further with the model.
How will students benefit from HOM?
- Students learn much better if they are given examples of the
principles they are learning. Learning is also improved by seeing
animated or moving demonstrations. Memory is even stronger for things
that are learned by interactive experiences, in which there is a direct
observable effect of the student's actions. We reason that, in learning
the principles of systems physiology, it is beneficial for students to
perform experiments themselves.
- Repeatability: Experimental setups in physiology are often
ridden with noise. This is definitely an important principle for
students to learn, as it has consequences in the application of
physiology to real life. However, it is often important for students to
be able to repeat experiments many times, with various parameters
altered; not only is this more practicable with HOM, but also gives
more comprehensible results.
- Flexibility: As it is written in Java, HOM can in principle be
used by students at home as well as in the lab. This opens the
possibility of 'experimental' homework or assignments, and could free
up lab time.
- Ethics: An important aspect of physiology is what happens in
extreme situations. Although we have all performed experiments on
ourselves and each other that could be thought of as 'unpleasant',
there are obvious limits on what we are allowed to do in a classroom -
both ethically and in terms of resources. HOM allows us to
- Bridge the gap between animal experiments and human
experiments. For example after a rat practical, students find it
insightful to repeat similar experiments on the human model, and
observe differences in the response, and also how the normal ranges of
various parameters are different in humans.
- Repeatedly kill the model or inflict other disturbances that
are not possible in reality
- Interactions: Homeostasis is about the way in which a system
returns itself to the original state after a disturbance is added. An
important part of it is observing how the various ways in which
corrections are made can interact with each other. The simulation
allows detailed examination of these effects that is not available in a
theory (due to mathematical limitations), nor in real experiments (due
to difficulties in measuring many variables at once).
How will teachers benefit from HOM?
- Teachers may use HOM as an adjunct to their lectures, for
example it can be used alongside a Powerpoint presentation, running on
the same computer.
- It can be referenced in course literature, for example
alongside equations which can be seen in action.
- It could be used as an adjunct to practical classes, for
example after an animal practical, or as an alternative to impractical
- It is an excellent starting point for linking with clinical
medicine. Pathophysiology is never formally taught at Cambridge, and as
far as HOM models normal humans, it can potentially also model several
What are the disadvantages of HOM?
It can be argued that students will lose out on the most valuable part
of practicals - that is, how to execute experiments, and how to cope
with noisy, real-life situations. Although HOM has an option to
introduce noise into measurements, there will never be an alternative to
actually performing experiments.
HOM is also much harder to fathom when things go wrong. In an
experiment, there is always the equipment to blame, or perhaps the
subject was abnormal in some way. With software that follows as many
differential equations as HOM, the behaviour can sometimes be difficult
to explain. Although there is always an explanation for why the model
produces certain results, it is not always an intuitive one! Sometimes,
the problem is in the programming, but often it is because not enough is
known about the physiology. For example, HOM can become fluid overloaded
after prolonged exercise (perhaps 10 hours), because there is prolonged
vasodilatation, an overcompensatory tachycardia resulting in a blood
pressure rise, and sympathetic activation.
Who develops HOM?
The idea of HOM was an original program 'PHIC' written in Forth
by Dr. Roger Carpenter at the Department of Physiology, Cambridge University.
It was then extended and refashioned
in Java by Sanjay Manohar, from 2001 to the present (2010 at the time of writing).
It is currently a closed-source project that is undergoing continuous
change and restructuring. Many developments have been made due to keen feedback
from the staff and student users in the department of Physiology.
What happens if Jason dies?
First of all, don't panic. You are in a controlled environment, and you possess
all the necessary clinical skills to treat him. Make sure the simulation is paused, and switch to 'real-time' mode (move the time
compression slider fully to the left). This buys you time to think.
Try to work out the cause of death. This is not always obvious. But remember the only
emergencies that really kill people: Hypotension (due to hypovolaemia, heart failure or septic shock),
Hypoxia, Hypoglycaemia, Hypothermia, and Hyperkalaemia. Jason also sometimes dies from cerebral
oedema (uncommon in life, but if you strap Jason to the bench so he can't eat, it's not hard to let
the plasma osmolarity fall), and brain haemorrhage (sometimes the heart is overenthusiastic about
perfusing a hypoxic brain - this is a symptom of having too coarse a timestep).
Check which common variables are out of range, using the 'Medical reports' on the tools
menu (shortcut Ctrl+M).
Rectify the basic parameters necessary for life. You can use the controls or
you can rectify them directly by typing commands like
'ECF.K=0.004' to return potassium back to normal, or 'muscle.O2Debt=0' to restore any
Gingerly click on the play button. This will attempt to restart Jason's heart. It may
not be possible to fix him, remember you are not God. And in real life the chances
of recovering from an arrest are very slim indeed.
You may well need to press the 'Reset whole simulation' button.
Java is modular, extensible, multi-platform, and can be deployed on the
What does the interface comprise?
Screenshots of HOM in action
- Scrolling log and scrolling graphs
- View or alter certain variables
- Alter time compression
- Symptoms and examination
- Basic investigations
- Basic interventions
- Load, save, print, rewind
The interface and physiology is customisable:
A set of these parameters can be stored as a 'scenario', and can be
called up when the program is started.
- Initial variable values
- Physiological parameters
- Preset combinations of graphs and controls
- Reduced menu sets
- Help file (HTML)
What physiology is modelled?
- Baroreflexes, Starling’s law, Vasoconstriction
- Systolic and diastolic BP, individual organ perfusion
- 3 compartment model: ICF, ECF, Blood
- Capillary pressures and oedema
- Intracellular osmosis and electrolytes
- Intrathoracic pressure/volume
- Alveolar ventilation and water vapour
- A-a gradient and shunting
- Henderson-Hesselbach equilibrium
- Basal metabolism, Thyroxine, heat generation
- Respiratory quotient, expired gases
- Body mass, water, surface area
- Exercise and efficiency
- Oxygen consumption, delivery and debt
- Vascular autoregulation
- Autoregulation, glomerular filtration and leakage
- PCT, loop, DCT and duct reabsorption
- Na+, K+, H+, Glucose, Urea, Bicarb-
- Angiotensin, Aldosterone, ADH and erythropoietin
- GI tract
- Reabsorption and transit time
- Acidification of stomach
- Protein synthesis and breakdown, Urea/creatinine production
- Insulin production, Glycogen and fat conversion
- Ketone formation, glucose/potassium channels
- Vasodilatation, cooling
- Hunger, thirst, nausea,
- Defaecation and urination, sedation, pain
- Respiratory drive, Autonomic control
What advanced features are there?
- Drugs: drugs can be created arbitrarily from a text file, with
- IV infusions: Any fluid can be given orally, as an IV bolus,
or continuously at a specified rate, with added drugs.
- Customisable interface and scenarios
- ECG, blood film, skin colour - all calculated from current
- Signs and symptoms database, integrated with physiology to
give 'realistic' feedback on abnormal values
- Scripting: This powerful feature allows programmers to type
direct physiological commands into the HOM console, or write scripts to
mimick specific physiological effects. For example, what happens if you
shift 1 litre of plasma into the extracellular compartment? or if the
proximal convoluted tubule were to leak sodium?
Why is the behaviour of HOM inconsistent?
This is by design. The human body is by no means a predictable system,
and neither is HOM. It is important for students to appreciate the degrees
to which various parameters can affect the variability. In particular, we
should be able to compare 'noise' in the way the physiological dynamics work,
from the noise in our measurements.
There is a way of switching off this inconsistent behaviour. However this
detracts from the realism and resilience of the equations in the face of
noisy conditions. You will have to click on the time compression text and
select 'Freeze' (this forces each timestep to have a fixed duration). Then
you will have to select Options/Basic options/Use fixed seed for random
numbers. Now running HOM should produce exactly the same values every time.
HOM is a nonlinear system of differential equations, and as such is
subject to 'Sensitive Dependence on Initial Conditions' (also known as
a Deterministic Nonperiodic system - from Lorenz EN,1963). Because very
small perturbations are introduced into the equations by various factors,
no two runs of HOM will ever produce exactly the same numbers.
The precision of calculation depends on your CPU speed and current CPU load.
HOM relies on the operating system to allocate time to performing calculations.
(This can be increased by altering the thread priority, for example in Windows,
by using Task manager/Processes/Set priority.)
The approximations due to speed naturally lead to unpredictable behaviour.
Why does death (or other errors) occur at high time compressions
The precision of each calculation in the simulation
is reduced if the time compression is increased. Also, precision is reduced if
you have a slow CPU, low RAM, or if other programs are running. As the precision of
calculations is reduced, variables that undergo negative feedback will tend to
oscillate more. If a certain timestep threshold is exceeded, these oscillations
will resonate and variable values will take on erroneous values. This is what
causes the breakdown in prediction at high speeds.
In general, these can be overcome by better programming techniques and better
approximation models. This will eventually improve.
I think HOM is wrong. What should I do?
If you think that any particular predictions made by HOM are incorrect,
please discuss this immediately! There is already a list of odd behaviours that
need investigating, so things may not happen immediately. Either use the feedback
system in HOM itself - Help/Send problem to author - or go to the
What physiology is not implemented yet?
- Cardiac dynamics – e.g. ventricular filling -- Now implemented (2009)
- Lactic acidosis, phosphate and protein buffers
- Intracellular pH regulation
- Calcium metabolism and binding -- Partially implemented (2009)
- Day and night -- Now implemented (2008)
- Qualitatively altering the diet
- Adult / child / comparative physiology