Cytosim PI Cytoskeleton Simulator

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

List of all members | Public Member Functions | Public Attributes
Simul Class Reference

## Public Member Functions
| Simul ()
| constructor
virtual | ~Simul ()
| destructor
void | add (Object *)
| link Object
int | add (ObjectList)
| link Objects
void | remove (Object *)
| unlink Object
void | remove (ObjectList)
| unlink Objects
void | erase (Object *)
| unlink and delete object
void | erase (ObjectList)
| unlink and delete all objects in list
void | mark (ObjectList, int)
| mark objects in list
void | erase ()
| erase simulation world (all sub-lists and variables)
real | simTime () const
| time in the simulated world
void | setTime (real t)
| set frame index
void | initialize (Glossary &)
| perform basic initialization; register callbacks More...
void | prepare (Space *spc)
| initialize the simulation engine More...
void | prepare ()
| initialize the simulation engine using the current space
bool | isReady () const
| returns true is the simulation is ready to run (or appears so)
void | relax ()
| call after a sequence of step() have been done
void | space (Space *spc)
| set current Space More...
Space * | space () const
| get current Space
Space * | firstSpace (const std::string &name)
| return first Space with this name
void | foldPosition () const
| call foldPosition() for all objects
void | step ()
| perform the Monte-Carlo part of the simulation for one time_step
void | solve ()
| calculate the mechanics of the system and move objects accordingly, for one time_step
void | calculateForces () const
| calculate Forces and Lagrange multipliers, but do not move objects
void | dump () const
| dump matrix and vector from Meca
void | setInteractions (Meca &) const
| call setInteractions(meca) for all objects More...
ObjectSet * | findSet (const std::string &kind)
| return the ObjectSet corresponding to a class
ObjectSet const * | findSet (const std::string &kind) const
| return the ObjectSet corresponding to a class
Object * | findObject (const Tag, long)
| find an object from the class-TAG and the inventory number
Object * | findObject (const std::string &, long) const
| find an object from the name of its class and the inventory number
Fiber * | findFiber (long num) const
| find a fiber from the name of the fiber
Object * | readReference (InputWrapper &, char &tag)
| read an Object reference and return the corresponding Object (`tag` is set) More...
bool | isProperty (const std::string &) const
| check if the name corresponds to a property class
Property * | findProperty (const std::string &, const std::string &) const
| get an existing property, or return zero
Property * | findProperty (const std::string &, const int index) const
| get an existing property, or return zero
SingleProp * | findSingleProp (const std::string &nm) const
| find a SingleProp
PropertyList | findProperties (const std::string &) const
| return all existing propertis of required class
Property * | newProperty (const std::string &, const std::string &, Glossary &)
| create a new property
void | writeProperties (std::ostream &, bool prune) const
| write all properties More...
void | writeProperties (std::string &file, bool prune) const
| write sim-state to a named file More...
int | readObjects (InputWrapper &)
| read sim-state from InputWrapper More...
int | readObjects (std::string const &file)
| read sim-state from a named file More...
void | writeObjects (OutputWrapper &) const
| write simulation-state to specified file
void | writeObjects (std::string const &file, bool binary, bool append) const
| write simulation-state in binary or text mode, appending to the file or not More...
void | report (std::ostream &, std::string const &str, Glossary &) const
| call one of the report function More...
void | report (std::ostream &, std::string const &what, std::string const &who, Glossary &) const
| call one of the report function More...
void | reportTime (std::ostream &) const
| print time
void | analyzeClusters () const
| analyse the network connectivity to identify isolated sub-networks More...
void | reportClusters (std::ostream &, bool) const
| print size of clusters defined by connections with Couples More...
void | reportFiber (std::ostream &) const
| print the length and the points of each fiber More...
void | reportFiberPoints (std::ostream &) const
| print the coordinates of the model-points of each fiber More...
void | reportFiberForces (std::ostream &) const
| print the coordinates and forces on the model-points of each fiber More...
void | reportFiberEnds (std::ostream &) const
| print the positions and the states of the two ends of each fiber More...
void | reportFiberLengths (std::ostream &) const
| print average length and standard deviation for each class of fiber More...
void | reportFiberLengthDistribution (std::ostream &, real delta, real max) const
| print length distribution for each class of fiber More...
void | reportFiberSegments (std::ostream &) const
| print number of kinks in each class of Fiber
void | reportFiberDynamic (std::ostream &, FiberEnd) const
| print number of fibers according to dynamic state of end More...
void | reportFiberDynamic (std::ostream &) const
| print number of fibers according to their dynamic states More...
void | reportFiberSpeckles (std::ostream &, real) const
| print coordinates of points along the length of all Fiber More...
void | reportFiberStates (std::ostream &) const
| print dynamic states of Fiber
void | reportFiberTension (std::ostream &, Glossary &opt) const
| print Fiber tensions along certain planes defined in `opt` More...
void | reportOrganizer (std::ostream &) const
| print Aster positions More...
void | reportBeadSingles (std::ostream &) const
| print Bead positions More...
void | reportBeadPosition (std::ostream &) const
| print Bead positions More...
void | reportSolid (std::ostream &) const
| print Solid positions More...
void | reportCouple (std::ostream &) const
| print state of Couples More...
void | reportCouplePosition (std::ostream &) const
| print position of Couples More...
void | reportCouplePosition (std::ostream &, std::string const &) const
| print position of Couples of a certain kind More...
void | reportSingle (std::ostream &) const
| print state of Singles More...
void | reportSinglePosition (std::ostream &) const
| print position of Singles More...
void | reportSingleForce (std::ostream &) const
| print position of Singles More...
void | reportSinglePosition (std::ostream &, std::string const &) const
| print position of Singles of a certain kind More...
void | reportSphere (std::ostream &) const
| print state of Couples More...
void | reportSpace (std::ostream &) const
| print something about Spaces More...
void | reportCustom (std::ostream &) const
| print something More...
void | custom0 ()
| custom function
void | custom1 ()
| custom function
void | custom2 ()
| custom function
void | custom3 ()
| custom function
void | custom4 ()
| custom function
void | custom5 ()
| custom function
void | custom6 ()
| custom function
void | custom7 ()
| custom function
void | custom8 ()
| custom function
void | custom9 ()
| custom function

## Public Attributes
SimulProp * | prop
| Global cytosim parameters.
PropertyList | properties
| holds all Property, except the SimulProp
SpaceSet | spaces
| list of Space
FieldSet | fields
| list of Field
FiberSet | fibers
| list of Fiber
SphereSet | spheres
| list of Sphere
BeadSet | beads
| list of Bead
SolidSet | solids
| list of Solid
SingleSet | singles
| list of Single
CoupleSet | couples
| list of Couple
OrganizerSet | organizers
| list of organizers

## Member Function Documentation

void analyzeClusters | ( |  | ) | const

Set Fiber::fleck to indicated Fibers that are connected by Couple.

The clusters are defined by the Couple that are bridging Fibers: Two fibers are in the same cluster if there is a Couple connecting them, of if they can be indirectly connected in this way via other Fibers.

This analysis can be useful to identify mechanically isolated sub-networks in the simulation. The result can be visualized in `play` with the option fiber:coloring=4, and it can also be printed with the tool `report fiber:cluster`

void initialize | ( | Glossary & | glos | ) |

This will initialize the simulation by registering callbacks. You should still call Simul::prepare() before calling step()

void prepare | ( | Space * | spc | ) |

Will pepare the simulation engine to make it ready to make a step():

- set FiberGrid used for attachment of Hands,
- set StericGrid
- call complete() for all registered Property

The simulated objects should not be changed.

int readObjects | ( | InputWrapper & | in | ) |

Before reading, all objects are transfered to a secondary list called 'ice'. Every object encountered in the file is updated, and then transferred back to the normal list.

When the read is complete, the objects that are still on 'ice' are deleted. In this way the new state reflects exactly the system that was read from file.

Returns
  - 0 = success
  - 1 = EOF

int readObjects | ( | std::string const & | file | ) |

Create an InputWrapper and calls readObjects(in)

Object * readReference | ( | InputWrapper & | in,
|  | char & | tag
| ) |  |

We do not allow property()->index() of an Object to change during import from a file. However, there is no structural reason that prevent this in the code. If necessary, it should be possible to remove this limitation.

The Object is not modified

void report | ( | std::ostream & | out,
|  | std::string const & | str,
|  | Glossary & | opt
| ) |  | const

void report | ( | std::ostream & | out,
|  | std::string const & | what,
|  | std::string const & | who,
|  | Glossary & | opt
| ) |  | const

WHAT | output
--- | ---
`organizer` | Position of the center of asters and other organizers
`bead` | Position of beads
`couple` | Number and state of couples
`fiber` | Length and position of the ends of fibers
`single` | Number and state of singles
`solid` | Position of center and first point of solids
`sphere` | Position of center and first point of spheres
`time` | Time
`parameters` | All object properties

WHAT:WHO | output
--- | ---
`fiber:lengths` | Average length and standard deviation of fibers
`fiber:dynamics` | Number of fiber classified by PLUS_END Dynamic state
`fiber:points` | coordinates of model points of all fibers
`fiber:speckles` | coordinates of points randomly distributed along all fibers
`fiber:segments` | information about lengths of segments, number of kinks
`fiber:ends` | Positions and dynamic states of all fiber ends
`fiber:forces` | Position of model points and Forces acting on model points
`fiber:tensions` | Internal stress along fibers
`fiber:clusters` | Clusters made of fibers connected by Couples
`bead:all` | Position of beads
`bead:singles` | Number of Beads with no single attached, 1 single attached etc.
`single:all` | Position and force of singles
`single:NAME` | Position of singles of class NAME
`couple:all` | Position of couples
`couple:NAME` | Position of couples of class NAME

void reportBeadPosition | ( | std::ostream & | out | ) | const

Export position of Beads

void reportBeadSingles | ( | std::ostream & | out | ) | const

Export number of beads classified as a function of the number of grafted Single that are attached to Fibers

void reportClusters | ( | std::ostream & | out,
|  | bool | details
| ) |  | const

Export size of clusters found by Simul::analyzeClusters()

void reportCouple | ( | std::ostream & | out | ) | const

Export state of Couples

void reportCouplePosition | ( | std::ostream & | out | ) | const

Export position of Couples

void reportCouplePosition | ( | std::ostream & | out,
|  | std::string const & | who
| ) |  | const

Export position of Couples of a certain kind

void reportCustom | ( | std::ostream & | out | ) | const

Export end-to-end distance of Fiber

void reportFiber | ( | std::ostream & | out | ) | const

Export length, position and directions at center of fibers

void reportFiberDynamic | ( | std::ostream & | out,
|  | FiberEnd | end
| ) |  | const

Export number of fiber, classified according to dynamic state of one end

void reportFiberDynamic | ( | std::ostream & | out | ) | const

Export number of fiber, classified according to dynamic state of one end

void reportFiberEnds | ( | std::ostream & | out | ) | const

Export dynamic state, positions and directions of fiber ends

void reportFiberForces | ( | std::ostream & | out | ) | const

Export Fiber-number, position of model points

void reportFiberLengthDistribution | ( | std::ostream & | out,
|  | real | delta,
|  | real | max
| ) |  | const

Export average length and standard-deviation for each class of fiber

void reportFiberLengths | ( | std::ostream & | out | ) | const

Export average length and standard-deviation for each class of fiber

void reportFiberPoints | ( | std::ostream & | out | ) | const

Export Fiber-number, position of model points

void reportFiberSpeckles | ( | std::ostream & | out,
|  | real | spread
| ) |  | const

Export positions of points taken randomly along all fibers, but that remain static with respect to the lattice of each fiber, during the life-time of this fiber.

This is meant to simulate the `speckle microscopy` that is obtained in microcscopy with a low amount of fluorescent-monomers.

The distance between the speckles follows an exponential distribution with an average defined by the parameter `spread`.

void reportFiberTension | ( | std::ostream & | out,
|  | Glossary & | opt
| ) |  | const

Sum of the internal tensions from fiber segments that intersect a plane specified in `opt`. The plane is defined by n.x + a = 0

plane = NORMAL, SCALAR

void reportOrganizer | ( | std::ostream & | out | ) | const

Export position of Asters and other organizers

void reportSingle | ( | std::ostream & | out | ) | const

Export state of Single

void reportSingleForce | ( | std::ostream & | out | ) | const

Export position of Singles

void reportSinglePosition | ( | std::ostream & | out | ) | const

Export position of Singles

void reportSinglePosition | ( | std::ostream & | out,
|  | std::string const & | who
| ) |  | const

Export position of Singles

void reportSolid | ( | std::ostream & | out | ) | const

Export position of Solids

void reportSpace | ( | std::ostream & | out | ) | const

Export something about Space

void reportSphere | ( | std::ostream & | out | ) | const

Export position of Sphere

void setInteractions | ( | Meca & | meca | ) | const

This will:

- Register all Mecables in the Meca: Fiber Solid Bead and Sphere
- call setInteractions() for all objects in the system,
- call setStericInteractions() if prop->steric is true.

void space | ( | Space * | spc | ) |

set current Space to spc. (zero is a valid argument).

This also set the space of all objects to spc.

void writeObjects | ( | std::string const & | file,
|  | bool | binary,
|  | bool | append
| ) |  | const

This appends the current state to a trajectory file. Normally, this is objects.cmo in the current directory.

If the file does not exist, it is created de novo.

void writeProperties | ( | std::ostream & | os,
|  | bool | prune
| ) |  | const

The order of the output is important, since some properties depend on others (eg. SingleProp and CoupleProp use HandProp). Luckily, there is no circular dependency in Cytosim at the moment.

Thus we simply follow the order in which properties were defined, and which is the order in which properties appear in the PropertyList.

void writeProperties | ( | std::string & | file,
|  | bool | prune
| ) |  | const

At the first call, this will write all properties to file, and save a copy of what was written to a string `properties_saved`.

The next time this is called, the properties will be compared to the string, and the file will be rewritten only if there is a difference.