Skip to content

Commit

Permalink
update readme, changes, and versions
Browse files Browse the repository at this point in the history
  • Loading branch information
MathCancer committed Aug 24, 2018
1 parent 6356dd2 commit 036cb18
Show file tree
Hide file tree
Showing 97 changed files with 261 additions and 329 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION := 1.3.1
VERSION := 1.3.2
PROGRAM_NAME := project

CC := g++
Expand Down
159 changes: 12 additions & 147 deletions README.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
PhysiCell: an Open Source Physics-Based Cell Simulator for 3-D
Multicellular Systems.

Version: 1.3.1
Release date: 31 July 2018
Version: 1.3.2
Release date: 24 August 2018

Overview:
PhysiCell is a flexible open source framework for building
Expand Down Expand Up @@ -61,168 +61,33 @@ See changes.txt for the full change log.

Release summary:

This release introduces a new cycle model with an active cycling
state and a quiescent state. It also adds new functions to the
Mechanics class to make it easier to modify the cell-cell interaction
distance (while maintaining equilibrium cell-cell spacing), or
to modify the equilibrium cell-cell spacing. The release also
includes major reliability and performance improvements to
how gradients are calculated.

As usual, the release also contains minor bugfixes and
improvements.
This release fixes a small gradient bug that I swear I had fixed before.

NOTE: OSX users must now define PHYSICELL_CPP system variable.
See the documentation.

Major new features and changes:

+ Implemented a new cell cycle model (cycling_quiescent),
where quiescent cells can enter a cycling state. This
model uses identical parameters to the Ki67-basic cycle
model, but decouples the conceptual model from Ki67
immunohistochemistry.

Updated the documentation and coloring functions accordingly.

Updated update_cell_and_death_parameters_O2_based() to
support the new cycling_quiescent cycle model.

+ update_all_cells(t,dt,dt,dt) now checks to see if gradient
calculations are enabled, and if so, computes it once per dt_mechanics.

This improves code performance by 2x to 3x in gradient-enabled codes,
because we no longer need to calculate gradients once per dt_diffusion
time step. (Gradients are only needed for cell velocity calculations,
and occasionally for phenotype decisions.)

All sample projects have been updated to make use of this.

Also, removed the explicit gradient calculations from the template
and sample projects.

+ Added a new function to Mechanics class to simplify changes to cell
interaction distances:

void set_relative_maximum_adhesion_distance( double new_value );

Here, new_value is a multiple of the cell's (mean equivalent) radius.
Our default is 1.25. This function preserves the cell's "repulsion"
strength and adjusts the strength of cell-cell adhesion to maintain
its prior equilibrium cell-cell spacing.

+ Added a new function to Mechanics class to simplify changes to cell
equilibrium distances.

void set_relative_equilibrium_distance( double new_value );

Here, new_value is a multiple of the cell's (mean equivalent) radius.
The default is around 1.9. This function preserves the cell's "repulsion"
and the maximum interaction distance, and it adjusts the strength of
cell-cell adhesion to match the new equilibrium cell-cell spacing.

Note that this function performs a "sanity check" to ensure that you have
not given a value greater than 2.0.

+ Added a new function to Mechanics class to simplify changes to cell
equilibrium distances.

void Mechanics::set_absolute_equilibrium_distance( Phenotype& phenotype,
double new_value )

Here, new_value is the new equilibrium spacing (in units of microns).
The function internally requires the cell's mean equivalent radius,
and so you pass the cell's phenotype (by reference) as an additional
argument.

Note that this function performs a "sanity check" to ensure that you have
not given a value greater than 2.0 * mean_cell_radius.

Also note that PhysiCell internally uses a relative spacing, so the
absolute spacing will change from the value you set, over time.

+ Updated User_Guide to reflect new cell cycle model,
including reference parameters chosen for consistency with
the other cycle models.
+ none

Minor new features and changes:

+ Added the following constants to support the new cycle model

static const int cycling = 17;
static const int quiescent = 18;
static const int cycling_quiescent_model = 7;

+ Removed the (never-used) Mechanics.maximum_adhesion_distance.

+ Removed the legacy template_projects folder.


Beta features (not fully supported):

+ Added a function pointer to the Cell_Functions class for intended
contact-based cell-cell interaction, like delta-Notch signaling.
+ none

void (*contact_function)(Cell* pMyself, Phenotype& my_phenotype,
Cell* pOther, Phenotype& other_phenotype, double dt );

It would be up to the user to define these functions and decide
if the functions modify pMyself, pOther, or both. For now,
the code will initialize the pointer to NULL and won't use it.
Beta features (not fully supported):

+ Open to comments on handling cell-cell contact functions. Here's what
I have in mind:

notation: cell i interacts with cell j with function f(i,j).

Each cell agent can hold one contact-based interaction function f,
to be stored as a pointer in the cell's instance of the Cell_Functions
class.

We use the containers (and their interaction testing structures) to
identify all interactions (i,j,f), and add it to a vector of interactions.
The interaction (i,j,f) is added to the list so long as (j,i,f) is not
already in the list, to avoid double-counting the interaction.

The code will seek through the "container" interaction testing
data structure, probably at the cell mechanics time scale, and update /
recreate the vector of contact-based interactions (i,j,f).

The code would likely go through the vector of interactions and
execute the codes once per dt_diffusion time step, since I would
imagine molecular biology (with faster time scales) is intended here.

Since f(i,j) can potentially modify both cell i and cell j, it's probably
not thread-safe. So we'll probably need that in a non-parallel loop.

We will probably add a new time scale for interactions, dt_interactions,
and update the interaction list on that time scale.

For faster checking if (i,j,f) or (j,i,f) is already in the vector,
we'll probably want some sort of hash map in addition to the vector
of interactions.

We'll probably implement this all in something like
PhysiCell_contact_interctions.*, and add a global enable/disable option.
I'd imagine we'd add code to the "update_all_cells" to keep this
as simple to the users as possible.

We should probably update each cell's "neighbors" data structure at
when we're doing all this testing.

In a longer-term update, we could leverage that for simpler interaction
testing during velocity updates.
+ none

Bugfixes:

+ Added missing "omp_set_num_threads(PhysiCell_settings.omp_num_threads)"
in the main-heterogeneity.cpp file for the heterogeneity sample project.

+ In BioFVM, Microenvironment::compute_gradient_vector(int), removed "static"
from "static std::vector<int> indices(3,0)" to prevent rare segfaults.

+ Changed <xml> root above the comment lines in output files for
better Python parsing compatibility. Thanks, rheiland!
+ In BioFVM, Microenvironment::compute_gradient_vector(int), replaced "static"
for "bool gradient_constants_defined = false". Yep, I removed static from
the wrong line in 1.3.1

+ Correct some errors in both the README.txt and changes.txt files.

Notices for intended changes that may affect backwards compatibility:

Expand Down
81 changes: 74 additions & 7 deletions changes.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,74 @@
changes in next version
=======================================================================

PhysiCell: an Open Source Physics-Based Cell Simulator for 3-D
Multicellular Systems.

Version: 1.3.2
Release date: 24 August 2018

bugfixes:
Release summary:

This release fixes a small gradient bug that I swear I had fixed before.

NOTE: OSX users must now define PHYSICELL_CPP system variable.
See the documentation.

Major new features and changes:

+ none

Minor new features and changes:

+ none

Beta features (not fully supported):

+ none

Bugfixes:

MultiCellDS outputs used size 3 for all custom vector variables, instead
of actual size. Fixed to read the size from the vector.
+ In BioFVM, Microenvironment::compute_gradient_vector(int), removed "static"
from "static std::vector<int> indices(3,0)" to prevent rare segfaults.

+ In BioFVM, Microenvironment::compute_gradient_vector(int), replaced "static"
for "bool gradient_constants_defined = false". Yep, I removed static from
the wrong line in 1.3.1

Fixed the ostream operator for Vector_Variable to correctly output all
the vector.value elements, rather than the original hard-coded output
of 3 elements regardless of size.
+ Correct some errors in both the README.txt and changes.txt files.

Notices for intended changes that may affect backwards compatibility:

+ None.

Planned future improvements:

+ Further XML-based simulation setup.

+ read saved simulation states (as MultiCellDS digital snapshots)

+ "mainline" prototype cell attach/detach mechanics as standard models
(currently in the biorobots and immune examples)

+ integrate SBML-encoded systems of ODEs as custom data and functions
for molecular-scale modeling

+ integrate Boolean network support from PhysiBoSS into the mainline code
(See https://doi.org/10.1101/267070.)

+ Develop contact-based cell-cell interactions. (Likely in next release.)

+ Add a new standard phenotype function that uses mechanobiology,
where high pressure can arrest cycle progression.
(See https://twitter.com/MathCancer/status/1022555441518338048.)
(Likely in next release.)

+ Add module for standardized pharmacodynamics, as prototyped in the
nanobio project. (See https://nanohub.org/resources/pc4nanobio.)

+ create an angiogenesis sample project

+ create a small library of angiogenesis and vascularization codes as
an optional standard module in ./modules (but not as a core component)

=======================================================================

Expand Down Expand Up @@ -183,6 +243,13 @@ Bugfixes:

+ Changed <xml> root above the comment lines in output files for
better Python parsing compatibility. Thanks, rheiland!

+ MultiCellDS outputs used size 3 for all custom vector variables, instead
of actual size. Fixed to read the size from the vector.

+ Fixed the ostream operator for Vector_Variable to correctly output all
the vector.value elements, rather than the original hard-coded output
of 3 elements regardless of size.

Notices for intended changes that may affect backwards compatibility:

Expand Down
4 changes: 2 additions & 2 deletions config/PhysiCell_settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# If you use PhysiCell in your project, please cite PhysiCell and the version #
# number, such as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1]. #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1]. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- #
Expand All @@ -15,7 +15,7 @@
# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM #
# as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1], #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1], #
# with BioFVM [2] to solve the transport equations. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
Expand Down
4 changes: 2 additions & 2 deletions core/PhysiCell.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# If you use PhysiCell in your project, please cite PhysiCell and the version #
# number, such as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1]. #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1]. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- #
Expand All @@ -13,7 +13,7 @@
# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM #
# as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1], #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1], #
# with BioFVM [2] to solve the transport equations. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
Expand Down
4 changes: 2 additions & 2 deletions core/PhysiCell_cell.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# If you use PhysiCell in your project, please cite PhysiCell and the version #
# number, such as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1]. #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1]. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- #
Expand All @@ -13,7 +13,7 @@
# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM #
# as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1], #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1], #
# with BioFVM [2] to solve the transport equations. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
Expand Down
4 changes: 2 additions & 2 deletions core/PhysiCell_cell.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# If you use PhysiCell in your project, please cite PhysiCell and the version #
# number, such as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1]. #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1]. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- #
Expand All @@ -13,7 +13,7 @@
# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM #
# as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1], #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1], #
# with BioFVM [2] to solve the transport equations. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
Expand Down
4 changes: 2 additions & 2 deletions core/PhysiCell_cell_container.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# If you use PhysiCell in your project, please cite PhysiCell and the version #
# number, such as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1]. #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1]. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- #
Expand All @@ -13,7 +13,7 @@
# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM #
# as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1], #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1], #
# with BioFVM [2] to solve the transport equations. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
Expand Down
4 changes: 2 additions & 2 deletions core/PhysiCell_cell_container.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# If you use PhysiCell in your project, please cite PhysiCell and the version #
# number, such as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1]. #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1]. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- #
Expand All @@ -13,7 +13,7 @@
# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM #
# as below: #
# #
# We implemented and solved the model using PhysiCell (Version 1.3.1) [1], #
# We implemented and solved the model using PhysiCell (Version 1.3.2) [1], #
# with BioFVM [2] to solve the transport equations. #
# #
# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, #
Expand Down
Loading

0 comments on commit 036cb18

Please sign in to comment.