Compare commits
	
		
			5 Commits
		
	
	
		
			6c8c93589b
			...
			9d7b0028a6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9d7b0028a6 | |||
| fb187dd3c5 | |||
| 54994d4587 | |||
| fb08f0af77 | |||
| 7e3778757c | 
							
								
								
									
										2
									
								
								experiments/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								experiments/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -3,3 +3,5 @@ venv | |||||||
| logs | logs | ||||||
| __pycache__ | __pycache__ | ||||||
| generated/* | generated/* | ||||||
|  | batch/measurements/strong/* | ||||||
|  | configs/measurements/strong/* | ||||||
|  | |||||||
| @ -1,8 +1,17 @@ | |||||||
| VARIED_FILLINGS_IS := $(shell seq -w 0 10 100) | VARIED_FILLINGS_IS := $(shell seq -w 0 10 100) | ||||||
| VARIED_FILLINGS_JOBS := $(addprefix generated/varied-fillings-, $(addsuffix .json, ${VARIED_FILLINGS_IS})) | VARIED_FILLINGS_JOBS := $(addprefix generated/varied-fillings-, $(addsuffix .json, ${VARIED_FILLINGS_IS})) | ||||||
| 
 | 
 | ||||||
|  | all: varied-fillings strong | ||||||
|  | 
 | ||||||
| varied-fillings: ${VARIED_FILLINGS_JOBS} | varied-fillings: ${VARIED_FILLINGS_JOBS} | ||||||
| 
 | 
 | ||||||
|  | strong: | ||||||
|  | 	python scripts/gen/strong.py | ||||||
|  | 
 | ||||||
|  | clean-strong: | ||||||
|  | 	rm -f batch/measurements/strong/* | ||||||
|  | 	rm -f configs/measurements/strong/spheroid*.json | ||||||
|  | 
 | ||||||
| clean: | clean: | ||||||
| 	rm -f generated/* | 	rm -f generated/* | ||||||
| 
 | 
 | ||||||
| @ -15,4 +24,4 @@ clean-outs: | |||||||
| generated/varied-fillings-%.json: scripts/gen/varied_fillings.py templates/varied-fillings.json | generated/varied-fillings-%.json: scripts/gen/varied_fillings.py templates/varied-fillings.json | ||||||
| 	python scripts/gen/varied_fillings.py $* > $@ | 	python scripts/gen/varied_fillings.py $* > $@ | ||||||
| 
 | 
 | ||||||
| .PHONY: varied-fillings clean clean-logs clean-outs | .PHONY: varied-fillings strong clean clean-logs clean-outs | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								experiments/batch/measurements/strong/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								experiments/batch/measurements/strong/.gitkeep
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | Generated by scripts/gen/strong.py | ||||||
							
								
								
									
										102
									
								
								experiments/configs/comp.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								experiments/configs/comp.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,102 @@ | |||||||
|  | { | ||||||
|  |   "#Testing": { | ||||||
|  |     "description": "Small experiment for comparing CPU and GPU implementations" | ||||||
|  |   }, | ||||||
|  |   "Application": "Cells", | ||||||
|  |   "Geometry": { | ||||||
|  |     "blocksize": [10, 10, 10], | ||||||
|  |     "blockcount": [1, 1, 1] | ||||||
|  |   }, | ||||||
|  |   "Settings": { | ||||||
|  |     "timesteps": 4, | ||||||
|  |     "randomseed": 42 | ||||||
|  |   }, | ||||||
|  |   "Filling": { | ||||||
|  |     "cells": [ | ||||||
|  |       { | ||||||
|  |         "_comment": "This is for the dynamic ECM", | ||||||
|  |         "shape": "cube", | ||||||
|  |         "box": [ | ||||||
|  |           [0, 0, 0], | ||||||
|  |           [9, 9, 9] | ||||||
|  |         ], | ||||||
|  |         "value": 0, | ||||||
|  |         "celltype": 0 | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "shape": "cube", | ||||||
|  |         "box": [ | ||||||
|  |           [4, 4, 4], | ||||||
|  |           [7, 7, 7] | ||||||
|  |         ], | ||||||
|  |         "celltype": 2 | ||||||
|  |       } | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   "CellsInSilico": { | ||||||
|  |     "liquid": 1, | ||||||
|  |     "adhesion": { | ||||||
|  |       "matrix": [ | ||||||
|  |         [0, 0,  0, 0], | ||||||
|  |         [0, 0,  0, 0], | ||||||
|  |         [0, 0, 10, 5], | ||||||
|  |         [0, 0,  5, 5] | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     "temperature": 15, | ||||||
|  |     "volume": { | ||||||
|  |       "default": [0, 0, 64, 64], | ||||||
|  |       "lambda": { | ||||||
|  |         "storage": "const", | ||||||
|  |         "value": 10 | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "surface": { | ||||||
|  |       "default": [0, 0, 80, 80], | ||||||
|  |       "lambda": { | ||||||
|  |         "storage": "const", | ||||||
|  |         "value": 10 | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "cleaner": { | ||||||
|  |       "killdistance": 100 | ||||||
|  |     }, | ||||||
|  |     "checkerboard": "00", | ||||||
|  |     "energyfunctions": ["Volume00", "Surface00", "Adhesion00", "DynamicECM00"], | ||||||
|  |     "centerofmass": { | ||||||
|  |       "steps": 10 | ||||||
|  |     }, | ||||||
|  |     "dynamicecm": { | ||||||
|  |       "enabled": true, | ||||||
|  |       "stepsPerMcs": 10, | ||||||
|  |       "pushSteps": 10, | ||||||
|  |       "pushWeight": 2, | ||||||
|  |       "ecmCellID": 0, | ||||||
|  |       "deltat": 0.1, | ||||||
|  |       "eta": 0.25, | ||||||
|  |       "k0": 0.1, | ||||||
|  |       "k1": 0.1, | ||||||
|  |       "c": 4, | ||||||
|  |       "alpha": 2, | ||||||
|  |       "d": 0.3, | ||||||
|  |       "phi": 1, | ||||||
|  |       "lambda": 50 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "Writers": { | ||||||
|  |     "ParallelVTK_Cells": { | ||||||
|  |       "writer": "ParallelVtkImage", | ||||||
|  |       "outputtype": "UInt32", | ||||||
|  |       "field": "cells", | ||||||
|  |       "steps": 1 | ||||||
|  |     }, | ||||||
|  |     "ParallelVTK_Displacement": { | ||||||
|  |       "writer": "ParallelVtkImage", | ||||||
|  |       "outputtype": "Float32", | ||||||
|  |       "field": "dynamicecm", | ||||||
|  |       "components": [0, 1, 2], | ||||||
|  |       "steps": 1 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "WriteActions": ["ParallelVTK_Cells", "ParallelVTK_Displacement"] | ||||||
|  | } | ||||||
							
								
								
									
										1
									
								
								experiments/configs/measurements/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								experiments/configs/measurements/.gitkeep
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | Autogenerated by scripts/gen/strong.py | ||||||
| @ -0,0 +1,44 @@ | |||||||
|  | { | ||||||
|  |     "DefineFunctions": [ | ||||||
|  |         "r_angle()=360*rnd()", | ||||||
|  |         "r_size()=400*rnd()" | ||||||
|  |     ], | ||||||
|  |     "Filling": { | ||||||
|  |         "cells": [ | ||||||
|  |             { | ||||||
|  |                 "_comment": "This is for the dynamic ECM", | ||||||
|  |                 "shape": "cube", | ||||||
|  |                 "box": [ | ||||||
|  |                   [0, 0, 0], | ||||||
|  |                   [399, 399, 401] | ||||||
|  |                 ], | ||||||
|  |                 "value": 0, | ||||||
|  |                 "celltype": 0 | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |                 "shape": "sphere", | ||||||
|  |                 "pattern": "voronoi", | ||||||
|  |                 "count": 5500, | ||||||
|  |                 "radius": 75, | ||||||
|  |                 "center": [ | ||||||
|  |                     200, | ||||||
|  |                     200, | ||||||
|  |                     200 | ||||||
|  |                 ], | ||||||
|  |                 "box": [ | ||||||
|  |                     [ | ||||||
|  |                         110, | ||||||
|  |                         110, | ||||||
|  |                         110 | ||||||
|  |                     ], | ||||||
|  |                     [ | ||||||
|  |                         290, | ||||||
|  |                         290, | ||||||
|  |                         290 | ||||||
|  |                     ] | ||||||
|  |                 ], | ||||||
|  |                 "celltype": 9 | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										109
									
								
								experiments/configs/medium.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								experiments/configs/medium.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,109 @@ | |||||||
|  | { | ||||||
|  |   "#Testing": { | ||||||
|  |     "description": "Cellular Potts Model with dynamic ECM" | ||||||
|  |   }, | ||||||
|  |   "Application": "Cells", | ||||||
|  |   "Geometry": { | ||||||
|  |     "blocksize": [90, 90, 60], | ||||||
|  |     "blockcount": [2, 2, 3] | ||||||
|  |   }, | ||||||
|  |   "Settings": { | ||||||
|  |     "timesteps": 100, | ||||||
|  |     "randomseed": 42 | ||||||
|  |   }, | ||||||
|  |   "Filling": { | ||||||
|  |     "cells": [ | ||||||
|  |       { | ||||||
|  |         "_comment": "This is for the dynamic ECM", | ||||||
|  |         "shape": "cube", | ||||||
|  |         "box": [ | ||||||
|  |           [0, 0, 0], | ||||||
|  |           [179, 179, 179] | ||||||
|  |         ], | ||||||
|  |         "value": 0, | ||||||
|  |         "celltype": 0 | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |         "shape": "cube", | ||||||
|  |         "pattern": "voronoi", | ||||||
|  |         "box": [ | ||||||
|  |             [20, 20, 20], | ||||||
|  |             [159, 159, 159] | ||||||
|  |         ], | ||||||
|  |         "count": 1500, | ||||||
|  |         "celltype": [0, 0, 750, 750] | ||||||
|  |       } | ||||||
|  |     ] | ||||||
|  |   }, | ||||||
|  |   "CellsInSilico": { | ||||||
|  |     "liquid": 1, | ||||||
|  |     "adhesion": { | ||||||
|  |       "matrix": [ | ||||||
|  |         [0, 0,  0, 0], | ||||||
|  |         [0, 0,  0, 0], | ||||||
|  |         [0, 0, 10, 5], | ||||||
|  |         [0, 0,  5, 5] | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     "temperature": 15, | ||||||
|  |     "volume": { | ||||||
|  |       "default": { | ||||||
|  |         "storage": "const", | ||||||
|  |         "value": 2000 | ||||||
|  |       }, | ||||||
|  |       "lambda": { | ||||||
|  |         "storage": "const", | ||||||
|  |         "value": 10 | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "surface": { | ||||||
|  |       "default": { | ||||||
|  |         "storage": "const", | ||||||
|  |         "value": 800 | ||||||
|  |       }, | ||||||
|  |       "lambda": { | ||||||
|  |         "storage": "const", | ||||||
|  |         "value": 10 | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "cleaner": { | ||||||
|  |       "killdistance": 100 | ||||||
|  |     }, | ||||||
|  |     "checkerboard": "00", | ||||||
|  |     "energyfunctions": ["Volume00", "Surface00", "Adhesion00", "DynamicECM00"], | ||||||
|  |     "centerofmass": { | ||||||
|  |       "steps": 10 | ||||||
|  |     }, | ||||||
|  |     "dynamicecm": { | ||||||
|  |       "enabled": true, | ||||||
|  |       "stepsPerMcs": 100, | ||||||
|  |       "pushSteps": 10, | ||||||
|  |       "pushWeight": 2, | ||||||
|  |       "ecmCellID": 0, | ||||||
|  |       "deltat": 0.1, | ||||||
|  |       "eta": 0.25, | ||||||
|  |       "k0": 0.1, | ||||||
|  |       "k1": 0.1, | ||||||
|  |       "c": 4, | ||||||
|  |       "alpha": 2, | ||||||
|  |       "d": 0.3, | ||||||
|  |       "phi": 1 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "Writers": { | ||||||
|  |     "ParallelVTK_Cells": { | ||||||
|  |       "writer": "ParallelVtkImage", | ||||||
|  |       "outputtype": "UInt32", | ||||||
|  |       "field": "cells", | ||||||
|  |       "steps": 1 | ||||||
|  |     }, | ||||||
|  |     "ParallelVTK_Displacement": { | ||||||
|  |       "writer": "ParallelVtkImage", | ||||||
|  |       "outputtype": "Float32", | ||||||
|  |       "field": "dynamicecm", | ||||||
|  |       "components": [0, 1, 2], | ||||||
|  |       "steps": 1 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "WriteActions": ["ParallelVTK_Cells", "ParallelVTK_Displacement"] | ||||||
|  | } | ||||||
| @ -4,11 +4,11 @@ | |||||||
|   }, |   }, | ||||||
|   "Application": "Cells", |   "Application": "Cells", | ||||||
|   "Geometry": { |   "Geometry": { | ||||||
|     "blocksize": [20, 20, 20], |     "blocksize": [40, 20, 20], | ||||||
|     "blockcount": [2, 1, 1] |     "blockcount": [1, 1, 1] | ||||||
|   }, |   }, | ||||||
|   "Settings": { |   "Settings": { | ||||||
|     "timesteps": 500, |     "timesteps": 200, | ||||||
|     "randomseed": 42 |     "randomseed": 42 | ||||||
|   }, |   }, | ||||||
|   "Filling": { |   "Filling": { | ||||||
| @ -76,7 +76,7 @@ | |||||||
|     }, |     }, | ||||||
|     "dynamicecm": { |     "dynamicecm": { | ||||||
|       "enabled": true, |       "enabled": true, | ||||||
|       "stepsPerMcs": 100, |       "stepsPerMcs": 10, | ||||||
|       "pushSteps": 10, |       "pushSteps": 10, | ||||||
|       "pushWeight": 2, |       "pushWeight": 2, | ||||||
|       "ecmCellID": 0, |       "ecmCellID": 0, | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ | |||||||
|     "blockcount": [1, 1, 1] |     "blockcount": [1, 1, 1] | ||||||
|   }, |   }, | ||||||
|   "Settings": { |   "Settings": { | ||||||
|     "timesteps": 1, |     "timesteps": 3, | ||||||
|     "randomseed": 42 |     "randomseed": 42 | ||||||
|   }, |   }, | ||||||
|   "Filling": { |   "Filling": { | ||||||
|  | |||||||
							
								
								
									
										116
									
								
								experiments/configs/spheroid/config.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								experiments/configs/spheroid/config.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,116 @@ | |||||||
|  | { | ||||||
|  |     "Comments": ["Celltype         Usage", "0                Not Used", "1-5             Solids for blood vessels / ECM", "6               Liquid  ", "7               Apoptotic cell Type ", "8               Basic Non Dividing Cell type (surrounding)", "9               Cancer"], | ||||||
|  |     "Application": "Cells", | ||||||
|  |     "CellsInSilico": { | ||||||
|  |         "ecmdegradation": { | ||||||
|  |             "enabled": "false", | ||||||
|  |             "steps": 99999, | ||||||
|  |             "stochastic": "true", | ||||||
|  |             "probability": 0.5 | ||||||
|  |         }, | ||||||
|  |         "energyfunctions": ["Volume00", "Surface01", "Motility00", "Adhesion01", "DynamicECM00"], | ||||||
|  |         "liquid": 6, | ||||||
|  |         "volume": { | ||||||
|  |             "default": { | ||||||
|  |                 "storage": "const", | ||||||
|  |                 "value": 500 | ||||||
|  |             }, | ||||||
|  |             "lambda": [0, 0, 0, 0, 0, 0, 0, 7.5, 7.5, 7.5], | ||||||
|  |             "sizechange": [0, 0, 0, 0, 0, 0, 0, -0.05, 0, 0, 0, 0, 0, 0, 0] | ||||||
|  |         }, | ||||||
|  |         "surface": { | ||||||
|  |             "default": { | ||||||
|  |                 "storage": "const", | ||||||
|  |                 "value": 400 | ||||||
|  |             }, | ||||||
|  |             "lambda": [0, 0, 0, 0, 0, 0, 0, 5.625, 5.625, 1], | ||||||
|  |             "sizechange": [0, 0, 0, 0, 0, 0, 0, -0.05, 0, 0, 0, 0, 0, 0, 0, 0] | ||||||
|  |         }, | ||||||
|  |         "adhesion": { | ||||||
|  |             "matrix": [ | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 450], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 450, 0, 0, 0, 0, 0, 0, 0, 50] | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |         "temperature": 50, | ||||||
|  |         "division": { | ||||||
|  |             "enabled": "true", | ||||||
|  |             "condition": ["", "", "", "", "", "", "", "", "", "( volume >= 0.9 * volume0 )  & ( rnd() <= 0.00001 ) & generation < 1"] | ||||||
|  |         }, | ||||||
|  |         "centerofmass": { | ||||||
|  |             "steps": 1 | ||||||
|  |         }, | ||||||
|  |         "signaling": { | ||||||
|  |             "enabled": false | ||||||
|  |         }, | ||||||
|  |         "orientation": { | ||||||
|  |             "enabled": true, | ||||||
|  |             "motility": "persistentRandomWalk", | ||||||
|  |             "persistenceMagnitude": 0.0, | ||||||
|  |             "recalculationtime": 200, | ||||||
|  |             "motilityamount": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | ||||||
|  |         }, | ||||||
|  |         "visitor": { | ||||||
|  |             "stepwidth": 10, | ||||||
|  |             "checkerboard": "01" | ||||||
|  |         }, | ||||||
|  |         "cleaner": { | ||||||
|  |             "killDistance": 20 | ||||||
|  |         }, | ||||||
|  |         "dynamicecm": { | ||||||
|  |             "enabled": true, | ||||||
|  |             "stepsPerMcs": 100, | ||||||
|  |             "pushSteps": 10, | ||||||
|  |             "pushWeight": 2, | ||||||
|  |             "ecmCellID": 0, | ||||||
|  |             "deltat": 0.1, | ||||||
|  |             "eta": 0.25, | ||||||
|  |             "k0": 0.1, | ||||||
|  |             "k1": 0.1, | ||||||
|  |             "c": 4, | ||||||
|  |             "alpha": 2, | ||||||
|  |             "d": 0.3, | ||||||
|  |             "phi": 1 | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     "Geometry": { | ||||||
|  |         "blockcount": [8, 8, 6], | ||||||
|  |         "blocksize": [50, 50, 67] | ||||||
|  |     }, | ||||||
|  |     "Settings": { | ||||||
|  |         "randomseed": 0, | ||||||
|  |         "timesteps": 100 | ||||||
|  |     }, | ||||||
|  |     "WriteActions": ["CellInfo"], | ||||||
|  |     "Writers": { | ||||||
|  |         "CellInfo": { | ||||||
|  |             "field": "", | ||||||
|  |             "groupsize": 0, | ||||||
|  |             "steps": 1, | ||||||
|  |             "writer": "CellInfo" | ||||||
|  |         }, | ||||||
|  |         "ParallelVTK_Cells": { | ||||||
|  |             "field": "cells", | ||||||
|  |             "outputtype": "UInt32", | ||||||
|  |             "printhints": false, | ||||||
|  |             "steps": 1, | ||||||
|  |             "writer": "ParallelVtkImage" | ||||||
|  |         }, | ||||||
|  |         "ParallelVTK_Displacement": { | ||||||
|  |             "writer": "ParallelVtkImage", | ||||||
|  |             "outputtype": "Float32", | ||||||
|  |             "field": "dynamicecm", | ||||||
|  |             "components": [0, 1, 2], | ||||||
|  |             "steps": 1 | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     "Include": "config_filling_1.json" | ||||||
|  | } | ||||||
							
								
								
									
										44
									
								
								experiments/configs/spheroid/config_filling_1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								experiments/configs/spheroid/config_filling_1.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | { | ||||||
|  |     "DefineFunctions": [ | ||||||
|  |         "r_angle()=360*rnd()", | ||||||
|  |         "r_size()=400*rnd()" | ||||||
|  |     ], | ||||||
|  |     "Filling": { | ||||||
|  |         "cells": [ | ||||||
|  |             { | ||||||
|  |                 "_comment": "This is for the dynamic ECM", | ||||||
|  |                 "shape": "cube", | ||||||
|  |                 "box": [ | ||||||
|  |                   [0, 0, 0], | ||||||
|  |                   [399, 399, 401] | ||||||
|  |                 ], | ||||||
|  |                 "value": 0, | ||||||
|  |                 "celltype": 0 | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |                 "shape": "sphere", | ||||||
|  |                 "pattern": "voronoi", | ||||||
|  |                 "count": 5500, | ||||||
|  |                 "radius": 75, | ||||||
|  |                 "center": [ | ||||||
|  |                     200, | ||||||
|  |                     200, | ||||||
|  |                     200 | ||||||
|  |                 ], | ||||||
|  |                 "box": [ | ||||||
|  |                     [ | ||||||
|  |                         110, | ||||||
|  |                         110, | ||||||
|  |                         110 | ||||||
|  |                     ], | ||||||
|  |                     [ | ||||||
|  |                         290, | ||||||
|  |                         290, | ||||||
|  |                         290 | ||||||
|  |                     ] | ||||||
|  |                 ], | ||||||
|  |                 "celltype": 9 | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										77
									
								
								experiments/scripts/gen/strong.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								experiments/scripts/gen/strong.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,77 @@ | |||||||
|  | import copy | ||||||
|  | import json | ||||||
|  | 
 | ||||||
|  | from dataclasses import dataclass | ||||||
|  | from typing import Tuple | ||||||
|  | 
 | ||||||
|  | @dataclass | ||||||
|  | class Configuration: | ||||||
|  |     nodes: int | ||||||
|  |     tasks: int | ||||||
|  |     gpus_per_node: int | ||||||
|  |     blockcount: Tuple[int, int, int] | ||||||
|  |     blocksize: Tuple[int, int, int] | ||||||
|  | 
 | ||||||
|  |     def get_domain_size(self) -> int: | ||||||
|  |         return self.blockcount[0] * self.blocksize[0] * self.blockcount[1] * self.blocksize[1] * self.blockcount[2] * self.blocksize[2] | ||||||
|  | 
 | ||||||
|  | configurations = [ | ||||||
|  |     Configuration( 1,   12,   1, ( 1,  4, 3), (400, 100, 134)), | ||||||
|  |     Configuration( 1,   24,   2, ( 2,  4, 3), (200, 100, 134)), | ||||||
|  |     Configuration( 1,   48,   4, ( 4,  4, 3), (100, 100, 134)), | ||||||
|  |     Configuration( 2,   96,   4, ( 4,  4, 6), (100, 100,  67)), | ||||||
|  |     Configuration( 4,  192,   4, ( 4,  8, 6), (100,  50,  67)), | ||||||
|  |     Configuration( 8,  384,   4, ( 8,  8, 6), ( 50,  50,  67)), | ||||||
|  |     Configuration(16,  768,   4, ( 8, 16, 6), ( 50,  25,  67)), | ||||||
|  |     Configuration(32, 1536,   4, (16, 16, 6), ( 25,  25,  67)) | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | with open("templates/spheroid.json") as template_file: | ||||||
|  |     template = json.load(template_file) | ||||||
|  | 
 | ||||||
|  | for c in configurations: | ||||||
|  |     print(c) | ||||||
|  |     assert(c.get_domain_size() == configurations[0].get_domain_size()) | ||||||
|  | 
 | ||||||
|  |     nastja_config = copy.deepcopy(template) | ||||||
|  | 
 | ||||||
|  |     nastja_config["Geometry"]["blockcount"] = c.blockcount | ||||||
|  |     nastja_config["Geometry"]["blocksize"] = c.blocksize | ||||||
|  | 
 | ||||||
|  |     label = f"{c.nodes:02}" | ||||||
|  | 
 | ||||||
|  |     if c.gpus_per_node < 4: | ||||||
|  |         label += f"g{c.gpus_per_node}" | ||||||
|  | 
 | ||||||
|  |     with open(f"configs/measurements/strong/spheroid_{label}.json", "w") as config_file: | ||||||
|  |         json.dump(nastja_config, config_file, indent=2) | ||||||
|  | 
 | ||||||
|  |     batch_config = f"""#!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | #SBATCH --job-name=strong-{label} | ||||||
|  | #SBATCH --account=hkf6 | ||||||
|  | #SBATCH --partition=booster | ||||||
|  | #SBATCH --nodes={c.nodes} | ||||||
|  | #SBATCH --ntasks={c.tasks} | ||||||
|  | # Counted per node | ||||||
|  | #SBATCH --gres=gpu:{c.gpus_per_node} | ||||||
|  | #SBATCH --time=06:00:00 | ||||||
|  | #SBATCH --output=logs/strong-{label}-%A_%a.log | ||||||
|  | #SBATCH --error=logs/strong-{label}-%A_%a.log | ||||||
|  | #SBATCH --array=1-5 | ||||||
|  | 
 | ||||||
|  | SOURCE_DIR=/p/project/cellsinsilico/paulslustigebude | ||||||
|  | OUTPUT_DIR="/p/scratch/cellsinsilico/paul/nastja-out/strong-{label}-${{SLURM_ARRAY_TASK_ID}}" | ||||||
|  | 
 | ||||||
|  | echo "${{OUTPUT_DIR}}" | ||||||
|  | 
 | ||||||
|  | mkdir -p "${{OUTPUT_DIR}}" | ||||||
|  | source "${{SOURCE_DIR}}/activate-nastja-modules" | ||||||
|  | 
 | ||||||
|  | srun --unbuffered "${{SOURCE_DIR}}/nastja/build-cuda/nastja" \\ | ||||||
|  |   -c "${{SOURCE_DIR}}/ma/experiments/configs/measurements/strong/spheroid_{c.nodes:02}.json" \\ | ||||||
|  |   -o "${{OUTPUT_DIR}}" | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  |     with open(f"batch/measurements/strong/strong-{label}", "w", encoding="utf8") as batch_config_file: | ||||||
|  |         batch_config_file.write(batch_config) | ||||||
							
								
								
									
										116
									
								
								experiments/templates/spheroid.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								experiments/templates/spheroid.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,116 @@ | |||||||
|  | { | ||||||
|  |     "Comments": ["Celltype         Usage", "0                Dynamic ECM", "1-5             Not Used", "6               Liquid  ", "7               Apoptotic cell Type ", "8               Basic Non Dividing Cell type (surrounding)", "9               Cancer"], | ||||||
|  |     "Application": "Cells", | ||||||
|  |     "CellsInSilico": { | ||||||
|  |         "ecmdegradation": { | ||||||
|  |             "enabled": "false", | ||||||
|  |             "steps": 99999, | ||||||
|  |             "stochastic": "true", | ||||||
|  |             "probability": 0.5 | ||||||
|  |         }, | ||||||
|  |         "energyfunctions": ["Volume00", "Surface01", "Motility00", "Adhesion01", "DynamicECM00"], | ||||||
|  |         "liquid": 6, | ||||||
|  |         "volume": { | ||||||
|  |             "default": { | ||||||
|  |                 "storage": "const", | ||||||
|  |                 "value": 500 | ||||||
|  |             }, | ||||||
|  |             "lambda": [0, 0, 0, 0, 0, 0, 0, 7.5, 7.5, 7.5], | ||||||
|  |             "sizechange": [0, 0, 0, 0, 0, 0, 0, -0.05, 0, 0, 0, 0, 0, 0, 0] | ||||||
|  |         }, | ||||||
|  |         "surface": { | ||||||
|  |             "default": { | ||||||
|  |                 "storage": "const", | ||||||
|  |                 "value": 400 | ||||||
|  |             }, | ||||||
|  |             "lambda": [0, 0, 0, 0, 0, 0, 0, 5.625, 5.625, 1], | ||||||
|  |             "sizechange": [0, 0, 0, 0, 0, 0, 0, -0.05, 0, 0, 0, 0, 0, 0, 0, 0] | ||||||
|  |         }, | ||||||
|  |         "adhesion": { | ||||||
|  |             "matrix": [ | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 450], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], | ||||||
|  |                 [0, 450, 0, 0, 0, 0, 0, 0, 0, 50] | ||||||
|  |             ] | ||||||
|  |         }, | ||||||
|  |         "temperature": 50, | ||||||
|  |         "division": { | ||||||
|  |             "enabled": "true", | ||||||
|  |             "condition": ["", "", "", "", "", "", "", "", "", "( volume >= 0.9 * volume0 )  & ( rnd() <= 0.00001 ) & generation < 1"] | ||||||
|  |         }, | ||||||
|  |         "centerofmass": { | ||||||
|  |             "steps": 1 | ||||||
|  |         }, | ||||||
|  |         "signaling": { | ||||||
|  |             "enabled": false | ||||||
|  |         }, | ||||||
|  |         "orientation": { | ||||||
|  |             "enabled": true, | ||||||
|  |             "motility": "persistentRandomWalk", | ||||||
|  |             "persistenceMagnitude": 0.0, | ||||||
|  |             "recalculationtime": 200, | ||||||
|  |             "motilityamount": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] | ||||||
|  |         }, | ||||||
|  |         "visitor": { | ||||||
|  |             "stepwidth": 10, | ||||||
|  |             "checkerboard": "01" | ||||||
|  |         }, | ||||||
|  |         "cleaner": { | ||||||
|  |             "killDistance": 20 | ||||||
|  |         }, | ||||||
|  |         "dynamicecm": { | ||||||
|  |             "enabled": true, | ||||||
|  |             "stepsPerMcs": 100, | ||||||
|  |             "pushSteps": 10, | ||||||
|  |             "pushWeight": 2, | ||||||
|  |             "ecmCellID": 0, | ||||||
|  |             "deltat": 0.1, | ||||||
|  |             "eta": 0.25, | ||||||
|  |             "k0": 0.1, | ||||||
|  |             "k1": 0.1, | ||||||
|  |             "c": 4, | ||||||
|  |             "alpha": 2, | ||||||
|  |             "d": 0.3, | ||||||
|  |             "phi": 1 | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     "Geometry": { | ||||||
|  |         "blockcount": [4, 4, 3], | ||||||
|  |         "blocksize": [100, 100, 134] | ||||||
|  |     }, | ||||||
|  |     "Settings": { | ||||||
|  |         "randomseed": 0, | ||||||
|  |         "timesteps": 100 | ||||||
|  |     }, | ||||||
|  |     "WriteActions": ["CellInfo"], | ||||||
|  |     "Writers": { | ||||||
|  |         "CellInfo": { | ||||||
|  |             "field": "", | ||||||
|  |             "groupsize": 0, | ||||||
|  |             "steps": 1, | ||||||
|  |             "writer": "CellInfo" | ||||||
|  |         }, | ||||||
|  |         "ParallelVTK_Cells": { | ||||||
|  |             "field": "cells", | ||||||
|  |             "outputtype": "UInt32", | ||||||
|  |             "printhints": false, | ||||||
|  |             "steps": 100, | ||||||
|  |             "writer": "ParallelVtkImage" | ||||||
|  |         }, | ||||||
|  |         "ParallelVTK_Displacement": { | ||||||
|  |             "writer": "ParallelVtkImage", | ||||||
|  |             "outputtype": "Float32", | ||||||
|  |             "field": "dynamicecm", | ||||||
|  |             "components": [0, 1, 2], | ||||||
|  |             "steps": 100 | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     "Include": "config_filling_1.json" | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user