BioNetGen allows molecules to have multiple copies of identical components. For example, one might want to model a receptor with two identical binding sites for ligand. In BNGL, this can be done by defining ligands as L(r) and receptors as R(l,l) and writing the rule:
L(r) + R(l) <-> L(r!1).R(l!1) kf,kr
BioNetGen then automatically calculates all appropriate symmetry factors and includes them in the rate constants for reactions. In this case, the reaction L(r) + R(l,l) -> L(r!1).R(l,l!1) has an effective rate constant of 2*kf because ligand can bind to either of the two 'l' sites on the receptor. This is a very powerful feature of BioNetGen that is currently not supported by PySB. To fix this, we either need to allow identical components in the definition of monomers or we need to include code for calculating symmetries inside macros.
BioNetGen allows molecules to have multiple copies of identical components. For example, one might want to model a receptor with two identical binding sites for ligand. In BNGL, this can be done by defining ligands as L(r) and receptors as R(l,l) and writing the rule:
L(r) + R(l) <-> L(r!1).R(l!1) kf,kr
BioNetGen then automatically calculates all appropriate symmetry factors and includes them in the rate constants for reactions. In this case, the reaction L(r) + R(l,l) -> L(r!1).R(l,l!1) has an effective rate constant of 2*kf because ligand can bind to either of the two 'l' sites on the receptor. This is a very powerful feature of BioNetGen that is currently not supported by PySB. To fix this, we either need to allow identical components in the definition of monomers or we need to include code for calculating symmetries inside macros.