Keywords: xpp bard
Description: This document describes three Matlab utilities that provide an elementary interface between Matlab and Bard Ermentrout�s XPP software. They have been tested on Linux and Windows platforms, but not
This document describes three Matlab utilities that provide an elementary interface between Matlab and Bard Ermentrout�s XPP software. They have been tested on Linux and Windows platforms, but not yet on Macs. There should be no problem using these functions on Macs, but please let me know if there are. I have assumed the name of the XPP command in Mac OS is xppaut. If this is not the case on your computer then the command string can be passed explicitly to the Matlab function that calls XPP (see below).
The principal use of the utilities is to run large batch jobs which involve several range parameters, or to change parameters or initial conditions interactively with XPP as part of a numerical search algorithm. Matlab�s internal differential equation solvers are often slower than their equivalent implementations in XPP, and for large coupled systems they are less intuitive to code in my opinion. While there is some overhead involved in loading an ASCII-format simulation data file into Matlab for every XPP batch run, I have found the loss of speed a small price to pay for the added convenience. I compared XPP�s internal range facility, over two parameters, with an equivalent Matlab script that implemented the same ranges, and found that my Matlab scripts ran approximately 30% slower. � (Omitting auxiliary variables from the version of the ODE file manipulated by these utilities can cut this overhead substantially.)
Additionally, these utilities provide a means to post-process XPP simulation data with any of the statistical functions built into Matlab, or your own. For instance, the included utility GetCrossings finds threshold crossings in continuous-time data (e.g. spike times in neural membrane potentials), from which spiking frequencies are easily computed. This means that less experienced XPP users may therefore find that they can interact with XPP without having to learn to write dynamically linked C library functions, or to cunningly hack �exotic� XPP solutions to their data processing needs (no offense, Bard :).
Two utilities ( ChangeXPPodeFile and ChangeXPPsetFile ) are designed to provide a simple way for the user to change initial conditions and parameter values of named variables and parameters in either an XPP �.ode� or �.set� file that you have already set up. Keeping backups of these files is very important before you let these utilities stomp all over your carefully-tuned parameter set. The values to be changed in the XPP files are set up using a Matlab structure array, which resembles a C structure array. For instance, if you wanted to change two parameters and one initial condition for an ODE, you could build the following structure array in a Matlab script. The array can be in any order, provided every entry is a structure having precisely three fields: type (string, either �IC� or �PAR�), name (string, a valid name of a variable or parameter in the ODE file), and val (any finite real number).