<liclass="fragment">unknown intermediate products for necessary defenses?</li>
<liclass="fragment">speculative diversity because they could be useful after genetic mutations?</li>
</ul></li>
</ul>
</section>
<sectionid="screening-hypothesis"class="level2">
<h2>Screening Hypothesis</h2>
<ul>
<liclass="fragment">First suggested by Jones & Firn (<ahref="https://doi.org/10.1098/rstb.1991.0077">1991</a>)</li>
<liclass="fragment">new (random) compounds are rarely biologically active</li>
<liclass="fragment">plants have a higher chance finding an active compound if they diversify</li>
<liclass="fragment">many (inactive) compounds are sustained for a while because they may be precursors to biologically active substances</li>
</ul>
<divclass="fragment">
<p>There are indications for and against this hypothesis by <ahref="https://nph.onlinelibrary.wiley.com/doi/full/10.1111/nph.12526#nph12526-bib-0093">various groups</a>.</p>
<p>If you wish to make apple pie from scratch, you must first create the universe<br/>
- Carl Sagan</p>
</blockquote>
</section>
<sectionclass="slide level1">
<sectionid="defining-chemistry"class="level2">
<h2>Defining Chemistry</h2>
<ul>
<liclass="fragment">First of all we define the chemistry of our environment, so we know all possible interactions and can manipulate them at will.</li>
<liclass="fragment">We differentiate between <strong><codeclass="sourceCode haskell"><spanclass="dt">Substrate</span></code></strong> and <strong><codeclass="sourceCode haskell"><spanclass="dt">Products</span></code></strong>:
<ul>
<liclass="fragment"><strong><codeclass="sourceCode haskell"><spanclass="dt">Substrate</span></code></strong> can just be used (i.e.real substrates if the whole metabolism should be simulated, <strong><codeclass="sourceCode haskell"><spanclass="dt">PPM</span></code></strong><sup>[1]</sup> in our simplified case)</li>
<liclass="fragment"><strong><codeclass="sourceCode haskell"><spanclass="dt">Products</span></code></strong> are nodes in our chemistry environment.</li>
<liclass="fragment">The Model used for evaluation just has one <codeclass="sourceCode haskell"><spanclass="dt">Substrate</span></code>:<br/>
<codeclass="sourceCode haskell"><spanclass="dt">PPM</span></code> with a fixed Amount to account for effects of sucking primary-metabolism-products out of the primary metabolic cycle</li>
<liclass="fragment">This is used to simulate i.e.worse growth, fertility and other things affecting the fitness of a plant.</li>
<liclass="fragment">We are not using named Compounds, but restrict to generic <codeclass="sourceCode haskell"><spanclass="dt">Compound</span><spanclass="dv">1</span></code>, <codeclass="sourceCode haskell"><spanclass="dt">Compound</span><spanclass="dv">2</span></code> …</li>
<liclass="fragment">Not done, but worth exploring:
<ul>
<liclass="fragment">Take a “real-world” snapshot of Nutrients and Compounds and recreate them</li>
<liclass="fragment">See if the simulation follows the real world</li>
</ul></li>
</ul>
</section>
<sectionid="defining-a-metabolism"class="level2">
<h2>Defining a Metabolism</h2>
<ul>
<liclass="fragment">We define <strong><codeclass="sourceCode haskell"><spanclass="dt">Enzyme</span></code>s</strong> as
<ul>
<liclass="fragment">having a recipe for a chemical reaction</li>
<liclass="fragment">are reversible</li>
<liclass="fragment">may have dependencies on catalysts to be present</li>
<liclass="fragment">may have higher dominance over other enzymes with the same reaction</li>
</ul></li>
<liclass="fragment">Input can be <codeclass="sourceCode haskell"><spanclass="dt">Substrate</span></code> and/or <codeclass="sourceCode haskell"><spanclass="dt">Products</span></code></li>
<liclass="fragment">Outputs can only be <codeclass="sourceCode haskell"><spanclass="dt">Products</span></code></li>
<liclass="fragment"><codeclass="sourceCode haskell"><spanclass="dt">Enzyme</span></code>s all
<ul>
<liclass="fragment">only map <codeclass="sourceCode haskell"><spanclass="dv">1</span></code> input to <codeclass="sourceCode haskell"><spanclass="dv">1</span></code> Output with a production rate of <codeclass="sourceCode haskell"><spanclass="dv">1</span></code> per <codeclass="sourceCode haskell"><spanclass="dt">Enzyme</span></code><br/>
<liclass="fragment">Every “subtree” from the marked <codeclass="sourceCode haskell"><spanclass="dt">PPM</span></code> is treated as a separate species (fungi, animals, …)<br/>
<liclass="fragment">a <strong><codeclass="sourceCode haskell"><spanclass="dt">Genome</span></code></strong>, a simple list of genes
<ul>
<liclass="fragment">Triple of <codeclass="sourceCode haskell">(<spanclass="dt">Enzyme</span>, <spanclass="dt">Quantity</span>, <spanclass="dt">Activation</span>)</code></li>
<liclass="fragment">without order or locality (i.e.interference of neighboring genes)</li>
<liclass="fragment"><codeclass="sourceCode haskell"><spanclass="dt">Quantity</span></code> is just an optimization (=Int) to group identical <codeclass="sourceCode haskell"><spanclass="dt">Activation</span></code>s</li>
<liclass="fragment"><codeclass="sourceCode haskell"><spanclass="dt">Activation</span></code> is a float <spanclass="math inline">\(\in [0..1]\)</span> to regulate the activity of the <codeclass="sourceCode haskell"><spanclass="dt">Enzyme</span></code> genetically</li>
</ul></li>
<liclass="fragment">an <codeclass="sourceCode haskell">absorbNutrients</code>-Function to simulate various effects when absorbing nutrients out of the environment, depending on the environment (i.e. <em>can</em> use informations about chemistry, predators, etc.)
<ul>
<liclass="fragment">Not used in our simulation, as we only have <codeclass="sourceCode haskell"><spanclass="dt">PPM</span></code> as “nutrient” and we take everything given to us.</li>
<p>Creation of compounds from the given resources is an iterative process:</p>
<ul>
<liclass="fragment">First of all we create a conversion Matrix <spanclass="math inline">\(\Delta_c\)</span> with corresponding startvector <spanclass="math inline">\(s_0\)</span>.</li>
<liclass="fragment"><p>We now iterate <spanclass="math inline">\(s_i = (\mathbb{1} + \Delta_c) \cdot s_{i-1}\)</span> for a fixed number of times (currently: <spanclass="math inline">\(100\)</span>) to simulate the metabolism<sup>[2]</sup>.</p>
<divclass="footer">
<p><sup>[2]</sup>: Thats a ‘lie’, we calculate <spanclass="math inline">\((\mathbb{1} + \Delta_c)^{100}\)</span> efficiently via <code>lapack</code>-internals</p>
</div></li>
<liclass="fragment">Entries in the matrix come from the <codeclass="sourceCode haskell"><spanclass="dt">Genome</span></code>: an <codeclass="sourceCode haskell"><spanclass="dt">Enzyme</span></code> which converts <spanclass="math inline">\(i\)</span> to <spanclass="math inline">\(j\)</span> with quantity <spanclass="math inline">\(q\)</span> and activity <spanclass="math inline">\(a\)</span> yield <spanclass="math display">\[\begin{eqnarray*}
\Delta_c[i,j] &\mathrel{+}=& q\cdot a,\\
\Delta_c[j,i] &\mathrel{+}=& q\cdot a, \\
\Delta_c[i,i] &\mathrel{-}=& q\cdot a, \\
\Delta_c[j,j] &\mathrel{-}=& q\cdot a
\end{eqnarray*}.\]</span>
<ul>
<liclass="fragment">This makes the Enzyme-reaction invertible as both ways get treated equally.</li>
</ul></li>
</ul>
</section>
<sectionid="metabolism-example"class="level2">
<h2>Metabolism-example</h2>
<ul>
<liclass="fragment"><p>Given a simple Metabolism with <spanclass="math inline">\(1\)</span> nutrient (first row/column) and <spanclass="math inline">\(2\)</span> Enzymes in sequence, we have given <spanclass="math inline">\(\Delta_c\)</span> wtih corresponding startvector <spanclass="math inline">\(s_0\)</span>: <spanclass="math display">\[\Delta_c = 0.01 \cdot \begin{pmatrix}
-1 & 1 & 0 \\
1 & -2 & 1 \\
0 & 1 & -1 \\
\end{pmatrix}, s_0 = \begin{pmatrix}\text{PPM:} & 3 \\ \text{Compound1:} & 0 \\ \text{Compound2:} & 0\end{pmatrix}.\]</span></p></li>
<liclass="fragment"><p>In the simulation this yields us <spanclass="math display">\[s_{100} \approx \begin{pmatrix}\text{PPM:} & 1 \\ \text{Compound1:} & 1 \\ \text{Compound2:} & 1\end{pmatrix},\]</span> which is the expected outcome for an equilibrium.</p></li>
<liclass="fragment">All Enzymes are there from the beginning</li>
<liclass="fragment">All Enzyme-reactions are reversible without loss</li>
<liclass="fragment">static conversion-matrix for fast calculations (unsuited, if i.e.enzymes depend on catalysts)</li>
<liclass="fragment">One genetic enzyme corresponds to (infinitely) many real (proportional weaker) enzymes in the plant, which get controlled via the “activation” parameter</li>
<liclass="fragment">We handle fitness as <spanclass="math inline">\(\text{survival-probability} \in [0..1]\)</span> and model each detrimental effect as probability which get multiplied together.</li>
<liclass="fragment">To calculate the fitness of an individual we take three distinct effects into consideration:
<liclass="fragment">limits the amount of dormant enzymes</li>
</ul></li>
<liclass="fragment">Cost of active enzymes
<ul>
<liclass="fragment">Cost of using up nutrients <spanclass="math display">\[F_e := \text{active_cost_factor} \cdot \frac{\text{Nutrients used}}{\text{Nutrients available}}\]</span></li>
</ul></li>
<liclass="fragment">Deterrence of attackers <spanclass="math inline">\(F_d\)</span> (next slide)</li>
<liclass="fragment">Predators are modeled after <ahref="http://doi.org/10.1098/rspb.2007.0456">Svennungsen et al. (2007)</a></li>
<liclass="fragment">Each predator has an expected number of attacks <spanclass="math inline">\(P_a\)</span>, that are poisson-distributed with impact <spanclass="math inline">\(P_i\)</span>.</li>
<liclass="fragment">Plants can defend themselves via
<ul>
<liclass="fragment">toxins that the predator is affected by with impact-probability <spanclass="math inline">\(D_t(P_i)\)</span></li>
<liclass="fragment">herd-immunity via effects like automimicry: <spanclass="math inline">\(D_{pop} = \mathbb{E}[D_t(P_i)]\)</span></li>
</ul></li>
<liclass="fragment"><p>All this yields the formula:</p>
<liclass="fragment">We hold the population-size fixed at <spanclass="math inline">\(100\)</span></li>
<liclass="fragment">Each plant has a reproduction-probability of <spanclass="math display">\[p(\textrm{reproduction}) = \frac{\textrm{plant-fitness}}{\textrm{total fitness in population}}\]</span> yielding a fitness-weighted distribution from that <spanclass="math inline">\(100\)</span> new offspring are drawn</li>
<liclass="fragment"><p>in inheritance each gene of the parent goes through different steps (with given default-values)<sup>[3]</sup></p>
<divclass="footer">
<p><sup>[3]</sup>: in case of quantity <spanclass="math inline">\(q > 1\)</span> the process is repeated <spanclass="math inline">\(q\)</span> times independently.</p>
<liclass="fragment"><strong>mutation</strong>: with <spanclass="math inline">\(p_{mut} = 0.01\)</span> another random enzyme is produced, but activation kept</li>
<liclass="fragment"><strong>duplication</strong>: with <spanclass="math inline">\(p_{dup} = 0.05\)</span> the gene gets duplicated (quantity <spanclass="math inline">\(+1\)</span>)</li>
<liclass="fragment"><strong>deletion</strong>: with <spanclass="math inline">\(p_{del} = p_{dup}\)</span> the gene get deleted (or quantity <spanclass="math inline">\(-1\)</span>)</li>
<liclass="fragment"><strong>addition</strong>: with <spanclass="math inline">\(p_{add} = 0.005\)</span> an additional gene producing a random enzyme with activation <spanclass="math inline">\(0.5\)</span> gets added as mutation from genes we do not track (i.e.primary cycle)</li>
<liclass="fragment"><strong>activation-noise</strong>: activation is changed by <spanclass="math inline">\(c_{noise} = \pm 0.01\)</span> drawn from a uniform distribution, clamped to <spanclass="math inline">\([0..1]\)</span></li>
<liclass="fragment">Overall question: What parameters are necessary for chemodiversity?
<ul>
<liclass="fragment">How can we see chemodiversity?</li>
<liclass="fragment">We define an Enzyme <spanclass="math inline">\(E\)</span> as divers, if the average of this Enzyme in the population stays below <spanclass="math inline">\(0.5\)</span>, so <spanclass="math inline">\(E_i \in E_{div} \text{iff.} \mathbb{E}[E_i] < 0.5\)</span></li>
<liclass="fragment">We can then count the number of diverse Enzymes per plant <spanclass="math inline">\(E_{d,p_i} = |\left\lbrace E_i | E_i \in E_{div}, E_{i,p_i} > 0.5, \right\rbrace|\)</span></li>
</ul></li>
<liclass="fragment">To get an insight into how this behaves we observe several other parameters every generation:
<liclass="fragment">Number of different compounds created</li>
<liclass="fragment">Amount of compounds created</li>
<liclass="fragment">Number of Plants theoretically resistant to predator <spanclass="math inline">\(i\)</span> (i.e. <strong>can</strong> produce a toxin to defend themselves, albeit not to <spanclass="math inline">\(100\%\)</span>.</li>
</ul></li>
</ul>
</section>
<sectionid="simulations-cont."class="level2">
<h2>Simulations (cont.)</h2>
<ul>
<liclass="fragment">General setup of the simulation:
<ul>
<liclass="fragment">All using the example-environment shown before
<liclass="fragment"><spanclass="math inline">\(27\)</span> different compounds, <spanclass="math inline">\(1\)</span> Nutrient (simulating the primary metabolism)</li>
<liclass="fragment"><spanclass="math inline">\(7\)</span> of <spanclass="math inline">\(27\)</span> compounds are toxic</li>
<liclass="fragment">at least <spanclass="math inline">\(3\)</span> compounds are needed for total immunity</li>
<liclass="fragment"><spanclass="math inline">\(4\)</span> predators set to <codeclass="sourceCode haskell"><spanclass="dt">AlwaysAttack</span></code></li>
<liclass="fragment">varying <spanclass="math inline">\(\text{static_enzyme_cost}\)</span> from <spanclass="math inline">\(0.0\)</span> to <spanclass="math inline">\(0.20\)</span> in steps of <spanclass="math inline">\(0.02\)</span>
<ul>
<liclass="fragment">effectively limits the amount of maximal enzymes to <spanclass="math inline">\(\frac{1}{\text{static_enzyme_cost}}\)</span></li>
</ul></li>
<liclass="fragment">varying <spanclass="math inline">\(\text{nutrient_impact}\)</span> from <spanclass="math inline">\(0.0\)</span> to <spanclass="math inline">\(1.0\)</span> in steps of <spanclass="math inline">\(0.1\)</span>
<ul>
<liclass="fragment">makes toxins less/more costly to produce</li>