I am making this issue to serve as a reminder of future plans / suggested development. I think we should build a C++ API for biocro.
Here's why:
- The BioCro developer manual says the BioCro framework should work as a standalone C++ library, so this is an existing goal.
- Desired changes to the R interface would require making changes to how the framework code works. I think future changes would be facilitated by an API. Desired changes include
- Making
evaluate_module accept a list of modules.
- We should change how
time is specified; allow for saving the state at arbitrary times; remove timestep from the parameters, etc.
- Building an API might allow us to increase the performance of BioCro as well as increase its functionality. For example:
- Parameter optimization would be faster if the object BioCro object was instantiated once when defining the objective function, and then persisted for the lifetime of the objective function. Without a way to measure it, I don't know how much this would speed up things (without making the change and testing), but this is the reason using
system_derivatives and a R solver is so slow when compared to run_biocro. An API change would also allow interfacing with C++ optimization routines directly.
- Methods to search module inputs and outputs. I think it would be easier to learn how to use BioCro
Of course, the main reasons against making changes are
- No one has time. It would take a lot of investment to make happen.
- Changes would break or change the existing R interfaces which creates additional work.
I am making this issue to serve as a reminder of future plans / suggested development. I think we should build a C++ API for biocro.
Here's why:
evaluate_moduleaccept a list of modules.timeis specified; allow for saving the state at arbitrary times; removetimestepfrom the parameters, etc.system_derivativesand a R solver is so slow when compared torun_biocro. An API change would also allow interfacing with C++ optimization routines directly.Of course, the main reasons against making changes are