2. Exporting C Source files
Sometimes it is of advantage to have the differential equations that
make up your model in the form of source code for some programming
language. This allows you to integrate your model into some
experimental analysis software that you might have written, or some
analysis software that expect the input as C source code like Auto2000.
So far COPASI only supports the export of C source code, source code
for other programming languages might follow if there is need for it.
The C source file COPASI exports is split into several smaller parts
which are encapsulated in #ifdef structures for the C
preprocessor. The file consists of ten such sections which can be
included in other files by defining the corresponding preprocessor
constants at the place of inclusion. Example:
#define SIZE_DEFINITIONS
#include "SOURCE FILE"
#undef SIZE_DEFINITIONS
The file contains the following sections:
Table 5.1. Preprocessor Defines
| Name | Description |
|---|
| SIZE_DEFINITIONS | Contains size definitions for the individual model elements,
e.g. N_COMPARTMENTS for the number of compartments or N_REACTIONS
for the number of reactions. All definitions are declared with
preprocessor #define statements. |
| SPECIES | Contains assignments for the species initial
concentrations. The assignments are of the form y[INDEX]=VALUE
where INDEX is the index of the species and VALUE is the initial
concentration. This assumes that the including code has generated
an array of double values of size N_METABS called y. N_METABS is
part of the SIZE_DEFINITIONS section (see SIZE_DEFINITIONS
above). |
| INDEP_SPECIES | Contains assignments for the independent species initial
concentrations. The assignments are of the form x[INDEX]=VALUE
where INDEX is the index of the independent species and VALUE is
the initial concentration. This assumes that the including code has
generated an array of double values of size N_INDEP_METABS called
x. N_INDEP_METABS is part of the SIZE_DEFINITIONS section (see
SIZE_DEFINITIONS above). |
| MOIETY | Contains assignments for the moieties. The assignments are
of the form y[INDEX]=RSIDE where INDEX is the index of the
species and RSIDE is the calculated value for the moiety,
e.g. 0.2 - y[INDEX2]. y is the vector of species (see
SPECIES above). |
| COMPARTMENTS | Contains assignments for the compartments initial
volumes. The assignments are of the form c[INDEX]=VALUE where INDEX
is the index of the compartment and VALUE is the initial
volume. This assumes that the including code has generated an array
of double values of size N_COMPARTMENTS called c. N_COMPARTMENTS is
part of the SIZE_DEFINITIONS section (see SIZE_DEFINITIONS
above). |
| GLOBAL_PARAMETERS | Contains assignments for the values of global kinetic
parameters. The assignments are of the form gk[INDEX]=VALUE where
INDEX is the index of the global parameter and VALUE is the
value. This assumes that the including code has generated an array
of double values of size N_GLOBAL_PARAMS called k. N_GLOBALPARAMS
is part of the SIZE_DEFINITIONS section (see SIZE_DEFINITIONS
above). |
| KINETIC_PARAMETERS | Contains assignments for the values of local kinetic
parameters. The assignments are of the form k[INDEX]=VALUE where
INDEX is the index of the local parameter and VALUE is the
value. This assumes that the including code has generated an array
of double values of size N_KIN_PARAMS called k. N_KIN_PARAMS is
part of the SIZE_DEFINITIONS section (see SIZE_DEFINITIONS
above). |
| KINETIC_FUNCTIONS_HEADER | This section contains the declarations of function
definitions. The section has to be included before the function
definitions section itself and before the differential equations
section is included. |
| KINETIC_FUNCTIONS | This section contains the implementation of the function
definitions. |
| DIFFERENTIAL_EQUATIONS | This section contains the set of differential equations. The
result of the right hand side of each differential equation is
stored in a variable dxdt[INDEX]. This assumes that the including
program has created an array of double values called dxdt of size
N_INDEP_METABS. N_INDEP_METABS is part of the SIZE_DEFINITIONS
section (see SIZE_DEFINITIONS above). |
Caution
Some models may contains constants or functions that are not included
in the ANSI C standard. In order to be able to use exported C source
code files with those constants and functions, the user has to provide
them, e.g. by including a separate header file that defines those
constants and/or functions. Currently those are the constants for pi,
Euler's number, TRUE, FALSE and infinity as well as the functions
"asinh", "acosh", "atanh", "sec", "csc", "cot", "sech", "csch",
"coth", "arcsec", "arccsc", "arccot", "asech", "acsch", "acoth",
"factorial" and logical "xor".
In order to export the set of differential equations to a C source
code file, you select the menu
entry from COPASI's menu. In the save dialog
that shows up, you select C Files (*.c) from the
File type drop down and specify the name of the
file you want to write the ODEs to. After clicking on the
Save the ODEs will be saved to the specified
file.