|
1 | | -""" |
| 1 | +""" |
2 | 2 | Simulation parameters and the Rouse model |
3 | 3 | ----------------------------------------- |
4 | 4 |
|
|
9 | 9 | to fit experimental data on chromatin dynamics, it provides some intuition for how |
10 | 10 | to guess polychrom parameters from first principles. |
11 | 11 |
|
12 | | -For example, the mass of a particle is automatically set to 100 amu and |
| 12 | +For example, the mass of a particle is automatically set to 100 amu and |
13 | 13 | the collision rate is set depending on the integrator. For Brownian integrators, |
14 | 14 | setting the collision rate to 2.0 works well, whereas for Langevin integrators, |
15 | 15 | it is best to set the collision rate to 0.001-0.01. For loop extrusion simulations, |
16 | 16 | it is typically set to 0.1. These values have been determined empirically by group |
17 | 17 | members. For Brownian dynamics, for example, using a smaller collision rate leads |
18 | | -to integration failures. By default the temperature is set to 300K. |
| 18 | +to integration failures. By default the temperature is set to 300K. |
19 | 19 |
|
20 | 20 | In any case, the monomer diffusion coefficient naturally follows as |
21 | 21 | :math:`D=k_B T / m \zeta`, where :math:`\zeta` is the collision rate. So once the |
22 | 22 | mass and collision rate are set, there is no control over the choice of D unless |
23 | 23 | you use a custom Brownian integrator (see integrators module) that directly takes |
24 | | -in D as a parameter. However, even then, the units of D are in terms of |
| 24 | +in D as a parameter. However, even then, the units of D are in terms of |
25 | 25 | :math:`k_B T / m \zeta`. |
26 | 26 |
|
27 | 27 | The other arbitrary parameters are the monomer radius, set to sim.conlen = 1 nm |
|
31 | 31 | :math:`k = 2k_B T / x^2`. For a Rouse chain, :math:`k = 3 k_B T / y^2`, where |
32 | 32 | :math:`y` is the standard deviation of the bond extension. The Rouse model of DNA |
33 | 33 | is secretely a wormlike chain at shorter length scales; thus, :math:`y` should |
34 | | -be set to the end-to-end distance of the underlying WLC, which is defined as |
| 34 | +be set to the end-to-end distance of the underlying WLC, which is defined as |
35 | 35 | :math:`y = \sqrt{L_0 b}`, where :math:`L_0` is the length of DNA per monomer and |
36 | 36 | :math:`b` is the Kuhn length. These relations imply that the bondWiggleDistance |
37 | | -should be set to :math:`x = \sqrt{2L_0 b / 3}`. |
| 37 | +should be set to :math:`x = \sqrt{2L_0 b / 3}`. |
38 | 38 |
|
39 | 39 | Note that all length scales in |
40 | 40 | polychrom are in terms of sim.conlen = 1 nm. So :math:`L_0` and :math:`b` should |
41 | 41 | also be in nanometers. It is not obvious how to convert from nanometers of |
42 | 42 | chromatin to basepairs. One way of doing it is using the formula |
43 | 43 | n_basepairs = (n_nm / 0.34 nm/bp) * (1 + 146/<L>), where <L> is the average linker |
44 | | -length in the cell. For example, for human T cells, <L> = 50 bp; so b=40nm of |
| 44 | +length in the cell. For example, for human T cells, <L> = 50 bp; so b=40nm of |
45 | 45 | cumulative linker length would translate to 469 bp of chromatin, where we account |
46 | 46 | for the buried DNA in nucleosomes. We can also invert this relation to get |
47 | 47 | n_nm = n_basepairs/(1 + 146/<L>) * 0.34 nm/bp. So if we would like each monomer |
48 | 48 | to represent 2 kilobases, this would translate to 174 nm of cumulative linker length. |
49 | 49 | Using these values as an example, the resulting bondWiggleDistance would be |
50 | 50 | sqrt(2Lb/3) = 68 nm. We then divide by the size of a monomer to understand what the |
51 | 51 | bondWiggleDistance would be in terms of sim.conlen. So if we posit that the diameter |
52 | | -of a bead is equal to 34 nm, the bondWiggleDistance would be close to 2.0. This is |
53 | | -a much larger number than 0.1, which is what is used as default in polychrom! |
| 52 | +of a bead is equal to 34 nm, the bondWiggleDistance would be close to 2.0. This is |
| 53 | +a much larger number than 0.1, which is what is used as default in polychrom! |
54 | 54 |
|
55 | 55 | Generally, the more coarse-grained the simulation is, the more flexible the springs |
56 | 56 | should be and the larger the bondWiggleDistance should be, since there is more DNA |
|
61 | 61 |
|
62 | 62 | For a self avoiding polymer there are 2 main dimensionless numbers to keep in mind. |
63 | 63 | One is Ddt/b^2 and the other is a/b, where a is the radius of a monomer and b is the |
64 | | -Kuhn length. Recall that D and dt (timestep) are set arbitrarily based on |
65 | | -computational convenience, and a is set to 1 nm by default. |
| 64 | +Kuhn length. Recall that D and dt (timestep) are set arbitrarily based on |
| 65 | +computational convenience, and a is set to 1 nm by default. |
66 | 66 | Thus, even if length scales and time scales can be |
67 | 67 | rescaled at the end of the simulation to match experimental data, these ratios should |
68 | 68 | be decided on beforehand and preserved. Most people set the rest length of the spring |
69 | | -to be the diameter of the monomer = 1 nm. |
| 69 | +to be the diameter of the monomer = 1 nm. |
70 | 70 | """ |
71 | 71 |
|
72 | | - |
73 | 72 | import numpy as np |
74 | 73 | from simtk import unit |
75 | 74 |
|
|
0 commit comments