1. What is HOM?
  2. How does it work?
  3. Who uses HOM?
  4. How will students benefit from HOM?
  5. How will teachers benefit from HOM?
  6. What are the disadvantages of HOM?
  7. Who develops HOM?
  8. Why Java?
  9. What does the interface comprise?
  10. What physiology is modelled?
  11. What happens if Jason dies?
  12. What advanced features are there?
  13. Why is the behaviour of HOM inconsistent?
  14. 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?

  1. 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.
  2. 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.
  3. 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.
  4. 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
  5. 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?

  1. 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.
  2. It can be referenced in course literature, for example alongside equations which can be seen in action.
  3. It could be used as an adjunct to practical classes, for example after an animal practical, or as an alternative to impractical experiments.
  4. 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 illness states.

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?

  1. 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.
  2. 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).
  3. 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 oxygen debt.
  4. 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.

Why Java?

Java is modular, extensible, multi-platform, and can be deployed on the internet.

What does the interface comprise?

Screenshots of HOM in action
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.

What physiology is modelled?

  1. CVS
  2. Respiratory
  3. Metabolic
  4. Muscle
  5. Kidney
  6. GI tract
  7. Skin
  8. Brain

What advanced features are there?

  1. Drugs: drugs can be created arbitrarily from a text file, with user-definable properties
  2. IV infusions: Any fluid can be given orally, as an IV bolus, or continuously at a specified rate, with added drugs.
  3. Customisable interface and scenarios
  4. ECG, blood film, skin colour - all calculated from current physiological values.
  5. Signs and symptoms database, integrated with physiology to give 'realistic' feedback on abnormal values
  6. 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.
  1. 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.
  2. 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.
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.

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 discussion page.

What physiology is not implemented yet?