Input Model File - xsafran1/pepmc2 GitHub Wiki

Here it's detailed description of new model of input file. In first part there are described lexemes which can be used in input model. In second part there is described the syntax of whole new model. Finally in third part there is an example of real biological model.

====================================================== ##Input lexemes

NAME: [a-zA-Z][_0-9a-zA-Z~{}]* - matching whichever named variable, parameter or constant (Some name starting with upper case or lower case letter following whichever combination of letters, digits and '~' '{' '}' '_' characters)

NUMBER: matching nameless constants (simply numbers, integer or real)

RAMP: rp(*) | rm(*) | rpcoor() | rmcoor() | Rp(*) | Rm(*) | Rpcoor() | Rmcoor()

* = var, theta1, theta2, a, b

~ = var, theta1, theta2, y1, y2

SIGM: Sp(*) | Sm(*) | Spinv(*) | Sminv(*) | Sp[](*) | Sm[](*) | Spinv[](*) | Sminv[](*) | sp(*) | sm(*) | spinv(*) | sminv(*) | sp[](*) | sm[](*) | spinv[](*) | sminv[](*)

* = var, k, theta1, a, b

~ = n

STEP: Hp(*) | Hm(*) | hp(*) | hm(*)

* = var, theta1, a, b

HILL: Hillm(*) | Hillp(*) | hillm(*) | hillp(*)

* = var, theta, e, a, b

All following parameters may be represented by NAME or NUMBER:

var    = variable (dimension)

thetaX = threshold

a,b    = parameters concretizing location of ramp in space according to (y = a*x + b)

y1,y2  = parameters exactly determining y values of end-points of ramp

k      = parameter determining steepness of sigmoid function

n      = parameter determining accuracy or gentleness of change from curve to ramps

e      = exponenet of the Hill functions

======================================================= ##Input syntax

File:

VARS:       var_defs          (Determines substances of reaction or interacting species.)

CONSTS:     const_defs        (Optional, determines named constants.)

PARAMS:     param_defs        (Determines parametres as intervals. Just for parameter estimation not for model checking.)

EQ:         eq_defs           (Determines equations. One line for each variable.)

THRES:      thres_defs        (Determines threholds of special interest for variables. One line for each variable.)

INIT:       init_defs         (determines initial conditions of variables as interval from thres values.)
            
VAR_POINTS: var_points_defs   (Optional, determines number of x points and number of segments per variable.)

system async;

var_points_defs:

VAR_NAME : NUMBER , NUMBER ; VAR_NAME : NUMBER , NUMBER ...

init_defs:

VAR_NAME : NUMBER , NUMBER ; VAR_NAME : NUMEBR , NUMBER ...

const_defs:

NAME , NUMBER ; NAME , NUMBER ...

thres_defs:

VAR_NAME : NUMBER , NUMBER ...

var_defs:

NAME , NAME ...

param_defs:

NAME , NUMBER , NUMBER ; NAME , NUMBER , NUMBER ...

eq_defs:

VAR_NAME = expr

expr:

summation 

ap

summation:

summant

summation + summant 

summation - summant

summant:

multiplication 

parenthesis

multiplication:

multiple 

multiplication * multiple

multiple:

ap 

parenthesis

parenthesis:

( expr ) 

ap:

NUMBER 

NAME 

RAMP 

SIGM 

STEP	    

HILL

-NUMBER 

-NAME 

-RAMP 

-SIGM 

-STEP

-HILL

=================================================

Notes

Limitation:

var*var only for different vars

var*special_function only if special function doesn't depend on the same variable (var)

special_function*special_function only if special functions don't depend on the same variable

in one equation can be only one parameter unknown

Parser ignores commentary of types:

# something...

// something...

/* something... */

==============================================

Example

VARS: pRB, E2F1

CONSTS: k1,1; y_pRB,0.005; kp,0.05; k2,1.6; y_E2F1,0.1; a,0.04

PARAMS: par,0.001,0.01

VAR_POINTS: pRB: 1500, 5; E2F1: 1500, 5

EQ: pRB = k1Hillp(E2F1,0.5,1,0,1)Hillm(pRB,0.5,1,1,0) - y_pRBpRBpar

EQ: E2F1 = kp + k2aa0.0625Hillm(E2F1,4,2,1,0)Hillm(pRB,5,1,1,0) + k2Hillp(E2F1,4,2,0,1)Hillm(pRB,5,1,1,0) - y_E2F1E2F1

THRES: pRB: 0, 1, 2, 6, 7, 8, 10, 3, 4, 5

THRES: E2F1: 0, 1, 2, 4, 6, 8, 10, 12, 15

INIT: pRB: 5, 6; E2F1: 1, 2

system async;

Note: every record must be written on one line. Here the sixth line is divided just because of length. In original model.bio file it isn't.