Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
393 commits
Select commit Hold shift + click to select a range
6dfae3f
put arg parser in settings
drbergman Sep 9, 2024
fea4309
Merge branch 'feature-cl-arguments' into my-physicell
drbergman Sep 9, 2024
ebfff27
standardize makefiles
drbergman Sep 9, 2024
1825b4d
Merge branch 'development' into my-physicell
drbergman Sep 10, 2024
af2d43d
Merge branch 'development' into standard-asym-div
drbergman Sep 10, 2024
e5ee48f
Merge branch 'standard-asym-div' into my-physicell
drbergman Sep 10, 2024
e5c9572
Merge branch 'standard-asym-div' into my-physicell
drbergman Sep 10, 2024
1db2a54
Merge branch 'standard-asym-div' into my-physicell
drbergman Sep 10, 2024
4859b06
protect against 0 asym div weight total
drbergman Sep 10, 2024
3c31677
renaming
drbergman Sep 21, 2024
bbc2984
reference points and overall better usage of rules extension
drbergman Sep 22, 2024
857a350
Merge branch 'upstream_my-physicell' into my-physicell
drbergman Oct 2, 2024
679de29
Merge branch 'development' into my-physicell
drbergman Oct 2, 2024
868d45c
hide arg parser in global variables
drbergman Oct 2, 2024
12850a6
Merge branch 'combine/cl-args-and-substrate-ics' into combine-cl-args…
drbergman Oct 2, 2024
f9d01a6
hide arg parser in global variables
drbergman Oct 2, 2024
2ad4ff4
Merge branch 'development' into my-physicell
drbergman Oct 23, 2024
18e0611
Merge branch 'fix-create-output-from-abspath' into my-physicell
drbergman Oct 23, 2024
dfd7209
Merge branch 'fix-create-output-from-abspath' into my-physicell
drbergman Nov 8, 2024
87d3b9c
Merge branch 'fix-read-unsigned_int-random-seeds' into my-physicell
drbergman Nov 8, 2024
6475077
Merge branch 'fix-export-rules' into my-physicell
drbergman Nov 8, 2024
a40bddd
Merge branch 'fix-buffer-bug' into my-physicell
drbergman Nov 8, 2024
8fae8da
Merge branch 'fix-total_attack_time-initialization' into my-physicell
drbergman Nov 8, 2024
0e0a4bb
Merge branch 'feature-transmembrane-diffusion' into my-physicell
drbergman Nov 19, 2024
7e3de8b
v1.14.0-drbergman-1.0.0
drbergman Nov 19, 2024
b2e44b8
Merge branch 'development' into rules-upgrade
drbergman Nov 27, 2024
4173f5a
working prototype of extended rules!
drbergman Nov 28, 2024
95efc93
ability to select mediator in xml
drbergman Dec 2, 2024
ad910d6
cleaned up rules_extended and improved example
drbergman Dec 4, 2024
fa04040
add BehaviorAccumulator and BehaviorAttenuator
drbergman Dec 4, 2024
da3a3f9
merge 1.14.1 and bump to 1.14.1-drbergman-1.0.0
drbergman Dec 16, 2024
48db489
Merge PhysiCell v1.14.2 into my-physicell
drbergman Jan 21, 2025
074acb3
light edits for formating/console output
drbergman Jan 23, 2025
c7860b4
DC initialization from file
drbergman Feb 2, 2025
949bf1f
merge branch DCs from file
drbergman Feb 2, 2025
3f87c90
1.14.2-drbergman-1.1.0
drbergman Feb 2, 2025
da35bc5
CLI for dirichlet ics file
drbergman Feb 2, 2025
5cebd9b
1.14.2-drbergman-1.2.0
drbergman Feb 2, 2025
dbe451b
fix bug in copying ic cells to output
drbergman Feb 6, 2025
afd6e4f
1.14.2-drbergman-1.2.1
drbergman Feb 6, 2025
ac2cf48
fix ode-energy-sample and clean/fix librr stuff
drbergman Feb 11, 2025
8e6af6e
delay terms added to librr_intracellular.cpp
drbergman Feb 12, 2025
6d8ab2d
make sure to validate every librr model
drbergman Feb 12, 2025
55d775f
Merge branch 'fix-ode-energy-sample' into delay-diffeq
drbergman Feb 12, 2025
df77d6f
possible way to simplify librr initialization
drbergman Feb 12, 2025
ed33c9a
upgraded librr implementation to automate mappings
drbergman Feb 13, 2025
66c5975
update ode-energy-sample to new api
drbergman Feb 13, 2025
3f65f41
do not let extracellular concentration be output
drbergman Feb 13, 2025
5945ef4
delay differential equations!!
drbergman Feb 14, 2025
7475c27
bug fix for having empty input/output mappings
drbergman Feb 16, 2025
7875141
Merge branch 'improve-librr-api' into delay-diffeq
drbergman Feb 16, 2025
f52f008
bug fix for having empty input/output mappings
drbergman Feb 16, 2025
804e2b8
Merge branch 'improve-librr-api' into delay-diffeq
drbergman Feb 18, 2025
e7fdcaf
refactor how intracellular updates are handled
drbergman Feb 18, 2025
daab667
update intracellular in first time step
drbergman Feb 18, 2025
ed47d7f
Merge branch 'fix-update-intracellular-first-step' into updating-road…
drbergman Feb 18, 2025
92f75cf
Merge branch 'protect-intracellular-updates' into updating-roadrunner
drbergman Feb 18, 2025
ac5c24f
Merge branch 'delay-diffeq' into updating-roadrunner
drbergman Feb 18, 2025
716fe2c
wip
drbergman Feb 19, 2025
1915aa5
update to PhysiPKPD v1.2.0 with MMD
drbergman Feb 19, 2025
6a15cbd
update to PhysiPKPD v1.2.0 with MMD
drbergman Feb 19, 2025
b3db5e0
clear *_delay_terms to remove prev cell def vals
drbergman Feb 20, 2025
09a5e1a
Merge branch 'delay-diffeq' into my-physicell-updating-roadrunner
drbergman Feb 20, 2025
a362c3e
load sbmls from single file
drbergman Feb 20, 2025
31e2d6d
Merge pull request #5 from drbergman/my-physicell-updating-roadrunner
Feb 21, 2025
82cee24
Merge remote-tracking branch 'origin/my-physicell' into my-physicell
drbergman Feb 21, 2025
e98eaba
light reformat of one xml
drbergman Feb 27, 2025
78550c1
add load_initial_cells(); to template-combined custom.cpp
drbergman Feb 28, 2025
fcbc8ff
1.14.2-drbergman-1.3.0
drbergman Feb 28, 2025
d792bd8
improve intracellular parsing
drbergman Mar 3, 2025
6e846db
Merge pull request #6 from drbergman/fix-intracellular-parser
drbergman Mar 3, 2025
3635bf4
improve intracellular parsing
drbergman Mar 3, 2025
60716e7
Merge pull request #7 from drbergman/fix-intracellular-parser
drbergman Mar 3, 2025
c9929e9
when asym divs probs sum to >1, exit with msg
drbergman Mar 5, 2025
b5322ee
fix asym div probs > 1 exit call
drbergman Mar 5, 2025
dee5d3b
remove excess getopt.h
drbergman Mar 12, 2025
5fd855f
clean up extended rules
drbergman Mar 20, 2025
ee42083
support csv with extended rules
drbergman Apr 1, 2025
5c40582
fix
drbergman Apr 1, 2025
7740592
fix
drbergman Apr 9, 2025
5519103
identify transform, docstrings, better coding
drbergman Apr 15, 2025
355e058
easier setting of custom agg and mediators
drbergman Apr 15, 2025
38e6fb3
readme
drbergman Apr 16, 2025
7dfd452
expose the behavior_base in XML
drbergman Apr 16, 2025
41344f8
upgrade rules
drbergman Jun 10, 2024
e326e03
Merge branch 'rules-upgrade' into my-physicell-rules-upgrade
drbergman Apr 16, 2025
5f415b3
upgrade all mains to use arg parser
drbergman Apr 17, 2025
e266474
Merge pull request #8 from drbergman/remove-extra-getopt_h
drbergman Apr 17, 2025
c3e43a5
Merge pull request #9 from drbergman/my-physicell-rules-upgrade
drbergman Apr 17, 2025
d2855ec
v1.14.2-drbergman-2.0.0
drbergman Apr 17, 2025
8c5b300
wip
drbergman Apr 17, 2025
249c974
cleanning up...
drbergman Apr 17, 2025
9a043e6
finishing up display/export to csv updates
drbergman Apr 17, 2025
4174cf1
display/export to csv updates
drbergman Apr 17, 2025
a1ff86b
Merge pull request #10 from drbergman/my-physicell-rules-upgrade-disp…
drbergman Apr 17, 2025
ac97c1d
1.14.2-drbergman-2.1.0
drbergman Apr 17, 2025
59d1ef1
more informative error on bad mediator vals
drbergman Apr 17, 2025
0e33161
1.14.2-drbergman-2.1.1
drbergman Apr 17, 2025
e62bd0f
1.14.2-drbergman-2.1.2
drbergman Apr 17, 2025
06c726e
display/export to csv
drbergman Apr 17, 2025
ec80145
Update with extended asymmetric division behaviors
davidlzhou Apr 26, 2025
b31949e
Update .gitignore
davidlzhou Apr 26, 2025
edd40e9
main for extended div
davidlzhou Apr 26, 2025
d669670
Delete empty.txt
davidlzhou Apr 26, 2025
ddab2bd
Update PhysiCell_settings.xml
davidlzhou Apr 28, 2025
7eba010
copy config to output now part of core
drbergman Apr 29, 2025
ccabb6a
robust OS path separators
drbergman Apr 28, 2025
d331c1b
Merge pull request #14 from drbergman/my-physicell-copy-config-in-core
drbergman Apr 29, 2025
d31f8a5
Merge pull request #15 from drbergman/fix-copy-to-output-pathsep
drbergman Apr 29, 2025
35e1a65
1.14.2-drbergman-2.2.0
drbergman Apr 29, 2025
6dadf68
copy used and default file names
drbergman Apr 30, 2025
c8a3739
Merge pull request #16 from drbergman/my-physicell-robust-copy-to-output
drbergman Apr 30, 2025
000cdaa
1.14.2-drbergman-2.2.1
drbergman Apr 30, 2025
065d9e8
revised extended asym
davidlzhou May 9, 2025
9fc5e87
fix detachments
drbergman May 13, 2025
3a193d5
Extended asym div updates for equality and map indexing
davidlzhou May 16, 2025
82e469f
more changes for EAD
davidlzhou May 30, 2025
4be4256
EAD: change to index-to-pair function
davidlzhou May 30, 2025
b81aa37
Adding basic EAD sample project
davidlzhou May 30, 2025
09fb30d
EAD sample project; bugfixes
davidlzhou May 31, 2025
5dcece2
more updates
davidlzhou May 31, 2025
80d46c1
Restore random seed to PhysiCell_settings.xml
davidlzhou May 31, 2025
a8f6ba4
Merge remote-tracking branch 'davidlzhou/extended-asym-div' into dany…
dgedris Jun 2, 2025
181f123
my changes - getting lineage tracking and starting David's
dgedris Jun 2, 2025
cb5ca45
Merge remote-tracking branch 'dgedris/danyons-merge' into danyon-phys…
dgedris Jun 2, 2025
77edd96
dev bump
drbergman Jun 11, 2025
6097a2f
add (spring) attachment and cycle phase signals
drbergman Jun 24, 2025
b35d835
delete duplicate elapsed time in phase from saves
drbergman Jul 28, 2025
e52e73b
add current cycle phase index to signals
drbergman Aug 19, 2025
35de108
Merge pull request #1 from drbergman/feature-cycle-phase-index-as-signal
dgedris Aug 21, 2025
061a40d
better warnings/error messages
drbergman Aug 22, 2025
24244b8
better warnings/error messages
drbergman Aug 22, 2025
dabfe55
standardize aggregator type stored
drbergman Aug 22, 2025
e876651
Merge branch 'rules-upgrade' into light-upgrade-rules-edits
drbergman Aug 22, 2025
53b1f1b
default to names with _
drbergman Aug 22, 2025
c81bd63
Merge branch 'rules-upgrade' into light-upgrade-rules-edits
drbergman Aug 22, 2025
da1f5b5
Merge pull request #21 from drbergman/light-upgrade-rules-edits
drbergman Aug 22, 2025
3be0caa
Merge branch 'my-physicell-dev' into my-pc-dev-delete-duplicate-elaps…
drbergman Aug 22, 2025
3e619a8
delete unnecessary comments
drbergman Aug 22, 2025
025cb78
Merge pull request #22 from drbergman/my-pc-dev-delete-duplicate-elap…
drbergman Aug 22, 2025
48da3b5
Merge pull request #20 from drbergman/feature-cycle-phase-index-as-si…
drbergman Aug 22, 2025
0845a55
Merge branch 'feature-cycle-phase-index-as-signal' into more-signals
drbergman Aug 22, 2025
5e8deed
Merge branch 'my-physicell-dev' into my-pc-dev-attachment-signals
drbergman Aug 22, 2025
919936d
Merge pull request #23 from drbergman/my-pc-dev-attachment-signals
drbergman Aug 22, 2025
d295c3b
Merge pull request #2 from drbergman/feature-cycle-phase-index-as-signal
dgedris Aug 25, 2025
26c2a4d
fix bug
drbergman Aug 25, 2025
9742dae
Merge pull request #3 from drbergman/feature-cycle-phase-index-as-signal
dgedris Aug 25, 2025
a70c3df
Merge pull request #26 from drbergman/feature-cycle-phase-index-as-si…
drbergman Aug 25, 2025
2957744
Merge pull request #29 from drbergman/fix-attack-no-detach
drbergman Aug 28, 2025
5e64ed0
check that sbml file exists before copying it from the mappings file
drbergman Sep 4, 2025
ffe86ac
hotfix for custom med/agg to "return" double
drbergman Sep 5, 2025
e1fef3a
Add elapsed time in phase signal
dgedris Sep 5, 2025
eeb66db
Merge remote-tracking branch 'dgedris/danyon-physicell' into dgedris-…
drbergman Sep 5, 2025
b42764c
extended asymmetric division
davidlzhou Apr 26, 2025
295e96d
Merge branch 'my-physicell-dev' into feature-extended-asym-div-my-phy…
drbergman Sep 5, 2025
cf2f424
Merge pull request #32 from drbergman/feature-extended-asym-div-my-ph…
drbergman Sep 5, 2025
6c046c5
synching dgedris/dgedris-physicell to my-physicell
drbergman Sep 5, 2025
4e2f59a
preparing merge...
drbergman Sep 5, 2025
7c6c827
Merge branch 'dgedris-updates' into merge-dgedris
drbergman Sep 5, 2025
df26d15
Merge pull request #34 from drbergman/merge-dgedris
drbergman Sep 5, 2025
90c97c1
allow substrate csvs to omit voxels and entries in rows
drbergman Sep 5, 2025
b8ae5d0
Merge branch 'my-physicell-dev' into substrate-csv-omit-voxels-my-phy…
drbergman Sep 5, 2025
376a883
Merge pull request #37 from drbergman/substrate-csv-omit-voxels-my-ph…
drbergman Sep 6, 2025
c47c9f1
bump
drbergman Sep 6, 2025
dd45067
safe reverse iterators
drbergman Sep 6, 2025
07919da
Merge pull request #17 from drbergman/my-physicell-dev
drbergman Sep 6, 2025
8c423bd
fix division displacement
drbergman Sep 8, 2025
0708b40
Merge branch 'my-physicell-dev' into fix-division-displacement-my-pc
drbergman Sep 8, 2025
4e9b937
Merge pull request #38 from drbergman/fix-division-displacement-my-pc
drbergman Sep 8, 2025
485a199
remove checks for edge cases in boundary repulsion
drbergman Sep 9, 2025
75188f4
Merge branch 'my-physicell-dev' into fix-dist-to-edge-edge-cases-my-pc
drbergman Sep 9, 2025
b00e3d4
Merge pull request #39 from drbergman/fix-dist-to-edge-edge-cases-my-pc
drbergman Sep 9, 2025
7d4da44
always check sbml_filename exists and set properly
drbergman Oct 10, 2025
4aa93af
Merge pull request #40 from drbergman/intracellulars-fix
drbergman Oct 10, 2025
731dbcf
1.14.2-drbergman-2.3.1
drbergman Oct 10, 2025
dae08ab
Merge pull request #42 from drbergman/bump
drbergman Oct 10, 2025
caf7728
Merge pull request #41 from drbergman/my-physicell-dev
drbergman Oct 10, 2025
bddea88
handle an empty colormap element for substrate in svg
drbergman Oct 24, 2025
4351192
Merge pull request #43 from drbergman/safer-substrate-colormap-read
drbergman Oct 24, 2025
318f6e6
addresses issue #404 in upstream
drbergman Feb 18, 2026
5af1ec7
Merge pull request #45 from drbergman/jpeg-res-update-my-pc
drbergman Feb 18, 2026
a052b14
bump
drbergman Feb 18, 2026
761ca7c
Merge pull request #46 from drbergman/my-physicell-dev
drbergman Feb 18, 2026
63f05b3
up librr setup from rheiland/update_librr_setup
drbergman Feb 19, 2026
42e36b3
bump
drbergman Feb 19, 2026
eb9ff7d
Merge pull request #47 from drbergman/merge-librr-updates
drbergman Feb 19, 2026
41ca4ca
fix ode-energy-sample Makefile movie duplicate
drbergman Feb 19, 2026
21d8e10
Merge pull request #48 from drbergman/hotfix-ode-makefile-warning-fix
drbergman Feb 19, 2026
b5d7abc
ensure attenuator and accumulator both have base_value
drbergman Mar 12, 2026
e66be8c
Merge pull request #49 from drbergman/ensure-hysteresis-has-base_value
drbergman Mar 13, 2026
bc252e2
configs
May 4, 2026
8b03f5c
configs
May 4, 2026
6ba7b64
organizing ICs and removing stuff from prior pub
May 7, 2026
6d62036
various
May 13, 2026
7f0fdbc
fix CRLF line endings breaking CSV parsers on Unix/macOS
drbergman May 18, 2026
8dc80da
Merge pull request #50 from drbergman/fix-parse-cr-lines-unix-my-phys…
drbergman May 18, 2026
0684934
base value edit in xml?
May 28, 2026
1106eda
still the wrong migration rules
Jun 9, 2026
574b039
Validate signal and behavior names when parsing extended XML rules (#51)
drbergman Jun 14, 2026
7837ba3
bump 1.14.2-drbergman-2.4.3
drbergman Jun 14, 2026
eed649e
corrected t cell motility fit values
Jun 15, 2026
124a30b
colors
Jun 16, 2026
5457d1d
bump 1.14.2-drbergman-2.4.4
drbergman Jun 16, 2026
a8e27be
Add support for user-defined SVG colors for cell types in PhysiCell s…
drbergman Jun 17, 2026
6a3a388
bump 1.14.2-drbergman-2.5.0
drbergman Jun 17, 2026
0d3e85a
Resolve output folder before seeding RNG and copying inputs (#53)
drbergman Jun 17, 2026
37d44d8
bump 1.14.2-drbergman-2.5.1
drbergman Jun 17, 2026
f1efb78
IMC ICs
Jun 25, 2026
1e02a9f
Set omp_num_threads to 1 in PhysiCell_settings.xml
gavehan Jul 20, 2026
cd294fd
Merge pull request #3 from jeanettejohnson/update-omp-num-threads
gavehan Jul 20, 2026
4ed715a
Merge drbergman/PhysiCell 1.14.2-drbergman-2.5.1 (adds PhysiCell_rule…
gavehan Jul 21, 2026
b00861d
Merge pull request #4 from jeanettejohnson/merge-drbergman
gavehan Jul 21, 2026
8d1085d
IMC ICs
Jul 22, 2026
1b328f6
Enhance CSV parser to skip blank lines and validate column count (#54)
drbergman Jul 24, 2026
3aca7d4
Update .gitignore
gavehan Aug 4, 2026
a1de7e5
Update .gitignore.
gavehan Aug 4, 2026
31c5f7e
Add correct color mapping of cell types.
gavehan Aug 4, 2026
a06004d
Merge pull request #5 from jeanettejohnson/restore-cell-type-colors
gavehan Aug 4, 2026
0309913
Remove uninitialized system() call from PhysiPKPD sample projects
drbergman Aug 6, 2026
3d093b1
Make the attack link symmetric, following spring-attachment semantics…
drbergman Aug 7, 2026
24ded80
Fix asymmetric division daughter selection, determinism, and spurious…
drbergman Aug 7, 2026
eb9a9d9
Fix uninitialized and leaked libRoadrunner instance handle (#57)
drbergman Aug 7, 2026
4606add
Fail on an unknown SBML species instead of silently using column 0 (#60)
drbergman Aug 7, 2026
a93e19b
Read pAttackTarget once in the effector-attack block (#62)
drbergman Aug 8, 2026
2234d81
Defer teardown out of the mechanics parallel-for (#63)
drbergman Aug 8, 2026
4ee1205
Give each cell definition its own fixed_duration and death-phase para…
drbergman Aug 8, 2026
012c149
Generate header dependencies so header edits trigger a rebuild (#61)
drbergman Aug 8, 2026
24ffcb6
Make the asymmetric division probability tolerance configurable (#64)
drbergman Aug 10, 2026
9c7b394
Take spring attachments under the lock before iterating them (#65)
drbergman Aug 10, 2026
b4264ae
1.14.2-drbergman-3.1.0
drbergman Aug 10, 2026
9e7604e
Add a weighted mode for asymmetric division (#68)
drbergman Aug 21, 2026
3dcd57d
bump 1.14.2-drbergman-3.2.0
drbergman Aug 21, 2026
69597f4
stop copying dirichlet csv rows; fix warning's expected count (#73)
drbergman Aug 21, 2026
c7ff094
Fix substrate csv out-of-bounds reads, revive the headerless path, re…
drbergman Aug 21, 2026
5cef00f
Remove stray semicolon from two PhysiBoSS samples' main.cpp (#74)
drbergman Aug 21, 2026
7b2e7e1
Read dirichlet csvs with the substrate csv machinery (#71)
drbergman Aug 21, 2026
7f49361
Fix colliding random seeds when sims launch simultaneously (#75)
drbergman Aug 31, 2026
0acd1ca
bump 1.14.2-drbergman-3.2.1
drbergman Aug 31, 2026
a8ba118
Fix the class I+II leak and align T-cell speed and division across mo…
gavehan Sep 25, 2026
4bc7b8f
Merge pull request #6 from jeanettejohnson/fix/config-leak-tcells
gavehan Sep 25, 2026
20a59b7
Save full data and SVG snapshots every 60 min instead of 30
gavehan Sep 25, 2026
e436f7b
Merge pull request #7 from jeanettejohnson/save-interval-60
gavehan Sep 25, 2026
ac27260
Remove stray and leftover files from the user projects
gavehan Sep 25, 2026
d1909f8
Make the user-project configs portable and match the run settings
gavehan Sep 25, 2026
a59d37a
Match the user-project code to the run inputs
gavehan Sep 25, 2026
ca48227
Merge pull request #8 from jeanettejohnson/cleanup/user-projects
gavehan Sep 25, 2026
ec56b0f
Update to drbergman/PhysiCell 1.14.2-drbergman-3.2.1 and drop the sam…
gavehan Sep 25, 2026
17cb7db
Merge pull request #9 from jeanettejohnson/update/drbergman-3.2.1
gavehan Sep 25, 2026
0b6057a
Add CAF-contact MHC-II rules at rate 0
gavehan Sep 25, 2026
1e0e5ec
Save full data and SVG snapshots every 120 min instead of 60
gavehan Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
62 changes: 56 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,23 +1,73 @@
*.asv
._.DS_Store
.DS_Store
*.exe
*.o
addons/libRoadrunner/roadrunner/
addons/libRoadrunner/roadrunner-win64-vs14-cp35m.zip
addons/PhysiBoSS/MaBoSS/
addons/PhysiBoSS/libMaBoSS-*.tar.gz
biorobots
cancer_immune_3D
build/
config/PhysiCell_settings-backup.xml
heterogeneity
initial.svg
interaction_demo
Makefile-backup
pmb_debug.log
project
studio_debug.log
user_projects/*
!user_projects/empty.txt
# Upstream ignores all of user_projects/ because it is scratch space there. In
# this fork these two ARE the source of truth, so re-include them -- otherwise
# `git add user_projects/antigen_presentation` is refused and the whole tree has
# to be force-added, which is how 9 .DS_Store files got committed past the rule
# on line 3. Negating the directories lets git descend; the general rules above
# (.DS_Store, *.o, ...) still apply to their contents.
!user_projects/antigen_presentation/
!user_projects/antigen_presentation_htan_singlecell/

project*
Studio.zip
/studio
.vscode

# executables
/project
/biorobots
/cancer_biorobots
/cancer_immune_3D
/celltypes3
/heterogeneity
/interaction_demo
/pred_prey
/virus-sample
/worm
/*.exe

# boolean intracellular project executables
/invasion_model
/PhysiBoSS_Cell_Lines

# fba intracellular project executables
/cancer_metabolism
/ecoli-dfba

# ode intracellular project executables
/ode_energy

# test project executables
/time_tests
/unit_tests
/test_custom_DCs
/test_voxel_values

# Runtime artifact: display_citations() writes this into the working directory
# on every run, and PCMM runs simulations with --chdir=PhysiCell, so it
# reappears at the repo root constantly.
#
# Anchored to the root deliberately -- an unanchored pattern would also cover
# the copies committed under sample_projects_intracellular/, which are kept.
/ALL_CITATIONS.txt

# 'make load' copies the active user project up to the repo root. These are
# build artifacts, byte-identical to the user_projects/ originals which are the
# real source.
/main.cpp
/custom_modules/
79 changes: 76 additions & 3 deletions BioFVM/BioFVM_basic_agent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@
#############################################################################
*/

// #include <mutex>
// std::mutex mtx;

#include "BioFVM_basic_agent.h"
#include "BioFVM_agent_container.h"
#include "BioFVM_vector.h"
Expand Down Expand Up @@ -176,6 +179,36 @@ void Basic_Agent::set_internal_uptake_constants( double dt )
return;
}

void Basic_Agent::set_transmembrane_diffusion_constants( double dt )
{
// overall form: dI/dt = s*(E-I); dE/dt = s*(I-E) + e
// where I is the internal substrate concentration, E is the extracellular substrate concentration (in voxel), s is the diffusion (secretion) rate, and e is the net export rate
// use analytical solution to update concentrations (splitting up the diffusion and export components because that's what I solved for)
double voxel_coeff = 1 / (volume + (microenvironment->voxels(current_voxel_index)).volume); // 1 / (cell volume + voxel volume)
double cell_coeff = (microenvironment->voxels(current_voxel_index)).volume * voxel_coeff; // (voxel volume / (cell volume + voxel volume))
double lambda2_base_dt = -dt*(1+volume/(microenvironment->voxels(current_voxel_index)).volume); // -dt * (1 + V_cell/V_voxel)

double exp_decay_term;
for (unsigned int i = 0; i < (*secretion_rates).size(); i++)
{
exp_decay_term = (1 - exp((*secretion_rates)[i] * lambda2_base_dt));
cell_source_sink_solver_temp1[i] = cell_coeff * exp_decay_term;
cell_source_sink_solver_temp2[i] = voxel_coeff * exp_decay_term;
}

// temp for net export
cell_source_sink_solver_temp_export1 = *net_export_rates;
cell_source_sink_solver_temp_export1 *= dt; // amount exported in dt of time

// change in surrounding density
cell_source_sink_solver_temp_export2 = cell_source_sink_solver_temp_export1;
cell_source_sink_solver_temp_export2 /= ( (microenvironment->voxels(current_voxel_index)).volume ) ;

volume_is_changed = false;

return;
}

void Basic_Agent::register_microenvironment( Microenvironment* microenvironment_in )
{
microenvironment = microenvironment_in;
Expand Down Expand Up @@ -334,9 +367,9 @@ void Basic_Agent::simulate_secretion_and_uptake( Microenvironment* pS, double dt
*internalized_substrates -= total_extracellular_substrate_change; // opposite of net extracellular change
}

(*pS)(current_voxel_index) += cell_source_sink_solver_temp1;
(*pS)(current_voxel_index) /= cell_source_sink_solver_temp2;
(*pS)(current_voxel_index) += cell_source_sink_solver_temp1;
(*pS)(current_voxel_index) /= cell_source_sink_solver_temp2;

// now do net export
(*pS)(current_voxel_index) += cell_source_sink_solver_temp_export2;
if( default_microenvironment_options.track_internalized_substrates_in_each_agent == true )
Expand All @@ -347,4 +380,44 @@ void Basic_Agent::simulate_secretion_and_uptake( Microenvironment* pS, double dt
return;
}

void Basic_Agent::simulate_transmembrane_diffusion( Microenvironment* pS, double dt )
{
if(!is_active)
{ return; }

if( volume_is_changed )
{
set_transmembrane_diffusion_constants(dt);
volume_is_changed = false;
}

// double conc_diff;
double stuff_diff;
std::vector<double>& v = nearest_density_vector();
for (unsigned int i = 0; i < (*secretion_rates).size(); i++)
{
// conc_diff = (*internalized_substrates)[i]/volume - nearest_density_vector()[i];
stuff_diff = (*internalized_substrates)[i] - volume * v[i]; // this is the concentration difference times the cell volume; done to avoid division by cell volume, which could perhaps be (close to) zero
if( default_microenvironment_options.track_internalized_substrates_in_each_agent == true )
{
// (*internalized_substrates)[i] -= cell_source_sink_solver_temp1[i] * conc_diff;
(*internalized_substrates)[i] -= cell_source_sink_solver_temp1[i] * stuff_diff;
}
// (*pS)(current_voxel_index)[i] += cell_source_sink_solver_temp2[i] * conc_diff;
// mtx.lock(); // I think there is the danger of a data race...but I'm not sure how to fix it (or if it's even a problem) (I'm not sure if this would handle it anyway because when v is defined above, it could be changed before it's accessed in defining stuff_diff)
v[i] += cell_source_sink_solver_temp2[i] * stuff_diff;
v[i] += cell_source_sink_solver_temp_export2[i];
// mtx.unlock();
}

// now do net export
// (*pS)(current_voxel_index) += cell_source_sink_solver_temp_export2;
if( default_microenvironment_options.track_internalized_substrates_in_each_agent == true )
{
*internalized_substrates -= cell_source_sink_solver_temp_export1;
}

return;
}

};
6 changes: 6 additions & 0 deletions BioFVM/BioFVM_basic_agent.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ class Basic_Agent
std::vector<double> * net_export_rates;
double get_total_volume();
void set_total_volume(double);
void set_volume_is_changed( bool new_value ){
volume_is_changed = new_value;
return;
}
void update_voxel_index();

/* new for internalized substrates in 1.5.0 */
Expand All @@ -97,6 +101,7 @@ class Basic_Agent
void release_internalized_substrates( void );

void set_internal_uptake_constants( double dt ); // any time you update the cell volume or rates, should call this function.
void set_transmembrane_diffusion_constants( double dt ); // any time you update the cell volume or rates, should call this function.

void register_microenvironment( Microenvironment* );
Microenvironment* get_microenvironment( void );
Expand All @@ -117,6 +122,7 @@ class Basic_Agent
// simulate secretion and uptake at the nearest voxel at the indicated microenvironment.
// if no microenvironment indicated, use the currently selected microenvironment.
void simulate_secretion_and_uptake( Microenvironment* M, double dt );
void simulate_transmembrane_diffusion( Microenvironment* M, double dt );

int get_current_voxel_index( void );
// directly access the substrate vector at the nearest voxel at the indicated microenvironment
Expand Down
Loading