Created: April 2019 jps
id: qewr | creation_date: Sept. 12, 2017, 1:52 p.m. | author: Anwar | type: Poll |
parent: qewr | lastedit_date: Sept. 12, 2017, 2:02 p.m. | lastedit_user: Anwar |
content:
We would like to know about operating system CompuCell3D users use. This will allow us to support and development CompuCell3D more efficiently.
id: xmzm | creation_date: Sept. 12, 2017, 1:53 p.m. | author: Anwar | type: Answer |
parent: qewr | lastedit_date: Sept. 12, 2017, 2:02 p.m. | lastedit_user: Anwar |
content:
Microsoft Windows
(Includes Windows 10, Windows 7 all Microsoft platforms)
id: rbvl | creation_date: Sept. 12, 2017, 2 p.m. | author: Anwar | type: Answer |
parent: qewr | lastedit_date: Sept. 12, 2017, 2:02 p.m. | lastedit_user: Anwar |
content:
Apple MacOS
( All Apple products)
id: gpbg | creation_date: Sept. 12, 2017, 2:01 p.m. | author: Anwar | type: Answer |
parent: qewr | lastedit_date: Sept. 12, 2017, 2:02 p.m. | lastedit_user: Anwar |
content:
Linux
( All Linux platforms and flavors e.g. Ubuntu, RedHat, Mint)
id: lgkx | creation_date: Sept. 12, 2017, 1:39 p.m. | author: Anwar | type: Note |
parent: lgkx | lastedit_date: Sept. 13, 2017, 2:24 p.m. | lastedit_user: Anwar |
content:
CompuCell3D is an open-source simulation environment for multi-cell, single-cell-based modeling of tissues, organs and organisms.
It uses Cellular Potts Model to model cell behavior. For technical details about modeling please refer Multi-Scale Modeling of Tissues Using CompuCell3D paper.
For more information and tutorials please visit CompuCell3D website.
This project is funded by the NIH and EPA.
id: bbax | creation_date: Sept. 12, 2017, 1:48 p.m. | author: Anwar | type: Note |
parent: bbax | lastedit_date: Sept. 13, 2017, 2:27 p.m. | lastedit_user: Anwar |
content:
This CompuCell3D forum should only be used for following purposes-
id: jrnvv | creation_date: Oct. 2, 2017, 1:40 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: Oct. 2, 2017, 12:44 p.m. | lastedit_user: Anwar |
content:
system: Windows 7
CC3D Version: 3.7.5
id: eqemr | creation_date: Oct. 2, 2017, 10:50 a.m. | author: Maciek Swat | type: Answer |
parent: jrnvv | lastedit_date: Oct. 2, 2017, 12:44 p.m. | lastedit_user: Maciek Swat |
content:
Assuming you have two cell types - Condensing and NonCondensing you could do the following:
def step(self, mcs):
print 'num condensing=', len(self.cellListByType(self.CONDENSING))
print 'num noncondensing=', len(self.cellListByType(self.NONCONDENSING))
Alternatively, instead of using self.CONDENSING and self.NONCONDENSING you may use cell type ids directly (I assume Condensing has cell type id =1 and NonCondensing has cell type id =2):
def step(self, mcs):
print 'num condensing=', len(self.cellListByType(1))
print 'num noncondensing=', len(self.cellListByType(2))
id: omxzp | creation_date: Oct. 4, 2017, 1:31 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: Oct. 6, 2017, 1:35 a.m. | lastedit_user: dali Zan |
content:
I want to use some cells set a thin film but when model starts running those cells won't stay together and disperse. I know "Cell Type" plugin that has a function named "freeze". But the "Freeze" function will not let cells to be altered by pixel copies. I wonder if there are some other methods which can keep cells stay together like a film during simulation.
id: beeoa | creation_date: Oct. 4, 2017, 2:55 p.m. | author: Matt Thompson | type: Answer |
parent: omxzp | lastedit_date: Oct. 4, 2017, 4:20 p.m. | lastedit_user: Matt Thompson |
content:
"Playing" with the contact energy may help. If the contact energy between cells of the same type is decreased, affinity is increased, so dispersion is less likely, though they may clump together instead. For a layer of cells (L) sitting on top of another group of cells (S), you want the contact energies to be S-S < S-L < L-L < L-medium I believe.
id: gggrv | creation_date: Oct. 4, 2017, 4:27 p.m. | author: James Sluka | type: Answer |
parent: omxzp | lastedit_date: Oct. 4, 2017, 4:27 p.m. | lastedit_user: James Sluka |
content:
There are a couple ways to make cells form a layer.
1. You can have the cells stick to the wall of the bounding box (but then you can only access one face of the cell layer).
2. You could make a curved cell layer ala the cell sorting demos where your cell layer is actually spherical (the "noncondensing" cells in the cell sort demos).
3. You can use compartmentalized cells that have basal, apical and lateral faces defined.
4. You can add distance constraints between cells using "Elasticity Plugin" or "FocalPointPlasticity Plugin". Constraints on contact neighbors keep the sheet intact. If the distance constraints go beyond first neighbors then the constraint will tend to keep the sheet flat.
You might take a look at Biofilms in 2D https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2547990/ SIMULATION OF SINGLE-SPECIES BACTERIAL-BIOFILM GROWTH USING THE GLAZIER-GRANER-HOGEWEG MODEL AND THE COMPUCELL3D MODELING ENVIRONMENT
Are you working in 2D or 3D?
id: jrrna | creation_date: Oct. 4, 2017, 7:45 p.m. | author: Maciek Swat | type: Comment |
parent: gggrv | lastedit_date: Oct. 4, 2017, 7:45 p.m. | lastedit_user: Maciek Swat |
content:
I agree with Jim's 4. suggestion. This would be the most robust way to have cells stay together. Relying purely on contact energy may not be sufficient. It would help us if you could post the geometry of the tissue you are trying to model.
id: avvlb | creation_date: Oct. 5, 2017, 3:31 a.m. | author: dali Zan | type: Comment |
parent: jrrna | lastedit_date: Oct. 5, 2017, 3:31 a.m. | lastedit_user: dali Zan |
content:
i just want to make cells form a layer to simulate a rectangular hydrogel film,so that i can simulate the mechanical properties of hydrogel in simulation。
id: qvvwb | creation_date: Oct. 5, 2017, 4:38 p.m. | author: James Sluka | type: Answer |
parent: omxzp | lastedit_date: Oct. 5, 2017, 4:43 p.m. | lastedit_user: James Sluka |
content:
Attached is a zip file with a CC3D model of a layer of cells in 2D (basically a line of cells). The line is maintained using focal point plasticity links. The sim first creates the line of cells, it then displaces the central cell upwards and the end cells downward showing the sheet stays intact (though holes open transiently). It then pulls the ends together into a circle.
It should be possible to convert into a 3D model.
CC3D files: File attached: CellsInLayer_FPP.zip (1.05 MB)
An animation of the output: File attached: output_ObCKSA.mp4 (141.98 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\CellsInLayer_FPP.zip
.\CC3D_allanswered_linked_files\output_ObCKSA.mp4
id: reerj | creation_date: Oct. 5, 2017, 4:56 p.m. | author: Maciek Swat | type: Comment |
parent: avvlb | lastedit_date: Oct. 5, 2017, 4:56 p.m. | lastedit_user: Maciek Swat |
content:
If the hydrogel is coating some object (e.g. tissue) then all you need to do is to create a blob of tissue, cover it with gel and choose appropriate adhesion (ContactPlugin) coefficients
Hydrogel.xml
<CompuCell3D Revision="20170429" Version="3.7.6">
<Potts>
<Dimensions x="100" y="100" z="1"/>
<Steps>10000</Steps>
<Temperature>20.0</Temperature>
<NeighborOrder>1</NeighborOrder>
</Potts>
<Plugin Name="CellType">
<CellType TypeId="0" TypeName="Medium"/>
<CellType TypeId="1" TypeName="Gel"/>
<CellType TypeId="2" TypeName="Tissue"/>
</Plugin>
<Plugin Name="Volume"/>
<Plugin Name="CenterOfMass"/>
<Plugin Name="Contact">
<Energy Type1="Medium" Type2="Medium">10.0</Energy>
<Energy Type1="Medium" Type2="Gel">25.0</Energy>
<Energy Type1="Medium" Type2="Tissue">25.0</Energy>
<Energy Type1="Gel" Type2="Gel">12.0</Energy>
<Energy Type1="Tissue" Type2="Tissue">5.0</Energy>
<Energy Type1="Gel" Type2="Tissue">10.0</Energy>
<NeighborOrder>3</NeighborOrder>
</Plugin>
</CompuCell3D>
import sys
from os import environ
from os import getcwd
import string
sys.path.append(environ["PYTHON_MODULE_PATH"])
import CompuCellSetup
sim,simthread = CompuCellSetup.getCoreSimulationObjects()
# add extra attributes here
CompuCellSetup.initializeSimulationObjects(sim,simthread)
# Definitions of additional Python-managed fields go here
#Add Python steppables here
steppableRegistry=CompuCellSetup.getSteppableRegistry()
from HydrogelSteppables import HydrogelSteppable
steppableInstance=HydrogelSteppable(sim,_frequency=1)
steppableRegistry.registerSteppable(steppableInstance)
CompuCellSetup.mainLoop(sim,simthread,steppableRegistry)
from PySteppables import *
import CompuCell
import sys
class HydrogelSteppable(SteppableBasePy):
def __init__(self,_simulator,_frequency=1):
SteppableBasePy.__init__(self, _simulator, _frequency)
def start(self):
cell_size = 5
rows = 10
cols = 10
blob_pos_vec = [20, 20, 0]
for r in range(rows):
for c in range(cols):
new_cell = self.newCell(self.TISSUE)
x_pos = r*cell_size + blob_pos_vec[0]
y_pos = c*cell_size + blob_pos_vec[1]
self.cellField[x_pos:x_pos+cell_size, y_pos:y_pos+cell_size, 0] = new_cell
if r==0 or c==0 or r==rows-1 or c==cols-1:
new_cell.type = self.GEL
#setting up volume constraint
for cell in self. cellList:
cell.targetVolume = 25
cell.lambdaVolume = 2.0
if cell.type == self.GEL:
cell.targetVolume = 30
cell.lambdaVolume = 2.0
def step(self,mcs):
pass
id: nqqxe | creation_date: Oct. 6, 2017, 1:24 a.m. | author: dali Zan | type: Comment |
parent: reerj | lastedit_date: Oct. 6, 2017, 1:24 a.m. | lastedit_user: dali Zan |
content:
Deeply thanks for your help,and sorry for my unclear expression. The tissue is not coated by hydrogel but cultured on hydrogel. Assuming a simulation has 2 units of z axis, one unit is a layer of hydrogel and another unit is a 2d tissue cultured on that hydrogel. Can this be achieved in cc3d?
id: pggoj | creation_date: Oct. 6, 2017, 1:26 a.m. | author: dali Zan | type: Comment |
parent: beeoa | lastedit_date: Oct. 6, 2017, 1:26 a.m. | lastedit_user: dali Zan |
content:
thanks for your help
id: zppxr | creation_date: Oct. 6, 2017, 1:35 a.m. | author: dali Zan | type: Comment |
parent: qvvwb | lastedit_date: Oct. 6, 2017, 1:35 a.m. | lastedit_user: dali Zan |
content:
Thanks for your help,my previous expression is not clear. The supplementary explanation is under Maciek Swat’s comment.
id: loomz | creation_date: Oct. 12, 2017, 12:33 p.m. | author: dali Zan | type: Question |
parent: | lastedit_date: Oct. 20, 2017, 1:24 a.m. | lastedit_user: dali Zan |
content:
In my model, I set a wall and let cells grow on it. If I don't set specific condition, cell will growing to a lump. I tried to use plugin 'Focal Point Plasticity' to restrain cell growth along the wall but it's not effective enough. I wonder whether I should use this plugin according with in vitro anchorage-dependent cell growth status?
id: wllxx | creation_date: Oct. 12, 2017, 6:55 p.m. | author: James Sluka | type: Answer |
parent: loomz | lastedit_date: Oct. 12, 2017, 6:55 p.m. | lastedit_user: James Sluka |
content:
FPP will do it but you might first try:
1. Have the cells sticker to the wall than to themselves. Use low stickyness to medium, with medium-wall being the least sticky of all. The magnitudes will need to be adjusted differently in 2D vs. 3D.
(assuming wall is fixed so wall-wall adhesion doesn't matter)
-3 wall-cell
-2 cell-cell
0 cell-medium
2 wall-medium
0 medium-medium
Note that the adhesion energy will tend to flatten the cells out. We can take advantage of that in the next suggestion.
2. When dividing cells divide along the major axis. This will usually keep both the parent and daughter cells in contact with the surface. Search for "major axis" in the documentation, it is one of the options for the mitosis plugin and steppable.
id: eqqma | creation_date: Oct. 12, 2017, 6:57 p.m. | author: James Sluka | type: Answer |
parent: loomz | lastedit_date: Oct. 12, 2017, 6:57 p.m. | lastedit_user: James Sluka |
content:
If you are still having problems we should be able to come up with a demo of using FPP to help keep cells sticking to a wall or surface.
id: avvgo | creation_date: Oct. 13, 2017, 4:29 a.m. | author: dali Zan | type: Comment |
parent: wllxx | lastedit_date: Oct. 13, 2017, 4:29 a.m. | lastedit_user: dali Zan |
content:
I used FPP and the method above together to help cells stick to wall. It seems to have worked, but I found that cell is fragmented after a few steps even if I used Connectivity Plugins.
id: loogz | creation_date: Oct. 15, 2017, 4:22 p.m. | author: Maciek Swat | type: Answer |
parent: loomz | lastedit_date: Oct. 15, 2017, 4:22 p.m. | lastedit_user: Maciek Swat |
content:
I am not sure if this feature already exist in CC3D but ideally what you should be able to do is to use elongation plugin - it elongates cells AND specify the direction of elongation - i.e. a vector of a major axis of the cell. There is a plugin called "OrientedGrowth" which probably does what you want. We do not have examples of how to use this plugin in our demo suite but I can reach out to a person who contributed this plugin and find out.
Another option to explore is to use compartmentalized cells (i.e. your biological cell is a collection of CompuCell3D cells - compartments) and then you could use Focal Point Plasticity to connect the compartments together. Of course the compartments would still remain "blobs" but you could get elongated cells this way.
id: beebr | creation_date: Oct. 15, 2017, 4:23 p.m. | author: Maciek Swat | type: Comment |
parent: avvgo | lastedit_date: Oct. 15, 2017, 4:23 p.m. | lastedit_user: Maciek Swat |
content:
Could you post your simulation showing how connectivity plugin leads to fragmentation? This should not happen so we would like to investigate the cause
id: qvvee | creation_date: Oct. 15, 2017, 4:41 p.m. | author: Maciek Swat | type: Answer |
parent: loomz | lastedit_date: Oct. 15, 2017, 4:41 p.m. | lastedit_user: Maciek Swat |
content:
This demo was contributed by Jeremy Fisher (https://cc3dadvancedtuts.wordpress.com/) who also coded up the OrientedGrowth plugin. Take a looks and see if this looks closer to what you are looking for
File attached: OrientedGrowth.zip (2 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\OrientedGrowth.zip
id: omaao | creation_date: Oct. 16, 2017, 11:43 p.m. | author: Jeremy Fisher | type: Answer |
parent: loomz | lastedit_date: Oct. 16, 2017, 11:43 p.m. | lastedit_user: Jeremy Fisher |
content:
Oriented growth should impose an arbitrarily large energy penalty on growth perpendicular to the wall, which I believe this would address the issue. However, it only supports 2D simulations as of the moment.
It wouldn't be too difficult to add support for 3D simulations. Is this an approach you would be interested in?
id: rervb | creation_date: Oct. 17, 2017, 10:07 a.m. | author: dali Zan | type: Comment |
parent: beebr | lastedit_date: Oct. 17, 2017, 10:07 a.m. | lastedit_user: dali Zan |
content:
the problem of fragmentation is fixed, Connectivity Plugin's invalid maybe because of I set the value of Penalty is out of threshold. Now the model is basically achieved expectations. But when cells grow to relatively high density, it's hard to avoid cell overlap and some cells will tend to growing away from wall. So I wonder how can i know the cell neighbor's cell type that can help me to eliminate cells which do not contact the wall. The CompuCell3D 3.7.4 Reference Manual only tell us how to get cell neighbor' id but not their type.
id: wlrea | creation_date: Oct. 17, 2017, 2:28 p.m. | author: James Sluka | type: Comment |
parent: rervb | lastedit_date: Oct. 17, 2017, 2:28 p.m. | lastedit_user: James Sluka |
content:
You can visit all cells of a particular type and then check the contact area for that cells neighbors of particular types with something like;
for cell in self.cellListByType(self.CULTUREDCELLS): ### list of cell types (capitalized)
cell_neighbors = self.getCellNeighborDataList(cell) ### list of this cell’s neighbors
neighbor_count_by_type = cell_neighbors.neighborCountByType()
### neighbor_count_by_type is a hash indexed by cell type IDs,
### so neighbor_count_by_type{1} gives the number of neighbors of cell type 1
### if no neighbors of a particular type you could do something here
if (cell_neighbors.commonSurfaceAreaWithCellTypes([self.HYDROGEL]) < (cellWidth**2/4.)):
# this cell has very little contact with hydrogel so kill it
cell.targetVolume = 0.
cell.targetSurface = 0.
cell.lambdaVolume = 0.01 # small lambda's so the cell shrinks slowly
cell.lambdaSurface = 0.01
print("KILL {}: {}, tv={} ts={} v={} s={}".format(cell.id,cell.type,cell.targetVolume,cell.targetSurface,cell.volume,cell.surface))
In the main xml you need;
<Plugin Name="NeighborTracker">
<!-- Module tracking neighboring cells of each cell -->
</Plugin>
id: avwrw | creation_date: Oct. 20, 2017, 1:24 a.m. | author: dali Zan | type: Comment |
parent: wlrea | lastedit_date: Oct. 20, 2017, 1:24 a.m. | lastedit_user: dali Zan |
content:
It works, truely thanks for your help.
id: qvwxm | creation_date: Oct. 19, 2017, 8:56 p.m. | author: Yen Nguyen Edalgo | type: Question |
parent: | lastedit_date: Oct. 20, 2017, 1:34 p.m. | lastedit_user: Maciek Swat |
content:
Hi,
So what I observed from the movement of CC3D generalized cells is that they all move around each other, and not over each other. Is is possible to implement, say the phenomena where tumor cell moves along collagen fibers in the extracellular matrix? From my current knowledge of CompuCell3D, in order for this phenomenon to be possible, two different cell types must be on the same pixel at the same simulation step. Is this possible in CompuCell3D simulation? Also, in my simulation, I treat fibers as discrete generalized cells (I also freeze them) instead of chemical field.
Sincerely,
id: beamw | creation_date: Oct. 20, 2017, 10:53 a.m. | author: James Sluka | type: Answer |
parent: qvwxm | lastedit_date: Oct. 20, 2017, 10:53 a.m. | lastedit_user: James Sluka |
content:
CC3D can't have the same pixel as part of two cells, indeed biology and physics don't allow that either. The only time you would need that is if you model a 3D system (e.g., real life) in 2D (not real life). So, if you do your model in 3D there isn't any problem of overlapping cells and one cell can crawl along another cell (or pseudo cell).
If you really want 2D (perhaps because of the much faster calculation speed) then you can;
1. Have a cell crawl along one side of the fiber (easy), cells can't cross the fiber and you'll be limited to a simple fiber topology (what does the cell do when it reaches a point where two fibers cross?).
2. With a fair amount of fiddling get it to cross over the fiber by basically taking control of the identity of individual pixels (you can arbitrarily assign any pixel to any cell in Python).
3. You could treat the crawling cell as two separate cells, one on each side of the fiber, then link the two across the fiber with a focal point plasticity (or a spring) link.
4. If you really want 2D and a complex fiber topology with things like fibers crossing, then treating the fiber as a field is probably the way to go. There are two ways to do this;
4a. As a CC3D field, you can define a field that doesn't diffuse (set the diffusion constant to zero) and you can directly poke values into a field from python so you can generate an arbitrarily complex layout of fibers. This will work but even with the diffusion constant set to zero I believe the diffusion calculations will still be done and that might slow things down somewhat.
4b. Create a python (or numpy) 2D array with the same dimensions as the CC3D model and keep the fiber network in that array. No diffusion calculations are done. You can then use python to have that array interact with your cells by having the cell movement being a function of the interaction between the CC3D cell pixels and the separate matrix mapping the fibers.
In 3D things would be more straight forward, but also much slower.
Think about how you want to do things and let us know if you need help.
id: avwpw | creation_date: Oct. 20, 2017, 1:34 p.m. | author: Maciek Swat | type: Answer |
parent: qvwxm | lastedit_date: Oct. 20, 2017, 1:34 p.m. | lastedit_user: Maciek Swat |
content:
In principle we could implement this feature but it would take a bit of code refactoring. Modeling ECM is somewhat challenging because the granularity of fibers is much finer than the way we represent cells on a fairly coarse lattice. I think that modelling ECM using external module where we model fibers as a e.g. vector field could be a better approach. You could "translate" deformation in the cell field into forces acting on fibers and vice-versa, translate stresses in the ECM fields into forces acting on cells ( in the the CC3D cell field). The "integration" of the ECM model with the cell-based model could fairly easily be done in Python . The advantage of such approach is that you would not have to modify existing CCC3D code but rather add external ECM modeling module that could be more sophisticated than anything you could currently mimic in CC3D
id: lokzp | creation_date: Oct. 24, 2017, 1:47 p.m. | author: Scott H | type: Question |
parent: | lastedit_date: Oct. 26, 2017, 1:54 p.m. | lastedit_user: Scott H |
content:
On page 11, Section 3.2 of Compucell 3D Manual and Tutorial, Version 3.6.0, in the first paragraph, it is written:
"During each index-copy attempt, we select a target pixel, i, randomly from the cell lattice, and then randomly select one of its neighboring pixels, i, as a source pixel."
Should the second "i" be a j?
-Scott
id: qvwza | creation_date: Oct. 24, 2017, 2:01 p.m. | author: James Sluka | type: Answer |
parent: lokzp | lastedit_date: Oct. 24, 2017, 2:01 p.m. | lastedit_user: James Sluka |
content:
Yes :)
I wonder how many version of the manual this error traces back in?
id: xnzow | creation_date: Oct. 24, 2017, 2:14 p.m. | author: Anwar | type: Answer |
parent: lokzp | lastedit_date: Oct. 24, 2017, 2:14 p.m. | lastedit_user: Anwar |
content:
Actually, the mentioned neighboring pixel is not $i$i it's $i'$i' ( i-prime or I-dash). Snippet from the manual-
Unfortunately, it's little confusing given vector bar above . Let's see if we can use $j$j instead $i'$i' in next version of manual. Thank you Scott for pointing it out.
attachments(redirected):
.\CC3D_allanswered_linked_files\Screen Shot 2017-10-24 at 2.04.12 PM.png
id: jrenb | creation_date: Oct. 26, 2017, 1:54 p.m. | author: Scott H | type: Answer |
parent: lokzp | lastedit_date: Oct. 26, 2017, 1:54 p.m. | lastedit_user: Scott H |
content:
Thank you, Anwar, that makes more sense.
I see the latest version is 3.7.4 on the CC3D website.
id: pgnqw | creation_date: Oct. 29, 2017, 8:08 p.m. | author: JJ Yeo | type: Question |
parent: | lastedit_date: Oct. 30, 2017, 5:08 p.m. | lastedit_user: JJ Yeo |
content:
Dear CC3D users,
Are there any other visualization software that can be used to visualize the trajectory output from CC3D and make fancy movies? I've tried VMD to open the .vtk files and it seems to be work but probably some tweaks need to be done to get the correct visuals. Anyone has experience with that?
id: mbopb | creation_date: Oct. 30, 2017, 2:34 p.m. | author: James Sluka | type: Answer |
parent: pgnqw | lastedit_date: Oct. 30, 2017, 2:34 p.m. | lastedit_user: James Sluka |
content:
VTK is kind of a difficult format. Besides VMD there are also (at least);
id: eqjlj | creation_date: Oct. 30, 2017, 4:04 p.m. | author: JJ Yeo | type: Comment |
parent: mbopb | lastedit_date: Oct. 30, 2017, 4:31 p.m. | lastedit_user: JJ Yeo |
content:
Thank you very much for the advice! I'm testing out Paraview together with output from the cellsort_3D demo. I immediately ran into a problem when I tried to visualize by celltype, I get the error of
ERROR: In /Users/kitware/dashboards/buildbot-slave/8275bd07/build/superbuild/paraview/src/VTK/Rendering/Volume/vtkGPUVolumeRayCastMapper.cxx, line 353
vtkOpenGLGPUVolumeRayCastMapper (0x7ff64c9b5480): scalar of type VTK_CHAR is not supported because this type is platform dependent. Use VTK_SIGNED_CHAR or VTK_UNSIGNED_CHAR instead.
find . -type f -name 'cellsort_3D_cc3d_*' -exec sed -i 's/char/unsigned_char/g' {} \;
id: bezmg | creation_date: Oct. 30, 2017, 5:04 p.m. | author: James Sluka | type: Answer |
parent: pgnqw | lastedit_date: Oct. 30, 2017, 5:04 p.m. | lastedit_user: James Sluka |
content:
Yes, manually changing the celltype data type in the VTK file(s) appears to work, for example;
id: qvbpk | creation_date: Oct. 30, 2017, 5:08 p.m. | author: JJ Yeo | type: Comment |
parent: bezmg | lastedit_date: Oct. 30, 2017, 5:08 p.m. | lastedit_user: JJ Yeo |
content:
I'm using the latest version of Paraview 5.4.1 on MacOSX Sierra.
id: eqxeq | creation_date: Nov. 6, 2017, 8:19 a.m. | author: nicolalandro | type: Question |
parent: | lastedit_date: Nov. 7, 2017, 2:43 p.m. | lastedit_user: nicolalandro |
content:
Hi, I'm a student and I want to import the code of the aticle: http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0007190 into new CompuCell3D, but in this code base there is not a .cc3d file. How can I do?
id: vnwnb | creation_date: Nov. 6, 2017, 1:50 p.m. | author: Anwar | type: Answer |
parent: eqxeq | lastedit_date: Nov. 6, 2017, 1:50 p.m. | lastedit_user: Anwar |
content:
Basically .cc3d is a XML file enlisting all related files and resources for the simulation. I believe you can generate a .cc3d file manually referring to demos in CompuCell3D 3.7.6.
Please let us know if you need further help with that.
id: klela | creation_date: Nov. 6, 2017, 2:38 p.m. | author: priyomadhyapok | type: Answer |
parent: eqxeq | lastedit_date: Nov. 6, 2017, 2:38 p.m. | lastedit_user: priyomadhyapok |
content:
Typically this is what a .cc3d file looks like
<Simulation version="version number">
<XMLScript Type="XMLScript">XML_File_Name</XMLScript>
<PythonScript Type="PythonScript">Python_File_Name</PythonScript>
<Resource Type="Python">Python_Steppable_File_Name</Resource>
</Simulation>
You might need to add additional location information in the file names if they are in different directories.
id: avjvm | creation_date: Nov. 6, 2017, 3:10 p.m. | author: James Sluka | type: Answer |
parent: eqxeq | lastedit_date: Nov. 6, 2017, 3:10 p.m. | lastedit_user: James Sluka |
content:
The easiest thing to do is to just create a new model in Twedit++ (basically just pick a few items at random), then cut and paste the XML and python from the published model into the appropriate files in your newly created model.
id: qvnww | creation_date: Nov. 7, 2017, 3:08 a.m. | author: nicolalandro | type: Comment |
parent: klela | lastedit_date: Nov. 7, 2017, 3:08 a.m. | lastedit_user: nicolalandro |
content:
Hi, I try but do not work, the error in console is:
FILE NAME= Traceback (most recent call last):
File "/usr/lib/compucell3d/Twedit++/Plugins/PluginCCDProject.py", line 2443, in __openCC3DProject
self.showOpenProjectDialogAndLoad(currentFilePath)
File "/usr/lib/compucell3d/Twedit++/Plugins/PluginCCDProject.py", line 2430, in showOpenProjectDialogAndLoad
print "FILE NAME=",fileName
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 34: ordinal not in range(128)
The folder Hierarchy is:<Simulation version="3.6.2">
<XMLScript Type="XMLScript">Simulation/XML_Template_TumorVasc3D_Movie.xml</XMLScript>
<PythonScript Type="PythonScript">Simulation/angio_growth.py</PythonScript>
<Resource Type="Python">Simulation/angio_growth_steppables.py</Resource>
<Resource Type="Python">Simulation/angio_growth_plugins.py</Resource>
</Simulation>
id: reqrq | creation_date: Nov. 7, 2017, 4:26 a.m. | author: nicolalandro | type: Comment |
parent: avjvm | lastedit_date: Nov. 7, 2017, 4:26 a.m. | lastedit_user: nicolalandro |
content:
I try with this method and I have this error in console:
projectFullPath= /home/nic/CompucellAutomaticProject/CompucellAutomaticProject.cc3dNEW SIMULATION reply=NEWSIMULATION/home/nic/CompucellAutomaticProject/CompucellAutomaticProject.cc3d starting CC3D READING RESPONSE CC3D SENDER self.socket.bytesAvailable()= 168 self.nextBlockSize= 166 self.socket.bytesAvailable()= 166 messageType= NEWSIMULATION self.errorConsole.playerMainWidget= <Plugins.ViewManagerPlugins.SimpleTabView.SimpleTabView object at 0x7f6c1b500770>
In the code base of article theris also a file .txt how can import it in compucell?
id: bejze | creation_date: Nov. 7, 2017, 2:13 p.m. | author: Anwar | type: Comment |
parent: qvnww | lastedit_date: Nov. 7, 2017, 2:13 p.m. | lastedit_user: Anwar |
content:
I believe this error is due to encoding mismatch with value in string 'fileName'. I suspect this occurred due to the .cc3d file is not saved with UTF-8 encoding.
Can you try after saving it with UTF-8 encoding? Google how to save it in UTF-8 encoding with whichever text editor you are using. Instructions for notepad++ are here.
id: xnlkk | creation_date: Nov. 7, 2017, 2:43 p.m. | author: nicolalandro | type: Comment |
parent: avjvm | lastedit_date: Nov. 7, 2017, 2:43 p.m. | lastedit_user: nicolalandro |
content:
Hi, I have solved some prolems, but now I have this:
messageType= NEWSIMULATION
self.errorConsole.playerMainWidget= <Plugins.ViewManagerPlugins.SimpleTabView.SimpleTabView object at 0x7f62a0e80a68>
processIncommingSimulation = /home/mint/compuCellWorkspace/NewSimulation/NewSimulation.cc3d _stopCurrentSim= True
GOT NEW SIMULATION /home/mint/compuCellWorkspace/NewSimulation/NewSimulation.cc3d
NEWSIMULATIONRECEIVED SIMULATION NAME SENT SUCCESFULLY
In compucell3D seams run, but I do not see nothing. What is the problem?
id: pglwk | creation_date: Nov. 6, 2017, 10:55 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: Nov. 15, 2017, 12:22 p.m. | lastedit_user: James Sluka |
content:
Assume there are two cells are contacted,and set contact energy J to a negative value. Does it means those two cells will definitely stay together , if set J to a positive value does it means those two cells possible to separate and its probability is decided by the value of J.
id: pglgk | creation_date: Nov. 6, 2017, 3:36 p.m. | author: James Sluka | type: Answer |
parent: pglwk | lastedit_date: Nov. 6, 2017, 3:40 p.m. | lastedit_user: James Sluka |
content:
Usually, besides the j value between a pair of cell types you also need to take into account the j values for the two cell types with medium.
Besides that, you always need to take into account all possible interactions. So even if a particular pair of cells has a j value of -10 and a large contact area (contact energy is J*contact_area) that contact could still be displaced if either of the two cells has a higher affinity (more negative J) for some other cell type and/or the other cell type is more flexible and can acquire a larger contact surface area.
So, in general, you need to take into account all possible pairs of interactions; for N cell types (and assuming Medium is one of those N types) there are N^2/2 + N/2 = (N/2)(N+1) possible interactions. For 3 cell types there are 6 interaction, for 4 cell types there are 10 interactions, ...
Beyond the J values the actual interaction energy will also be dependent on how stiff the surface of the cells is. With a very low LambdaSurface and/or large target surface area, cells can create extra surface in order to reap the reward of a large contact surface if that lowers contact energy.
Finally, you need to remember that movement of a CC3D configuration to a lower energy configuration can only occur if a suitable pathway exists. In other words, it is possible to trap a CC3D system in an energetically unfavorable state if there is no reasonably low energy pathway to a lower energy state. (That is also true of biology, biological systems are trapped in high energy states (life) since a low energy pathway to lower energy states (death) isn't always readily available.)
id: omeav | creation_date: Nov. 7, 2017, 1:36 p.m. | author: dali Zan | type: Comment |
parent: pglgk | lastedit_date: Nov. 7, 2017, 1:36 p.m. | lastedit_user: dali Zan |
content:
Regardless of other conditions,does it means the relationship of contact strength is J=-10>J=-5>J=0>J=5>J=10?
And the meaning of J=0 is confused for me.
id: bejqb | creation_date: Nov. 13, 2017, 12:53 p.m. | author: James Sluka | type: Comment |
parent: omeav | lastedit_date: Nov. 15, 2017, 12:22 p.m. | lastedit_user: James Sluka |
content:
Yes, that is correct the j=-10 interaction is stronger than the j=10 one. A j of zero just means there is no contribution to the systems total energy due to that particular interaction. If all your j's are either (for example) +10 or zero then the system will try to get all the contacts to be of the zero type. If all your j's are -10 and zero then the system will try to get all the contacts to be of the -10 type.
id: eqxam | creation_date: Nov. 15, 2017, 8:52 a.m. | author: Yuan | type: Comment |
parent: pglwk | lastedit_date: Nov. 15, 2017, 8:52 a.m. | lastedit_user: Yuan |
content:
Hi, I am new in CC3D, can we have a communication in Chinese? My QQ is 1775755174
id: ggogl | creation_date: Nov. 6, 2017, 12:52 p.m. | author: JJ Yeo | type: Question |
parent: | lastedit_date: Dec. 8, 2017, 12:07 p.m. | lastedit_user: Scott H |
content:
Dear Admins,
I took a look at the CellDraw manual and pottered around the buttons in CellDraw itself, but I could not figure out how to draw 3D regions. Is this specified by the "cell size" column in the cell type table?
Also, I am trying to simulate simple cell movement on a solid substrate, is there an easy way to specify a smoothly increasing contact adhesion energy of the cells with the substrate, say increasing adhesion energy from left-most to right-most region of the substrate?
id: nqwqv | creation_date: Nov. 6, 2017, 3:21 p.m. | author: James Sluka | type: Answer |
parent: ggogl | lastedit_date: Nov. 6, 2017, 3:21 p.m. | lastedit_user: James Sluka |
content:
For your second question; one approach would be to subdivide the substrate into pseudo-cells and then assign individual adhesion energies to each substrate cell based on their position. The AdhesionFlex plugin allows you to assign individual adhesivities to particular cells. Check in your CC3D demos folder for
C:\CompuCell3D-64bit\Demos\PluginDemos\AdhesionFlexPython\
as an example.
Since your substrate pseudo-cellos probably should not move you can set all cells of that type to "frozen".
id: wlggz | creation_date: Dec. 6, 2017, 11:13 a.m. | author: Scott H | type: Answer |
parent: ggogl | lastedit_date: Dec. 6, 2017, 11:13 a.m. | lastedit_user: Scott H |
content:
Is that the same thing as Piff Generator? I found a Piff drawing program for windows, but I can't recall the name. I'll check once I get access to my Windows laptop.
id: avkpr | creation_date: Dec. 8, 2017, 12:07 p.m. | author: Scott H | type: Comment |
parent: wlggz | lastedit_date: Dec. 8, 2017, 12:07 p.m. | lastedit_user: Scott H |
content:
How do you install Celldraw? I have the CC3D_3.7.7 binary downloaded. I have the Celldraw 1.6 from GitHub.
scottholmes src $ ./CellDraw_standalone.command
====> CellDraw working directory: /Users/scottholmes/CC3D_3.7.7/CellDraw/1.6.0/src
====> PYTHONLIB26: /System/Library/Frameworks/Python.framework/Versions/2.6
====> DYLD_LIBRARY_PATH: /Users/scottholmes/CC3D_3.7.7/CellDraw/1.6.0/src/../Frameworks
====> PYTHONPATH directory: /Users/scottholmes/CC3D_3.7.7/CellDraw/1.6.0/src/../Resources/site-packages:
====> PATH: /System/Library/Frameworks/Python.framework/Versions/2.6/bin:
====> PREFIX_CC3D: /Applications/CC3D_3.6.0_MacOSX106
./CellDraw_standalone.command: line 37: /usr/bin/pythonw2.6: No such file or directory
====> CellDraw 1.6.0 now starting from Python.
./CellDraw_standalone.command: line 41: /usr/bin/pythonw2.6: No such file or directory
id: ggbez | creation_date: Nov. 3, 2017, 5:13 p.m. | author: JJ Yeo | type: Question |
parent: | lastedit_date: Feb. 12, 2019, 4:35 p.m. | lastedit_user: Richard Spencer |
content:
May I know whether there are specific instructions on how to compile parallel CC3D with nVidia GPUs on Ubuntu or any other Linux-based clusters?
Also, can the pre-compiled binaries for both Mac OSX and Ubuntu be run on multiple cores? I do not seem to be able to find an option to do that.
id: mbogk | creation_date: Nov. 3, 2017, 6:49 p.m. | author: Anwar | type: Answer |
parent: ggbez | lastedit_date: Nov. 7, 2017, 2:17 p.m. | lastedit_user: Anwar |
content:
id: xnkpe | creation_date: Nov. 5, 2017, 11:05 a.m. | author: Maciek Swat | type: Answer |
parent: ggbez | lastedit_date: Nov. 7, 2017, 2:17 p.m. | lastedit_user: Maciek Swat |
content:
Can the pre-compiled binaries for both Mac OSX and Ubuntu be run on multiple cores?
Actually CC3D needs to be instructed to use multiple cores it is quite simple all you need to do is to to include <Metadata> tag with specification of how many CPU's you want to use
<CompuCell3D>
<Metadata>
<NumberOfProcessors>4</NumberOfProcessors>
<DebugOutputFrequency>100</DebugOutputFrequency>
</Metadata>
<Potts>
<Dimensions x="200" y="200" z="1"/>
<Anneal>10</Anneal>
<Steps>10000</Steps>
<Temperature>10</Temperature>
<Flip2DimRatio>1</Flip2DimRatio>
<NeighborOrder>2</NeighborOrder>
</Potts>
...
</CompuCell3D>
Are there are specific instructions to compile parallel CC3D with nVidia GPUs on Ubuntu or any other Linux-based clusters?
One thing to remember about GPU execution that it applies only to PDE solvers. The core Potts algorithm and all your Python Steppables will still run on CPU. So the bottom line is that your entire simulation will be limited by the slowest component. Now, if you are running a lot of PDE solvers than using GPU's makes sense.
I have not tried compiling GPU modules on linux (did that for OSX and Windows only) but it really should be straightforward. All you need to do is to make sure that OpenCL is installed on your linux cluster and the CMake script will automatically detect the settings. If you look at the CMake configuration dialog below the two settings that decide if the CC3D will have GPU modules are "NO_OPENCL" option (make sure it is unchecked if you wan GPU modules) and the path to OPENCL library
Let me know if you need more help
attachments(redirected):
.\CC3D_allanswered_linked_files\cmake_cc3d.png
id: ggbal | creation_date: Nov. 5, 2017, 11:06 a.m. | author: Maciek Swat | type: Answer |
parent: ggbez | lastedit_date: Nov. 7, 2017, 2:17 p.m. | lastedit_user: Maciek Swat |
content:
The compilation steps you should follow on Ubuntu are outlined on
http://www.compucell3d.org/SrcBin/LinuxCompile
More compilation tutorial can be found on
http://www.compucell3d.org/DeveloperZone
id: reqek | creation_date: Nov. 6, 2017, 12:37 p.m. | author: JJ Yeo | type: Answer |
parent: ggbez | lastedit_date: Nov. 7, 2017, 2:17 p.m. | lastedit_user: JJ Yeo |
content:
Thanks for the answers! I will try it out and let you guys know if I run into issues.
id: gnjln | creation_date: Sept. 7, 2018, 10:26 a.m. | author: Mukti C | type: Comment |
parent: xnkpe | lastedit_date: Sept. 7, 2018, 10:26 a.m. | lastedit_user: Mukti C |
content:
How many solvers do you mean by "a lot of PDE solvers"? I am running 5 PDE solvers - would it be better if I use GPUs?
id: oazoo | creation_date: Sept. 7, 2018, 12:08 p.m. | author: Maciek Swat | type: Answer |
parent: ggbez | lastedit_date: Sept. 7, 2018, 12:08 p.m. | lastedit_user: Maciek Swat |
content:
you would be better off trying GPU solvers but for that you would need to install OpenCL drivers on your machine, provided your machine has a decent GPU . And to see nice speedups you need a decent GPU. Regular PDE solvers are actually quite fast. Another option to consider it to use external PDE-solver suite but this is more involved technically
id: wrzqa | creation_date: Sept. 7, 2018, 12:11 p.m. | author: Mukti C | type: Comment |
parent: oazoo | lastedit_date: Sept. 7, 2018, 12:11 p.m. | lastedit_user: Mukti C |
content:
Okay, thank you for your response! I'll try using GPUs.
id: bzgne | creation_date: Feb. 12, 2019, 4:35 p.m. | author: Richard Spencer | type: Answer |
parent: ggbez | lastedit_date: Feb. 12, 2019, 4:35 p.m. | lastedit_user: Richard Spencer |
content:
I successfully built 3.7.4 on Red Hat Enterprise with OpenCL on a system with 4 Nvidia Tesla V100s. I have confirmed that increasing the NumberOfProcessors greater than 1 with OpenMP alone will yield blank results, but will work only by using OpenCL as well. I ran benchmarks with 1, 8, 16, and 32 processors and DiffusionSolver_OpenCL, while faster than 1 processor alone by only 2.14 times, seems to be the bottleneck rather than the rest of the OpenMP processes, since 32 processors are only 4.4 times faster than 1 with the GPU. So I am asking, given that I have a high end GPU, and CC3D knows nothing about my cell sizes relative to the block sizes it chooses, are there parameters I can change to make the diffusion solver work harder and faster on the GPU? My test grid is 600x600x60, but will go larger in practice.
I also wonder if 3.7.9 has significant performance enhancements. An important command parameter was removed from runScript since 3.7.4 that I need, and I run many simultaneous batch simulations headless on a large compute server with VTK/OSMesa doing the software rendering.
Richard, USEPA
id: omenv | creation_date: Nov. 8, 2017, 3:57 a.m. | author: nicolalandro | type: Question |
parent: | lastedit_date: Nov. 9, 2017, 4:38 a.m. | lastedit_user: nicolalandro |
content:
File attached: NewSimulation.zip (814.89 KB)
In the project attached, if I open it in Twedit++ and click on CC3D Project>Open In Player, Compucell3D close itself and get a segmentation fault error.
(In the zip there is the complete error log in file "ERROE: SEGMENTATION FAULT.txt")
(I'm on linux.)
attachments(redirected):
.\CC3D_allanswered_linked_files\NewSimulation.zip
id: zpnnv | creation_date: Nov. 8, 2017, 4:27 p.m. | author: Anwar | type: Comment |
parent: omenv | lastedit_date: Nov. 8, 2017, 4:27 p.m. | lastedit_user: Anwar |
content:
Yes. I am able to reproduce the same error on my machine with the given simulation. But not sure yet what exactly causing this error. I will try to find some time to debug this.
id: omeev | creation_date: Nov. 8, 2017, 5:14 p.m. | author: Maciek Swat | type: Answer |
parent: omenv | lastedit_date: Nov. 8, 2017, 5:14 p.m. | lastedit_user: Maciek Swat |
content:
Are you by any chance using Linux installed under VirtualBox?
id: wleen | creation_date: Nov. 8, 2017, 8:48 p.m. | author: Maciek Swat | type: Answer |
parent: omenv | lastedit_date: Nov. 8, 2017, 8:48 p.m. | lastedit_user: Maciek Swat |
content:
Ok so the problem with this simulation is mitosis plugin that has been deprecated for many years, as it had many drawbacks. These days the mitosis is handled more efficiently in the Python Steppable . Anyway, I am attaching two simulations - the original one that was posted above under NewSimulation.zip (VascularTumorOrig.zip) but without Mitosis and the simulation that follows new CompuCell3D API that implements model that is similar to the original one but not quite exactly (E599Lecture12AbbasPaperCancerSimulationforUpload.zip)
The original simulation witohut the mitosis plugin opens and you can run it but it will not produce anything interesting because cells will not divide. The updated simulation runs but we have not full tested if it yields the same results as the original simulation that was published. In any case the second simultion woudl be a great starting point for further explorations
Take a look at those simulations and see if indeed they open up and run on your machine
File attached: VascularTumorOrig.zip (815.27 KB)
File attached: E599Lecture12AbbasPaperCancerSimulationforUpload.zip (273.22 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\VascularTumorOrig.zip
.\CC3D_allanswered_linked_files\E599Lecture12AbbasPaperCancerSimulationforUpload.zip
id: qvngw | creation_date: Nov. 9, 2017, 4:38 a.m. | author: nicolalandro | type: Comment |
parent: wleen | lastedit_date: Nov. 9, 2017, 4:38 a.m. | lastedit_user: nicolalandro |
content:
It seems not work correctly, but start. Now I try to work about it, thanks!
id: avjap | creation_date: Nov. 9, 2017, 4:31 p.m. | author: James Sluka | type: Idea |
parent: avjap | lastedit_date: Nov. 9, 2017, 4:31 p.m. | lastedit_user: James Sluka |
content:
If an SBML model file isn’t found the error message doesn’t say that, instead it says "NameError: global name 'os' is not defined". (CC3D version 3.7.5)Traceback (most recent call last):
File "C:\CompuCell3D-64bit\pythonSetupScripts\CompuCellPythonSimulationNewPlayer.py", line 351, in <module>
execfile(CompuCellSetup.simulationPaths.simulationPythonScriptName)
File "C:\Users\James Sluka\Desktop\Small Code Projects\Multi_simple_liver\Liver_I_paper_model\cc3dCode\Simulation\PBPK
_SBML_MULTI.py", line 272, in <module>
CompuCellSetup.mainLoop(sim,simthread,steppableRegistry)
File "C:\CompuCell3D-64bit\pythonSetupScripts\CompuCellSetup.py", line 1761, in mainLoop
return mainLoopNewPlayer(sim, simthread, steppableRegistry, _screenUpdateFrequency )
File "C:\CompuCell3D-64bit\pythonSetupScripts\CompuCellSetup.py", line 1498, in mainLoopNewPlayer
steppableRegistry.start()
File "C:\CompuCell3D-64bit\pythonSetupScripts\PySteppables.py", line 1460, in start
steppable.start()
File "C:\Users\James Sluka\Desktop\Small Code Projects\Multi_simple_liver\Liver_I_paper_model\cc3dCode\Simulation\PBPK
_SBML_MULTISteppables.py", line 777, in start
self.addFreeFloatingSBML(_modelFile=modelFile,_modelName='PBPKWambaugh_cS',_stepSize=self.timeStepOfIntegration4,_in
itialConditions=initialConditions)
File "C:\CompuCell3D-64bit\pythonSetupScripts\SBMLSolverHelper.py", line 184, in addFreeFloatingSBML
modelPathNormalized=os.path.abspath(os.path.join(self.simulator.getBasePath(),modelPathNormalized))
NameError: global name 'os' is not defined
id: mbmrx | creation_date: Nov. 15, 2017, 8:24 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Nov. 16, 2017, 10:30 p.m. | lastedit_user: Yuan |
content:
Hi, I want to simulate the mitosis process of a sphere cell on a substrate. How can I set the initial sphere shape with square or hexagonal lattice? Thank you~
id: ggojg | creation_date: Nov. 15, 2017, 10:14 a.m. | author: priyomadhyapok | type: Answer |
parent: mbmrx | lastedit_date: Nov. 15, 2017, 10:15 a.m. | lastedit_user: priyomadhyapok |
content:
To generate spherical cells, use the function self.cellField whose arguments are coordinates in the lattice space. If your radius is r, and center of the sphere at say (x0,y0,z0) the coordinates (x0-r,x0+r),(y0-r,y0+r) and (z0-r,z0+r) will span a bigger cube. Then the value of r can be used as a distance cutoff to determine which voxels will lie inside the boundary of the sphere. Example code:
#generate cell
cella=self.newCell(some cell type);
#set up the center of sphere say (x0,y0,z0)
#set up the boundaries of the bigger cube
xi = x0 - r
xf = x0 + r
yi = y0-r
yf = y0+r
zi=z0-r
zf=z0+r
#loop over the points to determine boundaries of the circle
for xr in range(xi, xf):
for yr in range(yi, yf):
for zr in range(zi,zf):
rd = sqrt((xr - x0) ** 2 + (yr - y0) ** 2+(zr-z0)**2)
if (rd < r):
self.cellField[xr, yr, zr] = cella
id: pglxq | creation_date: Nov. 15, 2017, 9:24 p.m. | author: Yuan | type: Comment |
parent: ggojg | lastedit_date: Nov. 15, 2017, 9:24 p.m. | lastedit_user: Yuan |
content:
Thank you so much, I can set up the sphere shape in this way. But how to let the shape of the daughter cells keep sphere after the mitosis. I am going to simulate many times of mitosis.
id: eqzrg | creation_date: Nov. 16, 2017, 2:32 p.m. | author: James Sluka | type: Comment |
parent: pglxq | lastedit_date: Nov. 16, 2017, 2:32 p.m. | lastedit_user: James Sluka |
content:
Your daughter cells will tend to stay spherical if they have the proper target surface for their current and target volumes. So periodically change individual cell's target surface to;
import math
cell.targetSurface=((cell.targetVolume)**(1./3.))**2*4./3.*math.pi
The above is just a starting point for what you want to do. The surface of a "sphere" in a lattice representation is often a fair bit bigger than in a non-lattice situation. Often though if the target surface is too small that will tend to make the cell as spherical as possible. You then have to worry about the lambda for surface and volume and make sure that when you want to grow the cell's volume that lambdaVolume is big enough to overwhelm lambdaSurface amd you'll need to periodically increase the targetSurface.
You might want to make the target surface a bit bigger than it should be to give the cells some flexibility.
id: omjnb | creation_date: Nov. 16, 2017, 10:30 p.m. | author: Yuan | type: Comment |
parent: eqzrg | lastedit_date: Nov. 16, 2017, 10:30 p.m. | lastedit_user: Yuan |
content:
Yeah,I have tried this method. In my try, the results is good when the cell is large enough. When the cell is small, tens of lattices long for example, the cell tends to be polyhedron. If I simulate the process that one cell divides several times into hundreds of daughter cells, the cost will be expensive.How to realize that? Thank you~
id: pglzq | creation_date: Nov. 15, 2017, 1:04 p.m. | author: Richard Spencer | type: Question |
parent: | lastedit_date: April 11, 2018, 10:13 p.m. | lastedit_user: Maciek Swat |
content:
I just installed the 3.7.7 binaries for Mac on a new iMac but with El Capitan. But for the past two or three Mac binaries, field concentration rendering has crashed CC3D (now) or done nothing. Cell types run OK. I am just curious how the other Mac users listed in another post have been able to run it normally. Thanks
id: klewv | creation_date: Nov. 15, 2017, 6:59 p.m. | author: Maciek Swat | type: Answer |
parent: pglzq | lastedit_date: Nov. 15, 2017, 6:59 p.m. | lastedit_user: Maciek Swat |
content:
Hi Richard
Could you post a toy version of your simulation so that we can take a look at it? Does it happen on ElCapitan only or also on other OSX versions?
id: baera | creation_date: April 11, 2018, 5:57 p.m. | author: Yen Nguyen Edalgo | type: Answer |
parent: pglzq | lastedit_date: April 11, 2018, 5:57 p.m. | lastedit_user: Yen Nguyen Edalgo |
content:
This is not an answer by the way. I just want to add that I am using CC3D on Mac and also have the same problem. The simulation would crash whenever I switch from Cell to Chemical field, even on a very simple and basic CC3D simulation involving a chemical field. Chemical field seems to work when I draw my own cells using CellDraw rather than the built-in cells.
id: qwvrb | creation_date: April 11, 2018, 6:08 p.m. | author: Yen Nguyen Edalgo | type: Answer |
parent: pglzq | lastedit_date: April 11, 2018, 6:08 p.m. | lastedit_user: Yen Nguyen Edalgo |
content:
How can I attach a whole folder of all the .cc3d, .xml, and .py files in the post (in case that might help)? The post only allows me to attach one file at a time when clicking on the '+' symbol.
id: xznpl | creation_date: April 11, 2018, 6:15 p.m. | author: Yen Nguyen Edalgo | type: Answer |
parent: pglzq | lastedit_date: April 11, 2018, 6:15 p.m. | lastedit_user: Yen Nguyen Edalgo |
content:
I change the LatticeType from Hexagonal to Square and it worked.
id: nxqbe | creation_date: April 11, 2018, 10:13 p.m. | author: Maciek Swat | type: Comment |
parent: qwvrb | lastedit_date: April 11, 2018, 10:13 p.m. | lastedit_user: Maciek Swat |
content:
simply zip the folder that contains .cc3d, .xml, and .py files and then in the allanswered editor click "+" button (next to "B", "I") buttons and choose "upload image/file"
id: xnlmm | creation_date: Nov. 16, 2017, 3:28 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Nov. 22, 2017, 8:09 a.m. | lastedit_user: Yuan |
content:
In my simulation, I try to control the target surface and target volume to set up the shape of the cell. However, the area of the surface is never changed, though the value of lambda is set very high.
attachments(redirected):
.\CC3D_allanswered_linked_files\222.png
id: begxm | creation_date: Nov. 22, 2017, 12:23 a.m. | author: priyomadhyapok | type: Comment |
parent: xnlmm | lastedit_date: Nov. 22, 2017, 12:23 a.m. | lastedit_user: priyomadhyapok |
content:
Could you share more details of the simulation- How are you changing the targetSurface in every mcs and where are you printing it?
id: mbjlm | creation_date: Nov. 22, 2017, 7:57 a.m. | author: Yuan | type: Answer |
parent: xnlmm | lastedit_date: Nov. 22, 2017, 7:57 a.m. | lastedit_user: Yuan |
content:
attachments(redirected):
.\CC3D_allanswered_linked_files\1.png
.\CC3D_allanswered_linked_files\2.png
id: wlwnw | creation_date: Nov. 22, 2017, 8:06 a.m. | author: Yuan | type: Comment |
parent: begxm | lastedit_date: Nov. 22, 2017, 8:09 a.m. | lastedit_user: Yuan |
content:
The details are shown in the following pictures. I specify the value of area, "S=pow((3.0*cell.targetVolume)/(4.0*math.pi),2.0/3)*4.0*math.pi ", to guarantee that the cell is sphere during the process. For convenience, there is only one cell at first.
id: rejna | creation_date: Nov. 20, 2017, 4:10 a.m. | author: Elliot Djokic | type: Question |
parent: | lastedit_date: Nov. 30, 2017, 11:52 p.m. | lastedit_user: priyomadhyapok |
content:
I am a 4th year undergraduate student at Colorado State University studying chemical & biological engineering and biomedical engineering. Currently, I'm in a group working on a class project that requires us to learn a new software package and apply it to a transport phenomena problem. We are working on modeling cancer cells as an osmotic engine in CompuCell. Based on the research we've done so far on the osmotic engine, we are thinking the chemotaxis module would suit our needs. The principle behind the osmotic engine is that a cancer cell can polarize itself in order to move independent of actin and myosin filaments, absorbing water at the leading edge and expelling water out the back, thereby creating movement. Our ultimate goal is to model cancer cell movement as well as volume (and other properties) of cancer cells when exposed to different osmotic environments. Might anyone have any suggestions on how to go about this? We are all very new to using CompuCell, and have been able to create very simple models (i.e. case where water is attracted to cancer cells) but are not sure how to proceed in terms of getting the cancer cells to move in response to the presence of water. We also had emailed Dr. Swat who recommended we look into using compartmentalized cells as well as using toy-mechanism to apply force to cells and thereby simulate movement, depending on the cell's environment. In any case, any advice would be much appreciated.
Thanks,
Elliot
id: eqzvp | creation_date: Nov. 22, 2017, 12:03 a.m. | author: priyomadhyapok | type: Answer |
parent: rejna | lastedit_date: Nov. 22, 2017, 12:03 a.m. | lastedit_user: priyomadhyapok |
content:
How are you planning to model water in this case? If you are considering a `field' like approach, where there are low and high concentrations of water you can probably use one of the diffusion solvers in CC3D. You can specify diffusion rates etc depending on your osmosis. Since the arguments of the field are coordinates in the lattice space, you can use it to specify any form of initial conditions. Now you can attach chemotaxis like attributes to your cell towards this field and you can simulate motion. To measure polarization in response to the chemotaxis you can use the moment of inertia plugin which will give you a major and minor axis indicating how the cell might have changed shape.
id: vnjvk | creation_date: Nov. 28, 2017, 2:10 a.m. | author: Elliot Djokic | type: Comment |
parent: eqzvp | lastedit_date: Nov. 28, 2017, 2:10 a.m. | lastedit_user: Elliot Djokic |
content:
Yes, we were planning on modeling water as a field. This is probably a really rudimentary question, but is specifying the initial conditions of a field similar to specifying that of a cell? In the xml file, it looks like you can import a txt file that would have the information for the initial concentration field, but I'm not sure what the contents of that txt file would be. Thanks!
id: qvklg | creation_date: Nov. 28, 2017, 12:20 p.m. | author: priyomadhyapok | type: Comment |
parent: vnjvk | lastedit_date: Nov. 28, 2017, 12:20 p.m. | lastedit_user: priyomadhyapok |
content:
So the format of the text file is (x_coordinate,y_coordinate,z_coordinate,value). The x,y,z are coordinates between the minimum and maximum positions in your lattice. An example has been provided in the manual. If however you have initial conditions that could be created easily (like don't have to be read from a file) you can specify them in the start function of any class in the python steppable file as well. Something like:
def __init__(self,_simulator,_frequency):
SteppableBasePy.__init__(self,_simulator,_frequency)
self.somefield=self.getConcentrationField("field")
def start(self):
for x in range(0,self.dim.x):
for y in range(0,self.dim.y):
self.somefield[x,y,0]=some_value
id: jrjba | creation_date: Nov. 30, 2017, 8:55 p.m. | author: Elliot Djokic | type: Comment |
parent: qvklg | lastedit_date: Nov. 30, 2017, 8:55 p.m. | lastedit_user: Elliot Djokic |
content:
We have been able to get the basic layout we want setup, however I was wondering how we would get about adding chemotaxis like attributes to the cell. Currently, we are using the chemotaxis plugin, however that is the chemotaxis of water towards our cancer cells, and we would like it to be the other way around. It seems there's not a way to reverse this within the plugin, so we will likely need to make changes elsewhere. Might you have any advice on what plugins/parameters we would need to modify. Thank you very much for all your help.
id: pgrmj | creation_date: Nov. 30, 2017, 11:52 p.m. | author: priyomadhyapok | type: Comment |
parent: jrjba | lastedit_date: Nov. 30, 2017, 11:52 p.m. | lastedit_user: priyomadhyapok |
content:
So water has the form of a field and you have cancer cells in the simulation. Does something like this not work? This would be the cancer cell responding to water 'concentration' and moving towards or away from it depending on the sign for value.
def start(self):
for cell in self.cellListByType(self.CANCERCELL):
cd = self.chemotaxisPlugin.addChemotaxisData(cell, "WATERFIELD")
cd.setLambda(value)
id: rejwa | creation_date: Nov. 21, 2017, 3:16 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Nov. 21, 2017, 11:47 p.m. | lastedit_user: priyomadhyapok |
content:
Hi, I wonder what is the unit in a CC3D simulation? Is it dimensionless? How to make the simulation agree with the experiment?
id: lojxa | creation_date: Nov. 21, 2017, 12:11 p.m. | author: priyomadhyapok | type: Answer |
parent: rejwa | lastedit_date: Nov. 21, 2017, 12:11 p.m. | lastedit_user: priyomadhyapok |
content:
The lattice in CC3D represents a coordinate space in which you can measure positions. or measurements in length (in voxels). The other thing you can visualize from your simulation are measurements in time (in mcs) by observing how your configuration is changing. These length or time values are only a representation . For example, I could have a cell which measures 15 microns in diameter. To represent it I can construct a cell in CC3D with a diameter of 15 voxels and now my scale would be 1 voxel=1 micron. I could also pick a smaller or larger simulation diameter and scale accordingly.
Similarly I could have a problem in which my cell grows, reaches twice its volume and divides. If I know experimentally that the cell division time is 100 minutes, I would from my simulation check how long it takes for its growth and division and relate that mcs value to 100 minutes.
id: avaqv | creation_date: Nov. 21, 2017, 8:21 p.m. | author: Yuan | type: Comment |
parent: lojxa | lastedit_date: Nov. 21, 2017, 8:21 p.m. | lastedit_user: Yuan |
content:
Thank you, I understand that. I still have a question. Can I use the boundary energy to resemble the adhesion between cells? How to make the J(energy) agree with the strength of adhesion i.e. the amount of E-cadherin?
id: wlwzw | creation_date: Nov. 21, 2017, 11:47 p.m. | author: priyomadhyapok | type: Comment |
parent: avaqv | lastedit_date: Nov. 21, 2017, 11:47 p.m. | lastedit_user: priyomadhyapok |
content:
So what you can use for this is the adhesion flex plugin (for more details please see the manual). This plugin allows you to specify the adhesion molecule density for each cell (in terms of E-cadherin etc) and writes the resultant surface energy in terms of products of different adhesion molecule concentrations in all the cells. It also allows you to specify the strength of interactions between these surface molecules.
id: rekex | creation_date: Nov. 24, 2017, 3:07 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Nov. 26, 2017, 10:01 p.m. | lastedit_user: Yuan |
content:
Hi, I try to build a circular wall to restrict the scope of cell motility. The codes are as follows. The results are surprisingly interesting. Not only the cell types are different, the keyword, "FREEZE", is also out of use.
attachments(redirected):
.\CC3D_allanswered_linked_files\03.png
.\CC3D_allanswered_linked_files\02.png
.\CC3D_allanswered_linked_files\01.png
id: ggvne | creation_date: Nov. 24, 2017, 1:11 p.m. | author: priyomadhyapok | type: Answer |
parent: rekex | lastedit_date: Nov. 24, 2017, 1:13 p.m. | lastedit_user: priyomadhyapok |
content:
File attached: image (285.65 KB)
I tried the same code and I have been able to construct the wall with a single cell type. So there could be an issue while you are initializing the other two cell types and something got overwritten. In this code, Freeze seems to work but if you want an alternate way you could set the volume constraint to be very large (cella.lambdaVolume=1000000) and that should essentially do the same thing.
attachments(redirected):
.\CC3D_allanswered_linked_files\image
.\CC3D_allanswered_linked_files\image
id: vnjmk | creation_date: Nov. 26, 2017, 8:56 p.m. | author: Yuan | type: Comment |
parent: ggvne | lastedit_date: Nov. 26, 2017, 8:56 p.m. | lastedit_user: Yuan |
content:
It seems that the mitosis steppable is the cause. When the volume of the cell satisfies the dividing condition, the interesting phenomenon takes place. Does it mean that the "Freeze" is useless for mitosis? The codes are as follows.
class MitosisSteppable(MitosisSteppableBase):
def __init__(self,_simulator,_frequency=1):
MitosisSteppableBase.__init__(self,_simulator, _frequency)
# 0 - parent child position will be randomized between mitosis event
# negative integer - parent appears on the 'left' of the child
# positive integer - parent appears on the 'right' of the child
self.setParentChildPositionFlag(-1)
def step(self,mcs):
# print "INSIDE MITOSIS STEPPABLE"
cells_to_divide=[]
for cell in self.cellList:
if cell.volume>500:
cells_to_divide.append(cell)
for cell in cells_to_divide:
# to change mitosis mode leave one of the below lines uncommented
self.divideCellRandomOrientation(cell)
# self.divideCellOrientationVectorBased(cell,1,0,0) # this is a valid option
# self.divideCellAlongMajorAxis(cell) # this is a valid option
# self.divideCellAlongMinorAxis(cell) # this is a valid option
def updateAttributes(self):
self.parentCell.targetVolume /= 2.0 # reducing parent target volume
self.cloneParent2Child()
if self.parentCell.type==self.CONDENSING:
self.childCell.type=self.NONCONDENSING
else:
self.childCell.type=self.CONDENSING
id: avoaq | creation_date: Nov. 26, 2017, 9:54 p.m. | author: priyomadhyapok | type: Comment |
parent: vnjmk | lastedit_date: Nov. 26, 2017, 9:54 p.m. | lastedit_user: priyomadhyapok |
content:
Do you want to divide your wall cell as well? Or is it an error? If you meant only condensing and noncondensing should divide, you can change your line for collecting cell types in the division array to
for cell in self.cellListByType(self.CONDENSING,self.NONCONDENSING):
if(cell.volume>500):
cells_to_divide.append(cell)
Then only these two types of cells will have updated Attributes. I don't know what kind of output you are getting for the wall cells now but could only be a conflict of current wall target volumes that you are reducing to half.
id: pgram | creation_date: Nov. 26, 2017, 10:01 p.m. | author: Yuan | type: Comment |
parent: avoaq | lastedit_date: Nov. 26, 2017, 10:01 p.m. | lastedit_user: Yuan |
content:
Yeah, thank you so much. It is an error since I misunderstand the function of "Freeze".
id: avove | creation_date: Nov. 24, 2017, 4:17 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Jan. 9, 2018, 3:01 a.m. | lastedit_user: Yuan |
content:
I want to simulate an elastic ring in 2D or an elastic hollow sphere in 3D. There are cells dividing in the ring/sphere. When the ring is full of cells, it will exert a contraction force on the cells. How to achieve? Thank you!
id: gglmn | creation_date: Dec. 8, 2017, 11:47 p.m. | author: Maciek Swat | type: Answer |
parent: avove | lastedit_date: Dec. 8, 2017, 11:47 p.m. | lastedit_user: Maciek Swat |
content:
I would use FocalPointPlasticity Plugin (FPP). FPP will connect centers of mass of nearby cells with elastic link. However when your cells are dividing then you woudl need to manually break the links and reestablish then after the division happens. The reason for that is that you want links for form a "chain" where one segment of the "chain" connects nearby cells. What you do not want is to have a chain where a segment of a chain "skips" new cell that appeared as a result of the mitosis
.
id: omono | creation_date: Dec. 18, 2017, 2:36 p.m. | author: James Sluka | type: Answer |
parent: avove | lastedit_date: Dec. 18, 2017, 2:36 p.m. | lastedit_user: James Sluka |
content:
To actually generate the circle or sphere check out the code snipets and CC3D project file at https://www.allanswered.com/post/pgrnm/i-am-trying-to-mimic-the-segment-patterning-in-fruit-flies-through-a-cc3d-model-can-anyone-help-me-as-to-how-to-draw-out-a-3d-paraboloid-piff-file-with-different-cell-types-along-the-surface/
You would then add focal point plasticities to keep the circle/sphere layout.
id: eqnjz | creation_date: Jan. 9, 2018, 2:59 a.m. | author: Yuan | type: Comment |
parent: gglmn | lastedit_date: Jan. 9, 2018, 2:59 a.m. | lastedit_user: Yuan |
content:
Actually, the background is that a non-living elastic ring exerts a tension on the cells inside the ring. I want to study the influence of the elastic ring for the division of cells. Besides, I am trying to mimic the phenomenon when the ring is snipped. When I use the FPP plugin, the cells constituting the ring are easy to separate from each other. How to avoid it?
id: loanv | creation_date: Jan. 9, 2018, 3:01 a.m. | author: Yuan | type: Comment |
parent: omono | lastedit_date: Jan. 9, 2018, 3:01 a.m. | lastedit_user: Yuan |
content:
Actually, the background is that a non-living elastic ring exerts a tension on the cells inside the ring. I want to study the influence of the elastic ring for the division of cells. Besides, I am trying to mimic the phenomenon when the ring is snipped. When I use the FPP plugin, the cells constituting the ring are easy to separate from each other. How to avoid it?
id: eqpqp | creation_date: Nov. 23, 2017, 10:27 p.m. | author: JJ Yeo | type: Question |
parent: | lastedit_date: Jan. 4, 2018, 7:14 p.m. | lastedit_user: JJ Yeo |
content:
Dear Admins,
I tried running the AdhesionFlexPython demo on both CC3D 3.7.7 and 3.7.6 in Mac OSX High Sierra. I encountered a strange problem where the moment the adhesions are changed by the AdhesionFlexSteppables.py script, the VTK outputs all zeroes for all entries (such as CellID, CellType, ClusterID).
I verified this by changing the original script to
# Same as demo until this point....
if mcs==100:
for cell in self.cellList:
print "CELL ID=",cell.id, " CELL TYPE=",cell.type
if cell.type==1:
# accessing adhesion molecule density using its name
print "NCad=", self.adhesionFlexPlugin.getAdhesionMoleculeDensity(cell,"NCad")
# accessing adhesion molecule density using its index -
# molecules are indexed in the sdame order they are listed in the xml file
print "Int=", self.adhesionFlexPlugin.getAdhesionMoleculeDensityByIndex(cell,1)
# And so on....
Once the MCS reaches 100 and changes the adhesions, the VTK outputs become matrices of zeroes. Also, the adhesions do not change at all if I change the condition to# Same as demo until this point....
if mcs==101:
for cell in self.cellList:
print "CELL ID=",cell.id, " CELL TYPE=",cell.type
if cell.type==1:
# accessing adhesion molecule density using its name
print "NCad=", self.adhesionFlexPlugin.getAdhesionMoleculeDensity(cell,"NCad")
# accessing adhesion molecule density using its index -
# molecules are indexed in the sdame order they are listed in the xml file
print "Int=", self.adhesionFlexPlugin.getAdhesionMoleculeDensityByIndex(cell,1)
# And so on....
runScript.command -i $working_dir/$working_script -f 100 --currentDir $working_dir -o $working_dir/movies --exitWhenDone
Here's a video of the default run, I don't understand what's happening here, why are all the cells becoming type 0 (medium)?
File attached: AdhesionFlex.mpg (2.61 MB)
attachments(redirected):
.\CC3D_allanswered_linked_files\AdhesionFlex.mpg
id: klrab | creation_date: Nov. 28, 2017, 1:48 p.m. | author: JJ Yeo | type: Comment |
parent: eqpqp | lastedit_date: Nov. 28, 2017, 1:48 p.m. | lastedit_user: JJ Yeo |
content:
Did anyone else see this problem or it's only an issue with my simulations? Any response is greatly appreciated so that I can troubleshoot the problem.
id: klmbe | creation_date: Dec. 8, 2017, 11:50 p.m. | author: Maciek Swat | type: Answer |
parent: eqpqp | lastedit_date: Dec. 8, 2017, 11:50 p.m. | lastedit_user: Maciek Swat |
content:
I ran the AdhesionFlex Simulation with the VTK output but could not reproduce the problem. Could you post the exact simulation that you ran?
id: wlgax | creation_date: Dec. 9, 2017, 3:35 p.m. | author: JJ Yeo | type: Comment |
parent: klmbe | lastedit_date: Dec. 9, 2017, 3:35 p.m. | lastedit_user: JJ Yeo |
content:
I ran the default AdhesionFlexPython demo on both Mac OSX High Sierra and Ubuntu 14.04 with CC3D 3.7.7. The CC3D on Ubuntu was compiled by myself. Both these cases showed the same result of Type 1 disappearing slowly.
I have attached the .zip file of the demo that I ran just to be sure:
https://mega.nz/#!5AoCSDwB!Jw9SXf2yDz3wV0hNIQKInEtLqN_yGnCa6NvJS7v0rw8
id: mbpko | creation_date: Jan. 4, 2018, 5:49 p.m. | author: JJ Yeo | type: Answer |
parent: eqpqp | lastedit_date: Jan. 4, 2018, 7:11 p.m. | lastedit_user: JJ Yeo |
content:
Any ideas what might be the issue or any ways of troubleshooting? Here's some sample outputs from running:
File attached: LatticeData.zip (459.2 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\LatticeData.zip
id: eqlkz | creation_date: Jan. 4, 2018, 7:14 p.m. | author: JJ Yeo | type: Answer |
parent: eqpqp | lastedit_date: Jan. 4, 2018, 7:14 p.m. | lastedit_user: JJ Yeo |
content:
After tweaking things about, the only way that I can get the simulation to have a logical VTK output is if the medium has no adhesion molecules whatsoever. I have attached the sample scripts and outputs here:
File attached: output.zip (3.55 MB)
Any comments about why this is so will be greatly appreciated.
attachments(redirected):
.\CC3D_allanswered_linked_files\output.zip
id: pgrnm | creation_date: Nov. 26, 2017, 5:21 a.m. | author: Abhishek Das | type: Question |
parent: | lastedit_date: Dec. 18, 2017, 2:37 p.m. | lastedit_user: James Sluka |
content:
Currently, I see no options to draw a 3D PIF in Cell Draw. The objective is to show segment width of different cell types (coloured differently) with variable values of the contractility term aka Young's modulus. Also, the environment needs to be bounded, meaning the boundary conditions should be fixed or periodic but can't be open.
id: klrjo | creation_date: Nov. 26, 2017, 9:05 p.m. | author: Yuan | type: Comment |
parent: pgrnm | lastedit_date: Nov. 26, 2017, 9:05 p.m. | lastedit_user: Yuan |
content:
Hi, as far as I am concerned, the contractility term is a little different from Young's modulus. What's your contractility term, the lambda volume or surface?
id: pgrkz | creation_date: Nov. 29, 2017, 2:43 p.m. | author: priyomadhyapok | type: Comment |
parent: pgrnm | lastedit_date: Nov. 29, 2017, 2:43 p.m. | lastedit_user: priyomadhyapok |
content:
Not very familiar with Cell Draw. But you can use a separate CC3D simulation to generate a PIF file with your initial conditions first and later on export it for other simulations. (CC3D Gui -> Tools-> Generate a PIF from current snapshot) . Advantage is you can attach your Young's modulus to each cell and adjust it's constraints to describe your system. (Note to construct cells of arbitrary lengths you can use self.cellField)
id: lowaz | creation_date: Dec. 8, 2017, 6:57 p.m. | author: Abhishek Das | type: Comment |
parent: klrjo | lastedit_date: Dec. 8, 2017, 6:57 p.m. | lastedit_user: Abhishek Das |
content:
The contractility term is Lambda surface
id: bekpr | creation_date: Dec. 8, 2017, 9:29 p.m. | author: Yuan | type: Comment |
parent: lowaz | lastedit_date: Dec. 8, 2017, 9:29 p.m. | lastedit_user: Yuan |
content:
Yes, when I use the Lambda surface, the cells often tend to be rectangle or so, which is not analogous to the condition of cells. Have you ever meet such things?
id: qvxqe | creation_date: Dec. 11, 2017, 9:26 a.m. | author: Abhishek Das | type: Comment |
parent: bekpr | lastedit_date: Dec. 11, 2017, 9:26 a.m. | lastedit_user: Abhishek Das |
content:
Yes, in a realistic embryo system of a developing fly the cell shapes are more of polygonal nature with pentagons and hexagons visible but with CC3D if I initialize the system with square cells, ideally the cells will try to get to a circular shape over time due to energy minimisation principle. The catch point is the regional geometrical constraints play a role (i.e. if you dont want your cells to divide and play with a constant number of cells).
Although I must say, even though visibly they look rectangular or squarish from the sim output, performing a Voronoi analysis (after extracting the center of mass of the cells) showed a distribution of polygonal shapes at steady state!
id: pgpnr | creation_date: Dec. 18, 2017, 2:23 p.m. | author: James Sluka | type: Answer |
parent: pgrnm | lastedit_date: Dec. 18, 2017, 2:37 p.m. | lastedit_user: James Sluka |
content:
Expanding on priyomadhyapok’s answer; Sometimes the easiest way to generate a cell layout (2D or 3D) is to just do it directly in CC3D. If you can write the equations for the geometry you can have python place the individual cells exactly where you want them.
for x in range (0,self.dim.x): # x, y and z width of the bounding box
for y in range (0,self.dim.y):
for z in range (0,self.dim.z):
print x,y,z
newcell=self.newCell(self.MYCELL)
# MYCELL is the all-uppercase name of the cell type you want
SIZE=5.
self.cellField[x:int(x+SIZE-1),y:int(y+SIZE-1),z:int(z+SIZE-1)]=newcell
# the size of cell will be SIZExSIZExSIZE
# if you want to have the new cell centered at the3 pixel you will need something like;
# [int(x-SIZE/2.:int(x+SIZE/2. -1), ...
<Steppable Frequency="100" Type="PIFDumper">
<!-- Periodically stores cell layout configuration in a piff format -->
<PIFName>SphereOfCells</PIFName>
<PIFFileExtension>piff</PIFFileExtension>
</Steppable>
attachments(redirected):
.\CC3D_allanswered_linked_files\SphereOfCells.zip
.\CC3D_allanswered_linked_files\sphereofcells.png
id: eqppx | creation_date: Nov. 27, 2017, 8:27 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: Nov. 27, 2017, 12:33 p.m. | lastedit_user: Anwar |
content:
id: belll | creation_date: Nov. 27, 2017, 8:41 a.m. | author: Yuan | type: Answer |
parent: eqppx | lastedit_date: Nov. 27, 2017, 8:41 a.m. | lastedit_user: Yuan |
content:
In my experience, no. If you stop the simulation and restart, the parameters changed in the XML will work. Why don't you have a try? Then you can confirm it.
id: omrbm | creation_date: Nov. 27, 2017, 12:31 p.m. | author: Anwar | type: Answer |
parent: eqppx | lastedit_date: Nov. 27, 2017, 12:33 p.m. | lastedit_user: Anwar |
content:
Yes. If you change parameter in the Model Editor window it does affect the running simulation. For instance if you change temperature in the model editor new value of the temperature will be used in subsequent MCS.
Model Editor-
attachments(redirected):
.\CC3D_allanswered_linked_files\Screen Shot 2017-11-27 at 12.29.45 PM.png
id: qvkmg | creation_date: Nov. 29, 2017, 7:27 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: May 15, 2018, 3:36 a.m. | lastedit_user: Jing Wei Qiu |
content:
Hi, everyone. In my simulation, there is a cluster of cells undergoing cell division. I wonder if I can get the perimeter L of them and add an energy term, $\frac{1}{2}k\left(L-L_0\right)^2$12 k(L−L0)2 .
I want to simulate the intercellular actin cable et al. in this way.
id: zpkrw | creation_date: Nov. 29, 2017, 3:02 p.m. | author: priyomadhyapok | type: Answer |
parent: qvkmg | lastedit_date: Nov. 29, 2017, 3:03 p.m. | lastedit_user: priyomadhyapok |
content:
That looks like the surface area plugin with $\lambda_{surface}=\frac{k}{2}$λsurƒ ace=k2 . (In 2d, it generalizes to a perimeter. Should help control `pixel' distribution at the periphery)
id: eqpvr | creation_date: Nov. 29, 2017, 9:19 p.m. | author: Yuan | type: Comment |
parent: zpkrw | lastedit_date: Nov. 29, 2017, 9:19 p.m. | lastedit_user: Yuan |
content:
Can the plugin be used for a cluster of cells (i.e. control the total surface area of these cells not for each cell)?
id: lovzn | creation_date: Nov. 30, 2017, 12:37 a.m. | author: priyomadhyapok | type: Comment |
parent: eqpvr | lastedit_date: Nov. 30, 2017, 12:37 a.m. | lastedit_user: priyomadhyapok |
content:
I might have misunderstood your original question. By `perimeter' you are referring to the resulting shape at the boundary the cluster is forming (are your cells in a ring?) I don't believe you should directly try adding a term that signifies the target length arising from a group of single cells. Best case scenario would probably be using focal point plasticity links(similar to your equation form) between neighboring cell pairs in the cluster in order to control L0,like breaking up L0 into smaller pieces.
id: qvkzg | creation_date: Nov. 30, 2017, 2:46 a.m. | author: Yuan | type: Comment |
parent: lovzn | lastedit_date: Nov. 30, 2017, 8:30 p.m. | lastedit_user: Yuan |
content:
Actually, the shape is a disc or other polygons, not only a ring. I want to apply the constraint, $\frac{1}{2}k\left(L-L_0\right)^2$12 k(L−L0)2 , on the outermost ring of cells. The biological background is, the outermost cells contract to exert a force on the inners. Both the outer and inner cells are of the same type and they are under mitosis. Is it possible to simulate this in CC3D?
Besides, what's the meaning of volume and surface in 2D simulation? I do not see the description in the CC3D tutorial. For example, a cell is made up of 2*2 pixels in 2D, then the surface is 8 and the volume is 4?
Thank you.
id: nqkae | creation_date: Nov. 30, 2017, 11:36 p.m. | author: priyomadhyapok | type: Comment |
parent: qvkzg | lastedit_date: Nov. 30, 2017, 11:36 p.m. | lastedit_user: priyomadhyapok |
content:
So the point I was trying to make was you can only break your constraint length into smaller lengths and control it using FPP. The Hamiltonian in CC3D is a sum over individual cell components and their interactions.
In 2d, cell volume would generalize to the total number of pixels for the cell. So if you have a 'squarish' cell of 3 by 3, the total number of pixels in this case is 9 which is the volume. Cell surface is given by how the cell is in contact with the boundary, in this case 3*4=12.
id: nqlqe | creation_date: Dec. 2, 2017, 9:39 p.m. | author: Yuan | type: Comment |
parent: nqkae | lastedit_date: Dec. 2, 2017, 9:39 p.m. | lastedit_user: Yuan |
content:
Yeah, I will have a try. Thank you so much.
id: awjnm | creation_date: May 6, 2018, 10:05 p.m. | author: Jing Wei Qiu | type: Comment |
parent: nqlqe | lastedit_date: May 6, 2018, 10:05 p.m. | lastedit_user: Jing Wei Qiu |
content:
Hello, Yuan
My name is Jingwei Qiu, I am an artist now basic between Beijing and SFO. I am working on a project that need somebody familiar this model , but is hard to find programer who have the knowledge both in bio-cell and computing, so let me know can I ask the help from you, we can discuss the treatment。 Thank you
id: vxwlj | creation_date: May 7, 2018, 9:25 a.m. | author: Yuan | type: Comment |
parent: awjnm | lastedit_date: May 7, 2018, 9:26 a.m. | lastedit_user: Yuan |
content:
Hello Jingwei,
I am not sure whether I can meet your requirements. So what do you want to do specifically?
id: vxmvw | creation_date: May 11, 2018, 2:43 a.m. | author: Jing Wei Qiu | type: Comment |
parent: vxwlj | lastedit_date: May 11, 2018, 2:43 a.m. | lastedit_user: Jing Wei Qiu |
content:
Thank you so much for your reply! can we add a qq or wechat? So that I can share more detail with you.
my QQ:1071787728 Thank you!
id: kgjmj | creation_date: May 11, 2018, 2:47 a.m. | author: Jing Wei Qiu | type: Comment |
parent: vxwlj | lastedit_date: May 11, 2018, 2:47 a.m. | lastedit_user: Jing Wei Qiu |
content:
This program is barely used by people,its very professional.All my programmer friend can only understand few function in it.
id: gnkjp | creation_date: May 15, 2018, 3:36 a.m. | author: Jing Wei Qiu | type: Comment |
parent: vxwlj | lastedit_date: May 15, 2018, 3:36 a.m. | lastedit_user: Jing Wei Qiu |
content:
Hey, Yuan
Do you normally use QQ? I would love to go further in that topic with you,Let me know how you think)
id: zpzqr | creation_date: Dec. 1, 2017, 3:11 p.m. | author: Mahua Roy | type: Question |
parent: | lastedit_date: Dec. 8, 2017, 11:43 p.m. | lastedit_user: Maciek Swat |
content:
I have my model based on the paper "Emergent Stratification in Solid Tumors Selects for Reduced Cohesion of Tumor Cells: A Multi-Cell, Virtual-Tissue Model of Tumor Evolution Using CompuCell3D" for tumor growth. However, I would like to have my cells to move towards higher glucose and additionally oxygen. Both these nutrients would have high diffusion constants. Using "DiffusionSolverFE" is making my simulations very slow as has been mentioned in the tutorials. Hence, I was wondering if I use SteadyStateDiffusionSolver as has been used in the above paper, would chemotaxis be appropriate?
id: xngnl | creation_date: Dec. 2, 2017, 3:20 a.m. | author: priyomadhyapok | type: Comment |
parent: zpzqr | lastedit_date: Dec. 2, 2017, 3:20 a.m. | lastedit_user: priyomadhyapok |
content:
You should be able to use any module for solving your field and use that for chemotaxis. When you change the diffusion solver, also update the ChemicalField Source under the Chemotaxis plugin.
id: repne | creation_date: Dec. 8, 2017, 11:43 p.m. | author: Maciek Swat | type: Answer |
parent: zpzqr | lastedit_date: Dec. 8, 2017, 11:43 p.m. | lastedit_user: Maciek Swat |
content:
Any solver can be used with chemotaxis but for large diffusion constants we typically use SteadyState solver that essentially solves Helmholtz equation in Cartesian coordinates
(d/dx)(du/dx) + (d/dy)(du/dy) + lambda*u = f(x,y).
As you can see there is no dependence on time here and this is the limiting case for the diffusion equation when d/dt term is zero because the field stopped evolving (i.e. at large t.) Clearly this is an approximation so you have to be aware of it and double check if this approximation is appropriate for your problem. However using the field from SteadyState solvers in Chemotaxis plugin is fine
id: pgqgj | creation_date: Dec. 2, 2017, 9:44 p.m. | author: Yuan | type: Question |
parent: | lastedit_date: Dec. 10, 2017, 12:14 a.m. | lastedit_user: Yuan |
content:
Hi, everyone, I am trying to generate the PIF file and use it in the following simulation. I get a "fail to respond " error, just as the picture.
attachments(redirected):
.\CC3D_allanswered_linked_files\123.png
id: zpzpr | creation_date: Dec. 2, 2017, 10:10 p.m. | author: priyomadhyapok | type: Comment |
parent: pgqgj | lastedit_date: Dec. 2, 2017, 10:10 p.m. | lastedit_user: priyomadhyapok |
content:
So the screen becomes unresponsive once you click on 'Generate PIF file from current snapshot'? I used to have an issue when the command can't be selected at all. The way I solved it is instead of running the simulation by hitting play initially, I would hit step on the first mcs and then click on play later (Does that help in any way? ). That seemed to work with the command being available after that. Though this problem is fixed in the newer cc3d versions.
id: ombmz | creation_date: Dec. 2, 2017, 11:49 p.m. | author: Yuan | type: Comment |
parent: zpzpr | lastedit_date: Dec. 2, 2017, 11:49 p.m. | lastedit_user: Yuan |
content:
Yeah, once I click on 'Generate PIF file from current snapshot' it becomes unresponsive. If I hit the step on only and then click to generate PIF, the same result is got.
id: mbebl | creation_date: Dec. 3, 2017, 12:15 a.m. | author: priyomadhyapok | type: Comment |
parent: ombmz | lastedit_date: Dec. 3, 2017, 12:15 a.m. | lastedit_user: priyomadhyapok |
content:
There is also an option for PIF Dumper Steppable (Its in the manual) which you can add to the main python file. This way you don't have to use the player. Does that work for you?
id: wlglp | creation_date: Dec. 3, 2017, 1:12 a.m. | author: Yuan | type: Comment |
parent: mbebl | lastedit_date: Dec. 3, 2017, 1:12 a.m. | lastedit_user: Yuan |
content:
Yes, this is an effective way. Thanks sincerely.
id: vnvpe | creation_date: Dec. 8, 2017, 11:47 p.m. | author: Maciek Swat | type: Answer |
parent: pgqgj | lastedit_date: Dec. 8, 2017, 11:47 p.m. | lastedit_user: Maciek Swat |
content:
Does the solution work?
id: bekqr | creation_date: Dec. 10, 2017, 12:14 a.m. | author: Yuan | type: Comment |
parent: vnvpe | lastedit_date: Dec. 10, 2017, 12:14 a.m. | lastedit_user: Yuan |
content:
Yes, I succeed to generate the PIF using the PIF Dumper Steppable.
id: reppv | creation_date: Dec. 6, 2017, 1:08 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Dec. 11, 2017, 9:06 a.m. | lastedit_user: Scott H |
content:
Hi everyone, I try to simulate the formation and fusion of lumens in the tissue. The sketch is as follows. The black hole is the lumen. Each lumen is between two cells.
I wonder if you could give me some advice, how can I simulate the initial lumen in CC3D? In my scenario, the lumen may exert a pressure on the surrounding cells so that it can extend. Besides the cells need to contract by themselves. Thank you!
attachments(redirected):
.\CC3D_allanswered_linked_files\lumen.png
id: mbeer | creation_date: Dec. 6, 2017, 11:11 a.m. | author: Scott H | type: Answer |
parent: reppv | lastedit_date: Dec. 6, 2017, 11:11 a.m. | lastedit_user: Scott H |
content:
I am curious about this as well. What type of tissue is this? If in 2D, you could initialize a cell type for the lumen "space"
id: qvxpv | creation_date: Dec. 6, 2017, 3:57 p.m. | author: James Sluka | type: Answer |
parent: reppv | lastedit_date: Dec. 6, 2017, 3:57 p.m. | lastedit_user: James Sluka |
content:
Yes, the best way to model a lumen is probably as "cells". Basically, blobs of water (or blood, or ...)
id: klmke | creation_date: Dec. 10, 2017, 11:27 a.m. | author: Maciek Swat | type: Answer |
parent: reppv | lastedit_date: Dec. 10, 2017, 11:27 a.m. | lastedit_user: Maciek Swat |
content:
See this paper for details https://www.ncbi.nlm.nih.gov/pubmed/27193300
id: bekwr | creation_date: Dec. 11, 2017, 9:06 a.m. | author: Scott H | type: Comment |
parent: klmke | lastedit_date: Dec. 11, 2017, 9:06 a.m. | lastedit_user: Scott H |
content:
The paper is very detailed and a good source- thank you for the suggestion! We need a Journal Club on the forum!
id: ombok | creation_date: Dec. 7, 2017, 9:31 p.m. | author: Yuan | type: Question |
parent: | lastedit_date: Dec. 10, 2017, 9:01 p.m. | lastedit_user: Yuan |
content:
File attached: model.rar (18.01 KB)
Actually, I have installed the numpy, just as the following snapshot. It seems that there are relatively more errors in Windows compared to others. Is this true? By the way, there are more or less errors for me while using the newer version such as 3.7.5~3.7.7. Now I am using a no gpu version of 3.7.4 in Windows 7 64 bit OS. There was no error at first, but now ......
attachments(redirected):
.\CC3D_allanswered_linked_files\QQ截图20171208095803.png
.\CC3D_allanswered_linked_files\QQ截图20171208102236.png
.\CC3D_allanswered_linked_files\model.rar
id: mbepr | creation_date: Dec. 7, 2017, 10:37 p.m. | author: Maciek Swat | type: Answer |
parent: ombok | lastedit_date: Dec. 7, 2017, 10:37 p.m. | lastedit_user: Maciek Swat |
content:
could you post the example you are trying to run. i n general I would stick to newer versions of CC3D as they ship with complete Python distribution. BTW the above error happens because you have not imported random in Python. If you type
import random
random.rand()
it should work
However , depending on your simulation you may want to explore numpy's random utilities in that cas you woudl type
import numpy.random as nr
# now you can type
nr.rand(3,2)
# and this is what you will get
# array([[ 0.14022471, 0.96360618], #random
# [ 0.37601032, 0.25528411], #random
# [ 0.49313049, 0.94909878]]) #random
see https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.rand.html#numpy.random.rand
id: eqwlo | creation_date: Dec. 7, 2017, 11:23 p.m. | author: Yuan | type: Comment |
parent: mbepr | lastedit_date: Dec. 8, 2017, 4:05 a.m. | lastedit_user: Yuan |
content:
Thank you. The model is attached now. I don't even use the function in Numpy. So I think the error may due to other reasons. BTW is there a no gpu version for 3.7.7 or 3.7.6 ?
id: gglzo | creation_date: Dec. 8, 2017, 8:25 a.m. | author: Yuan | type: Comment |
parent: mbepr | lastedit_date: Dec. 8, 2017, 8:25 a.m. | lastedit_user: Yuan |
content:
In addition to that, there are still two problems for 3.7.7.
1. It seems that there is no CellDraw in 3.7.7
2. If I click the Compucell3D immediately, it will crash in splash screen.
id: qvxle | creation_date: Dec. 8, 2017, 11:29 p.m. | author: Maciek Swat | type: Answer |
parent: ombok | lastedit_date: Dec. 8, 2017, 11:29 p.m. | lastedit_user: Maciek Swat |
content:
Thanks for reporting the startup crash issue. We have fixed it.And you are right there is no cell draw in 3.7.7.
id: xngab | creation_date: Dec. 8, 2017, 11:35 p.m. | author: Maciek Swat | type: Answer |
parent: ombok | lastedit_date: Dec. 8, 2017, 11:35 p.m. | lastedit_user: Maciek Swat |
content:
The issue with your code was not the model itself but the cc3d file
This is how it looked like:
<Simulation version="3.6.2">
<XMLScript Type="XMLScript">Simulation/lumen.xml</XMLScript>
<PythonScript Type="PythonScript">Simulation/lumen.py</PythonScript>
<Resource Type="Python">Simulation/lumenSteppables.py</Resource>
<PIFFile>C:\CompuCell3D-64bit\(u'D:\cc3d\lumen\lumen.piff', u'All Files (*)')</PIFFile>
</Simulation>
and this is how it should look like:
<Simulation version="3.6.2">
<XMLScript Type="XMLScript">Simulation/lumen.xml</XMLScript>
<PythonScript Type="PythonScript">Simulation/lumen.py</PythonScript>
<Resource Type="Python">Simulation/lumenSteppables.py</Resource>
</Simulation>
Simply you have specified a path of the PIFFile that did not point to anything and thi sis the reason you have seen the crash
If you want to specify PIFFile path in the .cc3d file you could do the following:
<Simulation version="3.6.2">
<XMLScript Type="XMLScript">Simulation/lumen.xml</XMLScript>
<PythonScript Type="PythonScript">Simulation/lumen.py</PythonScript>
<Resource Type="Python">Simulation/lumenSteppables.py</Resource>
<PIFFile>Simulation/lumen5.piff</PIFFile>
</Simulation>
File attached: model_yuan_fixed.zip (20.91 KB)
Let us know if this simulation runs on your machine. I have tested it on windows with 3.7.7. binary
attachments(redirected):
.\CC3D_allanswered_linked_files\model_yuan_fixed.zip
id: lowqz | creation_date: Dec. 10, 2017, 12:09 a.m. | author: Yuan | type: Comment |
parent: qvxle | lastedit_date: Dec. 10, 2017, 12:09 a.m. | lastedit_user: Yuan |
content:
So do I have to install an older version if I want to use CellDraw?
id: gglxn | creation_date: Dec. 10, 2017, 11:22 a.m. | author: Maciek Swat | type: Answer |
parent: ombok | lastedit_date: Dec. 10, 2017, 11:22 a.m. | lastedit_user: Maciek Swat |
content:
For the time being, yes. How complicated is the geometry you are creating?
id: avkmo | creation_date: Dec. 10, 2017, 8:50 p.m. | author: Yuan | type: Comment |
parent: xngab | lastedit_date: Dec. 10, 2017, 8:50 p.m. | lastedit_user: Yuan |
content:
Yes, the model runs normally now. Thanks sincerely.
id: nqlel | creation_date: Dec. 10, 2017, 8:56 p.m. | author: Yuan | type: Comment |
parent: gglxn | lastedit_date: Dec. 10, 2017, 9:01 p.m. | lastedit_user: Yuan |
content:
Just as the following picture:
attachments(redirected):
.\CC3D_allanswered_linked_files\QQ截图20171211100024.png
id: jrxax | creation_date: Dec. 8, 2017, 10:06 a.m. | author: Thomas | type: Question |
parent: | lastedit_date: Dec. 28, 2017, 3:43 p.m. | lastedit_user: Kim Kanigel Winner |
content:
Hello everyone. I simulate the migration of a cell over a substrate and I would like to obtain the velocity of this cell and the time of each iteration. Do you know if there is a way to know them?
Thank you!
id: mbeaw | creation_date: Dec. 8, 2017, 2:08 p.m. | author: priyomadhyapok | type: Answer |
parent: jrxax | lastedit_date: Dec. 8, 2017, 2:08 p.m. | lastedit_user: priyomadhyapok |
content:
You can find a velocity measure by tracking positions of center of masses of cells and the time taken to attain the difference. So if the center of mass of the cell has shifted from x1 to x2 in t mcs, the velocity would be (x2-x1)/t
id: vnvke | creation_date: Dec. 10, 2017, 11:25 a.m. | author: Maciek Swat | type: Answer |
parent: jrxax | lastedit_date: Dec. 10, 2017, 11:25 a.m. | lastedit_user: Maciek Swat |
content:
One thing to remember though is to be aware that is t=1 MCS (Monte Carlo Step) you will get a very noisy estimate of the velocity so it is best to use longer time periods. the optimal interval to use may depend of the actual simulation you run so you may need to play a bit with different values
id: omblg | creation_date: Dec. 11, 2017, 5:08 a.m. | author: Thomas | type: Answer |
parent: jrxax | lastedit_date: Dec. 11, 2017, 5:08 a.m. | lastedit_user: Thomas |
content:
Thank you for the answer. Do you know where I can find data such as the position of the center of mass of the cell during the simulation (because I try to use the plugin "CenterOfMass" but I can't find the data for post-processing)?
id: klmoe | creation_date: Dec. 11, 2017, 11:14 a.m. | author: James Sluka | type: Answer |
parent: jrxax | lastedit_date: Dec. 11, 2017, 11:14 a.m. | lastedit_user: James Sluka |
content:
If you use twedit++ there is a code snipet at <CC3D Python><Cell Attributes><Center of Mass>, which inserts the code below.
# Make sure CenterOfMass plugin is loaded
# READ ONLY ACCESS
xCOM=cell.xCOM
yCOM=cell.yCOM
zCOM=cell.zCOM
id: nqpeq | creation_date: Dec. 28, 2017, 3:42 p.m. | author: Kim Kanigel Winner | type: Answer |
parent: jrxax | lastedit_date: Dec. 28, 2017, 3:43 p.m. | lastedit_user: Kim Kanigel Winner |
content:
This is a little embarrassing, but I have used a ruler on screenshots taken at simulation start and end points to measure # of pixels/voxels traveled by a clump of cells to get their tissue-invasive velocity. The simulation was of several hours' movement, so this was basically a long, running average, as mentioned above. Whether I did it on the screen or printed on paper I can't remember, but either is fine -- though you have a record if you keep the paper. The traveling cells stayed visible in one plane of a 3-D sim, coincidentally. Not to discourage tracking it computationally -- you could just as easily get a start and end point and do the same calculation -- just another way it has been done.
id: nqkjb | creation_date: Nov. 26, 2017, 9:54 p.m. | author: Yuan | type: Question |
parent: | lastedit_date: Dec. 10, 2017, 11:17 a.m. | lastedit_user: Maciek Swat |
content:
Hi, the paper "Multi-Scale Modeling of Tissues Using CompuCell3D" says, "The fixed discretization makes explicit modeling of fibers or membranes expensive, since the lattice constant must be set to the smallest scale to be explicitly represented. Cell membrane fluctuations are also caricatured as a result of the fixed spatial resolution. However, the latest versions of CC3D support a layer of finite-element links which have length but zero diameter. These can be used to represent fibers or membranes, allowing a simulation to combine the advantages of both methods at the cost of increased model complexity."
How to realize it?
id: repxe | creation_date: Dec. 10, 2017, 11:17 a.m. | author: Maciek Swat | type: Answer |
parent: nqkjb | lastedit_date: Dec. 10, 2017, 11:17 a.m. | lastedit_user: Maciek Swat |
content:
The layer fo finite-element-like links is essentially Focal Point Plasticity. It places a constraint on the distance between two centers of masses of the two cells. For example you can have a compartmentalized cell composed of many compartments and you can connect "outermost" compartments with a series of focal point plasticity links. This could provide contractile force, of similar type as membrane would exert.
id: zpzlj | creation_date: Dec. 11, 2017, 3:52 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Dec. 16, 2017, 12:21 p.m. | lastedit_user: Maciek Swat |
content:
Hi, everyone. I am just reading the CC3D code in Ph.D. thesis 'Modeling interactions between a tumor cell and its host epithelium', Eline Boghaert, Princeton University (2014).
There are some puzzles for me in the following code, what're the properties of neighborAddress ?
diameters?
#for each LEP calculate the number of cells that are 2.5 cell diameters away (2nd order neighbors)
class ApoptosisSteppable(SteppableBasePy):
def __init__(self,_simulator,_frequency=1):
SteppableBasePy.__init__(self,_simulator,_frequency)
def step(self,mcs):
if mcs>10:
cell_apoptosis=[]
for cell in self.cellListByType(1):
neighbors=[]
a=cell.id
id=[cell.id]
cellNeighborList=self.getCellNeighbors(cell)
for neighbor in cellNeighborList:
if neighbor.neighborAddress and neighbor.neighborAddress.type==1:
neighbors.append(neighbor.neighborAddress)
id.append(neighbor.neighborAddress.id)
for cell in neighbors:
cellNeighborList=self.getCellNeighbors(cell)
for neighbor in cellNeighborList:
if neighbor.neighborAddress and neighbor.neighborAddress.type==1:
if neighbor.neighborAddress.id in id:
pass
else:
id.append(neighbor.neighborAddress.id)
#if there are more than 10 cells within a 2.5 cell diameter radius the LEP undergoes apoptosis with a given probability
#the randint function is used to specify this probability
if len(id)>10 and randint(1,1000)<=10:
cell_apoptosis.append(a)
for cell in self.cellListByType(1):
if cell.id in cell_apoptosis:
cell.targetVolume=0
cell.lambdaVolume=1000
id: xngrb | creation_date: Dec. 11, 2017, 9:59 a.m. | author: Maciek Swat | type: Answer |
parent: zpzlj | lastedit_date: Dec. 11, 2017, 9:59 a.m. | lastedit_user: Maciek Swat |
content:
strictly speaking neighborAddress is a C++ address of the neighbor cell object. In Python neighborAddress is simply a neighbor cell so if you type:
neighborAddress.id
you will get id of th neighbor cell
if you type
neighborAddress.volume
you will get volume of the neighbor cell
etc..
One thing to keep in mind is that Medium can be a neighbor too and Medium is a zero pointer in C++ so the neighbor address of it will be 0 and you cannot as for id or volume of the Medium. This is why you often see the if statement that checks if neighbor address is NULL or not
Also , the new examples in 3.7.6 + use somewhat cleaner terminology w.r.t. iteration over neghbors
id: bekxr | creation_date: Dec. 13, 2017, 8:41 a.m. | author: Yuan | type: Comment |
parent: xngrb | lastedit_date: Dec. 15, 2017, 1:24 a.m. | lastedit_user: Yuan |
content:
Oh,I see, thank you. I still have a puzzle, when I meet some commands which don't appear in the manuals, how can I know its usage and function, in addition to asking in the community?
id: eqwkb | creation_date: Dec. 14, 2017, 11:41 a.m. | author: Scott H | type: Answer |
parent: zpzlj | lastedit_date: Dec. 14, 2017, 11:41 a.m. | lastedit_user: Scott H |
content:
I found the new Python Scripting Manual helpful in this particular case http://pythonscriptingmanual.readthedocs.io/en/latest/SteppableBasePy_class.html .
Most of the simulation is done on self.cellList, and I was able to understand the Python scripting more once I knew more about the basic class.
I like the particular example you posted. I am also doing simulations involving logic based on cell neighbors.
id: klpgg | creation_date: Dec. 16, 2017, 12:21 p.m. | author: Maciek Swat | type: Comment |
parent: bekxr | lastedit_date: Dec. 16, 2017, 12:21 p.m. | lastedit_user: Maciek Swat |
content:
Usually the best thing is to ask people in this forum. We are working to fix the documentation but sometimes code development cycle is ahead of the documentation cycle. Any questions you post here will get incorporated into the manuals. It also help us understand what aspects of CC3D are most confusing to people
id: qvxme | creation_date: Dec. 11, 2017, 8 p.m. | author: Mahua Roy | type: Question |
parent: | lastedit_date: Feb. 1, 2018, 10:45 p.m. | lastedit_user: Abbas Shirinifard |
content:
For the paper "Emergent Stratification in Solid tumors ..." there is a conversion factor from fmol/cell to fmol/voxel (0.1fmol/cell/s to 2.25fmol/voxel/MCS). I can get the conversion from MCS to sec. However, what is the factor used for conversion of per cell to per voxel. The paper mentions using a scaling factor to convert 5mM to 0.32fmol/voxel.
Similar conversion factors are also used in "Multiscale Modeling of Tissues " , the book chapter.
I would highly appreciate any help.
id: mbpba | creation_date: Dec. 15, 2017, 11:50 p.m. | author: Maciek Swat | type: Answer |
parent: qvxme | lastedit_date: Dec. 15, 2017, 11:50 p.m. | lastedit_user: Maciek Swat |
content:
I think in this simulation we used steady state diffusion solver that for a given initial and boundary condition outputs concentration numbers for each pixel. All we are saying in the paper is that whatever the solver outputs will be interpreted in such a way that when the solver outputs 0.32 fmol we interpret it as 5mM of real concentration. Simply put I can rescale concentration in any way I want i.e. when i keep diffusion constant fixed and rescale initial concentration by a factor F the field will evolve in the same way as the field that was not scaled. the only difference will be scale.
id: ggxkp | creation_date: Jan. 31, 2018, 3:47 p.m. | author: Mahua Roy | type: Comment |
parent: mbpba | lastedit_date: Feb. 1, 2018, 2:50 p.m. | lastedit_user: Mahua Roy |
content:
For the same paper would you be able to explain how the secretion rate of glucose from stromal cells was calculated in the absence of the tumor. And also the threshold of 102.0 was assumed based on the cell being exposed to zero glucose concentration for 24 hours (240 MCS). I would highly appreciate if you could kindly shed some light on the calculation steps to reach that value. Thanks so much.
id: klkmx | creation_date: Feb. 1, 2018, 10:45 p.m. | author: Abbas Shirinifard | type: Answer |
parent: qvxme | lastedit_date: Feb. 1, 2018, 10:45 p.m. | lastedit_user: Abbas Shirinifard |
content:
given we set voxel area to 16 um^2, voxel volume will be 64um^3:
5mM= 5e-3 mole * (1/L) * (64um^3/voxel) = 0.32e-15 mole/voxel
0.1 fmol/cell/s = 0.1 fmol * (1/cell) * (cell/(16 voxels)) * (1/s) * (360 s/MCS)=2.25 fmol/voxel/mcs
id: repae | creation_date: Dec. 11, 2017, 9:51 p.m. | author: Yuan | type: Question |
parent: | lastedit_date: Dec. 16, 2017, 12:02 a.m. | lastedit_user: Maciek Swat |
content:
I have just run the model code of the PKD paper( http://www.compucell3d.org/Models/PKD).
There seem to be some problems,
1. when I click the 'Open in Player', the CC3D player doesn't work (both of the isoCyst and tubule model).
2. it seems that the Graphs.py is lost in the tubule folder,
<version 3.7.7, Windows 7, 64-bit.>
<Simulation version="3.7.3">
<PythonScript Type="PythonScript">PKD.py</PythonScript>
<Resource Type="Python">PKDSteppables.py</Resource>
<Resource Type="Python">Graphs.py</Resource>
</Simulation>
id: eqlqb | creation_date: Dec. 16, 2017, 12:02 a.m. | author: Maciek Swat | type: Answer |
parent: repae | lastedit_date: Dec. 16, 2017, 12:02 a.m. | lastedit_user: Maciek Swat |
content:
We fixed it
here is the link
http://www.compucell3d.org/Models/PKD
If it does not work I am attaching it here as well
File attached: PKD_paper_codes_fixed.zip (40.93 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\PKD_paper_codes_fixed.zip
id: mberw | creation_date: Dec. 12, 2017, 9:43 a.m. | author: d g | type: Question |
parent: | lastedit_date: Dec. 17, 2017, 3:49 a.m. | lastedit_user: Yuan |
content:
Hi All,
I have been using compucell3D for over a year without a problem, but Since downloading the latest version, Compucell3D player fails to open unless via tweddit, and then python keeps crashing at random times during the simulation. This is not an error in the code I have checked this for sure. But even when I uninstall the latest version and reinstall an older version of compucell3D I am having this problem. has anyone else had this issue or knows what I could do.
Thanks,
Daniel
id: eqwaa | creation_date: Dec. 12, 2017, 11:13 a.m. | author: Maciek Swat | type: Answer |
parent: mberw | lastedit_date: Dec. 12, 2017, 11:13 a.m. | lastedit_user: Maciek Swat |
content:
If this happens on Windows you may need to reinstall CC3D. Preferably you may need to manually remove the entire CC3D installation directory prior to installation. Let us know if this continues to be the case
id: ggljn | creation_date: Dec. 12, 2017, 12:28 p.m. | author: d g | type: Comment |
parent: eqwaa | lastedit_date: Dec. 12, 2017, 12:28 p.m. | lastedit_user: d g |
content:
Thank you, I did this and reinstalled version 3.7.5 and it is now working I shall try again with version 3.7.7 later.
id: pgpgr | creation_date: Dec. 15, 2017, 8:29 p.m. | author: Yuan | type: Comment |
parent: ggljn | lastedit_date: Dec. 15, 2017, 8:29 p.m. | lastedit_user: Yuan |
content:
I have the similar problem with the CC3D player for 3.7.7 and 3.7.6, so I just open it via twedit. The 3.7.5 no GPU version is normally running for me.
id: zpmpz | creation_date: Dec. 15, 2017, 11:15 p.m. | author: Maciek Swat | type: Answer |
parent: mberw | lastedit_date: Dec. 15, 2017, 11:15 p.m. | lastedit_user: Maciek Swat |
content:
See the solution above - manually removing the CC3D installation folder on Windows Prior to installation of C3D 3.7.7 will solve the problem
id: avrwj | creation_date: Dec. 17, 2017, 3:49 a.m. | author: Yuan | type: Comment |
parent: zpmpz | lastedit_date: Dec. 17, 2017, 3:49 a.m. | lastedit_user: Yuan |
content:
It seems useless for the CC3D player, however, open it via twedit is okay.
id: avrlj | creation_date: Dec. 15, 2017, 4:15 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Dec. 17, 2017, 4:07 a.m. | lastedit_user: Yuan |
content:
The following is the pseudo-code of CC3D. My question is what is the execution sequences of the plugins and steppables? Are the sequences impacting on the results? What should I do if I want to make the steppables run in my sequence?
attachments(redirected):
.\CC3D_allanswered_linked_files\QQ截图20171215170902.png
id: qvpoz | creation_date: Dec. 15, 2017, 11:59 a.m. | author: James Sluka | type: Answer |
parent: avrlj | lastedit_date: Dec. 15, 2017, 11:59 a.m. | lastedit_user: James Sluka |
content:
One way to enforce a particular ordering of steppables would be to simply include them all in a single steppable. You then have complete flow control in python.
id: nqpqj | creation_date: Dec. 15, 2017, 8:23 p.m. | author: Yuan | type: Comment |
parent: qvpoz | lastedit_date: Dec. 15, 2017, 8:23 p.m. | lastedit_user: Yuan |
content:
Yeah, a good idea! Thank you so much!
id: vnbxn | creation_date: Dec. 16, 2017, 12:18 p.m. | author: Maciek Swat | type: Answer |
parent: avrlj | lastedit_date: Dec. 16, 2017, 12:18 p.m. | lastedit_user: Maciek Swat |
content:
Steppables are executed in the same order in which they are aded to steppableRegistry. So in your main python file you typically see the following
from scientificHistBarPlotsSteppables import HistPlotSteppable
histPlotSteppable=HistPlotSteppable(_simulator=sim,_frequency=1)
steppableRegistry.registerSteppable(histPlotSteppable)
from scientificHistBarPlotsSteppables import BarPlotSteppable
barPlotSteppable=BarPlotSteppable(_simulator=sim,_frequency=1)
steppableRegistry.registerSteppable(barPlotSteppable)
CompuCellSetup.mainLoop(sim,simthread,steppableRegistry)
which means that barPlotSteppable will be executer AFTER histPlotSteppable because it was added to steppebleRegistry later in the code. id: nqpxj | creation_date: Dec. 17, 2017, 4:07 a.m. | author: Yuan | type: Comment |
parent: vnbxn | lastedit_date: Dec. 17, 2017, 4:07 a.m. | lastedit_user: Yuan |
content:
BTW, what about the order of plugins?
id: qvpwz | creation_date: Dec. 18, 2017, 5:22 a.m. | author: Pauli Tikka | type: Question |
parent: | lastedit_date: Dec. 20, 2017, 1:01 p.m. | lastedit_user: Pauli Tikka |
content:
Dear reader,
I loose the record of some cells at the end of my simulation, what could be the cause for it?
An example file extraction:
cell_no,time_mcs,x_position_(px),y_position_(px)
...
428,966,22.6896551724,14.8965517241
429,966,22.56,36.12
428,967,22.6153846154,15.1923076923
429,967,22.7083333333,35.9166666667
428,968,22.7037037037,14.851851
STOPS?? :)
There should be 999 entries? What to do/how to fix?
Best regards,
Pauli
:)
id: nqpoj | creation_date: Dec. 18, 2017, 12:42 p.m. | author: priyomadhyapok | type: Answer |
parent: qvpwz | lastedit_date: Dec. 18, 2017, 12:42 p.m. | lastedit_user: priyomadhyapok |
content:
Could you post the part of your code that is printing to the file? A possible reason could be if you are not `flushing' after printing (eg print>>some_fileHandle, results ; some_fileHandle.flush() ) but this is just a guess.
id: zpmgz | creation_date: Dec. 18, 2017, 2:30 p.m. | author: James Sluka | type: Answer |
parent: qvpwz | lastedit_date: Dec. 18, 2017, 2:30 p.m. | lastedit_user: James Sluka |
content:
Are you sure the missing lines aren't actually in the file somewhere other than at the end? Depending on your data structure Python might not be printing things in the order you expect. Dictionaries in particular can print with odd ordering.
id: remvb | creation_date: Dec. 19, 2017, 6:31 a.m. | author: Pauli Tikka | type: Answer |
parent: qvpwz | lastedit_date: Dec. 19, 2017, 6:31 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
Thank you for your comments!
Here is the steppables.py file almost as it is:
from PySteppables import *
import CompuCell
import sys
import random
from math import *
from XMLUtils import dictionaryToMapStrStr as d2mss
from PySteppablesExamples import MitosisSteppableBase
class ConstraintInitializerSteppable(SteppableBasePy):
def __init__(self,_simulator,_frequency=1):
SteppableBasePy.__init__(self,_simulator,_frequency)
def start(self):
for cell in self.cellList:
cell.targetVolume=30
cell.lambdaVolume=1.0
class peittoSteppable(SteppableBasePy):
def __init__(self,_simulator,_frequency=1):
SteppableBasePy.__init__(self,_simulator,_frequency)
self.cellA=None
self.cellB=None
def start(self):
self.pW = self.addNewPlotWindow(_title='Tracking', _xAxisTitle='Y',
_yAxisTitle='Variables', _xScaleType='linear', _yScaleType='linear')
for cell in self.cellListByType(self.NPCELLS):
c = random.choice(['green','yellow','red','blue']) #,'yellow','red','blue'
self.pW.addPlot(str(cell.id), _style='Lines', _color='green', _size=5)
for cell in self.cellListByType(self.ACELLS):
c = random.choice(['green','yellow','red','blue']) #,'yellow','red','blue'
self.pW.addPlot(str(cell.id), _style='Lines', _color='blue', _size=5)
FileName = "C:/CompuCell3D-64bit/pauli/movements/m16/okok/heihou99.txt"
FileName2 = "C:/CompuCell3D-64bit/pauli/movements/m16/okok/tt2.txt"
self.File = open(FileName,"w")
self.File2 = open(FileName2,"w")
self.File.write("cell_no, time_mcs,x_position_(px),y_position_(px)\n")
self.File2.write("cell_no, distances, time_mcs,x_position_(px),y_position_(px)\n")
def step(self,mcs):
for cell in self.cellList:
self.File2.write(str(cell.id)+","+str(mcs)+","+str(self.distanceBetweenCells(self.attemptFetchingCellById(15),self.attemptFetchingCellById(cell.id)))+","+str(cell.xCOM)+","+str(cell.yCOM)+"\n")
for cell in self.cellListByType(self.NPCELLS):
self.pW.addDataPoint(str(cell.id), cell.xCOM, cell.yCOM)
self.File.write(str(cell.id)+","+str(mcs)+","+str(cell.xCOM)+","+str(cell.yCOM)+"\n")
for cell in self.cellListByType(self.ACELLS):
self.pW.addDataPoint(str(cell.id), cell.xCOM, cell.yCOM)
self.File.write(str(cell.id)+","+str(mcs)+","+str(cell.xCOM)+","+str(cell.yCOM)+"\n")
def finish(self):
# Finish Function gets called after the last MCS
pass
-Pauli
:)
id: omojr | creation_date: Dec. 20, 2017, 11:56 a.m. | author: priyomadhyapok | type: Answer |
parent: qvpwz | lastedit_date: Dec. 20, 2017, 11:56 a.m. | lastedit_user: priyomadhyapok |
content:
Try self.File.flush() and self.File2.flush() after the write statements. I tried a version of your code and it works for me
id: mbpje | creation_date: Dec. 20, 2017, 11:58 a.m. | author: James Sluka | type: Answer |
parent: qvpwz | lastedit_date: Dec. 20, 2017, noon | lastedit_user: James Sluka |
content:
Instead of the the flush commands you might just need to explicitly close your output files. Closing will flush the write buffer. I believe this will do it;
def finish(self):
# Finish Function gets called after the last MCS
self.File.close()
self.File2.close()
id: eqlzn | creation_date: Dec. 20, 2017, 12:20 p.m. | author: James Sluka | type: Answer |
parent: qvpwz | lastedit_date: Dec. 20, 2017, 12:20 p.m. | lastedit_user: James Sluka |
content:
Another way to flush the writes is to open your output file(s) with a zero size buffer;self.File=open(FileName,"w",0)
The zero is the output buffer size. This flushes the output after every write command.
If you don't write to the file too often then the zero size output buffer wont slow things down.
id: bemgw | creation_date: Dec. 20, 2017, 12:59 p.m. | author: Pauli Tikka | type: Answer |
parent: qvpwz | lastedit_date: Dec. 20, 2017, 1 p.m. | lastedit_user: Pauli Tikka |
content:
Thank you for your help!
I see that these code lines should solve the issue. I test tomorrow and report if still any related problems.
id: qvpgm | creation_date: Dec. 20, 2017, 1:01 p.m. | author: Pauli Tikka | type: Comment |
parent: omojr | lastedit_date: Dec. 20, 2017, 1:01 p.m. | lastedit_user: Pauli Tikka |
content:
Thank you for your help!
I see that these code lines, yours and James', should solve the issue. I test tomorrow and report if still any related problems.
id: xnxeq | creation_date: Dec. 20, 2017, 1:01 p.m. | author: Pauli Tikka | type: Comment |
parent: mbpje | lastedit_date: Dec. 20, 2017, 1:01 p.m. | lastedit_user: Pauli Tikka |
content:
thank you for the code, should be ok
id: mbpme | creation_date: Dec. 19, 2017, 9:59 p.m. | author: Yuan | type: Question |
parent: | lastedit_date: Dec. 21, 2017, 9:35 a.m. | lastedit_user: Scott H |
content:
Dear all, I have some questions on the following codes from the PKD paper.
def dePixelating(self,cell):
L=[]; compList=self.inventory.getClusterCells(cell.clusterId)
for cell2 in compList:
if (cell2.id != cell.id):
pixelList=self.getCellPixelList(cell)
for pixel in pixelList:
L.append(pixel.pixel)
for pixel in L:
self.cellField.set(pixel,cell)
cell.targetVolume+=len(L)
1. what's the function of self.cellField.set(pixel,cell)? To make the pixel belong to the cell?
2. should the command "pixelList=self.getCellPixelList(cell)" be "pixelList=self.getCellPixelList(cell2)"?
3.what 's the function of this function?
id: lopvq | creation_date: Dec. 21, 2017, 9:35 a.m. | author: Scott H | type: Answer |
parent: mbpme | lastedit_date: Dec. 21, 2017, 9:35 a.m. | lastedit_user: Scott H |
content:
As I understand it, this is a function under the Mitosis Steppable Class, for the Tubule Python code. Cell2 is an index going through the compList. The function is called using (self, cell), so I assume we are interested in the pixels of cell and not cell2.
I think this is related to mitosis or dividing of clustered cells, as opposed to non-clustered cells. See pg 79-81 of the 3.7.2 Reference Manual. The general 3 steps to that includes getting the set of all pixels contained by the clustered cell. Then pixels are assigned to either the parent or child cell.
id: klpbn | creation_date: Dec. 26, 2017, 3:03 p.m. | author: Francisco Marques | type: Question |
parent: | lastedit_date: Jan. 2, 2018, 10:43 a.m. | lastedit_user: Francisco Marques |
content:
Hello everyone!
I am working on a project using CompuCell3D, and I am using the PDE Solver "SteadyStateDiffusionSolver2D" to manage the diffusion processes of Oxygen.
However, I can't make sense of the results in the simulation. I have tried to solve the equation given in the documentation (Helmholtz equation) numerically, using Matlab, and the solution is very different.
For instance, in CompuCell3D, there are negative values, which I find unreasonable since I have no cells consuming the substance (there is a single cell diffusing oxygen in the centre of the simulation lattice).
Moreover, I couldn't find any information online regarding the use of the Helmholtz equation (in the form provided in the documentation) for diffusion processes.
Could you please clarify me about this issue or provide me with any documentation that details the methods used in this solver?
Thank you for your time!
id: nqpro | creation_date: Dec. 27, 2017, 7:43 p.m. | author: priyomadhyapok | type: Comment |
parent: klpbn | lastedit_date: Dec. 27, 2017, 7:43 p.m. | lastedit_user: priyomadhyapok |
content:
This from the manual: Moreover the secretion constant needs to have negative value if we want to secrete positive amount of substance - this weird requirements comes from the fact that we re using 3 rd party solver which inverts signs of the secretion constants.
Does inverting the sign for the secretion solve the problem for negative values?
id: lopqp | creation_date: Dec. 28, 2017, 5:10 a.m. | author: Francisco Marques | type: Comment |
parent: nqpro | lastedit_date: Dec. 28, 2017, 5:10 a.m. | lastedit_user: Francisco Marques |
content:
Thank you for your suggestion! However, I believe that condition does not apply to my case. I am managing secretion in the XML file and, from what I understood from the Reference Manual, that specification refers only to secretion controlled in Python. In fact, the "SteadyStateDiffusionSolver" Demo that manages secretion in the XML file also has positive values for secretory cells.
id: avrnl | creation_date: Dec. 30, 2017, 8:30 p.m. | author: Maciek Swat | type: Answer |
parent: klpbn | lastedit_date: Dec. 30, 2017, 8:30 p.m. | lastedit_user: Maciek Swat |
content:
Could you post a simplified version of your simulation?
id: qvpma | creation_date: Dec. 31, 2017, 11:05 a.m. | author: Francisco Marques | type: Answer |
parent: klpbn | lastedit_date: Dec. 31, 2017, 11:05 a.m. | lastedit_user: Francisco Marques |
content:
This is the code I am using in my simplified version of the simulation (with only one cell in the centre of the lattice):
<Potts>
<Dimensions x="500" y="300" z="1"/>
<Steps>1000</Steps>
<Temperature>10.0</Temperature>
<NeighborOrder>2</NeighborOrder>
</Potts>
<Plugin Name="CellType">
<CellType Freeze="" TypeId="0" TypeName="Medium"/>
<CellType Freeze="" TypeId="1" TypeName="Produtor"/>
</Plugin>
<Steppable Type="SteadyStateDiffusionSolver2D">
<!-- Specification of PDE solvers -->
<DiffusionField Name="O2">
<DiffusionData>
<FieldName>O2</FieldName>
<DiffusionConstant>2500</DiffusionConstant>
<DecayConstant>0</DecayConstant>
</DiffusionData>
<SecretionData>
<Secretion Type="Produtor">1</Secretion>
</SecretionData>
<BoundaryConditions>
<Plane Axis="Y">
<ConstantDerivative PlanePosition="Max" Value="0.0"/>
<ConstantDerivative PlanePosition="Min" Value="0.0"/>
</Plane>
<Plane Axis="X">
<Periodic/>
</Plane>
</BoundaryConditions>
</DiffusionField>
</Steppable>
(Besides this portion, there's the PIF Initializer)
I am running tests with the Decay Constant as 0 or as 0.39.
When it is is 0, this is the result: Max = 0.0260 and Min = -0.0038
On the other hand, in the Matlab simulation (solving the equation with finite differences and applying Jacobi Method), this is the result: Max = 0.0258 and Min = 0
There are no negative values, although there is a small hole in the centre.
In the simulation with the Decay Constant as 0.39, both graphs have only positive values, but the shapes follow the same pattern as above (peak in CC3D vs cone in Matlab simulation) and the maximum values still differ.
My goal is to understand how the values entered in the XML file evolve during the simulation so that I can determine a realistic set of constants for my actual project.
Thank you!
attachments(redirected):
.\CC3D_allanswered_linked_files\Plot-2500-0-1.png
.\CC3D_allanswered_linked_files\Plot-2500-0-1.png
id: remww | creation_date: Dec. 31, 2017, 5:03 p.m. | author: Maciek Swat | type: Answer |
parent: klpbn | lastedit_date: Dec. 31, 2017, 5:03 p.m. | lastedit_user: Maciek Swat |
content:
When you run Matlab code are you solving Helmholtz equation or are you solving the diffusion equation and run it for a long time to determine the steady state of the solution?
File attached: diffusion_steady_state_ext_potential.zip (7.37 KB)
I am attaching mine example that is very similar to yours. I noticed that that when decay constant is 0 the solver does get unstable. From what I remember with steady state solvers the decay constant had to be different than 0.0. So when I used decay constant of 0.4 the solution looks reasonable.
As a matter of fact the comments in the code for steady state solver state that when decay constant is 0.0 the solution may not exist:
/* elmbda */
/* the constant lambda in the helmholtz equation. if */
/* lambda .gt. 0, a solution may not exist. however, hwscrt will */
/* attempt to find a solution. */
I am also attaching original code of th steady state solver for 2D case. Take a look at the comment section in the biginning portion of the code (line 86 and on)
File attached: HWSCRT.c (81.7 KB)
So in summary , SteadyState solver is an approximation of the diffusion problem for large diffusion constants. There might be some numerical issues when lambda is very small compared to diffusion constants. As far as comparison with Matlab we have not done this. We benchmarked the code agains FEMLAB.
We would love to add more sophisticated PDE solver quite to CC3D at some point because Steady-State solvers are just an approximations and I wonder if the discrepancy you see between CC#D code and Matlab is because of the slightly different formulation of the problem (i.e. diffusion equation vs Helmholtz equation)
Let me know if this is helpful
attachments(redirected):
.\CC3D_allanswered_linked_files\diffusion_steady_state_ext_potential.zip
.\CC3D_allanswered_linked_files\HWSCRT.c
id: omove | creation_date: Jan. 2, 2018, 10:43 a.m. | author: Francisco Marques | type: Comment |
parent: remww | lastedit_date: Jan. 2, 2018, 10:43 a.m. | lastedit_user: Francisco Marques |
content:
Thank you for your reply! It helped me to understand the problem better!
I see the difference between those two possibilities. I believe my tests rely on the second option: I am solving the equation D(d2u/dx2 + d2u/dy2) - k * u = F(x,y) for a long time to determine the steady state of the solution.
(it is the equation in the Reference Manual but with the Diffusion Constant in the Laplacian, as it did not converge otherwise).
id: pgpbo | creation_date: Dec. 28, 2017, 5:20 p.m. | author: Kim Kanigel Winner | type: Question |
parent: | lastedit_date: Dec. 30, 2017, 8:23 p.m. | lastedit_user: Maciek Swat |
content:
the python manual says that you can change some attributes of the plotting windows in the Player, such as log vs. linear axes; however, there doesn't seem to be a way to set axis limits? I tried _ylim(0,1000), but, no luck, and I thought I should stop fishing around and just ask.
Thanks!!!
id: jrpvb | creation_date: Dec. 30, 2017, 8:23 p.m. | author: Maciek Swat | type: Answer |
parent: pgpbo | lastedit_date: Dec. 30, 2017, 8:23 p.m. | lastedit_user: Maciek Swat |
content:
Hi Kim, as of now this would be quite hard to accomplish from steppable level but we could add this option to the plotting API. We always assumed that plotting in CC3D provides just bare-bone tools but having the ability to specify axes limits should be added. I added a ticket on our github page
id: avrel | creation_date: Jan. 4, 2018, 3:18 p.m. | author: Scott H | type: Note |
parent: avrel | lastedit_date: Jan. 5, 2018, 4:35 a.m. | lastedit_user: Yuan |
content:
Hey I wanted to do a weekly journal/code club on the PKD paper since Yuan also had questions on it, and it's the new year!
Week 1-
#PARAMETERS:
cd=12 #Typical cell diameter
Lx=10*cd #Size of lattice - x
Ly=10*cd #Size of lattice - y
Lz=15*cd #Size of lattice - z
Trelax=400 #Time for cells to relax boundaries
debugFreq=100
#POTTS PARAMETERS:
Temp=50 #Potts temperature
Time=1+20000 #Total number of MCS
NOrder=4 #NeighborOrder
#CONTACT PARAMETERS:
CNOrder=4 #Distance of interaction
CINOrder=4 #Internal Distance of interaction
#VOLUYME PARAMETERS
LamV=4 #Lambda Volume
targV=cd*cd*cd #Target Volume
#CONTACT INHIBITION:
gFactor=0.8 #Growth factor
hillCoef=20 #Hill coeficient
critAlpha=0.35 #Critical alpha
gFactorSick =gFactor
hillCoefSick =hillCoef
critAlphaSick=critAlpha
#LUMEN GROWTH:
Kl=1
ApArea=6.*cd*cd*.2 # ApArea=1/Kr
attachments(redirected):
.\CC3D_allanswered_linked_files\Screen Shot 2018-01-04 at 2.48.31 PM.png
.\CC3D_allanswered_linked_files\Screen Shot 2018-01-04 at 2.59.37 PM.png
id: jrpbz | creation_date: Jan. 5, 2018, 4:35 a.m. | author: Yuan | type: Comment |
parent: avrel | lastedit_date: Jan. 5, 2018, 4:35 a.m. | lastedit_user: Yuan |
content:
Good job! I have benefited a lot especially for the source of the reference.
id: nqmqa | creation_date: Jan. 7, 2018, 11:05 a.m. | author: Tarqwin | type: Question |
parent: | lastedit_date: Jan. 12, 2018, 3:47 a.m. | lastedit_user: Tarqwin |
content:
I recently read an article which described how cell were first attracted to a chemoattractant, but were later repulsed by the same chemoattractant if the gradient of the field was too steep.
It seemed to me that this could be easily modeled by adding an if-statement in the chemotaxis plugin, which would make the lambda in the chemotaxis module negative if the gradient was steep enough.
But the xml language doesn't use if-statements and I have trouble finding out how to edit the python code of the chemotaxis plugin.
Does anyone know how to edit the chemotaxis plugin or if there is another way of first attracting and then repulsing cells?
id: pgenw | creation_date: Jan. 8, 2018, 6:09 p.m. | author: James Sluka | type: Answer |
parent: nqmqa | lastedit_date: Jan. 8, 2018, 6:27 p.m. | lastedit_user: James Sluka |
content:
I don't think editing the plugin is the way to go.
Instead, I would make two cell types, one that chemotaxes up the gradient and another that chemotaxis down the gradient. When the gradient exceeds a limit you switch from one cell type to another. Attached is a quick CC3D project with a fixed cell that is the source of a gradient ("hormone") and a moving cell that switches between going up and down the gradient based on the steepness of the gradient. To calculate the gradient I used the difference between the minimum and maximum gradient values along the moving cell's perimeter. (There might be a more efficient way to do this.) If the gradient is above a threshold the cell switches to going down the gradient, when the gradient is below a threshold the cell switches to going up the gradient. (I takes a while before the cell starts to move since the field has to build up.)
You could also switch the direction based on the field value at (for example) the center of the cell, instead of the field gradient across the cell as I did here.
File attached: InvertChemoract.zip (10.01 KB)
File attached: InvertChemotract.mov (296.64 KB)
Left: Colored by cell type, green is moving up the gradient and blue is moving down the gradient. Right: The "hormone" field created by the fixed cell in the upper right corner. Click the attached .mov to see the animation.
attachments(redirected):
.\CC3D_allanswered_linked_files\InvertChemoract.zip
.\CC3D_allanswered_linked_files\output_movie.png
.\CC3D_allanswered_linked_files\InvertChemotract.mov
.\CC3D_allanswered_linked_files\InvertChemotract.mov
id: eqnwj | creation_date: Jan. 12, 2018, 3:47 a.m. | author: Tarqwin | type: Comment |
parent: pgenw | lastedit_date: Jan. 12, 2018, 3:47 a.m. | lastedit_user: Tarqwin |
content:
Thank you very much for your answer!
I will look into it.
id: zpjxp | creation_date: Jan. 8, 2018, 1:57 a.m. | author: Thorsten Mueller | type: Question |
parent: | lastedit_date: Jan. 10, 2018, 3:57 a.m. | lastedit_user: Thorsten Mueller |
content:
Hi,
I'm trying do create a 3D morphogenesis Simulation of the urothelium. I'm draw more or less spehrish cells like this:
for xr in range(xStart, xEnd):
for yr in range(yStart, yEnd):
for zr in range(zStart, zEnd):
rd = sqrt((xr - x0) ** 2 + (yr - y0) ** 2 + (zr - z0) ** 2)
if (rd <= radiusPx):
steppable.cellField[xr, yr, zr] = cell
With this function I'm able to get some sperish cells, but without a smooth surface (see first picture).
Furthermore, during the growth of a cell, they have sometimes pixels outside of the cell (see second picture). I place the cells just somewhere in the lattice, in the second picture, to see more details of the growth process.
Since, I want to create sperish cells I use formulas of a sphere to calculate the TargetVolume and the TargetSurface (the TargetSurface is doubled, so that the cell will growth). I use the following lambda values: LambdaVolume = 1.0 and LambdaSurface = 2.0
Do you know any tips or tricks about how to get a smooth surface on a cell?
Thank you
attachments(redirected):
.\CC3D_allanswered_linked_files\points outside of a cell.png
.\CC3D_allanswered_linked_files\Screenshot at 2018-01-08 07-56-38.png
id: jragz | creation_date: Jan. 8, 2018, 12:33 p.m. | author: James Sluka | type: Answer |
parent: zpjxp | lastedit_date: Jan. 8, 2018, 12:33 p.m. | lastedit_user: James Sluka |
content:
A couple suggestions;
* In the Potts section, set the NeighborOrder to 5 to reduce pinning to the lattice.
* The rough surface of the cells is probably caused by the targetSurface being 2X bigger than it should be for the current cell target volume. Try increasing both the target surface and target volume properly for the increasing radius. (Or, if you are changing the volume, recalculate the surface every time.) Instead of setting the targetSurface much too big simply reduce the lambdaSurface significantly.
if cell.targetVolume <= cell.volume:
cell.targetVolume += 1
radius = (3./4./3.14159*cell.targetVolume)**(1./3.)
cell.targetSurface = 4.*3.14159*radius**2 * 1.1 # 10% extra surface
id: ggzbx | creation_date: Jan. 9, 2018, 5:28 a.m. | author: Thorsten Mueller | type: Comment |
parent: jragz | lastedit_date: Jan. 9, 2018, 5:28 a.m. | lastedit_user: Thorsten Mueller |
content:
Thanks,
the drawn cells look way better.
Since it is not possible to provide another picture in the comment I use the answer function to show them!
id: vngeq | creation_date: Jan. 9, 2018, 5:29 a.m. | author: Thorsten Mueller | type: Answer |
parent: zpjxp | lastedit_date: Jan. 9, 2018, 5:29 a.m. | lastedit_user: Thorsten Mueller |
content:
One problem I still have is that during the simulation become cubic again. I just checked the volume - TargetVolume and the surface - TargetSurface values and saw that the Surface is way to large regarding the volume value (see second picture, at the console the line at the cursor position).
Every MCS the TargetVolume and the TargetSurface, regarding TargetVolume, are calculated, with the provided formula.
I tried to simulate with LambdaVolume=1.0 and LambdaSurface=0.2 and 0.05 (the pictures are of the second simulation with LambdaSurface=0.05).
Since there is no way to set the surface value of a cell, are there other possibilities to influence these values of a cell than to calculate the TargetSurface and set the LambdaSurface? Where could those large surface values come from?
attachments(redirected):
.\CC3D_allanswered_linked_files\Screenshot at 2018-01-09 11-02-48.png
.\CC3D_allanswered_linked_files\Screenshot at 2018-01-09 11-03-49.png
id: wljee | creation_date: Jan. 9, 2018, 2:16 p.m. | author: James Sluka | type: Answer |
parent: zpjxp | lastedit_date: Jan. 9, 2018, 2:16 p.m. | lastedit_user: James Sluka |
content:
It might be due to your adhesion energies. For example, if the cell's surface is at the target surface value and then the cell grows by a pixel (or voxel) then you often add 2 (in 2D, 4 in 3D) to the surface and that number of values of the cell to medium adhesion. So adhesion energy will play into the surface and volume behavior of a cell.
Another thing that makes getting spherical cells tricky is that the surface on a square lattice is always greater than for a real sphere. You need to have a somewhat larger targetSurface than the simple volume vs. surface equations for a sphere.
One thing you might consider is doing a parameter scan to find the set of parameters that works best for your size cells. I would scan targetVolume, lambdaVolume, LamdaSurface, the adhesion j values and a parameter/function that converts targetVolume into a suitable targetSurface, perhaps also the Potts temperature.
id: xnjlj | creation_date: Jan. 10, 2018, 3:57 a.m. | author: Thorsten Mueller | type: Comment |
parent: wljee | lastedit_date: Jan. 10, 2018, 3:57 a.m. | lastedit_user: Thorsten Mueller |
content:
Thanks, these are valuable facts.
Your right with the second point. I have to find a value where the TargetSurface of cell is not too larger, as it was with the initial problem, and not too small.
I tried different adhesion values but in a range of 0 to 50, for every adhesionValue in the energy Matrix it did not change the behavior of the cells, as they still become cubes sooner or later.
I wonder how the initial Volume and Surface is calculated:
The cells are drawn with a radius of 4px:
Therefore the Volume of the cube around the cell is 512vx3 and the surface are 384vx2
Whereas the Volume of the drawn sphere should be 268vx3 and the surface 201vx2
CC3D calculates a Volume of around 255(vx3 - should be the right unit) and a surface of around 283vx2 -> The given values vary a bit with +-2
Why can the given surface value already be larger than the volume? Moreover the surface value is not near the surface value of the cubic neither the surface, how does this happen?
id: mbpxj | creation_date: Dec. 27, 2017, 10:26 p.m. | author: Yuan | type: Question |
parent: | lastedit_date: Jan. 9, 2018, 2:30 p.m. | lastedit_user: James Sluka |
content:
Dear all, there are some puzzles for GGH model.
1. How to specify the values of parameters in the model? For example, adhesion energy J, elastic constants K. Can I set them according to the experiments? How to realize?
2. As for the time, the Monto Carol Step(MCS) is determined by the real-time. However, the values of the parameters in simulation based on the relationship of MCS and real-time and the values have an impact on the total MCSs, i.e. they are coupled. How to solve this?
3. How to specify the relative values of the parameters?
Thank you~
id: klpbw | creation_date: Dec. 28, 2017, 10:01 a.m. | author: d g | type: Answer |
parent: mbpxj | lastedit_date: Dec. 28, 2017, 10:01 a.m. | lastedit_user: d g |
content:
Hi Yuan,
If I understand the question correctly, the way I map MCS to real time is to look at the average square displacement of cells in experiments and simulations and then use this to directly map MCS to real time.
Mapping adhesion energy to experiments is more complicated, unless you can extract real values or find values in literature, it is very difficult, one possible way is to use ratios depending on the minimization or maximization of cell boundary interfaces, i.e if two cells in a non confluent environment in contact increase their shared contact area they more adhesive than cells that decrease their contact area.
best,
Daniel
id: vnbqz | creation_date: Jan. 1, 2018, 9:12 a.m. | author: Yuan | type: Comment |
parent: klpbw | lastedit_date: Jan. 1, 2018, 9:12 a.m. | lastedit_user: Yuan |
content:
Hi Daniel,
Thanks for your answer. I still have two questions:
1. The MCS and real-time relationship can only be obtained after the simulation and experiment?
2. How to specify the relative size of the parameters?
Thank you~
Yuan
id: eqnxz | creation_date: Jan. 9, 2018, 2:30 p.m. | author: James Sluka | type: Answer |
parent: mbpxj | lastedit_date: Jan. 9, 2018, 2:30 p.m. | lastedit_user: James Sluka |
content:
The mcs to time relationship can often be determined simply by inspecting your problem. How fast do things happen? Are cells moving and/or dividing? How long does it take to move or divide? You mcs to time relationship is typically set so that an mcs represents a small portion of your time domain. If it takes 2 hours for a cell to divide then a 1 second/mcs time scale might be OK since that means there are 7200 mcs over the course of the process, which is likely to be sufficient.
Alternatively, you can scan the mcs to time relationship. Compare the results of simulations with 1 mcs= 1 hour, 1 minute, 1 second, 1 millisecond, ... Usually there will be a range of time scales where the simulation output changes with the time scale and another range of time scales where the output doesn't change. You want your simulation to be running in the time step size independent domain.
id: pgerx | creation_date: Jan. 11, 2018, 3:41 p.m. | author: Scott H | type: Note |
parent: pgerx | lastedit_date: Jan. 11, 2018, 3:41 p.m. | lastedit_user: Scott H |
content:
Week 2-
Paper: Virtual-Tissue Computer Simulations Define the Roles of Cell Adhesion and Proliferation in the Onset of Kidney Cystic Disease
Code- http://www.compucell3d.org/Models
Discussion on Code/Basics-Focusing on Tubule code
The code from the paper is split into 3 folders: IsoCyst, Measure, and tubule.
def configureSimulation(sim,Lx,Ly,Lz,Temp,Time,NOrder,CNOrder,CINOrder,debugFreq):
configureSimulation(sim,Lx,Ly,Lz,Temp,Time,NOrder,CNOrder,CINOrder,debugFreq))
import CompuCellSetup
from XMLUtils import ElementCC3D
CompuCell3DElement=ElementCC3D("CompuCell3D",{"Version":"3.7.3"})
#POTTS CONDITIONS
potts=CompuCell3DElement.ElementCC3D("Potts")
potts.ElementCC3D("Dimensions",{"x":Lx,"y":Ly,"z":Lz})
potts.ElementCC3D("Temperature",{},Temp)
potts.ElementCC3D("Steps",{},Time)
potts.ElementCC3D("NeighborOrder",{},NOrder)
potts.ElementCC3D("DebugOutputFrequency",{},debugFreq)
#Setting periodic boundary conditions to all directions
potts.ElementCC3D("Boundary_x",{},"Periodic")
potts.ElementCC3D("Boundary_y",{},"Periodic")
potts.ElementCC3D("Boundary_z",{},"Periodic")
#CELL TYPES -> Lumen, Cyto, Apical, Basal, Lateral1, Lumen and Lateral2
cellType=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"CellType"})
cellType.ElementCC3D("CellType",{"TypeName":"Medium","TypeId":0})
cellType.ElementCC3D("CellType",{"TypeName":"Cyto","TypeId":1})
cellType.ElementCC3D("CellType",{"TypeName":"Apical","TypeId":2})
cellType.ElementCC3D("CellType",{"TypeName":"Basal","TypeId":3})
cellType.ElementCC3D("CellType",{"TypeName":"Lateral","TypeId":4})
cellType.ElementCC3D("CellType",{"TypeName":"Lumen","TypeId":5})
cellType.ElementCC3D("CellType",{"TypeName":"Lateral2","TypeId":6})
id: zpjzb | creation_date: Jan. 15, 2018, 4:25 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Jan. 18, 2018, 4:35 p.m. | lastedit_user: James Sluka |
content:
Dear all,
I am trying to reproduce the process of cell compression, as shown below(picture and PP110 in PDF). There is only one big cell for simplicity. An energy term $E=\frac{1}{2}k\left(z-z_0\right)^2$E=12 k(z−z0)2 is introduced to represent the effect of the plates. $z$z is the vertical position, $z_0$z0 the 0 energy position of the plate interface and $k$k the stiffness of plate.
I manipulate the energy term in python referring to the manual,
https://cc3dadvancedtuts.wordpress.com/2015/08/01/manipulating-the-energy-term-for-a-pixel-flip-attempt-in-python/
I am meeting some difficulties in realizing the algorithm.
First, the vertical position $z$z is obtained by calculating the average value of the outmost layer pixels of the plates. I try to use the boundary tracker plugin, but I am not sure whether it can be used in the python plugin.
What's more, the changed energy is $\bigtriangleup E=\frac{1}{2}k\left(z_{n+1}-z_0\right)^2-\frac{1}{2}k\left(z_n-z_0\right)^2=k\left(\frac{z_{n+1}+z_n}{2}-z_0\right)\left(z_{n+1}-z_n\right)$△E=12 k(zn+1−z0)2−12 k(zn−z0)2=k(zn+1+zn2 −z0)(zn+1−zn) . It seems that the changed energy is related to the vertical position before and after the pixel flip. How to realize it ?
I have a try and the outcome seems not positive, the imperfect model is attached.
Thank you!
Yuan
File attached: version_finale.pdf (6.24 MB)
File attached: compressionCell.rar (10.01 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\QQ截图20180115161521.png
.\CC3D_allanswered_linked_files\compressionCell.rar
.\CC3D_allanswered_linked_files\version_finale.pdf
id: loaal | creation_date: Jan. 16, 2018, 1:59 p.m. | author: James Sluka | type: Answer |
parent: zpjzb | lastedit_date: Jan. 16, 2018, 1:59 p.m. | lastedit_user: James Sluka |
content:
In the figure (labeled 5.7) it doesn't appear that the plates are deformed, only the cell deforms. Do you really want the plates to deform or just the cell?
Looking at your CC3D, there are a couple things if you want the plates to be deformable;
1. You need to define the plates as cells with target volumes and probably target surfaces.
2. When you move the plates (or enlarge the plates) you need to run enough MCS to let the system relax between movements.
If you really want deformable plates you might be able to implement a finite element mesh in CC3D for the plates. The plates would be a set of small cells coupled by springs to their neighbors using focal point plasticity links.
id: reoom | creation_date: Jan. 16, 2018, 11:51 p.m. | author: Yuan | type: Comment |
parent: loaal | lastedit_date: Jan. 16, 2018, 11:51 p.m. | lastedit_user: Yuan |
content:
Actually,in the figure the deformation is small, but I think it's okay to neglect the deformation of plates since they are much stiffer than cells.
My question is, are there other methods to move the plates as rigid bodies?
id: bepvz | creation_date: Jan. 18, 2018, 4:33 p.m. | author: James Sluka | type: Comment |
parent: reoom | lastedit_date: Jan. 18, 2018, 4:35 p.m. | lastedit_user: James Sluka |
content:
You can define the plates as fixed cells then add a row of pixels to those fixed cells in python, then relax the system for some number of MCS, then add another row of pixels, ...
In twedit++ use the shortcut at;
CC3D Python -- Visit -- All Lattice Pixels
for how to access all the lattices pixels
You can assign a particular pixel to a cell ("cellA") with;
pt.x=4; pt.y=6; pt.z=0
self.cellField.set(pt,cellA)
or
self.cellField.set((x,y,z),cellA)
The pixels might have been medium or your cell being squashed. That is why you'll need to run some number of MCS to relax things once you've enlarged the wall.
id: avprg | creation_date: Jan. 16, 2018, 3:41 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Jan. 19, 2018, 4:15 a.m. | lastedit_user: Yuan |
content:
Dear all,
In a CPM simulation of Drosophila retina cells, the authors apply a periodic boundary condition for hexagons. As shown below, the cells marked with the same symbol are treated as part of the same cell. Can I realize this using CC3D? Thank you!
Best,
Yuan
attachments(redirected):
.\CC3D_allanswered_linked_files\QQ截图20180116163449.png
id: qvljn | creation_date: Jan. 18, 2018, 4:44 p.m. | author: James Sluka | type: Answer |
parent: avprg | lastedit_date: Jan. 18, 2018, 4:44 p.m. | lastedit_user: James Sluka |
content:
I believe CC3D will only do periodic boundaries on a rectangular bounding box.
id: jraol | creation_date: Jan. 19, 2018, 4:15 a.m. | author: Yuan | type: Comment |
parent: qvljn | lastedit_date: Jan. 19, 2018, 4:15 a.m. | lastedit_user: Yuan |
content:
So, is it convenient to make changes in the source code or do I have to program by myself?
id: xnjjg | creation_date: Jan. 16, 2018, 10:12 p.m. | author: Yuan | type: Question |
parent: | lastedit_date: Jan. 24, 2018, 12:25 a.m. | lastedit_user: Maciek Swat |
content:
Dear all,
I meet some puzzles on some concepts in different papers.
1. the "source"(expanding) cell and "destination" (being overwritten) cell in CPM described in the reference manual and the pixel-copy-source and pixel-copy-destination pixel.
Are the positions of source and destination opposite for cells and pixels? That's to say, the pixel-copy-source pixel belongs to the "destination"(old) cell and the pixel-copy-destination pixel belongs to the "source"(new) cell? For pixels, do the "source" and "destination" in the manual have the same meaning of the "source" and "target" in the following color picture from other paper?
Thank you~
Yuan
attachments(redirected):
.\CC3D_allanswered_linked_files\图片1.png
.\CC3D_allanswered_linked_files\QQ截图20180117105653.png
.\CC3D_allanswered_linked_files\QQ截图20180117105623.png
.\CC3D_allanswered_linked_files\QQ截图20180117105623.png
.\CC3D_allanswered_linked_files\QQ截图20180117111049.png
id: ggmzb | creation_date: Jan. 23, 2018, 9:22 p.m. | author: Maciek Swat | type: Answer |
parent: xnjjg | lastedit_date: Jan. 23, 2018, 9:22 p.m. | lastedit_user: Maciek Swat |
content:
Actually this is the correct way of associating source destination old and new:
the pixel-copy-source pixel belongs to the "source"(new) cell and the pixel-copy-destination pixel belongs to the "destination"(old) cell?
Q: For pixels, do the "source" and "destination" in the manual have the same meaning of the "source" and "target" in the following color picture from other paper?
A: It appears that the answer is no. To me source is the pixel of that belongs to a cell (new cell) that will try to overwrite destination (old cell) . This is how things are coded in CC3D
Does this make sense?
id: klbaj | creation_date: Jan. 23, 2018, 11:36 p.m. | author: Yuan | type: Comment |
parent: ggmzb | lastedit_date: Jan. 23, 2018, 11:52 p.m. | lastedit_user: Yuan |
content:
Yeah, I see. There are some differences though both of them are CPM models. Besides, is there a manual explaining the implementation of the CC3D code?
id: avbpk | creation_date: Jan. 24, 2018, 12:25 a.m. | author: Maciek Swat | type: Answer |
parent: xnjjg | lastedit_date: Jan. 24, 2018, 12:25 a.m. | lastedit_user: Maciek Swat |
content:
Yes, it is for older version 3.4.1, however. Still the core concepts are there and architecture of plugins and steppables has not changed much - in particular w.r.t what is new(source ) cell and what is old(destination) cell
http://www.compucell3d.org/BinDoc/cc3d_binaries/Manuals/Developers_Documentation_v3.4.1.pdf
Take a look at it
id: wljbo | creation_date: Jan. 18, 2018, 3:22 p.m. | author: Mahua Roy | type: Question |
parent: | lastedit_date: Jan. 18, 2018, 5:17 p.m. | lastedit_user: Mahua Roy |
content:
I would like to run parameter scan from parameters listed in the .py file of the Main Python Script. However, I am unable to open the editor when I click on the parameters to be changed. I guess then I will have to input it manually in the xml file. I would highly appreciate if I can avail a template for the same.
id: eqnaq | creation_date: Jan. 18, 2018, 4:22 p.m. | author: James Sluka | type: Answer |
parent: wljbo | lastedit_date: Jan. 18, 2018, 4:22 p.m. | lastedit_user: James Sluka |
content:
Can you move the parameters into your steppables python file instead of your main python file? The parameter scan is, I believe, specific to regular python files and to the CC3D XML file.
See also: http://pythonscriptingmanual.readthedocs.io/en/latest/parameter_scans.html
id: loaxk | creation_date: Jan. 18, 2018, 4:24 p.m. | author: Mahua Roy | type: Comment |
parent: eqnaq | lastedit_date: Jan. 18, 2018, 4:24 p.m. | lastedit_user: Mahua Roy |
content:
Do I have to make them global as well as mentioned here?
from PySteppables import *
import CompuCell
import sys
MYVAR = 10
MYVAR1 = 'new str'
class CellSortingSteppable(SteppableBasePy):
def __init__(self, _simulator, _frequency=1):
SteppableBasePy.__init__(self, _simulator, _frequency)
def step(self, mcs):
global MYVAR
print 'MYVAR=', MYVAR
for cell in self.cellList:
if cell.type == self.DARK:
cell.lambdaVecX = -0.5
id: xnjqe | creation_date: Jan. 18, 2018, 4:51 p.m. | author: James Sluka | type: Answer |
parent: wljbo | lastedit_date: Jan. 18, 2018, 4:51 p.m. | lastedit_user: James Sluka |
content:
I believe they need to be in the top level namespace (hence "global"). In the little demo snippet the "global MYVAR" line isn't needed if the CellSortingSteppable class is only reading, and not writing, the variable. All of your classes will have direct access to any variable defined outside the classes.
You can first try it without making the variables global (e.g., a variable in a class), it might work.
id: vnglb | creation_date: Jan. 18, 2018, 7:22 p.m. | author: Mahua Roy | type: Question |
parent: | lastedit_date: Jan. 19, 2018, 1:59 p.m. | lastedit_user: James Sluka |
content:
I am confused about what is the order in the which the parameters are chosen from the list of parameter scan. Are all parameters varied at the same time randomly or is there a sequence for the variation. I have 8 parameters to be varied and I chose 5 values for each. If I am thinking right, I should get 0 , 1 , 2, 3 ,4 and 5 directories in the output folder. However, how would I be able to know the results correspond to which values of parameters ?
id: qvlrn | creation_date: Jan. 19, 2018, 1:59 p.m. | author: James Sluka | type: Answer |
parent: vnglb | lastedit_date: Jan. 19, 2018, 1:59 p.m. | lastedit_user: James Sluka |
content:
The parameter scan task exhaustively enumerates all possible combination of your parameters. 8 parameters with 5 values each is equivalent to an 8-digit base 5 number so there are 5^8=390,625 simulations. If it takes 10 minutes per simulation, then it will take 2,712 days to do them all. As you can see, parameter scanning can rapidly spin up into an intractable number of simulations.
The order of simulation is the same as outlined in the scan xml file. If you have 3 parameters (A,B,C) and are doing 2 values (1,2) each, the sequence (top to bottom in the xml file) will be;
A1B1C1
A2B1C1
A1B2C1
A2B2C1
A1B1C2
A2B1C2
A1B2C2
A2B2C2
And there are 2^3=8 total simulations.
CC3D doesn’t do anything in particular to help you tract the results. All the output files are created, and each set is in its own numbered directory. You can examine each of the directories and see what values were used and what the results are but that isn’t very easy.
A better approach is to add code to your model to log all the simulation results into a single output file. You would log the parameters used for a particular run along with one or more results. Can you define a few numeric metrics for a simulation? Perhaps the number of cells at the end of the run, or the number of cells that died during the run. Or, if you are fitting experimental data, a residual error or chi-squared type metric describing how well the particular run reproduced the experimental data. To actually log that data, and preferable to have all the simulation log into the same file, you can add code to a “finish” block of one of your steppables to write the file at the end of the run. Below is sample code to give you an idea how to do it.
def finish(self): # part of one of your python steppables
# Finish Function gets called after the last MCS
#
# Write a small summary of parameter scanning to a file.
# Since we want all the simulaltions writing to the same file we
# need it in an obvious and unambigous place. Here we assume we can just write
# to the Windows’ root directory of c:\
# Buld up a tab-delimited stirng with the scan paramters actually used in this run plus
# some measures of the simulation’s results
# myParam1,myParam2, ... are the variables being scanned and are probably global
# myOutput are the result of some calculation, the number of cells, whatever you want to log
outLine = str(myParam1)+"\t"+str(myParam2)+"\t"
outLine += str(myParam3)+"\t"+str(myParam4)+"\t"
outLine += str(myOutput1)+"\t"+str(myOutput1) # add as many items as you need
outline += "\n" # need a trailing line break!
#open a file for append, write the string and close the file
logfile = open(“C:\\ParmaterScan_log”,'a+') # the ‘a+’ means create if it doesn’t exist,
logfile.write(outLine) # append to it otherwise
logfile.close()
id: wlaln | creation_date: Jan. 21, 2018, 12:08 p.m. | author: Tarqwin | type: Question |
parent: | lastedit_date: Feb. 22, 2018, 3:26 p.m. | lastedit_user: Kim Kanigel Winner |
content:
I was wondering if there is any way to create a linear gradient for chemotaxis.
So far I have tried using a second cell type to secrete a chemoattractant and I managed to make the edges of the window secrete by giving the boundary conditions in the diffusion solver steppable code a value.
But this produces a gradient which is steeper at the sides than in the middle
.
Does anyone know a way to make the gradient linear?
attachments(redirected):
.\CC3D_allanswered_linked_files\Gradient.png
id: klbgm | creation_date: Jan. 21, 2018, 2:05 p.m. | author: Kim Kanigel Winner | type: Comment |
parent: wlaln | lastedit_date: Jan. 21, 2018, 2:06 p.m. | lastedit_user: Kim Kanigel Winner |
content:
Hi Tarqwin! You should be able to do this by making the boundary conditions not constant, but a zero derivative (zero change at each point along the boundary, so each pixel-length of boundary will stay at the same value as the pixel next to it). The code below is the chunk for a complete field inside of your diffusion solver of choice (I am using DiffusionSolverFE). The constant boundaries portion is commented out. I assume you will not need the z-dimension boundaries, either....
Hope this works for you!
<DiffusionField Name='Chemical'>
<DoNotScaleSecretion/>
<DiffusionData>
<GlobalDiffusionConstant>1.0</GlobalDiffusionConstant>
<GlobalDecayConstant>0</GlobalDecayConstant>
</DiffusionData>
<SecretionData>
<ConstantConcentration Type="Cell">0.0</ConstantConcentration>
</SecretionData>
<BoundaryConditions>
<!-- CONSTANT BOUNDARIES -->
<!-- <Plane Axis="X"> -->
<!-- <ConstantValue PlanePosition="Min" Value="0"/> -->
<!-- <ConstantValue PlanePosition="Max" Value="0"/> -->
<!-- </Plane> -->
<!-- <Plane Axis="Y"> -->
<!-- <ConstantValue PlanePosition="Min" Value="0"/> -->
<!-- <ConstantValue PlanePosition="Max" Value="0"/> -->
<!-- </Plane> -->
<!-- <Plane Axis="Z"> -->
<!-- <ConstantValue PlanePosition="Min" Value="0"/> -->
<!-- <ConstantValue PlanePosition="Max" Value="0"/> -->
<!-- </Plane> -->
<!-- <Plane Axis="X"> ></Plane> <Plane Axis="Y"><Periodic/> </Plane> -->
<!-- CONSTANT DERIVATIVE BOUNDARIES -->
<Plane Axis="X">
<ConstantDerivative PlanePosition="Min" Value="0"/>
<ConstantDerivative PlanePosition="Max" Value="0"/>
</Plane>
<Plane Axis="Y">
<ConstantDerivative PlanePosition="Min" Value="0"/>
<ConstantDerivative PlanePosition="Max" Value="0"/>
</Plane>
<Plane Axis="Z">
<ConstantDerivative PlanePosition="Min" Value="0"/>
<ConstantDerivative PlanePosition="Max" Value="0"/>
</Plane>
</BoundaryConditions>
</DiffusionField>
id: loqjb | creation_date: Jan. 22, 2018, 12:29 p.m. | author: James Glazier | type: Answer |
parent: wlaln | lastedit_date: Jan. 22, 2018, 12:29 p.m. | lastedit_user: James Glazier |
content:
Do you want a static chemical gradient or a changing one? If you want a static gradient, you can set the initial condition to be, e.g. x* constant, and then set the diffusion constant and decay constants to zero.
e.g.
<Steppable Type="DiffusionSolverFE">
<DiffusionField Name="Oxygen">
<DiffusionData>
<FieldName>Oxygen</FieldName>
<DiffusionConstant>0.0</DiffusionConstant>
<DecayConstant>0.0</DecayConstant>
<InitialConcentrationExpression>x*CONSTANT</InitialConcentrationExpression>
</DiffusionData>
</DiffusionField>
</Steppable>
If you don't want the gradient to be static, because you will do something else to it later, you can use fixed boundary conditions along the X=0 and x=x_max edges and periodic boundaries along the other sides.
<Steppable Type="DiffusionSolverFE">
<DiffusionField Name="Oxygen">
<DiffusionData>
<FieldName>Oxygen</FieldName>
<DiffusionConstant>5.0</DiffusionConstant>
<DecayConstant>0.001</DecayConstant>
<InitialConcentrationExpression>x*10/x_dim</InitialConcentrationExpression>
</DiffusionData>
<BoundaryConditions>
<Plane Axis="Y">
<ConstantValue PlanePosition="Min" Value="0.0"/>
<ConstantValue PlanePosition="Max" Value="10.0"/>
</Plane>
<Plane Axis="X">
<Periodic/>
</Plane>
</BoundaryConditions>
</DiffusionField>
</Steppable>
I don't have CC3D running on this computer, so check that I haven;'t reversed X and Y!
id: renor | creation_date: Jan. 23, 2018, 9:17 p.m. | author: Maciek Swat | type: Comment |
parent: loqjb | lastedit_date: Jan. 23, 2018, 9:17 p.m. | lastedit_user: Maciek Swat |
content:
This is the way to do it. You may also set concentration directly in Python but the solution that James presented should do the trick
id: qvjpe | creation_date: Feb. 22, 2018, 2:03 p.m. | author: Scott H | type: Comment |
parent: renor | lastedit_date: Feb. 22, 2018, 2:03 p.m. | lastedit_user: Scott H |
content:
Can you specify a gradient in specific regions on a lattice? For example, paper-discs with antibiotic on a petri dish? I imagine it would involve specifying boundary conditions in specific regions.
id: xnqjb | creation_date: Feb. 22, 2018, 2:32 p.m. | author: Kim Kanigel Winner | type: Answer |
parent: wlaln | lastedit_date: Feb. 22, 2018, 3:13 p.m. | lastedit_user: Kim Kanigel Winner |
content:
I would add it as a new cell type and then add a diffusing chemical to that cell type. You would initialize your "disc" cell, perhaps with BlobInitializer. Then, assuming reduction in the available antibiotic diffusing from the disc is negligible compared to the length of the simulation, you would set a constant concentration of "antibiotic" for your "disc" cell type in your diffusion solver above. No need to change boundary conditions from what James said above (sorry I missed putting in the constant boundary for your previous question).
id: loxaz | creation_date: Feb. 22, 2018, 3:13 p.m. | author: Scott H | type: Comment |
parent: xnqjb | lastedit_date: Feb. 22, 2018, 3:13 p.m. | lastedit_user: Scott H |
content:
Ah ok, that makes sense. I will try that. I have cell layers, so that will work if I put the source underneath at z=0 and put the cell layers at z>1, for a 2D model at least.
id: xnqab | creation_date: Feb. 22, 2018, 3:25 p.m. | author: Kim Kanigel Winner | type: Comment |
parent: loxaz | lastedit_date: Feb. 22, 2018, 3:26 p.m. | lastedit_user: Kim Kanigel Winner |
content:
yes, that might work if you embed the source into the z=0 boundary, using the boundary definitions. I'm not sure if you can put cells (in this case the disc) into the boundary level; I also have never tried defining a small area of a boundary as constant -- you might also have to define the rest of the plane as 0, or something like that. If you don't want to play with defining constant conditions for all of the z boundary, and instead add the disc cell type, I think it will take up that space in your 2-D domain, and cells will not crawl on top.... however, if your disc is small, I doubt that it would change the result of your simulation (and it would be easier to implement, most likely!).
id: mbxlx | creation_date: Jan. 26, 2018, 9:20 p.m. | author: Rolando Ruiz | type: Question |
parent: | lastedit_date: Jan. 30, 2018, 4:39 p.m. | lastedit_user: Rolando Ruiz |
content:
System: macOS Sierra v 10.12.6
CC3D version: 3.7.6
I have a simulation where I have two cell types: dividing and non dividing.
<Plugin Name="CellType">
<CellType TypeId="0" TypeName="Medium"/>
<CellType TypeId="1" TypeName="dividing"/>
<CellType TypeId="2" TypeName="nondividing"/>
</Plugin>
I am also using the Growth and Mitosis steppables. The simulation starts off with a dividing cell that will grow to a certain size and then have a certain probability of the daughter cells remaining as dividing cells or become non dividing cells. This will repeat for how ever many MCS I chose.
My goal is to try to determine how many times a cell divides before it becomes a nondividing cell. I thought about using the cell.dict like the manual suggested but I haven't had success. How can I get a dictionary (or a list or something similar) containing cell ids and the number of times it divided?
from PySteppables import *
import CompuCell
import sys
import random
import numpy as np
from PySteppablesExamples import MitosisSteppableBase
class ConstraintInitializerSteppable(SteppableBasePy):
def __init__(self,_simulator,_frequency=1):
SteppableBasePy.__init__(self,_simulator,_frequency)
def start(self):
cellcell = self.newCell(self.DIVIDING)
self.cellField[100:105, 100:105, 0] = cellcell
cellcell.targetVolume=36
cellcell.lambdaVolume=2.0
class GrowthSteppable(SteppableBasePy):
def __init__(self,_simulator,_frequency=1):
SteppableBasePy.__init__(self,_simulator,_frequency)
def step(self,mcs):
for cell in self.cellListByType(self.DIVIDING):
cell.targetVolume+=0.1
class MitosisSteppable(MitosisSteppableBase):
def __init__(self,_simulator,_frequency=1):
MitosisSteppableBase.__init__(self,_simulator, _frequency)
def step(self,mcs):
cells_to_divide=[]
for cell in self.cellList:
if cell.volume > 72:
cells_to_divide.append(cell)
for cell in cells_to_divide:
self.divideCellRandomOrientation(cell)
def updateAttributes(self):
roll_dice = random.random()
self.parentCell.targetVolume /= 2
self.cloneParent2Child()
for cell in self.cellList:
if roll_dice > 0.3 :
self.childCell.type = self.DIVIDING
self.parentCell.type = self.DIVIDING
else:
self.childCell.type = self.NONDIVIDING
self.parentCell.type = self.NONDIVIDING
id: avmvz | creation_date: Jan. 29, 2018, 12:34 p.m. | author: James Sluka | type: Answer |
parent: mbxlx | lastedit_date: Jan. 29, 2018, 12:34 p.m. | lastedit_user: James Sluka |
content:
As you suspected the dictionary is one way to do it. When you create a cell at the start of the simulation and every time the cell divides you can increment a counter in a dictionary associated with the cell. When you create the cell (the last line is the dictionary entry);
def start(self):
cellcell = self.newCell(self.DIVIDING)
self.cellField[100:105, 100:105, 0] = cellcell
cellcell.targetVolume=36
cellcell.lambdaVolume=2.0
cellcell.targetSurface=24
cellcell.lambdaSurface=2.0
cellcell.dict['age'] = 1 ### The "age" of the cell, increment every time the cell divides
def updateAttributes(self):
roll_dice = random.random()
self.parentCell.targetVolume /= 2
self.cloneParent2Child()
for cell in self.cellList:
if roll_dice > 0.3 :
self.childCell.type = self.DIVIDING
self.parentCell.type = self.DIVIDING
else:
self.childCell.type = self.NONDIVIDING
self.parentCell.type = self.NONDIVIDING
self.childCell.dict['age'] += 1 ### The "age" of the cell, increment everytime the cell divides
self.parentCell.dict['age'] += 1 ### The "age" of the cell, increment everytime the cell divides
if self.mcs % 100 == 0: ### only report every 100 mcs
type1=0; type2=0 ###
print "\nmcs=",mcs ###
for cell in self.cellList: ###
if cell.type == 1: ###
type1 +=1 ###
if cell.type == 2: ###
type2 +=1 ###
print "cell id,type,age",cell.id,cell.type,cell.dict['age'] ###
print "Type1=",type1," Type2=",type2,"\n" ###
attachments(redirected):
.\CC3D_allanswered_linked_files\divide_nodivide_track.png
.\CC3D_allanswered_linked_files\divide_nondivide_track.zip
id: klkel | creation_date: Jan. 30, 2018, 4:39 p.m. | author: Rolando Ruiz | type: Comment |
parent: avmvz | lastedit_date: Jan. 30, 2018, 4:39 p.m. | lastedit_user: Rolando Ruiz |
content:
Thank you! This did the trick.
id: beqrx | creation_date: Jan. 27, 2018, 10:29 a.m. | author: Thorsten Mueller | type: Question |
parent: | lastedit_date: Jan. 29, 2018, 12:50 p.m. | lastedit_user: James Sluka |
content:
Hi,
I wonder if it is possible not only to draw 3D shapes but also keep them during growth and mitosis events?
Does lay around every cell a rectangular box or is it possible to select a different shape for a 3D simulation?
Thank you,
Thorsten
id: qvarr | creation_date: Jan. 27, 2018, 11:18 a.m. | author: Maciek Swat | type: Answer |
parent: beqrx | lastedit_date: Jan. 27, 2018, 11:18 a.m. | lastedit_user: Maciek Swat |
content:
your best bet if you want to have control over cell shape is to use compartmentalized cells.
See
http://www.compucell3d.org/BinDoc/cc3d_binaries/Manuals/CompuCell3D_Reference_Manual_v.3.7.4.pdf
page 27
and check chapter of length constraint plugin that follows.
As far as mitosis this should help you get started:
http://pythonscriptingmanual.readthedocs.io/en/latest/dividing_clusters.html
id: xnapm | creation_date: Jan. 27, 2018, 11:24 a.m. | author: Maciek Swat | type: Comment |
parent: qvarr | lastedit_date: Jan. 27, 2018, 11:24 a.m. | lastedit_user: Maciek Swat |
content:
To add more to my previous answer. The shape of a single cell could be controlled by choosing properly contact energy (NeighborOrder parameter in the Contact plugins plays actually and important role so make sure it is not 1 but bigger to avoid rectangular lattice-related artifacts). Additionally you would control contact energy coefficients and also you may include surface and volume constraints. You may also play with Length constraints. I would suggest that when doing 3D simulation, to start with a single cell and get the parameters right first. Then slowly keep adding components to your simulation and see how things behave. For example you could study what happens at the mitosis stage starting with just one cell. Also to mak simulation run faster start with smaller lattice and increase the size as you add more components. this way you will not waste time by probing the lattice regions that have no cells. Let me know if this answers your questions
id: omgpw | creation_date: Jan. 28, 2018, 8:29 a.m. | author: Thorsten Mueller | type: Comment |
parent: xnapm | lastedit_date: Jan. 28, 2018, 8:29 a.m. | lastedit_user: Thorsten Mueller |
content:
Thanks for the extensive answer. It definitely helped.
I'm still wondering how the volume and surface of each single cell is calculated?
Is it the calculation for a cuboid, since in 3D we have voxels to display, or is more deeply and than the amount of lattices sites within each cell?
id: nqeqw | creation_date: Jan. 29, 2018, 12:46 p.m. | author: James Sluka | type: Comment |
parent: omgpw | lastedit_date: Jan. 29, 2018, 12:50 p.m. | lastedit_user: James Sluka |
content:
In a 2D CC3D model the "cell surface" is actually a length and the "cell volume" is actually an area. The units are pixels and pixels^2, respectively.
In a 3D CC3D model the "cell surface" is a true area and the "cell volume" is a true volume. The units are pixels^2 and pixels^3, respectively.
Area and volume, in both 2D and 3D, are always integers.
In both 2D and 3D the measurement is over the actual set of pixels (or voxels) and no smoothing or interpolation of the surface is done. As a result, the surfaces tend to be larger than they would be on a smooth surface since the lattice based surface "staircases".
id: vnkmr | creation_date: Jan. 31, 2018, 2:44 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Jan. 31, 2018, 12:20 p.m. | lastedit_user: James Sluka |
content:
Dear all,
I want to show the simulation time (MCSs) on the screen. How to realize this?
Thank you~
Yuan
id: rexjg | creation_date: Jan. 31, 2018, 12:20 p.m. | author: James Sluka | type: Answer |
parent: vnkmr | lastedit_date: Jan. 31, 2018, 12:20 p.m. | lastedit_user: James Sluka |
content:
The MC Step is already shown in the bottom left corner of the CC3D window. Do you want the MC step displayed in the sub-window that has the cell display? As far as I know there isn't a way to do that. If you want to create an animation of a CC3D simulation (from the saved screen shots from CC3D) you can use ImageMagick to add the MC step to the images as they are added to the animation.
id: mbwjp | creation_date: Jan. 31, 2018, 9:11 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Jan. 31, 2018, 11:15 p.m. | lastedit_user: Maciek Swat |
content:
Hi, everyone
I wonder if I can simulate the inner force of a cell, for example, the movement of the spindle body elongates the cell in a certain direction, i.e. the cell grows along a certain direction.
Thank you.
Yuan
id: mbwnn | creation_date: Jan. 31, 2018, 11:15 p.m. | author: Maciek Swat | type: Answer |
parent: mbwjp | lastedit_date: Jan. 31, 2018, 11:15 p.m. | lastedit_user: Maciek Swat |
content:
I would say that anything that requires more control of the subcellular structures, mechanisms etc should be handled via compartmentalized cells.
Having said this, you could explore LengthConstraint plugin that does precisely what you want - elongates cells. One thing to keep in mind is to make sure you include ConnectivityGlobal plugin. This plugin has been updated in 3.7.7 to run much faster than previous version (especially in 3D) so make sure you are using the latest CC3D if you want to go down that route.
I would check elongation demos in the Demo folder of CC3D install and also there is a contributed module called OrientedGrowth (the corresponding demo is OrientedGrowthDemo) so check them out
id: wlmwj | creation_date: Jan. 31, 2018, 9:15 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: Feb. 23, 2018, 10:17 p.m. | lastedit_user: Maciek Swat |
content:
Dear all,
I am trying to simulate the process of cell vibration, i.e. the cell's shape size changes in a certain period. What should I do? Thank you!
id: bevxv | creation_date: Feb. 23, 2018, 10:17 p.m. | author: Maciek Swat | type: Answer |
parent: wlmwj | lastedit_date: Feb. 23, 2018, 10:17 p.m. | lastedit_user: Maciek Swat |
content:
You can keep changing and sorface and volume constraints from the pythn steppable . say at mcs=0
targetVolume=25
at mcs10
targetVolume=26
at mcs20
targetVolume=27
...
at mcs 200
targetVolume=20
...
Not sure if this is what you are after but this gives you an idea how to simulate what you want
id: klkrl | creation_date: Jan. 31, 2018, 4:03 p.m. | author: Scott H | type: Question |
parent: | lastedit_date: Jan. 31, 2018, 4:03 p.m. | lastedit_user: Scott H |
content:
Week 3- Picking up from last week at line 70 of PKD.py
Paper: Virtual-Tissue Computer Simulations Define the Roles of Cell Adhesion and Proliferation in the Onset of Kidney Cystic Disease
Code- http://www.compucell3d.org/Models
Discussion on Code/Basics-Focusing on Tubule code
The code from the paper is split into 3 folders: IsoCyst, Measure, and tubule.
Tubule- creates a kidney tubule with domains and sub cellular partsPKD.py- This imports models and is where you change and input parameters that feed to the SteppablesContinuing from Line 42
#CELL COLORS
cellColor=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"PlayerSettings"})
cellColor.ElementCC3D("Cell",{"Type":0,"Color":"#000000"}) # Black -> Medium
cellColor.ElementCC3D("Cell",{"Type":1,"Color":"#FFFF99"}) # Light yellow -> Cyto
cellColor.ElementCC3D("Cell",{"Type":2,"Color":"#009900"}) # Dark Green -> Apical
cellColor.ElementCC3D("Cell",{"Type":3,"Color":"#990000"}) # Dark red -> Basal
cellColor.ElementCC3D("Cell",{"Type":4,"Color":"#FF0000"}) # Red -> Lateral1
cellColor.ElementCC3D("Cell",{"Type":5,"Color":"#00E6E6"}) # Light blue -> Lumen
cellColor.ElementCC3D("Cell",{"Type":6,"Color":"#0000FF"}) # Blue -> Lateral2
cellColor.ElementCC3D("TypesInvisibleIn3D",{"Types":"0,1,4,5"}) # Don't show Medium,Cyto, Lateral1 and Lumen
cellColor.ElementCC3D("VisualControl",{"ScreenshotFrequency":250,"ScreenUpdateFrequency":10})
cellColor.ElementCC3D("TypesInvisibleIn3D",{"Types":"0,1,4,5"}) # Don't show Medium,Cyto, Lateral1 and Lumen
cellColor.ElementCC3D("VisualControl",{"ScreenshotFrequency":250,"ScreenUpdateFrequency":10})
contact=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"Contact"})
contact.ElementCC3D("Energy",{"Type1":"Medium","Type2":"Medium"},0)
contact.ElementCC3D("Energy",{"Type1":"Medium","Type2":"Cyto"},60)
contact.ElementCC3D("Energy",{"Type1":"Medium","Type2":"Apical"},60)
contact.ElementCC3D("Energy",{"Type1":"Medium","Type2":"Basal"},3)
contact.ElementCC3D("Energy",{"Type1":"Medium","Type2":"Lateral"},8)
contact.ElementCC3D("Energy",{"Type1":"Medium","Type2":"Lateral2"},8)
#Cyto
contact.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Cyto"},60)
contact.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Apical"},60)
contact.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Basal"},60)
contact.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Lateral"},60)
contact.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Lateral2"},60)
#Apical
contact.ElementCC3D("Energy",{"Type1":"Apical","Type2":"Apical"},15)
contact.ElementCC3D("Energy",{"Type1":"Apical","Type2":"Basal"},20)
contact.ElementCC3D("Energy",{"Type1":"Apical","Type2":"Lateral"},20)
contact.ElementCC3D("Energy",{"Type1":"Apical","Type2":"Lateral2"},20)
#Basal
contact.ElementCC3D("Energy",{"Type1":"Basal","Type2":"Basal"},20)
contact.ElementCC3D("Energy",{"Type1":"Basal","Type2":"Lateral"},20)
contact.ElementCC3D("Energy",{"Type1":"Basal","Type2":"Lateral2"},20)
#Lateral(2)
contact.ElementCC3D("Energy",{"Type1":"Lateral","Type2":"Lateral"},4)
contact.ElementCC3D("Energy",{"Type1":"Lateral2","Type2":"Lateral2"},4)
contact.ElementCC3D("Energy",{"Type1":"Lateral2","Type2":"Lateral"},4)
#Lumen
contact.ElementCC3D("Energy",{"Type1":"Lumen","Type2":"Lumen"},0)
contact.ElementCC3D("Energy",{"Type1":"Lumen","Type2":"Medium"},60)
contact.ElementCC3D("Energy",{"Type1":"Lumen","Type2":"Cyto"},60)
contact.ElementCC3D("Energy",{"Type1":"Lumen","Type2":"Apical"},15)
contact.ElementCC3D("Energy",{"Type1":"Lumen","Type2":"Basal"},20)
contact.ElementCC3D("Energy",{"Type1":"Lumen","Type2":"Lateral"},20)
contact.ElementCC3D("Energy",{"Type1":"Lumen","Type2":"Lateral2"},20)
#Neighbor order
contact.ElementCC3D("NeighborOrder",{},CNOrder)
INTERNAL CONTACT ENERGIES:
cInternal=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"ContactInternal"})
#Cyto
cInternal.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Apical"},0)
cInternal.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Basal"},0)
cInternal.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Lateral"},0)
cInternal.ElementCC3D("Energy",{"Type1":"Cyto","Type2":"Lateral2"},0)
#Apical
cInternal.ElementCC3D("Energy",{"Type1":"Apical","Type2":"Basal"},2)
cInternal.ElementCC3D("Energy",{"Type1":"Apical","Type2":"Lateral"},0)
cInternal.ElementCC3D("Energy",{"Type1":"Apical","Type2":"Lateral2"},0)
#Basal
cInternal.ElementCC3D("Energy",{"Type1":"Basal","Type2":"Lateral"},0)
cInternal.ElementCC3D("Energy",{"Type1":"Basal","Type2":"Lateral2"},0)
#Lateral(2)
cInternal.ElementCC3D("Energy",{"Type1":"Lateral","Type2":"Lateral"},0)
cInternal.ElementCC3D("Energy",{"Type1":"Lateral2","Type2":"Lateral2"},0)
#Neighbor order
cInternal.ElementCC3D("NeighborOrder",{},CINOrder)
pTracker=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"PixelTracker"})
boundaryPTracker=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"BoundaryPixelTracker"})
vlFlex=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"VolumeLocalFlex"})
coMass=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"CenterOfMass"})
neighborTracker=CompuCell3DElement.ElementCC3D("Plugin",{"Name":"NeighborTracker"})
CompuCellSetup.setSimulationXMLDescription(CompuCell3DElement)
import CompuCellSetup
import CompuCell
sim,simThread = CompuCellSetup.getCoreSimulationObjects()
configureSimulation(sim,Lx,Ly,Lz,Temp,Time,NOrder,CNOrder,CINOrder,debugFreq)
id: avmnv | creation_date: Feb. 6, 2018, 8:29 a.m. | author: Thorsten Mueller | type: Question |
parent: | lastedit_date: Feb. 6, 2018, 3:41 p.m. | lastedit_user: James Sluka |
content:
Hi,
are there parameters which influence the shape of a single cell in a 3D lattice beside the target volume/surface and the lambda multiplier?
Since the real volume of a sphere is almost identical with the surface out of voxels and the surface of the voxel sphere is by a factor 1.5 larger than the realistic surface, it is possible to calculate the realistic volume and surface and multiply this surface by 1.5 for the growth of a cell. With the algorithm to draw the cell it is possible to read out the volume and surface values out of CC3D. Then the factor between the real sphere surface and the voxel sphere surface can be calculated.
The algorithm to draw the cell consider the corner length of a voxel as steplength. With this approach it is checked if the center of the voxel is inside the sphere or not.
for xr in xrange(xStart, xEnd):
for yr in xrange(yStart, yEnd):
for zr in xrange(zStart, zEnd):
rd = sqrt(
((xr+(((xr+stepLength) - xr)/2.)) - x0) ** 2 +
((yr+(((yr+stepLength) - yr)/2.)) - y0) ** 2 +
((zr+(((zr+stepLength) - zr)/2.)) - z0) ** 2)
if (rd <= radiusPx):
steppable.cellField[xr, yr, zr] = cell
During the simulation the cell looses the desired structure and become a cube again. Even the volume and surface values as well as the target volume and target surface values match the values of the drawn voxel spheres
Since this is not a perfect smooth cube and in other simulations there were more edges and peaks, I can imagine that this cell meets also the volume and surface values.
Are there any techniques to keep the shape of the sphere during the simulation?
Is it maybe not possible because for a given volume and surface there are infinite possible 3D objects?
Thank you,
Thorsten
attachments(redirected):
.\CC3D_allanswered_linked_files\CellDiameter10.png
.\CC3D_allanswered_linked_files\CellDiameter10-MCS500.png
id: xnwra | creation_date: Feb. 6, 2018, 3:39 p.m. | author: James Sluka | type: Answer |
parent: avmnv | lastedit_date: Feb. 6, 2018, 3:41 p.m. | lastedit_user: James Sluka |
content:
In addition to the volume and surface constraints the adhesion energies will also affect the sphericity of a cell. Is the system trying to not only maintain the cell's target volume and surface but also trying to avoid adhesion energy penalties? In general all of these will affect the sphericity of a cell;
id: avmxe | creation_date: Feb. 8, 2018, 5:50 a.m. | author: Abhishek Das | type: Question |
parent: | lastedit_date: Feb. 23, 2018, 10:14 p.m. | lastedit_user: Maciek Swat |
content:
Instead of a linear constant Gamma_S, I would like to have an expression of Gamma_S term.
For example, Gamma_S = Gamma_S1*(1-Gamma_S2*GammaS1)
Is it possible in CompuCell3D? if so how to do it?
id: loxzr | creation_date: Feb. 23, 2018, 10:14 p.m. | author: Maciek Swat | type: Answer |
parent: avmxe | lastedit_date: Feb. 23, 2018, 10:14 p.m. | lastedit_user: Maciek Swat |
content:
which plugin / CC3D module are you referring to? Could you post your simulation and tell us which parameter you want to modify via an arithmetic expression?
id: ggxpe | creation_date: Feb. 8, 2018, 2:23 p.m. | author: Mahua Roy | type: Question |
parent: | lastedit_date: June 18, 2018, 3:03 p.m. | lastedit_user: Mahua Roy |
content:
Is there a way to write a restart file so that the next simulation starts from the last time step. As for example the total MCS that I have to run is 24000. However, with the resource allocation, I can only run approximately 5000 steps continuously. How can I write a restart file so I can start from where I last ended the simulation. What needs to be changed in the number of steps ?
EDIT: How would I do it without the GUI just through the terminal? I was able to write restart file but am not sure how to specify to read from that particular directory when restarting the next stage of simulation. More specifically ,
./runScript.sh -i < input.cc3d> -o < Output directory > ...... < restart directory > ?
id: wlbza | creation_date: Feb. 23, 2018, 9:25 p.m. | author: Maciek Swat | type: Answer |
parent: ggxpe | lastedit_date: Feb. 23, 2018, 9:25 p.m. | lastedit_user: Maciek Swat |
content:
Have you tried following the manual?
http://pythonscriptingmanual.readthedocs.io/en/latest/restarting_simulations.html?highlight=restart
If you want to restart it make sure that you remove serialization line from the .cc3d file - you can do it as shown in the manual or simply edit .ccd file so that
<Simulation version="3.6.1">
<XMLScript Type="XMLScript">Simulation/cellsort_2D.xml</XMLScript>
<SerializeSimulation AllowMultipleRestartDirectories="False" FileFormat="text" OutputFrequency="100"/>
<RestartSimulation RestartDirectory="restart"/>
</Simulation>
<Simulation version="3.6.1">
<XMLScript Type="XMLScript">Simulation/cellsort_2D.xml</XMLScript>
<RestartSimulation RestartDirectory="restart"/>
</Simulation>
when you remove the serialization line.
attachments(redirected):
.\CC3D_allanswered_linked_files\restart_01600.zip
id: qvelo | creation_date: March 23, 2018, 11:06 a.m. | author: Mahua Roy | type: Comment |
parent: wlbza | lastedit_date: March 23, 2018, 11:06 a.m. | lastedit_user: Mahua Roy |
content:
Thank you for the detailed description.
id: kgpbg | creation_date: June 8, 2018, 7:07 p.m. | author: Mahua Roy | type: Answer |
parent: ggxpe | lastedit_date: June 8, 2018, 7:07 p.m. | lastedit_user: Mahua Roy |
content:
File attached: Run2.zip (68.93 KB)
There has been a constant error with the restart file being not found even though it is present there. I looked at the way the serializer is specified in the restart_01600 and it is the same in Run2. I am not sure why I am still getting the same error. Any help from your side would be very helpful.
Thanks and regards,
Mahua
attachments(redirected):
.\CC3D_allanswered_linked_files\Run2.zip
id: awrbj | creation_date: June 8, 2018, 11:18 p.m. | author: Maciek Swat | type: Answer |
parent: ggxpe | lastedit_date: June 8, 2018, 11:18 p.m. | lastedit_user: Maciek Swat |
content:
What error are you getting? Could you post it here?
Your restart folder is empty. But I also noticed that you are not using scipy in your simulation but still importing it. On my machine it caused problems so I commented out any references to scipy
id: awrmj | creation_date: June 9, 2018, 9:04 p.m. | author: Mahua Roy | type: Answer |
parent: ggxpe | lastedit_date: June 9, 2018, 9:04 p.m. | lastedit_user: Mahua Roy |
content:
I apologise for the empty file. Please find the attached restart file
File attached: restart_10000.zip (1.49 MB)
The error is attached here as well. It complains of the file not being there, when it is present
[Error: IOError: loadSBMLError Wrong constructed path: RoadRunnerPy could not find /Volumes/CompuCell/Pancreatic-cancer-CC3D/Tumor_growth_simulation2/Run1/Result_atpD_032/restart_10000/ in the filesystem
Traceback (most recent call last):
File: /Users/roym/Downloads/CC3D_3.7.6/pythonSetupScripts/CompuCellPythonSimulationNewPlayer.py
Line: 351 Col: 0 execfile(CompuCellSetup.simulationPaths.simulationPythonScriptName)
execfile(CompuCellSetup.simulationPaths.simulationPythonScriptName)
File: /Volumes/CompuCell/Pancreatic-cancer-CC3D/Tumor_growth_simulation2/Run1/Result_atpD_032/restart_10000/Simulation/TumorGrowth.py
Line: 83 Col: 0 CompuCellSetup.mainLoop(sim,simthread,steppableRegistry)
CompuCellSetup.mainLoop(sim,simthread,steppableRegistry)
File: /Users/roym/Downloads/CC3D_3.7.6/pythonSetupScripts/CompuCellSetup.py
Line: 1980 Col: 0 return mainLoopNewPlayer(sim, simthread, steppableRegistry, _screenUpdateFrequency)
return mainLoopNewPlayer(sim, simthread, steppableRegistry, _screenUpdateFrequency)
File: /Users/roym/Downloads/CC3D_3.7.6/pythonSetupScripts/CompuCellSetup.py
Line: 1595 Col: 0 restartManager.loadRestartFiles()
restartManager.loadRestartFiles()
File: /Users/roym/Downloads/CC3D_3.7.6/pythonSetupScripts/RestartManager.py
Line: 340 Col: 0 self.loadSBMLSolvers()
self.loadSBMLSolvers()
File: /Users/roym/Downloads/CC3D_3.7.6/pythonSetupScripts/RestartManager.py
Line: 644 Col: 0 sbmlSolver.loadSBML(_externalPath=self.sim.getBasePath()) # this call fully initializes SBML Solver by loading sbmlMode ( relative path stored in sbmlSolver.path and root dir is passed using self.sim.getBasePath())
sbmlSolver.loadSBML(_externalPath=self.sim.getBasePath()) # this call fully initializes SBML Solver by loading sbmlMode ( relative path stored in sbmlSolver.path and root dir is passed using self.sim.getBasePath())
File: /Users/roym/Downloads/CC3D_3.7.6/pythonSetupScripts/RoadRunnerPy.py
Line: 109 Col: 0 'loadSBMLError Wrong constructed path: RoadRunnerPy could not find ' + self.absPath + ' in the filesystem')
'loadSBMLError Wrong constructed path: RoadRunnerPy could not find ' + self.absPath + ' in the filesystem')]
attachments(redirected):
.\CC3D_allanswered_linked_files\restart_10000.zip
id: rrmxb | creation_date: June 10, 2018, noon | author: Maciek Swat | type: Answer |
parent: ggxpe | lastedit_date: June 10, 2018, noon | lastedit_user: Maciek Swat |
content:
I saw that too. and in this case it cannot find your sbml model mile (I believe in your case it might have xml extension). The serializer does not copy the sbml to the restart directory so you need to do it by hand. Simply place the sbml file in one of the restart folders you are attempting to run (in the same hierarchical location as in the original simulation i.e. inside Simulation subfolder)
Let me know if this works
id: gnqer | creation_date: June 10, 2018, 12:36 p.m. | author: Mahua Roy | type: Answer |
parent: ggxpe | lastedit_date: June 10, 2018, 12:36 p.m. | lastedit_user: Mahua Roy |
content:
I tried copying it all locations but still the error remains the same.
'loadSBMLError Wrong constructed path: RoadRunnerPy could not find ' + self.absPath + ' in the filesystem')
IOError: loadSBMLError Wrong constructed path: RoadRunnerPy could not find /Users/roym/Downloads/restart_10000/ in the filesystem
I never received the error during the initial simulation.
id: mqple | creation_date: June 13, 2018, 1:50 a.m. | author: Maciek Swat | type: Answer |
parent: ggxpe | lastedit_date: June 13, 2018, 1:50 a.m. | lastedit_user: Maciek Swat |
content:
so it looks like a bug. I will rerun some other simulations with SBML serializations and see what's going on. Essentially many cells that have SBML solver attached are missing the path to the sbml model. This is strange. Maybe those ar ethe new cells that got created . I will need to check that
id: wrqnq | creation_date: June 13, 2018, 1:51 a.m. | author: Maciek Swat | type: Answer |
parent: ggxpe | lastedit_date: June 13, 2018, 1:51 a.m. | lastedit_user: Maciek Swat |
content:
BTW is there any chance you could try the same with CC3D 3.7.7. I know we have fixed few bugs related to copying SBML solvers during Mitosis and I wonder if this is one of those bugs that we are seeing now
id: kgpxn | creation_date: June 13, 2018, 1:21 p.m. | author: Mahua Roy | type: Answer |
parent: ggxpe | lastedit_date: June 13, 2018, 1:21 p.m. | lastedit_user: Mahua Roy |
content:
Thanks so much for looking into it. I really appreciate your help. I tried with 3.7.7 version as you suggested. However, it seems to be the same error. I paste it below :
**********
File "/staging/mr2/mahuaroy/CC3D_3.7.7_RHEL/player5/CompuCellPythonSimulationCML.py", line 363, in <module>
execfile(CompuCellSetup.simulationPaths.simulationPythonScriptName)
File "/staging/mr2/mahuaroy/Tumor_growth_simulation2/test/restart_10000/Simulation/TumorGrowth.py", line 83, in <module>
CompuCellSetup.mainLoop(sim,simthread,steppableRegistry)
File "/staging/mr2/mahuaroy/CC3D_3.7.7_RHEL/pythonSetupScripts/CompuCellSetup.py", line 2072, in mainLoop
return mainLoopCML(sim, simthread, steppableRegistry, _screenUpdateFrequency)
File "/staging/mr2/mahuaroy/CC3D_3.7.7_RHEL/pythonSetupScripts/CompuCellSetup.py", line 1860, in mainLoopCML
restartManager.loadRestartFiles()
File "/staging/mr2/mahuaroy/CC3D_3.7.7_RHEL/pythonSetupScripts/RestartManager.py", line 340, in loadRestartFiles
self.loadSBMLSolvers()
File "/staging/mr2/mahuaroy/CC3D_3.7.7_RHEL/pythonSetupScripts/RestartManager.py", line 644, in loadSBMLSolvers
sbmlSolver.loadSBML(_externalPath=self.sim.getBasePath()) # this call fully initializes SBML Solver by loading sbmlMode ( relative path stored in sbmlSolver.path and root dir is passed using self.sim.getBasePath())
File "/staging/mr2/mahuaroy/CC3D_3.7.7_RHEL/pythonSetupScripts/RoadRunnerPy.py", line 109, in loadSBML
'loadSBMLError Wrong constructed path: RoadRunnerPy could not find ' + self.absPath + ' in the filesystem')
IOError: loadSBMLError Wrong constructed path: RoadRunnerPy could not find /staging/mr2/mahuaroy/Tumor_growth_simulation2/test/restart_10000/ in the filesystem
/staging/mr2/mahuaroy/CC3D_3.7.7_RHEL/runScript.sh: line 39: 49004 Segmentation fault ${PYTHON_EXEC} ${PREFIX_CC3D}/player5/CompuCellPythonSimulationCML.py $* --currentDir=${current_directory}
id: jgpbr | creation_date: June 13, 2018, 1:22 p.m. | author: Mahua Roy | type: Answer |
parent: ggxpe | lastedit_date: June 13, 2018, 1:22 p.m. | lastedit_user: Mahua Roy |
content:
I placed the SBML (xml) file in the same location as specified in the Steppables file - in the Simulation folder.
id: vxgxa | creation_date: June 17, 2018, 5:33 p.m. | author: Maciek Swat | type: Answer |
parent: ggxpe | lastedit_date: June 17, 2018, 5:33 p.m. | lastedit_user: Maciek Swat |
content:
The problem was not in the restart function but in the copySBML's function that you used in the Mitosis Steppeble (your Mitosis code was correct BTW). I fixed that along with addSBMLtoCell function and now the serialization works.
Few things though:
1. The way you initialized FPP links is not entirely correct because you end up with infinity values for lambda D after few very few MCS - you keep multiplying previous value of lambdaD by 20 each MCS. As you can tell this will led to inf values - I fixed it see lines 125-130 of your Steppables file (here is your new simulation File attached: TumorGrowth_restart.tar.gz (32.97 KB))
2. The restart file after 1000 MCS is here File attached: TumorGrowth_restart_1000.tar.gz (1.11 MB)
3. Finally to get your code working you need to patch the installation of CD3D . All you need to do is to copy the attached SBMLHelper.py (File attached: SBMLSolverHelper.py (28.46 KB)
) to <your cc3d installation directory>/pythonSetupScripts , replacing old version of SBMLHelper.py
We will be releasing new version of CC3D soon and this bug fix will be included but for now you need to do this manual step.
attachments(redirected):
.\CC3D_allanswered_linked_files\TumorGrowth_restart.tar.gz
.\CC3D_allanswered_linked_files\TumorGrowth_restart_1000.tar.gz
.\CC3D_allanswered_linked_files\SBMLSolverHelper.py
id: rrovz | creation_date: June 18, 2018, 3:03 p.m. | author: Mahua Roy | type: Answer |
parent: ggxpe | lastedit_date: June 18, 2018, 3:03 p.m. | lastedit_user: Mahua Roy |
content:
Thank so much for your time to look into the script and fix the issue. I copied the SBMLSolverHelper.py into the installation directory. Currently the restart files work. I will run on the Linux version of the CompuCell and will update you if there are any issues.
Thanks so much again.
id: nqvqn | creation_date: Feb. 9, 2018, 2:56 p.m. | author: Mahua Roy | type: Question |
parent: | lastedit_date: Feb. 23, 2018, 9:02 p.m. | lastedit_user: Maciek Swat |
content:
For restarting a simulation from the last restart file written , I rename the folder and moved it to the main location where the .cc3d file is. However, this is error that is thrown out. I am not sure if there are any lines that need to be modified for the FocalPointPalsticity. Any help would be highly appreciated.
attachments(redirected):
.\CC3D_allanswered_linked_files\Screen Shot 2018-02-09 at 11.13.23 AM.png
id: mbrza | creation_date: Feb. 23, 2018, 9:02 p.m. | author: Maciek Swat | type: Answer |
parent: nqvqn | lastedit_date: Feb. 23, 2018, 9:02 p.m. | lastedit_user: Maciek Swat |
content:
Could you post the "toy version" of the simulation that has the problem? We could take a look at it and see where the problem is
id: lorwn | creation_date: Feb. 14, 2018, 4:58 a.m. | author: Thomas | type: Question |
parent: | lastedit_date: June 4, 2018, 9:09 a.m. | lastedit_user: dali Zan |
content:
Hello. I would like to model a cell by its cytoplasm and its nucleus. I have already tried to model each component and their interactions with internal contact and connectivity but when I tried to simulate it, I had my nucleus fragmented inside the cytoplasm, or gone out of the cytoplasm. Do you have any ideas to prevent these from happening? Thank you.
id: omvzo | creation_date: Feb. 23, 2018, 9 p.m. | author: Maciek Swat | type: Answer |
parent: lorwn | lastedit_date: Feb. 23, 2018, 9 p.m. | lastedit_user: Maciek Swat |
content:
Could you post your simulation here? Cell fragmentation could be prevented by imposing surface and volume constraints. In any case if you could share your code we could try helping you out otherwise it is hard to give you specific advice without seeing all the parameters you have in your model
id: qwpbv | creation_date: June 4, 2018, 9:09 a.m. | author: dali Zan | type: Answer |
parent: lorwn | lastedit_date: June 4, 2018, 9:09 a.m. | lastedit_user: dali Zan |
content:
I guess you set J(nucleus,medium)=0,that may cause the situation you said. Try to set a large positive value to J(nucleus,medium).
id: klomb | creation_date: Feb. 14, 2018, 9:20 a.m. | author: Pauli Tikka | type: Question |
parent: | lastedit_date: Feb. 23, 2018, 8:39 p.m. | lastedit_user: Maciek Swat |
content:
Hi,
Help needed.
Instead of the word 'graphics' (as seen in the figure), I would like have word like 'Cells' or 'Cell field' etc. How to accomplish this task? I tried to modify the python (steppable) code, but I guess it could be done also in the program itself?
Thanks in advance!
B.r., Pauli
attachments(redirected):
.\CC3D_allanswered_linked_files\cc3d_title of the window_tikka.png
id: nqgzj | creation_date: Feb. 23, 2018, 8:39 p.m. | author: Maciek Swat | type: Answer |
parent: klomb | lastedit_date: Feb. 23, 2018, 8:39 p.m. | lastedit_user: Maciek Swat |
content:
I dont think this is possible but I will add it to the TODO list
id: klopb | creation_date: Feb. 15, 2018, 9:08 a.m. | author: Pauli Tikka | type: Question |
parent: | lastedit_date: July 13, 2018, 1:17 p.m. | lastedit_user: James Sluka |
content:
Dear reader,
I have a problem regarding crashing of twedit++ when I try to add parameter scan (see the image; question mark indicates the chrash event).
What do, how to solve? The demo cc3d codes seem to work, play, and add all the parameter scans in the world. The only solution that I can think of at the moment is to do my code again and/or reinstall the compucell3d&twedit.
Yours,
Pauli
attachments(redirected):
.\CC3D_allanswered_linked_files\parameter scan chrashes the simulation_why what to do.png
id: benqj | creation_date: Feb. 16, 2018, 5:45 a.m. | author: Pauli Tikka | type: Answer |
parent: klopb | lastedit_date: Feb. 16, 2018, 5:45 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
I changed the folder of my simulation to compucell...\Book_ChapterDemos etc. , and it I got the scan working! Splendid! I wonder how I can give rights to other folders for cc3d sim runs?
B.r.,
Pauli
me
Europe
id: bevao | creation_date: Feb. 20, 2018, 1:14 p.m. | author: James Sluka | type: Answer |
parent: klopb | lastedit_date: Feb. 20, 2018, 1:14 p.m. | lastedit_user: James Sluka |
content:
What platform are you running on? Windows, Mac, linux, ...? It sounds like the parameter scan task is trying to write to a directory you didn't have access to.
I've also noticed crashes when you try to save the file after defining the parameter scans. In my case though the files are written correctly and can be re-loaded into twedit, or run from the command line.
id: qvjqe | creation_date: Feb. 23, 2018, 9:37 a.m. | author: Pauli Tikka | type: Comment |
parent: bevao | lastedit_date: Feb. 23, 2018, 9:37 a.m. | lastedit_user: Pauli Tikka |
content:
Windows. I use the same directory where my compucell3d is. I have still experienced problems in starting to run the simulation code in my new directory inside this folder. The program does not crash, but it does not play the simulation code. I have attached the run file.
processCommandLineOptions
opts= []
args= []
FILE LIST= []
pixmap= <PyQt5.QtGui.QPixmap object at 0x0000000005586278>
INIT SYNC self.modifiedPluginsDataStringList= []
pluginModules= ['PluginCCDCPPHelper', 'PluginCCDMLHelper', 'PluginCCDProject', 'PluginCCDPythonHelper', 'PluginCompuCell3D']
plugin name= PluginCCDCPPHelper
##################loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDCPPHelper.py
plugin name= PluginCCDMLHelper
##################loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDMLHelper.py
['C:\\CompuCell3D-64bit\\lib\\PythonDeps', 'C:\\CompuCell3D-64bit\\Twedit++5', 'C:\\CompuCell3D-64bit\\Twedit++5\\Plugins', 'C:\\CompuCell3D-64bit\\Python27\\python27.zip', 'C:\\CompuCell3D-64bit\\Python27\\DLLs', 'C:\\CompuCell3D-64bit\\Python27\\lib', 'C:\\CompuCell3D-64bit\\Python27\\lib\\plat-win', 'C:\\CompuCell3D-64bit\\Python27\\lib\\lib-tk', 'C:\\CompuCell3D-64bit\\Python27', 'C:\\CompuCell3D-64bit\\Python27\\lib\\site-packages', 'C:\\CompuCell3D-64bit\\Python27\\lib\\site-packages\\win32', 'C:\\CompuCell3D-64bit\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\CompuCell3D-64bit\\Python27\\lib\\site-packages\\Pythonwin', 'C:\\CompuCell3D-64bit\\lib\\python', 'C:\\CompuCell3D-64bit\\pythonSetupScripts']
plugin name= PluginCCDProject
##################loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDProject.py
plugin name= PluginCCDPythonHelper
##################loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDPythonHelper.py
plugin name= PluginCompuCell3D
##################loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCompuCell3D.py
************PLUGIN NAME= PluginCompuCell3D
name=PluginCompuCell3D
fileName=C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCompuCell3D.py
author=Maciej Swat
autoactivate=True
deactivateable=False
version=0.9.0
className=CC3DApp
packageName=__core__
shortDescription=PLugin linking Twedit++5 with CompuCell3D
longDescription=This plugin provides functionality to link Twedit with CompuCell3D
LOADING PluginCompuCell3D from C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCompuCell3D.py
loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCompuCell3D.py
version= 0.9.0 className= CC3DApp pluginClass= <class 'PluginCompuCell3D.CC3DApp'>
PORT= -1
__initActions
CC3D CONSTRUCTOR
WILL TRY TO ACTIVATE <PluginCompuCell3D.CC3DApp object at 0x0000000005921678>
ACTIVATED
************PLUGIN NAME= PluginCCDProject
name=PluginCCDProject
fileName=C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDProject.py
author=Maciej Swat
autoactivate=True
deactivateable=False
version=0.9.0
className=CC3DProject
packageName=__core__
shortDescription=Plugin to manage CC3D Projects
longDescription=This plugin provides functionality that allows users to manage *.cc3d projects
LOADING PluginCCDProject from C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDProject.py
loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDProject.py
version= 0.9.0 className= CC3DProject pluginClass= <class 'PluginCCDProject.CC3DProject'>
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
WILL TRY TO ACTIVATE <PluginCCDProject.CC3DProject object at 0x0000000005921D38>
ACTIVATED
************PLUGIN NAME= PluginCCDPythonHelper
name=PluginCCDPythonHelper
fileName=C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDPythonHelper.py
author=Maciej Swat
autoactivate=True
deactivateable=True
version=0.9.0
className=CC3DPythonHelper
packageName=__core__
shortDescription=Plugin which assists with CC3D Python scripting
longDescription=This plugin provides provides users with CC3D Python code snippets - making Python scripting in CC3D more convenient.
LOADING PluginCCDPythonHelper from C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDPythonHelper.py
loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDPythonHelper.py
version= 0.9.0 className= CC3DPythonHelper pluginClass= <class 'PluginCCDPythonHelper.CC3DPythonHelper'>
WILL TRY TO ACTIVATE <PluginCCDPythonHelper.CC3DPythonHelper object at 0x0000000005921438>
menuName= Adhesion Flex
menuName= Cell Attributes
menuName= Cell Constraints
menuName= Cell Manipulation
menuName= Chemical Field Manipulation
menuName= Chemotaxis
menuName= Distances, Vectors, Transformations
menuName= Elasticity
menuName= Extra Fields
menuName= Extra Fields Automatic Tracking
menuName= Focal Point Placticity
menuName= Inertia Tensor
menuName= Mitosis
menuName= Parameter Scan Command Line
menuName= Python Utilities
menuName= SBML Solver
menuName= Scientific Plots
menuName= Scientific Plots Histograms
menuName= Secretion / Uptake
menuName= Simulation
menuName= Visit
************PLUGIN NAME= PluginCCDCPPHelper
name=PluginCCDCPPHelper
fileName=C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDCPPHelper.py
author=Maciej Swat
autoactivate=True
deactivateable=True
version=0.9.0
className=CC3DCPPHelper
packageName=__core__
shortDescription=Plugin assists with CC3D C++ module development scripting
longDescription=This plugin provides provides users with CC3D C++ code generator and code snippets - making CC3D C++ plugin and steppable development more convenient.
LOADING PluginCCDCPPHelper from C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDCPPHelper.py
loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDCPPHelper.py
version= 0.9.0 className= CC3DCPPHelper pluginClass= <class 'PluginCCDCPPHelper.CC3DCPPHelper'>
WILL TRY TO ACTIVATE <PluginCCDCPPHelper.CC3DCPPHelper object at 0x000000000588B558>
menuName= Cell Attributes
menuName= Include
menuName= Module Setup
menuName= Visit
menuName= XML Utils
ACTIVATED
************PLUGIN NAME= PluginCCDMLHelper
name=PluginCCDMLHelper
fileName=C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDMLHelper.py
author=Maciej Swat
autoactivate=True
deactivateable=True
version=0.9.0
className=CC3DMLHelper
packageName=__core__
shortDescription=Plugin which assists with CC3D Python scripting
longDescription=This plugin provides provides users with CC3D Python code snippets - making Python scripting in CC3D more convenient.
LOADING PluginCCDMLHelper from C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDMLHelper.py
loading source for C:\CompuCell3D-64bit\Twedit++5\Plugins\PluginCCDMLHelper.py
version= 0.9.0 className= CC3DMLHelper pluginClass= <class 'PluginCCDMLHelper.CC3DMLHelper'>
WILL TRY TO ACTIVATE <PluginCCDMLHelper.CC3DMLHelper object at 0x000000000588B798>
ACTIVATED
_settingName= RecentProjects
recentItems= [u'C:\\CompuCell3D-64bit\\pauli\\aggregation\\PKD_paper_codes\\isoCyst\\isoCyst.cc3d', u'C:\\CompuCell3D-64bit\\Demos\\BookChapterDemos_ComputationalMethodsInCellBiology\\VascularTumor\\VascularTumor.cc3d', u'C:\\CompuCell3D-64bit\\pauli\\aggregation\\PKD_paper_codes\\tubule\\PKD.cc3d', u'C:\\CompuCell3D-64bit\\pauli\\movements\\m19\\okok\\peitto.cc3d', u'C:\\CompuCell3D-64bit\\pauli\\aggregation\\PTAtoRV-STANDARD\\aggregration\\aggregration.cc3d', u'C:\\CompuCell3D-64bit\\Demos\\BookChapterDemos_ComputationalMethodsInCellBiology\\okok\\peitto.cc3d', u'C:\\CompuCell3D-64bit\\Demos\\BookChapterDemos_ComputationalMethodsInCellBiology\\cellsorting2\\cellsorting.cc3d', u'C:\\CompuCell3D-64bit\\Demos\\BookChapterDemos_ComputationalMethodsInCellBiology\\cellsorting\\cellsorting.cc3d']
__loadRecentProject
GOT SUSTOM SETTINGS : C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\_settings.sqlite
projParent= peitto.cc3d
__openXMLPythonInEditor pdh.cc3dSimulationData.xmlScript= C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\peitto.xml
__openXMLPythonInEditor pdh.cc3dSimulationData.xmlScriptResource.path= C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\peitto.xml
opening file C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\peitto.xml
DONE READING: file C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\peitto.xml
opening file C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\peitto.py
DONE READING: file C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\peitto.py
opening file C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\peittoSteppables.py
DONE READING: file C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\peittoSteppables.py
projParent= peitto.cc3d
RESOURCENAME
projParent= peitto.cc3d
CurrentItem= peitto.cc3d parent= None
getFullPath= projParent= peitto.cc3d
projectFullPath= C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\peitto.cc3d
TRY TO FIGURE OUT PORT
CHECKING PORT= 47406
CHECKING PORT= 47407
established empty port= 47407
self.cc3dPath= C:\CompuCell3D-64bit\compucell3d.bat
Executing Popen command with following arguments= ['C:\\CompuCell3D-64bit\\compucell3d.bat', '--port=47407', '-i', u'C:\\CompuCell3D-64bit\\Demos\\BookChapterDemos_ComputationalMethodsInCellBiology\\okok\\peitto.cc3d']
starting CC3D
['C:\\CompuCell3D-64bit\\player5', 'C:\\CompuCell3D-64bit\\lib\\python', 'C:\\CompuCell3D-64bit\\Python27\\python27.zip', 'C:\\CompuCell3D-64bit\\Python27\\DLLs', 'C:\\CompuCell3D-64bit\\Python27\\lib', 'C:\\CompuCell3D-64bit\\Python27\\lib\\plat-win', 'C:\\CompuCell3D-64bit\\Python27\\lib\\lib-tk', 'C:\\CompuCell3D-64bit\\Python27', 'C:\\CompuCell3D-64bit\\Python27\\lib\\site-packages', 'C:\\CompuCell3D-64bit\\Python27\\lib\\site-packages\\win32', 'C:\\CompuCell3D-64bit\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\CompuCell3D-64bit\\Python27\\lib\\site-packages\\Pythonwin']
compucell3d.pyw: type(argv)= <type 'list'>
compucell3d.pyw: argv= ['--port=47407', '-i', 'C:\\CompuCell3D-64bit\\Demos\\BookChapterDemos_ComputationalMethodsInCellBiology\\okok\\peitto.cc3d', '--currentDir=C:\\CompuCell3D-64bit']
CONSOLE PARENT= <UI.UserInterface.DockWidget object at 0x000000000AF34678>
self.baseFont.fixedPitch()= True
TWEDIT socket.socketDescriptor()= <sip.voidptr object at 0x000000000AF2E850>
TRY TO FIGURE OUT PORT
CHECKING PORT= 47406
CHECKING PORT= 47407
CHECKING PORT= 47408
established empty port= 47408
CALL establishConnection
self.__fileName= C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\peitto.cc3d
GOT SUSTOM SETTINGS : C:\CompuCell3D-64bit\Demos\BookChapterDemos_ComputationalMethodsInCellBiology\okok\Simulation\_settings.sqlite
currentIteration= [3]
multiplicativeFactors= [1]
iterationId= 3
Error Parsing Parameter scan file
Traceback (most recent call last):
File "C:\CompuCell3D-64bit\player5\compucell3d.pyw", line 258, in <module>
error_code = main(sys.argv[1:])
File "C:\CompuCell3D-64bit\player5\compucell3d.pyw", line 239, in main
mainWindow.viewmanager.processCommandLineOptions(cml_args)
File "C:\CompuCell3D-64bit\player5\Plugins\ViewManagerPlugins\SimpleTabView.py", line 687, in processCommandLineOptions
self.__runSim()
File "C:\CompuCell3D-64bit\player5\Plugins\ViewManagerPlugins\SimpleTabView.py", line 1815, in __runSim
self.prepareSimulation()
File "C:\CompuCell3D-64bit\player5\Plugins\ViewManagerPlugins\SimpleTabView.py", line 1775, in prepareSimulation
self.__loadSim(file)
File "C:\CompuCell3D-64bit\player5\Plugins\ViewManagerPlugins\SimpleTabView.py", line 1015, in __loadSim
self.__loadCC3DFile(fileName)
File "C:\CompuCell3D-64bit\player5\Plugins\ViewManagerPlugins\SimpleTabView.py", line 1169, in __loadCC3DFile
psu.replaceValuesInSimulationFiles(_pScanFileName=pScanFilePath, _simulationDir=customOutputPath)
File "C:\CompuCell3D-64bit\pythonSetupScripts\ParameterScanUtils.py", line 757, in replaceValuesInSimulationFiles
self.replaceValuesInXMLFile(_parameterScanDataMap = parameterScanDataMap , _xmlFile=fullFilePath)
File "C:\CompuCell3D-64bit\pythonSetupScripts\ParameterScanUtils.py", line 674, in replaceValuesInXMLFile
elem=self.getXMLElementFromAccessPath(root_element,accessPathList)
File "C:\CompuCell3D-64bit\pythonSetupScripts\ParameterScanUtils.py", line 629, in getXMLElementFromAccessPath
tmpElement=tmpElement.getFirstElement(arg[0],attrDict) if attrDict is not None else tmpElement.getFirstElement(arg[0])
AttributeError: 'NoneType' object has no attribute 'getFirstElement'
CLOSING LOCAL SOCKET
"SIMULATION FINISHED"
id: mbzoe | creation_date: Feb. 26, 2018, 11:19 p.m. | author: Maciek Swat | type: Answer |
parent: klopb | lastedit_date: Feb. 26, 2018, 11:19 p.m. | lastedit_user: Maciek Swat |
content:
Could you post s short version of your simulation where the problem occurs?
id: ggjka | creation_date: Feb. 28, 2018, 3:18 a.m. | author: Pauli Tikka | type: Answer |
parent: klopb | lastedit_date: Feb. 28, 2018, 3:23 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
Here is a short video about the crash (that occurs around 56s in the video) when I start to add the parameter scan to my cc3d model in twedit++5.
So the player goes on, but the twedit++5 crashes after attempting to add the scan.
Best,
Pauli
File attached: adding parameter scan results to crash.mp4 (2.12 MB)
attachments(redirected):
.\CC3D_allanswered_linked_files\adding parameter scan results to crash.mp4
id: ggaml | creation_date: March 15, 2018, 10:35 a.m. | author: Pauli Tikka | type: Answer |
parent: klopb | lastedit_date: March 15, 2018, 10:38 a.m. | lastedit_user: Pauli Tikka |
content:
What to do, here is what I also get?:
attachments(redirected):
.\CC3D_allanswered_linked_files\cpp_error.png
id: jrmll | creation_date: March 15, 2018, 11:39 a.m. | author: James Sluka | type: Answer |
parent: klopb | lastedit_date: March 15, 2018, 11:47 a.m. | lastedit_user: James Sluka |
content:
The path to the .piff file is odd, there is a single slash whereas all the other directory delimiters are back slashes. Check your code for a bad path to the piff file. Also, take a look in the the .cc3d file and see if the piff file is listed there and make sure the path has the correct delimiters. It looks like you are on a Windows system and Windows is "supposed" to be able to handle slashes or backslashes in paths, but that could still be the problem.
If you are using a .piff file you can include it in the .cc3d file by importing into the project in Twedit++. Use "Add resource", tell it the file is a piff, then browse to the file. If the file is already in the Simulation directory Twedit++ will complain that it can't copy the file. Regardless, you just need to make sure there is a copy in the Simulation folder and that that is included in the project's .cc3d file. That way when the various files are all copied for the parameter scan the .piff file goes with them. So, in general, the .piff file should be in the Simulation folder for the CC3D project.
id: avxgm | creation_date: March 16, 2018, 11:24 a.m. | author: Pauli Tikka | type: Answer |
parent: klopb | lastedit_date: March 16, 2018, 11:51 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
Thank you for your answer!
I did what you recommended (see peitto.cc3d), and inserted the piff file to .cc3d file separately.
I encountered some problems (see below), but was able to add the parameter scan, and modify it manually line-by-line. So I now have parameter scan, but If I want to add new elements to scan, I need to write them directly to the xml code myself.
Next question would be, how to save the result file in the parameter_scan subfolder (and not a folder, so that the previous results would not wipe the one iteration round older file/s)?
E.g. what to do in steppables.py file to lines like(?):
FileName = "C:/pyintro/positions.csv" # you can add some specific facts to the file if needed
self.File = open(FileName,"w",0) # the 0 is for initial memory 'flush', needed for total print of the file
self.File.write("cell_no,time_mcs,x_position_(px),y_position_(px),z_position_(px)\n")
Best,
Pauli
File attached: peitto.cc3d (407 Bytes)
File attached: errorlog_param_tikka16318.txt (3.22 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\cpp_error2.png
id: nqbgv | creation_date: March 16, 2018, 11:34 a.m. | author: James Sluka | type: Comment |
parent: avxgm | lastedit_date: March 16, 2018, 11:36 a.m. | lastedit_user: James Sluka |
content:
That is the message the parameter scan process gives when the scan is complete. If you have old folders in the directory structure then when the scan tries to create the folder for a new scan it fails. The scan process can't differentiate between old and unneeded scan folders and new folders created during the current scan process.
You just need to delete all those old numbered folders before restarting a scan.
If you restart a scan you also have to edit the scan xml file and set the pointers back to zero.
For example, from one of my scan files;
<Parameter CurrentIteration="3" Name="pbpk_kGutabs" Type="PYTHON_GLOBAL" ValueType="float">
CurrentIteration needs to be reset back to zero.
id: vnarj | creation_date: March 19, 2018, 12:13 p.m. | author: Pauli Tikka | type: Comment |
parent: nqbgv | lastedit_date: March 19, 2018, 12:14 p.m. | lastedit_user: Pauli Tikka |
content:
Hi,
Thanks! I got it now.
In addition, I can save the different iteration files under different names to the same scan folder.
Regards,
Pauli
id: jrbrp | creation_date: March 20, 2018, 9:15 a.m. | author: Pauli Tikka | type: Comment |
parent: vnarj | lastedit_date: March 20, 2018, 9:15 a.m. | lastedit_user: Pauli Tikka |
content:
Ah no!! The crashing problem reoccurred, but in a different place and context. I still wanted to scan parameters automatically via scan editor, but the twetedit program crashes immediately when I push ok after inserting the values in the 'scannable parameters' window. What to do, continue with manual approach or rewrite the whole code in other folder etc.?
id: avevp | creation_date: March 20, 2018, 9:29 a.m. | author: Pauli Tikka | type: Comment |
parent: jrbrp | lastedit_date: March 20, 2018, 9:29 a.m. | lastedit_user: Pauli Tikka |
content:
Oo! I think I now got it all finally. I changed the folder, and deleted all extra files from simulation folder (+chekced the .cc3d file again), and now I can do the scans normally with the editor. Thanks!
id: awbpm | creation_date: July 10, 2018, 6:42 a.m. | author: Pauli Tikka | type: Answer |
parent: klopb | lastedit_date: July 10, 2018, 6:42 a.m. | lastedit_user: Pauli Tikka |
content:
The diffusion constant scan was not working properly, here it how it should be modified, please correct it for the automatic version!
The first scan is ok:
<ParameterScan version="3.7.0">
<OutputDirectory>NewSimulation_ParameterScan</OutputDirectory>
<ParameterList Resource="Simulation/NewSimulation.xml">
<Parameter CurrentIteration="0" Name="GlobalDiffusionConstant" Type="XML_CDATA" ValueType="float">
[['CompuCell3D','Revision','20180621','Version','3.7.8'],['Steppable','Type','DiffusionSolverFE'],['DiffusionField','Name','Wnt9b'],['GlobalDiffusionConstant']]
<Values>0,1,3,4,6</Values>
</Parameter>
<!-- <Parameter CurrentIteration="0" Name="GlobalDiffusionConstant" Type="XML_CDATA" ValueType="float"> -->
<!-- [['CompuCell3D','Revision','20180621','Version','3.7.8'],['Steppable','Type','DiffusionSolverFE'],['DiffusionField','Name','Wnt9b'],['DiffusionData'],['GlobalDiffusionConstant']] --> WRONG! do not know why, but does not work with diffusion data field
<!-- <Values>0.5,1.625,2.75,3.875,5.0</Values> -->
<!-- </Parameter> -->
</ParameterList>
</ParameterScan>
id: povek | creation_date: July 10, 2018, 8:29 a.m. | author: Pauli Tikka | type: Comment |
parent: awbpm | lastedit_date: July 10, 2018, 8:29 a.m. | lastedit_user: Pauli Tikka |
content:
oh no, I checked the param scan xml files, and it had not changed the D values... aaa
id: wraxn | creation_date: July 12, 2018, 10:50 a.m. | author: Pauli Tikka | type: Answer |
parent: klopb | lastedit_date: July 12, 2018, 10:50 a.m. | lastedit_user: Pauli Tikka |
content:
I reinstalled the newest compucell3d (21618 version), and the problem did not disappear with a test simulation.
Good things:
The cellsorting param demo works (but it does not have D or gamma values),
and also the test simulation, if I modify the param scan specification code excluding diffusion data -field:
<ParameterScan version="3.7.0">
...
<Parameter CurrentIteration="0" Name="GlobalDiffusionConstant" Type="XML_CDATA" ValueType="float">
[['CompuCell3D','Revision','20180621','Version','3.7.8'],['Steppable','Type','DiffusionSolverFE'],['DiffusionField','Name','wnt'], (???)['GlobalDiffusionConstant']]
<Values>...
However, then the (D) values are always the ones at the beginning, e.g. 1,1,...x amount of scans
Have you tested that parameter scan for diffusionsolverFE/DE etc. elements work in the latest cc3d?
You do not necessarily need to drive my simulation, any would do.
Thanks.
id: zxarv | creation_date: July 13, 2018, midnight | author: Maciek Swat | type: Answer |
parent: klopb | lastedit_date: July 13, 2018, midnight | lastedit_user: Maciek Swat |
content:
I am attaching ParameterScanUtils.py file
File attached: ParameterScanUtils.py (31.01 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\ParameterScanUtils.py
id: xzaok | creation_date: July 13, 2018, 1:17 p.m. | author: James Sluka | type: Answer |
parent: klopb | lastedit_date: July 13, 2018, 1:17 p.m. | lastedit_user: James Sluka |
content:
I tried Maciek's fix.
A PScan of GlobalDiffusionConstant in C:\CompuCell3D-64bit\Demos\SteppableDemos\DiffusionSolverFE\DiffusionSolverFE now works. (It didn't before)
I also tried Pauli's simulation and it also works now. I even scanned two of the diffusion parameters simultaneously.
A minor annoyance. Before doing a pscan you should open CC3D separately from Twedit++ and set the [Tools][Configuration][Project location] and [output] directories correctly for your project. Otherwise CC3D is likely to try to write pscan output to some other directory, which may already have pscan output.
id: lorqn | creation_date: Feb. 16, 2018, 5:43 a.m. | author: Horizon2020 | type: Question |
parent: | lastedit_date: Feb. 23, 2018, 8:36 p.m. | lastedit_user: Maciek Swat |
content:
Hi,
I have been working with the ExternalPotential plugin. I couldn't find the model equations for this plugin in the manuals. After going through the source code, I came to the conclusion that this could be the underlying model equation,
$\Delta H_{force}=\lambda\sum_{pixels}\left(\vec{i'}-\vec{i}\right)$ΔHƒ orce=λ∑pixels(→i'−→i) for the pixelbased calculations and $\Delta H=\lambda\left(\vec{i_{com}'}+\vec{i_{com}}\right)$ΔH=λ(→icom'+→icom) for the center of mass based calculations.
Is my understanding correct? What changes should I make to the equations? Why is the center of mass based equation additive in terms of energy?
Thanks.
id: avgqj | creation_date: Feb. 23, 2018, 8:36 p.m. | author: Maciek Swat | type: Answer |
parent: lorqn | lastedit_date: Feb. 23, 2018, 8:36 p.m. | lastedit_user: Maciek Swat |
content:
Yes, your understanding is close to being correct. For the COM based algorithm it computes a displacement vector that would result if the pixel copy is accepted and takes a scalar product of this vector with the vector whose components in the in XML are specified using:
<ExternalPotentialParameters CellType="NonCondensing" x="-10" y="0" z="0"/>
id: loxmz | creation_date: Feb. 23, 2018, 8:48 a.m. | author: Pauli Tikka | type: Question |
parent: | lastedit_date: March 5, 2018, 3:24 p.m. | lastedit_user: James Sluka |
content:
Dear Reader,
I try to reproduce your PKD model code in my modelling process (pretubular aggregate to renal vesicle, including MET) by changing the parameters so that the model output similar as I do have. However, I cannot open the codes (from http://compucell3d.org/Models @PKD_paper_codes) in my compucell3d (see attachement).
For instance, transferring these files (including *.ccds) to my computer's (cc3d) modelling file and making new simulation files.
Thanks for all possible help.
Best regards,
Pauli
File attached: isoCyst_error.txt (434.04 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\isoCyst_error.txt
id: bexnp | creation_date: March 5, 2018, 3:22 p.m. | author: James Sluka | type: Answer |
parent: loxmz | lastedit_date: March 5, 2018, 3:24 p.m. | lastedit_user: James Sluka |
content:
Looking at your log file it looks like you had a succesfull run followed by a different (?) run that failed with the error;
self.errorConsole.playerMainWidget= <Plugins.ViewManagerPlugins.SimpleTabView.SimpleTabView object at 0x000000000756DEE8>
id: vnlzn | creation_date: Feb. 23, 2018, 5:13 p.m. | author: Darth_Malloc | type: Question |
parent: | lastedit_date: Feb. 23, 2018, 10:12 p.m. | lastedit_user: Maciek Swat |
content:
I am in the process of trying to install CompuCell 3D 3.7.7 on a machine that runs Linux Mint 18.
I set up the makefile according to the instructions provided, but when I tried to do the compile step, I got the following error:
core/pyinterface/CC3DXML/CMakeFiles/_CC3DXML.dir/flags.make:10: *** missing separator. Stop.
CMakeFiles/Makefile2:5407: recipe for target 'core/pyinterface/CC3DXML/CMakeFiles/_CC3DXML.dir/all' failed
make[1]: *** [core/pyinterface/CC3DXML/CMakeFiles/_CC3DXML.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
I would greatly appreciate if anyone is able to advise me on how to address this problem.
id: klqzg | creation_date: Feb. 23, 2018, 5:22 p.m. | author: Anwar | type: Answer |
parent: vnlzn | lastedit_date: Feb. 23, 2018, 5:22 p.m. | lastedit_user: Anwar |
content:
The problem you have mentioned is very generic. there many libraries that CompuCell3D depends on it is possible that there is some library mismatch. Could you please download try pre-complied linux package available for CompuCell3D from here. Please let me know whether it worked for you or not.
id: eqavb | creation_date: Feb. 23, 2018, 10:12 p.m. | author: Maciek Swat | type: Answer |
parent: vnlzn | lastedit_date: Feb. 23, 2018, 10:12 p.m. | lastedit_user: Maciek Swat |
content:
Additional thing that helps us debug is the output of the make command that is executed as follows:
make VERBOSE=1
The verbose argument makes CMake-generated Makefile display full compilation output. So go ahead and run the make command as shown and send us the full output
id: vnzma | creation_date: Feb. 28, 2018, 4:09 a.m. | author: Yuan | type: Question |
parent: | lastedit_date: March 5, 2018, 2:31 p.m. | lastedit_user: James Sluka |
content:
Dear all,
I am trying to create a hexagonal cell sheet, as shown below. Each cell is hexagonal and made up of hexagonal pixels. What should I do?
Many thanks.
cell sheet:
each cell:
attachments(redirected):
.\CC3D_allanswered_linked_files\QQ截图20180228170631.png
.\CC3D_allanswered_linked_files\QQ截图20180228165632.png
id: mbzpj | creation_date: March 2, 2018, 1:26 p.m. | author: James Sluka | type: Answer |
parent: vnzma | lastedit_date: March 2, 2018, 1:26 p.m. | lastedit_user: James Sluka |
content:
You can specify that CC3D should use a hexagonal lattice with;
<LatticeType>Hexagonal</LatticeType>
in the Potts section of the project's XML file.
Also, take a look at the hexagonal lattice demo in;
C:\CompuCell3D\Demos\SimulationSettings\HexLattice
Finally, for the mathematical details of a hexagonal lattice see;
http://www.compucell3d.org/BinDoc/cc3d_binaries/Manuals/HexagonalLattice.pdf
id: zpejg | creation_date: March 2, 2018, 10:08 p.m. | author: Yuan | type: Comment |
parent: mbzpj | lastedit_date: March 2, 2018, 10:08 p.m. | lastedit_user: Yuan |
content:
What should I do if I want to make each cell hexagonal using hexagonal lattice? As shown in the second picture.
id: nqzvq | creation_date: March 5, 2018, 2:31 p.m. | author: James Sluka | type: Answer |
parent: vnzma | lastedit_date: March 5, 2018, 2:31 p.m. | lastedit_user: James Sluka |
content:
I've created an extended example of hexagonal cells on a hexagonal lattice.
Here is a zip file of the CC3D code -- File attached: Hexcells2b.zip (7.91 KB)
This uses the blob initializer, which doesn't know about the hex lattice so it will take 10K or more MCS to get the cells to relax into hexagons.
Note that if you want the cells to move then they can not always be perfect hexagons. If you want perfect hexagons then the cells will have to be frozen and wont be able to move.
attachments(redirected):
.\CC3D_allanswered_linked_files\screenshot.png
.\CC3D_allanswered_linked_files\Hexcells2b.zip
id: rezpz | creation_date: March 2, 2018, 3:32 a.m. | author: silvana | type: Question |
parent: | lastedit_date: March 3, 2018, 1:37 a.m. | lastedit_user: silvana |
content:
Dear all,
In my simulation once the cancer cell comes in to contact with ECM, starts to secrete MMP and once the MMP concentration in ECM lattice sites reach a threshold, they switches their type from ECM to medium or they die. but my code doesnt work.(ECM is frozen)
Sincerely,
attachments(redirected):
.\CC3D_allanswered_linked_files\Capture.png
id: pgzpl | creation_date: March 2, 2018, 12:43 p.m. | author: James Sluka | type: Answer |
parent: rezpz | lastedit_date: March 2, 2018, 12:43 p.m. | lastedit_user: James Sluka |
content:
You can't set the volume and surface qualities for MEDIUM or for a single pixel. You should be able to just set the cell type of the pixel to MEDIUM (cell.type=0).
So try just
px.type=0
and remove the px.target... and px.lambda... commands
If that simple approach doesn't work try
self.cellField.set(px,CompuCell.getMediumCell())
id: mbzaj | creation_date: March 3, 2018, 1:24 a.m. | author: silvana | type: Comment |
parent: pgzpl | lastedit_date: March 3, 2018, 1:37 a.m. | lastedit_user: silvana |
content:
Yeah target volume was just an assupmtion and was uncommented and in fact i had used px.type=0 but it didnt work. thank you very much for your help, self.cellField.set(px,CompuCell.getMediumCell()) solved the issue.
id: kvnav | creation_date: Oct. 21, 2018, 9:47 a.m. | author: sandeep13712 | type: Answer |
parent: rezpz | lastedit_date: Oct. 21, 2018, 9:47 a.m. | lastedit_user: sandeep13712 |
content:
We have implemented the MMP-dependent ECM degradation in the following paper:
https://www.nature.com/articles/srep19905
If you want to do something like this, I can share the code.
id: kvnbl | creation_date: Oct. 22, 2018, 11:06 a.m. | author: James Sluka | type: Answer |
parent: rezpz | lastedit_date: Oct. 22, 2018, 11:06 a.m. | lastedit_user: James Sluka |
content:
Sandeep that is very nice work. If you don't mind sharing the code we would like to add it to the models listed at http://www.compucell3d.org/Models. You can email the files to me at jsluka@indiana.edu.
thanks!
id: kvnol | creation_date: Oct. 24, 2018, 11:11 a.m. | author: sandeep13712 | type: Answer |
parent: rezpz | lastedit_date: Oct. 24, 2018, 11:11 a.m. | lastedit_user: sandeep13712 |
content:
@James: Sent the CC3D files to your email.
Sandeep
id: omzwe | creation_date: March 3, 2018, 12:32 a.m. | author: Darth_Malloc | type: Question |
parent: | lastedit_date: March 9, 2018, 6:30 p.m. | lastedit_user: Darth_Malloc |
content:
I am running CompuCell3D 3.7.7 on Linux Mint 17.1. I followed the instructions to compile and install from the source, and for the project I am doing, I need to use Celldraw. However, the celldraw.sh file is missing. Is there some way that I can get it, or if not, is there another way that I can run Celldraw?
id: wlzxv | creation_date: March 5, 2018, 2:51 p.m. | author: James Sluka | type: Answer |
parent: omzwe | lastedit_date: March 5, 2018, 3:06 p.m. | lastedit_user: James Sluka |
content:
Did you check the previous versions of CC3D (e.g. 3.6.x) to see if they have the celldraw.sh file? There shouldn't be any difference in celldraw across the last couple of CC3D versions.
If that doesn't work, I have a rough python/CC3D script that will read an image file and convert it to a cc3d cell field. The image file is typically just created in something like MSPaint. If you need something like that let me know.
id: omzve | creation_date: March 5, 2018, 10:08 p.m. | author: Maciek Swat | type: Answer |
parent: omzwe | lastedit_date: March 5, 2018, 10:08 p.m. | lastedit_user: Maciek Swat |
content:
We have changed the Qt version and as a result we do not have Cell Draw in CC3D 3.7.7 because this part of code was not ported but as Jim mentioned if you install 3.7.5 you will get CellDraw. So what you need to do is to install PyQt4 and then you do not even have to compile CC3D but rather CellDraw folder to a directory and run directly from there. If you need help with this let us know and we can assist you
id: mbzrj | creation_date: March 5, 2018, 11:32 p.m. | author: Maciek Swat | type: Answer |
parent: omzwe | lastedit_date: March 5, 2018, 11:32 p.m. | lastedit_user: Maciek Swat |
content:
Here are instructions on how to run CellDraw with newer versions of CC3D
http://www.compucell3d.org/SrcBin/CellDrawPyQt4
id: eqojj | creation_date: March 9, 2018, 6:30 p.m. | author: Darth_Malloc | type: Comment |
parent: mbzrj | lastedit_date: March 9, 2018, 6:30 p.m. | lastedit_user: Darth_Malloc |
content:
Thank you very much for your help. I have managed to get Celldraw to work.
id: loebv | creation_date: March 8, 2018, 1:48 p.m. | author: Mahua Roy | type: Question |
parent: | lastedit_date: March 9, 2018, 1:44 p.m. | lastedit_user: Mahua Roy |
content:
If I have an SBML file being updated every MCS, where 1MCS = 6 min and I have a step size of 0.2 in my CC3D code, how can I be sure that the final state given out by SBML at the end of 6 min is the same as running the SBML model in COPASI for 6 minutes with the same step size. Currently, the numbers do not match. OR am I wrong in assuming that time in CC3D translates as a same time in COPASI.
To be more clear, I have 1 MCS = 6 min. I update the state of the cell every MCS. Does that mean the total time for SBML model is 6 min with the same step size , 0.2 = 1.2 min ? So should the states at the end of 6 min for COPASI match the state of the cell given out by CompuCell at the end of MCS ?
id: qvrop | creation_date: March 8, 2018, 4:36 p.m. | author: James Sluka | type: Answer |
parent: loebv | lastedit_date: March 8, 2018, 4:36 p.m. | lastedit_user: James Sluka |
content:
Is the difference a little or a lot?
How have you set the time step for the SBML in the CC3D code and what is the time step specified in the SBML?
A well done SBML file should include a time unit such as second or hour.
<unitDefinition id="time" name="minute">
When you load the SBML in CC3D you specify the time step for the SBML in the units the SBML file has.
If you are using 1 MCS = 6 minutes in CC3D, and you are updating the SBML every MCS, and the time unit in the SBML is minutes, then when you load the SBML you need to tell it _stepSize=6;
self.addFreeFloatingSBML(_modelFile=modelFile1,_modelName='modNAME',_stepSize=6)
However, if you want time steps of 6 minutes but the SBML file time unit is hour then you’ll need;
self.addFreeFloatingSBML(_modelFile=modelFile1,_modelName='modNAME', _stepSize=0.1)
Every time you step the SBML with self.timestepSBML() the SBML will move forward in time by _stepSize*<whatever the SBML files internal time unit is>
You can also call the SBML more or less often than every MCS and adjust the setting to account for that. Often in a CC3D model the time scale represented by the spin flips is much faster than you need to run the SBML. So, you might only update the SBML every 10 MCS and you set the "_stepSize” to match that.
In your case though, if 1 MCS is 6 minutes then the SBML time scale is probably faster than the spin flip time scale and updating only once every 6 minutes might not be enough.
If you are sure of your time units and stepping, then the next possibility is that the time is off between CC3D and the SBML. It is possible that the time is off by one time step. I've played around with the SBML simple demo SBMLSolver (C:\CompuCell3D\Demos\SBMLSolverExamples folder) and it looks to me like that is the case; CC3D is one time step ahead of the SBML.
id: vnorq | creation_date: March 8, 2018, 5:19 p.m. | author: Mahua Roy | type: Comment |
parent: qvrop | lastedit_date: March 8, 2018, 5:19 p.m. | lastedit_user: Mahua Roy |
content:
I changed the step size to 6 in CC3D code since my time unit is in minutes. You are right, the concentration that I am getting after 1 MCS (6 min) is actually exactly equal to the concentration after 12 min in COPASI.
In that case, If I am right should I have my step size in cc3D code as 3 so as to give out concentrations every six minutes(in real time)
id: avxlx | creation_date: March 8, 2018, 7:09 p.m. | author: James Sluka | type: Comment |
parent: vnorq | lastedit_date: March 8, 2018, 7:09 p.m. | lastedit_user: James Sluka |
content:
If you change the the time step to 3 you'll be scaling all time by 50%. I think the problem is a constant offset of 1 MCS between the two. So if 3 doesn't work try something like;
if mcs > 1:
<time step the SBML> # skips the first sbml time step
or, to shift one time step the other way;
if mcs == 1;
<time step the SBML> # an extra time step at startup
<time step the SBML>
id: mblqo | creation_date: March 9, 2018, 1:44 p.m. | author: Mahua Roy | type: Comment |
parent: avxlx | lastedit_date: March 9, 2018, 1:44 p.m. | lastedit_user: Mahua Roy |
content:
Yes, skipping the first step works. Thank you.
id: jrbgp | creation_date: March 20, 2018, 5:25 p.m. | author: James | type: Question |
parent: | lastedit_date: March 22, 2018, 2:34 p.m. | lastedit_user: James |
content:
Hi all,
I am wondering if it is possible to access the change in energy calculation output in python so it can be plotted it later on or even analyzed.
I know that the energy change appears in the cmd output per MCS, but I would like to save it as an output for analysis.
Is this possible and if so, how?
Thank you!
id: aveak | creation_date: March 22, 2018, 7:50 a.m. | author: James Sluka | type: Answer |
parent: jrbgp | lastedit_date: March 22, 2018, 7:50 a.m. | lastedit_user: James Sluka |
content:
You can access the current energy with;
self.potts.getEnergy()
To get the delta energy you'll need to save the energy from step to step.
id: rebpr | creation_date: March 22, 2018, 2:34 p.m. | author: James | type: Answer |
parent: jrbgp | lastedit_date: March 22, 2018, 2:34 p.m. | lastedit_user: James |
content:
Thanks for the help!
id: ggppp | creation_date: March 28, 2018, 3:30 p.m. | author: Todd Zurlinden | type: Question |
parent: | lastedit_date: April 2, 2018, 10:08 p.m. | lastedit_user: Maciek Swat |
content:
Is it possible to use a hexagonal lattice with SteadyStateDiffusionSolver2D? I'm able to create my steady state field with the square lattice, but changing to hexagonal causes CC3D to crash.
As outlined in the manual, adding the "AutoscaleDiffusion" tag to FlexibleDiffusionSolverFE allows you to use the hexagonal lattice. Is there a similar tag or trick that can be used for SteadyStateDiffusionSolver2D?
Thanks!
id: kgnmx | creation_date: April 2, 2018, 10:08 p.m. | author: Maciek Swat | type: Answer |
parent: ggppp | lastedit_date: April 2, 2018, 10:08 p.m. | lastedit_user: Maciek Swat |
content:
I think this would not work actually. We used off-the-shelf code for steady state solver and it was written for Cartesian Lattice. It was one of the reasons why in our paper we had to stick to Cartesian Lattice
http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0127972
id: xznml | creation_date: April 12, 2018, 7:15 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: April 12, 2018, 2:31 p.m. | lastedit_user: James Sluka |
content:
I want to know the volume distribution of cells in the model.
id: erqko | creation_date: April 12, 2018, 12:27 p.m. | author: priyomadhyapok | type: Comment |
parent: xznml | lastedit_date: April 12, 2018, 12:27 p.m. | lastedit_user: priyomadhyapok |
content:
Probably easy way would be to check whether (cell.xCOM,cell.yCOM,cell.zCOM) lies within your interval (some min_x:some max_x,some min_y: some max_y, some min_z:some max_z), then quantifying how many cells do? If you wanted something fancier could find out the location of the boundary pixels and impose a stricter constraint maybe
id: lkogg | creation_date: April 12, 2018, 1:14 p.m. | author: dali Zan | type: Comment |
parent: erqko | lastedit_date: April 12, 2018, 1:14 p.m. | lastedit_user: dali Zan |
content:
It may not be possible to indirectly represent the volume of cells by limiting the intervals of each axis, because the shape of the cells is irregular and the length gap is very large on each axis. Can't it be retrieved directly through the cell specific volume value?
id: xzzbz | creation_date: April 12, 2018, 2:31 p.m. | author: James Sluka | type: Answer |
parent: xznml | lastedit_date: April 12, 2018, 2:31 p.m. | lastedit_user: James Sluka |
content:
Attached is a zip file with one approach. The space is divided up into cubes of a fixed size, then the number of cells of each type that have their center of mass in a particular cube is counted.
Scroll down to the bottom of the steppables file for the code. I've used ### to comment the counting routine.
The output looks like this;
80 60 0 Type=1 #= 7 Type=2 #= 5 Type=3 #= 0
80 80 0 Type=1 #= 8 Type=2 #= 8 Type=3 #= 0
80 100 0 Type=1 #= 10 Type=2 #= 7 Type=3 #= 0
80 120 0 Type=1 #= 6 Type=2 #= 8 Type=3 #= 0
The first three columns are the x,y,z coordinates for the pixel nearest the origin in a box. 80,100,0 means a box 20 pixels in each direction (except Z since this is a 2D model) with 80=<x<100 and 100<=y<120. The model has three cells types, 1,2,3, and the counts of each cell type in each cube is given. attachments(redirected):
.\CC3D_allanswered_linked_files\CountCellsInVolume_cellsort_2D_growing_cells_mitosis_using_steppable.zip
id: gnnjr | creation_date: April 19, 2018, 3:08 p.m. | author: Yen Nguyen Edalgo | type: Question |
parent: | lastedit_date: April 22, 2018, 4:15 p.m. | lastedit_user: Maciek Swat |
content:
Hi,
Say I want to add a steppable in Python to vary the values of the diffusion constant and decay constant from the diffusion data specified in XML for one of the chemical fields involved in the system. Basically, I want to have the values of these constants varied in certain conditions. So I know how to access the concentration field from the Python Scripting Manual, but not sure how to access and monitor the diffusion data in Python.
Thank you in advance,
id: nxonj | creation_date: April 22, 2018, 4:15 p.m. | author: Maciek Swat | type: Answer |
parent: gnnjr | lastedit_date: April 22, 2018, 4:15 p.m. | lastedit_user: Maciek Swat |
content:
This is called steering and you can do it from Python. Here is the tutorial/instruction you would follow to have it set up.
http://pythonscriptingmanual.readthedocs.io/en/latest/steering_changing_cc3dml_parameters_on-the-fly.html?highlight=steering
Please scroll down and take a look at the "Simplifying steering - XML access path" section. It has instructions for how to implement steering using simpler API
If you have any questions or problems please let us know . If something is unclear in the manual let us know and we will fix the text
id: gnnar | creation_date: April 20, 2018, 5:18 a.m. | author: Tahir | type: Question |
parent: | lastedit_date: May 7, 2018, 11:14 p.m. | lastedit_user: Maciek Swat |
content:
Is there a way to save the change in the energy from every plugin ( VolumeLocalFlex, contact, ContactInternal and FocalPointPlasticity plugins) from Python or XML? I would like to plot all these different sources of deltaH together with the overall change in energy of the system.
I see that overall system current energy can be found using self.potts.getEnergy() and then save this term for every Step to calculate deltaH. But how would i obtain similar energy from every plugin?
Another thing I would like to know is that, can we calculate the change in energy from plugins and over all system in a certain part of the grid to observe local variations?
Any help will be highly appreciated. Thanks.
id: ponwr | creation_date: April 22, 2018, 4:21 p.m. | author: Maciek Swat | type: Answer |
parent: gnnar | lastedit_date: April 22, 2018, 4:21 p.m. | lastedit_user: Maciek Swat |
content:
Yes, there is with one limitation. It can only be used when you are using single CPU.
Take a look at demos in Demos/SimulationSettings/SimulationStatistics/. there are 3 demos there. One saves output for every pixel copy attempt and at lease one saves cumulative delt H for each plugin during entire MCS.
You may also read pages 3-8 in the CC3D reference Manual. Some information there might be outdated but it will give you an idea how to set up detailed statistical output of the energy terms at each MCS
http://www.compucell3d.org/BinDoc/cc3d_binaries/Manuals/CompuCell3D_Reference_Manual_v.3.7.4.pdf
id: gnowk | creation_date: May 7, 2018, 8:32 a.m. | author: Tahir | type: Answer |
parent: gnnar | lastedit_date: May 7, 2018, 8:32 a.m. | lastedit_user: Tahir |
content:
Dear Maciek,
Thank you for your reply. I followed your suggestion and used the following commands in the XML code to extract cumulative delta H for each plugin.
<EnergyFunctionCalculator Type="Statistics">
<OutputFileName Frequency="10">statData_1.txt</OutputFileName>
</EnergyFunctionCalculator>
It saved output for every plugin but every plugin has 3 columns (Accpted, rejected and Total). Moreover, There are three more additional columns denoted as NAcc, NRej and NTot. Is this NTot is the cumulative delta H of the whole system? In my case, this value is positive and very high number 25,000+ throughout the simulation, however, if this is change in energy, I would expect it to be negative due to energy minimisation? Another thing I noticed is that, the NTot is too high whereas the data from every plugin (Total columns) is on a very small scale (between 0-40 but still positive numbers). In principal, when I add up energies from all the plugins, I should get the total energy of the system. Is that right?
Can you please guide me further as soon as possible. Thanks a lot in advance.
id: nxwgr | creation_date: May 7, 2018, 10:33 a.m. | author: Tahir | type: Comment |
parent: ponwr | lastedit_date: May 7, 2018, 10:33 a.m. | lastedit_user: Tahir |
content:
Hi Maciek, Thanks for your suggestion, I tried it but still having some issues with it. Can you please have a look at my detailed comment on this post below. Thanks
id: lkleb | creation_date: May 7, 2018, 11:14 p.m. | author: Maciek Swat | type: Answer |
parent: gnnar | lastedit_date: May 7, 2018, 11:14 p.m. | lastedit_user: Maciek Swat |
content:
Ntot is the number of total pixel copy attempts that resulted in evaluation of delta H. NRej - number of rejected pixel copy attempts NAcc - number of accepted copy attempts.
Ntot=NAcc + NRej
So the 25000 + corresponds to the total number of attempted pixel copies for which CC3D evaluated delta H. The reason it is different from step to step is that for some some of the attempts CC3D does not evaluate energy because source and destination pixel belong to the same cell.
The energies are listed in Subsequent columns. Yes, when you add delta H listed in each column multiplied by NAcc for each plugin you will get a number that is roughly equal to the overall change of energy reported on the main screen.
What is reported in the columns of of the statData_1.txt is the average and std dev of delta H for each plugin per pixel copy attempt. I know this might sound confusing so let me explain more. During each MCS there will be many evaluations of delta H from each plugin. CC3D keeps track of every single delta H due to a single pixel copy attempt. At the end of MCS it will compute the average delta H (hence delta H per pixel copy attempt) and the standard dev.
I hop this makes sense but if it is unclear let me know
id: zxgno | creation_date: April 24, 2018, 12:53 p.m. | author: Calvin | type: Question |
parent: | lastedit_date: April 30, 2018, 1:08 p.m. | lastedit_user: Calvin |
content:
Dear all,
I saw the post below for deltaH and am wondering its it's possible to extract a specific plugin energy for a specific cell. For example, if neighbor order is set to 2 and we have cell 1 surrounded by other cells, is it possible to extract the total contact energy cell 1 shares with its environment? Ideally, I would like to do this in python if possible.
Also forgot to include, as long as the lattice is relatively larger than the cpu, will these extracted plugin energies be "accurate" if I run CC3D in parallel? By accurate I mean the energy is effectively not modified twice in the same MCS by 2 or more cpus. My sim conditions are: 10-16 cpus on a 100x100x100 lattice with default flip to dim ratio, which I believe is 1).
Sorry for the long paragraph and thanks!
id: lknlq | creation_date: April 24, 2018, 2:48 p.m. | author: James Sluka | type: Answer |
parent: zxgno | lastedit_date: April 24, 2018, 2:48 p.m. | lastedit_user: James Sluka |
content:
I don't think the per-cell data is available (Maciek would know for sure). If you are only doing a few cells, and only occasionally, you might be able to re-calculate the energies of interest in python.
What are you trying to do? If you want to modify the adhesion properties of a cell based on its adhesion partners I think you could do that more efficiently by just using the contact surface area to modify the adhesion constant or to modify the expression level of the adhesion molecules.
Regarding the use of multiple CPUs, I think the only time the energies would be inaccurate would be if you were tracking them on a per spin flip attempt basis. Normally you would access the energy at the end of an MCS so all the cpu's will have completed their work for that step.
id: rrvqz | creation_date: April 24, 2018, 3:36 p.m. | author: Calvin | type: Comment |
parent: lknlq | lastedit_date: April 24, 2018, 4:30 p.m. | lastedit_user: Calvin |
content:
Thanks for the help. This is mainly a parameter issue for me at this point.
I am trying to access the per cell data as a way to calibrate temperature in cellular potts.
I have been using the modified contact surface area method but I still need to choose a number like 100 for the maximum possible temperature for any cell. Therefore, cells will have temperature between ~0-100.
Essentially I am trying to avoid the use of the arbitrary baseline temperature parameter.
Thanks again!
id: bazwp | creation_date: April 28, 2018, 8:02 p.m. | author: Maciek Swat | type: Answer |
parent: zxgno | lastedit_date: April 28, 2018, 8:02 p.m. | lastedit_user: Maciek Swat |
content:
So this type of information would require some C++ coding. As of now you cannot see every energy term that CC3D handles in the C++ code. Another issue is that we actually do not calculate "absolute" energy but rather a change in energy due to a pixel copy attempt.
The demos that output detailed "energy statistics" (see Demo/SimulationSettings/SimulationStatistics) do require that you run on a single CPU. In fact before you start runing CC3D on multiple CPU's it is best to make sure your simulation works fine on 1 CPU.
So in summary, if you really need that detailed level of output you would need to compile CC3D from source and modify e.g. contact plugin to output this information. It is not difficult to do but exposing such capability to Python has not been done.
Hope it helps
id: qwbqa | creation_date: April 28, 2018, 9:07 p.m. | author: Maciek Swat | type: Answer |
parent: zxgno | lastedit_date: April 28, 2018, 9:07 p.m. | lastedit_user: Maciek Swat |
content:
the following demo
Demo/SimulationSettings/SimulationStatistics/spin_flip_stats
will output detailed data for change in energy at ever pixel copy attempt. It does not however output which cell it a given pixel belongs to. This is however something we could add to the code
when you add the following code to the Potts section
<EnergyFunctionCalculator Type="Statistics">
<OutputFileName Frequency="10">cellsort_2D_statistics_spin_flip_statData.txt</OutputFileName>
<OutputCoreFileNameSpinFlips Frequency="1" GatherResults="" OutputAccepted="" OutputRejected="" OutputTotal="">statDataSingleFlip</OutputCoreFileNameSpinFlips>
</EnergyFunctionCalculator>
CC3D will output 3 files (they will be stored in the directory from which you execute CC3D Player - most likely <CC3D installation dir>/player5 - thi sia a bit of an inconvenience - we will fix it though)id: bazxk | creation_date: April 30, 2018, 1:08 p.m. | author: Calvin | type: Comment |
parent: qwbqa | lastedit_date: April 30, 2018, 1:08 p.m. | lastedit_user: Calvin |
content:
Hi
Regarding the SimulationStatistics, the information given there already works great for me. I do have one more question about using multiple CPUS. I'm able to still get energy output despite using multiple CPUS if I use the change number of worknodes code in python. Is the energy output there still "accurate", so long as the cell in general is much larger than the number of CPUS used? I've tested both single and multi CPU but I can't detect if the difference is just due to fluctuations or the actual CPUS.
Thanks you both for all the help! It is much appreciated.
id: wrkwq | creation_date: April 25, 2018, 2:34 a.m. | author: silvana | type: Question |
parent: | lastedit_date: May 7, 2018, 11:21 p.m. | lastedit_user: Maciek Swat |
content:
Dear all,
I wonder if i could model cell nucleus, cytoplasm and membrance according to attached paper. i dont know how to estimate proper values of target surface and target volume especially for membrance so that it dosnt get fragmented(for membrance, target surface gets biger than target volume!!! is that the reason of fragmentation?).
Another issue is that when subcellular adhesions got negative the membrance pixels start to come into cytoplasm area.
At the end, have i chosen FocalPointPlasticity parameters values properly?
sincerely,
Silvana
paper:
https://www.sciencedirect.com/science/article/pii/S0010482515001274
File attached: CancerCell.cc3d (267 Bytes)
attachments(redirected):
.\CC3D_allanswered_linked_files\CancerCell.cc3d
id: wrkmv | creation_date: April 28, 2018, 11:58 a.m. | author: Maciek Swat | type: Answer |
parent: wrkwq | lastedit_date: April 28, 2018, 11:58 a.m. | lastedit_user: Maciek Swat |
content:
Marco and Luigi published another paper (they used CC3D for their simulations) where they give you parameter values
https://epubs.siam.org/doi/abs/10.1137/100812951
Take a look at it and this should give you some hints.
Regarding negative contact energies:
If you use them you have to use surface constraint plugin ("Surface"). Here is the reason: CC3D minimizes energy and if one of your contact energy coefficients is negative one way to accomplish this is to create as many cell-cell interfaces with negative coefficients as possible . And this is exactly what you see. In order to prevent this you need to add surface constraint for any cell (except Medium) that has negative contact energy coefficient
id: poljk | creation_date: May 7, 2018, 4:58 a.m. | author: silvana | type: Comment |
parent: wrkmv | lastedit_date: May 7, 2018, 5:33 a.m. | lastedit_user: silvana |
content:
the paper was helpfull, thank you very much.
I had considered surface constraint for all cell types but the membrance fluctuates. but my question is that when you calculate the target shape constranits for some thin objects(here, cell membrance), can the target perimeter gets higher than target surface? i think in this case the outer pixels start to fluctuate.
id: bajre | creation_date: May 7, 2018, 11:21 p.m. | author: Maciek Swat | type: Answer |
parent: wrkwq | lastedit_date: May 7, 2018, 11:21 p.m. | lastedit_user: Maciek Swat |
content:
So here is the explanation of what we mean by surface /volume in 2 and 3 dimensions
in 2D
volume is numerically equal to the surface area of the shape (because our cells have hight of 1 pixel)
Surface is numerically equal to the perimeter of the the shape
in 3D
volume is "true" 3D volume
surface is the surface of the 3D cell
Coming back to your question - when you increase target surface in surface constraint C#D will try to accommodate your request and will start creating single pixels (because isolated pixel brings 4 units of surface in 2D and 6 units in 3D).
to prevent this behavior you have two choices:
1. Use Connectivity constraint - not a bad idea and it will keep your cell connected . The downside is it slows your simulation to some extent
2. Use compartmentalized cells -this is a bit more sophisticated solutions but you can create big variety of cellular shapes shapes.
Let me know if this helps
id: polbk | creation_date: May 5, 2018, 11:24 p.m. | author: Yen Nguyen Edalgo | type: Question |
parent: | lastedit_date: May 6, 2018, 12:06 a.m. | lastedit_user: priyomadhyapok |
content:
The python codes are introduced for chemotaxis on a cell-by-cell basis at http://pythonscriptingmanual.readthedocs.io/en/latest/chemotaxis_on_a_cell-by-cell_basis.html
Say without the "break" instruction at the end of the first loop, what would be the significance difference occur in the simulation between chemotaxis on a "type-by-type" basis and one on a "cell-by-cell" basis?
Or what would the python codes for chemotaxis on a type-by-type basis might look like compared to ones for cell-by-cell?
Thank you,
id: zxnle | creation_date: May 5, 2018, 11:43 p.m. | author: priyomadhyapok | type: Answer |
parent: polbk | lastedit_date: May 5, 2018, 11:43 p.m. | lastedit_user: priyomadhyapok |
content:
Can't seem to access the page you have the link to but this is what the answer is based on what I understood from the question - a type-by-type chemotaxis property will allow you to specify chemotaxis properties for the entire group of cells belonging to a particular type. Something like {for all cells of type A -> add some chemotaxis properties}. In this case all cells of type A will possess the same chemotaxis attribute.
You can also specify properties at the level of an individual cell. For example if you have a particular cell of type A with id i that you want to add chemotaxis properties to and not to the rest you can assign attributes on a cell-by-cell basis {cell_i = some_cell_with_id_i -> add chemotaxis to cell_i}
id: oaelq | creation_date: May 5, 2018, 11:55 p.m. | author: Yen Nguyen Edalgo | type: Comment |
parent: zxnle | lastedit_date: May 5, 2018, 11:57 p.m. | lastedit_user: Yen Nguyen Edalgo |
content:
I am sorry, here is the active link:
http://pythonscriptingmanual.readthedocs.io/en/latest/chemotaxis_on_a_cell-by-cell_basis.html
Thank you for sharing your thought. if you take a look at the python codes, I am just wondering, if the "break" instruction is being removed, the "for" loop will eventually go through all the cells and assign the chemotaxis properties to each. Then what might possibly be the difference between doing this loop through all cells than assign the chemotaxis property to the whole type using the chemotaxis plugin in XML?
id: mqmwk | creation_date: May 6, 2018, 12:06 a.m. | author: priyomadhyapok | type: Comment |
parent: oaelq | lastedit_date: May 6, 2018, 12:06 a.m. | lastedit_user: priyomadhyapok |
content:
Right. If you remove the break statement all cells of type Macrophage will be assigned the same property and effectively will be the same as defining the property in XML. The idea here was to demonstrate that it is possible to define chemotaxis for a single cell;in this case the first cell from the list of Macrophages and so the break statement came in handy. But it could be any cell (eg a cell with id 100, the last cell from the macrophage list) and the chemotaxis property can be added separately.
cell = self.attemptFetchingCellById(100)
cd = self.chemotaxisPlugin.addChemotaxisData(cell, "ATTR")
cd.setLambda(30.0)
cd.assignChemotactTowardsVectorTypes([self.MEDIUM, self.BACTERIUM])
id: wrwxm | creation_date: May 13, 2018, 1:58 p.m. | author: Arthur M | type: Question |
parent: | lastedit_date: May 24, 2018, 3:23 p.m. | lastedit_user: Arthur M |
content:
Hello everyone! I am a student who is trying to do a foam-coarsening simulation. So I have been following the instructions on the quick start manual, but I did not figure out exactly what I must type and where, to generate PIF files with Python... So it would be really kind that someone explain it to me as it is really important for what I am trying to do!
id: poakq | creation_date: May 14, 2018, 11:35 a.m. | author: James Sluka | type: Answer |
parent: wrwxm | lastedit_date: May 14, 2018, 11:37 a.m. | lastedit_user: James Sluka |
content:
If you are working through the foam example in the quick start guide I believe there is a pif file already created for that, look for the file “foaminit2D.piff” in the folder “C:\CompuCell3D\Demos\CompuCellPythonTutorial\scientificHistBarPlots\Simulation”.
If you want to create your own piff file, either by hand or using Python, the format is pretty simple. Each line of a pif file has the same format:
Cell_id Cell_type x_low x_high y_low y_high z_low z_high
Where Cell_id is a unique cell index (integer). A PIF may have multiple, possibly non-adjacent, lines starting with the same Cell_id; all lines with the same Cell_id define pixels of the same generalized cell. Cell_type is the name of the type of cell being described. The values x_low, x_high, y_low, y_high, z_low and z_high define rectangles (parallelepipeds in 3D) of pixels belonging to the cell. In the case of overlapping pixels, a later line overwrites pixels defined by earlier lines. The following line describes a 6 x 6-pixel square cell with cell index 0 and type Amoeba:
0 Amoeba 10 15 10 15 0 0
The above could also be done with multiple lines, even one line per pixel, for example;
0 Amoeba 10 10 10 10 0 0
0 Amoeba 10 10 10 11 0 0
0 Amoeba 10 10 10 12 0 0
0 Amoeba 10 10 10 13 0 0
0 Amoeba 10 10 10 14 0 0
0 Amoeba 10 10 10 15 0 0
0 Amoeba 10 11 10 10 0 0
0 Amoeba 10 11 10 11 0 0
0 Amoeba 10 11 10 12 0 0
etc.
Note that the reference point for the lattice is (0,0,0) so in the line “0 Amoeba 10 10 10 10 0 0” the pixel is the eleventh from the origin on both the X and Y axis.
In the file “foaminit2D.piff” the first lines are;
0 Foam 0 13 0 5 0 0
1 Foam 13 25 0 5 0 0
2 Foam 25 39 0 5 0 0
3 Foam 39 46 0 5 0 0
4 Foam 46 57 0 5 0 0
These five lines define five separate cells (cell_id 0 through 4), all of cell_type “Foam”. The first cell is 14 pixels wide and 6 pixels tall and has one corner at the origin (0,0,0).
id: lkvva | creation_date: May 19, 2018, 4:31 p.m. | author: Arthur M | type: Comment |
parent: poakq | lastedit_date: May 19, 2018, 4:31 p.m. | lastedit_user: Arthur M |
content:
Thanks you so much for you reply, I discovered in /Simulation thanks to you a file named "Foam coarsening" who works really well. However, my real question was how do you generate PIF files with Python, it is merely written in the quick start guide that the script needs to take several arguments "./FoamInit.py -r -i -o -z -m. "but it is not really explained in simple words for me how it has to be written. Do you have any Python script to create PIF files so I could keep it but change the arguments?
id: erpnp | creation_date: May 21, 2018, 11:31 a.m. | author: James Sluka | type: Answer |
parent: wrwxm | lastedit_date: May 21, 2018, 11:31 a.m. | lastedit_user: James Sluka |
content:
What exactly are you trying to do? Are you trying to create your own pif file to use as input to CC3D? If that is the case the file format is as described above and you can use python or any other programming language to create the file. You can even create the file by hand in a text editor.
Once you've created a pif file you should put it in the Simulation folder for your project. To load the pif add the lines below to the cc3d porject's xml file;
<Steppable Type="PIFInitializer">
<PIFName>Simulation/test.piff</PIFName>
</Steppable>
(Change your file name from "test" to something more informative.)
id: balpm | creation_date: May 21, 2018, noon | author: Arthur M | type: Comment |
parent: erpnp | lastedit_date: May 21, 2018, noon | lastedit_user: Arthur M |
content:
Yes I am trying to create my own PIF files: one to simulate a polydisperse foam and the other to simulate a monodisperse foam. I want to use Python to create the file, but I do not know what I must code exactly. I am not a Python expert especially to create files. That is why I was asking to you if you had any example of Python script to generate this file so I could change the parameters as I want.
id: mqnxm | creation_date: May 21, 2018, 5:04 p.m. | author: James Sluka | type: Answer |
parent: wrwxm | lastedit_date: May 21, 2018, 5:04 p.m. | lastedit_user: James Sluka |
content:
Here is a simple python file to write to a pif. You'll need to change the path to fit your machine. You'll will need to write your own code to decide where the cells actually go.### Script to write a CC3D PIFF file
J. Sluka
path="C:/Users/James Sluka/Desktop/Jims compucell/Piff and other python scripts"
pifname="simple.piff"
pifFileName = path + "/" + pifname
print "pifFileName: " + pifFileName
pifFile= open(pifFileName,'w')
pifFile.write("0 red 0 10 0 10 0 0 \n") # cell id 1 is of type "red"
pifFile.write("1 small 20 30 5 15 0 0 \n") # cell id 2 is of type "small"
print "done"
pifFile.close()
id: erpgp | creation_date: May 21, 2018, 5:27 p.m. | author: Arthur M | type: Comment |
parent: mqnxm | lastedit_date: May 21, 2018, 5:27 p.m. | lastedit_user: Arthur M |
content:
Thank you very much, I will now try to set up a loop on your script so I could generate enough bubbles (I need approximately 120 bubbles in order to compare with my experiences made in laboratory) but this time I may do it by my own, you already helped me a lot!
id: jgxgo | creation_date: May 24, 2018, 2:48 p.m. | author: James Sluka | type: Answer |
parent: wrwxm | lastedit_date: May 24, 2018, 2:48 p.m. | lastedit_user: James Sluka |
content:
If you can draw the layout you want in a program like MS Paint (or any program that can export a bit mapped image), I have a Python file that will convert that drawing into a PIFF file. You just draw all cells of one type the same color and outline all cells with a black lines. In the attached file the left image was drawn in a drawing program. It has tiny red cells, middle sized green cells and large blue cells, with individual cells outlined in black. My script converted the image to a PIFF. The results in CC3D is shown in the right hand image.
attachments(redirected):
.\CC3D_allanswered_linked_files\Untitled.png
id: nxlxb | creation_date: May 24, 2018, 3:12 p.m. | author: Arthur M | type: Comment |
parent: jgxgo | lastedit_date: May 24, 2018, 3:12 p.m. | lastedit_user: Arthur M |
content:
I finally managed to make my own monodisperse foam with the help of your Python script, but I have been struggling to make a really polydisperse foam.I know there is already a PIFF file (foaminit2D.piff) but it may be not enough polydisperse to compare his evolution with the evolution of the monodisperse foam (I want to highlight there are some kind of stages when the number of bubbles in a monodisperse foam decreases ), so your Python file would be very useful, thank you so much for your help!
id: mqeov | creation_date: May 24, 2018, 3:23 p.m. | author: Arthur M | type: Comment |
parent: jgxgo | lastedit_date: May 24, 2018, 3:23 p.m. | lastedit_user: Arthur M |
content:
I think I have finally found a idea to write a Python script generating the polydisperse foam that I want, so I do not need your Python script working with MSPaint, but thank you a lot for your help!
id: erwlr | creation_date: May 28, 2018, noon | author: Arthur M | type: Question |
parent: | lastedit_date: June 4, 2018, 11:36 a.m. | lastedit_user: James Sluka |
content:
Dear all,
I am trying to follow the instructions in the quick start guide on how to add a steppable which for every bubble id will output several parameters (page 19), but it does not work, here is what it is displayed:
attachments(redirected):
.\CC3D_allanswered_linked_files\Capture d’écran 2018-05-28 à 17.50.33.png
id: mqepl | creation_date: May 29, 2018, 11:40 a.m. | author: James Sluka | type: Answer |
parent: erwlr | lastedit_date: May 29, 2018, 11:41 a.m. | lastedit_user: James Sluka |
content:
To add a new steppable:
In your python steppables file (e.g., MyProjectsteppables.py) make the new steppable, something like;class MyNewSteppable(SteppableBasePy):
def __init__(self,_simulator,_frequency=1):
SteppableBasePy.__init__(self,_simulator,_frequency)
def start(self):
# stuff to do at the start of the simulation
pass
def step(self,mcs):
# stuff to do every time the steppable is called
pass
def finish(self):
# Finish Function gets called after the last MCS
pass
To register this new python class, you need to add it to the main python file e.g., MyProject.py. At the bottom of this python, file after;#Add Python steppables here
Add;from InsertNameOfYourSteppablesPythonFile import MyNewSteppable
# NOTE THE CHANGE IN CASE OF FIRST LETTER IN THE 2 LINES BELOW
myNewSteppable = MyNewSteppable(sim,_frequency=1)
steppableRegistry.registerSteppable(myNewSteppable)
You should remove any reference to your new steppable from the CC3D .xml project file.
id: wrgqp | creation_date: May 29, 2018, 12:24 p.m. | author: Arthur M | type: Answer |
parent: erwlr | lastedit_date: May 29, 2018, 12:24 p.m. | lastedit_user: Arthur M |
content:
So if I understood well: In def start(self) I will code something to create and open a new file
But in def step(self,mcs) how do I access the data in mcs, is it like a PIFF file?
Is this really the only solution to output the data from the foam coarsening?
id: erwne | creation_date: May 29, 2018, 1:40 p.m. | author: James Sluka | type: Answer |
parent: erwlr | lastedit_date: May 29, 2018, 1:40 p.m. | lastedit_user: James Sluka |
content:
What data do you want to output? If you want screen shots of the simulation you can tell Player to do that.
<Tools><Configuration><Output> check "Save images every Nth MCS"
Otherwise, if you want to do things like output the number of cells, volume/cell, average volume etc. then you'll need to do that in Python and output to a file.
In the start you can use;
# create a plain text file in the output directory
import os
reportFileName="Simulation_report.txt"
self.reportFileHandle,fullFileName=self.openFileInSimulationOutputDirectory(reportFileName,"w")
In the step you use;
self.reportFileHandle.write("Some interesting stuff\n")
And in the finish you use;
self.reportFileHandle.close()
If you can post what kind of data you would like to save I might be able to help more.
id: bakpa | creation_date: May 29, 2018, 1:57 p.m. | author: Arthur M | type: Answer |
parent: erwlr | lastedit_date: May 29, 2018, 1:57 p.m. | lastedit_user: Arthur M |
content:
I want to output for each cell: his cell ID, his surface, his volume and number of neighbors.
id: kgmap | creation_date: May 29, 2018, 3:27 p.m. | author: James Sluka | type: Answer |
parent: erwlr | lastedit_date: May 29, 2018, 3:30 p.m. | lastedit_user: James Sluka |
content:
def step(self,mcs):
for cell in self.cellList:
nneigh=0
for neighbor, commonSurfaceArea in self.getCellNeighborDataList(cell):
if neighbor: # don't count neighbors that are medium
nneigh+=1
self.reportFileHandle.write(str(mcs)+"\t"+str(cell.id)+"\t"+str(cell.surface)+ \
"\t"+str(cell.volume)+"\t"+str(nneigh)+"\n")
You might want to add a header line to the file in the start method; self.reportFileHandle.write("mcs\tid\tsurf\tvol\tnneigh\n")
The output file should be in the project directory but if isn't there check C:\Users\YOURUSERNAME\CC3DWorkspace\
You probably don't want to log the data every mcs.
id: nxpnm | creation_date: June 2, 2018, 6:23 a.m. | author: Arthur M | type: Comment |
parent: kgmap | lastedit_date: June 2, 2018, 6:23 a.m. | lastedit_user: Arthur M |
content:
Thank you so much, it worked very well! Indeed, I wanted to ask to you how do you change the frequency as I don't want to log the data every mcs?
id: zxmql | creation_date: June 2, 2018, 7:18 a.m. | author: Arthur M | type: Answer |
parent: erwlr | lastedit_date: June 2, 2018, 7:18 a.m. | lastedit_user: Arthur M |
content:
I also got a problem getting screenshots of the simulation, I found no screenshots after the simulation ended. Here is what I put in the parameters.
attachments(redirected):
.\CC3D_allanswered_linked_files\Capture d’écran 2018-06-02 à 13.13.34.png
.\CC3D_allanswered_linked_files\Capture d’écran 2018-06-02 à 13.13.14.png
id: lkpnz | creation_date: June 4, 2018, 11:20 a.m. | author: James Sluka | type: Answer |
parent: erwlr | lastedit_date: June 4, 2018, 11:20 a.m. | lastedit_user: James Sluka |
content:
There are a couple ways to change the frequency of a steppable, but I find it easiest (though perhaps not the fastest) to simply do it directly in the step. For example; change
def step(self,mcs):
for cell in self.cellList:
to;
def step(self,mcs):
if mcs % 100 == 0:
for cell in self.cellList:
"%" is the python modulo operator and the if statement above will cause the lines below to execute only when the mcs step is evenly divisible by 100. In other words, every 100 steps you'll get output.
id: qwpbe | creation_date: June 4, 2018, 11:35 a.m. | author: James Sluka | type: Answer |
parent: erwlr | lastedit_date: June 4, 2018, 11:36 a.m. | lastedit_user: James Sluka |
content:
Concerning the output screen shots. You need to find the folder that CC3D is using for output. It should be named something like <jobname>_cc3d_06_04_2018_11_25_42 where the string of numbers is the time you started the CC3D job (June 4, 2018 at 11:25:42 in this case). Your screenshots will be in that folder.
CC3D sometimes gets confused and puts the output in your default CC3D output folder, which on a PC is C:\Users\YOURUSERNAME\CC3DWorkspace\. Check that folder to see if your job files are there. You can tell CC3D to put the output files under the same directory as your source code by checking the box next to "=Project".
id: rrpwj | creation_date: May 31, 2018, 8:59 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: June 17, 2018, 4:40 p.m. | lastedit_user: Maciek Swat |
content:
In the model Steppable ‘’FlexibleDiffusionSolverFE‘’ has been added in XML file. But when I run the model, "Exception in C++ code: Stepper'FlexibleDiffusionSolverFE' not found!" this line of words appeared. This situation has never happened before. Hope to be answered,thanks!
id: kgmop | creation_date: May 31, 2018, 9:53 a.m. | author: James Sluka | type: Answer |
parent: rrpwj | lastedit_date: May 31, 2018, 9:53 a.m. | lastedit_user: James Sluka |
content:
What version of CC3D are you using? I just tried it with 3.7.7 and it seems to work correctly.
id: jgxqa | creation_date: May 31, 2018, 10:02 a.m. | author: dali Zan | type: Comment |
parent: kgmop | lastedit_date: May 31, 2018, 10:02 a.m. | lastedit_user: dali Zan |
content:
Version is 3.7.5. In the previous model I used this steppable several times and never had this problem. This time I don't know why.
id: nxlve | creation_date: May 31, 2018, 10:52 a.m. | author: James Sluka | type: Answer |
parent: rrpwj | lastedit_date: May 31, 2018, 10:54 a.m. | lastedit_user: James Sluka |
content:
Try commenting out all the xml for the FlexibleDiffusionSolverFE and see what happens, maybe it is just bad nesting of xml.
If I purposely misspell the plugin's name I get the error window shown below. Is that the exact same error you get (except for the Plugin name)?
attachments(redirected):
.\CC3D_allanswered_linked_files\FDSFE_Err.png
id: zxzvr | creation_date: May 31, 2018, 11:23 a.m. | author: dali Zan | type: Comment |
parent: nxlve | lastedit_date: May 31, 2018, 11:23 a.m. | lastedit_user: dali Zan |
content:
I used an undefined cell type in Uptake Type, that is the cause of this problem. I thought it may caused by function import error in the first time :)thanks for your help anyway.
id: gnzna | creation_date: June 17, 2018, 4:40 p.m. | author: Maciek Swat | type: Answer |
parent: rrpwj | lastedit_date: June 17, 2018, 4:40 p.m. | lastedit_user: Maciek Swat |
content:
Also you shold stop using FlexibleDiffusionSolver use DiffusionSolverFE - much better and way faster
id: nxpll | creation_date: June 6, 2018, 1:44 p.m. | author: Anwar | type: News |
parent: nxpll | lastedit_date: June 7, 2018, 10:12 a.m. | lastedit_user: Scott H |
content:
attachments(redirected):
.\CC3D_allanswered_linked_files\CompuCell3D_Workshop_Poster_2018.png
id: vxbbe | creation_date: June 7, 2018, 10:12 a.m. | author: Scott H | type: Comment |
parent: nxpll | lastedit_date: June 7, 2018, 10:12 a.m. | lastedit_user: Scott H |
content:
I hope to see you there! Should we make a separate post for travel arrangements?
Also are you going to post any materials before the conference? The hour ride from the airport would be perfect for reading.
id: bamzo | creation_date: June 4, 2018, 9:04 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: June 13, 2018, 10:15 a.m. | lastedit_user: Maciek Swat |
content:
pt.x=int(round(cell.xCOM))
pt.y=int(round(cell.yCOM))
pt.z=int(round(cell.zCOM))
I don't understand the effect of this statement in python.
id: erlja | creation_date: June 4, 2018, 11:14 a.m. | author: James Sluka | type: Answer |
parent: bamzo | lastedit_date: June 4, 2018, 11:14 a.m. | lastedit_user: James Sluka |
content:
A Compucell3D point is an integer triple and pt.x refers to the x-coordinate of that point. The center of mass (COM) coordinates (e.g., cell.xCOM) are floating point numbers since, in general, even with integer coordinates the COM will not consist of integers.
The command "int(round(cell.xCOM))" firsts rounds the COM coordinate to the nearest integer (but the data type is still a float), it then converts the type to integer so the value is compatible with the integer definition of a CC3D pt.
I am not sure if I understand your second question. Do you want the first cell to migrate towards the second cell or do you want to make the first cell part of the second?
To migrate the first cell towards the second you can use focal point plasticity links (FPP). In general though, it is likely that both cells will move towards each other. If you want to keep one cell from moving you can use an additional FPP link between the cell you don't want to move and its initial COM. See the demos of FPP in the folder; C:\CompuCell3D\Demos\PluginDemos Demos/FocalPointPlasticity
id: bamnv | creation_date: June 11, 2018, 9:46 a.m. | author: dali Zan | type: Comment |
parent: erlja | lastedit_date: June 11, 2018, 9:46 a.m. | lastedit_user: dali Zan |
content:
I used focal point plasticity plugin and the statement format used are the same as in the demos. But A type cells does not move to B type cells. Is it because the initial distance is too far, or the 3D model needs additional statements?
id: xzxpq | creation_date: June 13, 2018, 10:15 a.m. | author: Maciek Swat | type: Comment |
parent: bamnv | lastedit_date: June 13, 2018, 10:15 a.m. | lastedit_user: Maciek Swat |
content:
If you do not use int(round(x)) you will often create biases in the simulation that will manifest themselves after few hundreds / thousands of MCS and they would be bad because in some cases they can effectively mimic an external force that is not there. So yes each time you ned to pick pixel that is closest to center of mass you need to use int(round())
id: wrqza | creation_date: June 12, 2018, 11:08 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: June 12, 2018, 11:31 a.m. | lastedit_user: priyomadhyapok |
content:
In a 3D model,at first, there were two types of cells, A and C, and A cells became B cells after a period of time. I want B cells move actively to type C cells. I already use focal point plasticity plugin like this:
<Plugin Name="FocalPointPlasticity">
<Parameters Type1="B" Type2="C">
<Lambda>20</Lambda>
<ActivationEnergy>-50</ActivationEnergy>
<TargetDistance>5</TargetDistance>
<MaxDistance>10</MaxDistance>
<MaxNumberOfJunctions>2</MaxNumberOfJunctions>
</Parameters>
</Plugin>
But after A cells became B cells, B cells does not move to C cells. B and C cells are about 40 pixel apart
id: erlvb | creation_date: June 12, 2018, 11:31 a.m. | author: priyomadhyapok | type: Answer |
parent: wrqza | lastedit_date: June 12, 2018, 11:31 a.m. | lastedit_user: priyomadhyapok |
content:
The maximum distance sets the 'max' distance over which links will exist. If they are 40 pixels apart, a link won't form automatically cause it is limited by 10 here. This is an example of how I could set up a link between two arbitrary cells-
#Main python file, could be xml script
#Have commented lambda,target and max distance so can modify them later
PluginElmnt_3=CompuCell3DElmnt.ElementCC3D("Plugin",{"Name":"FocalPointPlasticity"})
ParametersElmnt_1=PluginElmnt_3.ElementCC3D("Parameters",{"Type1":"cellb","Type2":"cellc"})
#ParametersElmnt_1.ElementCC3D("Lambda",{},"20")
ParametersElmnt_1.ElementCC3D("ActivationEnergy",{},"-150")
#ParametersElmnt_1.ElementCC3D("TargetDistance",{},"5")
#ParametersElmnt_1.ElementCC3D("MaxDistance",{},"10")
ParametersElmnt_1.ElementCC3D("MaxNumberOfJunctions",{"NeighborOrder":"6"},"1")
#########################################################################
#Steppable file
#create cellc and cellb arbitrary
#form links
dist=sqrt((cellb.xCOM-cellc.xCOM)**2+(cellb.yCOM-cellc.yCOM)**2)
self.Lam=20
self.focalPointPlasticityPlugin.createFocalPointPlasticityLink(cellb,cellc, self.Lam,dist,self.dim.y)#max target length determines the max limit of the link
id: nxpbj | creation_date: June 13, 2018, 1:18 a.m. | author: Yen Nguyen Edalgo | type: Question |
parent: | lastedit_date: June 13, 2018, 2:12 p.m. | lastedit_user: James Sluka |
content:
Hi,
In the paper "Multi-Scale Modeling of Tissues Using CompuCell3D" by Swat et al., on page 5, the author(s) mentioned that one can measure the diffusion constant of cells in aggregates in the simulation. So I am asking for suggestions on how to do so in CC3D.
Thank you,
id: gnqaa | creation_date: June 13, 2018, 1:13 p.m. | author: James Sluka | type: Answer |
parent: nxpbj | lastedit_date: June 13, 2018, 1:14 p.m. | lastedit_user: James Sluka |
content:
I believe you can use the equation;
(deltaX)^2/(deltaT) = 2D
Where deltaX is the displacement of a single cell along the x-axis in time period deltaT and D is the diffusion constant
One way to track the cell's position is to add a dictionary to the cell and save the cell's X, Y and Z position every (some number of) mcs. Every (some number of) mcs you calculate the X (or Y or Z) displacement, square that and divide by the (some number of) mcs. Since the simulation is stochastic the D will fluctuate from interval to interval so you'll need to average over a number of intervals.The units of D will be pixel^2/mcs, which is distance^2/unit time.
id: awrew | creation_date: June 13, 2018, 2:12 p.m. | author: James Sluka | type: Answer |
parent: nxpbj | lastedit_date: June 13, 2018, 2:12 p.m. | lastedit_user: James Sluka |
content:
With Priyom's help, I've found some much better resources for this.
See slides 51-59 in;
http://www.compucell3d.org/BinDoc/cc3d_binaries/Tutorials/PASI2013/MultiScaleModelingWithCC3D-SBML.pdf
The diffusion measurement demo can be downloaded from;
http://www.compucell3d.org/BinDoc/cc3d_binaries/Tutorials/PASI2013/DiffusionCalculator.zip
This is an excellent example of a python only CC3D model. The code is pretty old though and to use it you need to add a couple lines to the file "DiffusionCalculator.py". After line #64 add;
contact.ElementCC3D("Energy", {"Type1":"Medium", "Type2": "Wall"},10)
contact.ElementCC3D("Energy", {"Type1":"Cells", "Type2": "Wall"},10)
contact.ElementCC3D("Energy", {"Type1":"Wall", "Type2": "Wall"},10)
Note that the plot in CC3D is only drawn at the end of the simulation. Also, a log of all the displacements is written to a text file.
id: lkabq | creation_date: June 14, 2018, 10:51 p.m. | author: dali Zan | type: Question |
parent: | lastedit_date: June 15, 2018, 1:59 p.m. | lastedit_user: James Sluka |
content:
In a diffusion field, we can set out which cells secrete chemicals. And this chemical is usually secreted at the very beginning of the model. I want to ask how to impose restrictions on secretions and don't let cells secrete chemicals at the beginning, but secrete under certain conditions. For instance, when the cells come into contact or reach a certain number of mcs steps.
id: jgagr | creation_date: June 15, 2018, 1:59 p.m. | author: James Sluka | type: Answer |
parent: lkabq | lastedit_date: June 15, 2018, 1:59 p.m. | lastedit_user: James Sluka |
content:
Attached is a CC3D project based on the bacterium-macrophage demo. The bacterium doesn't start to secrete until MCS 100. It'll take several thousand MCS before the macrophage starts to move. This should give you an idea how to change secretion based on MCS or any other characteristic that you can come up with to identify the particular cell that should be secreting. (Maciek might have a better solution.) File attached: secrete_at_mcs.zip (3.07 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\secrete_at_mcs.zip
id: wrjlq | creation_date: June 15, 2018, 7:47 a.m. | author: Izzy | type: Question |
parent: | lastedit_date: June 18, 2018, 10:09 a.m. | lastedit_user: Izzy |
content:
I recently tried updating to 3.7.7 on my Mac, and everytime I try to run certain Demo simulations in the CC3D player, it crashes. I deleted all of my old CC3D files on my computer, as well as the updated version, and tried re-installing with still no luck. The demo simulations that keep crashing the player are the ones involving diffusion (diffusion_steady_state_2D, SimpleDiffusion, etc.). When the player crashes, I get an error window from Mac saying "python quit unexpectedly."
Does anyone have any troubleshooting suggestions or solutions?
id: kgagn | creation_date: June 15, 2018, 1:22 p.m. | author: James Sluka | type: Answer |
parent: wrjlq | lastedit_date: June 15, 2018, 1:22 p.m. | lastedit_user: James Sluka |
content:
I can confirm that both CC3D 3.7.7 and 3.7.6 crashes on a Mac when running
.../Demos/SteppableDemos/ReactionDiffusionSolverFE_OpenCL_Implicit/SimpleDiffusion
I tried the same demo on a PC (Windows 7) and it also crashes with the error message;
attachments(redirected):
.\CC3D_allanswered_linked_files\Untitled.png
id: oawar | creation_date: June 16, 2018, 3:42 p.m. | author: Maciek Swat | type: Answer |
parent: wrjlq | lastedit_date: June 16, 2018, 3:42 p.m. | lastedit_user: Maciek Swat |
content:
Do those simulations involve by any chance hex lattice? If so there is a visualization bug in the player (already fixed in the source code on github) that was causing the problem. I have just tried diffusion_stead_state_2D.cc3d on OSX High Sierra and it works. If you could send me exact name of the demo you are running and the versio nof your OSX I can start debugging it more.
id: wrjkq | creation_date: June 18, 2018, 10:09 a.m. | author: Izzy | type: Comment |
parent: oawar | lastedit_date: June 18, 2018, 10:09 a.m. | lastedit_user: Izzy |
content:
They do not involve hex lattice. I can confirm that diffusion_steady_state works for me. So far, the demos I've tried that cause the crash are:
SimpleDiffusion.cc3d
DiffusionSolverFE_OpenCL.cc3d
Others, like diffusion_2D and diffusion_2D_kernel, do not crash the program, but do not render at all in the player.
Obviously this list is not exhaustive as I haven't tried to run every demo. I hav macOS High Sierra 10.13.4. Thank you!
id: xzjew | creation_date: June 20, 2018, 2:22 a.m. | author: safiye | type: Question |
parent: | lastedit_date: June 26, 2018, 3:42 a.m. | lastedit_user: safiye |
content:
I would like to ask if I can simulate parent cell as A dividing to child cell as A and B (two different cell types) ?
Thank you in advance.
id: zxjkg | creation_date: June 20, 2018, 10:41 a.m. | author: priyomadhyapok | type: Answer |
parent: xzjew | lastedit_date: June 20, 2018, 10:41 a.m. | lastedit_user: priyomadhyapok |
content:
When A divides into one, one of them will have attributes as 'parentCell' and the other 'childCell'. You can do something like parentChild.type=self.A and childCell.type=self.B (assuming you have initialized your celltypes as A and B)
id: baplp | creation_date: June 21, 2018, 3:03 a.m. | author: safiye | type: Answer |
parent: xzjew | lastedit_date: June 21, 2018, 3:03 a.m. | lastedit_user: safiye |
content:
Thank you, but I wanted to ask if I can simulate parent cell A divide to 2 cells which is child cell A and child cell B.
id: wrjqv | creation_date: June 21, 2018, 4:30 p.m. | author: James Sluka | type: Comment |
parent: baplp | lastedit_date: June 21, 2018, 4:30 p.m. | lastedit_user: James Sluka |
content:
That sounds like a normal cell division. You start with "parent cell A" and get "child cell A" and "child cell B". As Priyom posted, you can assign any cell type you want to each of the child cells. The "parent/child" relationship really isn't meant to be biological (though you could make it so). In CC3D, "parent" just means one of the two cells has the same cell.id as the original cell. The "child" cell will have a newly created cell.id.
id: kgaqq | creation_date: June 26, 2018, 3:42 a.m. | author: safiye | type: Answer |
parent: xzjew | lastedit_date: June 26, 2018, 3:42 a.m. | lastedit_user: safiye |
content:
Thank you, I will work on it.
id: oawre | creation_date: June 20, 2018, 11:05 a.m. | author: Pauli Tikka | type: Question |
parent: | lastedit_date: June 28, 2018, 10:33 a.m. | lastedit_user: Scott H |
content:
Dear reader,
I would like to make a series of simulations that change some of the parameters in the xml file depending on the result of previous simulation, e.g. general diffusion constant. This series would stop when the model solution value is close enough to the experimental value, e.g. distance of certain cells to other cells in a given region.
If I just run regular parameter scans, I can give a string of predefined values, but I would need that this value changes after each simulation run, according to e.g. Newton's method, towards the solution. Is this possible? This would come to my article's chapter called 'parameter estimation'.
Thank you once again for all possible help!
Best regards,
Pauli
id: mqanj | creation_date: June 20, 2018, 1:49 p.m. | author: Scott H | type: Answer |
parent: oawre | lastedit_date: June 20, 2018, 1:49 p.m. | lastedit_user: Scott H |
content:
I would like to know more also. This would help since I want to use the iteration number in naming the output files. How do I access the CurrentIteration value in the ParameterScan xml from the .py steppables?
id: qwlmp | creation_date: June 25, 2018, 12:50 p.m. | author: James Sluka | type: Answer |
parent: oawre | lastedit_date: June 25, 2018, 12:50 p.m. | lastedit_user: James Sluka |
content:
I'm not sure if it is practical to modify and/or intervene in the parameter sweep scripts. I think a better approach would be to write a python script specifically for the optimization and fitting task.
I have a Particle Swarm script that wraps around a CC3D project that will attempt to locate an optimal set of parameters. For complex systems the swarm approach is more likely to find a global minimum than are gradient based methods. Swarms parallelize extremely well (unlike gradient methods) so if you have access to a cluster the process can be fast and efficient. If you are interested in this development code let me know and I'll tell you what is needed. If the project isn't too big, we can use our 64-cpu cluster for the optimization.
id: jgamz | creation_date: June 27, 2018, 9:50 a.m. | author: Pauli Tikka | type: Comment |
parent: qwlmp | lastedit_date: June 27, 2018, 9:50 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
I would be interested in this 'particle swarm' script, and would like to know what is needed. However, at the moment I do not have an access to cluster computing, but I do have a good computer, but possibly get an access to cluster quite soon.
id: mqxvb | creation_date: June 28, 2018, 10:33 a.m. | author: Scott H | type: Comment |
parent: jgamz | lastedit_date: June 28, 2018, 10:33 a.m. | lastedit_user: Scott H |
content:
I am also interested in the particle swarm script.
id: lkaxv | creation_date: June 25, 2018, 5:46 p.m. | author: Ravit Anand | type: Question |
parent: | lastedit_date: June 29, 2018, 1:42 p.m. | lastedit_user: James Sluka |
content:
I am using CellDraw to generate a PIF file. After drawing the configuration when I export the PIF file using Potts generation the CellDraw interface goes to non-responding mode.
id: ernvz | creation_date: June 26, 2018, 10:13 a.m. | author: James Sluka | type: Answer |
parent: lkaxv | lastedit_date: June 26, 2018, 10:13 a.m. | lastedit_user: James Sluka |
content:
What operating system are you using; Windows, Linux, MacOS...?
id: ernkj | creation_date: June 27, 2018, 3:06 p.m. | author: Ravit Anand | type: Comment |
parent: ernvz | lastedit_date: June 27, 2018, 3:06 p.m. | lastedit_user: Ravit Anand |
content:
I am using Windows 10.
id: gnmgz | creation_date: June 29, 2018, 1:41 p.m. | author: James Sluka | type: Answer |
parent: lkaxv | lastedit_date: June 29, 2018, 1:42 p.m. | lastedit_user: James Sluka |
content:
Check this previous answer;
https://www.allanswered.com/post/omzwe/#wlzxv
and this page
http://www.compucell3d.org/SrcBin/CellDrawPyQt4
Basically, CellDraw is getting old and may not run correctly in the newest releases. If the links above don't help, or if it is really too much work, we have a tool that can convert any bitmap image into a pif file. So make your layout in a drawing program (object oriented programs work better than do programs like MS Paint), save the file as a bitmap (bmp, other file formats work also such as png) and we'll convert it for you. Or, if you prefer we can send you the python code (2.7) to do the conversion.
id: lkagl | creation_date: June 27, 2018, 4:39 p.m. | author: Mahua Roy | type: Question |
parent: | lastedit_date: June 29, 2018, 5:21 p.m. | lastedit_user: Mahua Roy |
content:
I am getting this error while copying SBMLs during mitosis:
Error: CVODE Error: CV_CONV_FAILURE, Module: CVODE, Function: CVode, Message: At t = 0 and h = 7.85582e-10, the corrector convergence test failed repeatedly or with |h| = hmin.
Error: rr::IntegratorException::IntegratorException(const std::string &, const std::string &)what: CVODE Error: CV_CONV_FAILURE: Convergence test failures occurred too many times (= MXNCF = 10) during one internal timestep or occurred with |h| = hmin., where: virtual double rr::CVODEIntegrator::integrate(double, double)
This is only happening when I tried to assign different Initial conditions to each cell ID initially. However, I do have copy SBMLs from parent cell to Child Cell.
self.copySBMLs(_fromCell= parentCell, _toCell=childCell) # Copy the SBML to the child Cell
The way I am adding SBML initially is this ( I start with an initial 9 cells )
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[1], _stepSize=stepSize,_initialConditions=IC1)
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[2], _stepSize=stepSize,_initialConditions=IC2)
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[3], _stepSize=stepSize,_initialConditions=IC3)
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[4], _stepSize=stepSize,_initialConditions=IC4)
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[5], _stepSize=stepSize,_initialConditions=IC5)
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[6], _stepSize=stepSize,_initialConditions=IC6)
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[7], _stepSize=stepSize,_initialConditions=IC7)
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[8], _stepSize=stepSize,_initialConditions=IC8)
self.addSBMLToCellIds(_modelFile=modelFile, _modelName='PC_ODE', _ids=[9], _stepSize=stepSize,_initialConditions=IC9)
Where each IC # is a dictionary of values.
I would highly appreciate your help.
Kind regards,
Mahua
id: xzabg | creation_date: June 28, 2018, 7:25 p.m. | author: Maciek Swat | type: Answer |
parent: lkagl | lastedit_date: June 28, 2018, 7:25 p.m. | lastedit_user: Maciek Swat |
content:
Could you post your SBML model here? It might happen that for some "edge cases" in terms of parameter choice of the SBML model you might end up with this type of warning.
id: rrnem | creation_date: June 29, 2018, 1:34 p.m. | author: James Sluka | type: Answer |
parent: lkagl | lastedit_date: June 29, 2018, 1:34 p.m. | lastedit_user: James Sluka |
content:
I suspect one of more of your parameter sets is giving the SBML solver problems. You can try a dedicated SBML solver (Like COPASI or CellDesigner) to see if they also have problems with particular parameter sets.
In CC3D, you can try to narrow down which set is the problem by commenting out all the SBML initialization but one and hunting down the problematic set.
Also, have python print you IC# texts just to make sure they exist and their syntax is correct.
id: vxpnp | creation_date: June 29, 2018, 1:44 p.m. | author: Mahua Roy | type: Answer |
parent: lkagl | lastedit_date: June 29, 2018, 1:44 p.m. | lastedit_user: Mahua Roy |
content:
I fixed the issue with having multiple SBML with initial conditions specified for each within the SBML, since I needed to assign different initial conditions to each cell ID while the overall model remains the same.
The CVODE error was occurring only when the mitosis was about to happen. I suspect that would be because I could not figure out how to specify initial conditions as the last state of the cell and pass it on to the child cell. The zero initial conditions in the parent SBML could be the problem.
However, I am still confused if I am doing the right thing by giving the same model name to all the SBMLs. Since the model is not changing nor the parameters, but only the initial conditions, I thought it only needs to be specified at the beginning. Here is the snippets of my code as well as the SBML as attached.
****
modelFile1 = './Simulation/S3_diffusion10.xml'
modelFile2 = './Simulation/S3_diffusion11.xml'
modelFile3 = './Simulation/S3_diffusion12.xml'
modelFile4 = './Simulation/S3_diffusion13.xml'
self.addSBMLToCellIds(_modelFile=modelFile1, _modelName='PC_ODE', _ids=[1], _stepSize=stepSize)
self.addSBMLToCellIds(_modelFile=modelFile2, _modelName='PC_ODE', _ids=[2], _stepSize=stepSize)
self.addSBMLToCellIds(_modelFile=modelFile3, _modelName='PC_ODE', _ids=[3], _stepSize=stepSize)
self.addSBMLToCellIds(_modelFile=modelFile4, _modelName='PC_ODE', _ids=[4], _stepSize=stepSize)
for cell in self.cellListByType(self.PCANCER, self.QCANCER, self.PSTEM, self.QSTEM):
self.setSBMLValue(_modelName='PC_ODE', _valueName='Glu_out', _value=Glu_out,
_cell=cell) # This is glucose out
self.setSBMLValue(_modelName='PC_ODE', _valueName='Glutamine_out', _value=Glutamine_out,
_cell=cell) # This is glutamine out
*** This is during the mitosis steppable :
State_parentcell=self.getSBMLState(_modelName='PC_ODE',_cell=parentCell) # Get all the states
self.copySBMLs(_fromCell= parentCell, _toCell=childCell) # Copy the SBML to the child Cell
self.setSBMLState(_modelName='PC_ODE', _cell=childCell, _state=State_parentcell)
At this point I just set the state of the child cell to be equal to that of the parent cell. However, Since the SBML had zero initial conditions, I think that is where the error was being generated.
File attached: S3_diffusion.xml (418.43 KB)
Am I right in giving the same name with the models with different initial conditions for different cell ID?
attachments(redirected):
.\CC3D_allanswered_linked_files\S3_diffusion.xml
id: nxrqz | creation_date: June 29, 2018, 5:19 p.m. | author: James Sluka | type: Answer |
parent: lkagl | lastedit_date: June 29, 2018, 5:19 p.m. | lastedit_user: James Sluka |
content:
"Am I right in giving the same name with the models with different initial conditions for different cell ID?"
Yes, the _modelName is specific for the particular cell so there is no confusion (to CC3D) that the same name refers to different SBML for different cells.
"At this point I just set the state of the child cell to be equal to that of the parent cell."
Be careful here. Make sure you know exactly what units the SBML file is using. SBML by default uses mass (grams, moles, ...), tools like COPASI convert things to concentration units (gram/liter, molarity, ...). So if your SBML units are grams (so CC3D uses it as grams/cell) and you divide the cell and then assign the same amount to both parent and daughter you will have doubled the amount of stuff. If your SBML is actually using concentration then you are OK since the amount/cell is the concentration times the cell's volume.
id: povgx | creation_date: June 29, 2018, 5:21 p.m. | author: Mahua Roy | type: Answer |
parent: lkagl | lastedit_date: June 29, 2018, 5:21 p.m. | lastedit_user: Mahua Roy |
content:
Thank you Dr. Sluka. Yes, my model uses concentration.
id: vxgap | creation_date: June 28, 2018, 1:06 a.m. | author: Ravit Anand | type: Question |
parent: | lastedit_date: June 29, 2018, 1:05 p.m. | lastedit_user: Juliano Ferrari Gianlupi |
content:
Hello,
I am trying to get an initial 3D configuration of cells as follows:
There are two types of cells, and their arrangement is into concentric spheres of some radii. So, the inner spherical region contains cells of Type 1 and the outer spherical region contains Type 2 cells.
How should I go about to initialise this configuration?
Thank you.
id: wraor | creation_date: June 28, 2018, 2:42 p.m. | author: Juliano Ferrari Gianlupi | type: Answer |
parent: vxgap | lastedit_date: June 29, 2018, 1:05 p.m. | lastedit_user: Juliano Ferrari Gianlupi |
content:
You could use two regions in blob initializer. First, you create the outer sphere filling it completely. Then you create another region for the inner sphere, overriding that portion of the sphere. As so:
<!-- outer sphere region -->
<Steppable Type="BlobInitializer">
<!-- Outer sphere region -->
<Region>
<!-- center it wherever is apropriate -->
<Center x="500" y="500" z="500"/>
<!-- give it the apropriate size -->
<Radius>100</Radius>
<Gap>0</Gap>
<Width>25</Width>
<Types>TypeB</Types>
</Region>
<!-- inner sphere region -->
<!-- Initial layout of cells in the form of spherical (circular in 2D) blob -->
<Region>
<!-- center it wherever is apropriate -->
<Center x="500" y="500" z="500"/>
<!-- give it the apropriate size -->
<Radius>50</Radius>
<Gap>0</Gap>
<Width>25</Width>
<Types>TypeA</Types>
</Region>
</Steppable>
id: jglnq | creation_date: June 29, 2018, 5:31 a.m. | author: Ravit Anand | type: Comment |
parent: wraor | lastedit_date: June 29, 2018, 5:31 a.m. | lastedit_user: Ravit Anand |
content:
I tried exactly the same as you suggested and the result I got is that the whole region is only filled with TypeB cells.
There was no effect of the second initialisation.
id: baqeg | creation_date: June 29, 2018, 1:02 p.m. | author: Juliano Ferrari Gianlupi | type: Comment |
parent: jglnq | lastedit_date: June 29, 2018, 1:02 p.m. | lastedit_user: Juliano Ferrari Gianlupi |
content:
Sorry, my mistake. The two regions should be in one steppable call. I'll edit my original response.
id: xzang | creation_date: June 29, 2018, 1:04 p.m. | author: Ravit Anand | type: Comment |
parent: baqeg | lastedit_date: June 29, 2018, 1:04 p.m. | lastedit_user: Ravit Anand |
content:
Yeah, thankyou I got. It worked.
id: baqog | creation_date: June 28, 2018, 5:32 p.m. | author: Calvin | type: Question |
parent: | lastedit_date: June 29, 2018, 1:03 p.m. | lastedit_user: Calvin |
content:
Hi all,
I'm wondering if I understand adhesion energy correctly for the adhesion contact plugin. So far, my understanding is that the energy hierarchy dictates behaviour.
For example, in the cell sorting demonstration, if cell type A is highly adhesive to self, one would set the energies hierarchy as A-A=1, A-M (medium) 10, and M-M 0, something like this. Roughly, as long as the hierarchy is correct, the sorting should be robust.
However, I have tested energies where A-M<A-A which should be that cell type A favors binding to medium rather than itself. I would expect cells to disperse into the medium.
Instead, I observe cells still adhering and forming a spheroid under these conditions. There appears to be a fine number for A-M where if A-M<A-A by slightly, cells will still adhere to one another rather than disperse.
The plugins I am using are volume, surface area, contact energy, center of mass ,neighbor tracker, and moment of inertia. I suspect that it is the volume and surface plugins, as they are the only possible energy terms in the probability distribution function.
Example energy for the 3D cell sorting demo.
<Plugin Name="Contact">
<Energy Type1="Medium" Type2="Medium">0</Energy>
<Energy Type1="NonCondensing" Type2="NonCondensing">14</Energy>
<Energy Type1="Condensing" Type2="Condensing">14</Energy>
<Energy Type1="NonCondensing" Type2="Condensing">14</Energy>
<Energy Type1="NonCondensing" Type2="Medium">10</Energy>
<Energy Type1="Condensing" Type2="Medium">10</Energy>
<NeighborOrder>3</NeighborOrder>
</Plugin>
I have run simulations to 30k steps without significant dispersion. All neighbor order is 3.
Have I missed something obvious? Any help would be much appreciated. Thanks!
id: qwaok | creation_date: June 28, 2018, 7:23 p.m. | author: Maciek Swat | type: Answer |
parent: baqog | lastedit_date: June 28, 2018, 7:23 p.m. | lastedit_user: Maciek Swat |
content:
Here is the rule of thumb you should apply:
if you want cells to stick to each other - make sure they have low (in relative terms) adhesion coefficient, if you want them to avoid each other make sure they have high adhesion coefficient (in relative terms). Another rule of thumb: avoid mixing positive and negative energy coefficients .
I think your overall understanding of adhesion energy coefficients is correct but in this particular case you may want to lower cell-medium adhesion
<Energy Type1="NonCondensing" Type2="Medium">2</Energy>
<Energy Type1="Condensing" Type2="Medium">2</Energy>
also it depends what temperature you have used in the system
Also medium-medium energy does not really matter
For completness I am attaching a simulation where dispersion does happen . All I had to do was to drop cell-medium adhesion coefficient
File attached: sorting_all_answered.zip (7.39 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\sorting_all_answered.zip
id: rrnlm | creation_date: June 28, 2018, 7:35 p.m. | author: Calvin | type: Answer |
parent: baqog | lastedit_date: June 28, 2018, 7:39 p.m. | lastedit_user: Calvin |
content:
Thanks for the reply. I understand that the energies can be set very high/different from one another to get desired dispersion/adherence.
My question is why can I break the cell adhesion hierarchy, established in the plos somitogenesis paper, which states that the order of energy is most important to yield desired behaviour.
A Multi-cell, Multi-scale Model of Vertebrate Segmentation and Somite Formation
A-M=10 and A-A=14 yields adherence when theoretically, it should yield dispersion. I have tried this at T=10 and T=40. If I increase temperature, dispersion is more favored (due to unfavorable interactions being even more probable) but even at T=10 or 40, cells should disperse over time based solely on A-M=10 and A-A=14. I'm wondering if there's some unaccounted energy term that is also used in calculating the probability, which causes cohesion, aside from the volume and surface constraints used.
Hope that clear it up, thanks!
id: awblg | creation_date: June 29, 2018, 6:35 a.m. | author: dali Zan | type: Comment |
parent: qwaok | lastedit_date: June 29, 2018, 6:35 a.m. | lastedit_user: dali Zan |
content:
‘avoid mixing positive and negative energy coefficients.’
Does this mean that all coefficients in contact plugin must be all positive or all negative?
id: wralr | creation_date: June 29, 2018, 11:35 a.m. | author: Maciek Swat | type: Answer |
parent: baqog | lastedit_date: June 29, 2018, 11:35 a.m. | lastedit_user: Maciek Swat |
content:
So your thinking is not entirely correct regarding theory. Here is explanation:
Imagine you have two cells: 1, and 2
--------------
| | |
| 1 | 2 |
--------------
When they touch each other and the neighbor order is 1 the the contact energy associated with the interface between them is (per your simulation ) 14
Now, when you separate the two you are creating 2 interfaces (medium-cell1 and medium-cell2)
------- -------
| | | |
| 1 | | 2 |
------- ------
and each interface will "cost you" 10 units of energy so now you hav a choice - keep one interface and have energy associated with it 14/unit length or have 2 interfaces and have energy associated with the two 10+10=20/unit length
This is why if you want cell dispersion you need to lower then energy between cells and medium to around 7
Let me know if this makes sense
id: ergqj | creation_date: June 29, 2018, 12:02 p.m. | author: James Sluka | type: Answer |
parent: baqog | lastedit_date: June 29, 2018, 12:02 p.m. | lastedit_user: James Sluka |
content:
"based solely on A-M=10 and A-A=14"
I think that might be where your thinking is off by a bit. The real situation would be;
2(A-M)=20 versus A-A=14
When A-A separates it creates two A-M interfaces, each with the same length (or surface) as the single A-A interface length (or surface).
id: qwavk | creation_date: June 29, 2018, 1:03 p.m. | author: Calvin | type: Answer |
parent: baqog | lastedit_date: June 29, 2018, 1:03 p.m. | lastedit_user: Calvin |
content:
That makes perfect sense. I knew I missed something obvious. Thank you both very much for the help!
id: vxpxp | creation_date: July 2, 2018, 3:13 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: July 2, 2018, 1:43 p.m. | lastedit_user: Maciek Swat |
content:
When I read some paper about bionet, the python part of it often import a plugin named bionetAPI, but when I import bionetAPI in my file, it will shows 'no module named bionetAPI'. Is it not included in the default library?
id: jgleq | creation_date: July 2, 2018, 12:33 p.m. | author: Maciek Swat | type: Answer |
parent: vxpxp | lastedit_date: July 2, 2018, 12:33 p.m. | lastedit_user: Maciek Swat |
content:
BionetSolver has been phased out and was replaced by SBMLSolver (much better library)
id: awbzg | creation_date: July 2, 2018, 12:46 p.m. | author: dali Zan | type: Comment |
parent: jgleq | lastedit_date: July 2, 2018, 12:46 p.m. | lastedit_user: dali Zan |
content:
thanks for told me that, but I wonder it not possible to call the bionetAPI function library in Python now? Or the name of the library is changed? My CC3D version is 3.7.7 .
id: nxroz | creation_date: July 2, 2018, 12:52 p.m. | author: Maciek Swat | type: Answer |
parent: vxpxp | lastedit_date: July 2, 2018, 12:52 p.m. | lastedit_user: Maciek Swat |
content:
Ar you trying to run some old code that uses BionetSolver? If so then you may pick an older version of CC3D and run it there but you really should switch to SBMLSolver it is much easier to use interface. If you need help with porting your code from BionetSolver to SBMLSolver please let us know
id: povnx | creation_date: July 2, 2018, 1:06 p.m. | author: dali Zan | type: Comment |
parent: nxroz | lastedit_date: July 2, 2018, 1:06 p.m. | lastedit_user: dali Zan |
content:
Yes, I'm learning how to use BionetSolver using the code in some previous papers. I will download an old version of CC3D to try to run BionetSolver, and then try to learn the new SBMLSolver. I'll ask if there's a problem with the transition, thank you.
id: zxagb | creation_date: July 2, 2018, 1:43 p.m. | author: Maciek Swat | type: Answer |
parent: vxpxp | lastedit_date: July 2, 2018, 1:43 p.m. | lastedit_user: Maciek Swat |
content:
I would start with SBMLSolver
id: babag | creation_date: Sept. 28, 2018, 9:12 a.m. | author: 昊 杨 | type: Comment |
parent: jgleq | lastedit_date: Sept. 28, 2018, 9:12 a.m. | lastedit_user: 昊 杨 |
content:
How to port BionetSolver code to SBMLSolver?
id: vxpgb | creation_date: July 9, 2018, 11:33 p.m. | author: levenazhang | type: Question |
parent: | lastedit_date: July 10, 2018, 12:32 p.m. | lastedit_user: James Sluka |
content:
I have a kidney cystic disease simulation now.
This is a part of my codes.
for compartmentList in self.clusterList:
clusterId=0
clusterVolume=0
for cell in CompartmentList(compartmentList):
clusterVolume+=cell.volume
clusterId=cell.clusterId
if mcs==100:
mitosisClusterIdList.append(clusterId) #At this part, I only want to make the cluster5 mitosis, so how can I do it?
for clusterId in mitosisClusterIdList:
id: awbbm | creation_date: July 10, 2018, 12:28 p.m. | author: James Sluka | type: Answer |
parent: vxpgb | lastedit_date: July 10, 2018, 12:32 p.m. | lastedit_user: James Sluka |
content:
It is hard to interpret the code snippet, it will help if you format it as "code" using the {;} option in the editor.for compartmentList in self.clusterList:
clusterId=0
clusterVolume=0
for cell in CompartmentList(compartmentList):
clusterVolume+=cell.volume
clusterId=cell.clusterId
if mcs==100:
mitosisClusterIdList.append(clusterId) #At this part, I only want to make the cluster5 mitosis, so how can I do it?
for clusterId in mitosisClusterIdList:
If you know the ID of the cluster of interest is 5 then it should just be;mitosisClusterIdList.append(5) #At this part, I only want to make the cluster5 mitosis, so how can I do it?
Or, if your code is supposed to be;
Then change the
for compartmentList in self.clusterList:
clusterId=0
clusterVolume=0
for cell in CompartmentList(compartmentList):
clusterVolume+=cell.volume
clusterId=cell.clusterId
if mcs==100:
mitosisClusterIdList.append(clusterId) #At this part, I only want to make the cluster5 mitosis, so how can I do it?
for clusterId in mitosisClusterIdList:
to
if mcs==100:
if mcs==100 and clusterId==5:
id: jglal | creation_date: July 10, 2018, 6:23 a.m. | author: Thomas Achee | type: Question |
parent: | lastedit_date: July 12, 2018, 10:49 a.m. | lastedit_user: James Sluka |
content:
This isn't for research, simply playing with the shapes and textures for some potential artistic works.
Questions for you brilliant scientists:
-What are your tips for making these simulations run as quickly as possible?
-Potential avenues to try?
Is GPU acceleration/ and or parallelization implementation even remotely feesable?
Any ideas or potential pitfalls would be greatly appreciated, before I go off and try something crazy and overly complicated.
I'm pretty adept with python and motivated to learn
id: jglll | creation_date: July 10, 2018, 12:18 p.m. | author: James Sluka | type: Answer |
parent: jglal | lastedit_date: July 10, 2018, 12:18 p.m. | lastedit_user: James Sluka |
content:
CC3D already has parallelization built in and often works pretty well. You can also gain speed by limiting how much text is written to the console. The debug frequency in particular can slow down a simulation significantly.
To do both these things, add the lines below to your project's xml file (after the end of the <Potts> block);
<Metadata>
<DebugOutputFrequency>100</DebugOutputFrequency>
<NumberOfProcessors> 4</NumberOfProcessors>
</Metadata>
The above tells CC3D to only output the step info every 100 MCS and that it should try to use 4 CPUs (or threads, or cores). If your python script also writes to the terminal (with print statements) then remove or reduce how often that is done.
If a surface constraint isn't needed you can also remove that from the simulation, which helps speed. Check your xml for a chunk like;<Plugin Name="Surface">
<SurfaceEnergyParameters CellType="typeA" LambdaSurface="2.0" TargetSurface="79"/>
<SurfaceEnergyParameters CellType="typeB" LambdaSurface="2.0" TargetSurface="79"/>
</Plugin>
and either comment it out or delete it. Also remove any reference in your python file to cells' surface parameters (targetSurface, lambdaSurface).
For artistic results you might consider using periodic boundary conditions, which will wrap the simulation around and removes the effects of the border on the simulation. If a cell drifts off the right side of the simulation box it reappears on the left. Cells on one side of the box interact with cells on the other via the wrapping. This will help to generate repetitive patterns. In the <Potts> section of the xml file add; <Boundary_x>Periodic</Boundary_x>
<Boundary_y>Periodic</Boundary_y>
(You can also add an additional line if you want the Z-axis to be periodic as well.)
You can also explore removing an unneeded (for your simulation) Plugins. In your xml file look for things like <Plugin Name="CenterOfMass"> and remove them if they aren't needed.
One more thing to try is a hexagonal (instead of square) lattice. That probably won't help speed but a hexagonal lattice might give more interesting patterns since the symmetry goes from 4 to 6. In the <Potts> block of the xml file add; <LatticeType>Hexagonal</LatticeType>
There are a couple changes in the player that can also speed things up;
1. [visualization tab][cell borders] turn off if you don't need the cell borders. In large simulations (particularly in 3D) drawing cell borders takes a lot of time.
2. [Tools tab][Configuration...][output tab];
a. increase the "update screen every Nth MCS" to a larger value so the screen isn't rewritten so often.
b. uncheck the "save image every Nth MCS" or set to a large value
c. uncheck the "Save lattice every Nth MCS"
3. [Tools tab][Configuration...][Axes'n'Decor tab];
a. uncheck everything.
I hope these ideas help.
id: baqne | creation_date: July 12, 2018, 5:08 a.m. | author: Thomas Achee | type: Answer |
parent: jglal | lastedit_date: July 12, 2018, 5:08 a.m. | lastedit_user: Thomas Achee |
content:
Wow, what an incredibly in depth answer! Thank you so much, Dr.Sulka!
id: mqxgz | creation_date: July 12, 2018, 10:49 a.m. | author: James Sluka | type: Comment |
parent: baqne | lastedit_date: July 12, 2018, 10:49 a.m. | lastedit_user: James Sluka |
content:
Your welcome. Feel free to post any interesting or pleasing results you get with CC3D to this forum.
id: gnmjk | creation_date: July 13, 2018, 2:44 p.m. | author: Jairaj Mathur | type: Question |
parent: | lastedit_date: July 18, 2018, 8:21 a.m. | lastedit_user: Maciek Swat |
content:
Hi all
I am trying to install compucell3D on ubuntu 16.04 LTS. I followed the steps mentioned on the tutorial page (http://www.compucell3d.org/SrcBin/LinuxCompile). Everything went smoothly, except for the last step, where I run compucell3D using ./compucell3d.sh, ad it gives the following error:
./compucell3d.sh: 10: ./compucell3d.sh: Bad substitution
CompuCell3D - version 3.7.7
['/home/jairaj/cc3D_install/player5', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/jairaj/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Could not import roadrunner
Segmentation fault (core dumped)
Can someone let me know what is going on? Here are the specs for my machine:
RAM: 32 GB
Processor: Intel® Xeon(R) CPU E5-2687W v3 @ 3.10GHz × 20
graphics: NVS 310/PCIe/SSE2
Thanks a lot!
id: jgvnj | creation_date: July 18, 2018, 8:21 a.m. | author: Maciek Swat | type: Answer |
parent: gnmjk | lastedit_date: July 18, 2018, 8:21 a.m. | lastedit_user: Maciek Swat |
content:
how did you install libroadrunner? Are you on physical machine or running inside virtual machine?
another option is to use conda to install cc3d:
Here is a link:
http://www.compucell3d.org/SrcBin/CompilingOnLinux2017
One of the prerequisites here is that you install miniconda before trying this way of installing CC3D
Here is a link
https://conda.io/miniconda.html
id: ergvk | creation_date: July 14, 2018, 9:07 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: Aug. 17, 2018, 3:08 p.m. | lastedit_user: Juliano Ferrari Gianlupi |
content:
How can I attach a timer to a cell , let it die after a certain number of steps. This kind of cell does not exist at the beginning, it will appear at a certain condition of the model running.
id: gnmpk | creation_date: July 16, 2018, 12:49 p.m. | author: James Sluka | type: Answer |
parent: ergvk | lastedit_date: July 16, 2018, 12:49 p.m. | lastedit_user: James Sluka |
content:
You can attach a python dictionary to a cell when it is created, so you can log the mcs step that the cell was created at. When you create the cell of this particular type;
cellDict=CompuCell.getPyAttrib(cell) # attach a dictionary to this cell
cellDict["createdMCS"] = mcs # add a dictionary item for the step the cell was created.
print "CellID=", cell.id," dictionary element createdMCS=",cellDict["createdMCS"]
Elsewhere you have another chunk of python code that determines how old a cell is and kills it if it is too old;
for cell in self.cellList:
if cell.type == "The type of cell that you want to track and kill":
cellDict=CompuCell.getPyAttrib(cell) # get the dictionary for this cell
if (mcs - cellDict["createdMCS"]) > 100 : # kill if the cell is > 100 mcs old
cell.targetVolume=0
id: vxlxg | creation_date: Aug. 17, 2018, 3:08 p.m. | author: Juliano Ferrari Gianlupi | type: Comment |
parent: gnmpk | lastedit_date: Aug. 17, 2018, 3:08 p.m. | lastedit_user: Juliano Ferrari Gianlupi |
content:
You don't need to do
cellDict=CompuCell.getPyAttrib(cell)
cellDict["createdMCS"] = mcs
You can just do
cell.dict["attribute"] = attribute
id: nxemk | creation_date: July 26, 2018, 12:26 p.m. | author: Pauli Tikka | type: Question |
parent: | lastedit_date: Aug. 16, 2018, 9:09 a.m. | lastedit_user: Pauli Tikka |
content:
Dear reader,
I have encountered some installation issues with the older, and also the newest cc3d linux version(/s) [using win ubuntu 18].
Some additional info below:
File attached: installation_25718.txt (3.33 KB)
I wonder if somebody could (please):
a) post the newest cc3d linux binary and installation guide to internet (here or some other place, https://sourceforge.net/projects/cc3d/?), or
b) send (here/the other cc3d internet site) completely installed&dependency free linux version's files/folder,
which would presumably work as such when run on (win app) ubuntu file system (../compucell3d.sh +enter)?
c) have any other ideas, what(?)
Thanks!
Best regards,
Pauli
attachments(redirected):
.\CC3D_allanswered_linked_files\installation_25718.txt
id: bawvn | creation_date: July 31, 2018, 1:31 p.m. | author: Pauli Tikka | type: Answer |
parent: nxemk | lastedit_date: July 31, 2018, 1:31 p.m. | lastedit_user: Pauli Tikka |
content:
Hi,
I got the installation binary files, but still have some issues, namely:
I tried to run the program after cygwin (1) and ubuntu 18 (win) (2) installations, but...
(1)
pauli@Kansallinen ~/CC3D_v377
$ ./compucell3d.sh
CompuCell3D - version 3.7.7
./compucell3d.sh: rivi 40: /home/pauli/CC3D_v377/Python27/bin/python: cannot execute binary file: Exec format error
(2)
(fyi)
pauli@Kansallinen:~/CC3D_v377$ ls -l
total 20
...
-rwxr-xr-x 1 1481910 3007 1473 Feb 1 00:52 compucell3d.sh
...
-rwxr-xr-x 1 1481910 3007 846 Feb 5 18:30 optimization.sh
-rwxr-xr-x 1 1481910 3007 1477 Feb 5 18:29 paramScan.sh
drwxr-sr-x 1 1481910 3007 512 Feb 5 23:07 player5
...
-rwxr-xr-x 1 1481910 3007 1510 Feb 5 23:19 runScript.sh
-rwxr-xr-x 1 1481910 3007 618 Feb 1 00:53 twedit++.sh
THEN:
pauli@Kansallinen:~/CC3D_v377$ ./compucell3d.sh
./compucell3d.sh: 10: ./compucell3d.sh: Bad substitution
CompuCell3D - version 3.7.7
['/home/pauli/CC3D_v377/player5', '/home/pauli/CC3D_v377/Python27/lib/python27.zip', '/home/pauli/CC3D_v377/Python27/lib/python2.7', '/home/pauli/CC3D_v377/Python27/lib/python2.7/plat-linux2', '/home/pauli/CC3D_v377/Python27/lib/python2.7/lib-tk', '/home/pauli/CC3D_v377/Python27/lib/python2.7/lib-old', '/home/pauli/CC3D_v377/Python27/lib/python2.7/lib-dynload', '/home/pauli/.local/lib/python2.7/site-packages', '/home/pauli/CC3D_v377/Python27/lib/python2.7/site-packages']
QXcbConnection: Could not connect to display
Aborted (core dumped)
tried several pages for the display issue, but does not seem to work...
/e.g. https://superuser.com/questions/1075659/open-ubuntu-bashs-gui-applications-on-windows-10
Any ideas/suggestions how to solve?
id: lkmgm | creation_date: Aug. 2, 2018, 5:23 p.m. | author: Maciek Swat | type: Answer |
parent: nxemk | lastedit_date: Aug. 2, 2018, 5:23 p.m. | lastedit_user: Maciek Swat |
content:
I will build binaries for kubuntu 18.04 64 bit later soon. In the mean time you may want to check easy-to-follow conda-based installation instructions
http://www.compucell3d.org/SrcBin/CompilingOnLinux2017
This could get you running on many types of linuxes really fast . Regardless we will post binaries for 18.04
id: xzwmo | creation_date: Aug. 3, 2018, 2:50 a.m. | author: Maciek Swat | type: Answer |
parent: nxemk | lastedit_date: Aug. 3, 2018, 2:50 a.m. | lastedit_user: Maciek Swat |
content:
We uploaded ubuntu 18_04_64 binaries to the sourceforge website:
https://sourceforge.net/projects/cc3d/files/3.7.8/linux/ubuntu_18_04_64/
Take a look and see if they work for you. We tested them on clean install of ubuntu 18_04 64bit and they seem to work fine
id: wrxog | creation_date: Aug. 3, 2018, 8:26 a.m. | author: Pauli Tikka | type: Answer |
parent: nxemk | lastedit_date: Aug. 3, 2018, 8:26 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
Thank you for your answer! Should there be any issues I’ll let you know!
BR,
Pauli
id: kgozo | creation_date: Aug. 14, 2018, 10:11 a.m. | author: Pauli Tikka | type: Comment |
parent: xzwmo | lastedit_date: Aug. 14, 2018, 10:11 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
Thanks for the binaries again. So now
I experienced the same problem with the screen/gui, when opening the compucell3d.sh:
ptikka@Kansallinen:~/CC3D_GIT/378_auto$ ./compucell3d.sh -x
./compucell3d.sh: 10: ./compucell3d.sh: Bad substitution
CompuCell3D - version 3.7.6
['/home/ptikka/CC3D_GIT/378_auto/player5', '/home/ptikka/CC3D_GIT/378_auto/Python27/lib/python27.zip', '/home/ptikka/CC3D_GIT/378_auto/Python27/lib/python2.7', '/home/ptikka/CC3D_GIT/378_auto/Python27/lib/python2.7/plat-linux2', '/home/ptikka/CC3D_GIT/378_auto/Python27/lib/python2.7/lib-tk', '/home/ptikka/CC3D_GIT/378_auto/Python27/lib/python2.7/lib-old', '/home/ptikka/CC3D_GIT/378_auto/Python27/lib/python2.7/lib-dynload', '/home/ptikka/CC3D_GIT/378_auto/Python27/lib/python2.7/site-packages']
QXcbConnection: Could not connect to display 127.0.0.1:10.0
The best self-help that I found was here (below), but it did not work for me (see above):
https://stackoverflow.com/questions/44720732/php-ubuntu-qxcbconnection-could-not-connect-to-display-aborted
Aborted (core dumped)
Any Ideas how to solve this?
Next I test the conda_based installation.
BR.
Pauli
id: nxvzb | creation_date: Aug. 15, 2018, midnight | author: Maciek Swat | type: Comment |
parent: kgozo | lastedit_date: Aug. 15, 2018, midnight | lastedit_user: Maciek Swat |
content:
At this point I really think you should try compiling the code yourself. Part of a challenge here is that we are dealing with non-standard configuration. Are you on cluster of some sort or do you have root access to the machine you are trying to install too?
If you are in charge of the machine I would recommend using ubuntu 18_04_64 bit.
Another task you can perform now is to try running any of the pyqt5 demos . for example try downloading and running https://github.com/baoboa/pyqt5/tree/master/examples/mainwindows/mdi
For this to work you need to have functional copy of pyqt5 which is easy to install via conda , simply type
conda install pyqt
Let me know if you can run any pyqt5 application. If , yes than we should try figuring out how to compile CC3D on your system. The conda-based installer should work
id: rrwgo | creation_date: Aug. 15, 2018, 10:03 a.m. | author: Pauli Tikka | type: Comment |
parent: nxvzb | lastedit_date: Aug. 15, 2018, 10:24 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
Thanks!
I tried both of the solutions:
1) ...In the mean time you may want to check easy-to-follow conda-based installation instructions
(http://www.compucell3d.org/SrcBin/CompilingOnLinux2017)
2) ...installed pyqt with: conda install -c conda-forge pyqt ,
and tried the compiling cc3d in my system; which is at the moment just my win PC with ubuntu 18.04 application from MSstore.
The idea was to later run my model simulations as a part of a swarm parameter estimation code of J. Sluka with my/his cluster computers that have linux cc3d paramscan.sh available.
---
But the results were (for 1,2):
1)
USING SYSTEM
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ptikka/cc3d_376_build
[ 5%] Built target muParserShared
[ 6%] Built target BasicUtilsShared
[ 9%] Built target cleaver
[ 11%] Built target AutomatonShared
[ 11%] Swig source
[ 12%] Swig source
:1: Error: Unable to find 'swig.swg'
:3: Error: Unable to find 'python.swg'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CC3DXML/CC3DXML.i:32: Error: Unable to find 'std_string.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CC3DXML/CC3DXML.i:35: Error: Unable to find 'std_map.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CC3DXML/CC3DXML.i:38: Error: Unable to find 'std_vector.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CC3DXML/CC3DXML.i:41: Error: Unable to find 'std_list.i'
core/pyinterface/CC3DXML/CMakeFiles/CC3DXML_swig_compilation.dir/build.make:61: recipe for target 'core/pyinterface/CC3DXML/CMakeFiles/_CC3DXML.dir/CC3DXMLPYTHON.stamp' failed
make[2]: *** [core/pyinterface/CC3DXML/CMakeFiles/_CC3DXML.dir/CC3DXMLPYTHON.stamp] Error 1
:make[2]: *** Deleting file 'core/pyinterface/CC3DXML/CMakeFiles/_CC3DXML.dir/CC3DXMLPYTHON.stamp'
1CMakeFiles/Makefile2:5451: recipe for target 'core/pyinterface/CC3DXML/CMakeFiles/CC3DXML_swig_compilation.dir/all' failed
:make[1]: *** [core/pyinterface/CC3DXML/CMakeFiles/CC3DXML_swig_compilation.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Error: Unable to find 'swig.swg'
:3: Error: Unable to find 'python.swg'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:16: Error: Unable to find 'typemaps.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:54: Error: Unable to find 'windows.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:124: Error: Unable to find 'stl.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:129: Error: Unable to find 'std_string.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:132: Error: Unable to find 'std_map.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:135: Error: Unable to find 'std_set.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:138: Error: Unable to find 'std_vector.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:140: Error: Unable to find 'stl.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCell.i:143: Error: Unable to find 'exception.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCellExtraDeclarations.i:29: Error: Unable to find 'std_string.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCellExtraDeclarations.i:32: Error: Unable to find 'std_map.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCellExtraDeclarations.i:35: Error: Unable to find 'std_set.i'
/home/ptikka/CC3D_GIT3/CompuCell3D/core/pyinterface/CompuCellPython/CompuCellExtraDeclarations.i:40: Error: Unable to find 'std_vector.i'
core/pyinterface/CompuCellPython/CMakeFiles/CompuCell_swig_compilation.dir/build.make:61: recipe for target 'core/pyinterface/CompuCellPython/CMakeFiles/_CompuCell.dir/CompuCellPYTHON.stamp' failed
make[2]: *** [core/pyinterface/CompuCellPython/CMakeFiles/_CompuCell.dir/CompuCellPYTHON.stamp] Error 1
make[2]: *** Deleting file 'core/pyinterface/CompuCellPython/CMakeFiles/_CompuCell.dir/CompuCellPYTHON.stamp'
CMakeFiles/Makefile2:5502: recipe for target 'core/pyinterface/CompuCellPython/CMakeFiles/CompuCell_swig_compilation.dir/all' failed
make[1]: *** [core/pyinterface/CompuCellPython/CMakeFiles/CompuCell_swig_compilation.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
2) 'in conda'
(my_env22) ptikka@Kansallinen:~$ python mdi.py
QXcbConnection: Could not connect to display :0
Aborted (core dumped)
Ideas to solve?
BR,
Pauli
id: gneam | creation_date: Aug. 15, 2018, 10:06 a.m. | author: Pauli Tikka | type: Comment |
parent: rrwgo | lastedit_date: Aug. 15, 2018, 10:06 a.m. | lastedit_user: Pauli Tikka |
content:
PS
the other thing that I tried was (the installation guide solution as in your cc3d homepage for ubuntu 18.04):
(my_env22) ptikka@Kansallinen:~$ sudo apt-get install g++ swig cmake-gui python-numpy python-pyqt5 python-pyqt5.qsci python-pyqt5.qtopengl python-pyqt5.qtsvg libvtk6-dev python-vtk6 python-dev libxml2-dev build-essential git
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'cmake-qt-gui' instead of 'cmake-gui'
build-essential is already the newest version (12.4ubuntu1).
g++ is already the newest version (4:7.3.0-3ubuntu2).
python-dev is already the newest version (2.7.15~rc1-1).
python-numpy is already the newest version (1:1.13.3-2ubuntu1).
cmake-qt-gui is already the newest version (3.10.2-1ubuntu2).
libvtk6-dev is already the newest version (6.3.0+dfsg1-11build1).
python-pyqt5 is already the newest version (5.10.1+dfsg-1ubuntu2).
python-pyqt5.qsci is already the newest version (2.10.2+dfsg-4).
python-pyqt5.qtopengl is already the newest version (5.10.1+dfsg-1ubuntu2).
python-pyqt5.qtsvg is already the newest version (5.10.1+dfsg-1ubuntu2).
python-vtk6 is already the newest version (6.3.0+dfsg1-11build1).
swig is already the newest version (3.0.12-1).
git is already the newest version (1:2.17.1-1ubuntu0.1).
The following additional packages will be installed:
libxml2
The following packages will be upgraded:
libxml2 libxml2-dev
2 upgraded, 0 newly installed, 0 to remove and 121 not upgraded.
Need to get 1420 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 libxml2-dev amd64 2.9.4+dfsg1-6.1ubuntu1.2 [757 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 libxml2 amd64 2.9.4+dfsg1-6.1ubuntu1.2 [663 kB]
Fetched 1420 kB in 1s (1211 kB/s)
(Reading database ... 103749 files and directories currently installed.)
Preparing to unpack .../libxml2-dev_2.9.4+dfsg1-6.1ubuntu1.2_amd64.deb ...
Unpacking libxml2-dev:amd64 (2.9.4+dfsg1-6.1ubuntu1.2) over (2.9.4+dfsg1-6.1ubuntu1) ...
Preparing to unpack .../libxml2_2.9.4+dfsg1-6.1ubuntu1.2_amd64.deb ...
Unpacking libxml2:amd64 (2.9.4+dfsg1-6.1ubuntu1.2) over (2.9.4+dfsg1-6.1ubuntu1) ...
Setting up libxml2:amd64 (2.9.4+dfsg1-6.1ubuntu1.2) ...
Setting up libxml2-dev:amd64 (2.9.4+dfsg1-6.1ubuntu1.2) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Processing triggers for man-db (2.8.3-2) ...
(my_env22) ptikka@Kansallinen:~$ pip install pyqtgraph
Collecting pyqtgraph
Downloading https://files.pythonhosted.org/packages/cd/ad/307e0280df5c19986c4206d138ec3a8954afc722cea991f4adb4a16337d9/pyqtgraph-0.10.0.tar.gz (1.5MB)
100% |████████████████████████████████| 1.6MB 1.6MB/s
Collecting numpy (from pyqtgraph)
Downloading https://files.pythonhosted.org/packages/85/51/ba4564ded90e093dbb6adfc3e21f99ae953d9ad56477e1b0d4a93bacf7d3/numpy-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl (13.8MB)
100% |████████████████████████████████| 13.8MB 1.3MB/s
Building wheels for collected packages: pyqtgraph
Running setup.py bdist_wheel for pyqtgraph ... done
Stored in directory: /home/ptikka/.cache/pip/wheels/93/a2/de/184ecdefdb91d760706d02389015dfa3b96e927eb1c42ace37
Successfully built pyqtgraph
Installing collected packages: numpy, pyqtgraph
Successfully installed numpy-1.15.0 pyqtgraph-0.10.0
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(my_env22) ptikka@Kansallinen:~$ cd /home/m/CC3D_GIT4
-bash: cd: /home/m/CC3D_GIT4: No such file or directory
(my_env22) ptikka@Kansallinen:~$ cd /CC3D_GIT4
-bash: cd: /CC3D_GIT4: No such file or directory
(my_env22) ptikka@Kansallinen:~$ cd ~/CC3D_GIT4
(my_env22) ptikka@Kansallinen:~/CC3D_GIT4$ ls
(my_env22) ptikka@Kansallinen:~/CC3D_GIT4$ git clone https://github.com/CompuCell3D/CompuCell3D.git .
Cloning into '.'...
remote: Counting objects: 22653, done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 22653 (delta 12), reused 26 (delta 9), pack-reused 22610
Receiving objects: 100% (22653/22653), 52.68 MiB | 3.28 MiB/s, done.
Resolving deltas: 100% (14719/14719), done.
Checking out files: 100% (9965/9965), done.
(my_env22) ptikka@Kansallinen:~/CC3D_GIT4$ cmake-gui
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-ptikka'
qt.qpa.screen: QXcbConnection: Could not connect to display :0
Could not connect to any X display.
id: awnxq | creation_date: Aug. 16, 2018, 12:07 a.m. | author: Maciek Swat | type: Comment |
parent: rrwgo | lastedit_date: Aug. 16, 2018, 12:07 a.m. | lastedit_user: Maciek Swat |
content:
So the issue is with swig that ships with conda. On ubuntu 18.04 swig struggles finding its core include files. The solution is to remove swig executable from conda environment created and install swig manually from sources.
So remove swig executable from <xxx>/miniconda2/envs/<your env>/swig
install swig from source (www.swig.org)
and add swig (compiled manually) to your path:
export PATH=<PATH TO SWIG>/bin:$PATH
id: nxvbb | creation_date: Aug. 16, 2018, 12:11 a.m. | author: Maciek Swat | type: Comment |
parent: gneam | lastedit_date: Aug. 16, 2018, 12:11 a.m. | lastedit_user: Maciek Swat |
content:
So this is actually very important. Your system, for whatever reason, fails to open any qt application (cmake-gui is a qt application). If you are running on your personal machine you should instal ubuntu from https://www.ubuntu.com/download/desktop, not from MS Store. If this is a cluster you need to tell administrator to locate the problem that prevents you from running qt-based applications that are part of the operating system (such as cmake-gui). Let me know how this goes
id: vxqak | creation_date: Aug. 16, 2018, 9 a.m. | author: Pauli Tikka | type: Comment |
parent: nxvbb | lastedit_date: Aug. 16, 2018, 9:09 a.m. | lastedit_user: Pauli Tikka |
content:
Hi,
attachments(redirected):
.\CC3D_allanswered_linked_files\binaries-installation is ok-tikka16818.png
.\CC3D_allanswered_linked_files\binaries-installation is ok2-tikka16818.png
id: awneq | creation_date: Aug. 16, 2018, 9:44 a.m. | author: Mukti C | type: Question |
parent: | lastedit_date: Aug. 29, 2018, 9:44 a.m. | lastedit_user: Mukti C |
content:
Hello,
I am working on a project using CompuCell3D, and I am using the "SteadyStateDiffusionSolver" to manage chemical diffusion in a 3D model. I am running the simulations on a Windows machine. I cannot seem to get the solver to diffuse in the z-direction, even though I have specified all the required fields. The chemical concentrations in voxels other than those in the z=0 plane are zero. Furthermore, the SteadyStateDiffusionSolver demo models provided with CompuCell3D displayed similar behavior. Can you please help me figure out what might be going wrong with the diffusion solver? The XML file is as below:
<CompuCell3D Revision="20171121" Version="3.7.7">
<Potts>
<!-- Basic properties of CPM (GGH) algorithm -->
<Dimensions x="100" y="100" z="100"/>
<Steps>100</Steps>
<Temperature>35</Temperature>
<NeighborOrder>1</NeighborOrder>
</Potts>
<Plugin Name="CellType">
<!-- Listing all cell types in the simulation -->
<CellType TypeId="0" TypeName="Medium"/>
<CellType TypeId="1" TypeName="Condensing"/>
<CellType TypeId="2" TypeName="NonCondensing"/>
</Plugin>
<Steppable Type="SteadyStateDiffusionSolver">
<DiffusionField Name="TestChemical">
<DiffusionData>
<FieldName>TestChemical</FieldName>
<DiffusionConstant>1000</DiffusionConstant>
<DecayConstant>2e-12</DecayConstant>
<DoNotDecayIn>Medium</DoNotDecayIn>
</DiffusionData>
<SecretionData>
<Uptake Type="Condensing" MaxUptake="0.02" RelativeUptakeRate="0.99"/>
<Uptake Type="NonCondensing" MaxUptake="0.03" RelativeUptakeRate="0.99"/>
</SecretionData>
<BoundaryConditions>
<Plane Axis="X">
<ConstantDerivative PlanePosition="Min" Value="0.0"/>
<ConstantDerivative PlanePosition="Max" Value="0.0"/>
</Plane>
<Plane Axis="Y">
<ConstantValue PlanePosition="Min" Value="0"/>
<ConstantValue PlanePosition="Max" Value="70"/>
</Plane>
<Plane Axis="Z">
<ConstantDerivative PlanePosition="Min" Value="0.0"/>
<ConstantDerivative PlanePosition="Max" Value="0.0"/>
</Plane>
</BoundaryConditions>
</DiffusionField>
</CompuCell3D>
id: zxrqq | creation_date: Aug. 16, 2018, 2:45 p.m. | author: Juliano Ferrari Gianlupi | type: Answer |
parent: awneq | lastedit_date: Aug. 16, 2018, 2:45 p.m. | lastedit_user: Juliano Ferrari Gianlupi |
content:
Hi,
If you're using CC3D 3.7.7 you should upgrade to 3.7.8 as it fixed many bugs.
The XML I used (just with the fixed tag):
<CompuCell3D Revision="20180722" Version="3.7.8">
<Potts>
<!-- Basic properties of CPM (GGH) algorithm -->
<Dimensions x="100" y="100" z="100"/>
<Steps>1000</Steps>
<Temperature>10.0</Temperature>
<NeighborOrder>1</NeighborOrder>
</Potts>
<Plugin Name="CellType">
<!-- Listing all cell types in the simulation -->
<CellType TypeId="0" TypeName="Medium"/>
<CellType TypeId="1" TypeName="Condensing"/>
<CellType TypeId="2" TypeName="NonCondensing"/>
</Plugin>
<Steppable Type="SteadyStateDiffusionSolver2D">
<DiffusionField Name="TestChemical">
<DiffusionData>
<FieldName>TestChemical</FieldName>
<DiffusionConstant>1000</DiffusionConstant>
<DecayConstant>2e-12</DecayConstant>
<DoNotDecayIn>Medium</DoNotDecayIn>
</DiffusionData>
<SecretionData>
<Uptake Type="Condensing" MaxUptake="0.02" RelativeUptakeRate="0.99"/>
<Uptake Type="NonCondensing" MaxUptake="0.03" RelativeUptakeRate="0.99"/>
</SecretionData>
<BoundaryConditions>
<Plane Axis="X">
<ConstantDerivative PlanePosition="Min" Value="0.0"/>
<ConstantDerivative PlanePosition="Max" Value="0.0"/>
</Plane>
<Plane Axis="Y">
<ConstantValue PlanePosition="Min" Value="0"/>
<ConstantValue PlanePosition="Max" Value="70"/>
</Plane>
<Plane Axis="Z">
<ConstantDerivative PlanePosition="Min" Value="0.0"/>
<ConstantDerivative PlanePosition="Max" Value="0.0"/>
</Plane>
</BoundaryConditions>
</DiffusionField>
</Steppable>
</CompuCell3D>
attachments(redirected):
.\CC3D_allanswered_linked_files\Capture.png
id: oavxm | creation_date: Aug. 16, 2018, 3:51 p.m. | author: Mukti C | type: Comment |
parent: zxrqq | lastedit_date: Aug. 17, 2018, 3:03 p.m. | lastedit_user: Mukti C |
content:
Hi,
Thank you very much! Updating from 3.7.7 to 3.7.8 worked.
id: rrarp | creation_date: Aug. 17, 2018, 3:02 p.m. | author: James Sluka | type: Answer |
parent: awneq | lastedit_date: Aug. 17, 2018, 3:02 p.m. | lastedit_user: James Sluka |
content:
Checking for this kind of XML error can be a challenge. You can use an online XML validator such as https://www.w3schools.com/xml/xml_validator.asp . If you paste the original XML into the first text box on this page and click on the "Check XML" button you get;
attachments(redirected):
.\CC3D_allanswered_linked_files\Untitled.png
id: gnwnq | creation_date: Aug. 17, 2018, 3:04 p.m. | author: Mukti C | type: Comment |
parent: rrarp | lastedit_date: Aug. 17, 2018, 3:04 p.m. | lastedit_user: Mukti C |
content:
Thank you for the tip!
id: mqrov | creation_date: Aug. 18, 2018, midnight | author: Maciek Swat | type: Answer |
parent: awneq | lastedit_date: Aug. 18, 2018, midnight | lastedit_user: Maciek Swat |
content:
I think this has to do with your boundary conditions . You are putting constant value conditions along y axis and no flux along z and x axes. With those arrangement of conditions if for a given y concentration across xz plane is constant (but changes as you change y coordinate) but if you look at e.g. y, z plane you see the diffusive pattern:
Are you seeing the same behavior on Windows? I ran my test on OSX
attachments(redirected):
.\CC3D_allanswered_linked_files\Screen Shot 2018-08-17 at 9.58.01 PM.png
id: vxllm | creation_date: Aug. 29, 2018, 9:44 a.m. | author: Mukti C | type: Comment |
parent: mqrov | lastedit_date: Aug. 29, 2018, 9:44 a.m. | lastedit_user: Mukti C |
content:
Hi, thank you for your response. Yes, I see the same behavior on Windows now.
id: bavjj | creation_date: Aug. 19, 2018, 10:58 a.m. | author: margrietpalm | type: Question |
parent: | lastedit_date: Aug. 22, 2018, 12:05 a.m. | lastedit_user: Maciek Swat |
content:
After a long time of not using CC3D, I'm trying to run some simulations. The simulation is a simple 2D model that involves a single cell migrating towards a field. I want to use a quite big resolution (target volume 8000), and this results in a rather slow simulation (500 MCS takes about 1 minute). As most pixels in this model are not at the boundary, it seems that all the unsuccessful copy attempts create a massive overhead. I remember there was an option to use an alternative metropolis algorithm that only considered pixels at the boundaries, and after some digging in the docs I found that this was the BoundaryWalker. However, it comes with this warming: "BoundaryWalkerAlgorithm does not really work with OpenMP version of CC3D which includes all versions starting with 3.6.0.". When I use this option, 500 MCS only take about 2 seconds, but the cells seems to fall apart into single pixels.
The simulations I intend to run take about 25000 MCS, so I really need to speed of the BoundaryWalker algorithm. So, is there any way that I could still use the BoundaryWalker? As I'm not interested on running simulations on multiple cores, compiling CC3D without OpenMP would be an option for me. FYI, I've compiled the latest version from github on ubuntu.
id: bavgj | creation_date: Aug. 20, 2018, 1:34 p.m. | author: James Sluka | type: Answer |
parent: bavjj | lastedit_date: Aug. 20, 2018, 1:34 p.m. | lastedit_user: James Sluka |
content:
1. Reduce the amount of output player generates and try to use multiple threads. In the XML file after the <Potts> section add;
<Metadata>
<NumberOfProcessors>4</NumberOfProcessors>
<DebugOutputFrequency>100</DebugOutputFrequency>
</Metadata>
2. Reduce how often Player updates the screen and reduce or remove any saving of simulation screen shots.
id: xzqvv | creation_date: Aug. 21, 2018, 11:56 p.m. | author: Maciek Swat | type: Answer |
parent: bavjj | lastedit_date: Aug. 21, 2018, 11:56 p.m. | lastedit_user: Maciek Swat |
content:
Hi Margriet
We would have to look at the implementation of the BoundaryWalker algorithm inside Potts3D. Indeed it will not run on multiple cores but I could be implemented to run in such a mode. If you are on a a single core one quick check would be to compare old CC3D implementations with recent ones. As far as I recalled there was not much effort (perhaps not at all) put into porting Boundary walker to new OpenMP enabled versions. I can certainly help you getting this functionality working in the CC3D. If you have a benchmark simulation that you can share with me (either here or email) that would help us a lot
id: rrakp | creation_date: Aug. 22, 2018, 12:05 a.m. | author: Maciek Swat | type: Answer |
parent: bavjj | lastedit_date: Aug. 22, 2018, 12:05 a.m. | lastedit_user: Maciek Swat |
content:
So I checked the code and it looks like we did port BoundaryWalker to the latest versions of CC3D
I have just ran the following demo:
Demos/PluginDemos/GlobalBoundaryPixelTracker/Simulation/cellsort_2D_boundary.xml
that uses BouldaryWalker algorithm and it worked fine. Perhaps we could take a closer look at your simulation and understand why you see this strange behavior
id: zxrrl | creation_date: Aug. 29, 2018, 2:18 p.m. | author: Mukti C | type: Question |
parent: | lastedit_date: Aug. 29, 2018, 5:25 p.m. | lastedit_user: Mukti C |
content:
Hi,
I updated to CompuCell3D 3.7.8 on my machine, and every time I try to run a simulation, I get this error message:
Do you know what the error might be, and how to fix it?
Thank you for your help!
attachments(redirected):
.\CC3D_allanswered_linked_files\error2.png
id: eraao | creation_date: Aug. 29, 2018, 3:42 p.m. | author: Maciek Swat | type: Answer |
parent: zxrrl | lastedit_date: Aug. 29, 2018, 3:42 p.m. | lastedit_user: Maciek Swat |
content:
You installed GPU version and either do not have GPU or are missing OpenCL drivers. Best thing is to reinstall non-gpu version
id: lkxxg | creation_date: Aug. 29, 2018, 5:25 p.m. | author: Mukti C | type: Comment |
parent: eraao | lastedit_date: Aug. 29, 2018, 5:25 p.m. | lastedit_user: Mukti C |
content:
Thanks. This fixed the issue.
id: baxoo | creation_date: Sept. 2, 2018, 2:58 p.m. | author: Thomas Achee | type: Question |
parent: | lastedit_date: Sept. 4, 2018, 11:59 a.m. | lastedit_user: James Sluka |
content:
So what i'm trying to do:
given a simulation of arbitrary size m by n, have the outputted screenshots from CC3d fill the entire image with no border space.
I noticed in the console output there was this line:
from settings windowsLayout = {0: {'sceneName': 'Cell_Field', 'is3D': False, 'planePosition': 0, 'cameraViewUp': (0.0, 1.0, 0.0), 'winPosition': PyQt5.QtCore.QPoint(), 'planeName': 'XY', 'winType': 'Graphics', 'cameraClippingRange': (1566.79845139, 1606.36406885), 'winSize': PyQt5.QtCore.QSize(1463, 780), 'sceneType': 'CellField', 'cameraFocalPoint': (661.848138864, 378.783508443, 0.0), 'cameraPosition': (661.848138864, 378.783508443, 1582.62469837)}}
CREATING SCREENSHOT WINDOW
ADDITIONAL SCREENSHOT WINDOW SIZE= (1936, 1119)
how do I adjust settings windowsLayout?
id: kgzge | creation_date: Sept. 4, 2018, 11:57 a.m. | author: James Sluka | type: Answer |
parent: baxoo | lastedit_date: Sept. 4, 2018, 11:59 a.m. | lastedit_user: James Sluka |
content:
In CC3D Player you can control the size and frequency that screenshots are saved. Go to the Tools tab then "Configuration" then select the Output tab. On this tab you can set how often images are saved ("Save images every Nth MCS") and the size of the screen shot. By default only the main CC3D window is saved. If your simulation has more than just that one window you can save those shots as well by clicking on the camera icon in each individual window. The saved images don't include a window frame or anything outside the graphics window. If you save more than the default window then each additional window's images are in a separate folder.
Player remembers the scaling of you individual windows. So if you turn off the axis display (Tools, Configuration Axes'n'Decor tab), and zoom the image (and/or translate as well) you can fill up the graphics window as much as you want. Every image will be saved with that zoom setting. If you change the zoom part way through a simulation the subsequent images will have the new zoom.
Since player remembers zoom and scaling it can be tricky to get it to save the setup you want. The easiest way is to start the simulation in player and do one or two mcs (single step Player). Create the windows you want and scale/zoom/translate as you want. Click on the camera icon for each window. Do a couple more MCS and then close Player. You should also double check where Player is writing the files (Tools - Configuration - Output "Project Location" and "Output"). The next time you run that simulation it should remember the windows, scaling etc.
Player makes PNG files. You can animate those images with something like Imagemagick.
id: mqzvr | creation_date: Sept. 3, 2018, 1:41 p.m. | author: Elijah Basile | type: Question |
parent: | lastedit_date: Sept. 3, 2018, 8:59 p.m. | lastedit_user: Maciek Swat |
content:
I received the following error when adding parameter scan values in my simulation. The compucell3d player would open but then immediately would close after starting the first iteration (creating the first iterative directory). Any idea on why this crash is happening? Thanks in advance.
attachments(redirected):
.\CC3D_allanswered_linked_files\ParamScanError.png
id: xzonz | creation_date: Sept. 3, 2018, 8:59 p.m. | author: Maciek Swat | type: Answer |
parent: mqzvr | lastedit_date: Sept. 3, 2018, 8:59 p.m. | lastedit_user: Maciek Swat |
content:
What version of CC3D are you running and what is your operating system? If this is not too much trouble, could you post a toy version of a parameter scan you are trying to run? (remove any code you do not want to share publicly but make sure that the error happens )
id: rvqpn | creation_date: Jan. 26, 2019, 9:36 p.m. | author: Elijah Basile | type: Comment |
parent: xzonz | lastedit_date: Jan. 26, 2019, 9:36 p.m. | lastedit_user: Elijah Basile |
content:
I apologize, I forgot to respond to your comment, I managed to solve the issue. It was because of an issue with my personal computer.
Thank you.
id: oazng | creation_date: Sept. 5, 2018, 6:14 a.m. | author: DrjyPrk | type: Question |
parent: | lastedit_date: Sept. 6, 2018, 8:36 a.m. | lastedit_user: DrjyPrk |
content:
I want to monitor chemical concentration at pixels and change the cell type associated with it to other cell type (not medium) in python.
id: rrzqe | creation_date: Sept. 5, 2018, 9:04 a.m. | author: Mukti C | type: Answer |
parent: oazng | lastedit_date: Sept. 5, 2018, 9:04 a.m. | lastedit_user: Mukti C |
content:
This code snippet will help you get the cell at a pixel, and then change its type:
cell = self.cellField[x, y, z] #x, y, z are the pixel coordinates
cell.type = self.NEW_TYPE
id: vxzme | creation_date: Sept. 6, 2018, 8:36 a.m. | author: DrjyPrk | type: Comment |
parent: rrzqe | lastedit_date: Sept. 6, 2018, 8:36 a.m. | lastedit_user: DrjyPrk |
content:
that worked, but I wanted a little more specific cell.type change of pixel. Using your code snippet gives changes the cell type of all the pixel of the same cell. now, is it possible to change the pixels of a specific region of cell? say, I have 100 pixels are assigned to a single cell of a specific cell type, I want to change 50 of them to another cell type upon some condition.
id: jegja | creation_date: Nov. 27, 2018, 12:36 p.m. | author: James Sluka | type: Answer |
parent: oazng | lastedit_date: Nov. 27, 2018, 12:36 p.m. | lastedit_user: James Sluka |
content:
Here is code that changes half the pixels in each cell of one type to new cells of a different type. In the XML you need to plugins;
<Plugin Name="CenterOfMass"/> <!-- needed for this demo -->
<Plugin Name="PixelTracker"/> <!-- needed for this demo -->
# change half the pixels of all the CellTypeA cells to new CellTypeB cells
for cell in self.cellListByType(self.CELLTYPEA): # visit all cells of CellTypeA
newCell=self.potts.createCell() # create a new CellTypeB cell for the pixels
newCell.type=self.CELLTYPEB # assign a type to the new cell
pixelList = self.getCellPixelList(cell) # get list of pixels in original cell
for pXYZ in pixelList: # iterate over the pixels in the original cell
# if the pixel is in the right half of the cell (of CellTYpeA) then
# reassign it to newCell (of CellTypeB)
if pXYZ.pixel.x > cell.xCOM: # pixel is in right half of cell
# assign the pixel from the old cell to the new cell
self.cellField[pXYZ.pixel.x,pXYZ.pixel.y,pXYZ.pixel.z]=newCell
If you are using localflex for cell volume and surface you may have to assign volume, lambdaVolume, surface and lambdaSurface to the new cell.
id: xzovb | creation_date: Sept. 7, 2018, 5:46 a.m. | author: dali Zan | type: Question |
parent: | lastedit_date: Sept. 8, 2018, 1:48 a.m. | lastedit_user: dali Zan |
content:
Recently, I tried to exert an external force on cells.But I found the action point of force seems to be only the barycenter of the cell when I checked PythonScriptingManual. I wonder if I can apply a force on the periphery of the cell. Thanks.
id: mqzpa | creation_date: Sept. 7, 2018, 12:10 p.m. | author: Maciek Swat | type: Answer |
parent: xzovb | lastedit_date: Sept. 7, 2018, 12:10 p.m. | lastedit_user: Maciek Swat |
content:
Can you post a toy script showing what you have done. it would help us make sure we are on the same page
id: gnjzr | creation_date: Sept. 8, 2018, 1:48 a.m. | author: dali Zan | type: Comment |
parent: mqzpa | lastedit_date: Sept. 8, 2018, 1:48 a.m. | lastedit_user: dali Zan |
content:
I built a tumor cluster consisting of a group of cells. And I want to use the following sample statement to exert a force on the tumor cluster.
class CellMotilitySteppable(SteppableBasePy):
def __init__(self,_simulator,_frequency=5):
SteppableBasePy.__init__(self,_simulator,_frequency)
def start(self):
for cell in self.cellList:
break
cell.lambdaVecX=10.1*uniform(-0.5,0.5)
cell.lambdaVecY=10.1*uniform(-0.5,0.5)
cell.lambdaVecZ=0
def step(self,mcs):
for cell in self.cellList:
cell.lambdaVecX=10.1*uniform(-0.5,0.5)
cell.lambdaVecY=10.1*uniform(-0.5,0.5)
I found that the example statement seems apply force acting on a single cell's barycenter, similar to the force exerted on the cell as a whole. I wonder if I can put a force on a point in the cell membrane or on the periphery of a cell cluster.
id: xzpaj | creation_date: Sept. 19, 2018, 3:28 p.m. | author: Mukti C | type: Question |
parent: | lastedit_date: Sept. 19, 2018, 3:28 p.m. | lastedit_user: Mukti C |
content:
How can I implement haptotaxis in CC3D? I can't figure out how to model haptotaxis using the existing plugins/features like applying forces to cells, etc. Any help would be appreciated! Thanks.
id: rrgnn | creation_date: Sept. 19, 2018, 4:31 p.m. | author: James Sluka | type: Answer |
parent: xzpaj | lastedit_date: Sept. 19, 2018, 4:31 p.m. | lastedit_user: James Sluka |
content:
Just spitballing here but ...
You can create a stationary field to mimic the ECM. First you create a CC3D field and set the diffusion and decay constants to zero (so the field doesn't change with time). You then iterate over every pixel in the lattice and assign a concentration to each pixel based on some algebraic/geometric pattern that represents the ECM. You then use the chemotaxis module in CC3D to have the cells chemo/haptotax to that stationary field.
You might take a look at this paper for another approach;
https://www.nature.com/articles/srep19905
id: kgwkq | creation_date: Sept. 20, 2018, 4:20 p.m. | author: Mukti C | type: Comment |
parent: rrgnn | lastedit_date: Sept. 20, 2018, 4:20 p.m. | lastedit_user: Mukti C |
content:
Thank you! I'll try that.
id: jgmvz | creation_date: Sept. 20, 2018, 4:44 p.m. | author: James Sluka | type: Answer |
parent: xzpaj | lastedit_date: Sept. 20, 2018, 4:44 p.m. | lastedit_user: James Sluka |
content:
Attached is a demo of using a stationary field and chemotax (File attached: Haptotaxis_test.zip (9.09 KB)) The bottom left plot below shows the position history of the one cell (red) in the simulation.
is to mimic haptotaxis.
attachments(redirected):
.\CC3D_allanswered_linked_files\Haptotaxis_test.zip
.\CC3D_allanswered_linked_files\screenShot.png
id: zxwvp | creation_date: Sept. 20, 2018, 8:38 p.m. | author: Mukti C | type: Comment |
parent: jgmvz | lastedit_date: Sept. 20, 2018, 8:38 p.m. | lastedit_user: Mukti C |
content:
Thank you very much! I tried this with my model, and it worked!
One question though - if I use cells to represent "ECM", will the Chemotaxis plugin not work? That is, will the cell not move through the "ECM" cells?
id: xzprj | creation_date: Sept. 21, 2018, 11:41 a.m. | author: James Sluka | type: Answer |
parent: xzpaj | lastedit_date: Sept. 21, 2018, 11:41 a.m. | lastedit_user: James Sluka |
content:
If you use cells as the ECM you can "freeze" them so they don't move. You could then have them secrete a field that the regular cells chemotax to. If you set the decay rate of the field high it will be localized to just the vicinity of the ECM cells. You are correct though that in 2D the moving cells wont be able to cross over the stationary ECM cells (well, actually, if the ECM cells are small, and the neighbor order is big enough, it would be possible to cross over but not very likely.) However, if you model in 3D then the moving cells can move past/around the stationary ECM cells without any problem.
If you want the cells to haptotax in a particular direction you could have the ECM cells secrete at different rates.
I thought it might be possible to use the AdhesionFlex plugin in CC3D to assign different adhesiveness between ECM cells (frozen) and the moving cell. I wanted to be able to have the ECM have a gradient of adhesion so the cell migrates in a particular direction. But apparently I don't understand the AdhesionFlex setup well enough to get it to work. I've attached the code since it shows how to create the ECM cells (each ECM cell is a single pixel) in python and that might help you get started on a secretion/chemotaxis version of the haptotaxis model. File attached: Haptotaxis_test_cell_ecm.zip (10.75 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\Haptotaxis_test_cell_ecm.zip
.\CC3D_allanswered_linked_files\screenShot.png
id: lkgol | creation_date: Sept. 27, 2018, 9:48 a.m. | author: Mukti C | type: Comment |
parent: xzprj | lastedit_date: Sept. 27, 2018, 9:48 a.m. | lastedit_user: Mukti C |
content:
Thank you very much!
id: jenaw | creation_date: Oct. 21, 2018, 9:51 a.m. | author: sandeep13712 | type: Question |
parent: | lastedit_date: Oct. 21, 2018, 9:51 a.m. | lastedit_user: sandeep13712 |
content:
Hi CC3Ders,
Has someone used CC3D to perform a simulation where there are more than 128 cell types (1 medium and 127 normal cell types)? I am not able to run a simulation with 128+ cell types.
Sandeep
http://individual.utoronto.ca/sandeepkumar/
id: verpr | creation_date: Oct. 22, 2018, 10:56 a.m. | author: James Sluka | type: Answer |
parent: jenaw | lastedit_date: Oct. 22, 2018, 10:56 a.m. | lastedit_user: James Sluka |
content:
I don't know if CC3D is limited to 128 cell types but are you sure you need that many?
What characteristics differentiate the cell types?
You could use a dictionary attached to each cell to track the cell's type and since a dictionary can contain any Python variable type it would be essentially unlimited. Since you can assign target volumes and surfaces to cells individually you can do that based on the type defined in the dictionary (or directly save the target and lambda values in the dictionary). You should also be able to change things like adhesion and motility on a per cell basis. Individual cells could also have different growth rates, dividing volumes, death attributes etc. Counts of each cell type can be generated by examining each cell's dictionary value.
You could even color the cells by type by creating a scalar field containing the cell's dictionary type.
id: azlbz | creation_date: Oct. 22, 2018, 1:41 p.m. | author: sandeep13712 | type: Comment |
parent: verpr | lastedit_date: Oct. 22, 2018, 1:41 p.m. | lastedit_user: sandeep13712 |
content:
Hi James,
Thanks for your email.
Actually, I want to have an energy term which depends on the cell-pair. Two different cell-pairs have different energy.
I know having those many cell types is a bit non-standard approach. But, after due thought process and analysis, it seems to be me that this is the only solution for now. I may find a better way (through custom plugin) to implement this later on.
Sandeep
http://individual.utoronto.ca/sandeepkumar/
id: pnwva | creation_date: Oct. 22, 2018, 3:27 p.m. | author: James Sluka | type: Answer |
parent: jenaw | lastedit_date: Oct. 22, 2018, 3:27 p.m. | lastedit_user: James Sluka |
content:
One approach to using a dictionary to generate energy terms would be to use focal point plasticity (FPP) links between cells. (Basically you attach the cells' center with a spring.) The cell type is stored in the dictionary and you create FPP links between the various cells, based on their type, perhaps when the cells get closer than some threshold distance. This gives you forces that affect the Potts energy. The forces can be attractive or repulsive.
id: pnwza | creation_date: Oct. 26, 2018, 9:41 a.m. | author: Claire Walsh | type: Question |
parent: | lastedit_date: Oct. 26, 2018, 9:41 a.m. | lastedit_user: Claire Walsh |
content:
Hi All
So I have a very simple model to investigate changes in cell morphology based on contact parameters in 3D. The model itself is a 500,500,500 space with around 10,000 cells in it (target volume ~4000) (all very simple). The issue is, that I am wanting to use the output from the compucell model in further simulations to do with MRI imaging. What I need for the MRI simulations is just the boundary or (cell membrane) of every cell (preferably as a mesh but voxels is fine too). So far I have been saving lattice data files trying to read these into python and extract cell boundaries via a marching cubes algorithm. This seems like a lot of work given that CC3D must know the boundary pixels for each cell. Is there a way to get at just this information instead?
Thanks
C
id: noxje | creation_date: Nov. 26, 2018, 6:13 p.m. | author: James Sluka | type: Answer |
parent: pnwza | lastedit_date: Nov. 26, 2018, 6:13 p.m. | lastedit_user: James Sluka |
content:
Yes, CC3D does keep track of the surface pixels. For an XML + Python simulation;
1. To the XML add the needed plugin;
<Plugin Name="BoundaryPixelTracker">
<!-- Module tracking boundary pixels of each cell -->
<NeighborOrder>1</NeighborOrder>
</Plugin>
for cell in self.cellList:
pixelList=self.getCellBoundaryPixelList(cell)
print "\nCell ID=",cell.id," volume=",cell.volume,
print " # Surface Pix=",pixelList.numberOfPixels()
for boundaryPixelTrackerData in pixelList:
print boundaryPixelTrackerData.pixel
Which generates this:
Cell ID= 4 volume= 63 # Surface Pix= 55
(41,47,40)
(41,47,41)
(41,47,42)
...
(44,50,41)
(44,50,42)
(44,50,43)
You can extract the x, y, and z using;px=boundaryPixelTrackerData.pixel.x
py=boundaryPixelTrackerData.pixel.y
pz=boundaryPixelTrackerData.pixel.z
It should be straightforward to output the pixel coordinates to a fileid: zgpqn | creation_date: Oct. 29, 2018, 10:43 a.m. | author: DrjyPrk | type: Question |
parent: | lastedit_date: Oct. 29, 2018, 10:43 a.m. | lastedit_user: DrjyPrk |
content:
for a simulation, I want asymmetric growth of different compartments of a cluster cell. while under mitosis, the cluster divides but the child cell is having one/many missing compartments. I want the cells to have all the compartments throughout the simulation. can anyone help me with it?
id: bzama | creation_date: Nov. 28, 2018, 11:47 p.m. | author: Maciek Swat | type: Answer |
parent: zgpqn | lastedit_date: Nov. 28, 2018, 11:47 p.m. | lastedit_user: Maciek Swat |
content:
could you post a simple version of your simulation demonstrating the problem?
id: kvlrz | creation_date: Nov. 4, 2018, 9:40 a.m. | author: 昊 杨 | type: Question |
parent: | lastedit_date: Nov. 4, 2018, 9:40 a.m. | lastedit_user: 昊 杨 |
content:
Assume that only a few cells with cell type A are split. How do you distinguish between the original type A cells and the split type A daughter cells? Thanks in advance
id: jegka | creation_date: Nov. 26, 2018, 5:24 p.m. | author: James Sluka | type: Answer |
parent: kvlrz | lastedit_date: Nov. 28, 2018, 12:06 p.m. | lastedit_user: James Sluka |
content:
There are a couple ways to do this. One is to simply keep track of the cell IDs. The daughter cell will always have a cell ID greater than the parent. (CC3D never reuses Cell IDs.) So you might start your simulation and save all the original cell IDs in a list. Later in the simulation as the cells divide you can keep another list of the new cell IDs. To get fancy you can also store the daughter cell's parent cell ID in the second list.
A second way is to attach a dictionary to each cell. You can then have a dictionary item like "daughterOfCellId". At startup all the cells present are daughters of cell ID "0", this marks the cells as being present at the start. When cells divide one of the cells has "daughterOfCellId" set to the cellID of the parent, the parent cell's dictionary doesn't get changed.
id: pnolz | creation_date: Nov. 25, 2018, 2:57 p.m. | author: Soham | type: Question |
parent: | lastedit_date: Nov. 25, 2018, 2:57 p.m. | lastedit_user: Soham |
content:
If I want to transfer a multivariable equation defining growth of two cell types from MATLAB to CC3D how would I go about doing it? Is there a defined cell type for fibroblasts and cancer cells? Also, what would be a general definition of the movement given that the two cell populations are symbiotic and the growth depends on a combination of nutrients and other species? Any help would be appreciated! Thank you.
id: pnoaj | creation_date: Nov. 26, 2018, 6:38 p.m. | author: James Sluka | type: Answer |
parent: pnolz | lastedit_date: Nov. 26, 2018, 6:38 p.m. | lastedit_user: James Sluka |
content:
In CC3D you can use any calculable function to drive cell growth and proliferation, so it should be straightforward to transfer the equation from MATLAB to CC3D Python. Each cell type, or even each individual cell, can have its own growth function. The growth function can respond to an external field (e.g., nutrient concentration), contact with neighbors of particular types, etc.
CC3D doesn't include any defined cell types. You build your cell types based on their behaviors and the goals of the simulation.
You can define diffusible fields (perhaps sourced by particular cell types) to which your cells respond by chemotaxis, proliferation, necrosis etc.
You might take a look at (that is, load it into Twedit++ then launch to CC3D) the amoeba demo;
C:\CompuCell3D-64bit\Demos\Models\bacterium_macrophage\bacterium_macrophage.cc3d
The two cell types each secrete their own chemical field and the cells chemotax (positive or negative) to those fields.
id: ejrpe | creation_date: Nov. 26, 2018, 9:53 p.m. | author: Soham | type: Comment |
parent: pnoaj | lastedit_date: Nov. 26, 2018, 9:53 p.m. | lastedit_user: Soham |
content:
Thank you for your help.
id: zgxor | creation_date: Nov. 26, 2018, 6:44 p.m. | author: James Sluka | type: Question |
parent: | lastedit_date: Nov. 26, 2018, 6:44 p.m. | lastedit_user: James Sluka |
content:
test jps
id: azwob | creation_date: Nov. 27, 2018, 12:41 p.m. | author: James Sluka | type: Answer |
parent: zgxor | lastedit_date: Nov. 27, 2018, 12:41 p.m. | lastedit_user: James Sluka |
content:
AllAnswered doesn't appear to be sending email notifications like it should.
id: kvvje | creation_date: Dec. 17, 2018, 2:30 p.m. | author: Thomas | type: Question |
parent: | lastedit_date: Dec. 17, 2018, 2:30 p.m. | lastedit_user: Thomas |
content:
Hello. I am studying the cell behavior on Compucell3D by tracking the cell position to obtain its velocity. To do so, I am using a python code to obtain the position of the cell at each 10 MCS:
-----------------------------------------------------------------------------------------------------------------------------
from PySteppables import *
import CompuCell
import sys
from XMLUtils import dictionaryToMapStrStr as d2mss
from XMLUtils import CC3DXMLListPy
class SurfaceSteering(SteppablePy):
def __init__(self,_simulator,_frequency=1):
SteppablePy.__init__(self,_frequency)
self.simulator=_simulator
self.nTrackerPlugin=CompuCell.getNeighborTrackerPlugin()
self.inventory=self.simulator.getPotts().getCellInventory()
self.cellList=CellList(self.inventory)
def start(self):
pass
def step(self, mcs):
for cell in self.cellList:
if cell.type==1:
xCOM = cell.xCOM
yCOM = cell.yCOM
----------------------------------------------------------------------------------
This code worked normally on v3.7.7 but since v3.7.8, each time I launch the simulation, I have the following message :
" SurfaceSteering instance has no attribute 'add_steering_panel' "
I don’t understand because I did not ask my code to create a steering panel. Do you have an idea about this issue ? Thank you.
id: pnnap | creation_date: Dec. 17, 2018, 5:18 p.m. | author: James Sluka | type: Answer |
parent: kvvje | lastedit_date: Dec. 17, 2018, 5:20 p.m. | lastedit_user: James Sluka |
content:
Try this,
change
class SurfaceSteering(SteppablePy)
to
class SurfaceSteering(SteppableBasePy)
change
SteppablePy.__init__(self,_frequency)
to
SteppableBasePy.__init__(self,_simulator,_frequency)
omit
self.simulator=_simulator
If that doesn't work, can you zip the entire project up and send it to me? In Twedit++ there is a zip command under the "CC3D Project" menu.
id: mooja | creation_date: Dec. 17, 2018, 5:59 p.m. | author: Thomas | type: Answer |
parent: kvvje | lastedit_date: Dec. 17, 2018, 5:59 p.m. | lastedit_user: Thomas |
content:
Thank you very much. It works now.
However now, I have another problem. I put in my steppable a variable « REPETITION » (associate to nothing) that I defined as a parameter scan to repeat my simulation a specific number of time (to reduce the variability). However, after 2 iterations (corresponding to two differents values of REPETITION), the program stops with this message :
« Error: RuntimeError: bad allocation»
I don’t understand because I did not have this error on the previous version (I zip my project )
attachments(redirected):
.\CC3D_allanswered_linked_files\modele.zip
id: wkkva | creation_date: Dec. 18, 2018, 3:26 p.m. | author: James Sluka | type: Comment |
parent: mooja | lastedit_date: Dec. 18, 2018, 3:29 p.m. | lastedit_user: James Sluka |
content:
Looking through your model files there are a couple things that might be causing the problem;
1. Make sure there is a complete set of adhesion pairs, currently there are several missing;
<Plugin Name="Contact">
<Energy Type1="Medium" Type2="Medium">0</Energy>
<Energy Type1="B-TEC" Type2="Medium">20</Energy>
<Energy Type1="B-TEC" Type2="B-TEC">10</Energy>
<Energy Type1="B-TEC" Type2="SubstrateLisse">5</Energy>
<Energy Type1="B-TEC" Type2="SubstrateRug">1</Energy>
<Energy Type1="SubstrateLisse" Type2="Medium">10</Energy> <!-- jps: added missing contact pairs -->
<Energy Type1="SubstrateLisse" Type2="SubstrateLisse">10</Energy>
<Energy Type1="SubstrateLisse" Type2="SubstrateRug">10</Energy>
<Energy Type1="SubstrateRug" Type2="Medium">10</Energy>
<Energy Type1="SubstrateRug" Type2="SubstrateRug">10</Energy>
<NeighborOrder>2</NeighborOrder>
</Plugin>
<Plugin Name="ExternalPotential">
<Algorithm>CenterOfMassBased</Algorithm> <!-- Algorithm options are: PixelBased, CenterOfMassBased -->
<ExternalPotentialParameters CellType="B-TEC" x="-50." y="0.0" z="0.0"/>
</Plugin>
id: bzzlv | creation_date: Dec. 18, 2018, 6:29 p.m. | author: Thomas | type: Comment |
parent: wkkva | lastedit_date: Dec. 18, 2018, 6:30 p.m. | lastedit_user: Thomas |
content:
Thank you. I did all the modifications (except for the external potential that I kept negative because otherwise, the cell went to the decreasing x) and run the code on CC3D 3.7.9. However, if for 5 values of parameter scan, the iterations work, it doesn't work for 10 iterations (stop at 7). I run one of the examples of the parameter scan and it ran to completion (over 100 iterations). So, I wonder if it could be the simulation of the cell because when I put the cell at x=50, CC3D refuses to model it.
id: wkkga | creation_date: Dec. 19, 2018, 12:13 p.m. | author: James Sluka | type: Comment |
parent: bzzlv | lastedit_date: Dec. 19, 2018, 12:13 p.m. | lastedit_user: James Sluka |
content:
Yep, I am seeing random crashes as well. We'll need to investigate more.
id: jeepe | creation_date: Dec. 19, 2018, 4:51 p.m. | author: James Sluka | type: Comment |
parent: bzzlv | lastedit_date: Dec. 19, 2018, 4:51 p.m. | lastedit_user: James Sluka |
content:
As a short-term fix-- You can restart a parameter scan that crashes simply be relaunching it from Twedit++. The sweep script keeps track of which simulations have been done and will pick up after the simulation that crashed.
It appears that the crashes have something to do with CC3D exiting after a job is finished and all the CC3D output is intact. The crash returns an error code to the parameter sweep routine which is causing it to stop. So simply restarting will eventually work its way through all the simulations.
id: noopj | creation_date: Dec. 19, 2018, 5:17 p.m. | author: Thomas | type: Comment |
parent: jeepe | lastedit_date: Dec. 19, 2018, 5:17 p.m. | lastedit_user: Thomas |
content:
Ok and thank you for the help. This is clear. I have 2 last questions:
1) I am unable to obtain screenshot of the simulation every 100 MCS whereas the option is checked in the CC3D preferences. Do you have an idea why it doesn't work?
2) My cell is modeled by a blob with a radius of 10 and and width of 20 (to have only one cell). However, if I displace the initial position of the cell (for example from x=48 to x=50), CC3D refuse to model it. I have the same problem when I try to model a cell with a radius of 15 and a width of 30. CC3D refuse to model it too. Maybe I did not understand something but I don't know why it doesn't work.
id: kvvbg | creation_date: Dec. 20, 2018, 3:06 p.m. | author: James Sluka | type: Answer |
parent: kvvje | lastedit_date: Dec. 20, 2018, 3:06 p.m. | lastedit_user: James Sluka |
content:
I am not sure why the saving of screenshots doesn't work like it used to. It looks like now you must, at least once, click on the camera icon in the display CC3D window. Once you do that it is saved in the configuration file for the project and doesn't need to be done again.
As to problems with moving the cell around by a few pixels causing a crash; I think the problem is that the cell ID's and locations are clashing between the blob and uniform init and the .piff file. the piff defines cell ID 3, the blob defines cell ID 1, but the uniform defines many cells that will start with ID 2 and overlap the 3 used in the piff.
Since your B-TEC and SubstrateLasse cell definitions are so simple they might as well be defined in the piff file.
Attached is a zip file with my version of your project. It includes the new piff file and removes the other cell inits. It also is a bit more efficient in the file IO since the file isn't opened and closed every time it is written to. You'll need to edit the file name to your particular file path in the steppables file.
I also commented out a couple lines in the SurfaceSteering __init__ that aren't needed.
The screenshot saving might work since that should be saved in the _settings.sqlite file, but I would start the simulation, then double check the paths and click the camera icon again just to be sure.
File attached: modele_2b.zip (372.18 KB)
attachments(redirected):
.\CC3D_allanswered_linked_files\modele_2b.zip
id: bzzww | creation_date: Dec. 26, 2018, 11:10 a.m. | author: Thomas | type: Comment |
parent: kvvbg | lastedit_date: Dec. 26, 2018, 11:10 a.m. | lastedit_user: Thomas |
content:
I did some tests on the model you gave me and I don't have the issue with the parameter scan anymore. Thank you for the help.
id: gbogw | creation_date: Jan. 14, 2019, 1:51 p.m. | author: Elijah Basile | type: Question |
parent: | lastedit_date: Feb. 11, 2019, 2:39 p.m. | lastedit_user: Elijah Basile |
content:
Hi,
I was wondering, when you trigger the self.cellListByType(exampleCellType), does it run through the entire list linearly through each cell, testing for its type (O(n)) or does it run in a tree like structure (O(log((n)) or less)?
I am just wondering because in the model we are working on, I am curious to see if we can increase simulation speed by placing all of the cells we are testing (and drawing values from) in a single cellList loop with a switch statement for multiple cells instead of several individual cellListByType(cellType) loops.
Hope this explains my issue.
Thanks
id: gbkqk | creation_date: Feb. 11, 2019, 2:32 p.m. | author: James Sluka | type: Answer |
parent: gbogw | lastedit_date: Feb. 11, 2019, 2:32 p.m. | lastedit_user: James Sluka |
content:
Only Maciej can answer this one for certain. I would expect though that it is (O(n)) since the cell list is basically unstructured. As cells are created and destroyed, and as cell's potentially change cell types, keeping a tree type list would be more complex than it is worth. I think the cellListByType(cellType) is coded in C++ so it should be pretty fast. I wouldn't expect you to be able to do it much faster by maintaining your own lists of cells by type since that is going to be done in Python.
Having said that though, the only way to know for sure is to try it out. There may be some cases where the cells lists rarely change, the lists are large, and you are only interested in iterating over a small subset of the cells, where maintaining lists by type would be beneficial.
id: jekpp | creation_date: Feb. 11, 2019, 2:39 p.m. | author: Elijah Basile | type: Comment |
parent: gbkqk | lastedit_date: Feb. 11, 2019, 2:39 p.m. | lastedit_user: Elijah Basile |
content:
Thank you.
id: bzjkk | creation_date: Jan. 26, 2019, 5:11 p.m. | author: Elijah Basile | type: Question |
parent: | lastedit_date: Feb. 11, 2019, 2:27 p.m. | lastedit_user: Elijah Basile |
content:
Hello,
I was wondering if it is possible to have cell border color in the player to be cell specific instead of it applying to all cells. I am specifically referring to 'Cell border color' on the right hand side. Thanks.
attachments(redirected):
.\CC3D_allanswered_linked_files\compucell_color.png
id: xkexk | creation_date: Feb. 11, 2019, 2:24 p.m. | author: James Sluka | type: Answer |
parent: bzjkk | lastedit_date: Feb. 11, 2019, 2:24 p.m. | lastedit_user: James Sluka |
content:
Sorry, but I don't think there is any easy way to do that.
If you REALLY need to do this, you can create a user-managed pixel based field and assign the pixel colors to whatever you want. Basically you would assign every pixel to be the color of its cell type unless the pixel is also a cell boarder pixel. In the later case you assign a different color. It is going to be slow since you need to iterate over every pixel/voxel in the model.
id: rvjmq | creation_date: Feb. 11, 2019, 2:27 p.m. | author: Elijah Basile | type: Comment |
parent: xkexk | lastedit_date: Feb. 11, 2019, 2:27 p.m. | lastedit_user: Elijah Basile |
content:
Thank you!
That answers my question. I'm glad All Answered is sending emails out again.
id: vewgq | creation_date: Feb. 1, 2019, 11:57 a.m. | author: Jairaj Mathur | type: Question |
parent: | lastedit_date: Feb. 11, 2019, 2:49 p.m. | lastedit_user: Jairaj Mathur |
content:
Hi all
I am running CC3D on ubuntu 16, and I have observed that when I run the cell sort 3D demo, the simulation completes quicker if I close the CC3D visualizer, ie, without the cells and pixels being displayed in real time. My question is, can I first run and save the simulation, and then visualize it in the player or paraview AFTER the entire simulation has completed?
id: qbgpw | creation_date: Feb. 11, 2019, 2:19 p.m. | author: James Sluka | type: Answer |
parent: vewgq | lastedit_date: Feb. 11, 2019, 2:19 p.m. | lastedit_user: James Sluka |
content:
Yes, you can save VTK shots even if the player window isn't visible.
<tools><configuration> check the "save lattice every Nth MCS" box. This creates a set of VTK files for the simulation that you can reload into player at a latter time.
In general though, if refreshing the screen is slowing things down, it is often easier to just reduce how often the screen is updated. Updating is slow, especially in 3D. Use <tools><configuration>"Update screen every Nth MCS" and set it to say 50 or 100. Also, for a 3D model rendering in 3D (as opposed to 2D slices) is slow and rendering cell boundaries in 3D is really slow. You can turn of the cell boundary rendering with <Visualization>uncheck "Cell Borders".
id: pnapb | creation_date: Feb. 11, 2019, 2:49 p.m. | author: Jairaj Mathur | type: Comment |
parent: qbgpw | lastedit_date: Feb. 11, 2019, 2:49 p.m. | lastedit_user: Jairaj Mathur |
content:
Thanks a lot!
id: gbomx | creation_date: Feb. 2, 2019, 12:49 p.m. | author: Mukti C | type: Question |
parent: | lastedit_date: March 20, 2019, 12:35 p.m. | lastedit_user: Maciek Swat |
content:
Hi,
I am trying to run CompuCell3D through the command line on a remote server. I executed this command:
./runScript.sh -i ../Test1_0202.cc3d -f 100 -o ../Results/Test1_0202/
./runScript.sh: line 6: warning: setlocale: LC_NUMERIC: cannot change locale (C.UTF-8): No such file or directory
./runScript.sh: line 6: warning: setlocale: LC_NUMERIC: cannot change locale (C.UTF-8)
CompuCell3D - version 3.7.6
CompuCell3D Version: 3.7.8 Revision: 20180908
Platform: linux2
Did not find dl module, will try manual dl initialization...
steppablePath=/data/home/mchowkw1/3.7.8/lib/CompuCell3DSteppables
pluginPath=/data/home/mchowkw1/3.7.8/lib/CompuCell3DPlugins
THIS IS JUST BEFORE LOADING LIBRARIES
AFTER LOAD LIBRARIES
------- CompuCellSetup.py: screenshotDirectoryName= /data/home/mchowkw1/Results/Test1_0202
After this, there was no output at all in the terminal and there weren't any screenshots saved in the provided directory. I don't seem to understand what the issue might be. I'd appreciate any help on this, thank you!
id: lnjpb | creation_date: Feb. 11, 2019, 2:12 p.m. | author: James Sluka | type: Answer |
parent: gbomx | lastedit_date: Feb. 11, 2019, 2:12 p.m. | lastedit_user: James Sluka |
content:
Two things to try;
1. instead of ./runScript.sh, just use runScript.sh (run from the directory that contains runScript.sh)
2. Try with full paths to both the runScript and input and output files;
<full path to CC3D dir>/runScript.sh <full path to your job dir>/Test1_0202.cc3d \
-f 100 \
<full path to your job dir>/Results/Test1_0202/
id: onjov | creation_date: Feb. 11, 2019, 8:10 p.m. | author: Mukti C | type: Comment |
parent: lnjpb | lastedit_date: Feb. 11, 2019, 8:10 p.m. | lastedit_user: Mukti C |
content:
Hi,
Thank you for your response! However, neither of these methods worked - I'm still seeing the same issue. I'm running the simulation on a cluster. Could that perhaps cause this issue? Also, is there any different configuration required for running remotely on a cluster?
id: mojwz | creation_date: Feb. 12, 2019, 10:35 a.m. | author: James Sluka | type: Comment |
parent: onjov | lastedit_date: Feb. 12, 2019, 10:35 a.m. | lastedit_user: James Sluka |
content:
What is the cluster's operating system?
id: ejzbk | creation_date: Feb. 12, 2019, 2:44 p.m. | author: Mukti C | type: Comment |
parent: mojwz | lastedit_date: Feb. 12, 2019, 2:44 p.m. | lastedit_user: Mukti C |
content:
CentOS Linux 7. I checked with the system administrator and he confirmed that CompuCell3D was installed on all the nodes, so it's not an issue related to that I think.
id: lnjrb | creation_date: Feb. 12, 2019, 4:08 p.m. | author: James Sluka | type: Answer |
parent: gbomx | lastedit_date: Feb. 12, 2019, 4:08 p.m. | lastedit_user: James Sluka |
content:
Hmmm, it looks like you have CC3D 3.7.8 and I don't see any reason for the script not to run, or at least to give an error message. Let me see what the code guru says.
id: xkerk | creation_date: Feb. 12, 2019, 7:37 p.m. | author: Mukti C | type: Comment |
parent: lnjrb | lastedit_date: Feb. 12, 2019, 7:37 p.m. | lastedit_user: Mukti C |
content:
Okay, thank you very much!
id: rvklr | creation_date: Feb. 14, 2019, 1:32 p.m. | author: Maciek Swat | type: Answer |
parent: gbomx | lastedit_date: Feb. 14, 2019, 1:32 p.m. | lastedit_user: Maciek Swat |
content:
What happens if you tun without "-o" option and put --noOutput instead? Does anything run from the command line?
id: gbvrb | creation_date: Feb. 14, 2019, 4:13 p.m. | author: Mukti C | type: Comment |
parent: rvklr | lastedit_date: Feb. 14, 2019, 4:13 p.m. | lastedit_user: Mukti C |
content:
Hi,
The same problem occurs if I run the command with "--noOutput" and without "-o".
id: bzlax | creation_date: Feb. 15, 2019, 5:48 p.m. | author: Maciek Swat | type: Answer |
parent: gbomx | lastedit_date: Feb. 15, 2019, 5:48 p.m. | lastedit_user: Maciek Swat |
content:
how did you install cc3d on linux? Can you get player to open or are you able to run any simulation at all?
id: nokkk | creation_date: Feb. 18, 2019, 8:56 a.m. | author: Mukti C | type: Comment |
parent: bzlax | lastedit_date: Feb. 18, 2019, 8:56 a.m. | lastedit_user: Mukti C |
content:
I installed CC3D on Linux by just downloading the binary distribution package and extracting the files from the tar file. As it is on a cluster, I have to run it in GUI-less mode and so the player doesn't open. I haven't been able to run any simulation at all either.
id: nolxx | creation_date: March 18, 2019, 10:32 a.m. | author: Mukti C | type: Comment |
parent: bzlax | lastedit_date: March 18, 2019, 10:32 a.m. | lastedit_user: Mukti C |
content:
Hi Dr. Swat, I'm still stuck on this issue. Any help will be much appreciated. Thanks!
id: xkgza | creation_date: March 19, 2019, 12:21 a.m. | author: Maciek Swat | type: Answer |
parent: gbomx | lastedit_date: March 19, 2019, 12:21 a.m. | lastedit_user: Maciek Swat |
content:
Can you share the content of the runScript.sh? If you try running
./runScript -i Demos/Models/cellsort/cellsort_2D/cellsort_2d.cc3d
do you get any output?screenshotDirectoryName= /data/home/mchowkw1/Results/Test1_0202
that you saw earlier means that the simulation output folder which is same as screennshotDirectoryName
So you run the script and then does anything happen at all or CompuCell3D crashes?
Can you try compiling CC3D on your system? I wonder if the issue has to do with the fact that you are on Centos 7.1 and you are trying to run binaries for RHEL 7.5 . What I could do is to try building binaries on Centos 7.1 and give it to you but a better solution would be to create docker container. Any of those solutions would require effort and we definitely have plans to release docker images of CC3D . But I wonder if you could try compiling it yourself or perhaps sys admin can help you with it. We have several tutorial on how to compile CC3D on clusters. What do you think?
id: gblne | creation_date: March 19, 2019, 10:04 a.m. | author: Mukti C | type: Comment |
parent: xkgza | lastedit_date: March 19, 2019, 10:04 a.m. | lastedit_user: Mukti C |
content:
Hi Dr. Swat,
Thank you for your response! When I run the first command, I still get:
[mchowkw1 3.7.8]$ ./runScript.sh -i Demos/Models/cellsort/cellsort_2D/cellsort_2D.cc3d
./runScript.sh: line 6: warning: setlocale: LC_NUMERIC: cannot change locale (C.UTF-8): No such file or directory
./runScript.sh: line 6: warning: setlocale: LC_NUMERIC: cannot change locale (C.UTF-8)
CompuCell3D - version 3.7.6
CompuCell3D Version: 3.7.8 Revision: 20180908
Platform: linux2
Did not find dl module, will try manual dl initialization...
steppablePath=/data/home/mchowkw1/3.7.8/lib/CompuCell3DSteppables
pluginPath=/data/home/mchowkw1/3.7.8/lib/CompuCell3DPlugins
THIS IS JUST BEFORE LOADING LIBRARIES
AFTER LOAD LIBRARIES
#!/bin/sh
current_directory=$(pwd)
# necessary to enforce standard convention for numeric values specification on non-English OS
export LC_NUMERIC="C.UTF-8"
# export PREFIX_CC3D=/home/m/install_projects/3.7.6
export PREFIX_CC3D="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export PYTHON_EXEC=${PREFIX_CC3D}/Python27/bin/python
export MAX_NUMBER_OF_CONSECUTIVE_RUNS=50
cd $PREFIX_CC3D
#export LD_LIBRARY_PATH=:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${PREFIX_CC3D}/lib/:$LD_LIBRARY_PATH
export COMPUCELL3D_PLUGIN_PATH=${PREFIX_CC3D}/lib/CompuCell3DPlugins
export COMPUCELL3D_STEPPABLE_PATH=${PREFIX_CC3D}/lib/CompuCell3DSteppables
export LD_LIBRARY_PATH=${PREFIX_CC3D}/lib/python:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${COMPUCELL3D_PLUGIN_PATH}:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${COMPUCELL3D_STEPPABLE_PATH}:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=:$LD_LIBRARY_PATH
export SWIG_LIB_INSTALL_DIR=${PREFIX_CC3D}/lib/python
export PYTHON_MODULE_PATH=${PREFIX_CC3D}/pythonSetupScripts
export PYTHONPATH=${PREFIX_CC3D}/pythonSetupScripts
export COMPUCELL3D_MAJOR_VERSION=3
export COMPUCELL3D_MINOR_VERSION=7
export COMPUCELL3D_BUILD_VERSION=6
export SOSLIB_PATH=${PREFIX_CC3D}/examplesSoslib
echo "CompuCell3D - version $COMPUCELL3D_MAJOR_VERSION.$COMPUCELL3D_MINOR_VERSION.$COMPUCELL3D_BUILD_VERSION"
export exit_code=0
${PYTHON_EXEC} ${PREFIX_CC3D}/player5/CompuCellPythonSimulationCML.py $* --currentDir=${current_directory}
exit_code=$?
cd ${current_directory}
exit ${exit_code}
id: jexgm | creation_date: March 20, 2019, 12:35 p.m. | author: Maciek Swat | type: Answer |
parent: gbomx | lastedit_date: March 20, 2019, 12:35 p.m. | lastedit_user: Maciek Swat |
content:
The problem with CC3D binaries on any cluster is that those systems are often not your standard linux distribution. They are often (not always) customized and standard tools might struggle linking CC3D to correct libraries. But if this is standard CentOS 7.1 then I would suggest
http://www.compucell3d.org/SrcBin/CompilingOnLinux2017
or (if the above does not work)
http://www.compucell3d.org/SrcBin/LinuxCompileRedHat6
The first link has already specific pointers for RedHat, CentOS and I verified it. If you try it (you may install CentOS in a Virtual Machine) it should work. If you run into problems let me know and I will help out
id: vewpq | creation_date: Feb. 2, 2019, 1:17 p.m. | author: Jairaj Mathur | type: Question |
parent: | lastedit_date: Feb. 11, 2019, 4:12 p.m. | lastedit_user: James Sluka |
content:
Hi all
I wanted to create a plane, which the cells can not cross. How do I approach doing that? Basically, the energy cost should be so high to copy pixels there, that it never happens.
Thanks a lot!
id: ejzwk | creation_date: Feb. 11, 2019, 2:04 p.m. | author: James Sluka | type: Answer |
parent: vewpq | lastedit_date: Feb. 11, 2019, 2:04 p.m. | lastedit_user: James Sluka |
content:
One way to do this would be to create a long skinny cell at that plane location. If you freeze this cell and make the lambda volume very large then it should not be possible for a pixel from another cell to occupy that space, therefore the other cells cannot cross the barrier.
If you are using neighbor orders >1 then the frozen cell might need to be more than one pixel wide.
A second way to do it would be to track the position of each cell. If any pixel crosses the (imaginary) barrier you apply a an external force to move it back. Once all pixels are back in the allowed region you turn off the force.
id: nojpr | creation_date: Feb. 11, 2019, 2:46 p.m. | author: Jairaj Mathur | type: Comment |
parent: ejzwk | lastedit_date: Feb. 11, 2019, 2:46 p.m. | lastedit_user: Jairaj Mathur |
content:
I feel the second way would be easier. Is there any tutorial/example on applying forces in that way that I could refer to?
Thanks a lot for your reply!
id: zgomv | creation_date: Feb. 11, 2019, 4:12 p.m. | author: James Sluka | type: Answer |
parent: vewpq | lastedit_date: Feb. 11, 2019, 4:12 p.m. | lastedit_user: James Sluka |
content:
File attached: no_cross_barrier.zip (8.92 KB)
I've attached a demo CC3D project. It uses forces to keep all the cells above the y=40 line. The simulation starts with cells spread all over, then forces them all to the top part of the window. Cells that are in the top of the window have no force, only those in the lower part. (Notice that cells tend to stick to the bottom wall and take a while to get released.)
Once you get the syntax right adding/removing forces is pretty straightforward.
attachments(redirected):
.\CC3D_allanswered_linked_files\no_cross_barrier.zip
id: bzjbg | creation_date: Feb. 7, 2019, 10:44 a.m. | author: Meredith Proctor | type: Question |
parent: | lastedit_date: Feb. 11, 2019, 1:58 p.m. | lastedit_user: James Sluka |
content:
Hi,
I was curious to how I would go about taking a screenshot with multiple variables/outputs. I am using CompuCell3D version 3.7.5. So far, even if I have multiple graphics shown, it will only take a screenshot of one graphic. Any help would be much appreciated. Thank you!
id: wkwgn | creation_date: Feb. 11, 2019, 1:58 p.m. | author: James Sluka | type: Answer |
parent: bzjbg | lastedit_date: Feb. 11, 2019, 1:58 p.m. | lastedit_user: James Sluka |
content:
You should be able to open and save multiple windows in CC3D. To get all of the individual windows to save you need to click the little camera icon in each window you want save. Also, in <tools><configuration> make sure the "save image every nth MCS" is checked. If everything is setup correctly you'll get a separate folder of images in the output directory for each of your windows.
id: rvqbm | creation_date: Feb. 8, 2019, 12:34 a.m. | author: DrjyPrk | type: Question |
parent: | lastedit_date: Feb. 11, 2019, 1:50 p.m. | lastedit_user: James Sluka |
content:
for example, in _steppables.py file, if I want to access a contact energy value from the .xml file and want to use it within a function as a variable for some stoppable, is there a way?
id: mojez | creation_date: Feb. 11, 2019, 1:49 p.m. | author: James Sluka | type: Answer |
parent: rvqbm | lastedit_date: Feb. 11, 2019, 1:50 p.m. | lastedit_user: James Sluka |
content:
Here is how to get the value for an adhesion pair (and change it if you want) from python in an xml+python simulation. You'll need to include the line;
from XMLUtils import dictionaryToMapStrStr as d2mss
at the top of your python steppables file.
# need "from XMLUtils import dictionaryToMapStrStr as d2mss" in this file's import list
# get the contact energy between cells of type "acell" and "bcell"
contactXMLData=self.simulator.getCC3DModuleData("Plugin","Contact")
energyTypeATypeB=contactXMLData.getFirstElement("Energy", \
d2mss({"Type1":"acell","Type2":"bcell"}))
thevalue=float(energyTypeATypeB.getText())
print "\n thevalue=",thevalue
# change the value
newJ = thevalue - 3.
energyTypeATypeB.updateElementValue(str(newJ))
# update the atual model
self.simulator.updateCC3DModule(contactXMLData)
# double check that things actually got updated!
# get the contact energy between cells of type "acell" and "bcell"
contactXMLData=self.simulator.getCC3DModuleData("Plugin","Contact")
energyTypeATypeB=contactXMLData.getFirstElement("Energy", \
d2mss({"Type1":"acell","Type2":"bcell"}))
thevalue=float(energyTypeATypeB.getText())
print " NEW thevalue=",thevalue,"\n"
id: kvjpm | creation_date: Feb. 11, 2019, 2:38 p.m. | author: James Sluka | type: News |
parent: | lastedit_date: Feb. 11, 2019, 2:38 p.m. | lastedit_user: James Sluka |
content:
Unfortunately, AllAnswered has decided to discontinue this free forum hosting service. The CompuCell3D group is currently seeking a replacement forum that we can use.
If anyone has suggestions on other possible forums please let us know.
Our currently plan is to continue here on AllAnswered until the end of February 2019. We will then migrate to another platform. We hope to be able to migrate all of the old posts on this forum to the new platform.
We are sorry for the inconvenience and hope to have the new forum up with minimal disruptions.
id: qbkqj | creation_date: Feb. 21, 2019, 2:35 p.m. | author: Jairaj Mathur | type: Question |
parent: | lastedit_date: March 1, 2019, 6:58 p.m. | lastedit_user: Jairaj Mathur |
content:
Hi All
I am running the amoeba_2D example, and when I switch to the "FGF" view in the player, I just see the color bar showing 0 to 1 for blue to red, even thought the values for the field
range from 0 to 3000. How can I change these values and colors?
Thanks a lot!
id: azoxv | creation_date: Feb. 26, 2019, 5:29 p.m. | author: James Sluka | type: Answer |
parent: qbkqj | lastedit_date: Feb. 26, 2019, 5:29 p.m. | lastedit_user: James Sluka |
content:
In Player go to <Tools><Settings>, then the <Field> tab. In the "Field Name" drop down select the field of interest then uses the boxes below that to set min and max values. If neither of the "Fixed" boxes is checked then the color bar will auto scale throughout the simulation. Sounds like you might want to set the Min to be fixed at zero and the Max fixed at 3000.
These settings should be remembered the next time you start the same simulation in Player.
id: wkvng | creation_date: March 1, 2019, 6:58 p.m. | author: Jairaj Mathur | type: Answer |
parent: qbkqj | lastedit_date: March 1, 2019, 6:58 p.m. | lastedit_user: Jairaj Mathur |
content:
Thank you so much. It worked!
id: jejmn | creation_date: Feb. 26, 2019, 12:35 p.m. | author: Jairaj Mathur | type: Question |
parent: | lastedit_date: March 1, 2019, 7 p.m. | lastedit_user: Jairaj Mathur |
content:
Hi all
How can I change the chemical field concentration at any pixel individually? In general, how do I access chemical fields at any given point?
id: nokbx | creation_date: Feb. 26, 2019, 6:25 p.m. | author: James Sluka | type: Answer |
parent: jejmn | lastedit_date: Feb. 26, 2019, 6:25 p.m. | lastedit_user: James Sluka |
content:
There are helpers in Twedit++ to help you peek and poke into fields;
<CC3D Python> <Chemical Field Manipulation>
Get Field Reference
Get Field Value
Set Field Value
See if that does what you want.
id: ejpol | creation_date: March 1, 2019, 7 p.m. | author: Jairaj Mathur | type: Comment |
parent: nokbx | lastedit_date: March 1, 2019, 7 p.m. | lastedit_user: Jairaj Mathur |
content:
Thank you for the response, I will check it out.
id: lnvea | creation_date: March 1, 2019, 7:26 p.m. | author: Jairaj Mathur | type: Question |
parent: | lastedit_date: March 6, 2019, 4:21 p.m. | lastedit_user: Jairaj Mathur |
content:
Hi All
In the python scripting guide, if I want to evaluate sin(y_com/x_com), why can I not do that by writing the following in the "step" section-
from math import *
cell.dict['ratio'] = sin (cell.xCOM / cell.yCOM)
Just like the ExtraField example?
Thanks!
id: bzlrq | creation_date: March 4, 2019, 12:11 p.m. | author: James Sluka | type: Answer |
parent: lnvea | lastedit_date: March 4, 2019, 12:11 p.m. | lastedit_user: James Sluka |
content:
What happen when you use your code? Remember that cell.xCOM and cell.yCOM are integers so you have an integer divide there.
id: xkvpr | creation_date: March 4, 2019, 5:02 p.m. | author: Jairaj Mathur | type: Comment |
parent: bzlrq | lastedit_date: March 4, 2019, 5:02 p.m. | lastedit_user: Jairaj Mathur |
content:
I havent tried it, so dont know what will happen. But you are right, the integer divide could pose a problem. Is there no way to do a floating divide with them?
id: rvkga | creation_date: March 5, 2019, 10:28 a.m. | author: James Sluka | type: Comment |
parent: xkvpr | lastedit_date: March 5, 2019, 10:28 a.m. | lastedit_user: James Sluka |
content:
You would just need to float one of the two numbers;
cell.dict['ratio'] = sin (float(cell.xCOM) / cell.yCOM)
The dictionary should be able to hold any type of data so putting a floating point number into it shouldn't be a problem.
id: gbvaj | creation_date: March 6, 2019, 4:21 p.m. | author: Jairaj Mathur | type: Comment |
parent: rvkga | lastedit_date: March 6, 2019, 4:21 p.m. | lastedit_user: Jairaj Mathur |
content:
Nice one! Thanks!
id: ejwjp | creation_date: March 21, 2019, 1:19 p.m. | author: Jairaj Mathur | type: Question |
parent: | lastedit_date: March 21, 2019, 1:38 p.m. | lastedit_user: Jairaj Mathur |
content:
Hi All
I am having some basic difficulties. I want cells to only do uptake, using the python functions like
attrSecretor.secreteInsideCell(cell,300)
attrSecretor.secreteInsideCellAtBoundary(cell,300)
attrSecretor.secreteOutsideCellAtBoundary(cell,500)
attrSecretor.secreteInsideCellAtCOM(cell,300)
To be a bit more specific, I want to use the function:
secreteOutsideCellAtBoundaryOnContactwith
What I dont understand is, do I have to add the secretion pluggin in the XML as well? I am currently using both xml and python. If I do have to, what parameter do I give inside the pluggin? Appreciate all the help so far!