PIF Initializer¶
To initialize the configuration of the simulation lattice we can write
custom lattice initialization file. Our experience suggests that
you will probably have to write your own initialization files rather
than relying on built-in initializers. The reason is simple: the
built-in initializers implement very simple cell layouts, and if you
want to study more complicated cell arrangements, the built-in
initializers will not be very helpful. Therefore, we encourage you to
learn how to prepare lattice initialization files. We have developed
CellDraw
tool which is a part of CC3D suite and it allows users to draw
initial cell layout in a very intuitive way. We encourage you to read
“Introduction to CellDraw” to familiarize yourself with this tool.
To import custom cell layouts, CompuCell3D uses very simple Potts
Initial File PIF
file format. It tells CompuCell3D how to lay out
assign the simulation lattice pixels to cells.
The PIF consists of multiple lines of the following format:
cell# celltype x1 x2 y1 y2 z1 z2
Where cell#
is the unique integer index of a cell, celltype
is a string
representing the cell’s initial type, and x1
and x2
specify a range of
x-coordinates contained in the cell (similarly y1
and y2
specify a range
of y-coordinates and z1
and z2
specify a range of z-coordinates). Thus
each line assigns a rectangular volume to a cell. If a cell is not
perfectly rectangular, multiple lines can be used to build up the cell
out of rectangular sub-volumes (just by reusing the cell#
and celltype
).
A PIF can be provided to CompuCell3D by including the steppable object PIFInitializer
Let’s look at a PIF example for foams:
0 Medium 0 101 0 101 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
5 Foam 57 65 0 5 0 0
6 Foam 65 76 0 5 0 0
7 Foam 76 89 0 5 0 0
These lines define a background of Medium
which fills the whole lattice
and is then overwritten by seven rectangular cells of type Foam
numbered
1
through 7
. Notice that these cells lie in the xy
plane (z1=0
z2=0
implies that cells have thickness =1) so this example is a
two-dimensional initialization.
You can write the PIF file manually, but using a script or program that will write PIF file for you in the language of your choice (Perl, Python, Matlab, Mathematica, C, C++, Java or any other programming language) will save a great deal of typing.
Notice, that for compartmental cell model the format of the PIF file is different:
Include Clusters
cluster # cell# celltype x1 x2 y1 y2 z1 z2
For example:
Include Clusters
1 1 Side1 23 25 47 56 10 14
1 2 Center 26 30 50 54 10 14
1 3 Side2 31 33 47 56 10 14
1 4 Top 26 30 55 59 10 14
1 5 Bottom 26 30 45 49 10 14
2 6 Side1 35 37 47 56 10 14
2 7 Center 38 42 50 54 10 14
2 8 Side2 43 45 47 56 10 14
2 9 Top 38 42 55 59 10 14
2 10 Bottom 38 42 45 49 10 14
Tip
An easy way to generate PIF file from the current
simulation snapshot is to use Player Tools->Generate
PIF file from
current snapshot… menu option. Alternatively we can use PIFDumper
steppable discussed next.