You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bioscrape uses a lot of cdef'ed functions with a wrapper for python, e.g. the cdef function "simulate_model" (which cannot be called from python) wrapped with a python function "py_simulate_model". This is a little clunky, and mysterious to users who aren't familiar with Cython.
This should be a quick fix, but someone will need to think about which functions need "py_" wrappers (for speed) and which can be cpdef-ed safely (for comprehensibility and convenience).
The text was updated successfully, but these errors were encountered:
The simulate functions are actually called fairly frequently, especially with interacting lineages. In addition, simulate_single_cell is written in such a way as to reuse memory buffers, which have to be initializes separately. This is very important for performance.
I also think that having py_simulate functions which are not connected to classes is helpful so we can use Bioscrape for scripting without instantiating the classes.
I understand your confusion though. One possible thought is to move all the py_simulate functions into a separate file called wrappers. Would this help make things clearer?
Bioscrape uses a lot of cdef'ed functions with a wrapper for python, e.g. the cdef function "simulate_model" (which cannot be called from python) wrapped with a python function "py_simulate_model". This is a little clunky, and mysterious to users who aren't familiar with Cython.
Cython has a built-in keyword "cpdef" that makes a function both typed and python-callable. Calling a cpdef function is slower than calling a cdef function (see https://notes-on-cython.readthedocs.io/en/latest/fibo_speed.html), but that only affects the time required to call the function, not to run its contents (see https://stackoverflow.com/questions/49172528/should-i-define-my-cython-function-using-def-cdef-or-cpdef-for-optimal-perform). For functions that only get called a small number of times, like simulate_model, we should use cpdef instead of cdef so we don't have the weird "py_" handle gunking up our function names.
This should be a quick fix, but someone will need to think about which functions need "py_" wrappers (for speed) and which can be cpdef-ed safely (for comprehensibility and convenience).
The text was updated successfully, but these errors were encountered: