CPL: Cell Programming Language (Release 1.2 8/25/93) ---------------------------------------------------- This is an implementation of a language in which programs describing the interactions of biological cells can be written. Simulations may be run and the results displayed. A technical report (in postscript) describing the language can be ftp'ed from cs.nyu.edu (128.122.140.24) file: /pub/local/agarwal/tr630.ps.Z. An alpha release of the software is available in a compressed tar file by ftp from cs.nyu.edu file: /pub/local/agarwal/cpl.tar.Z. Direct all questions/bug-reports to agarwal@cs.nyu.edu. I may also be able to provide some support if you are interested in developing simulations. To install CPL: 1) mkdir cpl; cd cpl; move cpl.tar.Z to this directory 2) uncompress cpl.tar.Z 3) tar -xvf cpl.tar It is advised that you create all your cpl program files in this directory and run the simulations from the same. Software needed to compile and install cpl: cpp, cc, gcc (g++), flex, bison, make. Software needed to visualize results obtained from cpl: X11, xv (xview) CPL has been tested on SUN 4 systems (unix). Running CPL programs: -------------------- Once you have untarred the CPL files, run "make cpl" and that should prepare a CPL simulation for cellular sorting. To run the simulation type "nice cpl -t 20 > sorting ", and this runs the simulation for 20 time steps, and stores the results in a file called "sorting". You can visualize the results using "cplvisual -f sorting -lower 0 -upper 4 -hexagonal". Man pages for cpl, cplvisual, and cplmovie are also included with the software. Rerunning make compiles the last modified ".cpl" file. You can edit the Makefile to change the #defines to suit your needs. Then just issue a "make" command in the directory. #defines -------- 1. RANDOM_ORDERING. If defined the cells execute at in a random order at each time step. The default is random ordering. If you want all the cells to execute in the same order at each time step you should place -URANDOM_ORDERING in C++FLAGS. 2. UNIT_CELLS. If all the cells have unit area, then defining UNIT_CELLS results a large improvement in speed and memory. There are also fewer bugs in this variant. 3. STABLE_NEIGHBORS. If the neighbor hood of a cell does not change very often then this variable should be set. By default this is not set and this causes the recomputation of the neighborhhod of each cell at each time instant. When STABLE_NEIGHBORS is defined the neighborhood is recomputed only when a cell's neighborhhod may have possible changed. This is only used in the UNIT_CELL case. If cells do not have unit area, then enough changes are expected to make it worthwhile to recompute neighbor information at each time step. 4. EIGHT_NEIGHBORHOOD. The default lattice used is the hexagonal lattice. If unit area cells are used then the eight-neighborhood lattice may be used instead. This is done by defining the variable EIGHT_NEIGHBORHOOD in the Makefile. The EIGHT_NEIGHBORHOOD lattice may not be used in conjunction with non unit area cells.