Rather than submit a PR for this, as it's probably premature, I wanted to share/discuss a branch (https://github.com/rheiland/PhysiCell/tree/custom-division) that implements:
- a new custom function,
cell_division_function, that gets invoked when a cell divides
- cell attributes
generation and parentID for cell lineage tracking
To test, rather than add another directory in sample_projects (which requires editing all of those Makefiles), I opted to add a sample_division_lineage to user_projects. Yes, I know this sort of violates its original purpose, but thought we could discuss this practice (with the sample_ prefix).
So, to test:
- clone/download the branch
make -j2
make load PROJ=sample_division_lineage
make
Some results from the Studio are shown. Note that the model defines 2 cell types: default and ctype1. At the beginning, only 2 default cells are created (in cells.csv). When the custom cell_division_function for this model is invoked (from divide()), it does a coin flip to decide if a daughter cell should differentiate. The 2 cell types have different phenotypes - the ctype1 chemotaxes to oxygen; default does not.
The following image shows results of being able to do asymmetric division, using the new custom function (rf. custom.cpp). However, note that it requires providing the custom function in create_cell_types (in custom.cpp); rf. #265 .

And these screenshots show the outcome of displaying the new cells' generation and parentID scalars.

Rather than submit a PR for this, as it's probably premature, I wanted to share/discuss a branch (https://github.com/rheiland/PhysiCell/tree/custom-division) that implements:
cell_division_function, that gets invoked when a cell dividesgenerationandparentIDfor cell lineage trackingTo test, rather than add another directory in
sample_projects(which requires editing all of those Makefiles), I opted to add asample_division_lineagetouser_projects. Yes, I know this sort of violates its original purpose, but thought we could discuss this practice (with thesample_prefix).So, to test:
Some results from the Studio are shown. Note that the model defines 2 cell types:
defaultandctype1. At the beginning, only 2defaultcells are created (in cells.csv). When the customcell_division_functionfor this model is invoked (fromdivide()), it does a coin flip to decide if a daughter cell should differentiate. The 2 cell types have different phenotypes - thectype1chemotaxes to oxygen;defaultdoes not.The following image shows results of being able to do asymmetric division, using the new custom function (rf. custom.cpp). However, note that it requires providing the custom function in

create_cell_types(in custom.cpp); rf. #265 .And these screenshots show the outcome of displaying the new cells'

generationandparentIDscalars.