started vortrag & deps, added results of simulation
This commit is contained in:
16
vortrag/Makefile
Normal file
16
vortrag/Makefile
Normal file
@ -0,0 +1,16 @@
|
||||
.PHONY: pdf
|
||||
|
||||
INPUT = vortrag.md
|
||||
|
||||
all: slides
|
||||
|
||||
slides: $(INPUT)
|
||||
pandoc -f markdown+smart+emoji -t revealjs \
|
||||
--template ./template.html \
|
||||
--incremental \
|
||||
--indented-code-classes=haskell \
|
||||
--section-divs \
|
||||
-o chemodiversity.html $(INPUT)
|
||||
|
||||
serve: chemodiversity.html
|
||||
python3 -m http.server 8080
|
1
vortrag/MathJax
Symbolic link
1
vortrag/MathJax
Symbolic link
@ -0,0 +1 @@
|
||||
../MathJax/
|
413
vortrag/chemodiversity.html
Normal file
413
vortrag/chemodiversity.html
Normal file
@ -0,0 +1,413 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
|
||||
<title>
|
||||
Chemodiversity: A short overview of this project
|
||||
</title>
|
||||
|
||||
<link rel="stylesheet" href="/reveal.js/css/reveal.css">
|
||||
|
||||
|
||||
<!-- My solarized Theme (derived from reveal's solarized.css) -->
|
||||
<link rel="stylesheet" href="/css/solarized_plus.css">
|
||||
|
||||
|
||||
|
||||
<!-- Printing and PDF exports -->
|
||||
<script>
|
||||
var link = document.createElement( 'link' );
|
||||
link.rel = 'stylesheet';
|
||||
link.type = 'text/css';
|
||||
link.href = window.location.search.match( /print-pdf/gi ) ? '/reveal.js/css/print/pdf.css' : '/reveal.js/css/print/paper.css';
|
||||
document.getElementsByTagName( 'head' )[0].appendChild( link );
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<!-- MathJax config -->
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
TeX: {
|
||||
Macros: {
|
||||
R: "{\\mathrm{{I}\\kern-.15em{R}}}",
|
||||
laplace: "{\\Delta}",
|
||||
grad: "{\\nabla}",
|
||||
T: "^{\\mathsf{T}}",
|
||||
abs: ['\\left\\lvert #1 \\right\\rvert', 1],
|
||||
norm: ['\\left\\Vert #1 \\right\\Vert', 1],
|
||||
iprod: ['\\left\\langle #1 \\right\\rangle', 1],
|
||||
vec: ['\\mathbf{#1}', 1],
|
||||
mat: ['\\mathbf{#1}', 1],
|
||||
set: ['\\mathcal{#1}', 1],
|
||||
func: ['\\mathrm{#1}', 1],
|
||||
trans: ['{#1}\\mkern-1mu^{\\mathsf{T}}', 1],
|
||||
matrix: ['\\begin{bmatrix} #1 \\end{bmatrix}', 1],
|
||||
vector: ['\\begin{pmatrix} #1 \\end{pmatrix}', 1],
|
||||
of: ['\\mkern{-2mu}\\left( #1 \\right\)', 1]
|
||||
}
|
||||
},
|
||||
"HTML-CSS": {
|
||||
styles: {
|
||||
".reveal section .MathJax_Display": { margin: "0.5em 0em" }
|
||||
},
|
||||
scale: 95
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
<!-- here come the slides -->
|
||||
<div class="reveal">
|
||||
<div class="slides">
|
||||
|
||||
|
||||
<!-- Title slide -->
|
||||
<section class="white-on-blue">
|
||||
<div class="title"> Chemodiversity </div>
|
||||
<div class="subtitle"> A short overview of this project </div>
|
||||
<div class="author"> Stefan Dresselhaus </div>
|
||||
<div class="affiliation"> Theoretic Biology Group<br> Bielefeld University </div>
|
||||
</section>
|
||||
|
||||
|
||||
<!-- Table of Contents -->
|
||||
|
||||
|
||||
<!-- all the slides from markdown document: DO NOT INDENT THE body LINE!!! -->
|
||||
<section class="slide level1">
|
||||
|
||||
<section id="what-is-chemodiversity" class="level2">
|
||||
<h2>What is chemodiversity?</h2>
|
||||
<ul>
|
||||
<li class="fragment">It was observed, that many plants seem to produce many compounds with no obvious purpose</li>
|
||||
<li class="fragment">Using resources to produce such compounds (instead of i.e. growing) should yield a fitness-disadvantage</li>
|
||||
<li class="fragment">one expects evolution to eliminate such behavior</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="question-why-is-this-behavior-observed" class="level2">
|
||||
<h2>Question: Why is this behavior observed?</h2>
|
||||
<ul>
|
||||
<li class="fragment">Are these compounds necessary for some unresearched reason?
|
||||
<ul>
|
||||
<li class="fragment">unknown environmental effects?</li>
|
||||
<li class="fragment">unknown intermediate products for necessary defenses?</li>
|
||||
<li class="fragment">speculative diversity because they could be useful after genetic mutations?</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="screening-hypothesis" class="level2">
|
||||
<h2>Screening Hypothesis</h2>
|
||||
<ul>
|
||||
<li class="fragment">First suggested by Jones & Firn (<a href="https://doi.org/10.1098/rstb.1991.0077">1991</a>)</li>
|
||||
<li class="fragment">new (random) compounds are rarely biologically active</li>
|
||||
<li class="fragment">plants have a higher chance finding an active compound if they diversify</li>
|
||||
<li class="fragment">many (inactive) compounds are sustained for a while because they may be precursors to biologically active substances</li>
|
||||
</ul>
|
||||
<div class="fragment">
|
||||
<p>There are indications for and against this hypothesis by <a href="https://nph.onlinelibrary.wiley.com/doi/full/10.1111/nph.12526#nph12526-bib-0093">various groups</a>.</p>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section id="setting-up-a-simulation" class="slide level1">
|
||||
<h1>Setting up a simulation</h1>
|
||||
<blockquote>
|
||||
<p>If you wish to make apple pie from scratch, you must first create the universe<br />
|
||||
- Carl Sagan</p>
|
||||
</blockquote>
|
||||
</section>
|
||||
<section class="slide level1">
|
||||
|
||||
<section id="defining-chemistry" class="level2">
|
||||
<h2>Defining Chemistry</h2>
|
||||
<ul>
|
||||
<li class="fragment">First of all we define the chemistry of our environment, so we know all possible interactions and can manipulate them at will.</li>
|
||||
<li class="fragment">We differentiate between <strong><code class="sourceCode haskell"><span class="dt">Substrate</span></code></strong> and <strong><code class="sourceCode haskell"><span class="dt">Products</span></code></strong>:
|
||||
<ul>
|
||||
<li class="fragment"><strong><code class="sourceCode haskell"><span class="dt">Substrate</span></code></strong> can just be used (i.e. real substrates if the whole metabolism should be simulated, <strong><code class="sourceCode haskell"><span class="dt">PPM</span></code></strong><sup>[1]</sup> in our simplified case)</li>
|
||||
<li class="fragment"><strong><code class="sourceCode haskell"><span class="dt">Products</span></code></strong> are nodes in our chemistry environment.</li>
|
||||
</ul></li>
|
||||
<li class="fragment"><p>In Code:</p>
|
||||
<pre class="sourceCode haskell" id="cb1"><code class="sourceCode haskell"><div class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">data</span> <span class="dt">Compound</span> <span class="fu">=</span> <span class="dt">Substrate</span> <span class="dt">Nutrient</span></div>
|
||||
<div class="sourceLine" id="cb1-2" data-line-number="2"> <span class="fu">|</span> <span class="dt">Produced</span> <span class="dt">Component</span></div>
|
||||
<div class="sourceLine" id="cb1-3" data-line-number="3"> <span class="fu">|</span> <span class="dt">GenericCompound</span> <span class="dt">Int</span></div></code></pre>
|
||||
<div class="footer">
|
||||
<p><sup>[1]</sup>: plants primary metabolism</p>
|
||||
</div></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="usage-in-the-current-model" class="level2">
|
||||
<h2>Usage in the current Model</h2>
|
||||
<ul>
|
||||
<li class="fragment">The Model used for evaluation just has one <code class="sourceCode haskell"><span class="dt">Substrate</span></code>:<br />
|
||||
<code class="sourceCode haskell"><span class="dt">PPM</span></code> with a fixed Amount to account for effects of sucking primary-metabolism-products out of the primary metabolic cycle</li>
|
||||
<li class="fragment">This is used to simulate i.e. worse growth, fertility and other things affecting the fitness of a plant.</li>
|
||||
<li class="fragment">We are not using named Compounds, but restrict to generic <code class="sourceCode haskell"><span class="dt">Compound</span> <span class="dv">1</span></code>, <code class="sourceCode haskell"><span class="dt">Compound</span> <span class="dv">2</span></code> …</li>
|
||||
<li class="fragment">Not done, but worth exploring:
|
||||
<ul>
|
||||
<li class="fragment">Take a “real-world” snapshot of Nutrients and Compounds and recreate them</li>
|
||||
<li class="fragment">See if the simulation follows the real world</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="defining-a-metabolism" class="level2">
|
||||
<h2>Defining a Metabolism</h2>
|
||||
<ul>
|
||||
<li class="fragment">We define <strong><code class="sourceCode haskell"><span class="dt">Enzyme</span></code>s</strong> as
|
||||
<ul>
|
||||
<li class="fragment">having a recipe for a chemical reaction</li>
|
||||
<li class="fragment">are reversible</li>
|
||||
<li class="fragment">may have dependencies on catalysts to be present</li>
|
||||
<li class="fragment">may have higher dominance over other enzymes with the same reaction</li>
|
||||
</ul></li>
|
||||
<li class="fragment">Input can be <code class="sourceCode haskell"><span class="dt">Substrate</span></code> and/or <code class="sourceCode haskell"><span class="dt">Products</span></code></li>
|
||||
<li class="fragment">Outputs can only be <code class="sourceCode haskell"><span class="dt">Products</span></code></li>
|
||||
<li class="fragment"><span class="math inline">⇒</span> This makes them to Edges in a graph combining the chemical compounds</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="usage-in-the-current-model-1" class="level2">
|
||||
<h2>Usage in the current Model</h2>
|
||||
<ul>
|
||||
<li class="fragment"><code class="sourceCode haskell"><span class="dt">Enzyme</span></code>s all
|
||||
<ul>
|
||||
<li class="fragment">only map <code class="sourceCode haskell"><span class="dv">1</span></code> input to <code class="sourceCode haskell"><span class="dv">1</span></code> Output with a production rate of <code class="sourceCode haskell"><span class="dv">1</span></code> per <code class="sourceCode haskell"><span class="dt">Enzyme</span></code><br />
|
||||
(i.e. <code class="sourceCode haskell"><span class="fu">-</span><span class="dv">1</span> <span class="dt">Compound</span> <span class="dv">2</span> <span class="ot">-></span> <span class="fu">+</span><span class="dv">1</span> <span class="dt">Compound</span> <span class="dv">5</span></code>)</li>
|
||||
<li class="fragment">are equally dominant</li>
|
||||
<li class="fragment">need no catalysts</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="defining-predators" class="level2">
|
||||
<h2>Defining Predators</h2>
|
||||
<ul>
|
||||
<li class="fragment"><strong><code class="sourceCode haskell"><span class="dt">Predator</span></code>s</strong> consist of
|
||||
<ul>
|
||||
<li class="fragment">a list of <code class="sourceCode haskell"><span class="dt">Compound</span></code>s that can kill them</li>
|
||||
<li class="fragment">a fitness impact (<span class="math inline">[0..1]</span>) as the probability of killing the plant</li>
|
||||
<li class="fragment">an expected number of attacks per generation</li>
|
||||
<li class="fragment">a probability (<span class="math inline">[0..1]</span>) of appearing in a single generation</li>
|
||||
</ul></li>
|
||||
<li class="fragment"><code class="sourceCode haskell"><span class="dt">Predator</span></code> need not necessary be biologically motivated
|
||||
<ul>
|
||||
<li class="fragment">i.e. rare, nearly devastating attacks (floods, droughts, …) with realistic probabilities</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="example-environment" class="level2">
|
||||
<h2>Example Environment</h2>
|
||||
<div class="columns">
|
||||
<div class="column" style="width:37%;">
|
||||
<ul>
|
||||
<li class="fragment">The complete environment now consists of
|
||||
<ul>
|
||||
<li class="fragment"><code class="sourceCode haskell"><span class="dt">Compound</span></code>s:<br />
|
||||
<img data-src="img/compound_example.png" style="vertical-align:middle" /></li>
|
||||
<li class="fragment"><code class="sourceCode haskell"><span class="dt">Enzyme</span></code>s:<br />
|
||||
<img data-src="img/enzyme_example.png" style="vertical-align:middle" /></li>
|
||||
<li class="fragment"><code class="sourceCode haskell"><span class="dt">Predator</span></code>s:<br />
|
||||
<img data-src="img/predator_example.png" style="vertical-align:middle" /></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div><div class="column fragment" style="width:63%;">
|
||||
<figure>
|
||||
<img data-src="img/environment.tree.png" alt="Our default test-environment" style="width:75.0%" /><figcaption>Our default test-environment</figcaption>
|
||||
</figure>
|
||||
<p>Additional rules:</p>
|
||||
<ul>
|
||||
<li class="fragment">Every “subtree” from the marked <code class="sourceCode haskell"><span class="dt">PPM</span></code> is treated as a separate species (fungi, animals, …)<br />
|
||||
<span class="math inline">⇒</span> Every predator can only be affected by toxins in the same part of the tree</li>
|
||||
<li class="fragment">Trees can be automatically generated in a decent manner to search for environmens where specific effects may arise</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<aside class="notes">
|
||||
<p>CTRL+Click for zoom!</p>
|
||||
<ul>
|
||||
<li>All starts at PPM (Plant Primary Metabolism)</li>
|
||||
<li>Red = Toxic</li>
|
||||
<li>Blue = Predators</li>
|
||||
</ul>
|
||||
</aside>
|
||||
</section>
|
||||
</section>
|
||||
<section class="slide level1">
|
||||
|
||||
<section id="plants" class="level2">
|
||||
<h2>Plants</h2>
|
||||
<p>A plant consists of …</p>
|
||||
</section>
|
||||
<section id="metabolism-simulation" class="level2">
|
||||
<h2>Metabolism simulation</h2>
|
||||
<p>Compounds are created foo..</p>
|
||||
</section>
|
||||
<section id="fitness" class="level2">
|
||||
<h2>Fitness</h2>
|
||||
<ul>
|
||||
<li class="fragment">Static costs of enzymes</li>
|
||||
<li class="fragment">Cost of active enzymes</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="attacker" class="level2">
|
||||
<h2>Attacker</h2>
|
||||
<ul>
|
||||
<li class="fragment">Rate of attack ~> Paper, Formulas</li>
|
||||
<li class="fragment">Defenses
|
||||
<ul>
|
||||
<li class="fragment">single plant</li>
|
||||
<li class="fragment">automimicry</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</section>
|
||||
<section id="haploid-mating" class="level2">
|
||||
<h2>Haploid mating</h2>
|
||||
<ul>
|
||||
<li class="fragment">fixed population-size (100)</li>
|
||||
<li class="fragment"><span class="math inline">$p(\textrm{reproduction}) = \frac{\textrm{plant-fitness}}{\textrm{total fitness in population}}$</span></li>
|
||||
<li class="fragment">Gene
|
||||
<ul>
|
||||
<li class="fragment">mutation</li>
|
||||
<li class="fragment">duplication</li>
|
||||
<li class="fragment">deletion</li>
|
||||
<li class="fragment">addition</li>
|
||||
<li class="fragment">activation-noise</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
<section class="slide level1">
|
||||
|
||||
<section id="simulations" class="level2">
|
||||
<h2>Simulations</h2>
|
||||
<p>Parameters tested</p>
|
||||
<ul>
|
||||
<li class="fragment">x</li>
|
||||
<li class="fragment">y</li>
|
||||
<li class="fragment">z</li>
|
||||
</ul>
|
||||
</section>
|
||||
</section>
|
||||
<section id="results" class="slide level1">
|
||||
<h1>Results</h1>
|
||||
<blockquote>
|
||||
<p>It doesn’t matter how beautiful your theory is, it doesn’t matter how smart you are. If it doesn’t agree with experiment, it’s wrong.<br />
|
||||
- Richard P. Feynman</p>
|
||||
</blockquote>
|
||||
</section>
|
||||
<section class="slide level1">
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="/reveal.js/lib/js/head.min.js"></script>
|
||||
<script src="/reveal.js/js/reveal.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
// More info https://github.com/hakimel/reveal.js#configuration
|
||||
Reveal.initialize({
|
||||
|
||||
|
||||
// reveal settings
|
||||
controls: false,
|
||||
progress: false,
|
||||
slideNumber: true,
|
||||
history: true,
|
||||
center: false,
|
||||
transition: 'none',
|
||||
viewDistance: 2, // otherwise videos start early
|
||||
width: 1280,
|
||||
height: 1024,
|
||||
minScale: 0.2,
|
||||
maxScale: 5, // if this threshold is reached, the chalkboard drawing will be wrongly positioned. hence large threshold!
|
||||
pdfMaxPagesPerSlide: 1, // slides are cropped on one page for PDF export
|
||||
|
||||
|
||||
// use local mathjax installation
|
||||
math: { mathjax: '/MathJax/MathJax.js', config: 'TeX-AMS_HTML-full' },
|
||||
|
||||
|
||||
|
||||
// setup reveal-menu
|
||||
menu: {
|
||||
side: 'right',
|
||||
numbers: false,
|
||||
titleSelector: 'h1, h2',
|
||||
hideMissingTitles: false,
|
||||
markers: false,
|
||||
custom: false,
|
||||
themes: false,
|
||||
transitions: false,
|
||||
openButton: false,
|
||||
openSlideNumber: true,
|
||||
keyboard: true
|
||||
},
|
||||
|
||||
|
||||
// setup charts
|
||||
chart: {
|
||||
defaults: {
|
||||
global: {
|
||||
"defaultFontFamily": "Lato",
|
||||
"defaultFontColor": "black",
|
||||
"defaultFontSize": 20,
|
||||
title: {
|
||||
"fontFamily": "Lato",
|
||||
"fontSize": 30,
|
||||
},
|
||||
legend: {
|
||||
"position": "bottom"
|
||||
}
|
||||
},
|
||||
},
|
||||
line: {
|
||||
backgroundColor: [ "rgba(42,157,223,.1)", "rgba(245,159,0,.1)", "rgba(182,200,40,.1)" ],
|
||||
borderColor: [ "rgba(42,157,223,1)", "rgba(245,159,0,1)", "rgba(182,200,40,1)" ],
|
||||
},
|
||||
bar: {
|
||||
backgroundColor: [ "rgba(42,157,223,.8)", "rgba(245,159,0,.8)", "rgba(182,200,40,.8)" ],
|
||||
borderColor: [ "rgba(42,157,223,1)", "rgba(245,159,0,1)", "rgba(182,200,40,1)" ]
|
||||
},
|
||||
pie: {
|
||||
backgroundColor: [ ["rgba(0,0,0,.8)" , "rgba(220,20,20,.8)", "rgba(20,220,20,.8)", "rgba(220,220,20,.8)", "rgba(20,20,220,.8)"] ]},
|
||||
radar: {
|
||||
borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ]
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// keyboard shortcuts
|
||||
keyboard: {
|
||||
40: function() { Reveal.next(); }, // up: next slide
|
||||
38: function() { Reveal.prev(); }, // down: prev slide
|
||||
},
|
||||
|
||||
|
||||
// load plugins
|
||||
dependencies: [
|
||||
{ src: '/reveal.js/plugin/math/math.js' },
|
||||
{ src: '/reveal.js/plugin/notes/notes.js', async: true },
|
||||
{ src: '/reveal.js-menu/menu.js' },
|
||||
{ src: '/reveal.js-plugins/chart/Chart.min.js' },
|
||||
{ src: '/reveal.js-plugins/chart/csv2chart.js' },
|
||||
{ src: '/js/zoom.js', async: true },
|
||||
]
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
650
vortrag/css/solarized_plus.css
Normal file
650
vortrag/css/solarized_plus.css
Normal file
@ -0,0 +1,650 @@
|
||||
/**
|
||||
* Solarized Light theme for reveal.js.
|
||||
* Author: Achim Staebler
|
||||
*/
|
||||
@import url(../reveal.js/lib/font/league-gothic/league-gothic.css);
|
||||
@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
|
||||
/**
|
||||
* Solarized colors by Ethan Schoonover
|
||||
*/
|
||||
html * {
|
||||
color-profile: sRGB;
|
||||
rendering-intent: auto; }
|
||||
|
||||
/*********************************************
|
||||
* GLOBAL STYLES
|
||||
*********************************************/
|
||||
body {
|
||||
background: #fdf6e3;
|
||||
background-color: #fdf6e3; }
|
||||
|
||||
.reveal {
|
||||
font-family: "Lato", sans-serif;
|
||||
font-size: 36px;
|
||||
font-weight: normal;
|
||||
color: #657b83; }
|
||||
|
||||
::selection {
|
||||
color: #fff;
|
||||
background: #d33682;
|
||||
text-shadow: none; }
|
||||
|
||||
::-moz-selection {
|
||||
color: #fff;
|
||||
background: #d33682;
|
||||
text-shadow: none; }
|
||||
|
||||
.reveal .slides > section,
|
||||
.reveal .slides > section > section {
|
||||
line-height: 1.3;
|
||||
font-weight: inherit; }
|
||||
|
||||
/*********************************************
|
||||
* HEADERS
|
||||
*********************************************/
|
||||
.reveal h1,
|
||||
.reveal h2,
|
||||
.reveal h3,
|
||||
.reveal h4,
|
||||
.reveal h5,
|
||||
.reveal h6 {
|
||||
margin: 0 0 20px 0;
|
||||
color: #586e75;
|
||||
font-family: "League Gothic", Impact, sans-serif;
|
||||
font-weight: normal;
|
||||
line-height: 1.2;
|
||||
letter-spacing: normal;
|
||||
text-transform: uppercase;
|
||||
text-shadow: none;
|
||||
word-wrap: break-word; }
|
||||
|
||||
.reveal h1 {
|
||||
font-size: 1.5em; }
|
||||
|
||||
.reveal h2 {
|
||||
font-size: 1.3em; }
|
||||
|
||||
.reveal h3 {
|
||||
font-size: 1.1em; }
|
||||
|
||||
.reveal h4 {
|
||||
font-size: 1em; }
|
||||
|
||||
.reveal h1 {
|
||||
text-shadow: none; }
|
||||
|
||||
/*********************************************
|
||||
* OTHER
|
||||
*********************************************/
|
||||
.reveal p {
|
||||
margin: 20px 0;
|
||||
line-height: 1.3; }
|
||||
|
||||
/* Ensure certain elements are never larger than the slide itself */
|
||||
.reveal img,
|
||||
.reveal video,
|
||||
.reveal iframe {
|
||||
max-width: 95%;
|
||||
max-height: 95%; }
|
||||
|
||||
.reveal strong,
|
||||
.reveal b {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal em {
|
||||
font-style: italic; }
|
||||
|
||||
.reveal ol,
|
||||
.reveal dl,
|
||||
.reveal ul {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
margin: 0 0 0 1em; }
|
||||
|
||||
.reveal ol {
|
||||
list-style-type: decimal; }
|
||||
|
||||
.reveal ul {
|
||||
list-style-type: disc; }
|
||||
|
||||
.reveal ul ul {
|
||||
list-style-type: square; }
|
||||
|
||||
.reveal ul ul ul {
|
||||
list-style-type: circle; }
|
||||
|
||||
.reveal ul ul,
|
||||
.reveal ul ol,
|
||||
.reveal ol ol,
|
||||
.reveal ol ul {
|
||||
display: block;
|
||||
margin-left: 40px; }
|
||||
|
||||
.reveal dt {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal dd {
|
||||
margin-left: 40px; }
|
||||
|
||||
.reveal blockquote {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 70%;
|
||||
margin: 20px auto;
|
||||
padding: 15px;
|
||||
font-style: italic;
|
||||
background: rgba(88, 110, 117, 0.1);
|
||||
box-shadow: inset 0px 0px 10px 2px rgba(0, 0, 0, 0.5); }
|
||||
|
||||
.reveal blockquote p:first-child,
|
||||
.reveal blockquote p:last-child {
|
||||
display: inline-block; }
|
||||
|
||||
.reveal q {
|
||||
font-style: italic; }
|
||||
|
||||
.reveal pre {
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 90%;
|
||||
margin: 20px auto;
|
||||
text-align: left;
|
||||
font-size: 0.55em;
|
||||
font-family: monospace;
|
||||
line-height: 1.2em;
|
||||
word-wrap: break-word;
|
||||
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
|
||||
|
||||
.reveal code {
|
||||
font-family: monospace;
|
||||
text-transform: none; }
|
||||
|
||||
.reveal pre code {
|
||||
display: block;
|
||||
padding: 5px;
|
||||
overflow: auto;
|
||||
max-height: 400px;
|
||||
word-wrap: normal; }
|
||||
|
||||
.reveal table {
|
||||
margin: auto;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0; }
|
||||
|
||||
.reveal table th {
|
||||
font-weight: bold; }
|
||||
|
||||
.reveal table th,
|
||||
.reveal table td {
|
||||
text-align: left;
|
||||
padding: 0.2em 0.5em 0.2em 0.5em;
|
||||
border-bottom: 1px solid; }
|
||||
|
||||
.reveal table th[align="center"],
|
||||
.reveal table td[align="center"] {
|
||||
text-align: center; }
|
||||
|
||||
.reveal table th[align="right"],
|
||||
.reveal table td[align="right"] {
|
||||
text-align: right; }
|
||||
|
||||
.reveal table tbody tr:last-child th,
|
||||
.reveal table tbody tr:last-child td {
|
||||
border-bottom: none; }
|
||||
|
||||
.reveal sup {
|
||||
vertical-align: super; }
|
||||
|
||||
.reveal sub {
|
||||
vertical-align: sub; }
|
||||
|
||||
.reveal small {
|
||||
display: inline-block;
|
||||
font-size: 0.6em;
|
||||
line-height: 1.2em;
|
||||
vertical-align: top; }
|
||||
|
||||
.reveal small * {
|
||||
vertical-align: top; }
|
||||
|
||||
/*********************************************
|
||||
* LINKS
|
||||
*********************************************/
|
||||
.reveal a {
|
||||
color: #586e75;
|
||||
text-decoration: none;
|
||||
-webkit-transition: color .15s ease;
|
||||
-moz-transition: color .15s ease;
|
||||
transition: color .15s ease; }
|
||||
|
||||
.reveal a:hover {
|
||||
color: #78b9e6;
|
||||
text-shadow: none;
|
||||
border: none; }
|
||||
|
||||
.reveal .roll span:after {
|
||||
color: #fff;
|
||||
background: #1a6091; }
|
||||
|
||||
/*********************************************
|
||||
* IMAGES
|
||||
*********************************************/
|
||||
.reveal section img {
|
||||
margin: 15px 0px;
|
||||
background: rgba(255, 255, 255, 0.12);
|
||||
border: 0px solid #657b83;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
|
||||
|
||||
.reveal section img.plain {
|
||||
border: 0;
|
||||
box-shadow: none; }
|
||||
|
||||
.reveal a img {
|
||||
-webkit-transition: all .15s linear;
|
||||
-moz-transition: all .15s linear;
|
||||
transition: all .15s linear; }
|
||||
|
||||
.reveal a:hover img {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-color: #586e75;
|
||||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); }
|
||||
|
||||
/*********************************************
|
||||
* NAVIGATION CONTROLS
|
||||
*********************************************/
|
||||
.reveal .controls {
|
||||
color: #586e75; }
|
||||
|
||||
/*********************************************
|
||||
* PROGRESS BAR
|
||||
*********************************************/
|
||||
.reveal .progress {
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
color: #586e75; }
|
||||
|
||||
.reveal .progress span {
|
||||
-webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
|
||||
-moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
|
||||
transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); }
|
||||
|
||||
/*********
|
||||
* Own additions
|
||||
*********/
|
||||
|
||||
.reveal sup, .reveal sub {
|
||||
font-size: 60%;
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
* ADD: TITLE SLIDE
|
||||
*********************************************/
|
||||
|
||||
.white-on-blue {
|
||||
color: #fdf6e3;
|
||||
background-color: #586e75;
|
||||
}
|
||||
|
||||
.reveal .title {
|
||||
margin: 30px 0 0 0;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
font-size: 1.5em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.reveal .subtitle {
|
||||
margin: 10px 0 0 0;
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
font-size: 1.3em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.reveal .author {
|
||||
margin: 50px 0 0 0;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-size: 1.0em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.reveal .affiliation {
|
||||
margin: 10px 0 30px 0;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-size: 1.0em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* ADD: SECTIONS
|
||||
*********************************************/
|
||||
|
||||
.reveal .section-title h1 {
|
||||
/* white on blue */
|
||||
color: #fdf6e3;
|
||||
background-color: #586e75;
|
||||
|
||||
/* large top margin -> vertical centering */
|
||||
margin: 100px auto;
|
||||
padding: 50px;
|
||||
|
||||
/* large bold font */
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* ADD: FRAGMENT ANIMATION
|
||||
*********************************************/
|
||||
|
||||
.fragment.current-visible.visible:not(.current-fragment) {
|
||||
display: none;
|
||||
height:0px;
|
||||
line-height: 0px;
|
||||
font-size: 0px;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* ADD: Quiz
|
||||
*********************************************/
|
||||
|
||||
.reveal .slides > section {
|
||||
counter-reset: wwm-counter;
|
||||
}
|
||||
|
||||
.reveal .answer {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 400px;
|
||||
text-align: left;
|
||||
margin: 20px;
|
||||
border: 3px solid #586e75;
|
||||
border-radius: 20px;
|
||||
padding: 20px;
|
||||
font-weight: normal;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.reveal .answer:before {
|
||||
content: counter(wwm-counter, upper-latin) ": ";
|
||||
counter-increment: wwm-counter;
|
||||
margin-right: 0.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.reveal .tooltip {
|
||||
visibility: hidden;
|
||||
max-width: 390px;
|
||||
top: 100%;
|
||||
background-color: grey;
|
||||
color: #fdf6e3;
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
border-radius: 6px;
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
font-size: 0.5em;
|
||||
}
|
||||
|
||||
.reveal .show-wrong {
|
||||
background-color: #ffaaaa;
|
||||
border: 3px solid red;
|
||||
}
|
||||
|
||||
.reveal .show-right {
|
||||
background-color: #aaffaa;
|
||||
border: 3px solid green;
|
||||
}
|
||||
|
||||
.reveal .show-wrong:hover .tooltip, .reveal .show-right:hover .tooltip {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*********************************************
|
||||
* ADD: COMMENT BUBBLES
|
||||
*********************************************/
|
||||
|
||||
.reveal .bubble {
|
||||
color: #fdf6e3;
|
||||
background-color: #586e75;
|
||||
padding:10px;
|
||||
border-radius:5px;
|
||||
box-shadow: 0px 0px 30px 0px rgba(0,0,0,0.35);
|
||||
}
|
||||
|
||||
.reveal .comment {
|
||||
color: #fdf6e3;
|
||||
background-color: #586e75;
|
||||
position:absolute;
|
||||
padding:10px;
|
||||
border-radius:5px;
|
||||
font-size: 0.5em;
|
||||
box-shadow: 0px 0px 30px 0px rgba(0,0,0,0.35);
|
||||
}
|
||||
|
||||
.reveal .comment-left {
|
||||
color: #fdf6e3;
|
||||
background-color: #586e75;
|
||||
position:absolute;
|
||||
padding:5px;
|
||||
font-size: 80%;
|
||||
border-radius:20px 20px 0px 20px;
|
||||
box-shadow: 0px 0px 30px 0px rgba(0,0,0,0.35);
|
||||
}
|
||||
|
||||
.reveal .comment-right {
|
||||
color: #fdf6e3;
|
||||
background-color: #586e75;
|
||||
position:absolute;
|
||||
padding:5px;
|
||||
font-size: 80%;
|
||||
border-radius:20px 20px 20px 0px;
|
||||
box-shadow: 0px 0px 30px 0px rgba(0,0,0,0.35);
|
||||
}
|
||||
|
||||
.reveal .comment-big {
|
||||
color: #fdf6e3;
|
||||
background-color: #586e75;
|
||||
padding:10px;
|
||||
border-radius:5px;
|
||||
box-shadow: 0px 0px 30px 0px rgba(0,0,0,0.35);
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* ADD: FOOTER COMMENTS
|
||||
* either us footer tag or class
|
||||
*********************************************/
|
||||
|
||||
.reveal footer, .reveal .footer {
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
margin: auto;
|
||||
padding: 5px;
|
||||
font-size: 0.5em;
|
||||
left: 100px;
|
||||
width: 724px;
|
||||
top: 750px;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* ADD: GENERIC HIGHLIGHT
|
||||
*********************************************/
|
||||
|
||||
.reveal .highlight {
|
||||
background-color: #fdfbaa;
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
* ADD: margin: auto
|
||||
*********************************************/
|
||||
|
||||
.reveal .automargin {
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
* ADD: ADD SHADOWS (e.g. to images)
|
||||
*********************************************/
|
||||
|
||||
.reveal .shadow {
|
||||
box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.25);
|
||||
}
|
||||
|
||||
.reveal table p {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.reveal .neg80 {
|
||||
margin-top: -80px;
|
||||
}
|
||||
|
||||
.reveal .neg60 {
|
||||
margin-top: -60px;
|
||||
}
|
||||
|
||||
/* class for aligning divs in a row */
|
||||
.reveal .ilb {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
* ADD: MathJax equation should get some
|
||||
vertical distance to text before them
|
||||
*********************************************/
|
||||
|
||||
.reveal .MathJax_Display {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* ADD: Source Highlighting from Pandoc
|
||||
*********************************************/
|
||||
|
||||
code {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
span.smallcaps {
|
||||
font-variant: small-caps;
|
||||
}
|
||||
|
||||
div.line-block {
|
||||
white-space: pre-line;
|
||||
}
|
||||
|
||||
div.column {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
div.sourceLine,
|
||||
a.sourceLine {
|
||||
display: inline-block;
|
||||
min-height: 1.25em;
|
||||
}
|
||||
|
||||
a.sourceLine {
|
||||
pointer-events: none;
|
||||
color: inherit;
|
||||
text-decoration: inherit;
|
||||
}
|
||||
|
||||
.sourceCode {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
code.sourceCode {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
@media print {
|
||||
code.sourceCode {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
div.sourceLine,
|
||||
a.sourceLine {
|
||||
text-indent: -1em;
|
||||
padding-left: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
pre.numberSource div.sourceLine,
|
||||
.numberSource a.sourceLine {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
pre.numberSource div.sourceLine::before,
|
||||
.numberSource a.sourceLine::before {
|
||||
content: attr(data-line-number);
|
||||
position: absolute;
|
||||
left: -5em;
|
||||
text-align: right;
|
||||
vertical-align: baseline;
|
||||
border: none;
|
||||
pointer-events: all;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
padding: 0 4px;
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
pre.numberSource {
|
||||
margin-left: 3em;
|
||||
border-left: 1px solid #aaaaaa;
|
||||
color: #aaaaaa;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
@media screen {
|
||||
a.sourceLine::before {
|
||||
text-decoration: underline;
|
||||
color: initial;
|
||||
}
|
||||
}
|
||||
|
||||
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
||||
code span.dt { color: #902000; } /* DataType */
|
||||
code span.dv { color: #40a070; } /* DecVal */
|
||||
code span.bn { color: #40a070; } /* BaseN */
|
||||
code span.fl { color: #40a070; } /* Float */
|
||||
code span.ch { color: #4070a0; } /* Char */
|
||||
code span.st { color: #4070a0; } /* String */
|
||||
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
||||
code span.ot { color: #007020; } /* Other */
|
||||
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
||||
code span.fu { color: #06287e; } /* Function */
|
||||
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
||||
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||
code span.cn { color: #880000; } /* Constant */
|
||||
code span.sc { color: #4070a0; } /* SpecialChar */
|
||||
code span.vs { color: #4070a0; } /* VerbatimString */
|
||||
code span.ss { color: #bb6688; } /* SpecialString */
|
||||
code span.im { } /* Import */
|
||||
code span.va { color: #19177c; } /* Variable */
|
||||
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
||||
code span.op { color: #666666; } /* Operator */
|
||||
code span.bu { } /* BuiltIn */
|
||||
code span.ex { } /* Extension */
|
||||
code span.pp { color: #bc7a00; } /* Preprocessor */
|
||||
code span.at { color: #7d9029; } /* Attribute */
|
||||
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
||||
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
||||
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
||||
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
||||
|
6
vortrag/img/compound_example.neato
Normal file
6
vortrag/img/compound_example.neato
Normal file
@ -0,0 +1,6 @@
|
||||
digraph compound {
|
||||
|
||||
"Magic Dust";
|
||||
"Toxin" [style=filled, fillcolor="0,1,0.9"];
|
||||
|
||||
}
|
BIN
vortrag/img/compound_example.png
Normal file
BIN
vortrag/img/compound_example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
BIN
vortrag/img/environment.tree.png
Normal file
BIN
vortrag/img/environment.tree.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 223 KiB |
6
vortrag/img/enzyme_example.neato
Normal file
6
vortrag/img/enzyme_example.neato
Normal file
@ -0,0 +1,6 @@
|
||||
digraph compound {
|
||||
|
||||
"Magic Dust" -> "Toxin" [label="Enzyme ",len=2];
|
||||
"Toxin" [style=filled, fillcolor="0,1,0.9"];
|
||||
|
||||
}
|
BIN
vortrag/img/enzyme_example.png
Normal file
BIN
vortrag/img/enzyme_example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
8
vortrag/img/predator_example.neato
Normal file
8
vortrag/img/predator_example.neato
Normal file
@ -0,0 +1,8 @@
|
||||
digraph compound {
|
||||
|
||||
"Magic Dust" -> "Toxin" [label="Enzyme ",len=2];
|
||||
"Toxin" [style=filled, fillcolor="0,1,0.9"];
|
||||
"Predator" [style=filled, fillcolor="0.66,0.1,0.9"];
|
||||
"Predator" -> "Toxin" [label="is killed by", len=2];
|
||||
|
||||
}
|
BIN
vortrag/img/predator_example.png
Normal file
BIN
vortrag/img/predator_example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
155
vortrag/js/zoom.js
Normal file
155
vortrag/js/zoom.js
Normal file
@ -0,0 +1,155 @@
|
||||
//
|
||||
// Based on zoom.js plugin of reveal.js
|
||||
// modified to correctly handle reveal's scaling
|
||||
// to react on dblclick
|
||||
// to remove (unused) panning code
|
||||
//
|
||||
|
||||
/*!
|
||||
* zoom.js 0.3 (modified for use with reveal.js)
|
||||
* http://lab.hakim.se/zoom-js
|
||||
* MIT licensed
|
||||
*
|
||||
* Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
|
||||
*/
|
||||
|
||||
|
||||
|
||||
var RevealZoom = window.RevealZoom || (function(){
|
||||
|
||||
|
||||
// The current zoom level (scale)
|
||||
var level = 1;
|
||||
|
||||
|
||||
// The easing that will be applied when we zoom in/out
|
||||
document.body.style.transition = 'transform 0.8s ease';
|
||||
document.body.style.OTransition = '-o-transform 0.8s ease';
|
||||
document.body.style.msTransition = '-ms-transform 0.8s ease';
|
||||
document.body.style.MozTransition = '-moz-transform 0.8s ease';
|
||||
document.body.style.WebkitTransition = '-webkit-transform 0.8s ease';
|
||||
|
||||
|
||||
/**
|
||||
* Applies the CSS required to zoom in, prefers the use of CSS3
|
||||
* transforms but falls back on zoom for IE.
|
||||
*
|
||||
* @param {Object} rect
|
||||
* @param {Number} scale
|
||||
*/
|
||||
function magnify( rect, scale ) {
|
||||
|
||||
// Ensure a width/height is set
|
||||
rect.width = rect.width || 1;
|
||||
rect.height = rect.height || 1;
|
||||
|
||||
// Center the rect within the zoomed viewport
|
||||
rect.x -= ( window.innerWidth - ( rect.width * scale ) ) / 2;
|
||||
rect.y -= ( window.innerHeight - ( rect.height * scale ) ) / 2;
|
||||
|
||||
// Reset
|
||||
if( scale === 1 )
|
||||
{
|
||||
document.body.style.transform = '';
|
||||
document.body.style.OTransform = '';
|
||||
document.body.style.msTransform = '';
|
||||
document.body.style.MozTransform = '';
|
||||
document.body.style.WebkitTransform = '';
|
||||
}
|
||||
|
||||
// Scale
|
||||
else
|
||||
{
|
||||
var origin = '0px 0px';
|
||||
var transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')';
|
||||
|
||||
document.body.style.transformOrigin = origin;
|
||||
document.body.style.OTransformOrigin = origin;
|
||||
document.body.style.msTransformOrigin = origin;
|
||||
document.body.style.MozTransformOrigin = origin;
|
||||
document.body.style.WebkitTransformOrigin = origin;
|
||||
|
||||
document.body.style.transform = transform;
|
||||
document.body.style.OTransform = transform;
|
||||
document.body.style.msTransform = transform;
|
||||
document.body.style.MozTransform = transform;
|
||||
document.body.style.WebkitTransform = transform;
|
||||
}
|
||||
|
||||
level = scale;
|
||||
}
|
||||
|
||||
|
||||
// zoom to element on double click
|
||||
document.querySelector( '.reveal .slides' ).addEventListener( 'dblclick', function( event ) {
|
||||
event.preventDefault();
|
||||
zoomTo(event.target);
|
||||
});
|
||||
|
||||
|
||||
// un-show answers on slide-change
|
||||
Reveal.addEventListener( 'slidechanged', function() {
|
||||
if( level !== 1 )
|
||||
{
|
||||
zoomOut();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Zooms in on an HTML element.
|
||||
*
|
||||
* @param element: HTML element to zoom in on
|
||||
*/
|
||||
function zoomTo( element )
|
||||
{
|
||||
// Due to an implementation limitation we can't zoom in
|
||||
// to another element without zooming out first
|
||||
if( level !== 1 )
|
||||
{
|
||||
zoomOut();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Space around the zoomed in element to leave on screen
|
||||
var padding = 20;
|
||||
var bounds = element.getBoundingClientRect();
|
||||
|
||||
// are slides zoomed up, and is this done using CSS zoom?
|
||||
// then incorporate this zoom!
|
||||
var zoom = document.querySelector( '.reveal .slides' ).style.zoom;
|
||||
var scale = (zoom < 1) ? 1 : zoom;
|
||||
|
||||
var options = {
|
||||
x: Math.round( bounds.left * scale - padding ),
|
||||
y: Math.round( bounds.top * scale - padding ),
|
||||
width: Math.round( bounds.width * scale + ( padding * 2 ) ),
|
||||
height: Math.round( bounds.height * scale + ( padding * 2 ) )
|
||||
};
|
||||
|
||||
|
||||
options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 );
|
||||
|
||||
|
||||
if( options.scale > 1 )
|
||||
{
|
||||
options.x *= options.scale;
|
||||
options.y *= options.scale;
|
||||
magnify( options, options.scale );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// zoom out to normal scale
|
||||
function zoomOut()
|
||||
{
|
||||
magnify( { x: 0, y: 0 }, 1 );
|
||||
level = 1;
|
||||
}
|
||||
|
||||
|
||||
return this;
|
||||
|
||||
})();
|
||||
|
1
vortrag/make-code-footnotesize.tex
Normal file
1
vortrag/make-code-footnotesize.tex
Normal file
@ -0,0 +1 @@
|
||||
\renewenvironment{Shaded} {\footnotesize} {}
|
1
vortrag/reveal.js
Symbolic link
1
vortrag/reveal.js
Symbolic link
@ -0,0 +1 @@
|
||||
../reveal.js/
|
1
vortrag/reveal.js-menu
Symbolic link
1
vortrag/reveal.js-menu
Symbolic link
@ -0,0 +1 @@
|
||||
../reveal.js-menu/
|
1
vortrag/reveal.js-plugins
Symbolic link
1
vortrag/reveal.js-plugins
Symbolic link
@ -0,0 +1 @@
|
||||
../reveal.js-plugins/
|
211
vortrag/template.html
Normal file
211
vortrag/template.html
Normal file
@ -0,0 +1,211 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
|
||||
$if(title)$
|
||||
<title>
|
||||
$title$$if(subtitle)$: $subtitle$ $endif$
|
||||
</title>
|
||||
$endif$
|
||||
|
||||
<link rel="stylesheet" href="/reveal.js/css/reveal.css">
|
||||
|
||||
|
||||
<!-- My solarized Theme (derived from reveal's solarized.css) -->
|
||||
<link rel="stylesheet" href="/css/solarized_plus.css">
|
||||
|
||||
|
||||
|
||||
<!-- Printing and PDF exports -->
|
||||
<script>
|
||||
var link = document.createElement( 'link' );
|
||||
link.rel = 'stylesheet';
|
||||
link.type = 'text/css';
|
||||
link.href = window.location.search.match( /print-pdf/gi ) ? '/reveal.js/css/print/pdf.css' : '/reveal.js/css/print/paper.css';
|
||||
document.getElementsByTagName( 'head' )[0].appendChild( link );
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<!-- MathJax config -->
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
jax: ["input/TeX","output/HTML-CSS"],
|
||||
TeX: {
|
||||
Macros: {
|
||||
R: "{\\mathrm{{I}\\kern-.15em{R}}}",
|
||||
laplace: "{\\Delta}",
|
||||
grad: "{\\nabla}",
|
||||
T: "^{\\mathsf{T}}",
|
||||
abs: ['\\left\\lvert #1 \\right\\rvert', 1],
|
||||
norm: ['\\left\\Vert #1 \\right\\Vert', 1],
|
||||
iprod: ['\\left\\langle #1 \\right\\rangle', 1],
|
||||
vec: ['\\mathbf{#1}', 1],
|
||||
mat: ['\\mathbf{#1}', 1],
|
||||
set: ['\\mathcal{#1}', 1],
|
||||
func: ['\\mathrm{#1}', 1],
|
||||
trans: ['{#1}\\mkern-1mu^{\\mathsf{T}}', 1],
|
||||
matrix: ['\\begin{bmatrix} #1 \\end{bmatrix}', 1],
|
||||
vector: ['\\begin{pmatrix} #1 \\end{pmatrix}', 1],
|
||||
of: ['\\mkern{-2mu}\\left( #1 \\right\)', 1]
|
||||
}
|
||||
},
|
||||
"HTML-CSS": {
|
||||
styles: {
|
||||
".reveal section .MathJax_Display": { margin: "0.5em 0em" }
|
||||
},
|
||||
scale: 95
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
<!-- here come the slides -->
|
||||
<div class="reveal">
|
||||
<div class="slides">
|
||||
|
||||
|
||||
<!-- Title slide -->
|
||||
$if(title)$
|
||||
<section class="white-on-blue">
|
||||
<div class="title"> $title$ </div>
|
||||
$if(subtitle)$
|
||||
<div class="subtitle"> $subtitle$ </div>
|
||||
$endif$
|
||||
$if(author)$
|
||||
<div class="author"> $author$ </div>
|
||||
$if(affiliation)$
|
||||
<div class="affiliation"> $affiliation$ </div>
|
||||
$endif$
|
||||
$endif$
|
||||
</section>
|
||||
$endif$
|
||||
|
||||
|
||||
<!-- Table of Contents -->
|
||||
$if(toc)$
|
||||
<section>
|
||||
<h2>Outline</h2>
|
||||
<nav id="$idprefix$TOC">
|
||||
$toc$
|
||||
</nav>
|
||||
</section>
|
||||
$endif$
|
||||
|
||||
|
||||
<!-- all the slides from markdown document: DO NOT INDENT THE body LINE!!! -->
|
||||
$body$
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="/reveal.js/lib/js/head.min.js"></script>
|
||||
<script src="/reveal.js/js/reveal.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
|
||||
// More info https://github.com/hakimel/reveal.js#configuration
|
||||
Reveal.initialize({
|
||||
|
||||
|
||||
// reveal settings
|
||||
controls: false,
|
||||
progress: false,
|
||||
slideNumber: true,
|
||||
history: true,
|
||||
center: false,
|
||||
transition: 'none',
|
||||
viewDistance: 2, // otherwise videos start early
|
||||
width: 1280,
|
||||
height: 1024,
|
||||
minScale: 0.2,
|
||||
maxScale: 5, // if this threshold is reached, the chalkboard drawing will be wrongly positioned. hence large threshold!
|
||||
pdfMaxPagesPerSlide: 1, // slides are cropped on one page for PDF export
|
||||
|
||||
|
||||
// use local mathjax installation
|
||||
math: { mathjax: '/MathJax/MathJax.js', config: 'TeX-AMS_HTML-full' },
|
||||
|
||||
|
||||
|
||||
// setup reveal-menu
|
||||
menu: {
|
||||
side: 'right',
|
||||
numbers: false,
|
||||
titleSelector: 'h1, h2',
|
||||
hideMissingTitles: false,
|
||||
markers: false,
|
||||
custom: false,
|
||||
themes: false,
|
||||
transitions: false,
|
||||
openButton: false,
|
||||
openSlideNumber: true,
|
||||
keyboard: true
|
||||
},
|
||||
|
||||
|
||||
// setup charts
|
||||
chart: {
|
||||
defaults: {
|
||||
global: {
|
||||
"defaultFontFamily": "Lato",
|
||||
"defaultFontColor": "black",
|
||||
"defaultFontSize": 20,
|
||||
title: {
|
||||
"fontFamily": "Lato",
|
||||
"fontSize": 30,
|
||||
},
|
||||
legend: {
|
||||
"position": "bottom"
|
||||
}
|
||||
},
|
||||
},
|
||||
line: {
|
||||
backgroundColor: [ "rgba(42,157,223,.1)", "rgba(245,159,0,.1)", "rgba(182,200,40,.1)" ],
|
||||
borderColor: [ "rgba(42,157,223,1)", "rgba(245,159,0,1)", "rgba(182,200,40,1)" ],
|
||||
},
|
||||
bar: {
|
||||
backgroundColor: [ "rgba(42,157,223,.8)", "rgba(245,159,0,.8)", "rgba(182,200,40,.8)" ],
|
||||
borderColor: [ "rgba(42,157,223,1)", "rgba(245,159,0,1)", "rgba(182,200,40,1)" ]
|
||||
},
|
||||
pie: {
|
||||
backgroundColor: [ ["rgba(0,0,0,.8)" , "rgba(220,20,20,.8)", "rgba(20,220,20,.8)", "rgba(220,220,20,.8)", "rgba(20,20,220,.8)"] ]},
|
||||
radar: {
|
||||
borderColor: [ "rgba(20,220,220,.8)" , "rgba(220,120,120,.8)", "rgba(20,120,220,.8)" ]
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
// keyboard shortcuts
|
||||
keyboard: {
|
||||
40: function() { Reveal.next(); }, // up: next slide
|
||||
38: function() { Reveal.prev(); }, // down: prev slide
|
||||
},
|
||||
|
||||
|
||||
// load plugins
|
||||
dependencies: [
|
||||
{ src: '/reveal.js/plugin/math/math.js' },
|
||||
{ src: '/reveal.js/plugin/notes/notes.js', async: true },
|
||||
{ src: '/reveal.js-menu/menu.js' },
|
||||
{ src: '/reveal.js-plugins/chart/Chart.min.js' },
|
||||
{ src: '/reveal.js-plugins/chart/csv2chart.js' },
|
||||
{ src: '/js/zoom.js', async: true },
|
||||
]
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
255
vortrag/vortrag.md
Normal file
255
vortrag/vortrag.md
Normal file
@ -0,0 +1,255 @@
|
||||
---
|
||||
title: Chemodiversity
|
||||
subtitle: A short overview of this project
|
||||
author: Stefan Dresselhaus
|
||||
license: BSD
|
||||
affiliation: Theoretic Biology Group<br>
|
||||
Bielefeld University
|
||||
abstract: Attempt to find indications for chemodiversity in the plant secondary metabolism according to the screening hypothesis
|
||||
date: \today
|
||||
|
||||
papersize: a4
|
||||
fontsize: 10pt
|
||||
documentclass: scrartcl
|
||||
|
||||
margin: 0.2
|
||||
slideNumber: true
|
||||
...
|
||||
|
||||
|
||||
What is chemodiversity?
|
||||
-----------------------
|
||||
|
||||
- It was observed, that many plants seem to produce many compounds with no
|
||||
obvious purpose
|
||||
- Using resources to produce such compounds (instead of i.e. growing) should
|
||||
yield a fitness-disadvantage
|
||||
- one expects evolution to eliminate such behavior
|
||||
|
||||
Question: Why is this behavior observed?
|
||||
--------------------------------
|
||||
|
||||
- Are these compounds necessary for some unresearched reason?
|
||||
- unknown environmental effects?
|
||||
- unknown intermediate products for necessary defenses?
|
||||
- speculative diversity because they could be useful after genetic mutations?
|
||||
|
||||
Screening Hypothesis
|
||||
--------------------
|
||||
|
||||
- First suggested by Jones & Firn ([1991](https://doi.org/10.1098/rstb.1991.0077))
|
||||
- new (random) compounds are rarely biologically active
|
||||
- plants have a higher chance finding an active compound if they diversify
|
||||
- many (inactive) compounds are sustained for a while because they may be
|
||||
precursors to biologically active substances
|
||||
|
||||
. . .
|
||||
|
||||
There are indications for and against this hypothesis by [various groups](https://nph.onlinelibrary.wiley.com/doi/full/10.1111/nph.12526#nph12526-bib-0093).
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Setting up a simulation
|
||||
=======================
|
||||
|
||||
>If you wish to make apple pie from scratch, you must first create the universe
|
||||
> - Carl Sagan
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Defining Chemistry
|
||||
------------------
|
||||
|
||||
- First of all we define the chemistry of our environment, so we know all possible
|
||||
interactions and can manipulate them at will.
|
||||
- We differentiate between **`Substrate`{.haskell}** and
|
||||
**`Products`{.haskell}**:
|
||||
- **`Substrate`{.haskell
|
||||
}** can just be used (i.e. real substrates if the whole metabolism
|
||||
should be simulated, **`PPM`{.haskell}**^[1]^ in our simplified case)
|
||||
- **`Products`{.haskell
|
||||
}** are nodes in our chemistry environment.
|
||||
- In Code:
|
||||
```haskell
|
||||
data Compound = Substrate Nutrient
|
||||
| Produced Component
|
||||
| GenericCompound Int
|
||||
```
|
||||
::: footer
|
||||
^[1]^: plants primary metabolism
|
||||
:::
|
||||
|
||||
|
||||
Usage in the current Model
|
||||
--------------------------
|
||||
|
||||
- The Model used for evaluation just has one `Substrate`{.haskell}:
|
||||
`PPM`{.haskell} with a fixed Amount to account for effects of sucking
|
||||
primary-metabolism-products out of the primary metabolic cycle
|
||||
- This is used to simulate i.e. worse growth, fertility and other things
|
||||
affecting the fitness of a plant.
|
||||
- We are not using named Compounds, but restrict to generic `Compound
|
||||
1`{.haskell},
|
||||
`Compound 2`{.haskell} ...
|
||||
- Not done, but worth exploring:
|
||||
- Take a "real-world" snapshot of Nutrients and Compounds and recreate them
|
||||
- See if the simulation follows the real world
|
||||
|
||||
|
||||
Defining a Metabolism
|
||||
---------------------
|
||||
|
||||
- We define **`Enzyme`{.haskell}s** as
|
||||
- having a recipe for a chemical reaction
|
||||
- are reversible
|
||||
- may have dependencies on catalysts to be present
|
||||
- may have higher dominance over other enzymes with the same reaction
|
||||
|
||||
- Input can be `Substrate`{.haskell} and/or `Products`{.haskell}
|
||||
- Outputs can only be `Products`{.haskell}
|
||||
- $\Rightarrow$ This makes them to Edges in a graph combining the chemical
|
||||
compounds
|
||||
|
||||
Usage in the current Model
|
||||
--------------------------
|
||||
|
||||
- `Enzyme`{.haskell}s all
|
||||
- only map `1`{.haskell} input to `1`{.haskell} Output with a production rate of `1`{.haskell} per `Enzyme`{.haskell}
|
||||
(i.e. `-1 Compound 2 -> +1 Compound 5`{.haskell})
|
||||
- are equally dominant
|
||||
- need no catalysts
|
||||
|
||||
Defining Predators
|
||||
------------------
|
||||
|
||||
- **`Predator`{.haskell}s** consist of
|
||||
- a list of `Compound`{.haskell}s that can kill them
|
||||
- a fitness impact ($[0..1]$) as the probability of killing the plant
|
||||
- an expected number of attacks per generation
|
||||
- a probability ($[0..1]$) of appearing in a single generation
|
||||
- `Predator`{.haskell} need not necessary be biologically motivated
|
||||
- i.e. rare, nearly devastating attacks (floods, droughts, ...) with realistic
|
||||
probabilities
|
||||
|
||||
Example Environment
|
||||
-------------------
|
||||
|
||||
:::::::::::::: {.columns}
|
||||
|
||||
::: {.column width=37%}
|
||||
|
||||
- The complete environment now consists of
|
||||
- `Compound`{.haskell}s:
|
||||
{style="vertical-align:middle"}
|
||||
- `Enzyme`{.haskell}s:
|
||||
{style="vertical-align:middle"}
|
||||
- `Predator`{.haskell}s:
|
||||
{style="vertical-align:middle"}
|
||||
|
||||
:::
|
||||
|
||||
::: {.column width=63% .fragment}
|
||||
|
||||
{width=75%}
|
||||
|
||||
Additional rules:
|
||||
|
||||
- Every "subtree" from the marked `PPM`{.haskell} is treated as a separate
|
||||
species (fungi, animals, ...)
|
||||
$\Rightarrow$ Every predator can only be affected by toxins in the same part of the tree
|
||||
- Trees can be automatically generated in a decent manner to search for
|
||||
environmens where specific effects may arise
|
||||
:::
|
||||
|
||||
::::::::::::::
|
||||
|
||||
::::: notes :::::
|
||||
|
||||
CTRL+Click for zoom!
|
||||
|
||||
- All starts at PPM (Plant Primary Metabolism)
|
||||
- Red = Toxic
|
||||
- Blue = Predators
|
||||
|
||||
::::
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Plants
|
||||
------
|
||||
|
||||
A plant consists of
|
||||
...
|
||||
|
||||
|
||||
Metabolism simulation
|
||||
---------------------
|
||||
|
||||
Compounds are created foo..
|
||||
|
||||
|
||||
Fitness
|
||||
-------
|
||||
|
||||
- Static costs of enzymes
|
||||
- Cost of active enzymes
|
||||
|
||||
|
||||
Attacker
|
||||
--------
|
||||
|
||||
- Rate of attack ~> Paper, Formulas
|
||||
- Defenses
|
||||
- single plant
|
||||
- automimicry
|
||||
|
||||
Haploid mating
|
||||
--------------
|
||||
|
||||
- fixed population-size (100)
|
||||
- $p(\textrm{reproduction}) = \frac{\textrm{plant-fitness}}{\textrm{total fitness in population}}$
|
||||
- Gene
|
||||
- mutation
|
||||
- duplication
|
||||
- deletion
|
||||
- addition
|
||||
- activation-noise
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Simulations
|
||||
-----------
|
||||
|
||||
Parameters tested
|
||||
|
||||
- x
|
||||
- y
|
||||
- z
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Results
|
||||
=======
|
||||
|
||||
>It doesn't matter how beautiful your theory is, it doesn't matter how smart you are. If it doesn't agree with experiment, it's wrong.
|
||||
> - Richard P. Feynman
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user