cellblender icon indicating copy to clipboard operation
cellblender copied to clipboard

Candidate Python expressions of MDL

Open GoogleCodeExporter opened this issue 10 years ago • 3 comments

Post suggestions for Python APIs that express various aspects of MDL.

This task resulted from today's meeting (March 20th, 2013). This task is 
intended to capture as many creative ideas as possible, so please feel free to 
toss in any ideas you have.

I believe that reactions might be the most difficult to represent pythonically 
(other than as strings) because they use commas and apostrophe's which have 
special meanings in Python and are not overloadable. So with that thought in 
mind, I've included the reaction examples from the quick reference guide below. 
Any proposed pythonic API would have to be able to express all of these 
examples.

Examples from Quick Reference Guide (units were dropped for ASCII simplicity):

    Example = Explanation

    A -> B [100] = Molecule A changes into molecule B at a rate of 100
    A -> A + B [100] = Molecule A emits molecules of B at a rate of 100
    A -> NULL [100] = Molecule A is destroyed at a rate of 100
    A + B -> A [1e6] = Molecule A destroys molecule B at a rate of 1e6
    A + B -> A + C [1e6] = Molecule A catalytically converts B to C at a rate of 1e6
    A+B -> A+B+C [1e6] = Collision of A and B catalytically generates C at a rate of 1e6

    B' -> B, [10] = Molecule B flips (changes its orientation) at a rate of 10
    B' -> B' + A' + C, [10] = Molecule B emits molecules of A on the side it's pointing to and emits C on the other side, at a rate of 10
    B, -> B, + A, + C' [10] = This specifies exactly the same reaction as above. B and A end up with the same orientation, while C has opposite orientation.

    A' + B' -> C' [1e5] = Molecule A binds to B if it is on the side that B is pointing to, producing a C facing the same way as B, at a rate of 1e5
    A, + B, -> C, [1e5] = The same reaction again-everything occurs on the same side, but we wrote it on the bottom this time.
    A' + B, -> C' [1e5] = Molecule A binds when it hits the opposite side of B, producing a C facing the opposite way as B (i.e. towards the side A came from), at a rate of 1e5
    A, + B' -> C, [1e5] = Same as above

    A'' + B, -> C' [1e5] = Molecule A binds to either side of B (since they are in different orientation classes); this produces a C facing the opposite way as B, at a rate of 1e5
    A,, + B, -> C' [1e5] = This is the same reaction-since A is the only molecule in the second orientation class, it doesn't matter which way we specify things.
    A,, + B' -> C, [1e5] = Same again- B and C still have opposite orientations.
    A, + B' -> C,, [1e5] = Molecule A hits the opposite side of B and produces C that is equally likely to point either way, at a rate of 1e5
    A, + B' -> C'' [1e5] = Same as above, since C is still not in the same orientation class as the others.
    A'+B'' -> A,+B''' [1e5] = Molecule A hits molecule B on either side; A keeps traveling (goes to the other side) and B tumbles to a random orientation, at a rate of 1e5
    A'+B'' -> C'''+D'''' [1e5] = A and B react in any orientation and produce C and D in random orientations. All orientation classes are different, so there are no geometrical constraints here.

    A' + B' @ surf' -> C, [1e5] = The reaction affects surface molecules B located on surface regions identified by surface class surf which have their top domain at the front of the surface. B reacts with A approaching from the front at a rate of 1e5 to yield surface molecule C whose orientation is flipped with respect to B, i.e., C has its top domain aligned to the back of the surface regions.
    A' + B, @ surf' -> C, [1e5] = Same as above, but B now has its top domain at the back of the surface and reaction product C assumes the same orientation.

    A,, + B, @ surf' -> C' [1e5] = Since A is in an orientation class different from both B and surf, A can react from both sides. B has its top domain at the back of the surface and the reaction product has its orientation flipped, i.e., its top domain is at the front of the surface.
    A' + B' @ surf' -> C,, [1e5] = Same as the the first reaction, but since product C is in a orientation class different from either A, B, and surf, its orientation is random with respect to the surface regions, i.e., its top domain can be either on the front or back.

    A + B + C -> D [1e12] = Volume molecules A, B and C react to yield product D, at a rate 1e12
    A + B + C -> D + E + F [1e11] = Volume molecule A, B and C react to yield the three volume products D, E and F at a rate of 1e11
    A' + B' + S, -> D' [1e12] = Volume molecules A and B both react with the bottom of surface molecule S to yield volume product D which is released toward the same side from which A and B came from at a rate of 1e12
    A, + B, + S' -> D, [1e12] = This reaction is identical to the previous one.
    A, + B, + S' -> A' + B' + S' [1e9] = This reaction describes the action of a surface bound symporter molecule S. Molecules A and B bind to the bottom of S which then re-releases A and B at its top domain. This reaction happens with a rate of 1e9
    A, + B' + S' -> A' + B, + S' [1e9] = This is similar to the previous reaction but S now acts as an antiporter for A and B.
    A, + S' + R'' -> T'' [1e11] = In this reaction, volume molecule A facilitates the dimerization of surface molecules S and R. A reacts with the bottom of S and R in arbitrary orientation to produce a dimer T that is oriented like R. The reaction happens with a rate of 1e11
    R, + S, + T'' -> T''+ U,,, [1e11] = Identically oriented surface molecules R and S dimerize in the presence of surface molecule T which is oriented opposite to both R and S. The reaction regenerates T in its original orientation and creates the dimer U which can have an arbitrary orientation. This reaction occurs at a rate of 1e11


Original issue reported on code.google.com by [email protected] on 21 Mar 2013 at 12:42

GoogleCodeExporter avatar Mar 16 '15 12:03 GoogleCodeExporter