Skip to content

Commit bc3b32f

Browse files
authored
Merge pull request #119 from MathCancer/development
bug fixes for 1.10.4
2 parents 5bbd35d + c63f3d9 commit bc3b32f

File tree

12 files changed

+551
-120
lines changed

12 files changed

+551
-120
lines changed

CITATION.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
If you use PhysiCell in your project, please cite PhysiCell and the version
22
number, such as below:
33

4-
We implemented and solved the model using PhysiCell (Version 1.10.3) [1].
4+
We implemented and solved the model using PhysiCell (Version 1.10.4) [1].
55

66
[1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin,
77
PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu-
@@ -11,7 +11,7 @@ We implemented and solved the model using PhysiCell (Version 1.10.3) [1].
1111
Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM
1212
as below:
1313

14-
We implemented and solved the model using PhysiCell (Version 1.10.3) [1],
14+
We implemented and solved the model using PhysiCell (Version 1.10.4) [1],
1515
with BioFVM [2] to solve the transport equations.
1616

1717
[1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin,

README.md

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# PhysiCell: an Open Source Physics-Based Cell Simulator for 3-D Multicellular Systems
22

3-
**Version:** 1.10.3
3+
**Version:** 1.10.4
44

5-
**Release date:** 25 June 2022
5+
**Release date:** 18 July 2022
66

77
## Overview:
88
PhysiCell is a flexible open source framework for building agent-based multicellular models in 3-D tissue environments.
@@ -63,30 +63,31 @@ Visit http://MathCancer.org/blog for the latest tutorials and help.
6363
**Quick Start:** Look at QuickStart.md in the documentation folder.
6464

6565
**User Guide:** Look at UserGuide.pdf in the documentation folder.
66-
66+
6767
**Setup and Training:** See last year's workshop and hackathon at https://github.com/PhysiCell-Training/ws2021
6868

69-
**Old Tutorials:** http://www.mathcancer.org/blog/physicell-tutorials/
69+
**Older Tutorials:** http://www.mathcancer.org/blog/physicell-tutorials/
7070

7171
**Latest info:** follow [@PhysiCell](https://twitter.com/PhysiCell) on Twitter (http://twitter.com/PhysiCell)
7272

7373
See changes.md for the full change log.
7474

7575
* * *
7676
## Release summary:
77-
Version 1.10.3 primarily fixes bugs and further refines the signal and behavior dictionaries, particularly with access to custom variables. It also allows users to designate custom variables as _conserved quantities_ that are divided evenly among daughter cells as division (e.g., melanosomes). Lastly, this release continues updates to PhysiBoSS and libRoadrunner to leverage newer core features and improve compatibiltiy, while also improving support for newer Mac (M1 and M2) architectures.
77+
Version 1.10.4 primarily fixes bugs in file output and the ode-energy sample, and refines thread safety in cell phagocytosis.
7878

7979
The 1.10.0 release introduced major new phenotype functionality, including standardized support for cell-cell interactions (phagocytosis, cell attack that increases a tracked damage variable, and cell fusion), cell transformations, advanced chemotaxis, and cell adhesion affinities for preferential adhesion. This release also includes new, auto-generated "dictionaries" of signals and behaviors to facilitate writing cell behavioral models and intracellular models, as well as standardized Hill and linear response functions for use in intracellular models. Lastly, this release includes a number of bugfixes, most notably pseudorandom number generators with improved thread safety.
8080

8181
A blog post and tutorial on the new phenotype elements can be found at http://www.mathcancer.org/blog/introducing-cell-interactions-and-transformations.
82-
8382
A blog post and tutorial on the new signal and behavior dictionaries can be found at http://www.mathcancer.org/blog/introducing-cell-signal-and-behavior-dictionaries.
8483

8584
**NOTE 1:** MacOS users need to define a PHYSICELL_CPP environment variable to specify their OpenMP-enabled g++. See the [Quickstart](documentation/Quickstart.md) for details.
8685

8786
**NOTE 2:** Windows users need to follow an updated (from v1.8) MinGW64 installation procedure. This will install an updated version of g++, plus libraries that are needed for some of the intracellular models. See the [Quickstart](documentation/Quickstart.md) for details.
8887

8988
### Major new features and changes in the 1.10.z versions
89+
#### 1.10.4
90+
+ None in this version. See 1.10.0
9091
#### 1.10.3
9192
+ None in this version. See 1.10.0
9293
#### 1.10.2
@@ -198,6 +199,8 @@ A blog post and tutorial on the new signal and behavior dictionaries can be foun
198199
+ With default parameters, bacteria kill off cells ot form abscesses, until death attracts macrophages to activate immune response to kill the invaders, after which the tissue can regrow.
199200

200201
### Minor new features and changes:
202+
#### 1.10.4
203+
+ None in this version.
201204
#### 1.10.3
202205
+ Added `attachment_rate` and `detachment_rate` to `phenotype.mechanics` for use in a future standard attachment and detachment model.
203206
+ Modernized output format:
@@ -240,6 +243,8 @@ A blog post and tutorial on the new signal and behavior dictionaries can be foun
240243
+ `create_cell( Cell_Definition )` now uses "`is_movable`" from the cell definition.
241244

242245
### Beta features (not fully supported):
246+
#### 1.10.4
247+
+ None in this version.
243248
#### 1.10.3
244249
+ Each time outputs two cell interaction graphs (as text files):
245250
+ neighbor graph records which cells are within interaction distance for each cell agent, with format;
@@ -269,11 +274,16 @@ None in this version. See 1.10.0.
269274
+ Added simple contour plotting of a substrate (anim_substrate2D.py in /beta; copy to /output)
270275

271276
### Bugfixes:
277+
#### 1.10.4
278+
+ Fixed vectorized outputs in MultiCellDS that incorrectly assumed linear data ordering in std::vector. Thank you Randy Heiland!
279+
+ Fixed errors in the ode-energy-sample project. Thank you Randy Heiland, Furkan Kurtoglu, and John Metzcar!
280+
+ Improved thread safety in phagocytosis. Thank you Michael Getz!
281+
272282
#### 1.10.3
273283
+ Fixed bug in `get_single_behavior` and `get_single_base_behavior` where querying any cycle exit rate or cycle entry mistakenly returned -1.
274284
+ Corrected declaration of `standard_add_basement_membrane_interactions` in `PhysiCell_standard_models.h` to properly use phenotype by reference. Thank you Inês Gonçalves!
275285
+ Removed the OpenMP pragma in `void Microenvironment::apply_dirichlet_conditions( void )` (around line 272) that tends to perform more poorly than serial code.
276-
286+
277287
#### 1.10.2
278288
+ Fixed error in `double get_single_behavior()` where the `cell-cell adhesion elastic constant` behavior was not found.
279289

VERSION.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.10.3
1+
1.10.4

beta/get_physicell.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Python script to download the latest release of PhysiCell
2+
3+
import requests
4+
5+
response = requests.get("https://api.github.com/repos/MathCancer/PhysiCell/releases/latest")
6+
release_name_str = response.json()["name"]
7+
print(release_name_str)
8+
print(release_name_str.split())
9+
vnum = release_name_str.split()[1]
10+
print("vnum=",vnum) # e.g., vnum= 1.10.4
11+
12+
remote_url = 'https://github.com/MathCancer/PhysiCell/releases/download/' + vnum + '/PhysiCell_V.' + vnum + '.zip'
13+
print("remote_url=",remote_url)
14+
local_file = 'PhysiCell.zip'
15+
data = requests.get(remote_url)
16+
with open(local_file, 'wb')as file:
17+
file.write(data.content)
18+
print("downloaded version ",vnum," to ",local_file)
19+

beta/setup_libroadrunner.py

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ def reminder_dynamic_link_path_linux():
2727
print("\n* To make this permanent, add this line to the bottom of the respective shell startup file, e.g., .bashrc, .bash_profile, or .zshenv in your home directory.")
2828
print("\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n")
2929

30-
# print("--------- print reminder!!!!!!!!!!!!!!\n\n")
3130
if os.path.exists(os.path.join(os.path.dirname(os.path.dirname(__file__)), "addons", "libRoadrunner", "roadrunner")):
3231
print('\nlibroadrunner already installed.\n')
3332

@@ -40,22 +39,19 @@ def reminder_dynamic_link_path_linux():
4039
rr_file = ""
4140
url = ""
4241

42+
mac_silicon = False
4343
if os_type.lower() == 'darwin':
4444
reminder_dynamic_link_path_macos()
4545
if "ARM64" in platform.uname().version:
4646
# pass
47-
# reminder_dynamic_link_path()
4847
# print('... for the arm64 processor.')
4948
# url = "https://github.com/PhysiCell-Tools/intracellular_libs/raw/main/ode/libs/macos12_arm64/libroadrunner_c_api.dylib"
5049
rr_file = "roadrunner_macos_arm64.tar.gz"
5150
url = "https://github.com/PhysiCell-Tools/intracellular_libs/raw/main/ode/roadrunner_macos_arm64.tar.gz"
51+
mac_silicon = True
5252
else:
5353
rr_file = "roadrunner-osx-10.9-cp36m.tar.gz"
5454
url = "https://sourceforge.net/projects/libroadrunner/files/libroadrunner-1.4.18/" + rr_file + "/download"
55-
# url = "https://raw.github.com/PhysiCell-Tools/intracellular_libs/blob/main/ode/libs/macos/roadrunner-osx-10.9-cp36m.tar.gz"
56-
57-
# rr_file = "roadrunner-osx-10.9-cp36m.tar.gz"
58-
# url = "https://github.com/PhysiCell-Tools/intracellular_libs/raw/main/ode/libs/macos/roadrunner-osx-10.9-cp36m.tar.gz"
5955
elif os_type.lower().startswith("win"):
6056
rr_file = "roadrunner-win64-vs14-cp35m.zip"
6157
url = "https://sourceforge.net/projects/libroadrunner/files/libroadrunner-1.4.18/" + rr_file + "/download"
@@ -67,11 +63,12 @@ def reminder_dynamic_link_path_linux():
6763
print("Your operating system seems to be unsupported. Please submit a ticket at https://sourceforge.net/p/physicell/tickets/ ")
6864
sys.exit(1)
6965

70-
# print("-------- past if block...")
71-
# reminder_dynamic_link_path()
72-
# fname = url.split('/')[-2]
73-
fname = url.split('/')[-1]
74-
print("fname = ",fname)
66+
print("url=",url)
67+
if mac_silicon:
68+
fname = url.split('/')[-1]
69+
else:
70+
fname = url.split('/')[-2]
71+
print("fname=",fname)
7572

7673
# home = os.path.expanduser("~")
7774
print('libRoadRunner will now be installed into this location:')
@@ -115,8 +112,13 @@ def reminder_dynamic_link_path_linux():
115112
if os_type.lower().startswith("win"):
116113
rrlib_dir = my_file[:-4]
117114
else: # darwin or linux
118-
rrlib_dir = my_file[:-7]
119-
rrlib_dir = my_file[:-6]
115+
if mac_silicon:
116+
# idx_end = my_file.rindex('/')
117+
# rrlib_dir = my_file[:idx_end]
118+
rrlib_dir = my_file[:-7]
119+
# rrlib_dir = my_file
120+
else:
121+
rrlib_dir = my_file[:-7]
120122
print('rrlib_dir = ',rrlib_dir)
121123

122124
def download_cb(blocknum, blocksize, totalsize):
@@ -133,12 +135,10 @@ def download_cb(blocknum, blocksize, totalsize):
133135

134136
urllib.request.urlretrieve(url, my_file, download_cb)
135137

136-
# sys.exit(-1)
137-
138138
new_dir_name = "roadrunner"
139139
os.chdir(dir_name)
140140
print('installing (uncompressing) the file...')
141-
if os_type.lower().startswith("win"): # on Windows
141+
if os_type.lower().startswith("win"):
142142
try:
143143
with zipfile.ZipFile(rr_file) as zf:
144144
zf.extractall('.')
@@ -148,23 +148,24 @@ def download_cb(blocknum, blocksize, totalsize):
148148
exit(1)
149149
else: # Darwin or Linux
150150
try:
151-
print("-- attempt to extract from the tar file...", rr_file)
151+
print("untarring ",rr_file)
152152
tar = tarfile.open(rr_file)
153153
tar.extractall()
154154
tar.close()
155155
if 'darwin' in os_type.lower():
156-
if "ARM64" in platform.uname().version: # on the new Mac M1, arm64 processor
157-
# if False:
158-
# print("--- TODO: rename ARM64 lib dir")
159-
# sys.exit(-1)
160-
pass # it already uncompresses and creates the 'roadrunner' dir
156+
if mac_silicon:
157+
os.rename("roadrunner_macos_arm64", new_dir_name)
161158
else:
162159
os.rename("roadrunner-osx-10.9-cp36m", new_dir_name)
163160
else:
164161
os.rename("libroadrunner", new_dir_name)
165162
except:
166-
print('error untarring the file')
167-
exit(1)
163+
if mac_silicon:
164+
print()
165+
# pass
166+
else:
167+
print('error untarring the file')
168+
exit(1)
168169

169170
print('Done.\n')
170171

0 commit comments

Comments
 (0)