modelDF: Gene regulation with positive feedback and dimerization

Description Usage Format Simulation Source Examples

Description

This PDMP models the most a gene regulation mechanism where we have one gene and a positive feedback loop. The activator however is not the gene product itself but a dimer of two molecules of the genproduct. This means that we have two continous variables f and fd where f represents the gene product and fd the concentration of the dimerized gene product. Transcription and translation are considered as one step and are not modeled separately. In PROM, this model is referred to as Model DF, therefore it is named genePdmpDF and genePolyDF here.

Usage

1
2
3

Format

genePdmpDF is an object of class pdmpModel,
genePolyDF is an object of class polyPdmpModel.

Simulation

The simulations in PROM were done with slot times set to

The following parameter sets were simulated:

Source

The model, including most of the parameter sets, are described in [Zeiser2009]. The parameter values do not rely on real data.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#------ code to generate the pdmpModel version -----

genePdmpDF <- new("pdmpModel", 
     descr = "Model DF: dimers + positive feedback",
     parms = list(b = 1, a = 1, k01 = 1, k10 = 1, m21 = 1, m12 = 1),
     init = c(f = 1, fd = 0.5, d = 1), 
     discStates = list(d = 0:1),
     dynfunc = function(t, x, parms) {
       df <- with(as.list(c(x, parms)), 
                  c(-2*m21*f^2 + 2*m12*fd - b*f + d*a, 
                    m21*f^2 - m12*fd))
       return(c(df, 0))
     }, 
     ratefunc = function(t, x, parms) {
       return(with(as.list(c(x, parms)),
                   c(switch(d+1, k01*fd, k10))))
     }, 
     jumpfunc = function(t, x, parms, jtype) {
       c(x[1:2], 1 - x[3])
     }, 
     times = c(from = 0, to = 100, by = 0.1), 
     solver = "lsodar")

#------ code to generate the polyPdmpModel version -----

library("spray")
genePolyDF <- new("polyPdmpModel", 
    descr = "Model DF: dimers + positive feedback (polynomial version)",
    parms = list(b = 1, a = 1, k01 = 1, k10 = 1, m21 = 1, m12 = 1), 
    init = c(f = 1, fd = 0.5, d = 1), 
    discStates = list(d = 0:1),
    dynpolys = quote(list(
      list(overall = linear(c(-2*m21, 0, 0), 2) + linear(c(-b, 2*m12, a))),
      list(overall = linear(c(m21, 0, 0), 2) - m12*lone(2,3))
    )),
    ratepolys = quote(list(
      list(k01*lone(2,3), k10)
    )),
    jumpfunc = function(t, x, parms, jtype){
      c(x[1:2], 1 - x[3])
    }, 
    times = c(from = 0, to = 100, by = 0.1), 
    solver = "lsodar")

#------- comparison of the models --------------

all.equal(sim(genePdmpDF, outSlot = FALSE, seed = 12),
          sim(genePolyDF, outSlot = FALSE, seed = 12))

CharlotteJana/pdmppoly documentation built on Sept. 4, 2019, 4:40 p.m.