# Kinetic scheme

FiberSim defines how myosin heads and myosin binding protein C molecules transition between different states using structures called kinetic schemes.

FiberSim is agnostic about the actual schemes to use for simulations. The code was specifically designed so that it was flexible. Selecting the appropriate scheme is best left to the user and their goals. The demos provide several different examples but each user (and sometimes each reviewer!) will have opinions as to what they think is best.

The best advice the FiberSim team can provide is for the user to use the simplest scheme that reproduces the effects they are interested in. More complex schemes can produce more complex behaviors but also require more assumptions.

## Overview

Schemes are described in the model file using JSON format.

The model file should contain scheme information for myosin (labeled `m_kinetics`

) and also for MyBP-C (labeled `c_kinetics`

).

Each scheme should describe at least one isotype.

The information for each isotype consists of an array of `states`

, with `transitions`

describing how the molecules switch between states. These transitions are defined by `rate_functions`

.

## Example

Here is an example for a 4 state scheme for myosin.

```
"m_kinetics": [
{
"state": [
{
"number": 1,
"type": "S",
"extension": 0,
"transition": [
{
"new_state": 2,
"rate_type": "force_dependent",
"rate_parameters": [ 20, 200]
}
]
},
{
"number": 2,
"type": "D",
"extension": 0,
"transition": [
{
"new_state": 1,
"rate_type": "constant",
"rate_parameters": [ 100 ]
},
{
"new_state": 3,
"rate_type": "gaussian_hsl",
"rate_parameters": [ 200 ]
}
]
},
{
"number": 3,
"type": "A",
"extension": 0.0,
"transition": [
{
"new_state": 2,
"rate_type": "poly",
"rate_parameters": [ 500, 10, 4]
},
{
"new_state": 4,
"rate_type": "constant",
"rate_parameters": [ 75 ]
}
]
},
{
"number": 4,
"type": "A",
"extension": 5.0,
"transition": [
{
"new_state": 2,
"rate_type": "exp_wall",
"rate_parameters": [ 75, 1, 8, 7]
}
]
}
]
}
],
```

This heirarchical structure can be broken down as follows.

```
"m_kinetics": [ <snip> ]
```

means that we are defining the myosin scheme.

- The
`[ ]`

implies an array with each element in the`<snip>`

portion describing a scheme for a single isotype. - In this example, there’s just a single isotype. See isotypes for demos with multiple isotypes.

```
{
"state": [
<snip>
]
}
```

defines an array of states.

The first state is defined by

```
{
"number": 1,
"type": "S",
"extension": 0,
"transition":
[
{
"new_state": 2,
"rate_type": "force_dependent",
"rate_parameters": [ 20, 200]
}
]
}
```

This state is:

- state 1
- type S = SRX (that is, it links with its dimer partner into a non-interacting configuration)
- has 0 extension
- can undergo 1 potential transition
- to state 2
- with a rate type termed
`force_dependent`

- defined by two parameters, 20 and 200

- with a rate type termed

- to state 2

The second state is defined by

```
{
"number": 2,
"type": "D",
"extension": 0,
"transition":
[
{
"new_state": 1,
"rate_type": "constant",
"rate_parameters": [ 100 ]
},
{
"new_state": 3,
"rate_type": "gaussian_hsl",
"rate_parameters": [ 200 ]
}
]
},
```

This state is:

- state 2
- type D = DRX
- has 0 extension
- can undergo 2 potential transitions
- back to state 1
- with a rate type termed
`constant`

- defined by one parameter, 100

- with a rate type termed
- on to state 3
- with a rate type termed
`gaussian_hsl`

- defined by one parameter, 200

- with a rate type termed

- back to state 1

States 3 and 4 are defined in a similar way. Linking everything together produces this scheme.

## Options

These tables provide more information on the potential options.

### States

Parameter | Values | Comments |
---|---|---|

number | integer | identifies each state |

type | S | Super-relaxed, only for myosins, formed by both heads of a dimer coming together |

D | Detached | |

A | Attached | |

extension | float | length of link when the molecules binds directly opposite its origin (x = 0). As an example, 5, would mean a power stroke distance of 5 nm such that F = k (x + 5) |

### Transitions

For more details, and additional transition types, see the function `transition::calculate_rate()`

in FiberCpp.

Type | Parameters (in order) | Equation |
---|---|---|

constant | a | \(rate = a\) |

force_dependent | a, b | \(rate = a + ( b * force\ at\ node)\) |

poly | a, b, c | \(rate = a + ( b . x^c)\) |

gaussian | a, b | \(rate = a . e^{-\frac{b.k_{cb}.x^2}{2.k_B.T}}\) |

b is optional, and set to 1 if not provided | ||

gaussian_hsl | a, b | same as `gaussian` except that the rate increases with half-sarcomere length due to the filaments being pushed closer together |

gaussian_pc | a, b | \(rate = a . e^{-\frac{\alpha x^2}{2 . k_B . T}}\) |

b is optional. If it is provided, \(\alpha\) = b. If not, \(\alpha\) = stiffness of MyBP-C | ||

exp_wall | a, b, c, d | \(rate = a .e^{-\frac{k_{cb}.(x + x_{ps}).b}{k_B . T}} + \frac{max \ rate}{(1 + e^{-d . (x-c)})}\) |

This produces a rate that increases exponentially as the link is pulled in the direction of shortening, but increases very rapidly if the head is stretch beyond d |