Skip to content

A simple mechanics-based approach to simulating cells. Uses a component-based GUI approach

License

Notifications You must be signed in to change notification settings

jsutlive/Cell-Mechanics-Simulator

Repository files navigation

Cell Mechanics Simulator

Requires java installed for the standalone .jar to work! Get Java here.

For in-depth information, please consult the wiki!

Contributors, please check CONTRIBUTING.md for updates on how to best contribute to the project.

Cell Mechanics Simulator UI

Note: The readme/ documentation currently describes the Master branch of the project. To have the most up-to-date, stable code, please refer to the Master branch.

The Morphogenesis Simulator is a physics simulator initially constructed to simulate developing organisms as mechanical systems. It is a soft-body dynamics representation and thus physics is typically represented as a spring-mass system. For more information about soft-body dynamics, this Wikipedia [article] https://en.wikipedia.org/wiki/Soft-body_dynamics is an excellent start.

Quick start

Within a Java IDE:

Download files, you may need to install opencsv. Build and run the "Launcher.java" file, which acts as the entry point.

Using the standalone .jar:

Double click and run (requires Java 8 or later install). Find the latest releases here. Here you can download the compiled versions of the program as well as a .zip file of the source code.

Features

component-based physics system

  • Easily change behaviors of physics objects by adding and removing components.

  • Easy coding of new components to add new behaviors to system.

Functional GUI with object inspector

  • Change parameters of models without needing to code with the object inspector.

  • Mouse select/multi-select objects

  • Group objects

Cell Mechanics Simulator:

A real-time, 2D soft-body physics simulator used to model cell mechanics. Compatible with PC and Mac!

Markdown Monster icon

Simulation framework:

The simulation has unique editor and simulation states which you can use to tweak model parameters via the component inspector. Each state has behaviors it performs every physics update, which drive the simulation.

This simulation uses an object-oriented approach to break structures into cells, edges, and nodes. There are two current preset models available, a Drosophila embryo model and a hexagon cell sheet model.

An edge describes the connection between two nodes. There is only one type of node at this time, this will change if 3D representations become supported.

Nodes are the discrete units which the physics acts upon. For ease of understanding, physics calculations are often abstracted to act on edges and cells rather than just nodes themselves. For instance, a force acting on an edge describes that force acting upon two of its nodes. Likewise, a force acting on a cell is acting on all of the nodes.

In this simulation all of the entities described earlier are cells and a single "model" entity controls group physics. During each update, the entity performs the actions listed in its update method. The model object currently acts as a bit of a wrapper, performing tissue level tasks such as collision detection between cells.

The following physics functions are currently implemented: (F = force and k = constant in all cases) -Active and passive springs: using Hooke's law F = k * (l - l0) where l/l0 = length/ initial length Note: this value can be compressed (i.e. after a certain threshold, output equals a set percentage of the input, lowering the overall force output) -Volume conservation: using a 2D interpretation of the spring function F = k * (a - a0), where a/a0 = area/ initial area -2D Collision: uses the raycast algorithm to prevent meshes from colliding.