ModelFest

From BioNetWiki

Jump to: navigation, search

Hemoglobin

A simple (uncalibrated) model of hemoglobin oxygen binding demonstrates the concept of energy-based modeling. Each hemoglobin molecule has four oxygen binding sites and two conformations: tense or relaxed. Bound oxygen is energetically unfavorable in the relaxed conformation, and free oxygen sites are unfavorable in the tense state. The model only requires two reversible rules: conformational change and oxygen binding. During network generation, the change in free energy is calculated for each reaction and the rate constants are computed as follows:

  • k_forward = Prod_i( exp(-s_i*G_i/RT)^(s_i*phi_i) )
  • k_reverse = Prod_i( exp(-s_i*G_i/RT)^(s_i*(phi_i-1)) )

where i is an index over a set of energy patterns, each G_i is the free energy associated with a pattern, s_i is change in the number of pattern matches between the reactants and products. Phi_i is a rate distribution parameter that relates the energy-change to the kinetic parameters.

The first rule-based language built on energy concepts was developed by Julien Ollivier and implemented in the ANC software package. Vincent Danos generalized the concept by associating energy with patterns.

Image:BoundOxygen.png

begin model
setOption('energyBNG',1);
begin parameters

    # fundamental constants
    RT             2577.4863            # J/mol
    NA             6.0221418e23         # /mol
    # simulation volume
    V              1e-12                # L
    # initial species concentrations
    conc_Hemoglobin0        1.0e-6      # molar
    conc_O2                 1.0         # molar   
    # initial species counts
    num_Hemoglobin0        conc_Hemoglobin0*NA*V               
    # free energy terms
    G_confT        0                     # J/mol/K
    G_heme1        0
    G_confR_heme1  5000
    G_confT_heme0  5000
    # Gamma factors
    Gamma_confT            exp( -G_confT/RT )
    Gamma_heme1            exp( -(G_heme1 - RT*log(conc_O2))/RT )
    Gamma_confR_heme1      exp( -G_confR_heme1/RT )
    Gamma_confT_heme0      exp( -G_confT_heme0/RT )

end parameters
begin molecule types

    Hemoglobin(conf~R~T,heme~0~1,heme~0~1,heme~0~1,heme~0~1)

end molecule types
begin species

    Hemoglobin(conf~R,heme~0,heme~0,heme~0,heme~0)  num_Hemoglobin0

end species
begin energy patterns

    Hemoglobin(conf~T)         Gamma_confT, phi_confT
    Hemoglobin(heme~1)         Gamma_heme1, phi_heme1
    Hemoglobin(conf~R,heme~1)  Gamma_confR_heme1, phi_confR_heme1
    Hemoglobin(conf~T,heme~0)  Gamma_confT_heme0, phi_confT_heme0

end energy patterns
begin reaction rules

    # conformational transition
    Hemoglobin(conf~R)  <->  Hemoglobin(conf~T)    1.0, 1.0

    # oxygen binding/release
    Hemoglobin(heme~0)  <->  Hemoglobin(heme~1)    1.0, 1.0

end reaction rules
begin observables

    Species    Hemeglobin_confR  Hemoglobin(conf~R)
    Species    Hemoglobin_confT  Hemoglobin(conf~T)
    Molecules  TotalHeme         Hemoglobin(heme~?)
    Molecules  BoundOxygen       Hemoglobin(heme~1)

end observables
end model

## actions ##
generate_network({overwrite=>1});

# test simulation
setParameter("conc_O2",1.0);
simulate_ode({t_end=>100,n_steps=>50});
Personal tools