My name is Rob Blake, and I’m on the team here at Cardiosolv. I work on both the GUI software you’ve seen in the previous posts and our modeling code.
One of the strengths of our cardiac modeling software is the variety of membrane kinetic models that our users can choose from while running a simulation. These “membrane kinetic models” or “ionic models” are ordinary differential equations that describe how ions flow through the cell membrane and within the cell itself. In the literature you can find models describing the electrical behavior for nearly every different type of cell in the heart. You can find them for ventricular, atrial, and purkinje cells in a variety of species and in a variety of disease states.
Implementing one of these models from scratch takes significant effort. The newer models all build on previous work, which means tracing back through multiple paper citations to find the original equations. These equations are themselves complex– looking quickly through some of our models, I see that most of our models are composed on average of 150-250 equations just to describe a nonlinear system of 15-30 differential variables. Papers also aren’t the best vehicles for describing the exact equations used. Prose in the methods section can be ambiguous, and there might be inconsistencies within the paper itself.
Even if you have all the equations laid out clearly before you, you can still make a mistake while transcribing it to a computer. Amidst 200 equations, you have plenty of opportunities for typos and omissions. A single missing minus sign can invalidate all your results. If you’re lucky, a typo will just cause the model to blow up and produce obviously incorrect results. If you’re unlucky, then a typo could disable an effect that only shows up in pathological circumstances and you’ll never realize your error. Furthermore, it’s very hard to get feedback as you are developing the model. With the way these models are designed, they either work perfectly or they don’t work at all. If one differential variable becomes corrupted, it will often affect every other differential variable within 1-2 small steps of the code. This makes it very difficult to trace back to the cause of an error.
In recent years, implementing these ionic models has gotten easier thanks to CellML, developed by the Auckland Bioengineering Institute. CellML describes these membrane kinetic models unambiguously so you don’t have to trace back through the literature. CellML group has hundreds of models from published papers available. For each model, they provide a link to the academic reference, a list of all the equations of the model, and sample code that will help you get started using the model within a package such as CVODE. From their homepage you can download programs that can read in the CellML file and do simple simulations. They also mark up which CellML reproduce all traces from the papers in question.
CellML has come leaps in bounds in recent years. The code generation and the validated traces have only emerged within the last 1-2 years, and with them the typos in CellML have decreased dramatically. I used to set aside 2 weeks to implement a cellular model from scratch using the equations from CellML as a starting point. Now I can convert a CellML model into working code in a matter of hours. The site is a boon to researchers. It allows them to focus on the biology instead of programming. It encourages collaboration and cooperation amongst scientists and makes their results more accessible for everyone. I don’t have enough positive things to say about CellML. I find it essential in my daily work.
Despite all the good things I have to say about CellML, I do have some minor gripes about its design from a end user’s standpoint. I’ll cover these minor complaints in my next post, along with tips and tricks we use here at Cardiosolv to get around these problems.