1
0
mirror of https://github.com/msberends/AMR.git synced 2025-07-09 03:22:00 +02:00

(v0.9.0.9006) added CITATION file

This commit is contained in:
2019-12-22 11:43:38 +01:00
parent ba3ce77f02
commit db5dfff0ca
27 changed files with 425 additions and 395 deletions

View File

@ -41,7 +41,7 @@
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">AMR (for R)</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">0.9.0.9004</span>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Latest development version">0.9.0.9006</span>
</span>
</div>
@ -187,7 +187,7 @@
<h1>Benchmarks</h1>
<h4 class="author">Matthijs S. Berends</h4>
<h4 class="date">20 December 2019</h4>
<h4 class="date">22 December 2019</h4>
<div class="hidden name"><code>benchmarks.Rmd</code></div>
@ -221,36 +221,21 @@
<a class="sourceLine" id="cb2-16" data-line-number="16"> <span class="dt">times =</span> <span class="dv">10</span>)</a>
<a class="sourceLine" id="cb2-17" data-line-number="17"><span class="kw"><a href="https://rdrr.io/r/base/print.html">print</a></span>(S.aureus, <span class="dt">unit =</span> <span class="st">"ms"</span>, <span class="dt">signif =</span> <span class="dv">2</span>)</a>
<a class="sourceLine" id="cb2-18" data-line-number="18"><span class="co"># Unit: milliseconds</span></a>
<a class="sourceLine" id="cb2-19" data-line-number="19"><span class="co"># expr min lq mean median uq max</span></a>
<a class="sourceLine" id="cb2-20" data-line-number="20"><span class="co"># as.mo("sau") 9.7 10.0 33.0 11.0 35.0 110.0</span></a>
<a class="sourceLine" id="cb2-21" data-line-number="21"><span class="co"># as.mo("stau") 36.0 36.0 45.0 37.0 60.0 65.0</span></a>
<a class="sourceLine" id="cb2-22" data-line-number="22"><span class="co"># as.mo("STAU") 33.0 34.0 41.0 37.0 40.0 61.0</span></a>
<a class="sourceLine" id="cb2-23" data-line-number="23"><span class="co"># as.mo("staaur") 9.6 9.9 13.0 10.0 11.0 33.0</span></a>
<a class="sourceLine" id="cb2-24" data-line-number="24"><span class="co"># as.mo("STAAUR") 9.6 10.0 11.0 11.0 11.0 13.0</span></a>
<a class="sourceLine" id="cb2-25" data-line-number="25"><span class="co"># as.mo("S. aureus") 25.0 26.0 32.0 26.0 28.0 59.0</span></a>
<a class="sourceLine" id="cb2-26" data-line-number="26"><span class="co"># as.mo("S aureus") 25.0 26.0 33.0 26.0 33.0 55.0</span></a>
<a class="sourceLine" id="cb2-27" data-line-number="27"><span class="co"># as.mo("Staphylococcus aureus") 4.7 4.8 5.2 5.2 5.5 6.4</span></a>
<a class="sourceLine" id="cb2-28" data-line-number="28"><span class="co"># as.mo("Staphylococcus aureus (MRSA)") 620.0 640.0 690.0 660.0 680.0 840.0</span></a>
<a class="sourceLine" id="cb2-29" data-line-number="29"><span class="co"># as.mo("Sthafilokkockus aaureuz") 310.0 340.0 360.0 350.0 370.0 420.0</span></a>
<a class="sourceLine" id="cb2-30" data-line-number="30"><span class="co"># as.mo("MRSA") 9.8 10.0 13.0 11.0 12.0 35.0</span></a>
<a class="sourceLine" id="cb2-31" data-line-number="31"><span class="co"># as.mo("VISA") 21.0 21.0 29.0 22.0 27.0 60.0</span></a>
<a class="sourceLine" id="cb2-32" data-line-number="32"><span class="co"># as.mo("VRSA") 20.0 21.0 31.0 25.0 44.0 47.0</span></a>
<a class="sourceLine" id="cb2-33" data-line-number="33"><span class="co"># as.mo(22242419) 19.0 19.0 26.0 20.0 25.0 52.0</span></a>
<a class="sourceLine" id="cb2-34" data-line-number="34"><span class="co"># neval</span></a>
<a class="sourceLine" id="cb2-35" data-line-number="35"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-36" data-line-number="36"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-37" data-line-number="37"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-38" data-line-number="38"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-39" data-line-number="39"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-40" data-line-number="40"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-41" data-line-number="41"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-42" data-line-number="42"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-43" data-line-number="43"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-44" data-line-number="44"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-45" data-line-number="45"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-46" data-line-number="46"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-47" data-line-number="47"><span class="co"># 10</span></a>
<a class="sourceLine" id="cb2-48" data-line-number="48"><span class="co"># 10</span></a></code></pre></div>
<a class="sourceLine" id="cb2-19" data-line-number="19"><span class="co"># expr min lq mean median uq max neval</span></a>
<a class="sourceLine" id="cb2-20" data-line-number="20"><span class="co"># as.mo("sau") 9.1 9.3 15 9.8 13.0 34 10</span></a>
<a class="sourceLine" id="cb2-21" data-line-number="21"><span class="co"># as.mo("stau") 33.0 34.0 40 35.0 39.0 60 10</span></a>
<a class="sourceLine" id="cb2-22" data-line-number="22"><span class="co"># as.mo("STAU") 33.0 34.0 51 35.0 57.0 150 10</span></a>
<a class="sourceLine" id="cb2-23" data-line-number="23"><span class="co"># as.mo("staaur") 8.8 9.2 16 10.0 13.0 43 10</span></a>
<a class="sourceLine" id="cb2-24" data-line-number="24"><span class="co"># as.mo("STAAUR") 9.3 9.4 23 9.7 10.0 120 10</span></a>
<a class="sourceLine" id="cb2-25" data-line-number="25"><span class="co"># as.mo("S. aureus") 10.0 10.0 16 11.0 12.0 41 10</span></a>
<a class="sourceLine" id="cb2-26" data-line-number="26"><span class="co"># as.mo("S aureus") 10.0 10.0 28 12.0 35.0 110 10</span></a>
<a class="sourceLine" id="cb2-27" data-line-number="27"><span class="co"># as.mo("Staphylococcus aureus") 4.6 4.8 10 4.9 5.2 56 10</span></a>
<a class="sourceLine" id="cb2-28" data-line-number="28"><span class="co"># as.mo("Staphylococcus aureus (MRSA)") 660.0 670.0 700 680.0 710.0 770 10</span></a>
<a class="sourceLine" id="cb2-29" data-line-number="29"><span class="co"># as.mo("Sthafilokkockus aaureuz") 330.0 350.0 370 370.0 390.0 430 10</span></a>
<a class="sourceLine" id="cb2-30" data-line-number="30"><span class="co"># as.mo("MRSA") 9.2 9.2 14 9.4 9.5 35 10</span></a>
<a class="sourceLine" id="cb2-31" data-line-number="31"><span class="co"># as.mo("VISA") 20.0 20.0 26 21.0 23.0 45 10</span></a>
<a class="sourceLine" id="cb2-32" data-line-number="32"><span class="co"># as.mo("VRSA") 20.0 21.0 30 22.0 44.0 47 10</span></a>
<a class="sourceLine" id="cb2-33" data-line-number="33"><span class="co"># as.mo(22242419) 19.0 20.0 43 20.0 28.0 130 10</span></a></code></pre></div>
<p><img src="benchmarks_files/figure-html/unnamed-chunk-5-1.png" width="562.5"></p>
<p>In the table above, all measurements are shown in milliseconds (thousands of seconds). A value of 5 milliseconds means it can determine 200 input values per second. It case of 100 milliseconds, this is only 10 input values per second. The second input is the only one that has to be looked up thoroughly. All the others are known codes (the first one is a WHONET code) or common laboratory codes, or common full organism names like the last one. Full organism names are always preferred.</p>
<p>To achieve this speed, the <code>as.mo</code> function also takes into account the prevalence of human pathogenic microorganisms. The downside is of course that less prevalent microorganisms will be determined less fast. See this example for the ID of <em>Methanosarcina semesiae</em> (<code>B_MTHNSR_SEMS</code>), a bug probably never found before in humans:</p>
@ -262,19 +247,19 @@
<a class="sourceLine" id="cb3-6" data-line-number="6"> <span class="dt">times =</span> <span class="dv">10</span>)</a>
<a class="sourceLine" id="cb3-7" data-line-number="7"><span class="kw"><a href="https://rdrr.io/r/base/print.html">print</a></span>(M.semesiae, <span class="dt">unit =</span> <span class="st">"ms"</span>, <span class="dt">signif =</span> <span class="dv">4</span>)</a>
<a class="sourceLine" id="cb3-8" data-line-number="8"><span class="co"># Unit: milliseconds</span></a>
<a class="sourceLine" id="cb3-9" data-line-number="9"><span class="co"># expr min lq mean median uq</span></a>
<a class="sourceLine" id="cb3-10" data-line-number="10"><span class="co"># as.mo("metsem") 1435.000 1473.000 1510.00 1500.000 1520.00</span></a>
<a class="sourceLine" id="cb3-11" data-line-number="11"><span class="co"># as.mo("METSEM") 1466.000 1516.000 1542.00 1541.000 1557.00</span></a>
<a class="sourceLine" id="cb3-12" data-line-number="12"><span class="co"># as.mo("M. semesiae") 2113.000 2173.000 2207.00 2187.000 2243.00</span></a>
<a class="sourceLine" id="cb3-13" data-line-number="13"><span class="co"># as.mo("M. semesiae") 2154.000 2192.000 2238.00 2215.000 2305.00</span></a>
<a class="sourceLine" id="cb3-14" data-line-number="14"><span class="co"># as.mo("Methanosarcina semesiae") 5.435 5.508 13.05 5.724 28.23</span></a>
<a class="sourceLine" id="cb3-9" data-line-number="9"><span class="co"># expr min lq mean median uq</span></a>
<a class="sourceLine" id="cb3-10" data-line-number="10"><span class="co"># as.mo("metsem") 1469.000 1482.000 1515.000 1507.000 1545.000</span></a>
<a class="sourceLine" id="cb3-11" data-line-number="11"><span class="co"># as.mo("METSEM") 1435.000 1452.000 1490.000 1479.000 1520.000</span></a>
<a class="sourceLine" id="cb3-12" data-line-number="12"><span class="co"># as.mo("M. semesiae") 10.840 11.090 16.220 11.150 11.600</span></a>
<a class="sourceLine" id="cb3-13" data-line-number="13"><span class="co"># as.mo("M. semesiae") 10.670 10.820 20.140 11.180 38.040</span></a>
<a class="sourceLine" id="cb3-14" data-line-number="14"><span class="co"># as.mo("Methanosarcina semesiae") 5.138 5.185 7.838 5.366 5.493</span></a>
<a class="sourceLine" id="cb3-15" data-line-number="15"><span class="co"># max neval</span></a>
<a class="sourceLine" id="cb3-16" data-line-number="16"><span class="co"># 1651.00 10</span></a>
<a class="sourceLine" id="cb3-17" data-line-number="17"><span class="co"># 1632.00 10</span></a>
<a class="sourceLine" id="cb3-18" data-line-number="18"><span class="co"># 2301.00 10</span></a>
<a class="sourceLine" id="cb3-19" data-line-number="19"><span class="co"># 2332.00 10</span></a>
<a class="sourceLine" id="cb3-20" data-line-number="20"><span class="co"># 32.95 10</span></a></code></pre></div>
<p>That takes 15.5 times as much time on average. A value of 100 milliseconds means it can only determine ~10 different input values per second. We can conclude that looking up arbitrary codes of less prevalent microorganisms is the worst way to go, in terms of calculation performance. Full names (like <em>Methanosarcina semesiae</em>) are always very fast and only take some thousands of seconds to coerce - they are the most probable input from most data sets.</p>
<a class="sourceLine" id="cb3-16" data-line-number="16"><span class="co"># 1574.00 10</span></a>
<a class="sourceLine" id="cb3-17" data-line-number="17"><span class="co"># 1563.00 10</span></a>
<a class="sourceLine" id="cb3-18" data-line-number="18"><span class="co"># 36.46 10</span></a>
<a class="sourceLine" id="cb3-19" data-line-number="19"><span class="co"># 44.17 10</span></a>
<a class="sourceLine" id="cb3-20" data-line-number="20"><span class="co"># 30.28 10</span></a></code></pre></div>
<p>That takes 6.2 times as much time on average. A value of 100 milliseconds means it can only determine ~10 different input values per second. We can conclude that looking up arbitrary codes of less prevalent microorganisms is the worst way to go, in terms of calculation performance. Full names (like <em>Methanosarcina semesiae</em>) are always very fast and only take some thousands of seconds to coerce - they are the most probable input from most data sets.</p>
<p>In the figure below, we compare <em>Escherichia coli</em> (which is very common) with <em>Prevotella brevis</em> (which is moderately common) and with <em>Methanosarcina semesiae</em> (which is uncommon):</p>
<p><img src="benchmarks_files/figure-html/unnamed-chunk-8-1.png" width="900"></p>
<p>The highest outliers are the first times. All next determinations were done in only thousands of seconds, because the <code><a href="../reference/as.mo.html">as.mo()</a></code> function <strong>learns from its own output to speed up determinations for next times</strong>.</p>
@ -311,8 +296,8 @@
<a class="sourceLine" id="cb4-24" data-line-number="24"><span class="kw"><a href="https://rdrr.io/r/base/print.html">print</a></span>(run_it, <span class="dt">unit =</span> <span class="st">"ms"</span>, <span class="dt">signif =</span> <span class="dv">3</span>)</a>
<a class="sourceLine" id="cb4-25" data-line-number="25"><span class="co"># Unit: milliseconds</span></a>
<a class="sourceLine" id="cb4-26" data-line-number="26"><span class="co"># expr min lq mean median uq max neval</span></a>
<a class="sourceLine" id="cb4-27" data-line-number="27"><span class="co"># mo_name(x) 539 576 598 586 610 728 100</span></a></code></pre></div>
<p>So transforming 500,000 values (!!) of 50 unique values only takes 0.59 seconds (586 ms). You only lose time on your unique input values.</p>
<a class="sourceLine" id="cb4-27" data-line-number="27"><span class="co"># mo_name(x) 548 581 605 593 611 735 100</span></a></code></pre></div>
<p>So transforming 500,000 values (!!) of 50 unique values only takes 0.59 seconds (593 ms). You only lose time on your unique input values.</p>
</div>
<div id="precalculated-results" class="section level3">
<h3 class="hasAnchor">
@ -324,10 +309,10 @@
<a class="sourceLine" id="cb5-4" data-line-number="4"> <span class="dt">times =</span> <span class="dv">10</span>)</a>
<a class="sourceLine" id="cb5-5" data-line-number="5"><span class="kw"><a href="https://rdrr.io/r/base/print.html">print</a></span>(run_it, <span class="dt">unit =</span> <span class="st">"ms"</span>, <span class="dt">signif =</span> <span class="dv">3</span>)</a>
<a class="sourceLine" id="cb5-6" data-line-number="6"><span class="co"># Unit: milliseconds</span></a>
<a class="sourceLine" id="cb5-7" data-line-number="7"><span class="co"># expr min lq mean median uq max neval</span></a>
<a class="sourceLine" id="cb5-8" data-line-number="8"><span class="co"># A 6.460 6.61 6.940 6.720 6.940 8.14 10</span></a>
<a class="sourceLine" id="cb5-9" data-line-number="9"><span class="co"># B 25.400 25.80 30.700 26.300 27.600 61.60 10</span></a>
<a class="sourceLine" id="cb5-10" data-line-number="10"><span class="co"># C 0.653 0.67 0.784 0.806 0.842 0.90 10</span></a></code></pre></div>
<a class="sourceLine" id="cb5-7" data-line-number="7"><span class="co"># expr min lq mean median uq max neval</span></a>
<a class="sourceLine" id="cb5-8" data-line-number="8"><span class="co"># A 6.380 6.430 6.800 6.540 6.690 8.94 10</span></a>
<a class="sourceLine" id="cb5-9" data-line-number="9"><span class="co"># B 10.900 10.900 14.200 11.100 11.400 37.20 10</span></a>
<a class="sourceLine" id="cb5-10" data-line-number="10"><span class="co"># C 0.735 0.772 0.832 0.792 0.875 1.01 10</span></a></code></pre></div>
<p>So going from <code><a href="../reference/mo_property.html">mo_name("Staphylococcus aureus")</a></code> to <code>"Staphylococcus aureus"</code> takes 0.0008 seconds - it doesnt even start calculating <em>if the result would be the same as the expected resulting value</em>. That goes for all helper functions:</p>
<div class="sourceCode" id="cb6"><pre class="sourceCode r"><code class="sourceCode r"><a class="sourceLine" id="cb6-1" data-line-number="1">run_it &lt;-<span class="st"> </span><span class="kw"><a href="https://rdrr.io/pkg/microbenchmark/man/microbenchmark.html">microbenchmark</a></span>(<span class="dt">A =</span> <span class="kw"><a href="../reference/mo_property.html">mo_species</a></span>(<span class="st">"aureus"</span>),</a>
<a class="sourceLine" id="cb6-2" data-line-number="2"> <span class="dt">B =</span> <span class="kw"><a href="../reference/mo_property.html">mo_genus</a></span>(<span class="st">"Staphylococcus"</span>),</a>
@ -341,14 +326,14 @@
<a class="sourceLine" id="cb6-10" data-line-number="10"><span class="kw"><a href="https://rdrr.io/r/base/print.html">print</a></span>(run_it, <span class="dt">unit =</span> <span class="st">"ms"</span>, <span class="dt">signif =</span> <span class="dv">3</span>)</a>
<a class="sourceLine" id="cb6-11" data-line-number="11"><span class="co"># Unit: milliseconds</span></a>
<a class="sourceLine" id="cb6-12" data-line-number="12"><span class="co"># expr min lq mean median uq max neval</span></a>
<a class="sourceLine" id="cb6-13" data-line-number="13"><span class="co"># A 0.429 0.450 0.458 0.453 0.469 0.493 10</span></a>
<a class="sourceLine" id="cb6-14" data-line-number="14"><span class="co"># B 0.484 0.499 0.519 0.506 0.518 0.646 10</span></a>
<a class="sourceLine" id="cb6-15" data-line-number="15"><span class="co"># C 0.674 0.721 0.777 0.796 0.816 0.853 10</span></a>
<a class="sourceLine" id="cb6-16" data-line-number="16"><span class="co"># D 0.485 0.490 0.507 0.499 0.518 0.554 10</span></a>
<a class="sourceLine" id="cb6-17" data-line-number="17"><span class="co"># E 0.439 0.453 0.462 0.460 0.476 0.482 10</span></a>
<a class="sourceLine" id="cb6-18" data-line-number="18"><span class="co"># F 0.425 0.446 0.454 0.455 0.462 0.477 10</span></a>
<a class="sourceLine" id="cb6-19" data-line-number="19"><span class="co"># G 0.447 0.450 0.464 0.457 0.471 0.508 10</span></a>
<a class="sourceLine" id="cb6-20" data-line-number="20"><span class="co"># H 0.449 0.457 0.477 0.459 0.464 0.641 10</span></a></code></pre></div>
<a class="sourceLine" id="cb6-13" data-line-number="13"><span class="co"># A 0.445 0.453 0.463 0.464 0.467 0.492 10</span></a>
<a class="sourceLine" id="cb6-14" data-line-number="14"><span class="co"># B 0.484 0.496 0.522 0.502 0.505 0.724 10</span></a>
<a class="sourceLine" id="cb6-15" data-line-number="15"><span class="co"># C 0.667 0.746 0.755 0.758 0.786 0.800 10</span></a>
<a class="sourceLine" id="cb6-16" data-line-number="16"><span class="co"># D 0.488 0.491 0.507 0.505 0.509 0.558 10</span></a>
<a class="sourceLine" id="cb6-17" data-line-number="17"><span class="co"># E 0.454 0.455 0.462 0.461 0.465 0.490 10</span></a>
<a class="sourceLine" id="cb6-18" data-line-number="18"><span class="co"># F 0.432 0.447 0.456 0.458 0.459 0.490 10</span></a>
<a class="sourceLine" id="cb6-19" data-line-number="19"><span class="co"># G 0.438 0.446 0.456 0.454 0.460 0.486 10</span></a>
<a class="sourceLine" id="cb6-20" data-line-number="20"><span class="co"># H 0.439 0.442 0.454 0.450 0.459 0.501 10</span></a></code></pre></div>
<p>Of course, when running <code><a href="../reference/mo_property.html">mo_phylum("Firmicutes")</a></code> the function has zero knowledge about the actual microorganism, namely <em>S. aureus</em>. But since the result would be <code>"Firmicutes"</code> too, there is no point in calculating the result. And because this package knows all phyla of all known bacteria (according to the Catalogue of Life), it can just return the initial value immediately.</p>
</div>
<div id="results-in-other-languages" class="section level3">
@ -375,13 +360,13 @@
<a class="sourceLine" id="cb7-18" data-line-number="18"><span class="kw"><a href="https://rdrr.io/r/base/print.html">print</a></span>(run_it, <span class="dt">unit =</span> <span class="st">"ms"</span>, <span class="dt">signif =</span> <span class="dv">4</span>)</a>
<a class="sourceLine" id="cb7-19" data-line-number="19"><span class="co"># Unit: milliseconds</span></a>
<a class="sourceLine" id="cb7-20" data-line-number="20"><span class="co"># expr min lq mean median uq max neval</span></a>
<a class="sourceLine" id="cb7-21" data-line-number="21"><span class="co"># en 20.68 22.22 25.57 22.81 24.02 58.73 100</span></a>
<a class="sourceLine" id="cb7-22" data-line-number="22"><span class="co"># de 21.96 23.63 28.16 24.45 25.50 138.10 100</span></a>
<a class="sourceLine" id="cb7-23" data-line-number="23"><span class="co"># nl 27.91 29.85 33.99 31.06 32.41 63.72 100</span></a>
<a class="sourceLine" id="cb7-24" data-line-number="24"><span class="co"># es 22.06 23.81 28.02 24.51 25.63 57.01 100</span></a>
<a class="sourceLine" id="cb7-25" data-line-number="25"><span class="co"># it 21.62 23.79 29.36 24.79 27.55 67.42 100</span></a>
<a class="sourceLine" id="cb7-26" data-line-number="26"><span class="co"># fr 21.77 23.67 27.02 24.12 25.51 65.44 100</span></a>
<a class="sourceLine" id="cb7-27" data-line-number="27"><span class="co"># pt 21.68 23.59 26.42 24.03 25.23 54.05 100</span></a></code></pre></div>
<a class="sourceLine" id="cb7-21" data-line-number="21"><span class="co"># en 21.02 22.35 26.62 22.93 23.58 55.03 100</span></a>
<a class="sourceLine" id="cb7-22" data-line-number="22"><span class="co"># de 22.22 23.82 29.38 24.32 25.30 60.12 100</span></a>
<a class="sourceLine" id="cb7-23" data-line-number="23"><span class="co"># nl 27.58 28.91 33.76 30.03 30.78 144.40 100</span></a>
<a class="sourceLine" id="cb7-24" data-line-number="24"><span class="co"># es 22.31 23.57 28.23 24.31 25.96 53.68 100</span></a>
<a class="sourceLine" id="cb7-25" data-line-number="25"><span class="co"># it 22.02 23.74 30.82 24.32 26.97 158.30 100</span></a>
<a class="sourceLine" id="cb7-26" data-line-number="26"><span class="co"># fr 22.38 23.39 28.85 24.29 25.71 143.30 100</span></a>
<a class="sourceLine" id="cb7-27" data-line-number="27"><span class="co"># pt 22.14 23.44 27.47 24.17 25.12 56.93 100</span></a></code></pre></div>
<p>Currently supported are German, Dutch, Spanish, Italian, French and Portuguese.</p>
</div>
</div>