## Growth
- Elongation is constant in length growth
[(Grover et al., 1977](https://doi.org/10.1016/0022-5193(77)90192-8)
[Rosenberger et al., 1978)](https://doi.org/10.1016/0022-5193(78)90132-7)
- Model as linear growth
$$\\begin{equation}
\partial\_t l = \mu
\\end{equation}$$
- For larger collections: introduce phenomenological saturation term
depending on number of neighbors $n$
$$\\begin{equation}
\partial\_t l = \mu\left(1 - \frac{\text{min}(n, N)}{N}\right)
\\end{equation}$$
## Cell Cycle
1. Cell divides in the middle when reaching threshold length
$l\_\text{max}$
2. Calculate new spring lengths
3. Calculate new positions of vertices for both cells
(interpolate new vertices between vertices of mother-cell)
4. (Optional) Pick new growth rate (or other parameters)
---
## Interaction
---
## Interaction
#### Morse-Potential
\\begin{equation}
V(r) = V_0\left(1 - e^{-\lambda(r-R)}\right)^2
\\end{equation}
---
## Interaction
#### Mie-Potential
\\begin{equation}
U(r) = C\epsilon\left[ \left(\frac{\sigma}{r}\right)^n -
\left(\frac{\sigma}{r}\right)^m\right]
\\end{equation}
\\[
C = \frac{n}{n-m}\left(\frac{n}{m}\right)^{\frac{n}{n-m}}
\\]
| | Name | Type | |
|---:|:---|:---:|:---:|
| $R$ | Radius | `f32`$\in\mathbb{R}^+$ | Fit |
| $\epsilon$ | Strength | `f32`$\in\mathbb{R}^+$ | Fit |
| $\beta$ | Bound | `f32`$\in\mathbb{R}^+$ | Assumption |
| $\zeta$ | Cutoff | `f32`$\in\mathbb{R}^+$ | Assumption |
| $n,m$ | Exponents | `f32`$\in\mathbb{R}^+$ | Fit |
---
## Comparison of Interaction Potentials
Variables/Parameters
```rust [1-2|3-5|6-8|9-13|1-13]
#[derive(CellAgent, Clone, Debug, Deserialize, Serialize)]
pub struct RodAgent {
/// Determines mechanical properties of the agent
#[Mechanics]
pub mechanics: RodMechanics<f32, 3>,
/// Determines interaction between agents
#[Interaction]
pub interaction: RodInteraction<PhysicalInteraction>,
/// Rate with which the cell grows
pub growth_rate: f32,
/// Threshold at which the cell will divide
pub division_length: f32,
}
```
```rust [1-2|3-6|7-16|1-17]
#[derive(Clone, Debug, PartialEq)]
pub struct RodMechanics<f32, 3> {
/// The current position
pub pos: Matrix<f32, Dyn, Const<3>, _>,
/// The current velocity
pub vel: Matrix<f32, Dyn, Const<3>, _>,
/// Controls stochastic motion
pub diffusion_constant: f32,
/// Spring tension between vertices
pub spring_tension: f32,
/// Stiffness between two edges
pub rigidity: f32,
/// Target spring length
pub spring_length: f32,
/// Daming constant
pub damping: f32,
}
```
| | Property | Type | |
|---:|:---|:---:|:---:|
| $\mu$ | Growth Rate | `f32`$\in\mathbb{R}^+$ | Fit |
| $l_\text{max}$ | Division Length | `f32`$\in\mathbb{R}^+$ | Fit |
| $\vec{x}_i$ | Position | `Matrix`$\in\mathbb{R}^{d\times 3}$ | I.V. |
| $\vec{v}_i$ | Velocity | `Matrix`$\in\mathbb{R}^{d\times 3}$ | I.V. |
| - | Diffusion | `f32`$\in\mathbb{R}^+$ | $0$ |
| $l$ | Spr. Length | `f32`$\in\mathbb{R}^+$ | I.V. |
| $\gamma$ | Spr. Tension | `f32`$\in\mathbb{R}^+$ | Fit |
| $\eta$ | Rigidity | `f32`$\in\mathbb{R}^+$ | Fit |
| $\lambda$ | Damping | `f32`$\in\mathbb{R}^+$ | Fit |
---
## Numerical Simulation Example
---
## Image Analysis
Time Series of Microscopic Images
We need methods to map between images
and our numerical simulation
1. Extract individual cells from image
✅ (_Cell-Segmentation_)
2. Extract positions from individual cell
❌ (_No existing algorithm_)
3. Advance simulation
✅ (_see implementation of our model_)
4. Compare numerical and real-world results
❓ (_what is the cost function?_)
---
## Image Analysis
#### Extracting Positions
Microscopic Image
Cell Masks
Skeletonization
- Take skeleton of cell-mask and interpolate to polygon with $N$ vertices
---
## Image Analysis
#### Generating Images
- We can use the numerical simulation to generate
artificial data & images
- Create masks by projecting 3D image &
assigning unique color to each cell
- Use this data to test our position extraction algorithm
Advantage: known input positions
--
## Image Analysis
#### How to generate Near-Realistic Microscopic Images
- Noise
- Camera Sensor Noise
- Statistic Noise from environmental influences
- Defects
- Lens Aberration
- Dirt on Glass
- etc.
- Lighting (backlight most of the time)
- Cellular properties: reflectivity, luminosity, tranlucency
- Overlapping of bacteria
- Dirt/Other material floating around
$\Rightarrow$ Physically-Based Rendering!
---
## Image Analysis
#### Extracting Positions
- Crosses show extracted positions
- Lines show actual polygon
- Seems to match quite well
---
## Image Analysis
#### Extracting Positions

- Measure difference between rod lengths
- Calculate average vertex difference from extracted to known position
- Good agreement with given positions
- In the beginning small underestimation
- In the end small overestimation
---
## Parameter Estimation
#### Constructing a Cost Function
- Assumption: We have no cell-division
- $\Rightarrow$ compare euclidean distance between vertices
- If we have cell-division, we need to do something else
--
## Parameter Estimation
#### Comparing Across Generations
---
## Parameter Estimation
#### Results
---
## Parameter Estimation
#### Results
---
## Parameter Estimation
#### Optimization Strategies
1. Estimate parameters for each time-step
2. Run simulation over multiple time-steps and compare results
- option to rebase every $n$ time-steps and start with new initial
conditions
3. Global vs Local optimization
- unfortunately in general not possible to calculate Jacobian
---
### Python Package
```bash
pip install cr_mech_coli
```
```python [1|3-5|7-11|13-19|1-19]
import cr_mech_coli as crm
# Configure inputs
config = crm.Configuration()
agent_settings = crm.AgentSettings()
# Run simulation
cell_container = crm.run_simulation(
config,
agent_settings,
)
# Render Images
render_settings = crm.RenderSettings()
crm.store_all_images(
cell_container,
config.domain_size,
render_settings
)
```
Documentation
---
## Outlook
1. Cell-Segmentation & Cell-Tracking
- Generate Dataset of near-realistic images with masks
- Asses if this can improve existing Cell-Segmentation tools
- This allows us to easily study Cell-Tracking solutions
2. Distribution of Parameters
- Can we fit enough cells individually simultanously?
- How are parameters of cells distributed?
3. Inheritance of Parameters
- Will our algorithms work over multiple bacteria generations?
- How are parameters inherited to daughter cells?
We are meeting up with Alexander Rohrbach
this week to discuss how to take things further.