Open WilliamIX opened 6 years ago
I would just create a new project (repository) and move code over that you want to keep, renaming files and classes as needed. At the point that the new code has all of the functionality of the current code, we can archive this repository.
The only disadvantage of this approach is that we lose the commit history associated with this code, but not sure that is very useful.
If you give me the name of the repository (presumably something more descriptive than txtlsim
), I can set it up under the Build-A-Cell project.
TXTLsim-python alternate name suggestions (please add your own, left to my own devices I will choose the most amusing):
PyBioSim PyBioCRN PBCC (Python Bio CRN Compiler) MoCompBioCRN = MCBC = (Modular Compiler for Biological CRNs) MCC = MC^2 = Modular CRN Compiler (or I rather like PyMC^2)
In order to clean up code and follow the design constraints (briefly re-iterated below and discussed extensively elsewhere), existing code will be copied class by class and method by method into new files in order to clean up dependencies and inconsistencies.
Main Design Constraints: 1) Create an internal representation to store CRNs (instead of using SBM's representation). This will require specie, reaction, and CRN classes which are distinct from Mixture, Component, and Mechanism. These classes are very minimal and functionally will work a lot like strings with certain safeguards. 2) Implement the compile loop as described in the overview document -- all reactions are created by mechanisms. Most species are created by mechanisms with a few minor exceptions. 3) Clean up parameter loading. Initially this will be done by storing all parameters as dictionaries within Mixture (Default) and Components (User override parameters). Config files put on hold but can later be parsed to dictionaries. 4) Make sure all code is object oriented; ensure that code can work on its own without non-object based helper functions in order to define components and compile a CRN. Helper wrapper functions will be created later for special (common) use cases to streamline the user experience.