Skip to content

BioNetGen Architecture

Jose Juan Tapia edited this page Mar 16, 2015 · 2 revisions

Introduction

The core of BioNetGen consists of two coupled programs: BNG2.pl and run_network. BioNetGen also interacts with a number of third party programs, including NFsim (network-free simulator), RuleBender (IDE), PySB, and Virtual Cell. This software repository only contains the source code for BNG2.pl and run_network.

BNG2.pl, written in Perl, reads and writes BNGL model files, generates reaction networks, and calls external simulators (such as run_network and NFsim). BNG2.pl is found the in 'bng2' folder of this repository. BNG2.pl depends on a number of Perl modules, which are found in 'bng2/Perl2'.

run_network, written in C and C++, is a reaction network simulation that supports ODE simulation, exact stochastic simulation (SSA), and accelerated stochastic simulation (PLA). The current major version of run_network is 3. The source code for run_network is contained in the 'bng2/Network3'

Directory Structure

  • bng2 - source code for BNG2.pl, Perl modules, and run_network
  • bng2/Perl2 - BNG2 Perl modules and a few Perl scripts
  • bng2/Models2 - example BNGL model files
  • bng2/Validate - validation scripts and models
  • bng2/Network3 - source code for run_network
  • matlab - tools for integrating BioNetGen with MATLAB
  • parsers - source code for the new BioNetGen language parser

BNG2 Perl Modules

All BNG2 Perl modules are found in the 'bng2/Perl2/' folder.

BNG2 Core Classes

All BNG2 classes are implemented as Perl Modules found at 'bng2/Perl2/'

  • ComponentType - defines the component type class
  • Component - defines the BNGL component class
  • MoleculeType - defines the BNGL molecule type class
  • MoleculeTypesList - implements a MoleculeType container class
  • Molecule - defines the BNGL molecule class
  • SpeciesGraph - defines the BNGL species graph class (i.e., complexes and patterns)
  • Species - defines the BNGL species class (adds a population member to a complex)
  • SpeciesList - implements a Species container class
  • RateLaw - defines the BNGL ratelaw class (member of RxnRule)
  • RxnRule - defines the BNGL reaction rule class
  • Rxn - defines the BNGL reaction class
  • RxnList - implements a Rxn container class
  • Observable - defines the BNGL observable object class
  • Param - defines parameter object class (i.e. things with names)
  • ParamList - implements a parameter look-up table
  • Expression - defines math expressions
  • Function - defines function objects
  • HNauty - implements the heirarchical canonical-graph labeling algorithm
  • BNGModel - defines the BNGL Model class (methods associated with this class are found in BNGModel.pm, BNGAction.pm, BNGOutput.pm). BNGL models have members

compartmental BNGL classes

  • Compartment - defines the cBNGL compartment class
  • CompartmentList - implements a Compartment container class

energy BNGL classes

  • EnergyPattern

Hybrid Particle/Population classes

  • Population
  • PopulationList
  • RefineRule

Model Reduction classes

  • MacroBNGModel - Model reduction module (not currently supported)

Utility modules

  • BNGMessages.pm
  • BNGOptions.pm
  • BNGUtils.pm
  • Cache.pm - a class for 'caching' BNG objects with an assoicated label for future retreival
  • CartesianProduct.pm - a class for iterating over the cartesian product of sets
  • Console.pm - implements a primitive BNG interactive console (currently a sandbox)
  • XMLReader.pm - read BNG-XML files and represent as intermediate Perl structures (in development)