<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>solarchemist.se</title>
    <link>//solarchemist.se/</link>
    <description>Recent content on solarchemist.se</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-gb</language>
    <copyright>Text, plots and photos CC-BY-SA, code GPLv3</copyright>
    <lastBuildDate>Tue, 04 Apr 2023 20:00:00 +0100</lastBuildDate><atom:link href="//solarchemist.se/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Contact</title>
      <link>//solarchemist.se/contact/</link>
      <pubDate>Mon, 28 Apr 2025 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/contact/</guid>
      
      <description>&lt;h1 id=&#34;e-mail-&#34;&gt;E-mail ✉️&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;hello[at]solarchemist[dot]se&lt;/code&gt;&lt;br&gt;
(I trust you to replace the brackets with the proper symbols).&lt;/p&gt;
&lt;h1 id=&#34;on-the-fediverse-i-classfa-fa-mastodoni&#34;&gt;On the Fediverse &lt;i class=&#34;fa fa-mastodon&#34;&gt;&lt;/i&gt;&lt;/h1&gt;
&lt;p&gt;Follow or message me at either of these Mastodon accounts (whichever suits you best).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://scholar.social/@solarchemist&#34;&gt;&lt;code&gt;@solarchemist@scholar.social&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://toots.nu/@solarchemist&#34;&gt;&lt;code&gt;@solarchemist@toots.nu&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;signal-chat&#34;&gt;Signal chat&lt;/h1&gt;
&lt;p&gt;Message me: &lt;a href=&#34;https://signal.me/#eu/48jQfhGrGknOqwi0itge9qJoL0PdVRGB7Ls9NB8DH2txdKC-gJpCK5CJrp2Xz_zw&#34;&gt;&lt;code&gt;solarchemist.03&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;matrix-chat&#34;&gt;Matrix chat&lt;/h1&gt;
&lt;p&gt;Get in touch with me on the federated Matrix protocol:&lt;br&gt;
&lt;a href=&#34;https://matrix.to/#/@solarchemist:matrix.org&#34;&gt;&lt;code&gt;@solarchemist:matrix.org&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;other-services&#34;&gt;Other services&lt;/h1&gt;
&lt;p&gt;If none of the above suit you, you could give one of these a try
(but please note that I don&amp;rsquo;t check these services very often):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://se.linkedin.com/in/solarchemist&#34;&gt;&lt;code&gt;linkedin.com/in/solarchemist&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>//solarchemist.se/thesis/</link>
      <pubDate>Mon, 27 Nov 2023 08:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/thesis/</guid>
      
      <description>&lt;h2 id=&#34;tahas-phd-thesis&#34;&gt;Taha&amp;rsquo;s PhD thesis&lt;/h2&gt;
&lt;table&gt;
   &lt;tr&gt;
      &lt;td width=&#34;30%&#34;&gt;
         &lt;a href=&#34;https://urn.kb.se/resolve?urn=urn%3Anbn%3Ase%3Auu%3Adiva-515258&#34; title=&#34;Go to DiVA record&#34;&gt;&lt;img src=&#34;assets/coverpage.jpg&#34; alt=&#34;Cover page&#34;&gt;&lt;/a&gt;
      &lt;/td&gt;
      &lt;td&gt;
         &lt;h4&gt;Nanostructured ZnO and metal chalcogenide films&lt;br&gt;for solar photocatalysis&lt;/h4&gt;
         &lt;p&gt;Taha Ahmed&lt;/p&gt;
         &lt;!-- https://forkaweso.me/Fork-Awesome/icon/file-pdf-o/ --&gt;
         &lt;p&gt;&lt;a href=&#34;https://uu.diva-portal.org/smash/get/diva2:1808262/FULLTEXT01.pdf&#34; title=&#34;Official PDF on DiVA&#34;&gt;PDF (DiVA) &lt;i class=&#34;fa fa-file-pdf-o&#34;&gt;&lt;/i&gt;&amp;#8239;&lt;i class=&#34;fa fa-cc-cc&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&amp;#8239;&lt;i class=&#34;fa fa-cc-by&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
         &lt;p&gt;Source code repository on &lt;a href=&#34;https://codeberg.org/solarchemist/thesis&#34; title=&#34;Codeberg&#34;&gt;Codeberg &lt;i class=&#34;fa fa-gitea&#34; aria-hidden=&#34;false&#34; alt=&#34;Codeberg repo&#34;&gt;&lt;/i&gt;&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href=&#34;https://github.com/solarchemist/thesis&#34; title=&#34;Github&#34;&gt;GitHub &lt;i class=&#34;fa fa-github&#34; aria-hidden=&#34;false&#34; alt=&#34;Github repo&#34;&gt;&lt;/i&gt;&lt;/a&gt;.&lt;/p&gt;
			&lt;p&gt;Publicly defended 2023-12-18 at the Ångström laboratory, faculty of science and technology, &lt;a href=&#34;http://uu.se&#34;&gt;Uppsala University&lt;/a&gt;.&lt;br/&gt;
         &lt;a href=&#34;https://codeberg.org/solarchemist/thesis/raw/branch/public/errata.pdf&#34; title=&#34;Errata made available before defence&#34;&gt;Errata &lt;i class=&#34;fa fa-file-pdf-o&#34;&gt;&lt;/i&gt;&lt;/a&gt;
         &lt;/p&gt;
      &lt;/td&gt;
   &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Thesis advisors:
&lt;a href=&#34;https://orcid.org/0000-0003-2759-7356&#34;&gt;Tomas Edvinsson
&lt;i class=&#34;fa fa-orcid&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/a&gt;
and
&lt;a href=&#34;https://orcid.org/0000-0002-6326-8106&#34;&gt;Jiefang Zhu
&lt;i class=&#34;fa fa-orcid&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/a&gt;.&lt;br/&gt;&lt;/p&gt;
&lt;h2 id=&#34;source-code-and-reproducibility&#34;&gt;Source code and reproducibility&lt;/h2&gt;
&lt;p&gt;In addition to the PDF of the thesis, I have chosen to also
share the code and data that make up my thesis, in the form
of a git repository shared under a libre license, making it easy for you to inspect the code,
recompile the whole thesis or any parts of it on your own, or adapt all or part of it
for your own work.&lt;/p&gt;
&lt;p&gt;You are of course more than welcome to &lt;a href=&#34;//solarchemist.se/contact&#34;&gt;reach out to me&lt;/a&gt; with comments, criticism,
or just to let me know you found some part of the thesis source code useful.&lt;/p&gt;
&lt;p&gt;To maintain all the source files and other dependencies of this thesis I used
git (&lt;a href=&#34;https://links.solarchemist.se/shaare/d5l7Sg&#34;&gt;what&amp;rsquo;s git? find out!&lt;/a&gt;).
The source code repository (note that the &lt;a href=&#34;https://codeberg.org/solarchemist/thesis&#34;&gt;Codeberg&lt;/a&gt;
and &lt;a href=&#34;https://github.com/solarchemist/thesis&#34;&gt;Github&lt;/a&gt; repositories
are identical, use whichever host you prefer) contain the dependencies,
the data (larger datasets have been packaged as binary &lt;code&gt;rda&lt;/code&gt; archives to save disk space
and compilation speed; you could reconstruct the original text files from them using R),
and the LuaLaTeX code required to reproduce the thesis as-published on DiVA.&lt;/p&gt;
&lt;p&gt;I have cleaned up this repository from zombie code, orphaned files, and other stuff
that crept into the work over the years but which is no longer necessary, but no one
is perfect, so do let me know if you find any discrepancies between the PDF compiled
from the repository (make sure the document was set to &lt;em&gt;final&lt;/em&gt; mode)
and the PDF on DiVA.&lt;/p&gt;
&lt;p&gt;The README in the repository contains more hands-on information on how to download
the repository and compile the thesis on your own computer.&lt;/p&gt;
&lt;!-- + Rnoweb template --&gt;
&lt;!-- + LuaLaTeX template --&gt;
&lt;!-- Also the slides. --&gt;
&lt;h2 id=&#34;links-and-notes&#34;&gt;Links and notes&lt;/h2&gt;
&lt;p&gt;I have highlighted some of the features (mostly LaTeX-related) I employed in the
thesis to implement some custom functionalities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/MvABwQ&#34;&gt;A note on working with bib2df and bib2gls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/GuXgNw&#34;&gt;Cross-reference figures or tables from outside the document using cleveref and friends&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/HjtQ5g&#34;&gt;Typeset vibrational mode assignments with LaTeX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/iyy4lQ&#34;&gt;Hyperlinked DOI icon in bibliography entries with biblatex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/7pNvSw&#34;&gt;Typeset redox sum reactions in LaTeX building on &lt;code&gt;chemmacros&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/P3NpvA&#34;&gt;Glossaries in LaTeX documents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/ye0j2g&#34;&gt;How to generate BIB file containing only works cited&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/buWUcw&#34;&gt;Numeric style biblatex with citation [1] in mainmatter despite citations in frontmatter?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;other-phd-theses-with-source-code&#34;&gt;Other PhD theses with source code&lt;/h3&gt;
&lt;p&gt;I am far from the first to share the source code of their PhD thesis.
Here are only a few others that have crossed my path:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/LaurentRDC/dissertation&#34;&gt;Laurent P. René de Cotret, McGill University (Markdown and LuaLaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/katrinleinweber/PhD-thesis&#34;&gt;Katrin Leinweber, Universität Konstanz (Markdown and LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/eleurent/phd-thesis&#34;&gt;Edouard Leurent, Université des Sciences et des Technologies de Lille (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Enchufa2/thesis&#34;&gt;Iñaki Ucar, Universidad Carlos III de Madrid (R bookdown)&lt;/a&gt;.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/raphaelvallat/Thesis&#34;&gt;Raphael Vallat, Lyon University (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/malramsay64/phd-thesis&#34;&gt;Malcolm Ramsay, University of Sydney (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Dovyski/phd-thesis&#34;&gt;Fernando Bevilacqua, University of Skövde (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/twhughes/PhD_Thesis&#34;&gt;T. W. Hughes, Stanford University (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/valentjn/thesis-arxiv&#34;&gt;Julian Valentin, University of Stuttgart (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Naereen/phd-thesis&#34;&gt;Lilian Besson, Universite Bretagne Loire (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jilljenn/phd&#34;&gt;Jill-Jênn Vie, Université Paris-Saclay (XeLaTeX &lt;em&gt;or&lt;/em&gt; LuaLaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/FilipDominec/thesis&#34;&gt;Filip Dominec, Czech Technical University (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/yanii/phd-thesis&#34;&gt;Yani Ioannou, University of Cambridge (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/egeerardyn/phdthesis&#34;&gt;Egon Geerardyn, Vrije Universiteit Brussel (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/mbhall88/thesis&#34;&gt;Michael Hall, European Bioinformatics Institute (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/mfherbst/dissertation&#34;&gt;Michael F. Herbst, Ruprecht-Karls-Universität Heidelberg (LaTeX with Python)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codeberg.org/tdido/thesis&#34;&gt;Tomás di Domenico, Università Degli Studi di Padova (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codeberg.org/hbecker/phd&#34;&gt;Henrique Becker, Universidade Federal do Rio Grande do Sul (LaTeX)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/jkjaer/aauLatexTemplates/tree/master/aauPhdCollectionThesis&#34;&gt;Aalborg University LaTeX template collection&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- + http://hankwang.lagom.nl/thesis Han-Kwang Nienhuys, Eindhoven University of Technology --&gt;
&lt;!-- + https://github.com/vrognas/uppsalathesis based on Uppsala University&#39;s XeTeX template (inside its `inst/` directory, packaged as an R package) --&gt;
&lt;p&gt;Most repos on GitHub use the &lt;a href=&#34;https://github.com/topics/phd-thesis&#34;&gt;&lt;code&gt;phd-thesis&lt;/code&gt; tag&lt;/a&gt;,
but so far none of the above repos on Codeberg use any tags.&lt;/p&gt;
&lt;h3 id=&#34;other-thesis-templates&#34;&gt;Other thesis templates&lt;/h3&gt;
&lt;p&gt;It seems every university or college with some self-respect has published
a LaTeX-based thesis template.
Simply too many to list. Below, a non-representative list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://cleanthesis.der-ric.de&#34;&gt;http://cleanthesis.der-ric.de&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://libguides.ub.uu.se/avhandling/latex&#34;&gt;https://libguides.ub.uu.se/avhandling/latex&lt;/a&gt; XeLaTeX template for Uppsala University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/kks32/phd-thesis-template&#34;&gt;https://github.com/kks32/phd-thesis-template&lt;/a&gt; LaTeX/XeLaTeX/LuaLaTeX template for Cambridge University&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ismayc/thesisdown&#34;&gt;https://github.com/ismayc/thesisdown&lt;/a&gt; R Markdown using bookdown&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codeberg.org/slumber/phd-latex-template&#34;&gt;https://codeberg.org/slumber/phd-latex-template&lt;/a&gt; LaTeX template for Université Paris 8 - Vincennes Saint-Denis (poorly documented)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://codeberg.org/bnass/PhD_shared_scripts&#34;&gt;https://codeberg.org/bnass/PhD_shared_scripts&lt;/a&gt; scripts for data management, analysis, visualization&lt;/li&gt;
&lt;/ul&gt;
&lt;section class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Ucar is the author of the awesome &lt;a href=&#34;https://github.com/r-quantities/errors&#34;&gt;&lt;code&gt;errors&lt;/code&gt; package&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description>
    </item>
    
    <item>
      <title>The solar origins of spectroscopy</title>
      <link>//solarchemist.se/2023/04/04/short-history-spectroscopy/</link>
      <pubDate>Tue, 04 Apr 2023 20:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2023/04/04/short-history-spectroscopy/</guid>
      
      <description>


&lt;p&gt;Spectroscopy is of a foundational importance to physical chemistry,
and has been a central fixture in both my own graduate and undergraduate work.
In this post I would like to delineate how the birth of spectroscopy
stemmed from the study of the solar spectrum, and how sunlight will
form the basis of a better global energy conversion system.&lt;/p&gt;
&lt;p&gt;Up until widespread electrification of lighting
(&lt;a href=&#34;https://www.energy.gov/articles/history-light-bulb&#34;&gt;less than 200 years ago&lt;/a&gt;),
daylight was the primary light source (not counting gas lamps, candles, fires, and so on).
Daylight is sunlight filtered through the atmosphere.&lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;
If, for the sake of example, we consider the atmosphere to be constant
(which it most definitely is not, or see &lt;a href=&#34;https://www.countrylife.co.uk/nature/curious-questions-why-do-stars-twinkle-257332&#34;&gt;why star’s twinkle&lt;/a&gt;),
then daylight is simply a function of the Sun’s spectrum attenuated by that constant.&lt;/p&gt;
&lt;p&gt;The scientific study of sunlight began only 200 years ago (more on that below),
but the question of the Sun’s distance to us, its size and age has probably
enagaged all civilizations.&lt;/p&gt;
&lt;!-- Välskriven Wikipedia artikel i ämnet
https://en.wikipedia.org/wiki/Solar_constant
please note that the Wikipedia article appears a little confused and does not equate
the solar constant and TSI (they are the same thing, yes?) --&gt;
&lt;p&gt;The realisation that the Sun must be very far away was made already in antiquity,
most notably by the Hellenic astronomer Posidonius the Syrian who in 90 BC
calculated the distance and was only wrong by less than half &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Henderson1970&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;.
The Sun’s mechanism and age,&lt;a href=&#34;#fn2&#34; class=&#34;footnote-ref&#34; id=&#34;fnref2&#34;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; however, were not correctly determined until
the 20th century and the &lt;a href=&#34;https://astronomy.stackexchange.com/questions/38818/when-did-scientists-discover-that-the-sun-has-a-life-cycle-and-that-it-is-going&#34;&gt;advent of the field of stellar nucleosynthesis&lt;/a&gt;.
&lt;!-- stellar nucleosynthesis figured out by Hans Bethe in 1938 --&gt;
So in a sense, despite living under the same Sun as all our ancestors back to
the beginning of humanity, humans have not been in the privileged position of
knowing what &lt;em&gt;stuff&lt;/em&gt; a star is made of until
quite recently (more recent than the &lt;a href=&#34;https://en.wikipedia.org/wiki/History_of_the_bicycle&#34;&gt;invention of the bike&lt;/a&gt;,
for comparison).&lt;/p&gt;
&lt;div id=&#34;the-beginnings-of-the-science-of-spectroscopy&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The beginnings of the science of spectroscopy&lt;/h2&gt;
&lt;p&gt;The observations of “lines” in sunlight, candle-light and electric light seen through
single prisms by Wollaston in 1802 &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Wollaston1802&#34;&gt;2&lt;/a&gt;]&lt;/span&gt; can, with hindsight, be considered
the beginning of spectroscopy as we know it.
&lt;!-- first step towards understanding that different light sources have not only
different spectral distributions, but also absorption lines unique to their
chemical composition. --&gt;
But his results might well have been forgotten if Fraunhofer had not
made new observations on sunlight 13 years later by adding a telescope to the prism
and slit, observing “almost innumerable strong and weak vertical lines which
however are darker than the other part of the coloured image; some seem to be
almost completely black”&lt;a href=&#34;#fn3&#34; class=&#34;footnote-ref&#34; id=&#34;fnref3&#34;&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;!-- https://commons.wikimedia.org/wiki/File:Fraunhofer_Spektrum_Medium.jpg --&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:fraunhofer-lines&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/Fraunhofer_Spektrum_Medium.jpg&#34; alt=&#34;This copper-etching was made by Fraunhofer himself. It shows the full visible spectrum including the famous Fraunhofer lines[^4], some of them named with letters. Above it is the curve of spectral response of the eye to daylight illumination. [Wikimedia, CC-BY-SA](https://commons.wikimedia.org/wiki/File:Fraunhofer_Spektrum_Medium.jpg).&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: This copper-etching was made by Fraunhofer himself. It shows the full visible spectrum including the famous Fraunhofer lines&lt;a href=&#34;#fn4&#34; class=&#34;footnote-ref&#34; id=&#34;fnref4&#34;&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt;, some of them named with letters. Above it is the curve of spectral response of the eye to daylight illumination. &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Fraunhofer_Spektrum_Medium.jpg&#34;&gt;Wikimedia, CC-BY-SA&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Thanks to Kirchhoff and Bunsen (1859) the relationship&lt;a href=&#34;#fn5&#34; class=&#34;footnote-ref&#34; id=&#34;fnref5&#34;&gt;&lt;sup&gt;5&lt;/sup&gt;&lt;/a&gt; between dark and bright lines
of the same wavelength (absorption vs emission, in modern terms) were understood,
and also the unique correspondence of line wavelength to chemical element, thus
making the spectrum a fixed frame of reference and seeding the ground for the budding field
of astrophysics, a field which bloomed after the Doppler effect was described in 1842.&lt;/p&gt;
&lt;p&gt;A few decades later Anders J. Ångström made an important contribution to spectroscopy
by mapping one thousand absorption lines in the solar spectrum (and was the first
to label the spectrum in units of 10&lt;sup&gt;-10&lt;/sup&gt; m, later named after him) &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Angstrom1868&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;
which was improved on by Rowland who carefully measured 21 thousand lines in 1897.
Modern measurements of the solar spectrum &lt;!-- ref!--&gt; have shown that
at least 62 elements are certainly present in the Sun’s atmosphere.
&lt;!-- % why did it say &#34;terrestrial elements&#34;? Can&#39;t be many elements not present on Earth?
% this table (more recent, but just a webpage) says 67 elements:
% http://hyperphysics.phy-astr.gsu.edu/hbase/Tables/suncomp.html --&gt;
Considering that by mass 98.4 % of the sun consists of just hydrogen and helium,&lt;a href=&#34;#fn6&#34; class=&#34;footnote-ref&#34; id=&#34;fnref6&#34;&gt;&lt;sup&gt;6&lt;/sup&gt;&lt;/a&gt;
that’s a large variation of heavier elements.&lt;/p&gt;
&lt;p&gt;These discoveries all concerned the visible part of the spectrum.
But after the development of the optical prism (by the 19th century) scientists
began to expand the spectrum beyond visible light: Herschel discovered
the infrared part of the solar spectrum in 1800, and Ritter discovered the
ultraviolet one a year later. Both spectral regions were found to contain
more absorption lines.&lt;/p&gt;
&lt;p&gt;The method of detecting and recording one’s observed spectrum improved over the
years and was tightly interwoven with the &lt;a href=&#34;https://www.britannica.com/technology/photography/Photographys-early-evolution-c-1840-c-1900&#34;&gt;development of photography&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today we have the line spectra of all naturally occuring elements available
at our fingertips from a variety of tools, here for example the LaTeX &lt;code&gt;pgf-spectra&lt;/code&gt;
package &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Gomes2023&#34;&gt;5&lt;/a&gt;]&lt;/span&gt; which builds on spectral data from NIST:&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:sodium-emission-lines&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/pgf-spectra/sodium.png&#34; alt=&#34;Emission lines of sodium in the visible spectrum.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 2: Emission lines of sodium in the visible spectrum.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;sunlight-above-and-below-the-atmosphere&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Sunlight above and below the atmosphere&lt;/h2&gt;
&lt;p&gt;Whereas the spectral composition of daylight varies dramatically with
season, location and time of day, the &lt;em&gt;amount&lt;/em&gt; of sunlight that reaches
the top of Earth’s atmosphere
(i.e., the total solar irradiance, TSI, previously known as the &lt;em&gt;solar constant&lt;/em&gt;)
has been experimentally shown to be practically constant over time, and
any variations are certainly not enough to account for the rise in
mean global surface temperature observed since the industrial revolution.&lt;/p&gt;
&lt;p&gt;The first experimental observations in the modern sense of the solar constant (i.e., TSI)
were made in the early 19th century by Herschel and Poillet using their newly
invented actinometer and pyrheliometer, respectively.
They were soon followed by John Ericsson, who invented
what he called a “solar calorimeter” that improved on the earlier devices by
taking the atmospheric column above the measurement into better account and arrived
at a value of 7.11 BTU&lt;a href=&#34;#fn7&#34; class=&#34;footnote-ref&#34; id=&#34;fnref7&#34;&gt;&lt;sup&gt;7&lt;/sup&gt;&lt;/a&gt; per minute per square foot of surface at the boundary
of the atmosphere &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-McVeigh1983&#34;&gt;6&lt;/a&gt;]&lt;/span&gt;, which is equivalent to
&lt;span class=&#34;math inline&#34;&gt;\(\SI{1332}{\watt\per\square\metre}\)&lt;/span&gt; and very close to the modern value.&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:solar-spectrum&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2023/04/04/short-history-spectroscopy/index_files/figure-html/solar-spectrum-1.svg&#34; alt=&#34;Solar irradiation at the top of the atmosphere (AM0, yellow area) and at sea level (AM1.5G, red area), as well as the solar irradiance modelled as a black body (black curve). Also shown is the total irradiance for each of the UV, Vis, and NIR spectral regions for the AM0 and AM1.5G spectra.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 3: Solar irradiation at the top of the atmosphere (AM0, yellow area) and at sea level (AM1.5G, red area), as well as the solar irradiance modelled as a black body (black curve). Also shown is the total irradiance for each of the UV, Vis, and NIR spectral regions for the AM0 and AM1.5G spectra.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Since 1978, solar irradiance above the Earth’s atmosphere is continuously measured
by satellite-based radiometers, which is then &lt;em&gt;averaged over the year&lt;/em&gt; and
corrected to a distance of exactly 1 AU to yield the TSI.
Indeed, one of the reasons the “solar constant” was renamed to TSI is that it is not
really constant, but changes depending on solar output, which varies mainly with
the solar sunspot cycle (which goes from minimum to maximum magnetic activity in
11-year cycles).
The last solar minimum was in 2022, and TSI during the preceding
minimum in 2011 was &lt;span class=&#34;math inline&#34;&gt;\(\SI{1360.8\pm0.5}{\watt\per\square\metre}\)&lt;/span&gt; &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kopp2011&#34;&gt;7&lt;/a&gt;]&lt;/span&gt;.
But note that whereas the solar irradiance at the top of Earth’s atmosphere varies
quite a lot depending on several periodic phenonema of varying timescales,
TSI varies very little.
For example, TSI shows less than 0.2 % variation due to the sunspot cycle &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kopp2018&#34;&gt;8&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Below the atmosphere, that is, on the ground we (that is, in the photovoltaic field)
almost always resort to the ASTM G173-03 solar reference spectra, which give us
a full solar spectrum (250 nm–4000 nm) depending primarily on
&lt;a href=&#34;https://htmlpreview.github.io/?https://github.com/solarchemist/photoec/blob/master/doc/airmass.html&#34;&gt;the air mass&lt;/a&gt;,
which is a convenient way to express latitude.
Of course, more detailed models exist, but for the purpose of scientific reports
such international standards are really all that is needed.&lt;/p&gt;
&lt;!-- ## Untangling some terminology --&gt;
&lt;!-- Get back to this section later, when time allows --&gt;
&lt;/div&gt;
&lt;div id=&#34;notes-and-links&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Notes and links&lt;/h2&gt;
&lt;p&gt;If you are interested in the physics of daylight and the history of its study
I can recommend the treatise by Henderson &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Henderson1970&#34;&gt;1&lt;/a&gt;]&lt;/span&gt; (a book which might be hard to find, though).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.britannica.com/science/spectroscopy&#34;&gt;Spectroscopy, Britannica&lt;/a&gt;. A remarkably comprehensive article.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://skullsinthestars.com/2023/07/05/what-is-the-mossbauer-effect&#34;&gt;What is the Mössbauer effect?, Skulls in the Stars (2023)&lt;/a&gt;. Great explainer of absorption/emission in atoms.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wallifaction.tumblr.com/post/83007572725/invisible-light-prism-experiments-through-the&#34;&gt;Invisible light: prism experiments through the centuries&lt;/a&gt;, Wallifaction (2014)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://w.chemteam.info/Electrons/Spectrum-History.html&#34;&gt;A brief (incomplete) history of light and spectra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Electrification&amp;amp;oldid=1172937576&#34;&gt;Electrification, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pudding.cool/2020/12/lighting-cost&#34;&gt;The historical cost of light&lt;/a&gt;
&lt;!-- https://links.solarchemist.se/shaare/vWEspA --&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://imagine.gsfc.nasa.gov/educators/lessons/xray_spectra/background-spectroscopy.html&#34;&gt;Introduction to spectroscopy&lt;/a&gt;, NASA&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chem.libretexts.org/Bookshelves/Analytical_Chemistry/Physical_Methods_in_Chemistry_and_Nano_Science_(Barron)/04%3A_Chemical_Speciation/4.04%3A_UV-Visible_Spectroscopy&#34;&gt;UV-visible spectroscopy&lt;/a&gt;, LibreTexts Chemistry&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Actinometer&amp;amp;oldid=1174815758&#34;&gt;Actinometer, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Pyrheliometer&amp;amp;oldid=1174815332&#34;&gt;Pyrheliometer, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Angstrom&amp;amp;oldid=1176454514&#34;&gt;Ångström, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Spectroscopy&amp;amp;oldid=1174181537&#34;&gt;Spectroscopy, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=History_of_spectroscopy&amp;amp;oldid=1174796267&#34;&gt;History of spectroscopy, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Air_mass_(solar_energy)&amp;amp;oldid=1174032834&#34;&gt;Air mass (solar energy), Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.spie.org/publications/fg08_p02_spectrometerspectroscopespectrograph&#34;&gt;Spectrometer, spectroscope, and spectrograph&lt;/a&gt;, excerpt from Field Guide to Spectroscopy &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Ball2006&#34;&gt;9&lt;/a&gt;]&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Spectrophotometry&amp;amp;oldid=1171113806&#34;&gt;Spectrophotometry, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chem.libretexts.org/Bookshelves/Physical_and_Theoretical_Chemistry_Textbook_Maps/Supplemental_Modules_(Physical_and_Theoretical_Chemistry)/Kinetics/02%3A_Reaction_Rates/2.01%3A_Experimental_Determination_of_Kinetics/2.1.05%3A_Spectrophotometry&#34;&gt;Spectrophotometry, LibreTexts Chemistry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://physics.nist.gov/PhysRefData/Handbook/Tables/findinglist.htm&#34;&gt;Atomic spectroscopic data, NIST&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lasp.colorado.edu/sorce/data/tsi-data&#34;&gt;Total solar irradiance data&lt;/a&gt;,
Laboratory for Atmospheric and Space Physics, University of Colorado Boulder (2020)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.azom.com/article.aspx?ArticleID=13871&#34;&gt;Using spectroscopy for solar irradiance and UV measurements&lt;/a&gt;, AZO Materials (2017)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.nasa.gov/mission_pages/sdo/science/solar-irradiance.html&#34;&gt;Solar irradiance&lt;/a&gt;, ed. Rob Garner, NASA (2017)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.nrel.gov/docs/gen/fy04/36831p.pdf&#34;&gt;Solar radiation measurements&lt;/a&gt;,
presentation slides (PDF) from workshop for the National Association of State Universities and
Land Grant Colleges, Tom Stoffel and Steve Wilcox, NREL (2004)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.laserfocusworld.com/test-measurement/test-measurement/article/16553008/photovoltaics-enhancements-enable-solar-simulators-to-shed-light-on-new-photovoltaic-designs&#34;&gt;Enhancements enable solar simulators to shed light on new photovoltaic designs&lt;/a&gt;, Jay Jeong (2007)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://andor.oxinst.com/learning/view/article/what-is-an-optical-spectrometer&#34;&gt;What is an optical spectrometer?&lt;/a&gt;,
West and Harrell, Oxford Instruments (2022)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;div style=&#34;border: 2px solid #0066CC; padding-left: 0px; padding-top: 0px; background-color:  #ffffe6; color: black;&#34;&gt;
&lt;pre&gt;&lt;code&gt;## Linux 5.15.0-78-generic #85-Ubuntu SMP Fri Jul 7 15:25:09 UTC 2023 x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.1.3 (2022-03-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 22.04.3 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=sv_SE.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] bandgaps_0.1.1.9000 photoec_0.4.2.9000  common_0.1.2        stringr_1.4.0      
##  [5] dplyr_1.0.10        tibble_3.1.8        tidyr_1.2.1         ggplot2_3.3.6      
##  [9] knitr_1.39          git2r_0.30.1        here_1.0.1          conflicted_1.1.0   
## 
## loaded via a namespace (and not attached):
##  [1] tidyselect_1.2.0 xfun_0.31        bslib_0.4.0      purrr_0.3.5     
##  [5] colorspace_2.0-3 vctrs_0.5.1      generics_0.1.3   htmltools_0.5.3 
##  [9] yaml_2.3.5       utf8_1.2.2       rlang_1.0.6      jquerylib_0.1.4 
## [13] pillar_1.8.1     glue_1.6.2       withr_2.5.0      DBI_1.1.3       
## [17] lifecycle_1.0.3  munsell_0.5.0    blogdown_1.10    gtable_0.3.0    
## [21] memoise_2.0.1    evaluate_0.15    labeling_0.4.2   fastmap_1.1.0   
## [25] fansi_1.0.3      highr_0.9        scales_1.2.0     cachem_1.0.6    
## [29] jsonlite_1.8.0   farver_2.1.1     digest_0.6.29    stringi_1.7.8   
## [33] bookdown_0.27    grid_4.1.3       rprojroot_2.0.3  cli_3.4.1       
## [37] tools_4.1.3      magrittr_2.0.3   sass_0.4.2       crayon_1.5.1    
## [41] pkgconfig_2.0.3  ellipsis_0.3.2   assertthat_0.2.1 rmarkdown_2.16  
## [45] R6_2.5.1         compiler_4.1.3&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Commit:  ec42cbcbc2cd1968feedcfe4b13f4f15d76c32e9
## Author:  taha@luxor &amp;lt;taha@chepec.se&amp;gt;
## When:    2023-10-09 20:58:44 GMT
## 
##      Added a link.
##      
## 1 file changed, 2 insertions, 1 deletions
## index.Rmd | -1 +2  in 1 hunk&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## working directory clean&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body&#34;&gt;
&lt;div id=&#34;ref-Henderson1970&#34; class=&#34;csl-entry&#34;&gt;
[1] Henderson, S.T., &lt;em&gt;Daylight and its spectrum&lt;/em&gt;, &lt;span&gt;New York&lt;/span&gt;, &lt;span&gt;Elsevier&lt;/span&gt;, 1970.
&lt;/div&gt;
&lt;div id=&#34;ref-Wollaston1802&#34; class=&#34;csl-entry&#34;&gt;
[2] Wollaston, W.H., &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1098/rstl.1802.0014&#34;&gt;&lt;span&gt;XII&lt;/span&gt;. &lt;span&gt;A&lt;/span&gt; method of examining refractive and dispersive powers, by prismatic reflection&lt;/a&gt;&lt;/em&gt;, Philosophical Transactions of the Royal Society of London, v. 92, pp. 365–380, Jan. 1802.
&lt;/div&gt;
&lt;div id=&#34;ref-Angstrom1868&#34; class=&#34;csl-entry&#34;&gt;
[3] Ångström, A.J., &lt;em&gt;Recherches sur le spectre solaire&lt;/em&gt;, &lt;span&gt;Uppsala&lt;/span&gt;, &lt;span&gt;W. Schultz&lt;/span&gt;, 1868.
&lt;/div&gt;
&lt;div id=&#34;ref-Murdin2001&#34; class=&#34;csl-entry&#34;&gt;
[4] Murdin, P. (ed), &lt;em&gt;Encyclopedia of astronomy &amp;amp; astrophysics&lt;/em&gt;, &lt;span&gt;Boca Raton&lt;/span&gt;, &lt;span&gt;CRC Press&lt;/span&gt;, 2001.
&lt;/div&gt;
&lt;div id=&#34;ref-Gomes2023&#34; class=&#34;csl-entry&#34;&gt;
[5] Gomes, H., &lt;span&gt;“&lt;a href=&#34;https://ctan.org/pkg/pgf-spectra&#34;&gt;Pgf-spectra: &lt;span&gt;Draw&lt;/span&gt; continuous or discrete spectra using &lt;span&gt;PGF&lt;/span&gt;/&lt;span&gt;TikZ&lt;/span&gt;&lt;/a&gt;,”&lt;/span&gt; 27-Apr-2023.
&lt;/div&gt;
&lt;div id=&#34;ref-McVeigh1983&#34; class=&#34;csl-entry&#34;&gt;
[6] McVeigh, J.C., &lt;em&gt;Sun power: An introduction to the applications of solar energy&lt;/em&gt;, 2nd ed., &lt;span&gt;Oxford&lt;/span&gt;, &lt;span&gt;Pergamon&lt;/span&gt;, 1983.
&lt;/div&gt;
&lt;div id=&#34;ref-Kopp2011&#34; class=&#34;csl-entry&#34;&gt;
[7] Kopp, G., Lean, J.L., &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1029/2010GL045777&#34;&gt;A new, lower value of total solar irradiance: Evidence and climate significance&lt;/a&gt;&lt;/em&gt;, Geophysical Research Letters, v. 38, n. 1, Jan. 2011.
&lt;/div&gt;
&lt;div id=&#34;ref-Kopp2018&#34; class=&#34;csl-entry&#34;&gt;
[8] Kopp, G., &lt;span&gt;“&lt;a href=&#34;https://doi.org/10.1016/B978-0-12-409548-9.10366-5&#34;&gt;5.02 - &lt;span&gt;Earth&lt;/span&gt;’s incoming energy: The total solar irradiance&lt;/a&gt;,”&lt;/span&gt; In: Liang, S. (ed), &lt;em&gt;Comprehensive &lt;span&gt;Remote Sensing&lt;/span&gt;&lt;/em&gt;, &lt;span&gt;Oxford&lt;/span&gt;, &lt;span&gt;Elsevier&lt;/span&gt;, pp. 32–66, 2018.
&lt;/div&gt;
&lt;div id=&#34;ref-Ball2006&#34; class=&#34;csl-entry&#34;&gt;
[9] Ball, D.W., &lt;em&gt;&lt;a href=&#34;https://www.spie.org/Publications/Book/682726&#34;&gt;Field guide to spectroscopy&lt;/a&gt;&lt;/em&gt;, v. FG08, &lt;span&gt;Bellingham, Washington USA&lt;/span&gt;, &lt;span&gt;SPIE Press&lt;/span&gt;, 2006.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes footnotes-end-of-document&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;In the UV to NIR spectral range the atmosphere can be considered a combination
of multiple band-stop filters, where different compounds block specific wavelengths
(see &lt;a href=&#34;https://en.wikipedia.org/wiki/Atmospheric_window&#34;&gt;atmospheric window&lt;/a&gt;).&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn2&#34;&gt;&lt;p&gt;The realisation that the Sun must be very far away from us was much easier to grasp
than the mechanism that powered it, and by extension, its age.
Famously, even Lord Kelvin held firm to the view that the Sun was at most a few hundred
million years old, despite many of his contemporaries arguing that it was necessarily much older
(in fairness, fusion was unknown at the time).&lt;a href=&#34;#fnref2&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn3&#34;&gt;&lt;p&gt;The quote is from &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Henderson1970&#34;&gt;1, p. 9&lt;/a&gt;]&lt;/span&gt;.
Wollaston’s paper (in the original German) can be
&lt;a href=&#34;https://archive.org/details/denkschriftende01wissgoog/page/n319/mode/2up&#34;&gt;read at the Internet Archive&lt;/a&gt;.
For a more accessible source,
&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Joseph_von_Fraunhofer&amp;amp;oldid=1159110619#Notes&#34;&gt;see the notes in the Wikipedia article&lt;/a&gt;.&lt;a href=&#34;#fnref3&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn4&#34;&gt;&lt;p&gt;Fraunhofer lines, i.e., the black spectral lines seen when sunlight is
split in a spectrometer, formed due to absorption by various atom species in
the gaseous state in the Sun’s atmosphere.&lt;a href=&#34;#fnref4&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn5&#34;&gt;&lt;p&gt;Stokes independently discovered this principle but never
claimed any credit &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Henderson1970&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;. And Foucault had observed both emission and
absorption lines of sodium in a flame (the latter by placing a bright arc behind
the flame) but never pursued the subject further.&lt;a href=&#34;#fnref5&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn6&#34;&gt;&lt;p&gt;This was only realised in 1925 by Cecilia Payne-Gaposchkin in her doctoral thesis,
which primarily dealt with how the large variations in absorption line strength
(from star to star) in stellar spectra was due to differing temperatures and not
chemical composition &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Murdin2001&#34;&gt;4&lt;/a&gt;]&lt;/span&gt;.
Incidentally, her data also demonstrated a clear abundance of hydrogen and helium in the sun,
but she did not quite believe her own analysis on that point, writing
&lt;a href=&#34;https://archivebox.chepec.se/archive/1687037010.732476/www.coursehero.com/study-guides/astronomy/the-structure-and-composition-of-the-sun.html&#34;&gt;“the enormous abundance derived for these elements in the stellar atmosphere is
almost certainly not real”&lt;/a&gt;.&lt;a href=&#34;#fnref6&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn7&#34;&gt;&lt;p&gt;BTU, &lt;em&gt;British thermal unit&lt;/em&gt;, is a non-SI unit that is no longer used in science
but still finds use in the fossil fuel sector. Converting from it to kWh is not
straightforward (depends on whether the kWh was produced from combustible or non-combustible
generation method). The International Energy Agency recently
&lt;a href=&#34;https://www.eia.gov/totalenergy/data/monthly/change&#34;&gt;updated its recommended conversion factor&lt;/a&gt;.
&lt;!-- https://www.eia.gov/totalenergy/data/monthly/pdf/MER_E.pdf --&gt;
&lt;!-- via https://gaussling.wordpress.com/2023/09/26/eia-releases-new-btu-to-kwh-energy-conversion-factor --&gt;&lt;a href=&#34;#fnref7&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>About</title>
      <link>//solarchemist.se/about/</link>
      <pubDate>Mon, 20 Feb 2023 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/about/</guid>
      
      <description>&lt;p&gt;Welcome to my corner of the web!
My name is &lt;a href=&#34;//solarchemist.se/contact&#34;&gt;Taha Ahmed&lt;/a&gt; and I&amp;rsquo;m the author of this site.&lt;/p&gt;
&lt;p&gt;I like the idea of giving back to the community by building on/with free software
and free knowledge in general, and as such I take every opportunity to promote
open science, open data, and open source.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;
All of which is made possible by the open web.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;I maintain many &lt;a href=&#34;https://blog.ssdnodes.com/blog/what-is-self-hosting&#34;&gt;self-hosted&lt;/a&gt;
services, here are some I would like to mention:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;my &lt;a href=&#34;https://links.solarchemist.se/&#34;&gt;linkblog&lt;/a&gt; where I share interesting tidbits
I&amp;rsquo;ve encountered while browsing the web (sometimes with commentary).
You can subscribe to it using &lt;a href=&#34;https://links.solarchemist.se/feed/atom&#34;&gt;its RSS feed&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;my &lt;a href=&#34;https://git.solarchemist.se&#34;&gt;self-hosted Gitea instance&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;my &lt;a href=&#34;https://shiny.solarchemist.se&#34;&gt;public Shiny server&lt;/a&gt;.
If you work with UV-Vis spectroscopy of semiconductors, check out
my &lt;a href=&#34;https://shiny.solarchemist.se/uvvistauc-reactive/&#34;&gt;Tauc fit evaluator&lt;/a&gt;.
I have written a &lt;a href=&#34;//solarchemist.se/2014/07/17/installing-shiny/&#34;&gt;how-to install Shiny&lt;/a&gt;, but
that post should really be updated&amp;hellip;&lt;/li&gt;
&lt;li&gt;a few RStudio Server instances (primarily for my own use).
I have an old &lt;a href=&#34;//solarchemist.se/2019/01/20/rstudio-server-multiple-instances-kvm/&#34;&gt;write-up on that setup&lt;/a&gt;
(they are now run in LXC containers managed entirely via Ansible playbook, so the config
described in that post is woefully out-dated&amp;hellip;).&lt;/li&gt;
&lt;li&gt;a &lt;a href=&#34;https://jupyter.org/&#34;&gt;JupyterHub&lt;/a&gt; instance for my own use, which I&amp;rsquo;ve setup with Python,
Julia and R kernels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The site header contains links to some of my web profiles
(I try to use only libre services, but it&amp;rsquo;s a work in progress :-), and here
are some more of them that did not make it into the header:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://figshare.com/authors/Taha_Ahmed/279037&#34;&gt;figshare.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://impactstory.org/u/solarchemist&#34;&gt;impactstory.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.reddit.com/u/solarchemist&#34;&gt;reddit.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The source code of this blog (including that of the blog posts themselves) is
&lt;a href=&#34;https://codeberg.org/taha/solarchemist.se&#34;&gt;hosted on codeberg.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have chosen not to use a regular comment system for this blog.
Instead I&amp;rsquo;d like to encourage you, dear reader, to use &lt;a href=&#34;https://hypothes.is&#34;&gt;hypothes.is&lt;/a&gt;
which effectively provides an &lt;em&gt;annotation layer for the web&lt;/em&gt;.
You&amp;rsquo;ll see a sidebar to the right &amp;mdash; open it to annotate!
Please note that I have &lt;strong&gt;no control&lt;/strong&gt; over the content of these annotations,
it&amp;rsquo;s up to you and other web users whether to enable this annotation layer or not.
It&amp;rsquo;s possible to receive all annotations made on this blog by subscribing to
&lt;a href=&#34;https://hypothes.is/stream.atom?wildcard_uri=https://solarchemist.se/*&#34;&gt;this customised hypothes.is stream (Atom feed)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You may of course also send me comments via email or any of the channels listed above.&lt;/p&gt;
&lt;!--
    original URL is no longer working
    http://www.iasc-culture.org/THR/THR_article_2018_Spring_Jacobs.php
    the full text can be found in some other places on the web
    unfortunately the hedgehog review itself has moved the essay behind a paywall
    https://hedgehogreview.com/issues/the-human-and-the-digital/articles/tending-the-digital-commons
--&gt;
&lt;section class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;See, for example: &lt;a href=&#34;https://wallabag.chepec.se/share/61108bd298b9f1.94166093&#34;&gt;Alan Jacobs, Tending the Digital Commons: A Small Ethics toward the Future. The Hedgehog Review: Vol. 20 No. 1 (Spring 2018).&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Interested in the subject? A couple of excellent essays, both by Parimal Satyal:
&lt;a href=&#34;https://neustadt.fr/essays/the-small-web/&#34;&gt;Rediscovering the small web&lt;/a&gt;, and
&lt;a href=&#34;https://neustadt.fr/essays/against-a-user-hostile-web/&#34;&gt;Against an increasingly user-hostile web&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description>
    </item>
    
    <item>
      <title>Notes on Kelvin probe microscopy</title>
      <link>//solarchemist.se/2022/11/04/kelvin-probe-intro/</link>
      <pubDate>Fri, 04 Nov 2022 20:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2022/11/04/kelvin-probe-intro/</guid>
      
      <description>


&lt;p&gt;I was fortunate to get to familiarise myself with our research group’s state-of-the-art
Kelvin probe for a graduate research project I was part of.
On a very broad level, The Kelvin probe (KP) is a method that allows the experimenter to correlate the
Fermi level of the sample to the &lt;a href=&#34;//solarchemist.se/2016/11/24/reference-electrodes&#34;&gt;absolute reference electrode scale&lt;/a&gt;,
which is a useful thing for solar cells and many other kinds of materials.&lt;/p&gt;
&lt;p&gt;In this blog post, which is a distillate of a longer note I wrote in
my electronic labnotebook a while ago, I will give a short introduction to KP
from a beginning experimenter’s perspective.
Note that this post is limited to Kelvin probe microscopy, and does not discuss
Kelvin probe force microscopy (except perhaps in passing).&lt;/p&gt;
&lt;p&gt;At the &lt;a href=&#34;#notes-and-links&#34;&gt;end of this post&lt;/a&gt; we have collected some links to other
KP resources on the web.&lt;/p&gt;
&lt;div id=&#34;history-of-the-kelvin-probe-technique&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;History of the Kelvin probe technique&lt;/h3&gt;
&lt;p&gt;The Kelvin probe method was first demonstrated in 1898 by Lord Kelvin &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kelvin1898&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;.
The two plates forming a capacitor were repeatedly moved by hand. Kelvin and his
contemporaries used the instrument mainly to study the “contact electrification” of metals.&lt;/p&gt;
&lt;p&gt;The next major improvement was in 1928 when Zisman developed a way to automatically
vibrate one of the metal plates (“for hours”) by way of an air blast pointed at
a piano wire &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Zisman1932&#34;&gt;2&lt;/a&gt;]&lt;/span&gt;.
The work was part of Zisman’s masters thesis at MIT, and published a few years later.&lt;/p&gt;
&lt;p&gt;I think the study of the operation of the forebears of scientific instruments can
be very helpful in understanding their modern counterparts. So, here I will devote
a few lines to go through the operation of an early version of the Kelvin probe
(mainly based on Zeisman’s paper).&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:kelvin-probe-Zisman1932&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/kelvin-probe-Zisman1932-plain.svg&#34; alt=&#34;Electric circuit diagram I made of a manually operated Kelvin probe based on a sketch in @Zisman1932. The &amp;quot;tip&amp;quot; (labelled **A**) and the specimen (**B**) form a capacitor. The capacitor is connected to a potentiometer (a variable resistor and battery) via switch **S~2~**, and to an electrometer via switch **S~1~**. This diagram represents the most common way of measuring the contact potential difference (CPD) *before* the introduction of Zisman&#39;s vibrating plate. We can use this diagram to better understand the operation of a modern Kelvin probe.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: Electric circuit diagram I made of a manually operated Kelvin probe based on a sketch in &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Zisman1932&#34;&gt;2&lt;/a&gt;]&lt;/span&gt;. The “tip” (labelled &lt;strong&gt;A&lt;/strong&gt;) and the specimen (&lt;strong&gt;B&lt;/strong&gt;) form a capacitor. The capacitor is connected to a potentiometer (a variable resistor and battery) via switch &lt;strong&gt;S&lt;sub&gt;2&lt;/sub&gt;&lt;/strong&gt;, and to an electrometer via switch &lt;strong&gt;S&lt;sub&gt;1&lt;/sub&gt;&lt;/strong&gt;. This diagram represents the most common way of measuring the contact potential difference (CPD) &lt;em&gt;before&lt;/em&gt; the introduction of Zisman’s vibrating plate. We can use this diagram to better understand the operation of a modern Kelvin probe.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The experimenter can monitor the charge on &lt;strong&gt;A&lt;/strong&gt; using the electrometer
(given that &lt;strong&gt;S&lt;sub&gt;1&lt;/sub&gt;&lt;/strong&gt; is closed, of course).
If electrode &lt;strong&gt;A&lt;/strong&gt; is moved &lt;em&gt;away&lt;/em&gt; from &lt;strong&gt;B&lt;/strong&gt; (i.e., increasing the distance),
the capacity of the capacitor &lt;strong&gt;AB&lt;/strong&gt; will &lt;em&gt;decrease&lt;/em&gt; and an electric charge will
be transferred to the electrometer causing its readout to change.&lt;/p&gt;
&lt;p&gt;Now let’s assume that we keep &lt;strong&gt;S&lt;sub&gt;1&lt;/sub&gt;&lt;/strong&gt; open, but close &lt;strong&gt;S&lt;sub&gt;2&lt;/sub&gt;&lt;/strong&gt; and set the potentiometer
so that the CPD is precisely counter-acted. We would then have neutralised the charge
between &lt;strong&gt;A&lt;/strong&gt; and &lt;strong&gt;B&lt;/strong&gt;, and if we now open &lt;strong&gt;S&lt;sub&gt;2&lt;/sub&gt;&lt;/strong&gt; and close &lt;strong&gt;S&lt;sub&gt;1&lt;/sub&gt;&lt;/strong&gt; again, the
electrometer should no longer display a changing readout when we move the two plates
away from each other.&lt;/p&gt;
&lt;p&gt;So by gradually increasing the distance between &lt;strong&gt;A&lt;/strong&gt; and &lt;strong&gt;B&lt;/strong&gt;, while determining
the CPD and electrometer readout for each distance (an admittedly laborious process),
we could note at which applied potential difference the charge displays a minimum
(ideally it becomes zero) and that’s our CPD.
Of course, happening to distance the plates precisely at the zero-charge point is
quite unlikely, so a slightly better method is to plot the electrometer readout
against the applied potential difference – the intercept on the axis along which
we plot the potential difference will then be the CPD.&lt;/p&gt;
&lt;p&gt;The major achievement of Zisman’s vibrating setup was that it made away with the
whole process of moving the plates by hand, by exploiting the fact that periodically
(and uniformly) vibrating capacitor plates will give rise to a steady AC current
whose amplitude will depend on the capacitance (i.e., charge) on said capacitor,
with both the capacity and the AC current being zero at the point where the
applied potential difference balances the CPD.&lt;/p&gt;
&lt;p&gt;Zisman’s setup also replaced the electrometer readout with speakers, that emitted
a sound until the applied potential difference balanced the CPD, at which point
they went silent. This way a measurement merely consisted of balancing the resistance
on the potentiometer until no sound was heard, which could be accomplished by the
experimenter in a matter of seconds.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;the-contact-potential-difference-cpd&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The contact potential difference (CPD)&lt;/h2&gt;
&lt;p&gt;The existence of a contact potential difference between two dissimilar metals was
discovered by Volta in 1801 (“Volta’s electromotive force of contact”, according to &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kelvin1898&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;),
you will therefore sometimes find authors preferring to call it the Volta potential difference.&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:energy-levels&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/two-conducting-samples-energy-levels.png&#34; alt=&#34;Left: two different metals in proximity, no electrical circuit between them. Center: now with an external electrical circuit connecting them. The two surfaces become equally and oppositely charged. Right: introducing a variable electromotive force (EMF) in the external circuit allows us to nullify the electric field, effectively measuring it. Image reproduced from a KP Technology manual.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 2: Left: two different metals in proximity, no electrical circuit between them. Center: now with an external electrical circuit connecting them. The two surfaces become equally and oppositely charged. Right: introducing a variable electromotive force (EMF) in the external circuit allows us to nullify the electric field, effectively measuring it. Image reproduced from a KP Technology manual.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The left panel of figure &lt;a href=&#34;#fig:energy-levels&#34;&gt;2&lt;/a&gt; shows two different metals in close proximity,
but isolated (without electrical contact between them). Dissimilar metals will have
different work functions (&lt;span class=&#34;math inline&#34;&gt;\(\phi_1\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(\phi_2\)&lt;/span&gt;) and their Fermi levels are thus not
aligned (&lt;span class=&#34;math inline&#34;&gt;\(\varepsilon_1\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(\varepsilon_2\)&lt;/span&gt;).
This system acts like a parallel plate capacitor, where the capacitance is equal
to the ratio of the amount of charge to the potential difference,&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
C = \frac{Q}{\Delta V}
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;and the capacitance is also inversely proportional to the distance between the
two surfaces&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
C = \varepsilon_\text{r}\varepsilon_\text{0}\frac{A}{d}
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In the center panel of figure &lt;a href=&#34;#fig:energy-levels&#34;&gt;2&lt;/a&gt; the metals are now connected via
an external circuit, causing electrons to flow from the metal with the smaller
work function to that with the larger work function. This causes the smaller
work function metal to charge positively and the larger work function metal to
charge negatively.
This charge-separation across the metal-metal interface is driven by the
work function difference, and the charge-separation buildup stops once the
created electric field (due to the charge-separation) compensates for the
work function difference.
At this equilibrated state, the Fermi levels of both metals are equal
(&lt;span class=&#34;math inline&#34;&gt;\(\varepsilon_1 = \varepsilon_2\)&lt;/span&gt;), and the so-called &lt;em&gt;contact potential&lt;/em&gt;,
&lt;span class=&#34;math inline&#34;&gt;\(V_\text{c}\)&lt;/span&gt;, between the electrodes exactly equals the work function difference.&lt;/p&gt;
&lt;p&gt;The right panel of figure &lt;a href=&#34;#fig:energy-levels&#34;&gt;2&lt;/a&gt; shows that by introducing a variable
EMF in the external circuit, we can find the potential at which the contact potential
is nulled (i.e., where &lt;span class=&#34;math inline&#34;&gt;\(V_\text{b} = -V_\text{c}\)&lt;/span&gt;).
This is called the &lt;em&gt;backing potential&lt;/em&gt; (or sometimes the counter potential) and
forms the basis for the operation of a Kelvin probe.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;the-work-function&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The work function&lt;/h2&gt;
&lt;p&gt;As we have already seen, Lord Kelvin demonstrated that a potential is generated
between two conductors when they are brought into contact (electrons in the material
with the lower work function flow to the one with the higher work function).
This contact potential difference (CPD) depends on the work function of the
two materials in contact:&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
V_\text{CPD} = \frac{\phi_\text{tip} - \phi_\text{sample}}{e} = \frac{\Delta\phi}{e}
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;where &lt;span class=&#34;math inline&#34;&gt;\(\phi_\text{tip}\)&lt;/span&gt; is the work function of the tip of the Kelvin probe, and
&lt;span class=&#34;math inline&#34;&gt;\(\phi_\text{sample}\)&lt;/span&gt; is the work function of the sample.&lt;/p&gt;
&lt;p&gt;So, what is the work function? In short, the &lt;em&gt;work function&lt;/em&gt; is the amount of
energy needed to release electrons from the material.
More stringently, the work function is defined as &lt;strong&gt;the minimum work that is required
to extract an electron from within the sample to a position just outside the sample&lt;/strong&gt;
(carrying zero kinetic energy).&lt;/p&gt;
&lt;p&gt;“Just outside the sample” is far enough from the sample surface that the electron
is outside the surface dipole layer (which translates to a few nanometers).
&lt;!--
  &gt; Electrons are naturally bound to the solid. At the surface of the material,
  &gt; they are prevented to escape (to the vacuum) by an energy barrier that culminates
  &gt; at the vacuum level ($E_\text{VAC}$). The standard definition of $E_\text{VAC}$
  &gt; is the energy level of an electron positioned at rest within a &#34;few nanometres&#34;
  &gt; outside the solid, i.e. with zero kinetic energy with respect to the sample surface.
  &gt; [...]
  &gt; Also known as the local vacuum level, $E_\text{VAC}$ is strongly influenced by
  &gt; the nature of the surface [...].
  &gt; It is to be distinguished from the vacuum level at infinity ($E_\text{VAC}(\infty)$),
  &gt; which corresponds to the energy of an electron at rest far away from any solid surface.
  &gt; --- Kahn2015 --&gt;
For an uncharged sample the energy of “just outside the sample” and very far from it
(i.e., “at infinity”) are the same, and equivalent to the vacuum level, &lt;span class=&#34;math inline&#34;&gt;\(E_\text{VAC}\)&lt;/span&gt;.
Note that there is a possible source of confusion here, as some authors denote
the “just outside the sample” position as the “vacuum level” and the “at infinity”
position as the “vacuum level at infinity” (this latter being the vacuum level
intended when comparing against other reference electrodes).
In the following, I intend to call the position “just outside the sample” for
just that, and the “at infinity” position for the “vacuum level”, i.e.,
&lt;span class=&#34;math inline&#34;&gt;\(E_\text{VAC}\)&lt;/span&gt; (please correct me if you discover any inconsistencies!).
As we have noted, for an uncharged sample there is effectively no difference
in energy between these positions. But most samples will be charge (here charged
does not mean that the whole material carries an effective charge, which is a
physical impossibility) but rather that the &lt;em&gt;surface&lt;/em&gt; in contact with the probe
is charged, which is the case for many semiconductors, e.g., crystals with
a non-centrosymmetric symmetry will have one direction that is more polar
than the others (cf. piezoelectric crystals).
Anyway, the point is that for most real-world materials, the point at which
the vacuum level is defined actually matters.&lt;/p&gt;
&lt;p&gt;The work function for an uncharged sample is comprised of the &lt;em&gt;chemical work&lt;/em&gt; and
the &lt;em&gt;electrostatic work&lt;/em&gt; necessary for transporting the charged electron through
the dipole layer at the surface: &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Rohwerder2013&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
\phi = -\mu_\text{e} + e\chi = -(\mu_\text{e} - e\chi)
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;where &lt;span class=&#34;math inline&#34;&gt;\(\mu_\text{e}\)&lt;/span&gt; is the chemical potential (i.e., the chemical work to transfer
the electron from infinity into the sample, hence the minus sign), &lt;span class=&#34;math inline&#34;&gt;\(e\)&lt;/span&gt; is the electron
charge, and &lt;span class=&#34;math inline&#34;&gt;\(\chi\)&lt;/span&gt; is the so-called dipole or surface potential (this is the potential
drop between just inside the sample to just outside of it).
Note that I have chosen to use lower-case phi (&lt;span class=&#34;math inline&#34;&gt;\(\phi\)&lt;/span&gt;) to symbolise the work function rather
than upper-case Phi (&lt;span class=&#34;math inline&#34;&gt;\(\Phi\)&lt;/span&gt;).&lt;/p&gt;
&lt;p&gt;If the sample is charged an &lt;em&gt;additional&lt;/em&gt; work component is necessary to transfer the
electron to a position infinity far away, namely &lt;span class=&#34;math inline&#34;&gt;\(e\psi\)&lt;/span&gt;, where &lt;span class=&#34;math inline&#34;&gt;\(\psi\)&lt;/span&gt; is the Volta potential
and is due to surface charges &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Rohwerder2013&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;In a semiconductor, the work function can be expressed as a function of
the position of &lt;span class=&#34;math inline&#34;&gt;\(E_\text{VAC}\)&lt;/span&gt; and the Fermi level of the material, &lt;span class=&#34;math inline&#34;&gt;\(E_\text{F}\)&lt;/span&gt;,
of which the latter in turn depends on the material’s density of states, temperature,
carrier density and doping concentration: &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kahn2015&#34;&gt;4&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
\phi = E_\text{VAC} - E_\text{F}
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[The work function, &lt;span class=&#34;math inline&#34;&gt;\(\psi\)&lt;/span&gt;,] is measured as the combination of the two components, which
cannot be experimentally separated. The dominant one, i.e., the bulk component,
corresponds to the chemical potential that derives from the electronic density
and density of states in the solid. Its calculation involves the determination
of the difference in energy between the &lt;span class=&#34;math inline&#34;&gt;\(N\)&lt;/span&gt; and &lt;span class=&#34;math inline&#34;&gt;\(N-1\)&lt;/span&gt; electron system.
The surface component, also known as surface dipole component, corresponds to
an additional potential step (positive or negative) that originates with a
redistribution of charges at the surface of the solid. This component is inherent
to the surface of the solid and exists only at the solid–vacuum interface.
— &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kahn2015&#34;&gt;4&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The surface of the solid thus represents an energy barrier that the electron
at the Fermi level must overcome to reach the vacuum level (free space).
This also means that &lt;span class=&#34;math inline&#34;&gt;\(\phi\)&lt;/span&gt; and &lt;span class=&#34;math inline&#34;&gt;\(E_\text{VAC}\)&lt;/span&gt; are meaningful only in relation
to the surface of the solid material.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The redistribution of charges at the surface of a material, which gives rise
to the surface dipole, takes on several possible mechanisms. The generic mechanism
for metal surfaces is the “spill out” of electrons into vacuum. Deep in the metal,
the electron density along the &lt;span class=&#34;math inline&#34;&gt;\(z\)&lt;/span&gt; direction perpendicular to the surface is
constant (at least in a simple jellium-type model), but as the lattice abruptly
terminates at the surface, electrons tunnel out of the solid over some small
distance (Ångströms), creating a negative sheet of charges outside the solid
and leaving a positive sheet of uncompensated metal ions in the surface and
sub-surface atomic planes. This double sheet of charges creates a potential step
that increases the electron potential just outside the surface, effectively
raising &lt;span class=&#34;math inline&#34;&gt;\(E_\text{VAC}\)&lt;/span&gt; and [&lt;span class=&#34;math inline&#34;&gt;\(\psi\)&lt;/span&gt;]. This electronic redistribution and
potential step depends sensitively on the atomic arrangement at the surface
of the solid […]
— &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kahn2015&#34;&gt;4&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This makes Kelvin probe microscopy an exceptionally sensitive indicator of surface
conditions and affected by absorbed or evaporated layers, surface charging,
oxide layer imperfections, surface contamination, and more.&lt;/p&gt;
&lt;!-- we should tie this into how a barrier is either Ohmic or Schottky for the metal--non-metal case --&gt;
&lt;/div&gt;
&lt;div id=&#34;principle-of-operation-of-a-kelvin-probe&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Principle of operation of a Kelvin probe&lt;/h2&gt;
&lt;p&gt;It appears to me that most contemporary Kelvin probe’s use the so-called
&lt;a href=&#34;https://www.kelvinprobe.com/the-kelvin-probe&#34;&gt;Baikie system&lt;/a&gt;
(so named after its inventor, professor Iain Baikie, the founder of KP Technology),
where the CPD is determined using what is called an “off-null height-regulated”
method where the signal generated by the vibrating electrode is measured far from
the electric balance point, meaning the generated current amplitude depends linearly
on the backing potential, and thus the point where the current amplitude is equal
to zero determines the CPD &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Halek2010&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;.
This significantly reduces noise compared to the traditional method of determining CPD.&lt;/p&gt;
&lt;p&gt;The Kelvin probe can be considered a natural reference electrode, and the only
absolute reference electrode available to us.
Still, to obtain the work function of a sample versus the absolute vacuum level
the probe must first be calibrated against a reference material with a known
work function.
&lt;!-- But the reason it has not rendered other electrochemical reference electrodes irrelevant
is that ... (see Rohwerder2013) --&gt;&lt;/p&gt;
&lt;p&gt;When the probe is vibrated, a varying capacitance is produced:
&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
C_\mathrm{K}(t) = \varepsilon_\mathrm{r} \varepsilon_\mathrm{0} \frac{A}{d(t)}
\end{equation}\]&lt;/span&gt;
where &lt;span class=&#34;math inline&#34;&gt;\(C_\mathrm{K}(t)\)&lt;/span&gt; is the time-varying Kelvin capacitance,
&lt;span class=&#34;math inline&#34;&gt;\(\varepsilon_\mathrm{0}\)&lt;/span&gt; is the permittivity of free space,
&lt;span class=&#34;math inline&#34;&gt;\(\varepsilon_\mathrm{r}\)&lt;/span&gt; is the relative permittivity,
&lt;span class=&#34;math inline&#34;&gt;\(A\)&lt;/span&gt; is the surface area of the capacitor plate and
&lt;span class=&#34;math inline&#34;&gt;\(d(t)\)&lt;/span&gt; is the time-dependent separation between the capacitor plates.&lt;/p&gt;
&lt;p&gt;Assuming the tip–sample separation can be represented by a periodic sinusoidal
displacement &lt;span class=&#34;math inline&#34;&gt;\(d(t) = d_\mathrm{0} + d_\mathrm{1}\sin(\omega t)\)&lt;/span&gt;, then the
varying capacitance becomes
&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
C_\mathrm{K}(t) = \frac{C_\mathrm{0}}{1 + \frac{d_\mathrm{1}}{d_\mathrm{0}} \sin(\omega t)}
\end{equation}\]&lt;/span&gt;
where &lt;span class=&#34;math inline&#34;&gt;\(C_\mathrm{0}\)&lt;/span&gt; is the mean capacity, &lt;span class=&#34;math inline&#34;&gt;\(\omega\)&lt;/span&gt; is the angular frequency of
vibrations in radians per seconds, &lt;span class=&#34;math inline&#34;&gt;\(d_\mathrm{0}\)&lt;/span&gt; is the mean distance between
tip and probe, and &lt;span class=&#34;math inline&#34;&gt;\(d_\mathrm{1}\)&lt;/span&gt; is the amplitude of tip motion (the ratio
&lt;span class=&#34;math inline&#34;&gt;\(d_\mathrm{1}/d_\mathrm{0}\)&lt;/span&gt; is the so-called modulation index).
I am going to skip how this ties into the electronic circuit design of the Kelvin
probe, and directly proceed to tell you that the instantaneous total surface charge
on the tip of the probe evaluates to:
&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
Q_\mathrm{S} = C_\mathrm{K} (V_\mathrm{b} + V_\mathrm{c})
\end{equation}\]&lt;/span&gt;
I am going to skip some more steps in this derivation, and straight away
note that this leads to the output signal produced by the Kelvin probe using
the “off-null height-regulated” method, namely the peak-to-peak voltage &lt;span class=&#34;math inline&#34;&gt;\(V_\mathrm{ptp}\)&lt;/span&gt;.
This is then plotted against the backing potential and the intercept of the resultant
straight line on the ordinate is the point where &lt;span class=&#34;math inline&#34;&gt;\(V_\text{b} + V_\text{c} = 0\)&lt;/span&gt;.
Et voilà, we have our CPD, and assuming we can determine or know the work function
of the probe tip (the other half of the capacitor), calculating the work function
of our sample is only a subtraction away.&lt;/p&gt;
&lt;p&gt;When discussing the determination of absolute work function of materials we would
be amiss to not mention another method that can do the job, namely
photoemission spectroscopy (PES). The main advantage of KP over PES with regards
to semiconductor materials is that KP can be performed in the dark, which gives
the experimenter a way to avoid the confounding effect of band bending that may
occur under illumination &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kahn2015&#34;&gt;4&lt;/a&gt;]&lt;/span&gt;.
Another advantage is that KP can be done in air, whereas PES requires vacuum
(this may or may not be considered an advantage, depending on your vantage point).
Work function measurements made in air are affected by the adsorption of
atmospheric gasses, such as oxygen &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Halek2010&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;, which is why modern KP chambers
allow purging with nitrogen and humidity control.&lt;/p&gt;
&lt;div style=&#34;border: 2px solid #f03838; padding-left: 10px; padding-top: 4px; background-color: #EBEBEB; color: black;&#34;&gt;
&lt;p&gt;
If you have read this far you might be interested in the simple
&lt;a href=&#34;https://github.com/solarchemist/kptech&#34;&gt;R package &lt;code&gt;kptech&lt;/code&gt;&lt;/a&gt;
I wrote which helps you import and plot data from a KPTech Kelvin probe.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;kelvin-probe-force-microscopy-kpfm&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Kelvin probe force microscopy (KPFM)&lt;/h2&gt;
&lt;p&gt;Kelvin probe force microscopy was first proposed by &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Nonnenmacher1992&#34;&gt;6&lt;/a&gt;]&lt;/span&gt;, and
allows the experimenter to obtain both topographic and potential images of
the sample’s surface. It is based on atomic force microscopy (AFM).&lt;/p&gt;
&lt;p&gt;The CPD is determined as in a regular KP, and the cantilever deflection
(due to electrostatic repulsion, it is not touching the sample’s surface)
is normally detected by a photodetector.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;notes-and-links&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Notes and links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://rsl.eng.usf.edu/Documents/Tutorials/TutorialsKelvinProbe.pdf&#34;&gt;Tutorial on Kelvin probe measurements&lt;/a&gt;,
Rudy Schlaf (University South Florida)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://sjbyrnes.com/fermiterminology.html&#34;&gt;Translation guide for discussing electron energy concepts&lt;/a&gt;,
Steve Byrnes (University of California, Berkeley)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.kelvinprobe.com&#34;&gt;KP Technology&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There’s a bunch of questions on StackExchange related to the work function:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/123734&#34;&gt;Fermi energy, Fermi level and work function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/30974&#34;&gt;Definition of Fermi energy and Fermi level&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/28361&#34;&gt;Why is Fermi energy not at the top of valence band?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/205313&#34;&gt;Work function and ionisation energy are different&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/162190&#34;&gt;Work function definition: vacuum, image forces (and a comparison with PES)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/21406&#34;&gt;An explanation of vacuum level and Fermi level for metals and semiconductors in terms of Schottky-Mott theory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/70352&#34;&gt;A question and answer on terminology&lt;/a&gt;, cf. &lt;a href=&#34;http://sjbyrnes.com/fermiterminology.html&#34;&gt;Byrnes’ translation guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/250161&#34;&gt;Surface potential and work function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://physics.stackexchange.com/a/277024&#34;&gt;The photoelectric effect and work function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/133938&#34;&gt;Local work function vs work function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/1045&#34;&gt;On calculating the work function of metals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/286517&#34;&gt;Finding the work function by measuring the kinetic energy of the ejected electron (i.e, PES again)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/196974&#34;&gt;Work function with two materials in contact&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/271455&#34;&gt;Making clear the difference between ionisation potentials (atoms) and work function (bulk)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.stackexchange.com/a/286418&#34;&gt;Metal-oxide semiconductor in contact with metal: band bending&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Youtube gives a few hits for “kelvin probe”:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apparently surface potential of bacteria can be measured
&lt;a href=&#34;https://www.youtube.com/watch?v=sZcZOX7ZAXM&#34;&gt;using Kelvin probe force microscopy&lt;/a&gt;, Journal of Visualized Experiments.&lt;/li&gt;
&lt;li&gt;Product demo of a &lt;a href=&#34;https://www.youtube.com/watch?v=dN5-6p6ckjE&#34;&gt;scanning Kelvin probe&lt;/a&gt;
by BioLogic.&lt;/li&gt;
&lt;li&gt;A recorded &lt;a href=&#34;https://www.youtube.com/watch?v=lGOiAGC48fM&#34;&gt;seminar on Kelvin probe force microscopy of field-effect transistors&lt;/a&gt; by Dr Mukherjee, Israel Institute of Technology.&lt;/li&gt;
&lt;li&gt;A &lt;a href=&#34;https://www.youtube.com/watch?v=qwJV8hU-fZU&#34;&gt;tutorial on fundamental theory and application of KPFM&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An animation of the &lt;a href=&#34;https://www.youtube.com/watch?v=Emb7N5iDWrY&#34;&gt;operation of the probe in Kelvin probe force microscopy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;An animated presentation on &lt;a href=&#34;https://www.youtube.com/watch?v=tiT_bwO6VzE&#34;&gt;Kelvin probe force microscopy&lt;/a&gt;
from a course on Nanoscale imaging at Rice University.&lt;/li&gt;
&lt;li&gt;A &lt;a href=&#34;https://www.youtube.com/watch?v=2rK9kXEGm4w&#34;&gt;demonstration of a Kelvin probe&lt;/a&gt;
at the Instytut Fotonowy in Cracow.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ## Session info --&gt;
&lt;!-- &lt;div style=&#34;border: 2px solid #0066CC; padding-left: 0px; padding-top: 0px; background-color: #ffffe6; color: black;&#34;&gt; --&gt;
&lt;!-- &lt;/div&gt; --&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body&#34;&gt;
&lt;div id=&#34;ref-Kelvin1898&#34; class=&#34;csl-entry&#34;&gt;
&lt;div class=&#34;csl-left-margin&#34;&gt;[1] &lt;/div&gt;&lt;div class=&#34;csl-right-inline&#34;&gt;W.T. Kelvin, V. &lt;span&gt;Contact&lt;/span&gt; electricity of metals, Philosophical Magazine Series 5. 46 (1898) 82–120. https://doi.org/&lt;a href=&#34;https://doi.org/10.1080/14786449808621172&#34;&gt;10.1080/14786449808621172&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Zisman1932&#34; class=&#34;csl-entry&#34;&gt;
&lt;div class=&#34;csl-left-margin&#34;&gt;[2] &lt;/div&gt;&lt;div class=&#34;csl-right-inline&#34;&gt;W.A. Zisman, A new method of measuring contact potential differences in metals, Review of Scientific Instruments. 3 (1932) 367. https://doi.org/&lt;a href=&#34;https://doi.org/10.1063/1.1748947&#34;&gt;10.1063/1.1748947&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Rohwerder2013&#34; class=&#34;csl-entry&#34;&gt;
&lt;div class=&#34;csl-left-margin&#34;&gt;[3] &lt;/div&gt;&lt;div class=&#34;csl-right-inline&#34;&gt;M. Rohwerder, The kelvin probe technique as reference electrode for application on thin and ultrathin electrolyte films, in: Handbook of Reference Electrodes, 2013: pp. 333–340. https://doi.org/&lt;a href=&#34;https://doi.org/10.1007/978-3-642-36188-3_15&#34;&gt;10.1007/978-3-642-36188-3_15&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Kahn2015&#34; class=&#34;csl-entry&#34;&gt;
&lt;div class=&#34;csl-left-margin&#34;&gt;[4] &lt;/div&gt;&lt;div class=&#34;csl-right-inline&#34;&gt;A. Kahn, Fermi level, work function and vacuum level, Materials Horizons. 1 (2015) 96. https://doi.org/&lt;a href=&#34;https://doi.org/10.1039/c3mh00043e&#34;&gt;10.1039/c3mh00043e&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Halek2010&#34; class=&#34;csl-entry&#34;&gt;
&lt;div class=&#34;csl-left-margin&#34;&gt;[5] &lt;/div&gt;&lt;div class=&#34;csl-right-inline&#34;&gt;G. Halek, I.D. Baikie, H. Teterycz, Surface investigation by using a scanning &lt;span&gt;Kelvin&lt;/span&gt; probe, in: 2010 &lt;span&gt;International Students&lt;/span&gt; and &lt;span&gt;Young Scientists Workshop&lt;/span&gt; &#34;&lt;span&gt;Photonics&lt;/span&gt; and &lt;span&gt;Microsystems&lt;/span&gt;&#34;, &lt;span&gt;IEEE&lt;/span&gt;, 2010: pp. 24–27. https://doi.org/&lt;a href=&#34;https://doi.org/10.1109/STYSW.2010.5714161&#34;&gt;10.1109/STYSW.2010.5714161&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Nonnenmacher1992&#34; class=&#34;csl-entry&#34;&gt;
&lt;div class=&#34;csl-left-margin&#34;&gt;[6] &lt;/div&gt;&lt;div class=&#34;csl-right-inline&#34;&gt;M. Nonnenmacher, M. O’Boyle, H.K. Wickramasinghe, Surface investigations with a &lt;span&gt;Kelvin&lt;/span&gt; probe force microscope, Ultramicroscopy. 42–44 (1992) 268–273. https://doi.org/&lt;a href=&#34;https://doi.org/10.1016/0304-3991(92)90278-R&#34;&gt;10.1016/0304-3991(92)90278-R&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Observing the global energy transition (from over here)</title>
      <link>//solarchemist.se/2022/10/01/towards-solar-energy-system/</link>
      <pubDate>Sat, 01 Oct 2022 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2022/10/01/towards-solar-energy-system/</guid>
      
      <description>


&lt;p&gt;In this post I have collected news and tidbits, some with my commentary,
on planned or installed projects from around the world that further the
transition from our carbon-based energy system to a photon-based.
This includes projects on renewable chemical feedstocks (hydrogen, ammonia, etc.)
as well as their generation by renewable methods and the infrastructure developments
underpinning such projects.&lt;/p&gt;
&lt;p&gt;These notes are made from my personal vantage point, which is necessarily limited,
and without any claim to be authoritative or even objective.
The notes are not presented in any particular order.&lt;/p&gt;
&lt;p&gt;Even though each tidbit can certainly feel small and inconsequential in the moment,
every small step towards weening ourselves off the carbon-based economy counts.
And judging by most outlooks, the pace of the energy transition will only accelerate
even more during the remainder of this decade.&lt;/p&gt;
&lt;p&gt;This is necessary if we are to even stay within reach of the 1.5℃ climate target,
according to the &lt;a href=&#34;https://www.irena.org/News/pressreleases/2023/Jun/Annual-Renewable-Power-Must-Triple-by-2030&#34;&gt;World Energy Transitions Outlook 2023 report from IRENA&lt;/a&gt;.
Most worryingly, the pace is not enough, as the gap between what has been achieved
and what is required continues to grow.&lt;/p&gt;
&lt;p&gt;Specifically, &lt;a href=&#34;https://energypost.eu/green-hydrogens-6000-fold-scale-up-by-2050-must-far-exceed-wind-and-solars-is-it-possible/&#34;&gt;by 2050 the production of electrolysers needs to grow 6000-fold&lt;/a&gt;
to achieve the 1.5℃ climate target, from 600 MW today (2021) to 3670 GW &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Odenweller2022&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;.
This is a faster scale-up than we achieved for solar PV, but it is possible.&lt;/p&gt;
&lt;p&gt;Below, please find my collected news clippings organised in the following categories:
&lt;a href=&#34;#solar-power-plants&#34;&gt;solar-based power plants&lt;/a&gt;,
&lt;a href=&#34;#electrolysers&#34;&gt;electrolysers (planned or in operation)&lt;/a&gt;,
&lt;a href=&#34;#manufacture-of-electrolysis-cells&#34;&gt;manufacture of electrolysers&lt;/a&gt;,
&lt;a href=&#34;#fuel-cell-vehicles&#34;&gt;fuel cell vehicles&lt;/a&gt; (battery electric vehicles are quickly becoming mainstream, which is great),
&lt;a href=&#34;#manufacture-of-fuel-cells&#34;&gt;manufacture of fuel cells&lt;/a&gt;,
&lt;a href=&#34;#photoelectrochemical-plants&#34;&gt;photoelectrochemical plants&lt;/a&gt;, and in
&lt;a href=&#34;#and-perhaps-not-so-good-news&#34;&gt;not so good news&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&#34;solar-power-plants&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Solar power plants&lt;/h2&gt;
&lt;div id=&#34;container-shaarli-permalink&#34; style=&#34;border: 0px none; overflow: hidden;&#34;&gt;
&lt;iframe src=&#34;https://links.solarchemist.se/shaare/ItRueA&#34; name=&#34;solar-power-plants&#34; id=&#34;iframe-shaarli-permalink&#34; width=&#34;100%&#34; height=&#34;1200px&#34; scrolling=&#34;auto&#34; style=&#34;border: 0px none; margin-top: -207px; margin-bottom: -156px;&#34;&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;electrolysers&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Electrolysers&lt;/h2&gt;
&lt;!-- Quick and dirty way of embedding only the Shaarli post itself (without the header/footer)
A nicer way would have been if Shaarli itself could provide a permalink version that only rendered the post itself, unfortunately I found no such support in Shaarli or its plugins nor any such ideas mentioned in issues or pull request. You might want to suggest this.
https://shaarli.readthedocs.io/en/master/Community-and-related-software/
 --&gt;
&lt;!--
https://stackoverflow.com/questions/3272071/can-an-iframe-only-show-a-certain-part-of-the-page
https://stackoverflow.com/questions/14117763/how-do-you-put-only-a-certain-section-of-a-website-into-an-iframe
https://stackoverflow.com/questions/26070985/iframe-showing-only-a-particular-part
--&gt;
&lt;!-- How much vertical space is taken by the Shaarli bar, search boxes and buttons above the post
depend on the width of the Shaarli window (on small width the search boxes are placed on top of each other)
Since the blog post textwidth is the constraint, it seems -207px works well to remove everything above the post itself --&gt;
&lt;div id=&#34;container-shaarli-permalink&#34; style=&#34;border: 0px none; overflow: hidden;&#34;&gt;
&lt;!-- the bottom margin -156px was set by trial and error (height=&#34;600px&#34;).
Take note, margin-bottom depends on iframe height! --&gt;
&lt;!-- left and right margin adjustments did not produce nice results (left took effect, but right margin became too wide without any obvious recourse --&gt;
&lt;iframe src=&#34;https://links.solarchemist.se/shaare/2rBF3A&#34; name=&#34;electrolysis-plants&#34; id=&#34;iframe-shaarli-permalink&#34; width=&#34;100%&#34; height=&#34;1200px&#34; scrolling=&#34;auto&#34; style=&#34;border: 0px none; margin-top: -207px; margin-bottom: -156px;&#34;&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;fuel-cell-vehicles&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Fuel cell vehicles&lt;/h2&gt;
&lt;div id=&#34;container-shaarli-permalink&#34; style=&#34;border: 0px none; overflow: hidden;&#34;&gt;
&lt;iframe src=&#34;https://links.solarchemist.se/shaare/HmoZSw&#34; name=&#34;fuelcell-vehicles&#34; id=&#34;iframe-shaarli-permalink&#34; width=&#34;100%&#34; height=&#34;1200px&#34; scrolling=&#34;auto&#34; style=&#34;border: 0px none; margin-top: -207px; margin-bottom: -156px;&#34;&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;photoelectrochemical-plants&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Photoelectrochemical plants&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://links.solarchemist.se/shaare/Eg7Gzg&#34;&gt;A photoelectrochemical pilot plant using concentrated PV at EPFL&lt;/a&gt;,
described in an academic paper by the Haussener laboratory (&lt;a href=&#34;https://doi.org/10.1038/s41560-023-01247-2&#34;&gt;DOI: 10.1038/s41560-023-01247-2&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;other-renewables&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Other renewables&lt;/h2&gt;
&lt;p&gt;These are not my focus, but if a project catches my eye I might include here.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://energyegypt.net/uae-and-egypt-advance-development-of-africas-biggest-wind-farm/&#34;&gt;Masdar (UAE) and NRA (Egypt) agreed&lt;/a&gt; at the sidelines of COP27 (the UN climate change conference 2022, in Sharm El Sheikh)
to build what would be a massive wind turbine park producing 48 TWh of electricity per year.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;manufacturing-of-solar-pv-electrolysers-wind-turbines-batteries-and-heat-pumps&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Manufacturing of solar PV, electrolysers, wind turbines, batteries, and heat pumps&lt;/h2&gt;
&lt;p&gt;Global manufacturing capacity for renewable technologies is expanding rapidly.
In its report “The State of Clean Technology Manufacturing” the International Energy Agency
&lt;a href=&#34;https://energypost.eu/iea-report-global-manufacturing-capacity-is-expanding-rapidly-for-solar-wind-batteries-electrolysers-heat-pumps/&#34;&gt;points to solar PV, electrolysers, wind turbines, batteries, and heat pumps as
critical technologies&lt;/a&gt; for the energy transition.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ThyssenKrupp’s Chemical &amp;amp; Process Technologies business unit (&lt;a href=&#34;https://www.thyssenkrupp.com/en/newsroom/press-releases/pressdetailpage/100-years-of-uhde--thyssenkrupps-chemical-plant-engineering-business-celebrates-centenary-97975&#34;&gt;ThyssenKrupp Uhde&lt;/a&gt;)
is ramping up its production facilities in order to produce electrolysis cells
with a combined rated power reaching &lt;span class=&#34;math inline&#34;&gt;\(\SI{1}{\GW}\)&lt;/span&gt; per year. The cells use
coatings developed by &lt;a href=&#34;https://www.denora.com&#34;&gt;De Nora&lt;/a&gt; that allow system
efficiency up to 80%. According to ThyssenKrupp, &lt;a href=&#34;https://fuelcellsworks.com/news/green-hydrogen-thyssenkrupp-expands-production-capacities-for-water-electrolysis-to-gigawatt-scale&#34;&gt;over &lt;span class=&#34;math inline&#34;&gt;\(\SI{10}{\GW}\)&lt;/span&gt; of its
electrolysers are already operating worldwide across 600 projects&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://elbilen.se/nyheter/hyundai-och-kia-mangmiljardsatsar&#34;&gt;Hyundai Motor Group (South Korea) intends to invest about $6 billion in total
until 2030 to develop a factory to produce 700 000 fuel cell stacks annually starting
from that year&lt;/a&gt; (2018-12).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;and-perhaps-not-so-good-news&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;And perhaps not so good news&lt;/h2&gt;
&lt;div id=&#34;container-shaarli-permalink&#34; style=&#34;border: 0px none; overflow: hidden;&#34;&gt;
&lt;iframe src=&#34;https://links.solarchemist.se/shaare/4zmDcg&#34; name=&#34;transition-undone&#34; id=&#34;iframe-shaarli-permalink&#34; width=&#34;100%&#34; height=&#34;580px&#34; scrolling=&#34;auto&#34; style=&#34;border: 0px none; margin-top: -207px; margin-bottom: -156px;&#34;&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;background&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;We have, over the last century, built ourselves a global energy conversion system
(and a global economy) entirely predicated on the ever-more greedy extraction
of fossil fuels. Frankly then, it is no surprise that we would sooner or later
run afoul of our biosphere’s physical boundaries.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.nature.com/articles/d41586-023-01749-9&#34;&gt;Why ideas of ‘planetary boundaries’ must uphold environmental justice, Nature&lt;/a&gt; (editorial)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://supermiljobloggen.se/nyheter/sex-av-nio-planetara-granser-redan-passerade&#34;&gt;Sex av nio planetära gränser redan passerade, Supermiljöbloggen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.science.org/doi/10.1126/sciadv.adh2458&#34;&gt;Earth beyond six of nine planetary boundaries. Science Advances, 10.1126/sciadv.adh2458&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The energy transition will require a fundamental realignment of
the chemical industry, an industry that so far the has relied primarily on oil,
coal and gas as for both its energy and its raw material feeds.
And the same can be said for the world’s power grids, who might also need to
change from their current centralised design to one that allows more distributed
power generation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://quillette.com/2022/10/18/hyping-the-energy-transition&#34;&gt;Hyping the energy transition, Quillette, R. Bryce (2022)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whatever path of transition that we decide to take, we must be careful not to
invest in flukes, because inevitably the energy required to fuel this transition
will be mostly from non-renewable sources.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://arstechnica.com/tech-policy/2021/05/all-fossil-fuel-exploration-needs-to-end-this-year-iea-says&#34;&gt;All fossil fuel exploration needs to end this year, IEA says, Ars Technica (2021)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.carbonbrief.org/new-fossil-fuels-incompatible-with-1-5c-goal-comprehensive-analysis-finds&#34;&gt;New fossil fuels ‘incompatible’ with 1.5C goal, comprehensive analysis finds, CarbonBrief (2022)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&#34;a-short-primer-on-the-greenhouse-effect-and-climate-change&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;A short primer on the greenhouse effect and climate change&lt;/h3&gt;
&lt;p&gt;The basic physics of the greenhouse effect is simple.
The planet’s surface and atmosphere can be considered a system in steady state
(incoming energy equals outgoing energy), with space being the ultimate heatsink.&lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;
The incident solar light peaks in the visible region (500 nm) of the electromagnetic spectrum,
and is nearly balanced by infrared radiation emitted from high-altitude atmospheric gases (H₂O, CO₂, etc.).
The atmosphere essentially acts like multiple bandstop filters that
blocks most of the electromagnetic spectrum from reaching the surface, except
for visible light and some ultraviolet and near-infrared, as well
as certain bands in the IR range.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Atmospheric_window&#34;&gt;Atmospheric window, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doi.org/10.1029/2021GL093047&#34;&gt;Satellite and ocean data reveal marked increase in Earth’s heating rate, Geophysical Research Letters (2021)&lt;/a&gt;, and a &lt;a href=&#34;https://earthobservatory.nasa.gov/blogs/earthmatters/2021/06/22/earths-radiation-budget-is-out-of-balance&#34;&gt;blog post about the paper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Greenhouse gases (GHG) in the upper troposphere form a spectral window that
allows the planet surface and lower layers of the atmosphere to radiate excess energy
with wavelengths in the IR into space.
This requires emissions from the surface characteristic of temperatures roughly
10℃ to 15℃ &lt;em&gt;warmer&lt;/em&gt; than the so-called &lt;em&gt;grey body equilibrium surface temperature&lt;/em&gt;&lt;a href=&#34;#fn2&#34; class=&#34;footnote-ref&#34; id=&#34;fnref2&#34;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Kopp2018&#34;&gt;2&lt;/a&gt;]&lt;/span&gt;.
An increase of GHG makes the atmosphere more opaque at IR wavelengths,
thus reducing the planet’s heat radiation to space, and causing the planet to
warm until the equilibrium of incident solar light to planetary heat radiation
is restored (now at a higher equilibrium surface temperature) &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Hansen2011&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;.
The importance of the atmosphere &lt;em&gt;and&lt;/em&gt; the greenhouse effect to life on Earth cannot
be understated. The greenhouse effect is the main reason why our surface temperature
is not similar to that of the Moon (had it had an atmosphere).&lt;/p&gt;
&lt;p&gt;Careful measurements of ocean heat content over six years (2005–2010) showed
that the Earth is absorbing more energy from the Sun than it is radiating back
to space, with an inferred mean planetary energy imbalance over that six-year period
of (0.58±0.15) W m⁻².
It is inferred, because of the two dominant causes of changes to Earth’s energy
imbalance, greenhouse gases and changes of atmospheric aerosols, the latter remains
unmeasured (on the other hand, the former is measured very precisely) &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Hansen2011&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://inference-review.com/article/physical-theories-and-computer-simulations-in-climate-science&#34;&gt;Physical theories and computer simulations in climate science, Inference Review, Kininmonth (2014)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://inference-review.com/article/a-physicists-journey&#34;&gt;A review of ‘The physics of climate change’ by Lawrence Krauss, Inference Review, Socolow (2021)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://e360.yale.edu/features/beyond-magical-thinking-time-to-get-real-about-climate-change&#34;&gt;Beyond magical thinking: time to get real on climate change, E360, Vaclav Smil (2022)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wallabag.chepec.se/share/6515fd77eb9997.62278959&#34;&gt;The Fermi problem of climate change, Branch Magazine, Anna Knörr (2022)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The long lifetime of CO₂ in the atmosphere&lt;a href=&#34;#fn3&#34; class=&#34;footnote-ref&#34; id=&#34;fnref3&#34;&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt; (300 years) means
that even if we deploy large-scale carbon capture and sequestration
(which I believe is unfeasible),
and even if we manage to arrest or even reverse that increase (which is not happening so far),
the benefits will not be felt immediately.
Our atmosphere, hydrosphere and biosphere are large and intricately interconnected systems,
and the momentum of past emissions means that a global mean temperature rise is now assured.
But we can still limit how large that rise will eventually be.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://jacobin.com/2022/08/zero-emissions-climate-repaire-crisis-carbon-dioxide-removal&#34;&gt;Zero emissions isn’t enough. We need climate repair., Jacobin Magazine, Hudson (2022)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;solar-energy-collection-and-conversion&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Solar energy collection and conversion&lt;/h3&gt;
&lt;p&gt;The challenge with energy conversion has always
been a game of optimising &lt;em&gt;collection&lt;/em&gt; and &lt;em&gt;conversion&lt;/em&gt;.
For coal, gas and oil &lt;em&gt;collecting&lt;/em&gt; it was fairly straight-forward:
just identify (and assert control of) the underground or undersea basins where
it was naturally amassed. And once the internal combustion engine (ICE) was developed
(at least 150 years ago), converting that fossil fuel to work was simple, but with
large negative externalities (poor conversion efficency, pollution, noise) that
everyone ignored because the fuel was so easy to collect and thus immensely profitable.
Before the age of fossil fuels collection was often arduous, back-breaking manual work,
and conversion was often even less efficient than with the ICE.&lt;/p&gt;
&lt;p&gt;For solar power, &lt;em&gt;collection&lt;/em&gt; and &lt;em&gt;conversion&lt;/em&gt; works a little differently.
The fuel (in the collection step) is no longer materia, but light. And the material
itself is no longer broken down in a chemical reaction to produce heat, but rather
facilitates (i.e., catalyses) the conversion of photons to electrons while itself
remaining inert for decades.
And since our primary source of light is the Sun, and sunlight does not arrive in
concentrated beams but is rather evenly spread out everywhere, &lt;em&gt;collecting&lt;/em&gt; sunlight
requires installing photovoltaic (PV) panels on large areas of land&lt;a href=&#34;#fn4&#34; class=&#34;footnote-ref&#34; id=&#34;fnref4&#34;&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt; or buildings.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Agrivoltaics&#34;&gt;Agrivoltaics, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://energypost.eu/agrivoltaics-gws-of-solar-power-from-farmland-using-strategically-placed-panels-and-raising-crop-yields&#34;&gt;Agrivoltaics: GWs of solar power from farmland using strategically placed panels (and raising crop yields), EnergyPost (2023)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;atmospheric-carbon-capture-inefficient-but-may-be-unavoidable&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Atmospheric carbon capture: inefficient, but may be unavoidable&lt;/h3&gt;
&lt;p&gt;We will most likely need to invest in the atmospheric capture of
carbon dioxide, &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Keith2018&#34;&gt;5&lt;/a&gt;]&lt;/span&gt; not because it is particularly economical
or efficient, but simply because it has now become imperative to quickly
decrease the atmosphere’s CO₂ concentration.&lt;/p&gt;
&lt;p&gt;This does open up interesting avenues for chemists to take that carbon up the
value chain to carbohydrates and all kinds of compounds.
But making any sort of fuel out of this captured carbon would defeat the whole
point of the exercise, in my opinion.&lt;/p&gt;
&lt;p&gt;Capturing carbon dioxide on a large scale from the atmosphere is technically possible,
but would require massive amounts of renewable power; power which we would perhaps
more wisely be using to supplant non-renewable power generation (there is an
inherent conflict of priorities here) &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Keith2018&#34;&gt;5&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;A more limited approach is to simply get the CO₂ out of the atmosphere
and store it in bedrock or something, which is known as &lt;em&gt;carbon capture and storage&lt;/em&gt; (CCS).
Some authors have suggested methods that would combine the splitting of water
with CO₂(aq) capture using ocean chemistry &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Rau2018&#34;&gt;6&lt;/a&gt;]&lt;/span&gt;,
and others have shown that carbon dioxide emissions could potentially provide
1570 TWh worth of electricity annually &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Hamelers2014&#34;&gt;7&lt;/a&gt;]&lt;/span&gt;.
It is probably premature to pin any hope to such schemes.&lt;/p&gt;
&lt;p&gt;We should rather commit to reduce and then eliminate our carbon emissions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.technologyreview.com/2014/10/07/171023/can-sucking-co2-out-of-the-atmosphere-really-work&#34;&gt;Can sucking CO₂ out of the atmosphere really work? MIT Technology Review (2014)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;notes-and-assorted-links&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Notes and assorted links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.iea.org/data-and-statistics/data-product/hydrogen-projects-database&#34;&gt;A worldwide database of hydrogen projects&lt;/a&gt; by IEA. Unfortunately requires sign-up with IEA account for access.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.iea.org/energy-system/low-emission-fuels/hydrogen&#34; class=&#34;uri&#34;&gt;https://www.iea.org/energy-system/low-emission-fuels/hydrogen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.physics-in-a-nutshell.com/article/17/surface-temperature-of-the-earth&#34;&gt;Surface temperature of the Earth&lt;/a&gt;,
Physics in a nutshell&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://climate.nasa.gov/vital-signs/global-temperature&#34; class=&#34;uri&#34;&gt;https://climate.nasa.gov/vital-signs/global-temperature&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Global_surface_temperature&#34;&gt;Global surface temperature, Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.economist.com/special-report/2018/03/15/clean-power-is-shaking-up-the-global-geopolitics-of-energy&#34;&gt;Clean power is shaking up the global geopolitics of energy, The Economist&lt;/a&gt; (Special report “The new power superpowers”, 2018)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cms.law/en/int/expert-guides/cms-expert-guide-to-hydrogen&#34;&gt;Guide to hydrogen energy law and regulation&lt;/a&gt;,
CMS Law (2021)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.snopes.com/fact-check/1912-article-global-warming&#34;&gt;Did a 1912 newspaper article predict global warming?, Snopes (2016)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://qz.com/817354/scientists-have-been-forecasting-that-burning-fossil-fuels-will-cause-climate-change-as-early-as-1882&#34;&gt;A 1912 news article ominously forecasted the catastrophic effects of fossil fuels on climate change, Quartz (2016)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wallabag.chepec.se/share/616f24831a8776.85091293&#34;&gt;Försvinnande energitillgång, Medborgarutredningen, Christerson et al. (2017)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.esa.int/Enabling_Support/Space_Engineering_Technology/SOLARIS&#34; class=&#34;uri&#34;&gt;https://www.esa.int/Enabling_Support/Space_Engineering_Technology/SOLARIS&lt;/a&gt;
This is pretty cool, space-based solar! Of course, it is still far from being implemented,
but the fact that the EU, USA and China are all investigating it is either promising or
just politics. Time will tell.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body&#34;&gt;
&lt;div id=&#34;ref-Odenweller2022&#34; class=&#34;csl-entry&#34;&gt;
[1] Odenweller, A., Ueckerdt, F., Nemet, G.F., &lt;em&gt;et al.&lt;/em&gt;, &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1038/s41560-022-01097-4&#34;&gt;Probabilistic feasibility space of scaling up green hydrogen supply&lt;/a&gt;&lt;/em&gt;, Nature Energy, v. 7, n. 9, pp. 854–865, Sep. 2022.
&lt;/div&gt;
&lt;div id=&#34;ref-Kopp2018&#34; class=&#34;csl-entry&#34;&gt;
[2] Kopp, G., &lt;span&gt;“&lt;a href=&#34;https://doi.org/10.1016/B978-0-12-409548-9.10366-5&#34;&gt;5.02 - &lt;span&gt;Earth&lt;/span&gt;’s incoming energy: The total solar irradiance&lt;/a&gt;,”&lt;/span&gt; In: Liang, S. (ed), &lt;em&gt;Comprehensive &lt;span&gt;Remote Sensing&lt;/span&gt;&lt;/em&gt;, &lt;span&gt;Oxford&lt;/span&gt;, &lt;span&gt;Elsevier&lt;/span&gt;, pp. 32–66, 2018.
&lt;/div&gt;
&lt;div id=&#34;ref-Hansen2011&#34; class=&#34;csl-entry&#34;&gt;
[3] Hansen, J., Sato, M., Kharecha, P., &lt;em&gt;et al.&lt;/em&gt;, &lt;em&gt;&lt;a href=&#34;https://doi.org/10.5194/acp-11-13421-2011&#34;&gt;Earth’s energy imbalance and implications&lt;/a&gt;&lt;/em&gt;, Atmospheric Chemistry and Physics, v. 11, n. 24, pp. 13421–13449, 2011.
&lt;/div&gt;
&lt;div id=&#34;ref-Lee2020&#34; class=&#34;csl-entry&#34;&gt;
[4] Lee, N., Grunwald, U., Rosenlieb, E., &lt;em&gt;et al.&lt;/em&gt;, &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1016/j.renene.2020.08.080&#34;&gt;Hybrid floating solar photovoltaics-hydropower systems: Benefits and global assessment of technical potential&lt;/a&gt;&lt;/em&gt;, Renewable Energy, v. 162, pp. 1415–1427, Dec. 2020.
&lt;/div&gt;
&lt;div id=&#34;ref-Keith2018&#34; class=&#34;csl-entry&#34;&gt;
[5] Keith, D.W., Holmes, G., Angelo, D.S., &lt;em&gt;et al.&lt;/em&gt;, &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1016/j.joule.2018.05.006&#34;&gt;A process for capturing &lt;span&gt;CO&lt;/span&gt;&lt;span&gt;&lt;span class=&#34;math inline&#34;&gt;\(_2\)&lt;/span&gt;&lt;/span&gt; from the atmosphere&lt;/a&gt;&lt;/em&gt;, Joule, v. 2, n. 8, pp. 1573–1594, Aug. 2018.
&lt;/div&gt;
&lt;div id=&#34;ref-Rau2018&#34; class=&#34;csl-entry&#34;&gt;
[6] Rau, G.H., Willauer, H.D., Ren, Z.J., &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1038/s41558-018-0203-0&#34;&gt;The global potential for converting renewable electricity to negative-&lt;span&gt;CO&lt;/span&gt;&lt;span&gt;&lt;span class=&#34;math inline&#34;&gt;\(_2\)&lt;/span&gt;&lt;/span&gt;-emissions hydrogen&lt;/a&gt;&lt;/em&gt;, Nature Climate Change, v. 8, n. 7, pp. 621–625, Jul. 2018.
&lt;/div&gt;
&lt;div id=&#34;ref-Hamelers2014&#34; class=&#34;csl-entry&#34;&gt;
[7] Hamelers, H.V.M., Schaetzle, O., Paz-García, J.M., &lt;em&gt;et al.&lt;/em&gt;, &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1021/ez4000059&#34;&gt;Harvesting energy from &lt;span&gt;CO&lt;/span&gt;&lt;span&gt;&lt;span class=&#34;math inline&#34;&gt;\(_2\)&lt;/span&gt;&lt;/span&gt; emissions&lt;/a&gt;&lt;/em&gt;, Environmental Science &amp;amp; Technology Letters, v. 1, n. 1, pp. 31–35, Jan. 2014.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes footnotes-end-of-document&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;Although net energy is zero, net entropy is &lt;em&gt;not&lt;/em&gt; zero and is the driving force.&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn2&#34;&gt;&lt;p&gt;The black body temperature of the Earth can be calculated, and
at an average distance from the Sun of 1 AU it yields a globally
averaged equilibrium temperature (at the top of Earth’s atmosphere) of
278 K (5℃). But due to GHG in the atmosphere, the Earth cannot be considered
a black body, but rather a grey body, and the actual globally averaged equilibrium
temperature becomes 290 K (17℃).&lt;a href=&#34;#fnref2&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn3&#34;&gt;&lt;p&gt;Apart from having a long lifetime, CO₂ in the atmosphere works on a time delay.
It takes about 10 years to achieve its full warming effect.&lt;a href=&#34;#fnref3&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn4&#34;&gt;&lt;p&gt;Surface land &lt;em&gt;or&lt;/em&gt; surface water, really.
There are several benefits of putting PV on natural or man-made dams and lakes,
in particular when combined with existing hydropower &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Lee2020&#34;&gt;4&lt;/a&gt;]&lt;/span&gt;,
in that the panels are cooled by the water and simultaneously reduce water
loss via evaporation.
PV can also be combined with other land uses, such as agriculture.&lt;a href=&#34;#fnref4&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Spectrochemical data of the dyes EBT, MB, MO and RB5</title>
      <link>//solarchemist.se/2022/08/06/spectrochemical-properties-dyes/</link>
      <pubDate>Sat, 06 Aug 2022 18:00:00 +0000</pubDate>
      
      <guid>//solarchemist.se/2022/08/06/spectrochemical-properties-dyes/</guid>
      
      <description>

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#spectral-absorption-coefficients&#34; id=&#34;toc-spectral-absorption-coefficients&#34;&gt;Spectral absorption coefficients&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#experimental-notes&#34; id=&#34;toc-experimental-notes&#34;&gt;Experimental notes&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#preparation-of-dye-stock-solutions&#34; id=&#34;toc-preparation-of-dye-stock-solutions&#34;&gt;Preparation of dye stock solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#mixing-alcohol-into-the-aqueous-dye-solutions&#34; id=&#34;toc-mixing-alcohol-into-the-aqueous-dye-solutions&#34;&gt;Mixing alcohol into the aqueous dye solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#configuration-of-the-light-source-and-spectrometer&#34; id=&#34;toc-configuration-of-the-light-source-and-spectrometer&#34;&gt;Configuration of the light-source and spectrometer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#small-study-into-the-ph-and-conductivity-of-aqueous-dye-solutions&#34; id=&#34;toc-small-study-into-the-ph-and-conductivity-of-aqueous-dye-solutions&#34;&gt;Small study into the pH and conductivity of aqueous dye solutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#links-and-notes&#34; id=&#34;toc-links-and-notes&#34;&gt;Links and notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#session-info&#34; id=&#34;toc-session-info&#34;&gt;Session info&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#references&#34; id=&#34;toc-references&#34;&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;In this post we share some experimentally recorded UV-Vis-NIR spectra
and &lt;a href=&#34;https://goldbook.iupac.org/terms/view/M03972&#34;&gt;absorption coefficient&lt;/a&gt;&lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;
curves of the dyes
&lt;strong&gt;eriochrome black T (EBT)&lt;/strong&gt;,
&lt;strong&gt;methylene blue (MB)&lt;/strong&gt;,
&lt;strong&gt;methyl orange (MO)&lt;/strong&gt;, and
&lt;strong&gt;reactive black 5 (RB5)&lt;/strong&gt;
in aqueous solution.
For EBT, MB and MO we also report the absorption coefficient in the presence
of 10% EtOH (by volume).&lt;/p&gt;
&lt;p&gt;This post also includes a &lt;a href=&#34;#small-study-into-the-ph-and-conductivity-of-aqueous-dye-solutions&#34;&gt;small study on pH and conductivity&lt;/a&gt;
at room temperature of the same dyes.&lt;/p&gt;
&lt;p&gt;This post is likely of interest for research into photocatalytic dye degradation,
and the dataset is shared in &lt;a href=&#34;https://codeberg.org/solarchemist.se/2022-08-06-spectrochemical-properties-dyes/src/branch/main/assets&#34;&gt;this blog post’s repo on Codeberg&lt;/a&gt;
(as &lt;a href=&#34;https://finnstats.com/2021/12/11/how-to-read-rda-file-in-r-with-example&#34;&gt;R dataset files&lt;/a&gt;).&lt;/p&gt;
&lt;div id=&#34;spectral-absorption-coefficients&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Spectral absorption coefficients&lt;/h2&gt;
&lt;p&gt;To make the absorption coefficient curves (figure &lt;a href=&#34;#fig:abs-coeff-dyes&#34;&gt;2&lt;/a&gt;) less noisy,
we will start by calculating the average absorbance value inside a wavelength band
&lt;span class=&#34;math inline&#34;&gt;\(\SI{10}{\nm}\)&lt;/span&gt; wide centered on the main absorbance band of each dye.
This band is shown as a shaded yellow area in figure &lt;a href=&#34;#fig:dyes-abs-series&#34;&gt;1&lt;/a&gt; below.&lt;/p&gt;
&lt;p&gt;Unfortunately, I’ve lost the original data for RB5 in water, but we still have the
plot of those measurements, which is shown as an inset.
However, the shape of the absorption coefficient curve of RB5 in only water
can be assumed to very closely follow that of the dye in the presence
of alcohol (figure &lt;a href=&#34;#fig:dyes-abs-series&#34;&gt;1&lt;/a&gt;).&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:dyes-abs-series&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2022/08/06/spectrochemical-properties-dyes/index_files/figure-html/dyes-abs-series-1.png&#34; alt=&#34;UV-Vis spectra of EBT, MB, MO, and RB5 at varying concentrations in aqueous solution with or without the addition of a small amount of alcohol.&#34; width=&#34;720&#34; height=&#34;720&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: UV-Vis spectra of EBT, MB, MO, and RB5 at varying concentrations in aqueous solution with or without the addition of a small amount of alcohol.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;EBT is the only dye that shows isosbestic points between the spectra of the different
solvents. With the exception of MB, the other dyes show only a slight overall intensity
decrease when introducing alcohol into the solvent. MB demonstrates a very obvious,
yet subtle, intensity change in its main shoulder when adding EtOH to the solvent,
which I have discussed my paper &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Ahmed2020&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;EBT is also the only dye (of the four tested) that shows spectral changes dependent
on concentration, which indicates formation of new molecular species at higher
concentrations. In contrast, the other dyes are all well-behaved as the concentration
changes, in the sense that the position and shape of their peaks are independent of
concentration, which indicates that the dye solution contains the same molecular
components irrespective of concentration (within the studied range).&lt;/p&gt;
&lt;p&gt;From the absorption spectra of a series of concentrations and by applying
the Beer-Lambert law we can calculate the absorption coefficients for the measured
wavelength range.&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
A = \epsilon lc \;\Longleftrightarrow\; \epsilon = \frac{A}{lc}
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Given that absorbance is unit-less, and with &lt;span class=&#34;math inline&#34;&gt;\([l]=\si{\cm}\)&lt;/span&gt; and &lt;span class=&#34;math inline&#34;&gt;\([c]=\si{\mol\per\litre}\)&lt;/span&gt;,
then the unit of the molar absorption coefficient is
&lt;span class=&#34;math inline&#34;&gt;\([\epsilon]=\si{\litre\per\mole\per\cm}\)&lt;/span&gt; which is how it is usually given.&lt;/p&gt;
&lt;p&gt;We will calculate the absorption coefficient &lt;span class=&#34;math inline&#34;&gt;\(\epsilon\)&lt;/span&gt; for each wavelength step,
by dye and solvent.Effectively we are calculating one linear fit (abs vs conc) for
each wavelength step.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# this chunk calculates linear fits for every single wavelength step, which is time-consuming
if (file.exists(here::here(&amp;quot;assets/abscoeff.rda&amp;quot;))) {
   abs.coeff &amp;lt;- LoadRData2Variable(here::here(&amp;quot;assets/abscoeff.rda&amp;quot;))
} else {
   # replace both MeOH and EtOH strings with the more generic ROH for easier looping
   df.dye %&amp;lt;&amp;gt;%
      mutate(solution = ifelse(solution == &amp;quot;H2O+MeOH&amp;quot;, &amp;quot;H2O+ROH&amp;quot;, solution)) %&amp;gt;%
      mutate(solution = ifelse(solution == &amp;quot;H2O+EtOH&amp;quot;, &amp;quot;H2O+ROH&amp;quot;, solution))
   # convert df.dye$conc from factor to numeric
   df.dye$conc &amp;lt;-
      df.dye$conc %&amp;gt;% as.character() %&amp;gt;% as.numeric()
   # loop over each spectra by dye and solution
   dyes      &amp;lt;- unique(df.dye$dye)
   solutions &amp;lt;- unique(df.dye$solution)
   wl.steps  &amp;lt;- unique(df.dye$wavelength)
   # hold the results of the looping in a new dataframe
   abs.coeff &amp;lt;-
      data.frame(
         wavelength = rep(wl.steps, length(dyes) * length(solutions)),
         dye = &amp;quot;&amp;quot;,
         solution = &amp;quot;&amp;quot;,
         k = NA,
         m = NA,
         rsq = NA,
         adj.rsq = NA,
         concentrations = &amp;quot;&amp;quot;) # uM
   i &amp;lt;- 0
   # NOTE: this loop is time-consuming, so I&amp;#39;ve intentionally made it chatty
   for (d in 1:length(dyes)) {
      message(&amp;quot;Dye: &amp;quot;, dyes[d])
      if (dyes[d] == &amp;quot;RB5&amp;quot;) {
         # we only have H2O+ROH spectrum for RB5, so we need to reset solutions so the next inner loop doesn&amp;#39;t    fail
         solutions &amp;lt;- &amp;quot;H2O+ROH&amp;quot;
      }
      for (s in 1:length(solutions)) {
         message(&amp;quot;Dye: &amp;quot;, dyes[d], &amp;quot; :: Solution: &amp;quot;, solutions[s])
         # varying conc of a particular dye and solution
         for (w in 1:length(wl.steps)) {
            # to keep track of the current row in abs.coeff, we will use a counter var
            i &amp;lt;- i + 1
            message(&amp;quot;[&amp;quot;, i, &amp;quot;] &amp;quot;, dyes[d], &amp;quot; :: &amp;quot;, solutions[s], &amp;quot; :: &amp;quot;, wl.steps[w], &amp;quot; nm&amp;quot;)
            # temporary dataframe which we will use to calculate linear fits (abs coeff) for each wl step
            intensity.by.wl &amp;lt;-
               df.dye %&amp;gt;%
               filter(dye == dyes[d]) %&amp;gt;%
               filter(solution == solutions[s]) %&amp;gt;%
               filter(wavelength == wl.steps[w]) %&amp;gt;%
               select(sampleid, wavelength, intensity, conc, dye, solution)
            # now we can calculate abs coeff for this solution and dye at the current wavelength
            this.fit &amp;lt;- lm(data = intensity.by.wl, formula = intensity ~ conc)
            # save the concentrations for reference
            abs.coeff$concentrations[i] &amp;lt;-
               paste(sort(intensity.by.wl$conc), collapse = &amp;quot;, &amp;quot;)
            # save R-squared and adjusted R-squared
            abs.coeff$rsq[i] &amp;lt;- summary(this.fit)$r.squared
            abs.coeff$adj.rsq[i] &amp;lt;- summary(this.fit)$adj.r.squared
            # save coefficients of linear fit
            abs.coeff$m[i] &amp;lt;- this.fit$coefficients[1]
            abs.coeff$k[i] &amp;lt;- this.fit$coefficients[2]
            # solution and dye
            abs.coeff$solution[i] &amp;lt;- unique(intensity.by.wl$solution)
            abs.coeff$dye[i] &amp;lt;- unique(intensity.by.wl$dye)
         }
      }
   }
   # adjust units of abs coeffs to L mol-1 cm-1 (from L umol-1 cm-1)
   abs.coeff$k &amp;lt;- 1E6 * abs.coeff$k
   abs.coeff$m &amp;lt;- 1E6 * abs.coeff$m
   # and last, because we are missing H2O-only spectrum for RB5, remove the empty rows in abs.coeff
   # (faster to clean-up in this way than to rewrite this entire loop)
   abs.coeff &amp;lt;- abs.coeff %&amp;gt;% filter(!is.na(k))
   # save abs.coeff
   save(abs.coeff, file = here::here(&amp;quot;assets/abscoeff.rda&amp;quot;))
}&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:abs-coeff-dyes&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2022/08/06/spectrochemical-properties-dyes/index_files/figure-html/abs-coeff-dyes-1.png&#34; alt=&#34;Spectral absorption coefficients in aqueous solution for Eriochrome Black T, methylene blue, methyl orange,  and reactive black 5, as calculated from the absorbance--concentration series shown in figure \@ref(fig:dyes-abs-series).&#34; width=&#34;720&#34; height=&#34;720&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 2: Spectral absorption coefficients in aqueous solution for Eriochrome Black T, methylene blue, methyl orange, and reactive black 5, as calculated from the absorbance–concentration series shown in figure &lt;a href=&#34;#fig:dyes-abs-series&#34;&gt;1&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;!-- here we could present a little walk-through of literature data on these dyes --&gt;
&lt;!-- methylene blue in particular --&gt;
&lt;!-- See the Zotero folder in &#34;06 Results&#34; // &#34;P12&#34; // &#34;dye&#34; --&gt;
&lt;/div&gt;
&lt;div id=&#34;experimental-notes&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Experimental notes&lt;/h2&gt;
&lt;div id=&#34;preparation-of-dye-stock-solutions&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Preparation of dye stock solutions&lt;/h3&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:chemical-structure-dyes&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2022/08/06/spectrochemical-properties-dyes/index_files/figure-html/chemical-structure-dyes-1.svg&#34; alt=&#34;Chemical structures of the dyes, as commonly given.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 3: Chemical structures of the dyes, as commonly given.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Weighed up EBT and MB powder. Used a &lt;strong&gt;Mettler AT261 DeltaRange&lt;/strong&gt; balance at the
XPS room (Ångström bldg 3, level 3). The balance has a readability of &lt;span class=&#34;math inline&#34;&gt;\(\SI{0.01}{\mg}\)&lt;/span&gt;
(&lt;a href=&#34;assets/Mettler_AT261_technical_specification.pdf&#34;&gt;cf. the balance’s technical specs&lt;/a&gt;),
but to make use of it the operator has to press a button (otherwise you get the lower,
but still respectable, &lt;span class=&#34;math inline&#34;&gt;\(\SI{0.1}{\mg}\)&lt;/span&gt; readibility), but I only realised this &lt;em&gt;after&lt;/em&gt;
I had weighed the EBT powder. But at least the MB measurement used the full
sensitivity range of the balance.&lt;/p&gt;
&lt;p&gt;Measured weight of EBT was &lt;span class=&#34;math inline&#34;&gt;\(\SI{46.3}{\mg}\)&lt;/span&gt; (error with respect to calculated weight +0.35%).
Measured weight of MB was &lt;span class=&#34;math inline&#34;&gt;\(\SI{32.01}{\mg}\)&lt;/span&gt; (error with respect to calculated weight +0.08%).
Measured weight of MO was &lt;span class=&#34;math inline&#34;&gt;\(\SI{32.84}{\mg}\)&lt;/span&gt; (error with respect to calculated weight +0.33%)&lt;/p&gt;
&lt;p&gt;All measurements were done using disposable polysterene weighing boats. The MB powder
showed some static charge, so I used an anti-static gun on a weighing boat which
decreased the “jumpiness” of the particles.&lt;/p&gt;
&lt;p&gt;The EBT was likely stored a long time, but the MB and MO were from new, sealed containers.&lt;/p&gt;
&lt;p&gt;Both EBT and MB were easily dissolved in water. EBT caused a lot of air bubbles at
the solution-air interface at the highest concentrations. MO required ultra-sonication
for &lt;span class=&#34;math inline&#34;&gt;\(\SI{10}{\minute}\)&lt;/span&gt; to dissolve all particles.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;mixing-alcohol-into-the-aqueous-dye-solutions&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Mixing alcohol into the aqueous dye solutions&lt;/h3&gt;
&lt;p&gt;For EBT and MB, added ca &lt;span class=&#34;math inline&#34;&gt;\(\SI{2}{\milli\liter}\)&lt;/span&gt; of dye solution using disposable
plastic pipette, then added &lt;span class=&#34;math inline&#34;&gt;\(\SI{200}{\micro\liter}\)&lt;/span&gt; of EtOH with autopipette and
agitated the solution until completely mixed.&lt;/p&gt;
&lt;p&gt;For MO, added precisely &lt;span class=&#34;math inline&#34;&gt;\(\SI{1.8}{\milli\liter}\)&lt;/span&gt; of dye solution using an electronic
auto-pipette, then added &lt;span class=&#34;math inline&#34;&gt;\(\SI{200}{\micro\liter}\)&lt;/span&gt; of EtOH with auto-pipette and
mixed the solution.&lt;/p&gt;
&lt;p&gt;For RB5, added ca &lt;span class=&#34;math inline&#34;&gt;\(\SI{2}{\milli\liter}\)&lt;/span&gt; of dye solution using disposable plastic
pipette, then added &lt;span class=&#34;math inline&#34;&gt;\(\SI{200}{\micro\liter}\)&lt;/span&gt; of MeOH with auto-pipette and mixed
the solution.&lt;/p&gt;
&lt;p&gt;In all cases, the mixing was done directly in PMMA macro cuvettes (&lt;span class=&#34;math inline&#34;&gt;\(SI{1}{\cm}\)&lt;/span&gt; path length).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;configuration-of-the-light-source-and-spectrometer&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Configuration of the light-source and spectrometer&lt;/h3&gt;
&lt;p&gt;Spectrophotometer: OceanOptics HR2000 spectrometer.
Light source with both deuterium and halogen lamps.
Light transmitted from lamp to cuvette and from cuvette to spectrometer using
OceanOptics UV-Vis fibre-optic cables.&lt;/p&gt;
&lt;p&gt;For all experiments reported here we used both the deuterium and tungsten lamps of
the OOHR2000 spectrometer, giving us an effective wavelength range approximately
&lt;span class=&#34;math inline&#34;&gt;\(\SIrange{260}{1000}{\nm}\)&lt;/span&gt; (the spectrum of this light is shown below).&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lamp-output&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2022/08/06/spectrochemical-properties-dyes/index_files/figure-html/lamp-output-1.svg&#34; alt=&#34;Spectrum of deuterium (contributes UV) and tungsten (Vis) lamp measured after transmission through approximately \SI{2}{\metre} of fibre-optic cable and a decimetre of air. The sharp dip at $\SI{950}{\nm}$ is caused by absorption in the fibre-optic cable.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 4: Spectrum of deuterium (contributes UV) and tungsten (Vis) lamp measured after transmission through approximately of fibre-optic cable and a decimetre of air. The sharp dip at &lt;span class=&#34;math inline&#34;&gt;\(\SI{950}{\nm}\)&lt;/span&gt; is caused by absorption in the fibre-optic cable.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:fiber-optical-transmission&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/fiber-transmission.png&#34; alt=&#34;UV-Vis transmittance spectrum of our fibre-optic cable, from calibration experiments courtesy of OceanOptics.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 5: UV-Vis transmittance spectrum of our fibre-optic cable, from calibration experiments courtesy of OceanOptics.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;small-study-into-the-ph-and-conductivity-of-aqueous-dye-solutions&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Small study into the pH and conductivity of aqueous dye solutions&lt;/h2&gt;
&lt;p&gt;I measured pH and conductivity simultaneously for all dye stock solutions,
after allowing the solutions to equilibrate with air for at least two hours.
The pH and conductivity measurements were done using a handheld
Mettler Toledo SevenGo Duo pro™ SG78 pH/ion/conductivity meter.&lt;/p&gt;
&lt;!-- This data has previously been presented in my lab-notebook --&gt;
&lt;!-- [pH measurements of stock solutions under controlled conditions](/lab-notebook/2016/03/29/dye-abs-vs-conc#ph-and-conductivity-of-dye-stock-solutions) --&gt;
&lt;table&gt;
&lt;colgroup&gt;
&lt;col width=&#34;8%&#34; /&gt;
&lt;col width=&#34;6%&#34; /&gt;
&lt;col width=&#34;10%&#34; /&gt;
&lt;col width=&#34;4%&#34; /&gt;
&lt;col width=&#34;19%&#34; /&gt;
&lt;col width=&#34;12%&#34; /&gt;
&lt;col width=&#34;20%&#34; /&gt;
&lt;col width=&#34;16%&#34; /&gt;
&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;sampleid&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;solute&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;C/µM&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;V/mL&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;   pH&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;T(pH)/°C&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;σ/(µS/cm)&lt;/th&gt;
&lt;th align=&#34;right&#34;&gt;T(σ)/°C&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H01AA&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;EBT&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;100.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1000&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.881&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;34.60&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H01AB&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;EBT&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;50.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;500&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.908&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.56&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H01AC&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;EBT&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;20.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;250&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.901&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;9.37&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H01AD&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;EBT&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;500&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;6.254&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.9&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;6.17&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H01AE&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;EBT&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;200&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;6.096&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.34&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H01AF&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;EBT&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;250&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;6.169&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.9&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;3.44&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H02AA&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;100.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1000&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.993&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.7&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10.12&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H02AB&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;50.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;500&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.847&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.9&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;7.31&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H02AC&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;20.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;250&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;6.078&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.1&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;4.52&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H02AD&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;500&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.938&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.9&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;3.67&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H02AE&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;200&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.866&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.9&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;3.08&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H02AF&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;250&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.812&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.9&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2.46&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H02AG&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;250&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.964&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.7&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1.72&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H02AH&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MB&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;0.5&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;200&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;6.145&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;18.9&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1.86&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;19.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H03AA&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MO&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;100.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;1000&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10.45&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;22.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H03AB&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MO&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;50.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;500&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;6.99&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;22.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H03AC&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MO&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;20.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;250&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;4.49&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;22.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H03AD&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MO&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;10.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;500&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;4.53&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;22.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H03AE&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MO&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;5.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;200&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;4.63&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;21.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;H03AF&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;MO&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;2.0&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;250&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;3.22&lt;/td&gt;
&lt;td align=&#34;right&#34;&gt;22.7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The measured pH of deionised (DI) water at the same experimental conditions was
&lt;span class=&#34;math inline&#34;&gt;\(\num{6.024}\)&lt;/span&gt; and its conductivity was &lt;span class=&#34;math inline&#34;&gt;\(\SI{2.35}{\micro\siemens\per\cm}\)&lt;/span&gt;.
Deionised water in contact with air will eventually reach an
equilibrium pH 5.7 (the time it takes to reach equilibrium depends on the volume,
the shape of the vessel, stirring or not, etc., but is generally on the order of a few hours).&lt;/p&gt;
&lt;p&gt;The observed pH values for the different solute concentrations hints at a markedly
different acid-base chemistry for EBT and MB, respectively.
The following plot shows the change in electrolytic conductivity
with concentration for EBT, MB, and MO
(the dashed line is the measured pH of DI water, which for the purposes
of this visualisation lacks a defined concentration):&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2022/08/06/spectrochemical-properties-dyes/index_files/figure-html/lnb-160329-conductivity-conc-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;links-and-notes&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Links and notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Isosbestic_point&amp;amp;oldid=1168244457&#34;&gt;Isosbestic point&lt;/a&gt;, Wikipedia&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://chemistry.stackexchange.com/a/9156&#34;&gt;Equilibrium pH of deionised water in contact with air&lt;/a&gt;, Chemistry SE&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Carbonic_acid&amp;amp;oldid=984518782#pH_and_composition_of_carbonic_acid_solutions&#34;&gt;pH and composition of carbonic acid solutions&lt;/a&gt;, Wikipedia&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.researchgate.net/post/What_is_the_difference_between_distilled_water_and_deionized_water_DI_water2&#34;&gt;Difference between distilled and deionised water&lt;/a&gt;,
ResearchGate&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dailymed.nlm.nih.gov/dailymed/fda/fdaDrugXsl.cfm?setid=fde64824-2be5-4d85-8d57-5098ca6890bb&#34;&gt;Methylene blue, NIH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Conductivity_(electrolytic)&amp;amp;oldid=1175942520&#34;&gt;Electrolytic conductivity&lt;/a&gt;, Wikipedia&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;div style=&#34;border: 2px solid #0066CC; padding-left: 0px; padding-top: 0px; background-color:  #ffffe6; color: black;&#34;&gt;
&lt;pre&gt;&lt;code&gt;## Linux 5.15.0-78-generic #85-Ubuntu SMP Fri Jul 7 15:25:09 UTC 2023 x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.1.3 (2022-03-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 22.04.3 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=sv_SE.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] oceanoptics_0.0.0.9004 common_0.1.2           here_1.0.1            
##  [4] ggrepel_0.9.1          magick_2.7.3           cowplot_1.1.1         
##  [7] ggplot2_3.3.6          knitr_1.39             dplyr_1.0.10          
## [10] git2r_0.30.1           conflicted_1.1.0      
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.9       highr_0.9        bslib_0.4.0      compiler_4.1.3  
##  [5] pillar_1.8.1     jquerylib_0.1.4  tools_4.1.3      digest_0.6.29   
##  [9] jsonlite_1.8.0   evaluate_0.15    memoise_2.0.1    lifecycle_1.0.3 
## [13] tibble_3.1.8     gtable_0.3.0     pkgconfig_2.0.3  rlang_1.0.6     
## [17] cli_3.4.1        DBI_1.1.3        yaml_2.3.5       blogdown_1.10   
## [21] xfun_0.31        fastmap_1.1.0    withr_2.5.0      stringr_1.4.0   
## [25] generics_0.1.3   vctrs_0.5.1      sass_0.4.2       rprojroot_2.0.3 
## [29] grid_4.1.3       tidyselect_1.2.0 glue_1.6.2       R6_2.5.1        
## [33] fansi_1.0.3      rmarkdown_2.16   bookdown_0.27    farver_2.1.1    
## [37] magrittr_2.0.3   scales_1.2.0     htmltools_0.5.3  assertthat_0.2.1
## [41] colorspace_2.0-3 labeling_0.4.2   utf8_1.2.2       stringi_1.7.8   
## [45] munsell_0.5.0    cachem_1.0.6     crayon_1.5.1&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Commit:  5ea2dc4e89159b2773568a88901ec0310004dd71
## Author:  taha@luxor &amp;lt;taha@chepec.se&amp;gt;
## When:    2023-10-14 19:08:20 GMT
## 
##      Published!
##      
## 10 files changed, 782 insertions, 8 deletions
## README                     | -8 +  0  in 1 hunk
## assets/EBT.rda             | -0 +  0  in 0 hunk (binary file)
## assets/MB.rda              | -0 +  0  in 0 hunk (binary file)
## assets/MO.rda              | -0 +  0  in 0 hunk (binary file)
## assets/RB5.rda             | -0 +  0  in 0 hunk (binary file)
## assets/abscoeff.rda        | -0 +  0  in 0 hunk (binary file)
## assets/dyes.rda            | -0 +  0  in 0 hunk (binary file)
## assets/pH-conductivity.csv | -0 + 20  in 1 hunk
## assets/solutions.csv       | -0 + 13  in 1 hunk
## index.Rmd                  | -0 +749  in 1 hunk&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;## Untracked files:
##  Untracked:  index.Rmd.lock~&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body&#34;&gt;
&lt;div id=&#34;ref-Ahmed2020&#34; class=&#34;csl-entry&#34;&gt;
[1] Ahmed, T., Edvinsson, T., &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1021/acs.jpcc.9b11229&#34;&gt;Optical quantum confinement in ultrasmall &lt;span&gt;ZnO&lt;/span&gt; and the effect of size on their photocatalytic activity&lt;/a&gt;&lt;/em&gt;, The Journal of Physical Chemistry C, v. 124, n. 11, pp. 6395–6404, Mar. 2020.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes footnotes-end-of-document&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;Also known by the outdated term &lt;a href=&#34;https://en.wikipedia.org/wiki/Attenuation_coefficient&#34;&gt;attenuation coefficient&lt;/a&gt;.&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Sources and license</title>
      <link>//solarchemist.se/source/</link>
      <pubDate>Mon, 13 Jun 2022 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/source/</guid>
      
      <description>&lt;p&gt;Unless otherwise noted,
text and figures on this site are licensed under
&lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0&#34;&gt;Creative Commons BY-SA v4.0&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0&#34;&gt;&lt;img src=&#34;assets/ccbysa.png&#34; alt=&#34;Creative Commons BY-SA&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.gnu.org/licenses/gpl-3.0.en.html&#34;&gt;&lt;img src=&#34;assets/gplv3.png&#34; alt=&#34;GNU GPLv3&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Code is licensed under &lt;a href=&#34;https://www.gnu.org/licenses/gpl-3.0.en.html&#34;&gt;GPL v3&lt;/a&gt;,
with the source code of this site available at
&lt;a href=&#34;https://codeberg.org/solarchemist/solarchemist.se&#34;&gt;Codeberg&lt;/a&gt;.
Each blog post has its
&lt;a href=&#34;https://codeberg.org/solarchemist/solarchemist.se/src/branch/main/content/post&#34;&gt;own git repository&lt;/a&gt;
(using so-called &lt;a href=&#34;https://chrisjean.com/git-submodules-adding-using-removing-and-updating/&#34;&gt;&lt;em&gt;git submodules&lt;/em&gt;&lt;/a&gt;)
inside that main repository.&lt;/p&gt;
&lt;!-- https://get-it-on.codeberg.org --&gt;
&lt;p&gt;&lt;a href=&#34;https://codeberg.org/solarchemist/solarchemist.se&#34;&gt;&lt;img src=&#34;assets/codeberg-badge-bd0000-288.png&#34; alt=&#34;Blog source code on Codeberg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Feel free to comment on this blog using &lt;a href=&#34;https://hypothes.is/&#34;&gt;hypothes.is&lt;/a&gt;
(available from the right sidebar).
If you have a more technical comment, please feel free to open an issue in either
the &lt;a href=&#34;https://codeberg.org/solarchemist/solarchemist.se&#34;&gt;main blog repo&lt;/a&gt; or in
&lt;a href=&#34;https://codeberg.org/solarchemist/solarchemist.se/src/branch/main/content/post&#34;&gt;a specific blog post&amp;rsquo;s repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://hypothes.is&#34;&gt;&lt;img src=&#34;assets/hypothesis-288.png&#34; alt=&#34;hypothes.is - an annotating layer for the web&#34;&gt;&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Using Python and RSS to play Youtube channels on the desktop</title>
      <link>//solarchemist.se/2022/05/20/ttrss-video-mpv/</link>
      <pubDate>Fri, 20 May 2022 20:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2022/05/20/ttrss-video-mpv/</guid>
      
      <description>


&lt;p&gt;For a long time I was never attracted to the concept of youtube “channels”,
being put off by the required buy-in to the youtube ecosystem and by their awful
web player, unskippable ads, and more.&lt;/p&gt;
&lt;p&gt;Until one day I realised that I could
&lt;a href=&#34;https://links.solarchemist.se/shaare/IoSApQ&#34;&gt;subscribe to youtube channels&lt;/a&gt;
using my own RSS reader, and without the need for any google account.
With that, my interest in youtube channels experienced a resurgence, and within
a few months, my RSS reader listed over a 100 video feeds.&lt;/p&gt;
&lt;p&gt;Unfortunately, although most RSS readers are excellent for following mostly
text-based content, the experience of watching videos leaves something to be
said about ease of use.
This is how a typical session could look like in TinyTinyRSS, with all video
feeds organised into a single category, i.e., a single list):&lt;/p&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
&lt;video controls width=&#34;600&#34; poster=&#34;https://public.solarchemist.se/images/ttrss-web-interface.jpg&#34;&gt;
&lt;source src=&#34;assets/ttrss-web-interface.webm&#34; type=&#34;video/webm&#34;&gt;
&lt;p&gt;
Your browser does not support embedded webm video, but you can download
&lt;a href=&#34;assets/ttrss-web-interface.webm&#34;&gt;the video here&lt;/a&gt;
&lt;/p&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;In this post I will describe the simple tool that I have unimaginatively named
&lt;code&gt;ttrss-video-mpv&lt;/code&gt; and which I glued together from
the &lt;a href=&#34;https://tt-rss.org/wiki/ApiReference&#34;&gt;TinyTinyRSS API&lt;/a&gt;,
a &lt;a href=&#34;https://github.com/Vassius/ttrss-python&#34;&gt;Python library&lt;/a&gt;
to access said API, and a few lines of bash to tie it into my desktop environment
of choice, &lt;a href=&#34;https://i3wm.org&#34;&gt;i3wm&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&#34;rss-is-awesome&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;RSS is awesome!&lt;/h2&gt;
&lt;p&gt;But first, a short primer on why RSS is awesome.
RSS is just XML (that is, structured data, no styling) which makes it easily
machine-readable and easy to let your reader/client software apply whatever
styling/layout suits you best. This is valuable for anyone who wants to
control their viewing/reading experience to their own needs or likes.&lt;/p&gt;
&lt;p&gt;RSS is a &lt;em&gt;de facto&lt;/em&gt; standard syndication system for websites (it has been
around since before social media).&lt;/p&gt;
&lt;p&gt;All of this makes RSS accessible and &lt;em&gt;useful&lt;/em&gt;.
I don’t recall where I read the following, so I hope I am not mischaracterising here,
but in essence, an RSS feed is just another way to publish a website:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTML (plus CSS, JS, etc.) + HTTP → website&lt;/li&gt;
&lt;li&gt;XML + HTTP → RSS feed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;RSS is an umbrella term, and encompasses &lt;a href=&#34;https://www.xml.com/pub/a/2002/12/18/dive-into-xml.html&#34;&gt;several different versions of both
the RSS and Atom formats&lt;/a&gt;.
In this post I’ll simply use the label “RSS”, and by that mean both Atom and RSS.&lt;/p&gt;
&lt;p&gt;All websites should publish RSS feeds!&lt;/p&gt;
&lt;p&gt;Let’s round off this ode to RSS with the unimitable words of
&lt;a href=&#34;http://feliciaday.com/blog/rss-rant/&#34;&gt;Felicia Day&lt;/a&gt;:
&lt;!-- via https://rubenerd.com/felicia-days-rant-about-rss/ --&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;RSS is a way to consume a &lt;strong&gt;lot&lt;/strong&gt; of information very quickly, and &lt;strong&gt;store&lt;/strong&gt; it
in nice categories if you miss it.
So I can catch up with a small blog’s output at the end of the week and, if I
so choose, read &lt;strong&gt;every&lt;/strong&gt; article easily in one sitting.
You think on Friday I’m gonna go browse that same site’s Twitter feed on their
page (digging through all the messy @ replies) and see what they did that week?!
Or go to their Facebook page that is littered with contests?
No way dude, I’m too busy for that!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&#34;ttrss-video-mpv&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;ttrss-video-mpv&lt;/h2&gt;
&lt;p&gt;If you just want to &lt;a href=&#34;https://codeberg.org/solarchemist/ttrss-video-mpv&#34;&gt;see the code, it’s available on codeberg&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And here is how it looks in action, when used with the
&lt;a href=&#34;https://github.com/davatorium/rofi&#34;&gt;rofi application launcher&lt;/a&gt;
on the i3 window manager:&lt;/p&gt;
&lt;!-- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video --&gt;
&lt;div style=&#34;text-align: center&#34;&gt;
&lt;video controls width=&#34;720&#34; poster=&#34;https://public.solarchemist.se/images/rofi-script-mpv.jpg&#34;&gt;
&lt;source src=&#34;assets/rofi-script-mpv.webm&#34;&gt;
&lt;p&gt;
Your browser does not support embedded webm video, but you can download
&lt;a href=&#34;assets/rofi-script-mpv.webm&#34;&gt;the video here&lt;/a&gt;
&lt;/p&gt;
&lt;/video&gt;
&lt;/div&gt;
&lt;p&gt;This way, following your youtube channels becomes almost as easy as following
any other stream.&lt;/p&gt;
&lt;p&gt;Note that this tool only works for the &lt;a href=&#34;https://tt-rss.org&#34;&gt;TinyTinyRSS&lt;/a&gt; feed reader,
and assumes you have installed bash, python, &lt;a href=&#34;https://mpv.io&#34;&gt;mpv&lt;/a&gt; and
&lt;a href=&#34;https://github.com/ytdl-org/youtube-dl&#34;&gt;youtube-dl&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Folllowing non-youtube video channels is straight-forward, assuming they offer
an RSS feed, thanks to the
&lt;a href=&#34;https://github.com/ytdl-org/youtube-dl/blob/master/docs/supportedsites.md&#34;&gt;massive list of websites supported by &lt;code&gt;youtube-dl&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;ideas-for-future-development&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Ideas for future development?&lt;/h2&gt;
&lt;p&gt;Could we achieve similar functionality on Android devices?
Today, on Android, I watch videos by browsing the &lt;a href=&#34;https://srv.tt-rss.org/fdroid/&#34;&gt;TTRSS app&lt;/a&gt;
and opening videos in &lt;a href=&#34;https://github.com/TeamNewPipe/NewPipe/&#34;&gt;NewPipe&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But creating a functionally similar playback of all videos in Android would require
developing our own app for starters (and I’ve no experience with that)
and a way to access the TinyTinyRSS API plus some way to use youtube-dl.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;notes-and-links&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Notes and links&lt;/h2&gt;
&lt;p&gt;I created the screencast GIFs using &lt;a href=&#34;https://github.com/phw/peek&#34;&gt;peek&lt;/a&gt;
and &lt;a href=&#34;https://gitlab.com/screenkey/screenkey/&#34;&gt;screenkey&lt;/a&gt;. My linkblog has a list
of &lt;a href=&#34;https://links.solarchemist.se/shaare/t4lh4w&#34;&gt;screen capture software&lt;/a&gt;
as well as a short note on how to
&lt;a href=&#34;https://links.solarchemist.se/shaare/IoSApQ&#34;&gt;subscribe to Youtube channels using RSS&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To just watch a random collection of recent Youtube videos, there’s &lt;a href=&#34;http://astronaut.io/&#34;&gt;Astronaut&lt;/a&gt;,
code repo &lt;a href=&#34;https://github.com/wonga00/astronaut&#34;&gt;here&lt;/a&gt; and
&lt;a href=&#34;http://nymag.com/intelligencer/2017/01/astronaut-io-is-the-dose-of-everyday-joy-you-need-today.html&#34;&gt;NY Magazine article here&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&#34;use-rss-to-follow-new-content&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Use RSS to follow new content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://jamiesnotes.com/blog/2019/06/rss-makes-the-web-tolerable-again/&#34;&gt;RSS makes the web tolerable again&lt;/a&gt;,
Jamie Adams, 2019&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://laurakalbag.com/how-to-read-rss-in-2020/&#34;&gt;How to read RSS in 2020&lt;/a&gt;, Laura Kalbag, 2020&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://secluded.site/consuming-news/&#34;&gt;Consuming News&lt;/a&gt;, Amolith, 2021&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://techrights.org/2021/02/06/rss-feeds-www/&#34;&gt;Turn to RSS Feeds to Regain Control of the World Wide Web&lt;/a&gt;,
Roy Schestowitz, 2012. &lt;a href=&#34;https://news.ycombinator.com/item?id=26047846&#34;&gt;HackerNews thread&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://motherboard.vice.com/en_us/article/a3mm4z/the-rise-and-demise-of-rss&#34;&gt;Reports of RSS’s demise have been greatly exaggerated&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;self-host-your-rss-reader&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Self-host your RSS reader&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://reddit.com/r/selfhosted/comments/hyfpjw/do_you_self_host_a_rss_reader/&#34;&gt;Do you self-host an RSS reader? r/selfhosted&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;watch-youtube-using-non-google-clients-e.g.-rss-readers&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Watch youtube using non-google clients (e.g., RSS readers)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://secluded.site/replacing-youtube-invidious/&#34;&gt;Replacing YouTube &amp;amp; Invidious&lt;/a&gt;, Amolith, 2021&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://eggfreckles.net/notes/youtube-rss&#34;&gt;Youtube RSS&lt;/a&gt;, Egg Freckles, 2020&lt;/li&gt;
&lt;li&gt;Vivaldi browser comes with &lt;a href=&#34;https://vivaldi.com/blog/desktop/youtube-rss-support-vivaldi-browser-snapshot-2131-8/&#34;&gt;Youtube channel RSS subscription built-in&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://hunden.linuxkompis.se/2020/07/29/an-introduction-to-web-feeds.html&#34;&gt;Introduction to web feeds&lt;/a&gt;
and how to subscribe to Youtube channels using RSS&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://theorangeone.net/posts/consuming-youtube-through-rss/&#34;&gt;Consuming YouTube through RSS: Reclaim control of your subscriptions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://drewdevault.com/2016/11/16/Getting-on-without-Google.html&#34;&gt;Drew DeVault uses RSS&lt;/a&gt;,
an RSS-to-email program along with some filters in his email inbox, and a custom keybinding
in his mail client (mutt) that identifies the youtube URL and plays it with mpv.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/mxpv/podsync&#34;&gt;Listen to any Youtube/Vimeo channels in podcast format&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;watch-youtube-videos-via-rss-in-mpv-or-youtube-dl&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Watch youtube videos via RSS in mpv or youtube-dl&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://reddit.com/r/emacs/comments/hbdlv8/elfeed_mpv_youtube/&#34;&gt;Elfeed + MPV + YouTube&lt;/a&gt;, r/emacs&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://reddit.com/r/emacs/comments/7usz5q/youtube_subscriptions_using_elfeed_mpv_no_browser/&#34;&gt;Youtube subscriptions using elfeed &amp;amp; mpv&lt;/a&gt;,
r/emacs&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://forums.freebsd.org/threads/use-newsboat-rss-reader-and-mpv-to-subscribe-and-play-bsdnow-youtube-feed.67600/&#34;&gt;Use Newsboat rss reader and mpv to subscribe and play bsdnow youtube feed&lt;/a&gt;,
FreeBSD forums&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://the-privacy-captain.net/youtube-without-personalized-recommendations&#34;&gt;Youtube without (personalized) recommendations&lt;/a&gt;,
The Privacy Captain&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://reddit.com/r/rss/comments/j3qn9k/opening_youtube_videos_with_mpv_in_liferea/&#34; class=&#34;uri&#34;&gt;https://reddit.com/r/rss/comments/j3qn9k/opening_youtube_videos_with_mpv_in_liferea/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;what-is-rss&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;What is RSS&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.w3schools.com/XML/xml_rss.asp&#34;&gt;A rather dry description of the RSS format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.xml.com/pub/a/2002/12/18/dive-into-xml.html&#34;&gt;Technical description of the RSS formats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.rssboard.org/rss-specification&#34;&gt;RSS 2.0 specification&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Credits</title>
      <link>//solarchemist.se/credits/</link>
      <pubDate>Mon, 09 Aug 2021 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/credits/</guid>
      
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;I could not have created this website without the prior work of many others,
who generously chose to publish their work on the web and to license it freely.&lt;/p&gt;
&lt;p&gt;These are some of the major building blocks of this website:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;, a very fast static site generator.&lt;/li&gt;
&lt;li&gt;My own &lt;a href=&#34;https://github.com/solarchemist/ghostwriter/&#34;&gt;fork&lt;/a&gt; of
the Hugo theme &lt;a href=&#34;https://github.com/jbub/ghostwriter&#34;&gt;Ghostwriter&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The R packages &lt;a href=&#34;https://github.com/rstudio/blogdown&#34;&gt;blogdown&lt;/a&gt;
and &lt;a href=&#34;https://yihui.name/knitr/&#34;&gt;knitr&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The extremely versatile document conversion tool &lt;a href=&#34;https://pandoc.org/&#34;&gt;pandoc&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.mathjax.org/&#34;&gt;MathJax&lt;/a&gt;, a client-side JavaScript implementation of LaTeX.&lt;/li&gt;
&lt;li&gt;Icons from &lt;a href=&#34;https://forkawesome.github.io/Fork-Awesome/&#34;&gt;Fork Awesome&lt;/a&gt;
and &lt;a href=&#34;https://jpswalsh.github.io/academicons/&#34;&gt;Academicons&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The posts on this blog are written in &lt;a href=&#34;https://bookdown.org/yihui/rmarkdown/basics.html&#34;&gt;R Markdown&lt;/a&gt;,
with &lt;a href=&#34;https://codeberg.org/taha/solarchemist.se/src/branch/master/content/post&#34;&gt;source code for each post available&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to pandoc and MathJax, the R Markdown format allows us to use familiar LaTeX notation
and a bunch of vital academic-blogging features such as citations, quotes, and footnotes in
our blog posts.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Creating a composite gif with multiple gganimate panels</title>
      <link>//solarchemist.se/2021/08/02/composite-gif-gganimate/</link>
      <pubDate>Mon, 02 Aug 2021 20:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2021/08/02/composite-gif-gganimate/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2021/08/02/composite-gif-gganimate/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;The topic for this blog post is how to create a composite gif made up of multiple gganimate
objects, overlaid on top of one another.&lt;/p&gt;
&lt;p&gt;This is not fundamentally novel, as these abilities are hinted at in the documentation
of both &lt;a href=&#34;https://github.com/thomasp85/gganimate/wiki/Animation-Composition&#34;&gt;gganimate&lt;/a&gt;
and &lt;a href=&#34;https://docs.ropensci.org/magick/reference/composite.html&#34;&gt;magick&lt;/a&gt;,
but to my knowledge this is the first actual demonstration of a multi-panel composite of
overlaid gif animations using gganimate and magick.&lt;/p&gt;
&lt;p&gt;My original reason for attempting this animation was to make an eye-catching
centerpiece for &lt;a href=&#34;https://isf2021-rsc.ipostersessions.com/Default.aspx?s=1A-3F-3B-A7-1C-23-CF-E3-A7-43-0B-A4-21-13-13-04&#34;&gt;a poster&lt;/a&gt;
we presented at the &lt;a href=&#34;https://www.rsc.org/events/detail/46336/Info&#34;&gt;ISF 2021 conference&lt;/a&gt;,
and since the conference was entirely web-based (thanks COVID-19!) and the
figure I was basing it on was created with ggplot2,
the idea of creating a gif using gganimate was not far-fetched.&lt;/p&gt;
&lt;div id=&#34;the-original-static-multi-panel-plot&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The original, static, multi-panel plot&lt;/h2&gt;
&lt;p&gt;In the work described in our paper published last year (see citation in figure caption)
we tracked a chemical reaction of a colloidal solution of zinc oxide nanoparticles (ZnO NPs)
in the presence of an common dye (methylene blue, MB) under simulated
solar illumination using UV/Vis absorbance spectroscopy.&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:unnamed-chunk-3&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/fig-Ahmed-JPhysChemC-2020.png&#34; alt=&#34;Reproduced from [*J. Phys. Chem. C* 2020, 124, 11, 6395](https://doi.org/10.1021/acs.jpcc.9b11229).&#34; width=&#34;1020&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: Reproduced from &lt;a href=&#34;https://doi.org/10.1021/acs.jpcc.9b11229&#34;&gt;&lt;em&gt;J. Phys. Chem. C&lt;/em&gt; 2020, 124, 11, 6395&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Since we measured a full spectrum every minute, and the reaction usually ran for over 100 minutes,
it was natural to display the data as a time evolution series, showing how the spectral bands
change over the course of the reaction.&lt;/p&gt;
&lt;p&gt;From the band edge, we &lt;a href=&#34;https://en.wikipedia.org/wiki/Tauc_plot&#34;&gt;deduced the optical band gap&lt;/a&gt; of the ZnO NPs,
from which we could calculate the average diameter of the NPs.
From the MB absorption band we got the absorbance of MB,
which decreased over time as the photocatalyst degraded the dye.&lt;/p&gt;
&lt;p&gt;So, not the most polished plot ever, but I tend to value technicality over aesthestics
most days of the week. The plot was created exclusively using ggplot2,
and in so doing I supposed we lived up to the sentiment expressed by Hadley Wickham
in this &lt;a href=&#34;https://links.solarchemist.se/shaare/AxpsQA&#34;&gt;2020 interview by Will Chase&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I hope that more people continue to express visualizations in a programming language,
rather than a point and click tool. That’s my hope for the next 20 years, that it
perchance
becomes a given that code is the language of data science and data visualization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/solarchemist/preprint-repro-jpcc2020/blob/1a7bb08f89dd10120a9c3be7f1b283a3bdd82df2/200-code.Rnw#L834&#34;&gt;source code generating the static plot&lt;/a&gt;
is published as part of the &lt;a href=&#34;https://github.com/solarchemist/preprint-repro-jpcc2020/&#34;&gt;git repository of the paper&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I should note, that we use a few technical tricks (for lack of a better word) in this plot,
for example,
the plotted absorbance values are squared and at the same time the ordinate is shown
using a square-root transform. This allows us to visually magnify the MB absorbance bands,
which would otherwise be dwarfed by the prominent band edge absorbance.
We use a similar trick for the abscissa, by plotting it against the energy scale instead
of the wavelength scale, which has the effect of expanding the band edge region horizontally,
making it much easier to follow the shift of the band edge over time.&lt;/p&gt;
&lt;p&gt;Finally, to make the plot more information-dense (chemists just hate to leave unused whitespace in plots),
we made use of the empty space created in the plot by our stretching and squeezing of the axes
by plotting the derived quantities from the band edge (band gap and particle diameter) and the fitted
absorbance as inset plots (we used &lt;code&gt;grid::viewport()&lt;/code&gt; to position the insets).&lt;/p&gt;
&lt;p&gt;Now, let’s see how we went about “translating” this into a multi-panel animation.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;animated-plot-with-multiple-overlaid-panels&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Animated plot with multiple overlaid panels&lt;/h2&gt;
&lt;p&gt;Here’s the animated plot:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;assets/animation-composite.gif&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;For the intrepid reader who wants to see it all,
the &lt;a href=&#34;https://codeberg.org/taha/2021-08-02-composite-gif-gganimate&#34;&gt;full source code of this blog post is available&lt;/a&gt;.
For everyone else, the following chunks demonstrate just the &lt;code&gt;ggplot2::&lt;/code&gt;, &lt;code&gt;gganimate::&lt;/code&gt;
and &lt;code&gt;magick::&lt;/code&gt; functions we used to build the animated plot above.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;nth_spectra &amp;lt;- 1
this_data &amp;lt;-
   pc_abs_small_N04H_nostir %&amp;gt;%
   filter(time_abs %in% 
      seq(0, length(unique(pc_abs_small_N04H_nostir$time_abs)), 
         by = nth_spectra))
this_condensed &amp;lt;- condensed_abs_small_N04H_nostir
this_ceiling &amp;lt;- ceiling_pc_abs_small_N04H_nostir
this_fityk &amp;lt;- 
   fityk_peaks_small_N04H_nostir_MB_max %&amp;gt;%
   # rename to conform with the name used in this_data and this_ceiling
   rename(time_exp = spectra)
mb_yoffset &amp;lt;- 220
cg_xoffset &amp;lt;- 500
cg_width &amp;lt;- 576
cg_height &amp;lt;- 324
# this height adjustment makes the plot panels of both insets equally sized
# necessary because only the bottom inset includes x-axis title and labels
mb_height &amp;lt;- cg_height - 45
# note, mb_yoffset actually pertains to the edge/diam plots, and vice versa
edge_yoffset &amp;lt;- mb_yoffset + mb_height
diam_yoffset &amp;lt;- mb_yoffset&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For convenience, I rename the dataframes that will make up the different plots,
and define coordinates and dimensions (in pixels) of the inset plots.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;p &amp;lt;-
   ggplot() +
   geom_line(
      data = this_data,
      colour = &amp;quot;#5682a7&amp;quot;,
      aes(x = eV, y = sqabs, group = sampleid)) +
   ## Tauc linear fits
   geom_smooth(
      data = subset(this_ceiling, fitted == TRUE),
      aes(x = eV, y = sqabs, group = time_exp),
      method = &amp;quot;lm&amp;quot;,
      formula = &amp;quot;y ~ x&amp;quot;,
      se = FALSE,
      size = 0.2,
      colour = alpha(&amp;quot;#D5B450&amp;quot;, 0.75), 
      linetype = 1,
      fullrange = TRUE) +
   # text box &amp;quot;ZnO band edge&amp;quot;
   annotate(
      &amp;quot;label&amp;quot;, 
      x = 3.35, y = 4.5, 
      label = &amp;quot;ZnO band edge:\ngrowing NPs&amp;quot;,
      size = 5, label.padding = unit(0.4, &amp;quot;lines&amp;quot;)) +
   # text box &amp;quot;MB abs band&amp;quot;
   annotate(
      &amp;quot;label&amp;quot;, 
      x = wavelength2energy(MB_band), y = 1.5,
      label = &amp;quot;MB abs band:\ndegradation&amp;quot;,
      size = 5, label.padding = unit(0.4, &amp;quot;lines&amp;quot;)) +
   # axis labels
   labs(
      x = &amp;quot;Energy/eV&amp;quot;, y = &amp;quot;(Abs)²&amp;quot;,
      title = 
         paste(
            &amp;quot;Tracking the growth of a ZnO photocatalyst and its effectiveness&amp;quot;, 
            &amp;quot;at photodegradation over time, *t*/min = {round(frame_along, 0)}&amp;quot;),
      subtitle = 
         paste(
            &amp;quot;by *in-situ* UV/Vis absorption spectroscopy&amp;quot;, 
            &amp;quot;under simulated solar irradiation&amp;quot;)) +
   # secondary x-axis (wavelength)
   scale_x_continuous(
      breaks = seq(1, 5, 0.5),
      sec.axis = sec_axis(~ 1239.842 / ., name = &amp;quot;Wavelength/nm&amp;quot;)) +
   scale_y_sqrt(expand = c(0, 0.05), breaks = seq(0, 8)) +
   coord_cartesian(xlim = c(1.5, 4.2), ylim = c(0, 7.5)) +
   theme_bw() +
   theme(
      legend.position = &amp;quot;none&amp;quot;,
      axis.title = element_text(size = 14),
      axis.text = element_text(size = 12),
      plot.title = element_markdown(size = 14),
      plot.subtitle = element_markdown(size = 12))
# create animated plot
p_anim &amp;lt;- p + transition_reveal(along = time_exp)
p_anim_gif &amp;lt;-
   animate(
      plot = p_anim, 
      renderer = gifski_renderer(),
      width = 1920, height = 1200, units = &amp;quot;px&amp;quot;,
      res = 150, # larger res makes all plot elements appear bigger
      # one frame per UV/Vis spectrum
      nframes = max(this_data$time_exp))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It is definitely nice to be able to use Markdown in the title, subtitle and text annotations,
and the functions of the &lt;code&gt;ggtext::&lt;/code&gt; package allows us to do that.&lt;/p&gt;
&lt;p&gt;We used the gifski renderer, which is the default, but I think it requires
the gifski package to be installed on the system.
I created an &lt;a href=&#34;https://codeberg.org/ansible/gifski&#34;&gt;ansible role&lt;/a&gt; to take care of that.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;p_mb &amp;lt;- 
   ggplot(data = this_fityk %&amp;gt;% filter(peakno %% 2 == 1)) +
   geom_errorbar(
      colour = alpha(&amp;quot;#0B096C&amp;quot;, 0.4),
      size = 0.65,
      aes(
         x = time_exp, 
         group = seq_along(time_exp),
         ymin = errors_min(height),
         ymax = errors_max(height))) +
   geom_point(
      colour = &amp;quot;black&amp;quot;,
      size = 0.5,
      aes(
         x = time_exp, 
         group = seq_along(time_exp),
         y = height)) +
   labs(x = &amp;quot;*t*/min&amp;quot;, y = &amp;quot;Abs (fitted height)&amp;quot;) +
   scale_y_continuous(
      # easiest way to make certain this panel matches width of diam
      # is to give both the same sec_axis
      sec.axis = 
         sec_axis(
            trans = ~., 
            name = &amp;quot;Particle diameter/nm&amp;quot;, 
            breaks = seq(0, 0.4, 0.2), 
            labels = c(3,4,5))) +
   theme_bw() +
   theme(
      legend.position = &amp;quot;none&amp;quot;,
      axis.title.x = element_markdown(),
      axis.title.y.right = element_text(colour = NA),
      axis.text.y.right = element_text(colour = NA),
      axis.ticks.y.right = element_blank(),
      # make area outside panel transparent
      plot.background = element_rect(fill = NA, colour = NA))
# create animated plot
p_mb_anim &amp;lt;- p_mb + transition_reveal(along = time_exp)
p_mb_anim_gif &amp;lt;-
   animate(
      plot = p_mb_anim,
      renderer = gifski_renderer(),
      width = cg_width, height = cg_height, units = &amp;quot;px&amp;quot;,
      res = 150,
      nframes = max(this_data$time_exp))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The MB inset plot is pretty straight-forward.
In all the insets, we continue to &lt;code&gt;transition_reveal&lt;/code&gt; along the same variable, and we use
the same number of frames as in the main plot.&lt;/p&gt;
&lt;p&gt;Note the use of &lt;code&gt;seq_along()&lt;/code&gt; in the group aesthestics, which is necessary for the visual
effect of the data points sequentially revealing themselves (with previously shown points
remaining visible).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;main_gif &amp;lt;- image_read(p_anim_gif)
mb_gif &amp;lt;- image_read(p_mb_anim_gif)
cg_offset &amp;lt;- paste0(&amp;quot;+&amp;quot;, cg_xoffset, &amp;quot;+&amp;quot;, edge_yoffset)
cg_gravity &amp;lt;- &amp;quot;NorthWest&amp;quot;
main_mb_gif &amp;lt;- 
   image_composite(
      image = main_gif[1], 
      composite_image = mb_gif[1], 
      offset = cg_offset,  
      gravity = cg_gravity)
for (i in 2:max(this_data$time_exp)) {
   combined &amp;lt;- 
      image_composite(
         image = main_gif[i],
         composite_image = mb_gif[i],
         offset = cg_offset,  
         gravity = cg_gravity)
   main_mb_gif &amp;lt;- c(main_mb_gif, combined)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With both the main plot and the first inset created (as gganimate objects), it is time to
create the first composite animation.
The loop is a little awkward, and can probably be coded more efficiently, but hey, it works.&lt;/p&gt;
&lt;p&gt;This gave us a new gganimate object, &lt;code&gt;main_mb_gif&lt;/code&gt;, consisting of the main plot and one inset.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;p_edge &amp;lt;- 
   ggplot(data = this_condensed) +
   geom_errorbar(
      size = 0.65,
      colour = alpha(&amp;quot;#4387BF&amp;quot;, 0.2),
      aes(
         x = time_exp, 
         group = seq_along(time_exp),
         ymin = errors_min(fit_Eg),
         ymax = errors_max(fit_Eg))) +
   geom_point(
      shape = 21,
      size = 0.65,
      fill = &amp;quot;#D5B450&amp;quot;,
      colour = &amp;quot;#4387BF&amp;quot;,
      aes(
         x = time_exp, 
         group = seq_along(time_exp),
         y = fit_Eg)) +
   labs(x = &amp;quot;&amp;quot;, y = &amp;quot;Band gap/eV&amp;quot;) +
   scale_x_continuous() +
   scale_y_continuous(
      sec.axis = 
         sec_axis(
            trans = ~., 
            name = &amp;quot;Particle diameter/nm&amp;quot;, 
            breaks = seq(3.5, 3.8, 0.1), 
            labels = c(3,4,5,6))) +
   theme_bw() +
   theme(
      legend.position = &amp;quot;none&amp;quot;,
      axis.title.x = element_blank(),
      axis.text.x = element_blank(),
      axis.title.y = element_text(colour = &amp;quot;#4387BF&amp;quot;),
      axis.text.y = element_text(colour = &amp;quot;#4387BF&amp;quot;),
      axis.title.y.right = element_text(colour = NA),
      axis.text.y.right = element_text(colour = NA),
      axis.ticks.y.right = element_blank(),
      # make area outside panel transparent
      plot.background = element_rect(fill = NA, colour = NA))
# create animated plot
p_edge_anim &amp;lt;- p_edge + transition_reveal(along = time_exp)
p_edge_anim_gif &amp;lt;- 
   animate(
      plot = p_edge_anim,
      renderer = gifski_renderer(),
      width = cg_width, height = mb_height, units = &amp;quot;px&amp;quot;, 
      res = 150,
      nframes = max(this_data$time_exp))
edge_gif &amp;lt;- image_read(p_edge_anim_gif)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For the bottom one of the two stacked insets (&lt;code&gt;p_edge&lt;/code&gt; and &lt;code&gt;p_diam&lt;/code&gt; will be drawn on top of each other),
we need to start getting a little messy with our code.&lt;/p&gt;
&lt;p&gt;In order to precisely match the dimensions of the two stacked plots,
and since the bottom one will have a left y-axis whereas the top one needs a right-side y-axis,
both plots get dual y-axes, where the bottom one is drawn invisibly by setting its theme
elements to &lt;code&gt;colour=NA&lt;/code&gt;.
We just need to make sure that both y-axes of both plots occupy the same amount of horizontal space,
which we do by setting the &lt;code&gt;labels&lt;/code&gt; of each so they are identical.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;cg_offset &amp;lt;- paste0(&amp;quot;+&amp;quot;, cg_xoffset, &amp;quot;+&amp;quot;, mb_yoffset)
cg_gravity &amp;lt;- &amp;quot;NorthWest&amp;quot;
main_mb_edge_gif &amp;lt;- 
   image_composite(
      image = main_mb_gif[1],
      composite_image = edge_gif[1],
      offset = cg_offset,  
      gravity = cg_gravity)
for (i in 2:max(this_data$time_exp)) {
   combined &amp;lt;- 
      image_composite(
         image = main_mb_gif[i],
         composite_image = edge_gif[i],
         offset = cg_offset,  
         gravity = cg_gravity)
   main_mb_edge_gif &amp;lt;- c(main_mb_edge_gif, combined)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we simply composite the first composite gif (which consists of the main plot with one inset) with
the new inset, resulting in a new composite consisting of the main plot with two insets.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;p_diam &amp;lt;- 
   ggplot(
      data = 
         this_condensed %&amp;gt;% 
         filter(spectra &amp;lt;= subset(cutoffs, sample == &amp;quot;N04H-small-nostir&amp;quot;)$diameter)) +
   geom_errorbar(
      size = 0.35,
      colour = alpha(&amp;quot;#D5B450&amp;quot;, 0.3),
      aes(
         x = time_exp,
         group = seq_along(time_exp),
         ymin = errors_min(fit_np_diam),
         ymax = errors_max(fit_np_diam))) +
   geom_point(
      size = 0.45,
      colour = &amp;quot;#D5B450&amp;quot;,
      aes(
         x = time_exp,
         group = seq_along(time_exp),
         y = fit_np_diam)) +
   labs(y = &amp;quot;Band gap/eV&amp;quot;, x = &amp;quot;&amp;quot;) +
   # manual adjustments to make sure the diam panel matches the edge panel&amp;#39;s size
   scale_y_continuous(
      # invisible labels on left-hand y-axis, just to occupy space
      breaks = seq(3,6), labels = c(&amp;quot;3.5&amp;quot;, &amp;quot;3.6&amp;quot;, &amp;quot;3.7&amp;quot;, &amp;quot;3.8&amp;quot;),
      sec.axis = sec_axis(~., name = &amp;quot;Particle diameter/nm&amp;quot;)) +
   scale_x_continuous() +
   coord_cartesian(xlim = c(0, max(this_condensed$time_exp))) +
   theme_bw() +
   theme(
      legend.position = &amp;quot;none&amp;quot;,
      panel.grid = element_blank(),
      axis.title.y = element_text(colour = NA),
      axis.text.y = element_text(colour = NA),
      axis.ticks.y.left = element_blank(),
      axis.title.y.right = element_text(colour = &amp;quot;#D5B450&amp;quot;),
      axis.text.y.right = element_text(colour = &amp;quot;#D5B450&amp;quot;),
      axis.title.x = element_blank(),
      axis.text.x = element_blank(),
      axis.ticks.x = element_blank(),
      # make plot background transparent
      panel.background = element_rect(fill = NA, colour = NA),
      # make area outside panel transparent
      plot.background = element_rect(fill = NA, colour = NA))
# create animated plot
p_diam_anim &amp;lt;- p_diam + transition_reveal(along = time_exp)
p_diam_anim_gif &amp;lt;-
   animate(
      plot = p_diam_anim,
      renderer = gifski_renderer(),
      bg = &amp;quot;transparent&amp;quot;, # https://github.com/thomasp85/gganimate/issues/174
      width = cg_width, height = mb_height, units = &amp;quot;px&amp;quot;, 
      res = 150,
      nframes = max(this_data$time_exp))
diam_gif &amp;lt;- image_read(p_diam_anim_gif)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here, for the top inset, we re-use the same techniques as for the bottom inset,
with the addition that we need to make sure both panel and plot background is transparent.
Also, we need to make the gganimate transparent, which is achieved with the &lt;code&gt;bg=&#39;transparent&#39;&lt;/code&gt;
option.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;cg_offset &amp;lt;- paste0(&amp;quot;+&amp;quot;, cg_xoffset, &amp;quot;+&amp;quot;, diam_yoffset)
cg_gravity &amp;lt;- &amp;quot;NorthWest&amp;quot;
main_mb_edge_diam_gif &amp;lt;-
   image_composite(
      image = main_mb_edge_gif[1],
      composite_image = diam_gif[1],
      offset = cg_offset,  
      gravity = cg_gravity)
for (i in 2:max(this_data$time_exp)) {
   combined &amp;lt;- 
      image_composite(
         image = main_mb_edge_gif[i],
         composite_image = diam_gif[i],
         offset = cg_offset,  
         gravity = cg_gravity)
   main_mb_edge_diam_gif &amp;lt;- c(main_mb_edge_diam_gif, combined)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, we composite again.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;image_write_gif(
   image = main_mb_edge_diam_gif, 
   loop = 10,
   path = here::here(&amp;quot;assets/animation-composite.gif&amp;quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The final composite is then saved as a gif file using &lt;code&gt;magick::image_write_gif()&lt;/code&gt;.
At this point, we also set &lt;code&gt;loop=&lt;/code&gt; to some number so that the gif does not loop forever (just a matter of taste).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;encountered-issues-and-how-to-handle-them&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Encountered issues and how to handle them&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If you use &lt;code&gt;knitr&lt;/code&gt; together with &lt;code&gt;gganimate&lt;/code&gt;, be very mindful about knitr’s chunk option &lt;code&gt;dev&lt;/code&gt;!
I usually set &lt;code&gt;opts_chunk$set(dev=&#39;svg&#39;)&lt;/code&gt; globally in my blog posts,
and &lt;a href=&#34;https://github.com/thomasp85/gganimate/issues/134&#34;&gt;it turns out&lt;/a&gt;
&lt;code&gt;gganimate::animate(device=..)&lt;/code&gt; &lt;a href=&#34;https://gganimate.com/reference/animate.html#defaults&#34;&gt;&lt;strong&gt;inherits&lt;/strong&gt; this chunk option&lt;/a&gt;.
Obviously the SVG device makes no sense for a gif, and you will get not-very-useful device-related errors.
So if you are using knitr, make sure to set &lt;code&gt;device=&#39;png&#39;&lt;/code&gt; inside each call to &lt;code&gt;animate()&lt;/code&gt;, or else in the relevant
chunk’s options.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;magick::image_read()&lt;/code&gt; failed with the error
&lt;code&gt;unable to get registry ID cache:hosts @ error/registry.c/GetImageRegistry/202&lt;/code&gt;
for no apparent reason.
&lt;strong&gt;Fixed by increasing ImageMagick’s resource limits&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;magick::image_write_gif()&lt;/code&gt; failed with the same error, despite &lt;code&gt;image_read()&lt;/code&gt; working.
&lt;strong&gt;Fixed by increasing the resource limits &lt;em&gt;even more&lt;/em&gt;&lt;/strong&gt;
(see my &lt;a href=&#34;https://codeberg.org/ansible/imagemagick&#34;&gt;imagemagick ansible role&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;end_pause&lt;/code&gt; argument of &lt;code&gt;gganimate::animate()&lt;/code&gt; has no effect for gifs composited with &lt;code&gt;magick::image_write_gif()&lt;/code&gt;.
And unfortunately, &lt;code&gt;image_write_gif()&lt;/code&gt; has no similar argument.
I thought I could create and end pause manually by repeating the last frame of the gif a number of times,
but I could not figure out how to achieve that using the magick functions.
In the end, I gave up on adding an end pause and used the &lt;code&gt;loop&lt;/code&gt; argument instead to set a max number of loops,
since my point was to allow the reader some time to read the plot without everything moving around.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;further-reading&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Further reading&lt;/h2&gt;
&lt;div id=&#34;gganimate&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;gganimate&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gganimate.com&#34; class=&#34;uri&#34;&gt;https://gganimate.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/thomasp85/gganimate&#34; class=&#34;uri&#34;&gt;https://github.com/thomasp85/gganimate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://exts.ggplot2.tidyverse.org/gganimate.html&#34; class=&#34;uri&#34;&gt;https://exts.ggplot2.tidyverse.org/gganimate.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cran.r-project.org/package=gganimate&#34; class=&#34;uri&#34;&gt;https://cran.r-project.org/package=gganimate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;creating-animations-with-gganimate&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Creating animations with gganimate&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.alexcookson.com/post/2020-10-18-building-an-animation-step-by-step-with-gganimate/&#34;&gt;&lt;em&gt;Building an animation step-by-step with gganimate: mapping the Japanese cherry blossom front&lt;/em&gt;, Alex Cookson. 2020-10-19&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://goodekat.github.io/presentations/2019-isugg-gganimate-spooky/slides.html&#34;&gt;&lt;em&gt;gganimate (with a spooky twist)&lt;/em&gt;, Katherine Goode. ISU Graphics group, 2019-10-31&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.brodrigues.co/blog/2018-12-27-fun_gganimate/&#34;&gt;&lt;em&gt;Some fun with {gganimate}&lt;/em&gt;, Bruno Rodrigues. Econometrics and Free Software, 2018-12-27&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jeroen.github.io/munster2018/&#34;&gt;&lt;em&gt;Working with images in R&lt;/em&gt;, Jeroen Ooms. Institute for Geoinformatics, WWU Münster, 2018-10-16&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://theanlim.rbind.io/post/gganimate-animations-with-ggplot2/&#34;&gt;&lt;em&gt;gganimate: animations with ggplot2&lt;/em&gt;, Thean Lim. 2018-04-19&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://paldhous.github.io/ucb/2018/dataviz/week14.html&#34;&gt;&lt;em&gt;Iteration and animation: loops, GIFs, and videos&lt;/em&gt;, Peter Aldhous. 2018&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://anderfernandez.com/en/blog/how-to-create-animations-in-r-with-gganimate/&#34;&gt;&lt;em&gt;How to create animations in R with gganimate&lt;/em&gt;, Ander Fernández Jauregui&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gganimate.com/reference/animate.html&#34;&gt;&lt;code&gt;gganimate::animate()&lt;/code&gt; documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;composite-animations-with-gganimate&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Composite animations with gganimate&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ropensci.org/magick/articles/intro.html#animation&#34;&gt;&lt;em&gt;The magick package: advanced image-processing in R&lt;/em&gt;, magick package vignette. 2021-07-30&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/61908979/multiple-gganimate-plots-both-stacked-and-side-by-side&#34;&gt;&lt;em&gt;Multiple gganimate plots both stacked and side by side&lt;/em&gt;, StackOverflow question by Abdel, answer by user12728748. 2020-05-20&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/55967894/combining-two-animated-plot-into-one-gif-mp4&#34;&gt;&lt;em&gt;Combining two animated plots into one GIF/MP4&lt;/em&gt;, StackOverflow question by Keith McNulty, answer by Stéphane Laurent. 2019-05-03&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/thomasp85/gganimate/wiki/Animation-Composition&#34;&gt;&lt;em&gt;Placing animations side-by-side with magick&lt;/em&gt;, Matt Crump. gganimate wiki, 2018-08-17&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.ropensci.org/magick/reference/composite.html&#34;&gt;&lt;code&gt;magick::image_composite()&lt;/code&gt; documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;composite-animations-in-r-without-using-gganimate&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Composite animations in R &lt;em&gt;without&lt;/em&gt; using gganimate&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.data-imaginist.com/2017/animating-the-logo/&#34;&gt;&lt;em&gt;Taking control of animations in R and demystifying them in the process&lt;/em&gt;, Thomas Lin Pedersen. Data Imaginist. 2017-05-02&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;sessioninfo&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;sessionInfo()&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] conflicted_1.1.0       photoec_0.2.2.9000     oceanoptics_0.0.0.9004
##  [4] common_0.0.2           tibble_3.1.6           tidyr_1.1.4           
##  [7] dplyr_1.0.8            magrittr_2.0.2         errors_0.3.6          
## [10] knitr_1.37             here_1.0.1             ggtext_0.1.1          
## [13] magick_2.7.3           gganimate_1.0.7        ggplot2_3.3.5         
## 
## loaded via a namespace (and not attached):
##  [1] progress_1.2.2    tidyselect_1.1.2  xfun_0.29         bslib_0.3.1      
##  [5] purrr_0.3.4       colorspace_2.0-2  vctrs_0.3.8       generics_0.1.2   
##  [9] htmltools_0.5.2   yaml_2.2.2        utf8_1.2.2        rlang_1.0.1      
## [13] gridtext_0.1.4    jquerylib_0.1.4   pillar_1.7.0      glue_1.6.1       
## [17] withr_2.4.3       DBI_1.1.2         tweenr_1.0.2      lifecycle_1.0.1  
## [21] stringr_1.4.0     munsell_0.5.0     blogdown_1.7      gtable_0.3.0     
## [25] memoise_2.0.1     evaluate_0.14     fastmap_1.1.0     fansi_1.0.2      
## [29] gifski_1.4.3-1    highr_0.9         Rcpp_1.0.8        scales_1.1.1     
## [33] cachem_1.0.6      jsonlite_1.7.3    farver_2.1.0      png_0.1-7        
## [37] hms_1.1.1         digest_0.6.29     stringi_1.7.6     bookdown_0.24    
## [41] rprojroot_2.0.2   grid_4.0.5        cli_3.2.0         tools_4.0.5      
## [45] sass_0.4.0        crayon_1.5.0      pkgconfig_2.0.3   ellipsis_0.3.2   
## [49] xml2_1.3.3        prettyunits_1.1.1 assertthat_0.2.1  rmarkdown_2.11   
## [53] R6_2.5.1          compiler_4.0.5&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Measurement errors and dimensional analysis in R</title>
      <link>//solarchemist.se/2020/11/17/measurement-errors/</link>
      <pubDate>Tue, 17 Nov 2020 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2020/11/17/measurement-errors/</guid>
      
      <description>

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#install-wsl2-on-windows-10&#34; id=&#34;toc-install-wsl2-on-windows-10&#34;&gt;Install WSL2 on Windows 10&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#parenthesis-if-your-windows-10-is-itself-a-virtual-machine&#34; id=&#34;toc-parenthesis-if-your-windows-10-is-itself-a-virtual-machine&#34;&gt;Parenthesis: if your Windows 10 is itself a virtual machine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#parenthesis-managing-and-rebooting-your-wsl2-virtual-machines&#34; id=&#34;toc-parenthesis-managing-and-rebooting-your-wsl2-virtual-machines&#34;&gt;Parenthesis: managing and rebooting your WSL2 virtual machines&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#install-r-and-rstudio-server-on-wsl2-ubuntu&#34; id=&#34;toc-install-r-and-rstudio-server-on-wsl2-ubuntu&#34;&gt;Install R and RStudio server on WSL2 Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#working-with-quantities-and-measurement-errors&#34; id=&#34;toc-working-with-quantities-and-measurement-errors&#34;&gt;Working with quantities and measurement errors&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#install-necessary-r-packages&#34; id=&#34;toc-install-necessary-r-packages&#34;&gt;Install necessary R packages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#back-to-work&#34; id=&#34;toc-back-to-work&#34;&gt;Back to work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#but-what-about-python&#34; id=&#34;toc-but-what-about-python&#34;&gt;But what about Python?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#wrapper-function-redefining-lm-to-support-unitserrors&#34; id=&#34;toc-wrapper-function-redefining-lm-to-support-unitserrors&#34;&gt;Wrapper function redefining &lt;code&gt;lm()&lt;/code&gt; to support units/errors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sessioninfo&#34; id=&#34;toc-sessioninfo&#34;&gt;sessionInfo()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#more-links&#34; id=&#34;toc-more-links&#34;&gt;More links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#references&#34; id=&#34;toc-references&#34;&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;
&lt;div style=&#34;border: 2px solid #f03838; padding-left: 10px; padding-top: 4px; background-color: #EBEBEB; color: black;&#34;&gt;
&lt;p&gt;I wrote this blog post in preparation for a hands-on web presentation I gave on Nov 13, 2020.
It’s published mostly as-is in the hopes it might benefit others.
&lt;a href=&#34;https://hyp.is/LwjIgikrEeu6xX800vMY4g/solarchemist.se/about&#34;&gt;Comments or questions on the text&lt;/a&gt; or
&lt;a href=&#34;https://codeberg.org/taha/2020-11-17-measurement-errors/issues&#34;&gt;regarding the code&lt;/a&gt; are most welcome!&lt;/p&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Today I would like to demonstrate how to get automatic error propagation for your data analysis in R
using the &lt;a href=&#34;https://r-quantities.github.io/errors&#34;&gt;&lt;code&gt;errors&lt;/code&gt; package by Iñaki Ucar et al.&lt;/a&gt; &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Ucar2018&#34;&gt;1&lt;/a&gt;]&lt;/span&gt;
I would also like to demonstrate how to combine that with dimensional analysis
(with automatic unit conversion) using the &lt;a href=&#34;https://r-quantities.github.io/units&#34;&gt;&lt;code&gt;units&lt;/code&gt; package by Pebesma et al.&lt;/a&gt; &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Pebesma2016&#34;&gt;2&lt;/a&gt;]&lt;/span&gt;
This is usually known as &lt;em&gt;quantity calculus&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;To make it easy for you, dear reader, to follow along, we will take it from the start
and assume all you have is a Windows 10 computer.
If you work on MacOS&lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; or Linux, you can
&lt;a href=&#34;#working-with-quantities-and-measurement-errors&#34;&gt;skip right ahead to “Working with measurement errors”&lt;/a&gt;
(but you may have to adapt some of the steps, as they were written with Windows 10 in mind).&lt;/p&gt;
&lt;p&gt;Most of the fundamental tools used for reproducible scientific work,
such as &lt;a href=&#34;https://www.r-project.org&#34;&gt;R&lt;/a&gt;,
&lt;a href=&#34;http://kbroman.org/knitr_knutshell&#34;&gt;knitr&lt;/a&gt;,
&lt;a href=&#34;https://www.freecodecamp.org/news/what-is-git-and-how-to-use-it-c341b049ae61&#34;&gt;git&lt;/a&gt;,
&lt;a href=&#34;https://www.python.org/about/gettingstarted&#34;&gt;Python&lt;/a&gt;,
and not to be forgotten, the whole chain of document generation tools such as
&lt;a href=&#34;https://www.latex-project.org&#34;&gt;LaTeX&lt;/a&gt;, &lt;a href=&#34;https://www.markdownguide.org&#34;&gt;Markdown&lt;/a&gt;,
and &lt;a href=&#34;https://pandoc.org&#34;&gt;pandoc&lt;/a&gt;,
“just work” on any Linux distribution, but can be a bit of a hassle on Windows.&lt;/p&gt;
&lt;p&gt;It is not hard to see why that is. All these tools are available for free and with
libre software licences.
Windows is neither free nor libre, and has a long history of working against this
academic model of software sharing.
These days, Microsoft, Google and other tech behemoths embrace open source software,
&lt;a href=&#34;http://marktarver.com/thecathedralandthebizarre.html&#34;&gt;because it allows them to monetise work without paying for it&lt;/a&gt;.
Although, to be fair, they are also contributing back to varying degrees to this
free/libre pool of software.
For an academic, open source tooling offers many tangible and intangible benefits,
prime among them by &lt;a href=&#34;https://juretriglav.si/thoughts-on-reproducibility-of-open-scientific-software&#34;&gt;making the entire work reproducible&lt;/a&gt;.
And it is the best way to future-proof your work.&lt;/p&gt;
&lt;p&gt;So, let’s get to it.
We will make use of the fact that Microsoft has added something called the
Windows subsystem for Linux (WSL) on Windows 10,
which allows you to run a (nearly feature-complete) Linux shell.
In fact, recently Microsoft released WSL version 2 (WSL2), which attempts to bring
the Linux shell natively to the Windows 10 desktop.&lt;/p&gt;
&lt;p&gt;In order to work with R, the next sections will show you how to make use of WSL2 to install
the latest &lt;a href=&#34;https://ubuntu.com/blog/what-is-an-ubuntu-lts-release&#34;&gt;Ubuntu LTS&lt;/a&gt; release, and then we will walk through installing
R and RStudio Server using WSL2 Ubuntu. You will then be able to run R (in RStudio)
from a browser window on your Windows desktop. Pretty cool, right?&lt;/p&gt;
&lt;p&gt;With that in place, we will explore how to use R and the suite of &lt;code&gt;r-quantities&lt;/code&gt; packages
to seamlessly manipulate vectors that have associated measurement uncertainties &lt;em&gt;and&lt;/em&gt; units
through the steps of your data analysis, by way of an example using a subset of data from
a real experiment in the Edvinsson lab.&lt;/p&gt;
&lt;div id=&#34;install-wsl2-on-windows-10&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Install WSL2 on Windows 10&lt;/h2&gt;
&lt;p&gt;
&lt;div style=&#34;border: 2px solid #f03838; padding-left: 10px; padding-top: 4px; background-color: #EBEBEB; color: black;&#34;&gt;
&lt;p&gt;The rest of this section, not including the subsections, is now of out of date!
Microsoft has &lt;a href=&#34;https://mastodon.social/@Linux_Is_Best/111202901396633888&#34;&gt;in fact&lt;/a&gt; published a
&lt;a href=&#34;https://learn.microsoft.com/en-us/linux/install#step-3---follow-install-method-instructions&#34;&gt;guide on how to download and install Linux&lt;/a&gt;,
which you should read. It boils down to 3 steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open Powershell in &lt;em&gt;administrator mode&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Install WSL2 by typing: &lt;code&gt;wsl --install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Restart your computer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;In the near future, installing Ubuntu on Windows will be as simple as &lt;code&gt;wsl --install&lt;/code&gt;
(it’s &lt;a href=&#34;https://devblogs.microsoft.com/commandline/distro-installation-added-to-wsl-install-in-windows-10-insiders-preview-build-20246&#34;&gt;in the development version of Windows 10&lt;/a&gt;), but for now,
we have to &lt;a href=&#34;https://docs.microsoft.com/en-us/windows/wsl/install-win10&#34;&gt;follow the steps&lt;/a&gt;
below to achieve the same.&lt;/p&gt;
&lt;p&gt;Open Powershell as administrator, then enable WSL1:&lt;/p&gt;
&lt;pre class=&#34;powershell&#34;&gt;&lt;code&gt;dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To enable WSL2, we must first enable the Windows virtual machine (VM) feature:&lt;/p&gt;
&lt;pre class=&#34;powershell&#34;&gt;&lt;code&gt;dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you have to restart Windows.&lt;/p&gt;
&lt;p&gt;Next, &lt;a href=&#34;https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi&#34;&gt;download the WSL2 Linux kernel update package for x64&lt;/a&gt;
(or &lt;a href=&#34;https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi&#34;&gt;ARM64&lt;/a&gt;, depending on your machine), and install it.&lt;/p&gt;
&lt;p&gt;Then open Powershell as administrator again, and set WSL2 as default for all future VMs:&lt;/p&gt;
&lt;pre class=&#34;powershell&#34;&gt;&lt;code&gt;wsl --set-default-version 2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now it is time to &lt;a href=&#34;https://www.microsoft.com/store/apps/9n6svws3rx71&#34;&gt;install our Linux distribution of choice (i.e., Ubuntu) from the Microsoft Store&lt;/a&gt;.
Open the Microsoft Store, find Ubuntu, and install it.
(And also, by the way, the Microsoft Store is awful. Such nasty underhanded nudging
by Microsoft to create a wholly unnecessary “account”).&lt;/p&gt;
&lt;p&gt;Anyway, you just installed Ubuntu on your Windows machine, congratulations!
Now you get to create your Linux username and password: simply start the app
&lt;code&gt;Ubuntu&lt;/code&gt; from the Start menu.&lt;/p&gt;
&lt;div id=&#34;parenthesis-if-your-windows-10-is-itself-a-virtual-machine&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Parenthesis: if your Windows 10 is itself a virtual machine&lt;/h3&gt;
&lt;p&gt;This is unlikely to apply to 99% of my readers, so just skip ahead to the next section.&lt;/p&gt;
&lt;p&gt;Who does this section apply to? Well, if you, like me, run Windows 10 as a VM
on top of your regular OS,
you will need to make sure that a) your host machine (layer 0) supports nested virtualisation,
and b) that your hypervisor has nested virtualisation enabled.&lt;/p&gt;
&lt;p&gt;Details on how for the KVM hypervisor on a Linux host in footnote.&lt;a href=&#34;#fn2&#34; class=&#34;footnote-ref&#34; id=&#34;fnref2&#34;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;parenthesis-managing-and-rebooting-your-wsl2-virtual-machines&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Parenthesis: managing and rebooting your WSL2 virtual machines&lt;/h3&gt;
&lt;p&gt;Closing the Ubuntu shell in Windows does not restart the Ubuntu VM, and sometimes
it can be useful to effect a reboot.
So how do we do that?&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://askubuntu.com/questions/1131122/cant-restart-shutdown-ubuntu-under-wsl&#34;&gt;It’s not obvious&lt;/a&gt;,
but the &lt;code&gt;wsl&lt;/code&gt; executable has two useful attributes,&lt;/p&gt;
&lt;pre class=&#34;powershell&#34;&gt;&lt;code&gt;wsl --list --verbose
wsl --terminate Ubuntu-20.04&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;that allows you to list/view all installed VMs (running or not), and then you
simply &lt;code&gt;--terminate&lt;/code&gt; to shut down, and &lt;code&gt;wsl -d Ubuntu-20.04&lt;/code&gt; to start again.
Starting the VM can also be achieved from the app link in the Start menu,
assuming the VM has one.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;install-r-and-rstudio-server-on-wsl2-ubuntu&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Install R and RStudio server on WSL2 Ubuntu&lt;/h2&gt;
&lt;p&gt;With a complete Ubuntu shell in place, we can now go about our business and install R.
In your Ubuntu shell, add the public key of the CRAN repository, then add the
Ubuntu 20.04 CRAN repo of R version 4.x to your package manager’s list of sources:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
echo &amp;quot;deb https://cran.uni-muenster.de/bin/linux/ubuntu focal-cran40/&amp;quot; | sudo tee /etc/apt/sources.list.d/r-project.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that you can change the domain to any one of the &lt;a href=&#34;https://cran.r-project.org/mirmon_report.html&#34;&gt;CRAN mirrors&lt;/a&gt; if you want.
At this point, remember to tell &lt;code&gt;apt&lt;/code&gt; about the new source by:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo apt update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Install R and its dependencies using the &lt;code&gt;aptitude&lt;/code&gt; package manager
(we will also install &lt;code&gt;libudunits2-dev&lt;/code&gt;, which is
&lt;a href=&#34;https://github.com/Unidata/UDUNITS-2&#34;&gt;a C library and utility for handling physical units&lt;/a&gt;
that the R package &lt;code&gt;units&lt;/code&gt; depends on).&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo apt install r-base r-base-core r-recommended r-base-dev gdebi-core build-essential libcurl4-gnutls-dev libxml2-dev libssl-dev libudunits2-dev&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This installs about 400 MB of software in a jiffy. That’s R!&lt;/p&gt;
&lt;p&gt;Now download the latest RStudio Server package file for Ubuntu 18+ and install it:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;wget https://rstudio.org/download/latest/stable/server/bionic/rstudio-server-latest-amd64.deb
sudo gdebi rstudio-server-latest-amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Great! Now all you got to do is launch your RStudio Server:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo rstudio-server start&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With that, you can open your browser (Chromium/Chrome recommended) at &lt;code&gt;http://localhost:8787&lt;/code&gt;
and enjoy your very own instance of RStudio Server.
(You sign in with the same username and password as in your Ubuntu Linux VM).&lt;/p&gt;
&lt;p&gt;And with that, all the preparatory steps are done.&lt;a href=&#34;#fn3&#34; class=&#34;footnote-ref&#34; id=&#34;fnref3&#34;&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt;
We can now start working in our data analysis environment in R.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;working-with-quantities-and-measurement-errors&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Working with quantities and measurement errors&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;quantities&lt;/code&gt; package (which ties together the capabilities of the &lt;code&gt;units&lt;/code&gt; and
&lt;code&gt;errors&lt;/code&gt; packages) has an &lt;a href=&#34;https://cran.r-project.org/web/packages/quantities/vignettes/introduction.html&#34;&gt;excellent vignette on quantity calculus in R&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;errors&lt;/code&gt; package is &lt;a href=&#34;https://cran.r-project.org/web/packages/errors/index.html&#34;&gt;available on CRAN&lt;/a&gt;, and its &lt;a href=&#34;https://github.com/r-quantities/errors&#34;&gt;git repo is published on Github&lt;/a&gt;.
The package is also &lt;a href=&#34;https://journal.r-project.org/archive/2018/RJ-2018-075/index.html&#34;&gt;presented by its authors in an R Journal article from 2018&lt;/a&gt;,
and there is also &lt;a href=&#34;https://www.enchufa2.es/archives/errors-0-0-1.html&#34;&gt;an informative blog post by the main author for the very first release of the package&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/r-quantities/units&#34;&gt;&lt;code&gt;units&lt;/code&gt; package&lt;/a&gt; handles physical quantities
(values with associated units) in R,
and builds on UNIDATA’s &lt;a href=&#34;https://github.com/Unidata/UDUNITS-2&#34;&gt;&lt;code&gt;udunits-2&lt;/code&gt; C library&lt;/a&gt; of
over 3000 supported units, making it a very robust implementation while avoiding the sin
of re-inventing the wheel. It does lead to a dependency on the system-level package &lt;code&gt;udunits2&lt;/code&gt;
however, making it very hard to install and work with &lt;code&gt;units&lt;/code&gt; on Windows.&lt;/p&gt;
&lt;p&gt;I think that these packages have finally brought R up to par with Python with regards to
quantity calculus, which is a crucial aspect for any scientist or engineer handling
physical measurement values.
Although it should be noted that the &lt;a href=&#34;https://pythonhosted.org/uncertainties&#34;&gt;&lt;code&gt;uncertainties&lt;/code&gt;&lt;/a&gt;
&lt;a href=&#34;https://github.com/lebigot/uncertainties&#34;&gt;package&lt;/a&gt; in Python is more mature
(v1.0 was released in 2010 whereas the &lt;code&gt;errors&lt;/code&gt; package in R still has not achieved
that milestone), the &lt;code&gt;errors&lt;/code&gt; package is very usable, indeed I used it for practically
all the analysis steps of the latest paper I co-authored (I even managed to cite the package). &lt;span class=&#34;citation&#34;&gt;[&lt;a href=&#34;#ref-Ahmed2020&#34;&gt;3&lt;/a&gt;]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Let’s take the &lt;code&gt;errors&lt;/code&gt; and &lt;code&gt;units&lt;/code&gt; packages out for a spin!
Since this is a clean R installation, first we will need to install these packages and
any other packages we would like to have available.&lt;/p&gt;
&lt;div id=&#34;install-necessary-r-packages&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Install necessary R packages&lt;/h3&gt;
&lt;p&gt;Let’s install all the &lt;code&gt;r-quantities&lt;/code&gt; packages, and a subset of the &lt;a href=&#34;https://www.tidyverse.org&#34;&gt;tidyverse packages&lt;/a&gt;
(feel free to install any other packages you may like).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../../../../../../../assets/images/201106/rstudio-server-install-packages.jpg&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;install.packages(c(&amp;quot;errors&amp;quot;, &amp;quot;units&amp;quot;, &amp;quot;constants&amp;quot;, &amp;quot;quantities&amp;quot;))
install.packages(c(&amp;quot;dplyr&amp;quot;, &amp;quot;magrittr&amp;quot;, &amp;quot;ggplot2&amp;quot;, &amp;quot;ggforce&amp;quot;, &amp;quot;tibble&amp;quot;))
install.packages(&amp;quot;remotes&amp;quot;)
remotes::install_github(&amp;quot;solarchemist/R-common&amp;quot;)
remotes::install_github(&amp;quot;solarchemist/oceanoptics&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(This operation may take a minute).&lt;/p&gt;
&lt;p&gt;Now let’s load all the packages we will need and get to work on some real-life data.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(errors)
library(constants)
library(units)
library(quantities)
library(common)
library(oceanoptics)
library(dplyr)
library(magrittr)
library(ggplot2)
library(ggforce)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;back-to-work&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Back to work&lt;/h3&gt;
&lt;p&gt;For the sake of keeping this post short, I will spare you the legwork of reading the
individual spectra files into a dataframe. I have done that and saved to resultant dataframe
to an rda-file which has been uploaded to a publicly accessible URL.
Let’s import the data to a variable, and have a quick look at the dataframe:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# read the MB abs spectra from the public URL
df.MB &amp;lt;-
   common::LoadRData2Variable(url=&amp;quot;https://public.solarchemist.se/data/uvvis-abs-MB-conc-series.rda&amp;quot;)
df.MB %&amp;gt;% glimpse()
## Rows: 28,672
## Columns: 13
## $ sampleid           &amp;lt;chr&amp;gt; &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;…
## $ range              &amp;lt;chr&amp;gt; &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;,…
## $ wavelength         &amp;lt;dbl&amp;gt; 188.76, 189.23, 189.70, 190.17, 190.64, 191.12, 191.59,…
## $ intensity          &amp;lt;dbl&amp;gt; 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000,…
## $ IntegrationTime    &amp;lt;chr&amp;gt; &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;,…
## $ n_Averaged         &amp;lt;chr&amp;gt; &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;…
## $ Boxcar             &amp;lt;chr&amp;gt; &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, …
## $ CorrElectricDark   &amp;lt;chr&amp;gt; &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;…
## $ StrobeLampEnabled  &amp;lt;chr&amp;gt; &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;…
## $ CorrDetectorNonLin &amp;lt;chr&amp;gt; &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;…
## $ CorrStrayLight     &amp;lt;chr&amp;gt; &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;…
## $ n_Pixels           &amp;lt;chr&amp;gt; &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;,…
## $ conc               &amp;lt;dbl&amp;gt; 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,…&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, it is raw data from the spectrometer, and it comes with neither
measurement errors nor units.
(Unfortunately, it is still all-to-common for lab instruments to export data without such attributes).&lt;/p&gt;
&lt;p&gt;It is perfectly acceptable to add &lt;em&gt;estimated&lt;/em&gt; standard errors to this raw data
(we will add units at the same time using the &lt;code&gt;set_quantities()&lt;/code&gt; function of the &lt;code&gt;quantities&lt;/code&gt; package).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# specify unit and error for the measured concentration values
df.MB$conc &amp;lt;-
   set_quantities(
      df.MB$conc * 1e-6,
      &amp;quot;mol/L&amp;quot;,
      # set relative error 2% (estimate)
      df.MB$conc * 1e-6 * 0.02)
# specify unit and error for wavelength values to instrumental resolution
df.MB$wavelength &amp;lt;-
   set_quantities(df.MB$wavelength, &amp;quot;nm&amp;quot;, 1.5)
# specify error for absorbance values to 1% rel error (estimate)
df.MB$intensity &amp;lt;-
   # absorbance is unitless, or more precisely, has a unit of &amp;quot;1&amp;quot;
   set_quantities(df.MB$intensity, &amp;quot;1&amp;quot;, df.MB$intensity * 0.01)
# add a column describing the solvent (H2O or H2O+EtOH)
df.MB$solvent &amp;lt;- &amp;quot;H2O&amp;quot;
df.MB$solvent[grep(&amp;quot;+EtOH$&amp;quot;, df.MB$sampleid)] &amp;lt;- &amp;quot;H2O+EtOH&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For plotting, we will use the package &lt;code&gt;ggplot2&lt;/code&gt;, which is like a cousin to the
&lt;code&gt;dplyr&lt;/code&gt; data manipulation package. Both come with a sort of “coding grammar”,
which is very comfortable to use once you get used to it.
In my opinion it is much easier to express chains of manipulations using this grammar
(you can find plenty of examples in the code below).&lt;/p&gt;
&lt;p&gt;We should note that ggplotting two columns that both are &lt;code&gt;units&lt;/code&gt; objects &lt;strong&gt;will fail&lt;/strong&gt;
with &lt;code&gt;Error in Ops.units(): both operands of the expression should be &#34;units&#34; objects&lt;/code&gt;,
due to the &lt;code&gt;units&lt;/code&gt; package (rightfully) determining that they don’t have the same units
(or units that can be converted into each other).
The (very elegant) solution to this finicky behaviour is
&lt;a href=&#34;https://ggforce.data-imaginist.com/reference/scale_unit.html&#34;&gt;provided by the &lt;code&gt;ggforce&lt;/code&gt; package&lt;/a&gt;.
All we have to do is make sure we load &lt;code&gt;library(ggforce)&lt;/code&gt;,
and then we can get back to using ggplot2 as usual (mostly as usual, you will notice
that we now use a &lt;code&gt;scale_*_unit()&lt;/code&gt; function instead of the usual &lt;code&gt;scale_*_continuous()&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;(ref:uvvis-MB-conc-series) Recorded UV-Vis spectra of MB in water and MB in water
with 10 vol% EtOH (with the estimated measurement error of the absorbances shown
as vertical error bars in red).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot(
   df.MB %&amp;gt;%
      filter(wavelength %&amp;gt;% as.numeric() &amp;gt;= 250) %&amp;gt;%
      filter(wavelength %&amp;gt;% as.numeric() &amp;lt;= 850)) +
   facet_wrap(~solvent) +
   geom_errorbar(
      colour = &amp;quot;red&amp;quot;,
      aes(x = wavelength,
          ymin = errors_min(intensity),
          ymax = errors_max(intensity))) +
   geom_line(aes(x = wavelength, y = intensity, group = sampleid)) +
   scale_x_unit(
      breaks = seq(300, 800, 100),
      expand = expansion(0.03, 0)) +
   scale_y_unit(expand = expansion(0.03, 0)) +
   labs(x = &amp;quot;Wavelength&amp;quot;, y = &amp;quot;Abs&amp;quot;) +
   theme(legend.position = &amp;quot;none&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:uvvis-MB-conc-series&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2020/11/17/measurement-errors/index_files/figure-html/uvvis-MB-conc-series-1.svg&#34; alt=&#34;(ref:uvvis-MB-conc-series)&#34; width=&#34;672&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: (ref:uvvis-MB-conc-series)
&lt;/p&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;To check whether a unit already exists in the &lt;code&gt;udunits2&lt;/code&gt; library, I like
to use the &lt;code&gt;udunits2::ud.is.parseable()&lt;/code&gt; function.
If you know of a better way, please let me know!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now, as you have surely already noticed, this dataset is simply a series of UV-Vis
absorbance spectra at varying concentrations
(of methylene blue in water and water with some ethanol, in this case).&lt;/p&gt;
&lt;p&gt;Here’s how the data looks at this point (after we set errors and/or units for some columns):&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;df.MB %&amp;gt;% glimpse()
## Rows: 28,672
## Columns: 14
## $ sampleid           &amp;lt;chr&amp;gt; &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;H02AB&amp;quot;, &amp;quot;…
## $ range              &amp;lt;chr&amp;gt; &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;, &amp;quot;001&amp;quot;,…
## $ wavelength         (err) /nm 189(2) /nm, 189(2) /nm, 190(2) /nm, 190(2) /nm, 191…
## $ intensity          (err) /1 0(0) /1, 0(0) /1, 0(0) /1, 0(0) /1, 0(0) /1, 0(0) /1…
## $ IntegrationTime    &amp;lt;chr&amp;gt; &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;, &amp;quot;1000&amp;quot;,…
## $ n_Averaged         &amp;lt;chr&amp;gt; &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;…
## $ Boxcar             &amp;lt;chr&amp;gt; &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;0&amp;quot;, …
## $ CorrElectricDark   &amp;lt;chr&amp;gt; &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;…
## $ StrobeLampEnabled  &amp;lt;chr&amp;gt; &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;…
## $ CorrDetectorNonLin &amp;lt;chr&amp;gt; &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;…
## $ CorrStrayLight     &amp;lt;chr&amp;gt; &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;No&amp;quot;, &amp;quot;…
## $ n_Pixels           &amp;lt;chr&amp;gt; &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;, &amp;quot;2048&amp;quot;,…
## $ conc               (err) /mol*L^-1 5.0(1)e-5 /mol*L^-1, 5.0(1)e-5 /mol*L^-1, 5.0…
## $ solvent            &amp;lt;chr&amp;gt; &amp;quot;H2O&amp;quot;, &amp;quot;H2O&amp;quot;, &amp;quot;H2O&amp;quot;, &amp;quot;H2O&amp;quot;, &amp;quot;H2O&amp;quot;, &amp;quot;H2O&amp;quot;, &amp;quot;H2O&amp;quot;, &amp;quot;H2O&amp;quot;,…&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Most columns are of type “character”, but note how &lt;code&gt;$wavelength&lt;/code&gt; (and two other columns)
say something else in that field. We can take a closer look at the structure of the dataframe
using the &lt;code&gt;str()&lt;/code&gt; function:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;df.MB %&amp;gt;% str()
## &amp;#39;data.frame&amp;#39;:    28672 obs. of  14 variables:
##  $ sampleid          : chr  &amp;quot;H02AB&amp;quot; &amp;quot;H02AB&amp;quot; &amp;quot;H02AB&amp;quot; &amp;quot;H02AB&amp;quot; ...
##  $ range             : chr  &amp;quot;001&amp;quot; &amp;quot;001&amp;quot; &amp;quot;001&amp;quot; &amp;quot;001&amp;quot; ...
##  $ wavelength        : Units+Errors: /nm num  189(2) 189(2) 190(2) 190(2) 191(2) ...  $ intensity         : Units+Errors: /1 num  0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) 0(0) ...  $ IntegrationTime   : chr  &amp;quot;1000&amp;quot; &amp;quot;1000&amp;quot; &amp;quot;1000&amp;quot; &amp;quot;1000&amp;quot; ...
##  $ n_Averaged        : chr  &amp;quot;10&amp;quot; &amp;quot;10&amp;quot; &amp;quot;10&amp;quot; &amp;quot;10&amp;quot; ...
##  $ Boxcar            : chr  &amp;quot;0&amp;quot; &amp;quot;0&amp;quot; &amp;quot;0&amp;quot; &amp;quot;0&amp;quot; ...
##  $ CorrElectricDark  : chr  &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; ...
##  $ StrobeLampEnabled : chr  &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; ...
##  $ CorrDetectorNonLin: chr  &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; ...
##  $ CorrStrayLight    : chr  &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; &amp;quot;No&amp;quot; ...
##  $ n_Pixels          : chr  &amp;quot;2048&amp;quot; &amp;quot;2048&amp;quot; &amp;quot;2048&amp;quot; &amp;quot;2048&amp;quot; ...
##  $ conc              : Units+Errors: /mol*L^-1 num  5.0(1)e-5 5.0(1)e-5 5.0(1)e-5 5.0(1)e-5 5.0(1)e-5 5.0(1)e-5 5.0(1)e-5 5.0(1)e-5 5.0(1)e-5 5.0(1)e-5 ...  $ solvent           : chr  &amp;quot;H2O&amp;quot; &amp;quot;H2O&amp;quot; &amp;quot;H2O&amp;quot; &amp;quot;H2O&amp;quot; ...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Having thus set suitable estimates (or perhaps even properly calculated) errors for the measured
quantities &lt;em&gt;wavelength&lt;/em&gt;, &lt;em&gt;absorbance&lt;/em&gt;, and &lt;em&gt;concentration&lt;/em&gt;, we will use this data
to calculate the spectral absorption coefficient of MB in the two solvents we used.&lt;/p&gt;
&lt;p&gt;As an introductory exercise, let’s define the wavelength of the strongest absorption band along
with its unit and a synthetic standard error value:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;wl.max.abs &amp;lt;- set_quantities(665, &amp;quot;nm&amp;quot;, 5)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can change the notation of the error from &lt;code&gt;parenthesis&lt;/code&gt; to &lt;code&gt;plus-minus&lt;/code&gt; when printing a quantity:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;print(wl.max.abs, notation=&amp;quot;plus-minus&amp;quot;, digits=1)
## 665 ± 5 /nm&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;By default, &lt;code&gt;errors&lt;/code&gt; uses &lt;em&gt;parenthesis&lt;/em&gt; notation (which is more compact) and
a single significant digit for errors.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We can also print more digits for the error part by setting &lt;code&gt;digits&lt;/code&gt;.
Both of these settings can also be set globally (for our entire R session) by
using the &lt;code&gt;options()&lt;/code&gt; function, like this:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;options(errors.notation=&amp;quot;plus-minus&amp;quot;, errors.digits=2)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Before we get into calculating the spectral absorption coefficients, recall that the
Beer-Lambert law&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
A = \epsilon lc \;\Longleftrightarrow\; \epsilon = \frac{A}{lc}
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;includes the optical path length of the cuvette, &lt;span class=&#34;math inline&#34;&gt;\(l=\SI{1}{\cm}\)&lt;/span&gt; in our case.
Let’s set that as a variable so we can use it when calculating &lt;span class=&#34;math inline&#34;&gt;\(\epsilon\)&lt;/span&gt;:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# I don&amp;#39;t know the tolerances of the cuvette dimensions, (quite the oversight, I know)
# but since these cuvettes are mass-produced I am assuming they are pretty tight and
# so estimating the error at 1/10 mm
optical.length &amp;lt;- set_quantities(1, &amp;quot;cm&amp;quot;, 0.01)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With a series of UV-Vis absorbance spectra at varying concentrations, we can of course
plot the linear relationship between &lt;span class=&#34;math inline&#34;&gt;\(A \propto c\)&lt;/span&gt; at a particular wavelength (such
as the main absorbance peak), but
for the sake of this exercise we will take the calculation one step further and calculate
&lt;span class=&#34;math inline&#34;&gt;\(\epsilon(\lambda, A, c)\)&lt;/span&gt;, i.e., the absorption coefficient for all wavelengths.
It is not pretty code, but it gets the job done. Here goes:&lt;/p&gt;
&lt;!-- Calculate the spectral absorption coefficient by wavelength  --&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# loop over each spectrum by solvent
solvents &amp;lt;- df.MB %&amp;gt;% pull(solvent) %&amp;gt;% unique()
# beware, unique() silently drops all quantity attributes
wl.steps &amp;lt;- df.MB %&amp;gt;% filter(sampleid == unique(df.MB$sampleid)[1]) %&amp;gt;% pull(wavelength)
# hold the results of the loop in an empty dataframe, pre-made in the right dimensions
# complication! quantities cols must use the same (or convertable) units from the start
abs.coeff &amp;lt;-
   data.frame(
      wavelength = rep(wl.steps, length(solvents)),
      solvent = &amp;quot;&amp;quot;,
      # slope of linear fit
      k = rep(set_quantities(1, &amp;quot;L/mol&amp;quot;, 1), length(solvents) * length(wl.steps)),
      # intercept of linear fit
      m = rep(set_quantities(1, &amp;quot;1&amp;quot;, 1), length(solvents) * length(wl.steps)),
      # calculated abs coeff
      coeff = rep(set_quantities(1, &amp;quot;L*cm^-1*mol^-1&amp;quot;, 1), length(solvents) * length(wl.steps)),
      rsq = NA, # R-squared of linear fit
      adj.rsq = NA) # adj R-squared of linear fit
i &amp;lt;- 0
# Fair warning: this loop is horribly slow, and may take several minutes to complete!
for (s in 1:length(solvents)) {
   message(&amp;quot;Solvent: &amp;quot;, solvents[s])
   # varying conc of a particular solvent
   for (w in 1:length(wl.steps)) {
      # to keep track of the current row in abs.coeff, we will use a counter i
      i &amp;lt;- i + 1
      message(&amp;quot;[&amp;quot;, i, &amp;quot;] &amp;quot;, solvents[s], &amp;quot; :: &amp;quot;, wl.steps[w], &amp;quot; nm&amp;quot;)
      # temporary df which we will use to calculate linear fits (abs.coeff) for each wl.step
      intensity.by.wl &amp;lt;-
         df.MB %&amp;gt;%
         filter(solvent == unique(df.MB$solvent)[s]) %&amp;gt;%
         # even though we drop the errors when filtering, it does not affect the returned rows
         filter(as.numeric(wavelength) == unique(as.numeric(df.MB$wavelength))[w]) %&amp;gt;%
         select(sampleid, wavelength, intensity, conc, solvent)
      # now we can calculate abs coeff for this solvent at the current wavelength
      this.fit &amp;lt;-
         # now this is the really tricky one
         # https://github.com/r-quantities/quantities/issues/10
         qlm(data = intensity.by.wl, formula = intensity ~ conc)
       # save R-squared and adjusted R-squared
      abs.coeff$rsq[i] &amp;lt;- summary(this.fit)$r.squared
      abs.coeff$adj.rsq[i] &amp;lt;- summary(this.fit)$adj.r.squared
      # save coefficients of linear fit
      abs.coeff$m[i] &amp;lt;- coef(this.fit)[[1]]
      abs.coeff$k[i] &amp;lt;- coef(this.fit)[[2]]
      abs.coeff$coeff[i] &amp;lt;- coef(this.fit)[[2]] / optical.length
      # solvent
      abs.coeff$solvent[i] &amp;lt;- unique(intensity.by.wl$solvent)
   }
}
save(
   abs.coeff,
   file = &amp;quot;/media/bay/taha/sites/hugo/solarchemist/static/assets/data/uvvis-abscoeff-MB-conc-series.rda&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# read the calculated MB abs coeff from the public URL
abs.coeff &amp;lt;-
   LoadRData2Variable(url=&amp;quot;https://public.solarchemist.se/data/uvvis-abscoeff-MB-conc-series.rda&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Well, that was quite a workout!&lt;a href=&#34;#fn4&#34; class=&#34;footnote-ref&#34; id=&#34;fnref4&#34;&gt;&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt; But now that we have saved the calculated absorption coefficients
to an rda-file on disk, we won’t have to repeat that calculation (for a while at least).
But the proof is in eating the pudding, so let’s plot the absorption coefficients we got.&lt;/p&gt;
&lt;p&gt;(ref:abscoeff-MB-conc-series) Calculated spectral absorption coefficient for MB in water
and MB in water with 10 vol% EtOH. With the estimated standard error due to
propagated measurement errors of the underlying quantities (red errorbars).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot(
   abs.coeff %&amp;gt;%
      filter(wavelength %&amp;gt;% as.numeric() &amp;gt;= 250) %&amp;gt;%
      filter(wavelength %&amp;gt;% as.numeric() &amp;lt;= 850)) +
   geom_errorbar(
      colour = &amp;quot;red&amp;quot;,
      aes(x = wavelength,
          ymin = errors_min(coeff),
          ymax = errors_max(coeff))) +
   geom_line(aes(x = wavelength, y = coeff, group = solvent)) +
   scale_x_unit(
      breaks = seq(300, 800, 100),
      expand = expansion(0.03, 0)) +
   scale_y_unit(expand = expansion(0.03, 0)) +
   labs(x = &amp;quot;Wavelength&amp;quot;, y = &amp;quot;Abs. coeff.&amp;quot;) +
   theme(legend.position = &amp;quot;none&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:abscoeff-MB-conc-series&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2020/11/17/measurement-errors/index_files/figure-html/abscoeff-MB-conc-series-1.svg&#34; alt=&#34;(ref:abscoeff-MB-conc-series)&#34; width=&#34;672&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 2: (ref:abscoeff-MB-conc-series)
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;That looks good. Note how the vertical errorbars of the two curves (different solvents)
overlap completely at certain spectral regions, notably at the main absorbance peak.&lt;/p&gt;
&lt;p&gt;And not only did our entire analysis automatically propagate the measurement errors,
we also managed to do the same for the units, doing automatic dimensional analysis
at the same time (note how the units in the plot axes labels is automatically derived from the data).&lt;/p&gt;
&lt;p&gt;That’s quantity analysis, in R, with real-life data!
I hope you learned something new, and that this will inspire you to use quantity analysis
for your future work.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;but-what-about-python&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;But what about Python?&lt;/h2&gt;
&lt;p&gt;I feel it would be bad form to end this post without even mentioning Python’s support
for error propagation and dimensional analysis, which far predates R’s.&lt;/p&gt;
&lt;p&gt;Python has a whole array of &lt;a href=&#34;https://pypi.org/project/units&#34;&gt;packages&lt;/a&gt; to
&lt;a href=&#34;https://pypi.org/project/python-units&#34;&gt;choose&lt;/a&gt; from for
&lt;a href=&#34;https://kitchingroup.cheme.cmu.edu/blog/2013/01/19/Using-units-in-python&#34;&gt;working with physical units&lt;/a&gt;,
but as far as I can tell none of them build on the UNIDATA database.&lt;/p&gt;
&lt;p&gt;However, the &lt;a href=&#34;https://github.com/hgrecco/pint&#34;&gt;&lt;code&gt;pint&lt;/code&gt; package&lt;/a&gt; appears to be the most
popular by far (with 1200 stars on Github, it’s actually an order of magnitude more popular
than all the related R packages), and it integrates with both NumPy and the &lt;code&gt;uncertainties&lt;/code&gt;
package and Pandas.&lt;/p&gt;
&lt;p&gt;Support for errors and error propagation has been around since 2010 courtesy
of the &lt;a href=&#34;https://pythonhosted.org/uncertainties&#34;&gt;&lt;code&gt;uncertainties&lt;/code&gt; package&lt;/a&gt; by Eric O. Lebigot.&lt;/p&gt;
&lt;p&gt;I am not aware of any package for integrating between the &lt;code&gt;uncertainties&lt;/code&gt; and &lt;code&gt;pint&lt;/code&gt; packages,
but perhaps that is not necessary in Python. I’m not sure on that point.
is a little lacking.&lt;/p&gt;
&lt;p&gt;In any case, getting up and running with Python is fairly easy.
In fact, Python 3.x comes pre-installed on the Ubuntu shell we just configured.
You should be aware, that you could just &lt;em&gt;write and execute&lt;/em&gt; your Python code directly from
RStudio Server (or R in general) using the &lt;a href=&#34;https://rstudio.github.io/reticulate/&#34;&gt;&lt;code&gt;reticulate&lt;/code&gt; package&lt;/a&gt; for R.&lt;/p&gt;
&lt;p&gt;But if you prefer working with Python in its own IDE, you can actually
&lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-set-up-jupyter-notebook-with-python-3-on-ubuntu-18-04&#34;&gt;install Jupyter Notebook&lt;/a&gt;
and work from a browser, just like for RStudio Server. Just follow these steps:&lt;/p&gt;
&lt;p&gt;In the WSL Ubuntu shell, run the following commands to install Jupyter Notebook:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo apt install python3-pip python3-dev
sudo -H pip3
sudo -H pip3 install --upgrade pip
sudo -H pip3 install jupyter&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;then run &lt;code&gt;jupyter notebook&lt;/code&gt; and copy-paste the provided URL into your browser.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: for serious work, you should look into installing JupyterLab and/or JupyterHub
instead of Jupyter Notebook.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://nbviewer.jupyter.org/gist/solarchemist/f9eb4f93518d16e0e6d3&#34;&gt;This template for a student lab report&lt;/a&gt;
I co-authored way back when uses both &lt;code&gt;uncertainties&lt;/code&gt; and &lt;code&gt;numpy&lt;/code&gt; for its calculations,
and may be of interest.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;wrapper-function-redefining-lm-to-support-unitserrors&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Wrapper function redefining &lt;code&gt;lm()&lt;/code&gt; to support units/errors&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# wrap lm() to drop quantities and get around error when calling summary(lm())
# https://www.r-spatial.org/r/2018/08/31/quantities-final.html
qlm &amp;lt;- function(formula, data, ...) {
   # get units info, then drop quantities
   row &amp;lt;- data[1, ]
   for (var in colnames(data)) if (inherits(data[[var]], &amp;quot;quantities&amp;quot;)) {
      data[[var]] &amp;lt;- drop_quantities(data[[var]])
   }

   # fit linear model and add units info for later use
   fit &amp;lt;- lm(formula, data, ...)
   fit$units &amp;lt;- lapply(eval(attr(fit$terms, &amp;quot;variables&amp;quot;), row), units)
   class(fit) &amp;lt;- c(&amp;quot;qlm&amp;quot;, class(fit))
   fit
}
# get quantities attributes back for the coef method
# (which is the only class we care about in this demonstration)
coef.qlm &amp;lt;- function(object, ...) {
  # compute coefficients&amp;#39; units
  coef.units &amp;lt;- lapply(object$units, as_units)
  for (i in seq_len(length(coef.units) - 1) + 1)
    coef.units[[i]] &amp;lt;- coef.units[[1]] / coef.units[[i]]
  coef.units &amp;lt;- lapply(coef.units, units)

  # use units above and vcov diagonal to set quantities
  coef &amp;lt;- mapply(set_quantities, NextMethod(), coef.units,
                 sqrt(diag(vcov(object))), mode=&amp;quot;symbolic&amp;quot;, SIMPLIFY=FALSE)

  # use the rest of the vcov to set correlations
  p &amp;lt;- combn(names(coef), 2)
  for (i in seq_len(ncol(p)))
    covar(coef[[p[1, i]]], coef[[p[2, i]]]) &amp;lt;- vcov(object)[p[1, i], p[2, i]]

  coef
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;sessioninfo&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;sessionInfo()&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;sessionInfo()
## R version 4.1.3 (2022-03-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 22.04.3 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=sv_SE.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] ggforce_0.3.3          ggplot2_3.3.6          magrittr_2.0.3        
##  [4] dplyr_1.0.10           oceanoptics_0.0.0.9004 common_0.1.2          
##  [7] quantities_0.1.6       units_0.8-0            constants_1.0.1       
## [10] errors_0.3.6           knitr_1.39            
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.9       highr_0.9        bslib_0.4.0      compiler_4.1.3  
##  [5] pillar_1.8.1     jquerylib_0.1.4  tools_4.1.3      digest_0.6.29   
##  [9] gtable_0.3.0     jsonlite_1.8.0   evaluate_0.15    lifecycle_1.0.3 
## [13] tibble_3.1.8     pkgconfig_2.0.3  rlang_1.0.6      DBI_1.1.3       
## [17] cli_3.4.1        yaml_2.3.5       blogdown_1.10    xfun_0.31       
## [21] fastmap_1.1.0    withr_2.5.0      stringr_1.4.0    generics_0.1.3  
## [25] sass_0.4.2       vctrs_0.5.1      grid_4.1.3       tidyselect_1.2.0
## [29] glue_1.6.2       R6_2.5.1         fansi_1.0.3      rmarkdown_2.16  
## [33] bookdown_0.27    polyclip_1.10-0  farver_2.1.1     tweenr_1.0.2    
## [37] MASS_7.3-55      scales_1.2.0     htmltools_0.5.3  assertthat_0.2.1
## [41] colorspace_2.0-3 labeling_0.4.2   utf8_1.2.2       stringi_1.7.8   
## [45] munsell_0.5.0    cachem_1.0.6&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;more-links&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;More links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.r-spatial.org/r/2016/06/10/units.html&#34;&gt;Does R understand physical quantities?, Edzer Pebesma, R-spatial (2016)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.r-spatial.org/r/2016/08/16/units2.html&#34;&gt;Measurement units in R now simplify, Edzer Pebesma, R-spatial (2016)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.r-spatial.org/r/2016/09/29/plot_units.html&#34;&gt;Automatic units in axis labels, Edzer Pebesma, R-spatial (2016)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/235693/linear-model-where-the-data-has-uncertainty-using-r&#34;&gt;Linear model where the data has uncertainty using R, Gimelist, StackExchange (2016)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://support.rstudio.com/hc/en-us/articles/360049776974-Using-RStudio-Server-in-Windows-WSL2&#34;&gt;Using RStudio Server in Windows WSL2, JooYoung Seo, RStudio Support (2020)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://agailloty.github.io/Rstudio-server-windows&#34;&gt;Using RStudio Server on the Windows 10 subsystem for Linux, Axel-Cleris Gailloty (2020)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://software.intel.com/content/www/us/en/develop/blogs/enabling-virtual-machine-control-structure-shadowing-on-a-nested-virtual-machine.html&#34;&gt;Enabling virtual machine control structure shadowing on a nested virtual machine with the Intel Xeon E5-2600 v3 product family, David L. Mulnix, Intel (2014)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://support.rstudio.com/hc/en-us/articles/216079967-Upgrading-RStudio-Server&#34;&gt;Upgrading RStudio Server, Ian Pylvainen, RStudio Support (2020)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cran.r-project.org/doc/manuals/r-release/R-admin.html&#34;&gt;R installation and administration, R Core Team, CRAN (2020)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body&#34;&gt;
&lt;div id=&#34;ref-Ucar2018&#34; class=&#34;csl-entry&#34;&gt;
[1] Ucar, I., Pebesma, E., Azcorra, A., &lt;em&gt;&lt;a href=&#34;https://doi.org/10.32614/RJ-2018-075&#34;&gt;Measurement errors in &lt;span&gt;R&lt;/span&gt;&lt;/a&gt;&lt;/em&gt;, The R Journal, v. 10, n. 2, pp. 549–557, 2018.
&lt;/div&gt;
&lt;div id=&#34;ref-Pebesma2016&#34; class=&#34;csl-entry&#34;&gt;
[2] Pebesma, E., Mailund, T., Hiebert, J., &lt;em&gt;&lt;a href=&#34;https://doi.org/10.32614/RJ-2016-061&#34;&gt;Measurement units in &lt;span&gt;R&lt;/span&gt;&lt;/a&gt;&lt;/em&gt;, The R Journal, v. 8, n. 2, pp. 486–494, 2016.
&lt;/div&gt;
&lt;div id=&#34;ref-Ahmed2020&#34; class=&#34;csl-entry&#34;&gt;
[3] Ahmed, T., Edvinsson, T., &lt;em&gt;&lt;a href=&#34;https://doi.org/10.1021/acs.jpcc.9b11229&#34;&gt;Optical quantum confinement in ultrasmall &lt;span&gt;ZnO&lt;/span&gt; and the effect of size on their photocatalytic activity&lt;/a&gt;&lt;/em&gt;, The Journal of Physical Chemistry C, v. 124, n. 11, pp. 6395–6404, Mar. 2020.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes footnotes-end-of-document&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;If you run MacOS, you probably want to install &lt;a href=&#34;https://brew.sh&#34;&gt;Homebrew, a Linux-like package manager&lt;/a&gt;.&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn2&#34;&gt;&lt;p&gt;Check that the bare-metal Linux host &lt;a href=&#34;https://www.linux-kvm.org/page/Nested_Guests&#34;&gt;supports “Nested virtualisation”&lt;/a&gt;
by inspecting either one of &lt;code&gt;/etc/modprobe.d/qemu-system-x86.conf&lt;/code&gt; or &lt;code&gt;/sys/module/kvm_intel/parameters/nested&lt;/code&gt;.
The first file should contain &lt;code&gt;nested=1&lt;/code&gt;, and the second should contain &lt;code&gt;Y&lt;/code&gt; or &lt;code&gt;1&lt;/code&gt;. If not, set them accordingly.
With the Windows VM shut down, edit the KVM XML config file so that the &lt;code&gt;&amp;lt;cpu&amp;gt;&lt;/code&gt; tag includes &lt;code&gt;mode=host-passthrough&lt;/code&gt;,
like this: &lt;code&gt;&amp;lt;cpu mode=&#39;host-passthrough&#39;&amp;gt;&lt;/code&gt;. Note that these settings must be in place &lt;em&gt;before&lt;/em&gt; installing WSL2 Ubuntu on Windows.
Also note that WSL2 supports nested virtualisation, but not WSL1.&lt;a href=&#34;#fnref2&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn3&#34;&gt;&lt;p&gt;We should mention here that there is a known limitation to WSL2 virtualisation regarding
having services (such as RStudio Server in this case) persist across reboots of the VM or even
across reboots of the Windows machine itself. In short, &lt;a href=&#34;https://github.com/microsoft/WSL2-Linux-Kernel/issues/44&#34;&gt;WSL2 does not support &lt;code&gt;systemd&lt;/code&gt; nor &lt;code&gt;init&lt;/code&gt;&lt;/a&gt;,
so any services on the Linux VM will &lt;a href=&#34;https://stackoverflow.com/a/55582694&#34;&gt;not autostart when the VM is rebooted&lt;/a&gt;.
Even so, the web is &lt;a href=&#34;https://github.com/DamionGans/ubuntu-wsl2-systemd-script&#34;&gt;full&lt;/a&gt; of &lt;a href=&#34;https://github.com/arkane-systems/genie&#34;&gt;hacks&lt;/a&gt;
&lt;a href=&#34;https://reddit.com/r/bashonubuntuonwindows/comments/ezpcyu/how_to_make_wsl2_run_services_at_startup&#34;&gt;attempting to circumvent this limitation&lt;/a&gt;.
On the other hand, &lt;a href=&#34;https://dev.to/bowmanjd/you-probably-don-t-need-systemd-on-wsl-windows-subsystem-for-linux-49gn&#34;&gt;this might not be such a big problem&lt;/a&gt;
for the kind of experimentation that having an otherwise
complete Linux shell available on the Windows desktop allows.&lt;a href=&#34;#fnref3&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&#34;fn4&#34;&gt;&lt;p&gt;Note that we had to redefine the &lt;code&gt;lm()&lt;/code&gt; function using our own wrapper that takes
care of unsetting and resetting the units and errors. &lt;a href=&#34;#wrapper-function-redefining-lm-to-support-unitserrors&#34;&gt;See above&lt;/a&gt;.
The code was copied verbatim from &lt;a href=&#34;https://www.r-spatial.org/r/2018/08/31/quantities-final.html&#34;&gt;Ucar’s r-spatial article&lt;/a&gt;.&lt;a href=&#34;#fnref4&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Multiple Rstudio Server instances using a single R/LaTeX install with KVM</title>
      <link>//solarchemist.se/2019/01/20/rstudio-server-multiple-instances-kvm/</link>
      <pubDate>Sun, 20 Jan 2019 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2019/01/20/rstudio-server-multiple-instances-kvm/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2019/01/20/rstudio-server-multiple-instances-kvm/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-issue-at-hand&#34;&gt;The issue at hand&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#requirements&#34;&gt;Requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#outline-of-setup&#34;&gt;Outline of setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setup-the-host&#34;&gt;Setup the host&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#install-latex-texlive&#34;&gt;Install LaTeX (TeXLive)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#compile-r-from-source&#34;&gt;Compile R from source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#install-kvm-and-the-virtual-machine-os&#34;&gt;Install KVM and the virtual machine OS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#share-directories-on-the-host-to-the-guests&#34;&gt;Share directories on the host to the guests&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setup-the-guest-virtual-machine&#34;&gt;Setup the guest (virtual machine)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#filesystem-passthrough-for-r-texlive-and-fonts&#34;&gt;Filesystem passthrough for R, TeXLive and fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#make-r-and-texlive-executables-accessible&#34;&gt;Make R and TeXLive executables accessible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#install-rstudio-server&#34;&gt;Install Rstudio Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#back-to-the-host&#34;&gt;Back to the host&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#configure-apache-reverse-proxy-and-lets-encrypt-certificates&#34;&gt;Configure Apache reverse proxy and Let’s Encrypt certificates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#create-additional-vms-kvm-cloning&#34;&gt;Create additional VMs (KVM cloning)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#autostart-the-virtual-machines&#34;&gt;Autostart the virtual machines&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#appendix&#34;&gt;Appendix&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#remove-an-existing-r-aptitude-installation&#34;&gt;Remove an existing R aptitude installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#jupyter-an-alternative-to-rstudio-server&#34;&gt;Jupyter, an alternative to RStudio Server?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sharing-rstudio-server-projects-with-other-users&#34;&gt;Sharing RStudio Server projects with other users&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#links&#34;&gt;Links&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#texlive&#34;&gt;TeXLive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#r-compilation-from-source&#34;&gt;R compilation from source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#kvm-setup&#34;&gt;KVM setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#kvm-filesystem-passthrough&#34;&gt;KVM filesystem passthrough&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#network-configuration-bridging-static-dhcp-port-forwarding&#34;&gt;Network configuration, bridging, static DHCP, port forwarding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#apache-virtual-hosts-proxies-etc.&#34;&gt;Apache virtual hosts, proxies, etc.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rstudio-server-configuration&#34;&gt;Rstudio server configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rstudio-server-multiple-sessions&#34;&gt;Rstudio server multiple sessions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#r-and-rstudio-environment-package-management-etc.&#34;&gt;R and Rstudio environment (package management, etc.)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sessioninfo&#34;&gt;sessionInfo()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div id=&#34;introduction&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Rstudio Server Open Source Edition (OSE) is offered with some &lt;a href=&#34;https://www.rstudio.com/products/rstudio-server-pro/&#34;&gt;key limitations compared to the Pro Edition&lt;/a&gt;. A few of these limitations are easy to circumvent using basic Linux sysadmin skills (such as encrypting traffic by using a reverse proxy), but most of RStudio Server OSE’s limitations are not so easy to work with, in my opinion.&lt;/p&gt;
&lt;p&gt;The ability to use Rstudio server in the browser has been great and a major time-saver, but the one thing that caused me the most grief was the lack of support for multiple concurrent sessions (this is acutely felt when working within Rstudio projects). Now, &lt;a href=&#34;https://support.rstudio.com/hc/en-us/articles/211789298-Multiple-R-Sessions-in-RStudio-Server-Pro&#34;&gt;Rstudio server Pro has this functionality&lt;/a&gt; and I’d be happy to support the Rstudio team, but the Pro license is firmly out of reach for a single user like myself (at 10000 USD/yr it’s clearly meant for institutions or large teams only).&lt;/p&gt;
&lt;p&gt;Concurrent multiple sessions outside Pro is a feature that many others have asked for or tired to implement, e.g., see &lt;a href=&#34;https://stackoverflow.com/questions/22938305/run-multiple-instances-of-rstudio-in-a-web-browser&#34;&gt;“Run multiple instances of RStudio in a web browser”, StackOverflow&lt;/a&gt;, &lt;a href=&#34;https://github.com/OSC/bc_osc_rstudio_server/issues/1&#34;&gt;“Unable to run multiple RStudio Server sessions at the same time”, Batch Connect - OSC RStudio Server”&lt;/a&gt;, &lt;a href=&#34;https://community.rstudio.com/t/parallel-processes-for-rstudio-server-much-like-jupyter-notebooks/7085/1&#34;&gt;“Parallel processes for Rstudio-server, much like Jupyter Notebooks”, RStudio Community&lt;/a&gt;, or &lt;a href=&#34;https://support.rstudio.com/hc/en-us/community/posts/200658156-Multiple-Rstudio-server-sessions-from-one-user-account&#34;&gt;“Multiple Rstudio server sessions from one user account”, RStudio Support&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Several work-arounds or solutions have been offered by the community, for example by &lt;a href=&#34;https://stackoverflow.com/a/27284840&#34;&gt;running two Rstudio server processes on different IP addresses&lt;/a&gt;, or by &lt;a href=&#34;https://stackoverflow.com/a/34384971&#34;&gt;assigning different Linux user/group ownerships to the Rstudio server processes&lt;/a&gt;, but unfortunately Rstudio has also been locking down the free Rstudio server in what can only be interpreted as an attempt to negate these efforts, such as by hard-coding the path to the &lt;code&gt;.rstudio/&lt;/code&gt; directory, or by making Rstudio project folders read-only for all users except the owner (and overriding the machine’s system-wide permissions settings in the process), or by making the browser-side of the session logout even across incognito mode.
In short, none of the work-arounds actually achieve multiple sessions in the same browser.&lt;/p&gt;
&lt;p&gt;In this post I will demonstrate how to setup multiple Rstudio Server OSE instances using a single, shared R and LaTeX installation on an Ubuntu host with KVM virtualisation. We will go through the setup of the host and the first virtual machine (VM) in some detail, and then we will see how more Rstudio Server instances can be (manually) created by cloning the existing VM.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;the-issue-at-hand&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The issue at hand&lt;/h2&gt;
&lt;p&gt;I wanted to have the ability to run multiple concurrent browser sessions of RStudio Server. In particular, my workflow required that I have different Rstudio projects, or even the same project, open in different browser windows/tabs at the same time. I also like to keep a particular RStudio project open, while working on other Rstudio projects in other tabs.&lt;/p&gt;
&lt;p&gt;So, in short, we are trying to circumvent (without breaking any rules) the “multiple sessions” limitation that RStudio has put on its free-tier server offering. If you run an Rstudio server with a single user account, have some CPU/RAM to spare and want to run more than one concurrent RStudio Server session and don’t mind using virtual machines, read on.&lt;/p&gt;
&lt;p&gt;The main advantage of this approach over simply provisioning an arbitrary number of VMs in the cloud (a perfectly valid solution to achieve “multiple sessions”) is that by keeping the VMs on a single host we can centralise the maintenance of the R and LaTeX installations. A disadvantage is that we have to compile R from source (but I will walk you through that, it’s not at all complicated).&lt;/p&gt;
&lt;p&gt;The benefit of using full virtualisation is that as far as RStudio Server is concerned, we are running only one instance of it. Also, increasing the number of RStudio Server instances is trivial once the first VM is configured.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;requirements&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;
&lt;p&gt;You will need a server with sufficient CPU and RAM to run a hypervisor and the number of virtual machines of your choice. Still, nothing too fancy is required. For example, my own server runs Ubuntu 16.04 on an Intel Xeon E3-1200 series processor with 32 GB of RAM, and that’s been more than plenty to run 3 Rstudio Server VMs along with a multitude of other services.&lt;/p&gt;
&lt;p&gt;If you want to use your Rstudio Server from outside your LAN (without having to fuss with virtual private networks) you will need to assign a (sub)domain to each Rstudio Server instance. If your router does not get a static IP address from your ISP, you will additionally have to setup dynamic DNS (DDNS). I will link to some guides on how to that below.&lt;/p&gt;
&lt;p&gt;Of course, you will need superuser permission on the server in question (it’s your server, right?). Also, I’m assuming your server already runs RStudio Server, so by following this project you will gain at least one more instance (if you setup just one virtual machine).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;outline-of-setup&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Outline of setup&lt;/h2&gt;
&lt;p&gt;For the purposes of this project, we will assume that your server sits behind your router. The server is reachable externally at &lt;code&gt;yourhost.yourdomain.se&lt;/code&gt;, and the router uses DDNS to keep that domain pointed at it. The server runs Ubuntu Server.&lt;/p&gt;
&lt;p&gt;We will install a a virtual machine hypervisor (KVM) and a single virtual machine which we will then install RStudio Server Open Source Edition on, and we will demonstrate how you can clone this VM to setup as many RStudio Server instances as you like (and the server has resources for). Using full virtualisation will of course incur a slight performance penalty in terms of CPU and RAM overhead.
If resources are scarce, I guess using Docker or LXD may offer another another way to achieve a similar result.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In KVM terminology, the &lt;em&gt;host&lt;/em&gt; is the system that runs the VM hypervisor, and the &lt;em&gt;guest&lt;/em&gt; is the virtual machine (VM). &lt;strong&gt;One host, multiple guests.&lt;/strong&gt; The guests are controlled (started, stopped, cloned, destroyed) via the VM hypervisor on the host.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The guest (the virtual machine itself) will also run headless Ubuntu server 16.04 with RStudio Server.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;NOTE: it’s actually very important that both the host and the guests run the same version of the same OS, since R will be compiled on the host and absolutely needs the same environment on the guest. Even using Ubuntu &lt;strong&gt;16.04&lt;/strong&gt; on the host and Ubuntu &lt;strong&gt;18.04&lt;/strong&gt; will fail to run R properly on the guest (I’ve tried).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In terms of security, the setup described here assumes that 1) the server sits behind a router with a firewall, and 2) that the local network can be considered safe (the RStudio Server instances on the guests send their traffic to/from the host over unencrypted connections). But this is not so bad, since any setup that uses a proxy that terminates HTTPS connections will need to pass on the traffic unencrypted over part of the network. I guess if you distrust the LAN you could configure a separate VLAN for this traffic, or otherwise encrypt it somehow.&lt;/p&gt;
&lt;p&gt;The central idea of this project is that we will install and maintain the R and LaTeX installations &lt;em&gt;only on the host&lt;/em&gt;. We can expose the R and LaTeX trees to the guest by using &lt;strong&gt;KVM filesystem passthrough&lt;/strong&gt;. For this to work, it’s critical that we use the same OS with the same version on host and guest.&lt;/p&gt;
&lt;p&gt;The table below outlines the software components needed to complete our setup.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;Installed on host&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Installed on VM&lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Configured on VM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Apache web server&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Certbot/Let’s Encrypt&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;LaTeX/TeXLive&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Yes (added to &lt;code&gt;$PATH&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;R (compiled from source)&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Yes (symlinks)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;KVM&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Fonts&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Rstudio server&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;YES&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As you can see, only RStudio Server has to be installed on both the host and the guest. The rest of the software stack can be almost exclusively managed on just the host. This is what makes this endeavour workable, in my opinion.&lt;/p&gt;
&lt;p&gt;Apache is used as a reverse proxy to encrypt all traffic to/from each RStudio Server. Certbot is used to download the Let’s Encrypt certificates. Additionally, we will setup a CRON job or a Systemd timer to automatically renew those certificates.&lt;/p&gt;
&lt;p&gt;We will use TeXLive and install a default LaTeX installation. LaTeX, as installed by TeXLive, lives entirely inside a single directory (except for a few files) and so is easy to passthrough to the virtual machine.
R, as installed from the Debian repos, is less well-behaved in that regard. Actually, it’s TeXLive that’s unusual and not very Debian-like in this regard, but since we are looking to passthrough the entire installation so that we can “trick” the guest into thinking the installation is local, having it all inside a single directory tree is ideal. And I’ve found &lt;em&gt;no way&lt;/em&gt; to passthrough R, as installed from the repos, to a VM. My solution is to instead compile R from source. This allows us to fit all of it inside the &lt;code&gt;/opt/R/&lt;/code&gt; tree, and allows us to passthrough just that directory to the guest.&lt;/p&gt;
&lt;p&gt;And we will of course need to install the VM hypervisor, KVM in this case, as well as &lt;code&gt;libvirt&lt;/code&gt; which is a commandline tool to manage KVM and its virtual machines. With all that in place, we will install RStudio Server on the guest (this will be instance no. 2, assuming you already have it installed on the host itself). Once the guest setup is complete, we can clone it to create additional RStudio Server instances.&lt;/p&gt;
&lt;p&gt;For all of this to work, we will also need to learn a little about network interfaces and bridges so that we can provision each VM with its own IP address on our LAN. Each instance will get its own Apache virtualhost file which will simply setup a proxy pointing to its IP address on the LAN, redirecting all traffic from the subdomain we setup to it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A note on naming.
I will use the placeholders &lt;code&gt;&amp;lt;yourhost&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;guestname&amp;gt;&lt;/code&gt; in this text. You should of course replace those with the hostname of your host machine and virtual machine, respectively. Also, the sooner you decide on names for your virtual machines, the better. My recommendation is that you use the same hostname in the subdomains you setup to point at each VM, but that’s optional.
I also recommend you to setup the DNS records for the virtual machines early in the process, since DNS propagation may take some time, and you will need those records in place to install the Let’s Encrypt certificates.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And that’s about the gist of it. Still interested? Let’s get into the nitty-gritty!&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;setup-the-host&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Setup the host&lt;/h2&gt;
&lt;p&gt;The server used as an example in this post runs Ubuntu 16.04. The instructions here should be easily adapted to work for any Debian-based Linux distribution.&lt;/p&gt;
&lt;p&gt;Install Apache, if you haven’t already. We will not go through that here. Plenty of &lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-16-04&#34;&gt;guides&lt;/a&gt; describe the &lt;a href=&#34;https://www.linode.com/docs/web-servers/apache/apache-web-server-on-ubuntu-14-04/&#34;&gt;process&lt;/a&gt;.
I should mention that my server runs Apache v2.4.18 (the syntax used in the virtualhost config files changed slightly with v2.2, so if your server happens to use an older Apache version, beware).
We will get back to the web server configuration once the VM is up and running with its own IP address. Now, let’s move on to installing LaTeX and compiling R.&lt;/p&gt;
&lt;div id=&#34;install-latex-texlive&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Install LaTeX (TeXLive)&lt;/h3&gt;
&lt;p&gt;If you plan to install LaTeX, you should do so before compiling R since the latter will look for it during compilation.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
$ tar -xvf install-tl-unx.tar.gz
$ cd install-tl-20190119/
$ ./install-tl&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Depending on your preferences, you might want to make the directory &lt;code&gt;/usr/local/texlive&lt;/code&gt; owned by your user account instead of root to simplify the maintenance of TeXLive. Note that downloading a full TeXLive installation can take quite a while.&lt;/p&gt;
&lt;p&gt;To add LaTeX to the system-wide &lt;code&gt;PATH&lt;/code&gt;, I added the following line to &lt;code&gt;/etc/profile&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;PATH=&amp;quot;/usr/local/texlive/2018/bin/x86_64-linux:$PATH&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will make the LaTeX executables findable by R and other programs on the host (you might have to logout and log back in for the change to take effect).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;compile-r-from-source&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Compile R from source&lt;/h3&gt;
&lt;p&gt;I have found that compiling R from source (on the host) aids considerably in achieving a working R session on each guest, because whereas compiled R lives entirely inside the &lt;code&gt;/opt/R/&lt;/code&gt; directory, the R installated from the Debian repos gets parts of it installed all over the filesystem (&lt;code&gt;/usr/lib/R/&lt;/code&gt;, &lt;code&gt;/usr/local/lib/R/&lt;/code&gt;, among other places) which makes it unworkable to setup &lt;a href=&#34;#kvm-filesystem-passthrough&#34;&gt;KVM filesystem passthrough&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For removing an existing R installed by the apt package manager, see &lt;a href=&#34;#remove-an-existing-r-aptitude-installation&#34;&gt;the appendix&lt;/a&gt;. But please don’t remove your existing R installation before reading through the installation instructions below carefully.&lt;/p&gt;
&lt;p&gt;Download and extract the R source tarball (at the time I compiled R, version 3.5.1 was available).&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;chepec@yourhost:~/Downloads
$ wget https://cran.r-project.org/src/base/R-3/R-3.5.1.tar.gz
$ tar -xzvf R-3.5.1.tar.gz
$ cd R-3.5.1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Depending on which R packages you plan to install, you might need to install certain dependencies &lt;em&gt;before&lt;/em&gt; compiling R. How to figure out which dependencies you need may not be entirely straight-forward. You should at least have a look at the &lt;code&gt;capabilities()&lt;/code&gt; of your current R installation (before removing it):&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;&amp;gt; capabilities()
       jpeg         png        tiff       tcltk         X11        aqua
       TRUE        TRUE        TRUE        TRUE       FALSE       FALSE
   http/ftp     sockets      libxml        fifo      cledit       iconv
       TRUE        TRUE        TRUE        TRUE        TRUE        TRUE
        NLS     profmem       cairo         ICU long.double     libcurl
       TRUE        TRUE        TRUE       FALSE        TRUE        TRUE&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Some of these capabilities/dependencies appear to be packaged together with apt’s R installation, so when we remove it, we also uninstall the dependencies. Anyway, I found that, on my particular system, &lt;code&gt;tcltk&lt;/code&gt; was missing and had to be installed prior to compiling R for a whole bunch of R packages to work later. So we need to install the &lt;code&gt;tcl&lt;/code&gt; and &lt;code&gt;tk&lt;/code&gt; development packages:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;chepec@yourhost:~
$ sudo apt install tcl8.6-dev tk8.6-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libxft-dev libxss-dev x11proto-scrnsaver-dev
Suggested packages:
  tcl8.6-doc tk8.6-doc
The following NEW packages will be installed:
  libxft-dev libxss-dev tcl8.6-dev tk8.6-dev x11proto-scrnsaver-dev
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now let’s build R from the source tarball we downloaded (note the build flags, and adapt to your needs).&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;chepec@yourhost:~/Downloads/R-3.5.1
$ ./configure --prefix=/opt/R/$(cat VERSION) --enable-R-shlib --with-blas --with-lapack --with-tcltk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This should produce lots of output, ending with a block looking like this:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;R is now configured for x86_64-pc-linux-gnu

  Source directory:          .
  Installation directory:    /opt/R/3.5.1

  C compiler:                gcc  -g -O2
  Fortran 77 compiler:       f95  -g -O2

  Default C++ compiler:      g++   -g -O2
  C++98 compiler:            g++ -std=gnu++98 -g -O2
  C++11 compiler:            g++ -std=gnu++11 -g -O2
  C++14 compiler:            g++ -std=gnu++14 -g -O2
  C++17 compiler:
  Fortran 90/95 compiler:    gfortran -g -O2
  Obj-C compiler:

  Interfaces supported:      X11, tcltk
  External libraries:        readline, BLAS(generic), LAPACK(generic), curl
  Additional capabilities:   PNG, JPEG, TIFF, NLS, cairo, ICU
  Options enabled:           shared R library, R profiling

  Capabilities skipped:
  Options not enabled:       shared BLAS, memory profiling

  Recommended packages:      yes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To figure out if anything was amiss during the compilation, you &lt;em&gt;really&lt;/em&gt; should spend some time scrolling through &lt;code&gt;config.log&lt;/code&gt; in the compilation directory. It might save you a bunch of time later.&lt;/p&gt;
&lt;p&gt;Now if you’re happy with the build, let’s make and install.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ make
$ sudo make install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s it. Now either put the &lt;code&gt;opt/R/&amp;lt;version-number&amp;gt;/bin/&lt;/code&gt; directory into the system &lt;code&gt;PATH&lt;/code&gt;, or symlink the two R executables into somewhere already on the system &lt;code&gt;PATH&lt;/code&gt;. I prefer the latter approach, so:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo ln -s /opt/R/3.5.1/bin/R /usr/bin/R
$ sudo ln -s /opt/R/3.5.1/bin/Rscript /usr/bin/Rscript&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When we create our first VM we will create the same symlinks on there. And don’t forget that these symlinks should be changed once you have upgraded to a newer R version.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;NOTE: at this point, it’s perhaps worth underscoring that going forward, &lt;strong&gt;everything&lt;/strong&gt; R-related should be kept inside this &lt;code&gt;/opt/R/&lt;/code&gt; tree. That includes config files (by default placed in &lt;code&gt;/opt/R/3.5.1/lib/R/etc/&lt;/code&gt;) as well as installed system and user packages. Anything you place outside this tree will not be visible on the VM which would defeat the purpose of this whole project.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&#34;install-kvm-and-the-virtual-machine-os&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Install KVM and the virtual machine OS&lt;/h3&gt;
&lt;p&gt;Install the VM hypervisor (KVM/libvirt):&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo apt install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verify the KVM installation by running &lt;code&gt;kvm-ok&lt;/code&gt;.
Also check that the &lt;code&gt;libvirtd&lt;/code&gt; service is running: &lt;code&gt;systemctl status libvirtd.service&lt;/code&gt;. If it’s not, start it: &lt;code&gt;sudo systemctl start libvirtd.service&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For networking, I decided to setup the &lt;a href=&#34;https://help.ubuntu.com/community/KVM/Networking#Creating_a_network_bridge_on_the_host&#34;&gt;server’s physical network interface card (NIC) as a bridge adapter&lt;/a&gt;. This way, each VM will act as its own NIC visavi the router, and I can simply let the router assign IP addresses as usual (and it allows me to use my router’s DHCP server to set a static IP address for each VM). This was simpler to setup than iptables redirects on the host or other alternatives (there are many ways to setup networking for VMs). And if you want SSH access to the VM, just setup port forwarding of the SSH port on the router, as per usual.&lt;/p&gt;
&lt;p&gt;To set up your NIC as a bridge adapter, first make sure the &lt;code&gt;bridge-utils&lt;/code&gt; package is installed on the host. We will edit &lt;code&gt;/etc/network/interfaces&lt;/code&gt;, so make sure to take a backup copy of it first: &lt;code&gt;sudo cp /etc/network/interfaces /etc/network/interfaces.backup&lt;/code&gt;. For good measure, you might want to backup &lt;code&gt;/etc/resolv.conf&lt;/code&gt; as well.&lt;/p&gt;
&lt;p&gt;This is how my &lt;code&gt;/etc/network/interfaces&lt;/code&gt; looked before any changes:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1
iface eth1 inet dhcp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and this is the same file now configured for bridging:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;# The loopback network interface
auto lo
iface lo inet loopback

# The physical network interface
auto eth1
iface eth1 inet manual

auto br0
iface br0 inet dhcp
bridge_ports eth1
bridge_stp off
bridge_fd 0
bridge maxwait 0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This sets up the new &lt;code&gt;br0&lt;/code&gt; interface, and effectively makes &lt;code&gt;eth1&lt;/code&gt; just a physical transport layer to it.
Bridging means the VM will be exposed to whatever the bridged NIC is connected to, in our case to our LAN and the router. As such it will get an IP address from the router’s DHCP server just like any other networked device on the LAN.&lt;/p&gt;
&lt;p&gt;Note that by default, KVM creates its own bridge at &lt;code&gt;192.168.122.1&lt;/code&gt;. This device acts as a virtual router for your VMs. (We will not use this virtual router for anything in this project).&lt;/p&gt;
&lt;p&gt;With the edits in place, restart the networking service (but be warned: if your connection to the host is over SSH, at this point you will lose the connection! I found it useful to apply these networking changes while physically connected to the host).&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo systemctl restart networking.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With KVM installed and with the host’s network configured, we are now ready to install our first virtual machine. The installation is done over VNC.&lt;/p&gt;
&lt;p&gt;All virtual machine files and other related files will be stored under &lt;code&gt;/var/lib/libvirt/&lt;/code&gt;.
The default path of saved ISO images is &lt;code&gt;/var/lib/libvirt/boot/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We will go ahead and download the latest netinst Ubuntu Server 16.04 64-bit image, and save it in &lt;code&gt;/var/lib/libvirt/boot/&lt;/code&gt;. Installing is fairly straight-forward once you figure out the &lt;code&gt;virt-install&lt;/code&gt; command parameters (lots of guides online, see the &lt;a href=&#34;#bibliography&#34;&gt;Bibliography&lt;/a&gt;). I used the following command with success:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo virt-install --virt-type=kvm --name &amp;lt;guestname&amp;gt; --ram 4096 --vcpus=2 \
  --os-variant=ubuntu16.04 --hvm \
  --cdrom=/var/lib/libvirt/boot/ubuntu-16.04.3-amd64-netinst.iso \
  --network=bridge=br0,model=virtio --graphics vnc \
  --disk path=/var/lib/libvirt/images/&amp;lt;guestname&amp;gt;.qcow2,size=20,bus=virtio,format=qcow2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here we allocate a maximum of 4 GB RAM, 2 CPU cores and 20 GB disk space to the new virtual machine. KVM is pretty smart and won’t use up those resources until usage demands it, so most of the time the load on the host from this VM will be much less than this. As for the disk space, 20 GB should be plenty. In fact, if you don’t plan to keep your work files on the VM itself, even half that would be plenty). Anyway, it’s fairly easy to expand a qcow2 disk at a later date, but slightly complicated to shrink one.&lt;/p&gt;
&lt;p&gt;The above command will simply tell you that installation has started - you will need to connect to the OS installation using VNC to actually proceed with the installation.
KVM gives every guest it launches a new VNC instance with its own port (starting with port &lt;code&gt;5900&lt;/code&gt;). So we’ll check the current guest’s VNC port number, and then tunnel in via ssh to proceed with the OS installation:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;# find the VNC port number of the VM
$ sudo virsh dumpxml &amp;lt;guestname&amp;gt; | grep vnc
# sample output:
&amp;lt;graphics type=&amp;#39;vnc&amp;#39; port=&amp;#39;5900&amp;#39; autoport=&amp;#39;yes&amp;#39; listen=&amp;#39;127.0.0.1&amp;#39;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Use a VNC client (such as &lt;code&gt;xtightvncviewer&lt;/code&gt;) to connect to the port used by the libvirt installer on the server. For security, we will route the connection through an SSH tunnel:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;# Create an ssh tunnel from your workstation to the host
$ ssh &amp;lt;username&amp;gt;@yourhost.yourdomain.se -L 5900:localhost:&amp;lt;localport&amp;gt;
# on your workstation, use a local VNC client to connect to the tunnel
$ xtightvncviewer localhost:&amp;lt;localport&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et voilà! Now proceed with the OS installation as usual. If the VNC connection is dropped during the installation (happens sometimes), reconnect by repeating the last chunk and continue from where you were dropped off.&lt;/p&gt;
&lt;!-- CONT HERE by linking to guides or Appendix for this section --&gt;
&lt;p&gt;When the OS installation is done, it’s a good time to setup static DHCP for this VM and port forwarding for the SSH port. Both of these settings are done on your router. (&lt;a href=&#34;#network-configuration-bridging-static-dhcp-port-forwarding&#34;&gt;There are some links in the Bibliography&lt;/a&gt; to help get you started). You probably also want to setup passwordless SSH access to the VM (since you already have a server, I’m going to &lt;a href=&#34;https://lmddgtfy.net/?q=passwordless%20ssh&#34;&gt;assume you know how to do that&lt;/a&gt;). Make sure to set the VM’s &lt;code&gt;hostname&lt;/code&gt; in both &lt;code&gt;/etc/hostname&lt;/code&gt; and &lt;code&gt;/etc/hosts&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;With those things in place, we will also setup a new subdomain for accessing this Rstudio server instance from anywhere. If you configured SSH port forwarding earlier, you will also be able to SSH from anywhere. I cannot go into how to do this in detail since it depends on your registrar (Loopia, GoDaddy, Amazon Route 53, etc.). But in summary, go to your registrar, and create a &lt;code&gt;CNAME&lt;/code&gt; record that points &lt;code&gt;&amp;lt;name-for-VM&amp;gt;.yourdomain.se&lt;/code&gt; to the already existing (sub)domain of your host server (&lt;code&gt;yourhost.yourdomain.se&lt;/code&gt;). Once the new DNS settings have propagated across the web, you should be able to reach your new virtual machine using your chosen URL.&lt;/p&gt;
&lt;p&gt;While still on the host, make sure that the virtual machine is running:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ virsh list --all
$ virsh start &amp;lt;guestname&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;share-directories-on-the-host-to-the-guests&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Share directories on the host to the guests&lt;/h3&gt;
&lt;p&gt;Shutdown the virtual machine and edit its configuration XML file:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ virsh shutdown &amp;lt;guestname&amp;gt;
$ virsh edit &amp;lt;guestname&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and add these blocks inside the &lt;code&gt;devices&lt;/code&gt; tree:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;&amp;lt;filesystem type=&amp;#39;mount&amp;#39; accessmode=&amp;#39;passthrough&amp;#39;&amp;gt;
   &amp;lt;source dir=&amp;#39;/opt/R&amp;#39;/&amp;gt;
   &amp;lt;target dir=&amp;#39;R&amp;#39;/&amp;gt;
&amp;lt;/filesystem&amp;gt;
&amp;lt;filesystem type=&amp;#39;mount&amp;#39; accessmode=&amp;#39;passthrough&amp;#39;&amp;gt;
   &amp;lt;source dir=&amp;#39;/usr/local/texlive&amp;#39;/&amp;gt;
   &amp;lt;target dir=&amp;#39;texlive&amp;#39;/&amp;gt;
&amp;lt;/filesystem&amp;gt;
&amp;lt;filesystem type=&amp;#39;mount&amp;#39; accessmode=&amp;#39;passthrough&amp;#39;&amp;gt;
   &amp;lt;source dir=&amp;#39;/usr/share/fonts&amp;#39;/&amp;gt;
   &amp;lt;target dir=&amp;#39;fonts&amp;#39;/&amp;gt;
&amp;lt;/filesystem&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The string in &lt;code&gt;target dir&lt;/code&gt; is just a label, which we will have use for in the fstab (on the guest) to mount these shares. Make the label informative.&lt;/p&gt;
&lt;p&gt;Restart the VM.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ virsh start &amp;lt;guestname&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And with that, let’s move on to mounting the passed-through directories on the VM.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;setup-the-guest-virtual-machine&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Setup the guest (virtual machine)&lt;/h2&gt;
&lt;div id=&#34;filesystem-passthrough-for-r-texlive-and-fonts&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Filesystem passthrough for R, TeXLive and fonts&lt;/h3&gt;
&lt;p&gt;Log in to the VM. Append the following lines to the file &lt;code&gt;/etc/modules&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;loop
virtio
9p
9pnet
9pnet_virtio&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;then load those modules (make sure to do this step as root):&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo service kmod start&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Create the mountpoints for the shares on the guest. The mountpoints for R and TeXLive should not exist on the guest, so simple create those directories (use &lt;code&gt;sudo&lt;/code&gt; if necessary):&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ mkdir /opt/R
$ mkdir /usr/local/texlive&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The fonts directory probably exists already, so let’s delete it and recreate an empty one:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo rm -rf /usr/share/fonts
$ sudo mkdir /usr/share/fonts&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you should be ready to mount the passed-through directories (here we make use the label we set in &lt;code&gt;target dir&lt;/code&gt; above):&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo mount R /opt/R -t 9p -o trans=virtio
$ sudo mount texlive /usr/local/texlive -t 9p -o trans=virtio
$ sudo mount fonts /usr/share/fonts -t 9p -o trans=virtio&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now make sure everything works as expected on the guest. You should be able to read from these directories, but not write.
If everything works as expected, go ahead and add these shares to &lt;code&gt;/etc/fstab&lt;/code&gt; for automatic mounting at boot:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;R        /opt/R               9p    trans=virtio   0   0
texlive  /usr/local/texlive   9p    trans=virtio   0   0
fonts    /usr/share/fonts     9p    trans=virtio   0   0&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: by default, the security profile of KVM will not allow the guest to write to any directories mounted using the passthrough method. And this works just fine for our purposes, since all maintenance of the R, LaTeX and fonts directories should be done on the host machine anyway.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&#34;make-r-and-texlive-executables-accessible&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Make R and TeXLive executables accessible&lt;/h3&gt;
&lt;p&gt;For R and LaTeX to work as expected on the guest, it’s not enough to make the &lt;code&gt;/opt/R&lt;/code&gt; and &lt;code&gt;/usr/local/texlive&lt;/code&gt; trees available. We should also expose the executables where other programs expect to find them, namely somewhere on the system’s PATH.&lt;/p&gt;
&lt;p&gt;Additionally, there are a few crucial TeX utilities that we need to get from the host to the guest.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ ls -1 /usr/bin/tex*
/usr/bin/texi2any
/usr/bin/texi2dvi
/usr/bin/texi2pdf
/usr/bin/texindex&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These are actual files and not links.
They are not available on the guest, but need to be for TeXLive to work properly in conjunction with R.&lt;/p&gt;
&lt;p&gt;There’s no way to passthrough single files from host to guest, and we definitely do not want to passthrough the entire &lt;code&gt;/usr/bin/&lt;/code&gt; directory. So although inelegant, the best solution appears to be to simply copy these files from host to guest.
Note that you will need to redo this if these files should be updated by &lt;code&gt;tlmgr&lt;/code&gt; on the host in the future. Assuming you have setup SSH access from host to guest, you can copy them like this:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;chepec@yourhost:~
$ scp -p /usr/bin/texi* &amp;lt;guestname&amp;gt;:/home/chepec/Downloads/
$ ssh &amp;lt;guestname&amp;gt;
chepec@&amp;lt;guestname&amp;gt;:~
$ sudo cp -a /home/chepec/Downloads/texi* /usr/bin/
$ sudo chown root:root /usr/bin/texi*&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Create symlinks in &lt;code&gt;/usr/bin/&lt;/code&gt; for the R executables:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo ln -s /opt/R/3.5.1/bin/R /usr/bin/R
$ sudo ln -s /opt/R/3.5.1/bin/Rscript /usr/bin/Rscript&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And add the TexLive path to the system &lt;code&gt;PATH&lt;/code&gt;. In &lt;code&gt;/etc/profile&lt;/code&gt;, append&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;PATH=&amp;quot;/usr/local/texlive/2018/bin/x86_64-linux:$PATH&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Why not add the &lt;code&gt;R/bin&lt;/code&gt; directory to PATH as well, you ask? Well, you may well want to do that, especially if you have more than just two executables in there. Both methods (symlinking or editing &lt;code&gt;$PATH&lt;/code&gt;) achieve the same result.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;NOTE: if you have a network share or similar where you keep your work files, you might want to mount that too on the guest.
Since you most definitely want to &lt;strong&gt;read and write&lt;/strong&gt; to this directory from the VM, you might want to use NFS (if it’s inside the LAN) or SSHFS (otherwise) to mount it instead of KVM passthrough. If you do, having your regular user account on the VM have the same username, uid and gid as that on the share will most certainly make your life as an admin easier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&#34;install-rstudio-server&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Install Rstudio Server&lt;/h3&gt;
&lt;p&gt;Browse to &lt;a href=&#34;https://www.rstudio.com/products/rstudio/download-server/&#34; class=&#34;uri&#34;&gt;https://www.rstudio.com/products/rstudio/download-server/&lt;/a&gt; and follow the instructions to download and install the latest RStudio Server Open Source Edition.&lt;/p&gt;
&lt;p&gt;The installation will automatically set up a systemd startup script (or upstart, depending on your system) for Rstudio server. Neat!&lt;/p&gt;
&lt;p&gt;By default, RStudio Server listens on port 8787 on all interfaces, &lt;code&gt;0.0.0.0:8787&lt;/code&gt;. At this point, you should be able to verify that RStudio Server is accessible via your browser by entering &lt;code&gt;http://&amp;lt;ip-address-guest&amp;gt;:8787&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;back-to-the-host&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Back to the host&lt;/h2&gt;
&lt;div id=&#34;configure-apache-reverse-proxy-and-lets-encrypt-certificates&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Configure Apache reverse proxy and Let’s Encrypt certificates&lt;/h3&gt;
&lt;p&gt;The Apache web server on our host machine will act as a reverse proxy, and we will also install a free TLS (HTTPS) certificate from Let’s Encrypt for our RStudio Server instance.&lt;/p&gt;
&lt;p&gt;Let’s say you named your virtual machine &lt;code&gt;callisto&lt;/code&gt; and created a subdomain &lt;code&gt;rstudio.callisto.yourhost.se&lt;/code&gt; for it.
We would thus create a new Apache virtualhost file &lt;code&gt;/etc/apache2/sites-available/rstudio.callisto.yourhost.se.conf&lt;/code&gt; with the following contents:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
   ServerAdmin webmaster@yourhost.se
   ServerName rstudio.callisto.yourhost.se

   Redirect permanent / https://rstudio.callisto.yourhost.se/

   ErrorLog ${APACHE_LOG_DIR}/rstudio.callisto.yourhost.se_error.log
   CustomLog ${APACHE_LOG_DIR}/rstudio.callisto.yourhost.se_access.log combined
&amp;lt;/VirtualHost&amp;gt;

&amp;lt;VirtualHost *:443&amp;gt;
   ServerAdmin webmaster@yourhost.se
   ServerName rstudio.callisto.yourhost.se

   SSLEngine on
   SSLCertificateKeyFile   /etc/letsencrypt/live/rstudio.callisto.yourhost.se/privkey.pem
   SSLCertificateFile      /etc/letsencrypt/live/rstudio.callisto.yourhost.se/cert.pem
   SSLCertificateChainFile /etc/letsencrypt/live/rstudio.callisto.yourhost.se/chain.pem

   &amp;lt;Proxy *&amp;gt;
      Allow from localhost
   &amp;lt;/Proxy&amp;gt;

   RewriteEngine on
   RewriteCond %{HTTP:Upgrade} =websocket
   RewriteRule /(.*) ws://192.168.100.110:8787/$1 [P,L]
   RewriteCond %{HTTP:Upgrade} !=websocket
   RewriteRule /(.*) http://192.168.100.110:8787/$1 [P,L]
   ProxyPass / http://192.168.100.110:8787/
   ProxyPassReverse / http://192.168.100.110:8787/
   ProxyRequests Off

   ErrorLog ${APACHE_LOG_DIR}/rstudio.callisto.yourhost.se_error.log
   CustomLog ${APACHE_LOG_DIR}/rstudio.callisto.yourhost.se_access.log combined
&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should of course edit domain name, email address and IP address above to fit your setup.&lt;/p&gt;
&lt;p&gt;With DNS in place, now is the time to install the Let’s Encrypt certificate. This will be managed by &lt;code&gt;certbot&lt;/code&gt;. &lt;a href=&#34;https://certbot.eff.org/all-instructions/&#34;&gt;EFF has excellent instructions on how to install the &lt;code&gt;certbot&lt;/code&gt; client&lt;/a&gt;. With &lt;code&gt;certbot&lt;/code&gt; installed, fetch the certificate (I like to manage the integration with Apache myself, so I use the &lt;code&gt;certonly&lt;/code&gt; option):&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo certbot certonly --authenticator standalone \
  --pre-hook &amp;quot;systemctl stop apache2.service&amp;quot; \
  --post-hook &amp;quot;systemctl start apache2.service&amp;quot; \
  --email webmaster@yourhost.se -d rstudio.callisto.yourhost.se&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should really setup a CRON job or a systemd timer for &lt;a href=&#34;https://certbot.eff.org/docs/using.html#renewal&#34;&gt;automatic renewals your Let’s Encrypt certificates&lt;/a&gt;. Check the Certbot docs and the web for info on how to accomplish that.&lt;/p&gt;
&lt;p&gt;With the TLS certificate installed, we are now ready to enable our virtualhost and reload Apache:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo a2ensite rstudio.callisto.yourhost.se.conf
$ sudo systemctl reload apache2.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If no errors were thrown, you should new be able to reach your RStudio Server instance running on your VM from your browser using the URL &lt;code&gt;http://&amp;lt;rstudio.callisto.yourhost.se&amp;gt;&lt;/code&gt; which should automatically redirect to https.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;create-additional-vms-kvm-cloning&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Create additional VMs (KVM cloning)&lt;/h3&gt;
&lt;p&gt;Shutdown the VM before cloning.&lt;/p&gt;
&lt;p&gt;The cloning operation is straight-forward (should be done as root):&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ virt-clone --original callisto --name ganymede --file /var/lib/libvirt/images/ganymede.qcow2
Allocating &amp;#39;ganymede.qcow2&amp;#39;                  |  20 GB  00:00:39
Clone &amp;#39;ganymede&amp;#39; created successfully.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This clones &lt;code&gt;callisto&lt;/code&gt; and sets the new VM’s name to &lt;code&gt;ganymede&lt;/code&gt;. Note that this naming only affects the VM hypervisor, we still have to login to the new guest and edit the hostname (in &lt;code&gt;/etc/hosts&lt;/code&gt; and &lt;code&gt;/etc/hostname&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;The bridged networking we setup above means that the new VM will get its own IP address assigned by the router (which you might want to assign statically by the way). We need to create a new subdomain that this instance will be reached on, and once that’s in place we will create a new Apache vhost and download a Let’s Encrypt certificate.&lt;/p&gt;
&lt;p&gt;Create &lt;code&gt;/etc/apache2/sites-available/rstudio.ganymede.yourhost.se.conf&lt;/code&gt; with the following contents:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
   ServerAdmin webmaster@yourhost.se
   ServerName rstudio.ganymede.yourhost.se

   Redirect permanent / https://rstudio.ganymede.yourhost.se/

   ErrorLog ${APACHE_LOG_DIR}/rstudio.ganymede.yourhost.se_error.log
   CustomLog ${APACHE_LOG_DIR}/rstudio.ganymede.yourhost.se_access.log combined
&amp;lt;/VirtualHost&amp;gt;

&amp;lt;VirtualHost *:443&amp;gt;
   ServerAdmin webmaster@yourhost.se
   ServerName rstudio.ganymede.yourhost.se

   SSLEngine on
   SSLCertificateKeyFile   /etc/letsencrypt/live/rstudio.ganymede.yourhost.se/privkey.pem
   SSLCertificateFile      /etc/letsencrypt/live/rstudio.ganymede.yourhost.se/cert.pem
   SSLCertificateChainFile /etc/letsencrypt/live/rstudio.ganymede.yourhost.se/chain.pem

   &amp;lt;Proxy *&amp;gt;
      Allow from localhost
   &amp;lt;/Proxy&amp;gt;

   RewriteEngine on
   RewriteCond %{HTTP:Upgrade} =websocket
   RewriteRule /(.*) ws://192.168.100.111:8787/$1 [P,L]
   RewriteCond %{HTTP:Upgrade} !=websocket
   RewriteRule /(.*) http://192.168.100.111:8787/$1 [P,L]
   ProxyPass / http://192.168.100.111:8787/
   ProxyPassReverse / http://192.168.100.111:8787/
   ProxyRequests Off

   ErrorLog ${APACHE_LOG_DIR}/rstudio.ganymede.yourhost.se_error.log
   CustomLog ${APACHE_LOG_DIR}/rstudio.ganymede.yourhost.se_access.log combined
&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note the different IP address and server name (edit to fit your setup).&lt;/p&gt;
&lt;p&gt;And install the Let’s Encrypt certificate:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo certbot certonly --authenticator standalone \
  --pre-hook &amp;quot;systemctl stop apache2.service&amp;quot; \
  --post-hook &amp;quot;systemctl start apache2.service&amp;quot; \
  --email webmaster@yourhost.se -d rstudio.ganymede.yourhost.se&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Enable the site and reload the web server:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo a2ensite rstudio.callisto.yourhost.se.conf
$ sudo systemctl reload apache2.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And that should be it.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;autostart-the-virtual-machines&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Autostart the virtual machines&lt;/h3&gt;
&lt;p&gt;Virtual machines created with KVM do not autostart by default when the host reboots.
But for our application, it might be desirable to have them autostart. To achieve that, issue the following for each VM.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ virsh autostart &amp;lt;guestname&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can confirm the new setting by:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ virsh list --all --autostart
$ virsh list --all --no-autostart&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;conclusion&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This is admittedly a resource-demanding solution to the “single-session per browser” limitation put on RStudio Server OSE by RStudio.
Also, it requires the admin to setup multiple VMs and the user to remember multiple URLs.&lt;/p&gt;
&lt;p&gt;Still, it’s the most reliable and resource-efficient way to achieve actual multi-sessions without any restrictions in the browser I have seen to date, outside of the Pro offering of course. And the single R/LaTeX installation at its core makes it quite maintainable and means adding more VMs (i.e., more RStudio Server instances) marginally cost-free in terms of setup.&lt;/p&gt;
&lt;p&gt;I have been running this setup myself for about a year now, and I decided to write-up this project in the hopes that others (single researchers like me, or groups/departments) might find it useful. And if you have comments or questions, please feel free to ask them on my &lt;a href=&#34;https://twitter.com/solarchemist&#34;&gt;Twitter&lt;/a&gt; or &lt;a href=&#34;https://scholar.social/@solarchemist&#34;&gt;Mastodon&lt;/a&gt; accounts (and sorry for the lack of comments on this site – I’m still figuring out how to implement that with Hugo outside of Disqus).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;appendix&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Appendix&lt;/h2&gt;
&lt;div id=&#34;remove-an-existing-r-aptitude-installation&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Remove an existing R aptitude installation&lt;/h3&gt;
&lt;p&gt;Here’s how to &lt;a href=&#34;https://stackoverflow.com/questions/20336644/completely-uninstall-r-linux&#34;&gt;completely remove an existing R installation&lt;/a&gt; that was installed from the Debian repos. Please be careful to record any configuration you want to move over to your new installation. This will remove everything, including config files.&lt;/p&gt;
&lt;p&gt;The installed R version was 3.4.4 (2018-03-15).
List all of the installed R packages:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;chepec@yourhost:~
$ dpkg -l | grep ^ii | awk &amp;#39;$2 ~ /^r-/ { print $2 }&amp;#39;
r-base
r-base-core
r-base-dev
r-base-html
r-cran-boot
r-cran-class
r-cran-cluster
r-cran-codetools
r-cran-crayon
r-cran-digest
r-cran-evaluate
r-cran-foreign
r-cran-irdisplay
r-cran-jsonlite
r-cran-kernsmooth
r-cran-lattice
r-cran-magrittr
r-cran-mass
r-cran-matrix
r-cran-memoise
r-cran-mgcv
r-cran-nlme
r-cran-nnet
r-cran-pbdzmq
r-cran-r6
r-cran-repr
r-cran-rgl
r-cran-rpart
r-cran-spatial
r-cran-stringi
r-cran-stringr
r-cran-survival
r-cran-uuid
r-doc-html
r-recommended&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Uninstall all the R packages identified above in one fell swoop:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;chepec@yourhost:~
$ dpkg -l | grep ^ii | awk &amp;#39;$2 ~ /^r-/ { print $2 }&amp;#39; | xargs sudo apt remove --purge -y&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clean up any remaining directories (adapt this to catch all of them):&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;$ sudo rm -rf /usr/lib/R
$ sudo rm -rf /etc/R&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;jupyter-an-alternative-to-rstudio-server&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Jupyter, an alternative to RStudio Server?&lt;/h3&gt;
&lt;p&gt;One drastic solution is to abandon RStudio Server altogether and look for alternatives.&lt;/p&gt;
&lt;p&gt;The most obvious being Jupyter notebooks, which should offer a comparable web-based interface in particular with the &lt;a href=&#34;https://jupyterlab.readthedocs.io/en/stable/user/jupyterhub.html&#34;&gt;JupyterLab/JupyterHub&lt;/a&gt; module. The advantage is that Jupyter supports not only R but other kernels too. The disadvantage lies mainly in my own unfamiliarity with the JupyterHub setup.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;sharing-rstudio-server-projects-with-other-users&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Sharing RStudio Server projects with other users&lt;/h3&gt;
&lt;p&gt;I like to include a few words on the things I tried that did not pan out, in the hopes my experiences may help someone else save some time, or perhaps spur someone to explore a weak spot in my reasoning.&lt;/p&gt;
&lt;p&gt;One of the first things I tried was to use RStudio Server’s project feature with other users. This ultimately failed.&lt;/p&gt;
&lt;p&gt;Files and folders inside the RStudio project directory, &lt;code&gt;.Rproj.user/&lt;/code&gt;, always end up with no group write permissions, which means the last user of the project effectively takes the project hostage.&lt;/p&gt;
&lt;p&gt;This effectively blocks the most obvious route, i.e., to create different user accounts belonging to the same group, and run concurrent RStudio Server sessions in &lt;em&gt;different&lt;/em&gt; browsers while logged in as a &lt;em&gt;different&lt;/em&gt; user in each one. I found that this works, technically, but only up until you try to actually open a project, which always fails (except by the user that created the project).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://stackoverflow.com/questions/25375930/default-group-permission-for-rstudio-server&#34;&gt;One idea is to set the umask value in the system Rprofile&lt;/a&gt; to something more permissive, which I tried but I found it had no apparent effect on RStudio Server’s newly created project directories (the setting did seem to affect the R session, except it did not alter the permissions on the &lt;code&gt;*.Rproj&lt;/code&gt; file). So, unfortunately, it seems the RStudio project feature is somehow setting its own more restrictive umask independently of the R session, effectively blocking this approach.&lt;/p&gt;
&lt;p&gt;In short, I found no way to make RStudio projects work with more than one Linux user.
Of course, abandoning the projects feature “solves” this issue, but that’s a trade-off I was not willing to make.&lt;/p&gt;
&lt;p&gt;Sidenote: this could possibly, maybe, be solved by using ACL permissions. But that is a whole other can of worms, and I am far from convinced it is a viable approach. Haven’t tried it, though.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;links&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Links&lt;/h2&gt;
&lt;p&gt;Sort of a bibliography. May or may not have been cited/linked above.&lt;/p&gt;
&lt;div id=&#34;texlive&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;TeXLive&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.tug.org/texlive/quickinstall.html&#34; class=&#34;uri&#34;&gt;https://www.tug.org/texlive/quickinstall.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/index.php/TeX_Live&#34; class=&#34;uri&#34;&gt;https://wiki.archlinux.org/index.php/TeX_Live&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;r-compilation-from-source&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;R compilation from source&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://rviews.rstudio.com/2018/03/21/multiple-versions-of-r/&#34; class=&#34;uri&#34;&gt;https://rviews.rstudio.com/2018/03/21/multiple-versions-of-r/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://docs.rstudio.com/ide/server-pro/r-versions.html#recommended-installation-directories&#34; class=&#34;uri&#34;&gt;http://docs.rstudio.com/ide/server-pro/r-versions.html#recommended-installation-directories&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cran.r-project.org/doc/manuals/R-admin.html&#34; class=&#34;uri&#34;&gt;https://cran.r-project.org/doc/manuals/R-admin.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/7541101/logic-of-installation-location-of-r-packages-under-linux&#34; class=&#34;uri&#34;&gt;https://stackoverflow.com/questions/7541101/logic-of-installation-location-of-r-packages-under-linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;kvm-setup&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;KVM setup&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://linuxnewbieguide.org/how-to-setup-a-kvm-server-the-fast-way/&#34; class=&#34;uri&#34;&gt;https://linuxnewbieguide.org/how-to-setup-a-kvm-server-the-fast-way/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ostechnix.com/setup-headless-virtualization-server-using-kvm-ubuntu/&#34; class=&#34;uri&#34;&gt;https://www.ostechnix.com/setup-headless-virtualization-server-using-kvm-ubuntu/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.dedoimedo.com/computers/kvm-intro.html&#34; class=&#34;uri&#34;&gt;https://www.dedoimedo.com/computers/kvm-intro.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cyberciti.biz/faq/installing-kvm-on-ubuntu-16-04-lts-server/&#34; class=&#34;uri&#34;&gt;https://www.cyberciti.biz/faq/installing-kvm-on-ubuntu-16-04-lts-server/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://serverfault.com/questions/208693/difference-between-kvm-and-qemu&#34; class=&#34;uri&#34;&gt;https://serverfault.com/questions/208693/difference-between-kvm-and-qemu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://rabexc.org/posts/how-to-get-started-with-libvirt-on&#34; class=&#34;uri&#34;&gt;http://rabexc.org/posts/how-to-get-started-with-libvirt-on&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.jaredlog.com/?p=1484&#34; class=&#34;uri&#34;&gt;http://www.jaredlog.com/?p=1484&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.dedoimedo.com/computers/kvm-clone.html&#34; class=&#34;uri&#34;&gt;https://www.dedoimedo.com/computers/kvm-clone.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;kvm-filesystem-passthrough&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;KVM filesystem passthrough&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.qemu.org/Documentation/9psetup&#34; class=&#34;uri&#34;&gt;https://wiki.qemu.org/Documentation/9psetup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.linux-kvm.org/page/9p_virtio&#34; class=&#34;uri&#34;&gt;http://www.linux-kvm.org/page/9p_virtio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://troglobit.github.io/2013/07/05/file-system-pass-through-in-kvm-slash-qemu-slash-libvirt/&#34; class=&#34;uri&#34;&gt;https://troglobit.github.io/2013/07/05/file-system-pass-through-in-kvm-slash-qemu-slash-libvirt/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dustymabe.com/2012/09/11/share-a-folder-between-kvm-host-and-guest/&#34; class=&#34;uri&#34;&gt;https://dustymabe.com/2012/09/11/share-a-folder-between-kvm-host-and-guest/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pascalandreas.wordpress.com/2015/04/24/setting-up-kvm-shared-directory-in-ubuntu-14-04/&#34; class=&#34;uri&#34;&gt;https://pascalandreas.wordpress.com/2015/04/24/setting-up-kvm-shared-directory-in-ubuntu-14-04/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://serverfault.com/questions/342801/read-write-access-for-passthrough-9p-filesystems-with-libvirt-qemu&#34; class=&#34;uri&#34;&gt;https://serverfault.com/questions/342801/read-write-access-for-passthrough-9p-filesystems-with-libvirt-qemu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://askubuntu.com/questions/548208/sharing-folder-with-vm-through-libvirt-9p-permission-denied/567541&#34; class=&#34;uri&#34;&gt;https://askubuntu.com/questions/548208/sharing-folder-with-vm-through-libvirt-9p-permission-denied/567541&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;network-configuration-bridging-static-dhcp-port-forwarding&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Network configuration, bridging, static DHCP, port forwarding&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.linux-kvm.org/page/Networking#Public_Bridge&#34; class=&#34;uri&#34;&gt;https://www.linux-kvm.org/page/Networking#Public_Bridge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.dedoimedo.com/computers/kvm-bridged.html&#34; class=&#34;uri&#34;&gt;https://www.dedoimedo.com/computers/kvm-bridged.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://help.ubuntu.com/community/KVM/Networking&#34; class=&#34;uri&#34;&gt;https://help.ubuntu.com/community/KVM/Networking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cyberciti.biz/faq/debian-ubuntu-linux-kvm-guest-shared-physical-network/&#34; class=&#34;uri&#34;&gt;https://www.cyberciti.biz/faq/debian-ubuntu-linux-kvm-guest-shared-physical-network/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.howtogeek.com/184310/ask-htg-should-i-be-setting-static-ip-addresses-on-my-router/&#34; class=&#34;uri&#34;&gt;https://www.howtogeek.com/184310/ask-htg-should-i-be-setting-static-ip-addresses-on-my-router/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.dd-wrt.com/wiki/index.php/Static_DHCP&#34; class=&#34;uri&#34;&gt;https://wiki.dd-wrt.com/wiki/index.php/Static_DHCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://superuser.com/questions/284051/what-is-port-forwarding-and-what-is-it-used-for&#34; class=&#34;uri&#34;&gt;https://superuser.com/questions/284051/what-is-port-forwarding-and-what-is-it-used-for&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.lorextechnology.com/self-serve/port-forwarding-a-router/R-sc2900030&#34; class=&#34;uri&#34;&gt;https://www.lorextechnology.com/self-serve/port-forwarding-a-router/R-sc2900030&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://help.ubnt.com/hc/en-us/articles/217367937-EdgeRouter-Port-Forwarding&#34; class=&#34;uri&#34;&gt;https://help.ubnt.com/hc/en-us/articles/217367937-EdgeRouter-Port-Forwarding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;apache-virtual-hosts-proxies-etc.&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Apache virtual hosts, proxies, etc.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://serverfault.com/questions/195611/how-do-i-redirect-subdomains-to-a-different-port-on-the-same-server/195831#195831&#34; class=&#34;uri&#34;&gt;https://serverfault.com/questions/195611/how-do-i-redirect-subdomains-to-a-different-port-on-the-same-server/195831#195831&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://serverfault.com/questions/370724/proxypass-apache-over-nonstandard-port-how-can-it-be-that-the-192-168-9999-w&#34; class=&#34;uri&#34;&gt;https://serverfault.com/questions/370724/proxypass-apache-over-nonstandard-port-how-can-it-be-that-the-192-168-9999-w&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://serverfault.com/questions/472482/proxypass-redirect-directory-url-to-non-standard-port&#34; class=&#34;uri&#34;&gt;https://serverfault.com/questions/472482/proxypass-redirect-directory-url-to-non-standard-port&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/21598787/retaining-protocol-and-port-number-from-reverse-proxy-request&#34; class=&#34;uri&#34;&gt;https://stackoverflow.com/questions/21598787/retaining-protocol-and-port-number-from-reverse-proxy-request&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;rstudio-server-configuration&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Rstudio server configuration&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://deanattali.com/2015/05/09/setup-rstudio-shiny-server-digital-ocean/&#34;&gt;How to get your very own RStudio Server and Shiny Server with DigitalOcean, Dean Attali&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jstaf.github.io/2018/06/20/rstudio-server-semi-pro.html&#34;&gt;Going “Pro” with RStudio Server Open Source, Jeff Stafford&lt;/a&gt;, &lt;a href=&#34;https://www.reddit.com/r/rstats/comments/8sofmb/how_to_setup_rstudio_server_open_source_edition/&#34;&gt;reddit thread&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;rstudio-server-multiple-sessions&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Rstudio server multiple sessions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/22938305/run-multiple-instances-of-rstudio-in-a-web-browser&#34;&gt;Run multiple instances of RStudio in a web browser, StackOverflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://support.rstudio.com/hc/en-us/articles/211789298-Multiple-R-Sessions-in-RStudio-Server-Pro&#34;&gt;Multiple R Sessions in RStudio Server Pro, RStudio Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/OSC/bc_osc_rstudio_server/issues/1&#34;&gt;Unable to run multiple RStudio Server sessions at the same time, Batch Connect - OSC RStudio Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://community.rstudio.com/t/parallel-processes-for-rstudio-server-much-like-jupyter-notebooks/7085/1&#34;&gt;Parallel processes for Rstudio-server, much like Jupyter Notebooks, RStudio Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://support.rstudio.com/hc/en-us/community/posts/200658156-Multiple-Rstudio-server-sessions-from-one-user-account&#34;&gt;Multiple Rstudio server sessions from one user account, RStudio Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://support.rstudio.com/hc/en-us/articles/201751487-Sharing-a-Project-with-multiple-users&#34;&gt;Sharing a Project with multiple users&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://support.rstudio.com/hc/en-us/articles/221301967-Troubleshooting-Project-Sharing-in-RStudio-Server-Pro&#34;&gt;Troubleshooting Project Sharing in RStudio Server Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://support.rstudio.com/hc/en-us/community/posts/208191648-Using-RStudio-projects-AND-Git-with-multiple-users&#34;&gt;Using RStudio projects AND Git with multiple users&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://discuss.ropensci.org/t/peace-between-git-and-dropbox-with-git-worktree/289&#34; class=&#34;uri&#34;&gt;https://discuss.ropensci.org/t/peace-between-git-and-dropbox-with-git-worktree/289&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;r-and-rstudio-environment-package-management-etc.&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;R and Rstudio environment (package management, etc.)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://community.rstudio.com/t/what-are-the-main-limits-to-r-in-a-production-environment/2829/27&#34;&gt;What are the main limits to R in a production environment?, RStudio Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://s3.amazonaws.com/rstudio-server/rstudio-server-pro-0.99.902-admin-guide.pdf&#34;&gt;RStudio server professional admin guide (PDF)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;sessioninfo&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;sessionInfo()&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;sessionInfo()
## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] ggplot2_3.3.5  dplyr_1.0.8    magrittr_2.0.2 common_0.0.2   knitr_1.37    
## 
## loaded via a namespace (and not attached):
##  [1] pillar_1.7.0     bslib_0.3.1      compiler_4.0.5   jquerylib_0.1.4 
##  [5] tools_4.0.5      digest_0.6.29    jsonlite_1.7.3   evaluate_0.14   
##  [9] lifecycle_1.0.1  tibble_3.1.6     gtable_0.3.0     pkgconfig_2.0.3 
## [13] rlang_1.0.1      cli_3.2.0        DBI_1.1.2        yaml_2.2.2      
## [17] blogdown_1.7     xfun_0.29        fastmap_1.1.0    withr_2.4.3     
## [21] stringr_1.4.0    generics_0.1.2   vctrs_0.3.8      sass_0.4.0      
## [25] grid_4.0.5       tidyselect_1.1.2 glue_1.6.1       R6_2.5.1        
## [29] fansi_1.0.2      rmarkdown_2.11   bookdown_0.24    purrr_0.3.4     
## [33] scales_1.1.1     htmltools_0.5.2  ellipsis_0.3.2   assertthat_0.2.1
## [37] colorspace_2.0-2 utf8_1.2.2       stringi_1.7.6    munsell_0.5.0   
## [41] crayon_1.5.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Self-hosted Gitea server</title>
      <link>//solarchemist.se/2018/07/24/self-hosted-git-server/</link>
      <pubDate>Tue, 24 Jul 2018 16:00:00 +0000</pubDate>
      
      <guid>//solarchemist.se/2018/07/24/self-hosted-git-server/</guid>
      
      <description>

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#mysql-database-for-gitea&#34; id=&#34;toc-mysql-database-for-gitea&#34;&gt;MySQL database for Gitea&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#apache-vhost-with-lets-encrypt-certificate&#34; id=&#34;toc-apache-vhost-with-lets-encrypt-certificate&#34;&gt;Apache vhost with Let’s Encrypt certificate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#running-gitea-as-a-systemd-job&#34; id=&#34;toc-running-gitea-as-a-systemd-job&#34;&gt;Running Gitea as a systemd job&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#gitea-paths-on-nfs-share-a-bit-of-a-challenge&#34; id=&#34;toc-gitea-paths-on-nfs-share-a-bit-of-a-challenge&#34;&gt;Gitea paths on NFS share: a bit of a challenge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sources&#34; id=&#34;toc-sources&#34;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;It is always a good idea to keep your projects under version control. Once you get into the habit of using Git, you might warm to the idea of pushing your repository to a web-hosted service such as Github or Gitlab. They are undoubtedly useful for collaboration, sharing and much more.&lt;/p&gt;
&lt;p&gt;But for some projects, whether personal or business, using a hosted service is not acceptable (remember, “the cloud” is just someone else’s computer). Even so, you can still get a nice web-based front-end for your Git repos. You will just have to self-host it. Ideally on hardware that you own, but in lieu of that a VPS will do.&lt;/p&gt;
&lt;p&gt;My own motivation for self-hosting a Git server is that I would like to have access to the capabilities such a service offers while I work on my thesis, which I’m not comfortable hosting in the cloud (not until it is done, anyway).&lt;/p&gt;
&lt;p&gt;Currently, your choice of front-ends boils down to Gitlab CE, Gogs or Gitea.&lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;
&lt;a href=&#34;https://www.reddit.com/r/programming/comments/5kdbvq/gitea_a_painless_selfhosted_git_service/&#34;&gt;Gitea is a fork&lt;/a&gt; of Gogs. Both of them are very light on system resources. Gitlab Community Edition is a monster in comparison. For a non-professional coder like myself, Gitea will be just fine.&lt;/p&gt;
&lt;p&gt;The rest of this post describes how I setup Gitea on a server of mine. You can have a look at the finished product at &lt;a href=&#34;https://git.solarchemist.se&#34; class=&#34;uri&#34;&gt;https://git.solarchemist.se&lt;/a&gt; (it’s not much to look at though, as most repos are private).
Before jumping off, I should note that there are already several “how to setup Gitea” guides published by others, so this will not be a step-by-step instruction. For that, I can recommend any of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://bryangilbert.com/post/devops/how-to-setup-gitea-ubuntu/&#34;&gt;“How to setup Gitea on an Ubuntu Server” by Ryan Gilbert&lt;/a&gt;. This is a well-written, easy-to-follow step-by-step instruction. It is also the most recent.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://charlesreid1.github.io/setting-up-a-self-hosted-github-clone-with-gitea.html&#34;&gt;“Setting Up a Self-Hosted Github Clone with Gitea” by Charlesreid1&lt;/a&gt;. Also well-written and with lots of screenshots and even an illustration.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.rune.pm/tutorial-set-up-gitea-with-nginx/&#34;&gt;“Set up Gitea with Nginx” by Rune Olsen&lt;/a&gt;. This tutorial concentrates on the settings for the web server, using Nginx as a reverse proxy for Gitea.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chefkochblog.wordpress.com/2018/06/05/how-to-start-your-own-git-server-in-less-than-30-minutes/&#34;&gt;“How To Start your own Git Server in less than 30 Minutes” by CHEF-KOCH&lt;/a&gt;. Has a section with enlightening discussion on Github alternatives. Also goes through Gitea setup in some detail, including setup of PostgreSQL database.&lt;/li&gt;
&lt;li&gt;And of course, the &lt;a href=&#34;https://docs.gitea.io/en-us/install-from-binary/&#34;&gt;Gitea Docs&lt;/a&gt; themselves.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&#34;mysql-database-for-gitea&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;MySQL database for Gitea&lt;/h1&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;# install mysql from ubuntu repos
sudo apt install mysql-server mysql-client libmysqlclient-dev
# check the installed mysql version
mysql --version
# secure the mysql installation
sudo mysql_secure_installation
# login to mysql as root
sudo mysql -u root -p&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;While logged in as MySQL root user, create the user and database for Gitea.&lt;/p&gt;
&lt;pre class=&#34;sql&#34;&gt;&lt;code&gt;CREATE USER &amp;#39;gitea&amp;#39;@&amp;#39;localhost&amp;#39; IDENTIFIED BY &amp;#39;somelongandcomplexpassword&amp;#39;;
CREATE DATABASE gitea DEFAULT CHARACTER SET &amp;#39;utf8&amp;#39; COLLATE &amp;#39;utf8_general_ci&amp;#39;;
GRANT ALL ON gitea.* TO &amp;#39;gitea&amp;#39;@&amp;#39;localhost&amp;#39;;
FLUSH PRIVILEGES;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We explicitly set UTF8 for the Gitea database above because the Gitea docs explicitly recommend using InnoDB and UTF8 with MySQL. Recent versions of MySQL should default to using InnoDB (instead of MyISAM), but we can check that ourselves by (still logged in as MySQL root):&lt;/p&gt;
&lt;pre class=&#34;sql&#34;&gt;&lt;code&gt;mysql&amp;gt; show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;apache-vhost-with-lets-encrypt-certificate&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Apache vhost with Let’s Encrypt certificate&lt;/h1&gt;
&lt;p&gt;This virtualhost configuration is for Apache v2.4.X. Created the file &lt;code&gt;/etc/apache2/sites-available/git.solarchemist.se.conf&lt;/code&gt;, with the following contents:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
  ServerAdmin email@solarchemist.se
  ServerName git.solarchemist.se
  ServerAlias gitea.solarchemist.se

  Redirect permanent / https://git.solarchemist.se/

  ErrorLog ${APACHE_LOG_DIR}/git.solarchemist.se_error.log
  CustomLog ${APACHE_LOG_DIR}/git.solarchemist.se_access.log combined
&amp;lt;/VirtualHost&amp;gt;

&amp;lt;VirtualHost *:443&amp;gt;
  ServerAdmin email@solarchemist.se
  ServerName git.solarchemist.se
  ServerAlias gitea.solarchemist.se

  SSLEngine on
  SSLCertificateKeyFile   /etc/letsencrypt/live/git.solarchemist.se/privkey.pem
  SSLCertificateFile      /etc/letsencrypt/live/git.solarchemist.se/cert.pem
  SSLCertificateChainFile /etc/letsencrypt/live/git.solarchemist.se/chain.pem

  ProxyPreserveHost On
  ProxyRequests Off
  ProxyPass / http://192.168.1.444:3000/
  ProxyPassReverse / http://192.168.1.444:3000/

  ErrorLog ${APACHE_LOG_DIR}/git.solarchemist.se_error.log
  CustomLog ${APACHE_LOG_DIR}/git.solarchemist.se_access.log combined
&amp;lt;/VirtualHost&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Before enabling this site, we need to have DNS records setup for the defined sub-domains.
Once the DNS records have propagated, we can use &lt;code&gt;certbot&lt;/code&gt; to fetch our &lt;a href=&#34;https://certbot.eff.org/&#34;&gt;Let’s Encrypt certificates&lt;/a&gt;.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;# this one-liner stops the Apache server, fetches the certs, and restarts Apache
sudo certbot certonly --authenticator standalone --pre-hook &amp;quot;systemctl stop apache2.service&amp;quot; --post-hook &amp;quot;systemctl start apache2.service&amp;quot; --email email@solarchemist.se -d git.solarchemist.se&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With that out of the way, it’s time to enable the Apache site configuration:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo a2ensite git.solarchemist.se.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When everything else is setup, you can let the Apache config take effect by issuing &lt;code&gt;sudo systemctl reload apache2.service&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;running-gitea-as-a-systemd-job&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Running Gitea as a systemd job&lt;/h1&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
After=mysqld.service

[Service]
RestartSec=2s
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is nothing special here, this systemd configuration is directly from the Gitea docs. I would just like to say a few words regarding the Gitea system user. As you can see, the systemd job specifies that Gitea is running as the user &lt;code&gt;gitea&lt;/code&gt;. This should correspond to the user in &lt;code&gt;RUN_USER&lt;/code&gt; in the &lt;code&gt;/etc/gitea/app.ini&lt;/code&gt; file (unless you are doing something very special, I guess).&lt;/p&gt;
&lt;p&gt;Here I would like to point something out that I learned the hard way. &lt;strong&gt;The Gitea process should run in a dedicated user account&lt;/strong&gt;, as defined in systemd or similar and &lt;code&gt;/etc/gitea/app.ini&lt;/code&gt;. Otherwise Git over SSH (i.e., pushing/pulling/cloning of your Gitea repos) will be a complete mess, or most likely, not work at all. This was perhaps not obvious from reading the docs, but is pointed out &lt;a href=&#34;https://discourse.gitea.io/t/solved-using-regular-git-ssh-not-working/286/8&#34;&gt;clearly enough in the Gitea forums&lt;/a&gt;.
Gitea also expects to handle the &lt;code&gt;/home/gitea/.ssh/authorized_keys&lt;/code&gt; file by itself, so don’t even bother trying to setup SSH keys for this user yourself. If you did, follow the &lt;a href=&#34;http://bryangilbert.com/post/devops/how-to-setup-gitea-ubuntu/#enabling-git-over-ssh&#34;&gt;instructions here to reset this file&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;gitea-paths-on-nfs-share-a-bit-of-a-challenge&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Gitea paths on NFS share: a bit of a challenge&lt;/h1&gt;
&lt;p&gt;This section is particular to my setup. I would like to point the Gitea repository root path to my RAID6 array on my NAS, mainly for reasons of redundancy (this way I don’t have to worry if the HDD suddenly dies, and also, I like centralising important files, makes backups a little easier to plan).&lt;/p&gt;
&lt;p&gt;The RAID array has always been shared over the LAN as an NFS share. Mounting it on the Gitea server is thus very easy, just add the following line to your &lt;code&gt;/etc/fstab&lt;/code&gt; file:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;192.168.1.111:/media/share   /media/share   nfs   rw,hard,intr   0   0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To help keep things straight I will from now on refer to the Gitea-running machine as the NFS client and the NAS as the NFS server.&lt;/p&gt;
&lt;p&gt;The challenging part concerns Linux user permissions. We have already established that Gitea &lt;em&gt;needs&lt;/em&gt; to run as its own user. This presented an interesting problem: the Gitea user on the NFS client needs write permissions on the Gitea repository path on the NFS server. How do we achieve that?&lt;/p&gt;
&lt;p&gt;As usual when it comes to all things Linux, we have a few alternatives. In my estimation, they are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://serverfault.com/a/632315&#34;&gt;NFS idmapping&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-14-04&#34;&gt;using the &lt;code&gt;nobody&lt;/code&gt;/&lt;code&gt;nogroup&lt;/code&gt; on the NFS server&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;or setting up the &lt;a href=&#34;https://serverfault.com/a/241272&#34;&gt;same username (with identical uid/gid)&lt;/a&gt; on both the NFS client and the NFS server.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the end, I created the same user with identical uid/gid on both machines, and then simply set that user on the NFS server as the user and group owner of the Gitea repository root tree. It went like this:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;# on the NFS server, created the user &amp;#39;gitea&amp;#39;
$ sudo adduser \
     --system \
     --shell /bin/bash \
     --gecos &amp;#39;Gitea user&amp;#39; \
     --group \
     --disabled-password \
     --no-create-home \
     gitea
# check the uid/gid
$ id gitea
uid=126(gitea) gid=122(gitea) groups=122(gitea)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now all we have to do is create a user &lt;code&gt;gitea&lt;/code&gt; with the same uid/gid on the NFS client (the NFS server has more existing user accounts, so creating the user there first minimised the risk of the uid/gid clashing with an existing one on the NFS client).&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;# on the NFS client, created the user &amp;#39;gitea&amp;#39;
$ sudo adduser \
     --system \
     --shell /bin/bash \
     --gecos &amp;#39;Gitea user&amp;#39; \
     --group \
     --disabled-password \
     --home /home/gitea \
     gitea
# check the uid/gid
$ id gitea
uid=113(gitea) gid=114(gitea) groups=114(gitea)
# change user id
$ sudo usermod -u 126 gitea
# change group id
sudo groupmod -g 122 gitea&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And finally, we need to fix the uid/gid of all files owned by &lt;code&gt;gitea&lt;/code&gt;. If you know where all such files are (and in this case we do, since they should only be inside &lt;code&gt;/home/gitea&lt;/code&gt; at this point) this can be achieved by simply reassigning ownership (&lt;code&gt;chown -R gitea:gitea /home/gitea&lt;/code&gt;). Otherwise, you could use something like &lt;code&gt;find / -uid 113 ! -type l -exec chown gitea:gitea {} \;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Issuing &lt;code&gt;id gitea&lt;/code&gt; on the NFS client should now display the same uid/gid as on the NFS server.&lt;/p&gt;
&lt;p&gt;Setting up the user on both machines could be considered a violation of DRY (Don’t Repeat Yourself, although I’m not sure if that applies to systems administration), but it’s also low-maintenance and (at least for me) required the least amount of time to accomplish. I did actually try the &lt;code&gt;nobody&lt;/code&gt;/&lt;code&gt;nogroup&lt;/code&gt; approach, but that did not give Gitea the required permissions on the NFS path, so I moved on. And this works.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;sources&#34; class=&#34;section level1&#34;&gt;
&lt;h1&gt;Sources&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.gitea.io/en-us/&#34;&gt;Gitea Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://bryangilbert.com/post/devops/how-to-setup-gitea-ubuntu/&#34;&gt;“How to setup Gitea on an Ubuntu Server” by Ryan Gilbert&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://charlesreid1.github.io/setting-up-a-self-hosted-github-clone-with-gitea.html&#34;&gt;“Setting Up a Self-Hosted Github Clone with Gitea” by Charlesreid1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.rune.pm/tutorial-set-up-gitea-with-nginx/&#34;&gt;“Set up Gitea with Nginx” by Rune Olsen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://chefkochblog.wordpress.com/2018/06/05/how-to-start-your-own-git-server-in-less-than-30-minutes/&#34;&gt;“How To Start your own Git Server in less than 30 Minutes” by CHEF-KOCH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gist.github.com/mirhec/1c8af440aa4917d6ccd61ea628e5510c&#34;&gt;“Setup Gitea on Raspberry Pi”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jeremyverda.net/installing-gitea-on-debian/&#34;&gt;“Installing Gitea on Debian”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.reddit.com/r/programming/comments/5kdbvq/gitea_a_painless_selfhosted_git_service/&#34;&gt;“Gitea fork thread on Reddit”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://keybase.io/blog/encrypted-git-for-everyone&#34;&gt;“Keybase launches encrypted git”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.unl.edu/help/install/database_mysql.md&#34;&gt;MySQL database setup for GitLab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://discourse.gitea.io/t/solved-using-regular-git-ssh-not-working/286/8&#34;&gt;Gitea user forum: Using regular Git SSH not working&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://discourse.gitea.io/t/wrong-ssh-url-path/183/3&#34;&gt;Gitea user forum: Wrong SSH URL path&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes footnotes-end-of-document&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;There is actually an alternative to self-hosting: encrypt the contents of your git repo and keep using a hosted service as usual. Hard to do properly on your own, though. But &lt;a href=&#34;https://keybase.io/blog/encrypted-git-for-everyone&#34;&gt;keybase has a neat implementation of that&lt;/a&gt;.&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Converting between common reference electrodes</title>
      <link>//solarchemist.se/2016/11/24/reference-electrodes/</link>
      <pubDate>Thu, 24 Nov 2016 16:00:00 +0000</pubDate>
      
      <guid>//solarchemist.se/2016/11/24/reference-electrodes/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2016/11/24/reference-electrodes/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#reference-electrode-potentials&#34;&gt;Reference electrode potentials&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#standard-hydrogen-electrode&#34;&gt;Standard hydrogen electrode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#calomel-electrode&#34;&gt;Calomel electrode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#silver-silver-chloride-electrode&#34;&gt;Silver-silver chloride electrode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-absolute-potential-scale&#34;&gt;The absolute potential scale&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#notes&#34;&gt;Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#convert-to-or-from-any-electrode-scale&#34;&gt;Convert to or from any* electrode scale&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#plotting-the-dataset&#34;&gt;Plotting the dataset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#a-very-simple-interactive-demo&#34;&gt;A very simple interactive demo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#bibliography&#34;&gt;Bibliography&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sessioninfo&#34;&gt;SessionInfo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#references&#34;&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;p&gt;A quickly put-together post on the relationships between common electrochemical reference electrode potentials and the vacuum potential, with a proposed algorithm for converting between them.&lt;/p&gt;
&lt;div id=&#34;reference-electrode-potentials&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Reference electrode potentials&lt;/h2&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:Roberge-potentials&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/Roberge2008-reference-electrode-potentials.png&#34; alt=&#34;Equilibrium potentials at \(\SI{25}{\degreeCelsius}\) for some commonly used reference electrodes. Reproduced from Roberge (2008).&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: Equilibrium potentials at &lt;span class=&#34;math inline&#34;&gt;\(\SI{25}{\degreeCelsius}\)&lt;/span&gt; for some commonly used reference electrodes. Reproduced from &lt;span class=&#34;citation&#34;&gt;Roberge (&lt;a href=&#34;#ref-Roberge2008&#34; role=&#34;doc-biblioref&#34;&gt;2008&lt;/a&gt;)&lt;/span&gt;.
&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:Roberge-refvsSHE&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/electrochemical-reference-electrodes-vs-SHE.jpg&#34; alt=&#34;Graphical comparison of some common reference electrode potential scales. Of course, the scales are going “the wrong way” (we like negative to be up). (Roberge 2008, 67)&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 2: Graphical comparison of some common reference electrode potential scales. Of course, the scales are going “the wrong way” (we like negative to be up). &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-Roberge2008&#34; role=&#34;doc-biblioref&#34;&gt;Roberge 2008, 67&lt;/a&gt;)&lt;/span&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:Sawyer-tabular&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/Sawyer-1995-reference-electrodes-table.png&#34; alt=&#34;Standard potentials of silver-silver chloride and calomel electrodes at various electrolyte concentrations and temperatures. Reproduced from (Sawyer, Sobkowiak, and Roberts 1995, 192).&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 3: Standard potentials of silver-silver chloride and calomel electrodes at various electrolyte concentrations and temperatures. Reproduced from &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-Sawyer1995&#34; role=&#34;doc-biblioref&#34;&gt;Sawyer, Sobkowiak, and Roberts 1995, 192&lt;/a&gt;)&lt;/span&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;standard-hydrogen-electrode&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Standard hydrogen electrode&lt;/h3&gt;
&lt;p&gt;The SHE contribution to the cell potential is by convention zero at all temperatures. &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-Inzelt2013&#34; role=&#34;doc-biblioref&#34;&gt;Inzelt, Lewenstam, and Scholz 2013, 77&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The expression “normal hydrogen electrode” (NHE) is &lt;em&gt;not&lt;/em&gt; a synonym for SHE, in fact, the NHE is the historical standard (due to Nernst in 1889) defined as a metal in contact with a solution saturated with hydrogen gas at 1 atm partial pressure and containing &lt;span class=&#34;math inline&#34;&gt;\(\SI{1}{\mol\per\cubic\dm}\)&lt;/span&gt; sulfuric acid. &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-Inzelt2013&#34; role=&#34;doc-biblioref&#34;&gt;Inzelt, Lewenstam, and Scholz 2013, 77&lt;/a&gt;)&lt;/span&gt;
The NHE is thus experimentally realisable.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In contrast, the SHE is an ideal device and cannot be rigorously realised experimentally. For practical realisation the standard potential of the hydrogen electrode is not measured at standard conditions but recalculated to &lt;span class=&#34;math inline&#34;&gt;\(\ce{H+}\)&lt;/span&gt; at unit activity and &lt;span class=&#34;math inline&#34;&gt;\(\SI{10E5}{\pascal}\)&lt;/span&gt;. These electrodes are often called reversible hydrogen electrodes (RHE).&lt;/p&gt;
&lt;p&gt;— &lt;span class=&#34;citation&#34;&gt;Inzelt, Lewenstam, and Scholz (&lt;a href=&#34;#ref-Inzelt2013&#34; role=&#34;doc-biblioref&#34;&gt;2013&lt;/a&gt;)&lt;/span&gt;, p. 78&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div id=&#34;calomel-electrode&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Calomel electrode&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Decimolar (decinormal) calomel electrode, &lt;span class=&#34;math inline&#34;&gt;\(c_\ce{KCl}=\SI{0.1}{\mol\per\litre}\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(E = \SI{0.3337}{\volt}\)&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;Molar (normal) calomel electrode, &lt;span class=&#34;math inline&#34;&gt;\(c_\ce{KCl}=\SI{1}{\mol\per\litre}\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(E = \SI{0.2801}{\volt}\)&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;Saturated calomel electrode (SCE), &lt;span class=&#34;math inline&#34;&gt;\(c_\ce{KCl}\approx\SI{4.2}{\mol\per\litre}\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(E = \SI{0.2412}{\volt}\)&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All potential values above at &lt;span class=&#34;math inline&#34;&gt;\(\SI{25}{\degreeCelsius}\)&lt;/span&gt; and taken from &lt;span class=&#34;citation&#34;&gt;Bagotsky (&lt;a href=&#34;#ref-Bagotsky2006&#34; role=&#34;doc-biblioref&#34;&gt;2006&lt;/a&gt;)&lt;/span&gt;, p. 194.
Because of solubility changes, SCE has a large temperature coefficient (&lt;span class=&#34;math inline&#34;&gt;\(\SI{0.65}{\mV\per\kelvin}\)&lt;/span&gt;).
The potentials of calomel electrodes can be reproduced to &lt;span class=&#34;math inline&#34;&gt;\(\SI{+-0.1}{\mV}\)&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Calomel electrodes are unstable much above &lt;span class=&#34;math inline&#34;&gt;\(\SI{50}{\degreeCelsius}\)&lt;/span&gt; owing to the disproportionation reaction &lt;span class=&#34;math inline&#34;&gt;\(\ce{Hg2Cl2 -&amp;gt; Hg(liq) + HgCl2}\)&lt;/span&gt;. (eDAQ wiki)&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;citation&#34;&gt;Marcus (&lt;a href=&#34;#ref-Marcus1980&#34; role=&#34;doc-biblioref&#34;&gt;1980&lt;/a&gt;)&lt;/span&gt; reports &lt;span class=&#34;math inline&#34;&gt;\(E^\circ_{\ce{Hg/Hg2Cl2}} = \SI{0.26818+-0.00002}{\volt}\)&lt;/span&gt; at &lt;span class=&#34;math inline&#34;&gt;\(\SI{298.15}{\kelvin}\)&lt;/span&gt; (&lt;span class=&#34;math inline&#34;&gt;\(a_{\ce{Cl^-}} = 1\)&lt;/span&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;silver-silver-chloride-electrode&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Silver-silver chloride electrode&lt;/h3&gt;
&lt;p&gt;&lt;span class=&#34;math inline&#34;&gt;\(E^0 = \SI{0.2224}{\volt}\)&lt;/span&gt; at &lt;span class=&#34;math inline&#34;&gt;\(\SI{25}{\degreeCelsius}\)&lt;/span&gt; (&lt;span class=&#34;math inline&#34;&gt;\(a_{\ce{Cl-}}=1\)&lt;/span&gt;). &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-Bagotsky2006&#34; role=&#34;doc-biblioref&#34;&gt;Bagotsky 2006, 195&lt;/a&gt;; &lt;a href=&#34;#ref-Inzelt2013&#34; role=&#34;doc-biblioref&#34;&gt;Inzelt, Lewenstam, and Scholz 2013, 87&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The standard potential of the Ag/AgCl electrode has been reported at temperatures exceeding &lt;span class=&#34;math inline&#34;&gt;\(\SI{100}{\degreeCelsius}\)&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;the-absolute-potential-scale&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The absolute potential scale&lt;/h2&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:Trasatti-scale&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/Trasatti-electrochemical-physical-scale.png&#34; alt=&#34;Conversion of relative reference electrode potentials into electronic energies for aqueous systems. Reproduced from Trasatti (1986).&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 4: Conversion of relative reference electrode potentials into electronic energies for aqueous systems. Reproduced from &lt;span class=&#34;citation&#34;&gt;Trasatti (&lt;a href=&#34;#ref-Trasatti1986&#34; role=&#34;doc-biblioref&#34;&gt;1986&lt;/a&gt;)&lt;/span&gt;.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span class=&#34;citation&#34;&gt;Trasatti (&lt;a href=&#34;#ref-Trasatti1986&#34; role=&#34;doc-biblioref&#34;&gt;1986&lt;/a&gt;)&lt;/span&gt; shows a calculation of the absolute potential of SHE in water and recommends the following conversion:&lt;/p&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
E^\circ(\ce{H+}/\ce{H2})^{\ce{H2O}}\text{(abs)} = \SI{4.44+-0.02}{\volt}\quad\mathrm{at}~\SI{298.15}{\kelvin}
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is to be noted that the uncertainty in the knowledge of &lt;span class=&#34;math inline&#34;&gt;\(E^\circ(\ce{H+}/\ce{H2})\text{(abs)}\)&lt;/span&gt; (&lt;span class=&#34;math inline&#34;&gt;\(\SI{+-20}{\mV}\)&lt;/span&gt;) by far exceeds the accuracy of most measurements of electrode potentials. Therefore, any convenience in the use of the absolute potential scale is confined to the specific cases when calculations of electronic energy levels are needed.&lt;/p&gt;
&lt;p&gt;— &lt;span class=&#34;citation&#34;&gt;Trasatti (&lt;a href=&#34;#ref-Trasatti1986&#34; role=&#34;doc-biblioref&#34;&gt;1986&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On this topic there is also an interesting discussion in &lt;span class=&#34;citation&#34;&gt;Morrison (&lt;a href=&#34;#ref-Morrison1980&#34; role=&#34;doc-biblioref&#34;&gt;1980&lt;/a&gt;)&lt;/span&gt;, p. 31.&lt;/p&gt;
&lt;p&gt;I did a quick scan of all papers that cite &lt;span class=&#34;citation&#34;&gt;Trasatti (&lt;a href=&#34;#ref-Trasatti1986&#34; role=&#34;doc-biblioref&#34;&gt;1986&lt;/a&gt;)&lt;/span&gt;, and found no more recent recommendation on the relation between SHE and AVS. For now we will stick with Trasatti’s value.&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;precise&lt;/em&gt; relation between the potential of a free electron in vacuum (absolute vacuum scale) and the conventional standard hydrogen electrode scale for aqueous solutions is still debated. &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-Inzelt2013&#34; role=&#34;doc-biblioref&#34;&gt;Inzelt, Lewenstam, and Scholz 2013&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;notes&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Notes&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] mercury-containing REs (calomel or mercury–mercuric oxide) are inappropriate for measurements in conjunction with platinum electrodes, since the mercury ions readily poison platinum surfaces.&lt;/p&gt;
&lt;p&gt;— &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-Bagotsky2006&#34; role=&#34;doc-biblioref&#34;&gt;Bagotsky 2006, 195&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If this is a rule, we break it quite often.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;convert-to-or-from-any-electrode-scale&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Convert to or from any* electrode scale&lt;/h2&gt;
&lt;p&gt;
&lt;div style=&#34;border: 2px solid #f03838; padding-left: 10px; padding-top: 4px; background-color: #EBEBEB; color: black;&#34;&gt;
&lt;p&gt;Note: this section was updated on Oct 18th, 2019 because I moved the reference electrode functions into their own &lt;a href=&#34;https://github.com/solarchemist/refelectrodes&#34;&gt;R package &lt;code&gt;refelectrodes&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Having the the conversion algorithm in its own package like this should make the codebase easier to maintain and improve going forward. If you have any suggestions or comments regarding the data or the code of this package please don’t hesitate to open an &lt;a href=&#34;https://github.com/solarchemist/refelectrodes/issues&#34;&gt;issue&lt;/a&gt; or &lt;a href=&#34;https://github.com/solarchemist/refelectrodes/pulls&#34;&gt;pull request&lt;/a&gt; on Github. I would be very grateful to hear any feedback.&lt;/p&gt;
&lt;p&gt;* &lt;em&gt;Any&lt;/em&gt; here denotes any one of the reference electrode scales that the &lt;code&gt;refelectrodes&lt;/code&gt; package currently supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AgCl/Ag in saturated NaCl(aq) at RT, in saturated KCl(aq) from &lt;span class=&#34;math inline&#34;&gt;\(\SIrange{10}{40}{\degreeCelsius}\)&lt;/span&gt;, and in &lt;span class=&#34;math inline&#34;&gt;\(\SI{3.5}{\mol\per\litre}\)&lt;/span&gt; KCl(aq) from &lt;span class=&#34;math inline&#34;&gt;\(\SIrange{10}{40}{\celsius}\)&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;Hg&lt;sub&gt;2&lt;/sub&gt;Cl&lt;sub&gt;2&lt;/sub&gt;/Hg in saturated KCl(aq) from &lt;span class=&#34;math inline&#34;&gt;\(\SIrange{10}{40}{\celsius}\)&lt;/span&gt;, in &lt;span class=&#34;math inline&#34;&gt;\(\SI{3.5}{\mol\per\litre}\)&lt;/span&gt; KCl(aq) from &lt;span class=&#34;math inline&#34;&gt;\(\SIrange{10}{40}{\celsius}\)&lt;/span&gt;, in &lt;span class=&#34;math inline&#34;&gt;\(\SI{1.0}{\mol\per\litre}\)&lt;/span&gt; KCl(aq) from &lt;span class=&#34;math inline&#34;&gt;\(\SIrange{10}{40}{\celsius}\)&lt;/span&gt;, and in &lt;span class=&#34;math inline&#34;&gt;\(\SI{0.1}{\mol\per\litre}\)&lt;/span&gt; KCl(aq) from &lt;span class=&#34;math inline&#34;&gt;\(\SIrange{10}{40}{\celsius}\)&lt;/span&gt;,&lt;/li&gt;
&lt;li&gt;SHE (it is zero at all temperatures and concentrations by definition),&lt;/li&gt;
&lt;li&gt;Li at RT,&lt;/li&gt;
&lt;li&gt;Na at RT,&lt;/li&gt;
&lt;li&gt;Mg at RT, and&lt;/li&gt;
&lt;li&gt;the absolute vacuum scale at RT.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This data is defined in the &lt;code&gt;potentials.as.SHE()&lt;/code&gt; function which constitutes the core of &lt;a href=&#34;https://github.com/solarchemist/refelectrodes/blob/master/R/SHE.R&#34;&gt;the &lt;code&gt;refelectrodes&lt;/code&gt; package&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As for the conversion functions, those are the aptly named &lt;code&gt;as.SHE()&lt;/code&gt; which converts from any reference electrode scale &lt;em&gt;to&lt;/em&gt; SHE, and &lt;code&gt;from.SHE()&lt;/code&gt; which converts &lt;em&gt;from&lt;/em&gt; SHE to any of the other scales.&lt;/p&gt;
&lt;p&gt;The package also exports &lt;code&gt;RefCanonicalName()&lt;/code&gt; which is a convenience function that allows the user to specify the name of each reference electrode scale using any of its common names. And that is effectively the extent of the package. &lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let’s take a quick walk through loading this package and testing its functions. You will want to start by installing and loading the package:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;remotes::install_github(&amp;quot;solarchemist/refelectrodes&amp;quot;)
library(refelectrodes)
# I suggest you load these packages if you want to replicate the plot below
library(knitr)
library(ggplot2)
library(ggrepel)
library(dplyr)
library(magrittr)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The core function defines the dataset and when run will happily return this data as a tidy dataframe (this chunk shows just an excerpt of the tibble):&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;potentials.as.SHE() %&amp;gt;%
   group_by(electrode, electrolyte) %&amp;gt;%
   arrange(SHE) %&amp;gt;%
   # return first and last row (if any) within each group
   filter(row_number() %in% c(1, n())) %&amp;gt;%
   arrange(electrode, SHE)
## # A tibble: 11 × 9
## # Groups:   electrode, electrolyte [8]
##    electrode electrolyte conc.num conc.string   temp    SHE sid   reference     dEdT
##    &amp;lt;chr&amp;gt;     &amp;lt;chr&amp;gt;          &amp;lt;dbl&amp;gt; &amp;lt;chr&amp;gt;        &amp;lt;dbl&amp;gt;  &amp;lt;dbl&amp;gt; &amp;lt;chr&amp;gt; &amp;lt;chr&amp;gt;        &amp;lt;dbl&amp;gt;
##  1 AgCl/Ag   &amp;quot;KCl(aq)&amp;quot;        4.2 &amp;quot;saturated&amp;quot;    40   0.184 2     Sawyer19… -1.00e-3
##  2 AgCl/Ag   &amp;quot;KCl(aq)&amp;quot;        3.5 &amp;quot;3.5M at 25…   10   0.215 1     Sawyer19… -7.36e-4
##  3 AgCl/Ag   &amp;quot;NaCl(aq)&amp;quot;       5.9 &amp;quot;saturated&amp;quot;    25   0.263 9     CRC 97th… NA      
##  4 AVS       &amp;quot;&amp;quot;              NA   &amp;quot;&amp;quot;             25  -4.44  7     Trasatti… NA      
##  5 Hg2Cl2/Hg &amp;quot;KCl(aq)&amp;quot;        4.2 &amp;quot;saturated&amp;quot;    40   0.234 6     Sawyer19… -6.64e-4
##  6 Hg2Cl2/Hg &amp;quot;KCl(aq)&amp;quot;        0.1 &amp;quot;0.1M at 25…   25   0.336 3     Sawyer19… -7.86e-5
##  7 Li        &amp;quot;&amp;quot;               1   &amp;quot;1.0M at 25…   25  -3.04  10    CRC 97th… NA      
##  8 Mg        &amp;quot;&amp;quot;               1   &amp;quot;1.0M at 25…   25  -2.37  12    CRC 97th… NA      
##  9 Na        &amp;quot;&amp;quot;               1   &amp;quot;1.0M at 25…   25  -2.71  11    CRC 97th… NA      
## 10 SHE       &amp;quot;&amp;quot;              NA   &amp;quot;&amp;quot;           -273.  0     8     Inzelt20…  0      
## 11 SHE       &amp;quot;&amp;quot;              NA   &amp;quot;&amp;quot;            580   0     8     Inzelt20…  0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The dataframe is tidy, so more data can easily be added to this dataset by adding more rows.&lt;/p&gt;
&lt;p&gt;Now, some of the the columns of this dataframe warrant some explanation.
&lt;code&gt;potentials$electrode&lt;/code&gt; is the name of the reference electrode, as defined by the function &lt;code&gt;RefCanonicalName()&lt;/code&gt; (see below).
&lt;code&gt;potentials$conc.string&lt;/code&gt; was added so that the user does not need to remember the saturation concentration for various salts in solution. And for those unsaturated electrolytes it was a good place to put information on the temperature where the concentration was defined. Saturation does not depend on temperature, but the concentration of an unsaturated solution (expressed as amount/volume) does depend on temperature due to liquid expansion.
Temperature and concentration values need no further explanation.
&lt;code&gt;potentials$setid&lt;/code&gt; is mainly for housekeeping - a simple way to keep track of the datasets in the dataframe (allows us to avoid having to resort to advanced matching against several parameters to later identify a particular set).&lt;/p&gt;
&lt;p&gt;Note that no conversion happens in the &lt;code&gt;potentials.as.SHE()&lt;/code&gt; function above. It just returns data.&lt;/p&gt;
&lt;p&gt;Conversion is handled by the two functions &lt;code&gt;as.SHE()&lt;/code&gt; and &lt;code&gt;from.SHE()&lt;/code&gt;.
The take the following arguments: the potential value (in volt), the scale (for the scale you want to convert &lt;em&gt;from&lt;/em&gt; in the case of &lt;code&gt;as.SHE()&lt;/code&gt;, and the one you want to convert &lt;em&gt;to&lt;/em&gt; in the case of &lt;code&gt;from.SHE()&lt;/code&gt;), and optional arguments for concentration and temperature (set to saturated and RT by default). The last argument expects the dataframe generated by &lt;code&gt;potentials.as.SHE&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This way, all three of these functions are reasonably modular, and each one does a fairly well-defined job.&lt;/p&gt;
&lt;p&gt;Some special considerations which are handled by these functions are perhaps worth mentioning here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;concentration may be a number or a character string, which means we need to compare it to the appropriate column in the dataset,&lt;/li&gt;
&lt;li&gt;the temperature requested by the user may coincide with a datapoint in the dataset (in that case we just return that potential), otherwise we interpolate (by linear regression) based on the existing data,&lt;/li&gt;
&lt;li&gt;and for the final calculation of potential in SHE scale, we need to handle electronic (vacuum) and electrochemical scales separately because they go in opposite directions (this is handled by the &lt;code&gt;ifelse(df$vacuum[p], ...)&lt;/code&gt; call.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The current implementation requires concentration to match an existing value. A functionality that could (perhaps even should) be added is the ability to interpolate concentrations in the same way as temperature (unless the change in potential with changing concentration deviates strongly from linearity).&lt;/p&gt;
&lt;div id=&#34;plotting-the-dataset&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Plotting the dataset&lt;/h3&gt;

&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot(potentials.as.SHE() %&amp;gt;%
          filter(electrolyte == &amp;quot;KCl(aq)&amp;quot;)) +
   facet_wrap(~ electrode, ncol = 2) +
   geom_line(aes(x = temp, y = SHE, colour = conc.string)) +
   geom_point(aes(x = temp, y = SHE, colour =  conc.string)) +
   geom_text_repel(data = subset(potentials.as.SHE(), electrode != &amp;quot;AVS&amp;quot; &amp;amp; temp == 30),
                   aes(y = SHE, x = temp, label = conc.string, colour = conc.string),
                   point.padding = unit(0.25, &amp;#39;lines&amp;#39;),
                   # hide the line connecting datapoint and label
                   segment.color = &amp;quot;transparent&amp;quot;) +
   scale_y_reverse() +
   labs(x = expression(&amp;quot;T/&amp;quot;*degree*C), # &amp;quot;T/C&amp;quot;,
        y = &amp;quot;E/V vs SHE&amp;quot;) +
   theme(legend.position = &amp;quot;none&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:161124-reference-electrodes-KCl&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2016/11/24/reference-electrodes/index_files/figure-html/161124-reference-electrodes-KCl-1.svg&#34; alt=&#34;Electrode potentials vs SHE for the two reference electrodes in the dataset using \(\ce{KCl(aq)}\) electrolyte (each panel shows one reference electrode, each line shows a different electrolyte concentration). Just to demonstrate the extent of the dataset in parameter space.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 5: Electrode potentials vs SHE for the two reference electrodes in the dataset using &lt;span class=&#34;math inline&#34;&gt;\(\ce{KCl(aq)}\)&lt;/span&gt; electrolyte (each panel shows one reference electrode, each line shows a different electrolyte concentration). Just to demonstrate the extent of the dataset in parameter space.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;a-very-simple-interactive-demo&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;A very simple interactive demo&lt;/h3&gt;
&lt;iframe src=&#34;https://shiny.solarchemist.se/ref-pot-SHE/&#34; name=&#34;shinydemo&#34; width=&#34;100%&#34; height=&#34;645px&#34; scrolling=&#34;auto&#34; frameborder=&#34;1&#34;&gt;
&lt;/iframe&gt;
&lt;p&gt;&lt;a href=&#34;https://shiny.solarchemist.se/ref-pot-SHE/&#34;&gt;Open the Shiny demo on its own page&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;bibliography&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Bibliography&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.edaq.com/wiki/Reference_Electrode_Potentials&#34;&gt;Reference Electrode Potentials - eDAQ wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://corrosion-doctors.org/Corrosion-Thermodynamics/Reference-Half-Cells-Conversion.htm&#34;&gt;Conversion between reference electrodes - Corrosion Doctors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;sessioninfo&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;SessionInfo&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] refelectrodes_0.0.0.9000 common_0.0.2             magrittr_2.0.2          
## [4] dplyr_1.0.8              ggrepel_0.9.1            ggplot2_3.3.5           
## [7] knitr_1.37              
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.8       bslib_0.3.1      compiler_4.0.5   pillar_1.7.0    
##  [5] jquerylib_0.1.4  tools_4.0.5      digest_0.6.29    jsonlite_1.7.3  
##  [9] evaluate_0.14    lifecycle_1.0.1  tibble_3.1.6     gtable_0.3.0    
## [13] pkgconfig_2.0.3  rlang_1.0.1      DBI_1.1.2        cli_3.2.0       
## [17] yaml_2.2.2       blogdown_1.7     xfun_0.29        fastmap_1.1.0   
## [21] withr_2.4.3      stringr_1.4.0    generics_0.1.2   sass_0.4.0      
## [25] vctrs_0.3.8      tidyselect_1.1.2 grid_4.0.5       glue_1.6.1      
## [29] R6_2.5.1         fansi_1.0.2      rmarkdown_2.11   bookdown_0.24   
## [33] purrr_0.3.4      scales_1.1.1     htmltools_0.5.2  ellipsis_0.3.2  
## [37] assertthat_0.2.1 colorspace_2.0-2 utf8_1.2.2       stringi_1.7.6   
## [41] munsell_0.5.0    crayon_1.5.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body hanging-indent&#34;&gt;
&lt;div id=&#34;ref-Bagotsky2006&#34; class=&#34;csl-entry&#34;&gt;
Bagotsky, V. S. 2006. &lt;em&gt;Fundamentals of Electrochemistry&lt;/em&gt;. 2nd ed. &lt;span&gt;Wiley-Interscience&lt;/span&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-Inzelt2013&#34; class=&#34;csl-entry&#34;&gt;
Inzelt, György, Andrzej Lewenstam, and Fritz Scholz, eds. 2013. &lt;em&gt;Handbook of Reference Electrodes&lt;/em&gt;. &lt;span&gt;Berlin, Heidelberg&lt;/span&gt;: &lt;span&gt;Springer Berlin Heidelberg&lt;/span&gt;. &lt;a href=&#34;https://doi.org/10.1007/978-3-642-36188-3&#34;&gt;https://doi.org/10.1007/978-3-642-36188-3&lt;/a&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-Marcus1980&#34; class=&#34;csl-entry&#34;&gt;
Marcus, Y. 1980. &lt;span&gt;“Compilation and &lt;span&gt;Evaluation&lt;/span&gt; of &lt;span&gt;Solubility Data&lt;/span&gt; in the &lt;span&gt;Mercury&lt;/span&gt; (&lt;span&gt;I&lt;/span&gt;) &lt;span&gt;Chloride-Water System&lt;/span&gt;.”&lt;/span&gt; &lt;em&gt;Journal of Physical and Chemical Reference Data&lt;/em&gt; 9 (4): 1307. &lt;a href=&#34;https://doi.org/10.1063/1.555633&#34;&gt;https://doi.org/10.1063/1.555633&lt;/a&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-Morrison1980&#34; class=&#34;csl-entry&#34;&gt;
Morrison, S. Roy. 1980. &lt;em&gt;Electrochemistry at Semiconductor and Oxidized Metal Electrodes&lt;/em&gt;. 1st ed. &lt;span&gt;Plenum press&lt;/span&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-Roberge2008&#34; class=&#34;csl-entry&#34;&gt;
Roberge, Pierre R. 2008. &lt;em&gt;Corrosion Engineering Principles and Practice&lt;/em&gt;. &lt;em&gt;Corrosion Engineering&lt;/em&gt;. &lt;a href=&#34;https://doi.org/10.1036/0071482431&#34;&gt;https://doi.org/10.1036/0071482431&lt;/a&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-Sawyer1995&#34; class=&#34;csl-entry&#34;&gt;
Sawyer, Donald T., Andrzej Sobkowiak, and Julian L. Roberts. 1995. &lt;em&gt;Electrochemistry for Chemists&lt;/em&gt;. Second. &lt;span&gt;John Wiley &amp;amp; Sons, Inc.&lt;/span&gt;
&lt;/div&gt;
&lt;div id=&#34;ref-Trasatti1986&#34; class=&#34;csl-entry&#34;&gt;
Trasatti, S. 1986. &lt;span&gt;“The Absolute Electrode Potential: An Explanatory Note (&lt;span&gt;Recommendations&lt;/span&gt; 1986).”&lt;/span&gt; &lt;em&gt;Pure and Applied Chemistry&lt;/em&gt; 58 (7): 955–66. &lt;a href=&#34;https://doi.org/10.1351/pac198658070955&#34;&gt;https://doi.org/10.1351/pac198658070955&lt;/a&gt;.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes footnotes-end-of-document&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;The package also contains a slew of &lt;a href=&#34;https://github.com/solarchemist/refelectrodes/blob/master/R/deprecated.R&#34;&gt;deprecated functions&lt;/a&gt; that are clearly marked as such and may be removed in a future update.&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Lamps and filters: spectral baselines and total power</title>
      <link>//solarchemist.se/2016/04/23/lamps-filters/</link>
      <pubDate>Sat, 23 Apr 2016 20:00:00 +0000</pubDate>
      
      <guid>//solarchemist.se/2016/04/23/lamps-filters/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2016/04/23/lamps-filters/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#naming-copacabana-and-miramar&#34;&gt;Naming: Copacabana and Miramar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#methods&#34;&gt;Methods&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#setup-total-power-using-pyranometer&#34;&gt;Setup: total power using pyranometer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setup-spectral-profile-of-am-filters&#34;&gt;Setup: spectral profile of AM-filters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setup-spectral-profile-of-nd-filters&#34;&gt;Setup: spectral profile of ND-filters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#setup-spectral-distribution-of-lamps&#34;&gt;Setup: spectral distribution of lamps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#results&#34;&gt;Results&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#total-power-of-lamps&#34;&gt;Total power of lamps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#spectral-response-of-air-mass-filters&#34;&gt;Spectral response of air-mass filters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#spectral-response-of-neutral-density-filters&#34;&gt;Spectral response of neutral density filters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#spectral-distribution-of-lamps&#34;&gt;Spectral distribution of lamps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#export-experimental-data-to-assets-folder&#34;&gt;Export experimental data to assets folder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#session-info&#34;&gt;Session info&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div id=&#34;naming-copacabana-and-miramar&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Naming: Copacabana and Miramar&lt;/h2&gt;
&lt;p&gt;To quickly identify each setup, we have named them. From now on, the arc lamps shall be known as “Copacabana” and “Miramar”.&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lamps&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/copacabana-miramar.png&#34; alt=&#34;Where the Sun always shines…&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: Where the Sun always shines…
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Short note on history: Copacabana has a quite old bulb, and its intensity has clearly decreased over time. &lt;strong&gt;I re-adjusted the bulb and reflector of Copacabana today&lt;/strong&gt;. Copacabana is equipped with a filter holder (attached to the lens tube) which holds a square AM1.5 filter.&lt;/p&gt;
&lt;p&gt;Miramar has a new bulb, installed just a few days ago. Miramar does not come equipped with any attached filters.&lt;/p&gt;
&lt;p&gt;Both lamps are set to operate at &lt;span class=&#34;math inline&#34;&gt;\(\SI{200}{\watt}\)&lt;/span&gt; (Miramar was previously set to &lt;span class=&#34;math inline&#34;&gt;\(\SI{250}{\watt}\)&lt;/span&gt; but was reset to the lower power limit after exhibiting a light fault error message and failing to ignite at the higher power).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;methods&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Methods&lt;/h2&gt;
&lt;div id=&#34;setup-total-power-using-pyranometer&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Setup: total power using pyranometer&lt;/h3&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:copacabana-pyranometry&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/copacabana-pyranometry.jpg&#34; alt=&#34;I measured the power output of Copacabana at varying distances.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 2: I measured the power output of Copacabana at varying distances.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Copacabana is equipped with a filter holder (on the lens tube) holding a square AM1.5 filter.&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:miramar-pyranometry&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/miramar-pyranometry-AM15-filter.jpg&#34; alt=&#34;I measured the power output of Miramar at varying distances with an AM1.5 filter in the optical path.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 3: I measured the power output of Miramar at varying distances with an AM1.5 filter in the optical path.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I measured the power from the arc lamp at a range of distances using a Thorlabs PM160T power meter.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;sensor.diameter &amp;lt;- 1.0 # cm
sensor.area &amp;lt;- pi * (0.5 * sensor.diameter)^2
area.corr.factor &amp;lt;- 1 / sensor.area&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The sensor area is &lt;span class=&#34;math inline&#34;&gt;\(\SI{0.7854}{\square\cm}\)&lt;/span&gt;, and consequently we need to multiply the values we read out with a factor 1.273 to get power &lt;em&gt;densities&lt;/em&gt; (&lt;span class=&#34;math inline&#34;&gt;\(\si{\milli\watt\per\square\cm}\)&lt;/span&gt;).&lt;/p&gt;
&lt;p&gt;It is also pertinent to mention how distances between lamp and sensor were measured.&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:method-distance&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/method-distance.png&#34; alt=&#34;Sketch relating \(d\) and \(d_\text{corr}\) during measurement of total power&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 4: Sketch relating &lt;span class=&#34;math inline&#34;&gt;\(d\)&lt;/span&gt; and &lt;span class=&#34;math inline&#34;&gt;\(d_\text{corr}\)&lt;/span&gt; during measurement of total power
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span class=&#34;math display&#34;&gt;\[\begin{equation}
d_\text{corr} = d + \frac{165}{2} + \frac{63}{2} = d + 114
\end{equation}\]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;For practical reasons it was easier to measures the distances from one edge of each object to another, but for plotting and calculations I deemed it more correct to use centre-to-centre distance, which I termed &lt;span class=&#34;math inline&#34;&gt;\(d_\text{corr}\)&lt;/span&gt; (for &lt;em&gt;corrected&lt;/em&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;setup-spectral-profile-of-am-filters&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Setup: spectral profile of AM-filters&lt;/h3&gt;
&lt;p&gt;Measured the transmittance and absorbance of air-mass filters using the OceanOptics fibre-optic spectrometer.&lt;/p&gt;
&lt;p&gt;AM filters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AM1.5 filter, square, usually mounted in arc lamp “Copacabana”&lt;/li&gt;
&lt;li&gt;AM1.5 filter, circular, loan from Andreas Mattsson&lt;/li&gt;
&lt;li&gt;AM0 filter, square (with small crack), loan from Andreas Mattsson&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: according to Mattsson, his filters will produce AM1.5 when used in conjunction (both filters in the optical path).&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:filters-spectral-distribution&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/filters-spectral-distribution.jpg&#34; alt=&#34;Measuring the spectral response of the air-mass filters.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 5: Measuring the spectral response of the air-mass filters.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;setup-spectral-profile-of-nd-filters&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Setup: spectral profile of ND-filters&lt;/h3&gt;
&lt;p&gt;Measured the transmittance of neutral density filters using the OceanOptics fibre-optic spectrometer.&lt;/p&gt;
&lt;div class=&#34;photogrid&#34;&gt;
&lt;img src=&#34;assets/ND-T63.jpg&#34; alt=&#34;ND filter T=63%&#34; /&gt;
&lt;img src=&#34;assets/ND-T50.jpg&#34; alt=&#34;ND filter T=50%&#34; /&gt;
&lt;img src=&#34;assets/ND-T40.jpg&#34; alt=&#34;ND filter T=40%&#34; /&gt;
&lt;img src=&#34;assets/ND-T32.jpg&#34; alt=&#34;ND filter T=32%&#34; /&gt;
&lt;img src=&#34;assets/ND-T25.jpg&#34; alt=&#34;ND filter T=25%&#34; /&gt;
&lt;img src=&#34;assets/ND-T10.jpg&#34; alt=&#34;ND filter T=10%&#34; /&gt;
&lt;img src=&#34;assets/ND-T1.jpg&#34; alt=&#34;ND filter T=1%&#34; /&gt;
&lt;img src=&#34;assets/ND-T01.jpg&#34; alt=&#34;ND filter T=0.1%&#34; /&gt;
&lt;img src=&#34;assets/ND-T001.jpg&#34; alt=&#34;ND filter T=0.01%&#34; /&gt;
&lt;p&gt;
Photos of the ND-filter assembly. During each measurement the secondary ring was positioned so that an empty slot faced the optical beam. Combinations of filters were not measured (should be straight-forward to produce numerically if required).
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;setup-spectral-distribution-of-lamps&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Setup: spectral distribution of lamps&lt;/h3&gt;
&lt;p&gt;Characterised the spectra of both xenon arc lamps. The power of both lamps was high enough to saturate the spectrometer’s detector at all practical distances, so I did the spectral measurements with a 1% neutral density filter (that’s the wheel in the photos below) placed in front of the detector.&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:miramar-spectral-distribution&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/miramar-spectral-distribution-AM15-filter.jpg&#34; alt=&#34;Measuring the spectral distribution of Miramar lamp.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 6: Measuring the spectral distribution of Miramar lamp.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The detector was at &lt;span class=&#34;math inline&#34;&gt;\(d=\SI{70}{\cm}\)&lt;/span&gt; (ie, &lt;span class=&#34;math inline&#34;&gt;\(d_\text{corr}=\SI{81.4}{\cm}\)&lt;/span&gt;), although that has little bearing on the results as we only want to compare spectral distributions of the lamps (power is compared via the pyranometer readings).&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:copacabana-spectral-distribution&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;assets/copacabana-spectral-distribution.jpg&#34; alt=&#34;Measuring the spectral distribution of Copacabana lamp.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 7: Measuring the spectral distribution of Copacabana lamp.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The detector was at &lt;span class=&#34;math inline&#34;&gt;\(d=\SI{60}{\cm}\)&lt;/span&gt; (ie, &lt;span class=&#34;math inline&#34;&gt;\(d_\text{corr}=\SI{71.4}{\cm}\)&lt;/span&gt;), although that has little bearing on the results as we only want to compare spectral distributions of the lamps (power is compared via the pyranometer readings).&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;results&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;div id=&#34;total-power-of-lamps&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Total power of lamps&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;power &amp;lt;-
   cbind(lamp = &amp;quot;copacabana&amp;quot;,
         read.csv(file = here::here(&amp;quot;assets/copacabana-distance-vs-power.csv&amp;quot;)))
power &amp;lt;-
   rbind(power,
         cbind(lamp = &amp;quot;miramar&amp;quot;,
               read.csv(file = here::here(&amp;quot;assets/miramar-distance-vs-power.csv&amp;quot;))))
power$corr.distance &amp;lt;- power$distance + 11.4 # cm
power$density &amp;lt;- round(power$power * area.corr.factor)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;this.lamp &amp;lt;- &amp;quot;copacabana&amp;quot;
fit.copacabana &amp;lt;-
   lm(density ~ logb(corr.distance, base = exp(1)),
      data = subset(power, lamp == this.lamp))
x.copacabana &amp;lt;-
   c(seq(1, 41),
     subset(power, lamp = this.lamp)$corr.distance)
power.predicted.copacabana &amp;lt;-
   predict(fit.copacabana,
           newdata =
              data.frame(corr.distance = x.copacabana))
power.calc.copacabana &amp;lt;-
   data.frame(lamp = this.lamp,
              distance = x.copacabana,
              density = power.predicted.copacabana)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;this.lamp &amp;lt;- &amp;quot;miramar&amp;quot;
fit.miramar &amp;lt;-
   lm(density ~ logb(corr.distance, base = exp(1)),
      data = subset(power, lamp == this.lamp))
x.miramar &amp;lt;-
   c(seq(1, 41),
     subset(power, lamp = this.lamp)$corr.distance)
power.predicted.miramar &amp;lt;-
   predict(fit.miramar,
           newdata =
              data.frame(corr.distance = x.miramar))
power.calc.miramar &amp;lt;-
   data.frame(lamp = this.lamp,
              distance = x.miramar,
              density = power.predicted.miramar)&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# join power.calc dataframes
power.calc &amp;lt;-
   rbind(power.calc.copacabana, power.calc.miramar)&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lnb-160423-power-copacabana-miramar&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2016/04/23/lamps-filters/index_files/figure-html/lnb-160423-power-copacabana-miramar-1.svg&#34; alt=&#34;Caption.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 8: Caption.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;What is the distance at which each lamp yields total power corresponding to 1 Sun, ie &lt;span class=&#34;math inline&#34;&gt;\(\SI{100}{\milli\watt\per\square\cm}\)&lt;/span&gt;? Calculated by linear interpolation of the two points straddling the 100-mark for each curve (we’re not using the fitted exponential functions because I’m having some trouble applying the parameters).&lt;/p&gt;
&lt;p&gt;Miramar’s “1 Sun” distance is &lt;span class=&#34;math inline&#34;&gt;\(\SI{57}{\cm}\)&lt;/span&gt; (centre-to-centre).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;linfit.miramar &amp;lt;-
   approx(x = c(min(subset(subset(power, lamp == &amp;quot;miramar&amp;quot;), density &amp;lt;= 100)$corr.distance),
                max(subset(subset(power, lamp == &amp;quot;miramar&amp;quot;), density &amp;gt;= 100)$corr.distance)),
          y = c(min(subset(subset(power, lamp == &amp;quot;miramar&amp;quot;), density &amp;gt;= 100)$density),
                max(subset(subset(power, lamp == &amp;quot;miramar&amp;quot;), density &amp;lt;= 100)$density)),
          n = length(seq(max(subset(subset(power, lamp == &amp;quot;miramar&amp;quot;), density &amp;gt;= 100)$corr.distance),
                         min(subset(subset(power, lamp == &amp;quot;miramar&amp;quot;), density &amp;lt;= 100)$corr.distance),
                         by = 0.1)))
linfit.miramar$x[which(round(linfit.miramar$y) == 100)]
## [1] 55.5 55.6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And this is Copacabana’s “1 Sun” distance:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;linfit.copacabana &amp;lt;-
   approx(x = c(min(subset(subset(power, lamp == &amp;quot;copacabana&amp;quot;), density &amp;lt;= 100)$corr.distance),
                max(subset(subset(power, lamp == &amp;quot;copacabana&amp;quot;), density &amp;gt;= 100)$corr.distance)),
          y = c(min(subset(subset(power, lamp == &amp;quot;copacabana&amp;quot;), density &amp;gt;= 100)$density),
                max(subset(subset(power, lamp == &amp;quot;copacabana&amp;quot;), density &amp;lt;= 100)$density)),
          n = length(seq(max(subset(subset(power, lamp == &amp;quot;copacabana&amp;quot;), density &amp;gt;= 100)$corr.distance),
                         min(subset(subset(power, lamp == &amp;quot;copacabana&amp;quot;), density &amp;lt;= 100)$corr.distance),
                         by = 0.1)))
linfit.copacabana$x[which(round(linfit.copacabana$y) == 100)]
## [1] 44.6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We’ll round that to &lt;span class=&#34;math inline&#34;&gt;\(\SI{45}{\cm}\)&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;spectral-response-of-air-mass-filters&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Spectral response of air-mass filters&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;abs.files &amp;lt;-
   list.files(path = &amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/160423&amp;quot;,
              pattern = &amp;quot;filter-A-.*\\.txt$&amp;quot;,
              full.names = TRUE)
abs.data &amp;lt;-
   OO2df(datafile = abs.files[1], version = &amp;quot;1&amp;quot;)
for (i in 2:length(abs.files)) {
   abs.data &amp;lt;-
      rbind(abs.data,
            OO2df(datafile = abs.files[i], version = &amp;quot;1&amp;quot;))
}
abs.data$technique &amp;lt;- &amp;quot;abs&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;tra.files &amp;lt;-
   list.files(path=&amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/160423&amp;quot;,
              pattern = &amp;quot;filter-T-.*\\.txt$&amp;quot;,
              full.names = TRUE)
tra.data &amp;lt;-
   OO2df(datafile = tra.files[1], version = &amp;quot;1&amp;quot;)
for (i in 2:length(tra.files)) {
   tra.data &amp;lt;-
      rbind(tra.data,
            OO2df(datafile = tra.files[i], version = &amp;quot;1&amp;quot;))
}
tra.data$technique &amp;lt;- &amp;quot;tra&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# some clean-up to simplify plotting
tra.data &amp;lt;- subset(tra.data, (intensity &amp;lt;= 100) &amp;amp; (intensity &amp;gt;= 0))
abs.data &amp;lt;- subset(abs.data, intensity &amp;gt; -0.01)
# join abs and tra dataframes
exp.data &amp;lt;- rbind(abs.data, tra.data)
# trim noisy ends of spectra
exp.data &amp;lt;- subset(exp.data, (wavelength &amp;lt;= 1050) &amp;amp; (wavelength &amp;gt;= 260))
# rename the sampleids
exp.data$sampleid[which(exp.data$sampleid
                        %in% c(&amp;quot;AM0-AM15-filter-A-AMattson&amp;quot;,
                               &amp;quot;AM0-AM15-filter-T-AMattson&amp;quot;))] &amp;lt;-
   &amp;quot;AM0+AM1.5&amp;quot;
exp.data$sampleid[which(exp.data$sampleid
                        %in% c(&amp;quot;AM0-filter-A-AMattson&amp;quot;, &amp;quot;AM0-filter-T-AMattson&amp;quot;))] &amp;lt;-
   &amp;quot;AM0&amp;quot;
exp.data$sampleid[which(exp.data$sampleid
                        %in% c(&amp;quot;AM15-filter-A-AMattson&amp;quot;, &amp;quot;AM15-filter-T-AMattson&amp;quot;))] &amp;lt;-
   &amp;quot;AM1.5-circ&amp;quot;
exp.data$sampleid[which(exp.data$sampleid
                        %in% c(&amp;quot;AM15-filter-A-Copacabana&amp;quot;, &amp;quot;AM15-filter-T-Copacabana&amp;quot;))] &amp;lt;-
   &amp;quot;AM1.5-sq&amp;quot;&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lnb-160423-spectra-AM-filters&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2016/04/23/lamps-filters/index_files/figure-html/lnb-160423-spectra-AM-filters-1.svg&#34; alt=&#34;Caption.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 9: Caption.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Looking only at the &lt;span class=&#34;math inline&#34;&gt;\(\SIrange{300}{400}{\nm}\)&lt;/span&gt; range:&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lnb-160423-AM-filters-300400&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2016/04/23/lamps-filters/index_files/figure-html/lnb-160423-AM-filters-300400-1.svg&#34; alt=&#34;Absorbance and transmittance spectra of the AM filters (\(\SIrange{300}{400}{\nm}\)).&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 10: Absorbance and transmittance spectra of the AM filters (&lt;span class=&#34;math inline&#34;&gt;\(\SIrange{300}{400}{\nm}\)&lt;/span&gt;).
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Using both the AM0 and AM1.5 (circular) filters in the optical path decrease transmittance markedly more than the AM1.5 (square) filter that we have used before.&lt;/p&gt;
&lt;p&gt;Perhaps using only Mattson’s AM1.5 filter is the best compromise.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;spectral-response-of-neutral-density-filters&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Spectral response of neutral density filters&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;nd.files &amp;lt;-
   list.files(path = &amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/171122-ND-filters&amp;quot;,
              pattern = &amp;quot;\\.txt$&amp;quot;,
              full.names = TRUE)
nd.data &amp;lt;- NULL
for (i in 1:length(nd.files)) {
   nd.data &amp;lt;-
      rbind(nd.data,
            OO2df(datafile = nd.files[i], version = &amp;quot;1&amp;quot;))
}
nd.data$technique &amp;lt;- &amp;quot;tra&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# some clean-up to simplify plotting
nd.data &amp;lt;-
   nd.data %&amp;gt;%
   filter(intensity &amp;lt;= 100 &amp;amp; intensity &amp;gt;= 0) %&amp;gt;%
   # trim noisy ends of spectra
   filter(wavelength &amp;gt;= 260 &amp;amp; wavelength &amp;lt;= 1050)
# a nicer label for the plot
nd.data$label &amp;lt;- paste0(sub(&amp;quot;\\d{3}-ND-&amp;quot;, &amp;quot;T = &amp;quot;, nd.data$sampleid), &amp;quot;%&amp;quot;)&lt;/code&gt;&lt;/pre&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lnb-160423-spectra-ND-filters&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2016/04/23/lamps-filters/index_files/figure-html/lnb-160423-spectra-ND-filters-1.svg&#34; alt=&#34;Spectral profile of each ND filter. Their absorbance is pretty constant within the range \(\SIrange{400}{800}{\nm}\). But below \(\SI{400}{\nm}\) their absorbance increases steeply.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 11: Spectral profile of each ND filter. Their absorbance is pretty constant within the range &lt;span class=&#34;math inline&#34;&gt;\(\SIrange{400}{800}{\nm}\)&lt;/span&gt;. But below &lt;span class=&#34;math inline&#34;&gt;\(\SI{400}{\nm}\)&lt;/span&gt; their absorbance increases steeply.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;spectral-distribution-of-lamps&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Spectral distribution of lamps&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Copacabana with its &amp;quot;built-in&amp;quot; filter
lamp &amp;lt;-
   cbind(lamp = &amp;quot;Copacabana&amp;quot;,
         filter = &amp;quot;AM1.5-sq&amp;quot;,
         OO2df(&amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/160423/Copacabana-lamp.txt&amp;quot;,
               version = &amp;quot;1&amp;quot;))
# Miramar (which lacks built-in filter) while borrowing Copacabana&amp;#39;s filter
lamp &amp;lt;-
   rbind(lamp,
         cbind(lamp = &amp;quot;Miramar&amp;quot;,
               filter = &amp;quot;AM1.5-sq&amp;quot;,
               OO2df(&amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/160423/Miramar-lamp-AM15-Copacabana.txt&amp;quot;,
                     version = &amp;quot;1&amp;quot;)))
# Miramar with the circular AM1.5 filter
lamp &amp;lt;-
   rbind(lamp,
         cbind(lamp = &amp;quot;Miramar&amp;quot;,
               filter = &amp;quot;AM1.5-circ&amp;quot;,
               OO2df(&amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/160423/Miramar-lamp-AM15-Mattson.txt&amp;quot;,
                     version = &amp;quot;1&amp;quot;)))
# Miramar with both of Mattson&amp;#39;s filters (AM1.5 and AM0)
lamp &amp;lt;-
   rbind(lamp,
         cbind(lamp = &amp;quot;Miramar&amp;quot;,
               filter = &amp;quot;AM0+AM1.5&amp;quot;,
               OO2df(&amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/160423/Miramar-lamp-AM15-AM0-Mattson.txt&amp;quot;,
                     version = &amp;quot;1&amp;quot;)))
# Finally, Miramar without any AM filters at all
lamp &amp;lt;-
   rbind(lamp,
         cbind(lamp = &amp;quot;Miramar&amp;quot;,
               filter = &amp;quot;none&amp;quot;,
               OO2df(&amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/160423/Miramar-lamp.txt&amp;quot;,
                     version = &amp;quot;1&amp;quot;)))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Please keep in mind that the total power (area under the curve) in these spectra are &lt;strong&gt;not comparable&lt;/strong&gt; between the two lamps since I did not bother placing the sensor at the same distance from the lamps. I was mainly interested in the spectral distribution.&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lnb-160423-lamps-spectral-distributions&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2016/04/23/lamps-filters/index_files/figure-html/lnb-160423-lamps-spectral-distributions-1.svg&#34; alt=&#34;Caption.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 12: Caption.
&lt;/p&gt;
&lt;/div&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lnb-160423-lamps-spectral-distributions-AM15&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2016/04/23/lamps-filters/index_files/figure-html/lnb-160423-lamps-spectral-distributions-AM15-1.svg&#34; alt=&#34;Spectral distribution of both lamps with the same AM1.5 filter in the optical path. Clearly, the spectral distribution is not affected by the age of the bulb (Copacabana ca 5 years old, Miramar brand new).&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 13: Spectral distribution of both lamps with the same AM1.5 filter in the optical path. Clearly, the spectral distribution is not affected by the age of the bulb (Copacabana ca 5 years old, Miramar brand new).
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Actually, the main take-away from these measurements are that both lamps (new and old) produce the same spectral distribution, even though the stability and power of the new lamp is significantly better than the old.&lt;/p&gt;
&lt;p&gt;Let’s have a closer look at short wavelengths:&lt;/p&gt;

&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:lnb-160423-lamps-spectral-distributions-AM15-less400&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2016/04/23/lamps-filters/index_files/figure-html/lnb-160423-lamps-spectral-distributions-AM15-less400-1.svg&#34; alt=&#34;Caption.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 14: Caption.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Keep in mind that the shown counts have not been zeroed, and that the zero-level is usually at approximately 650 counts.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;export-experimental-data-to-assets-folder&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Export experimental data to assets folder&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Note to self: use zip, not gzip, for compressing multiple files into one zip archive
system(paste(&amp;quot;zip -j&amp;quot;,
             here::here(&amp;quot;assets/lnb-160423-filters.zip&amp;quot;),
             paste(list.files(pattern = &amp;quot;^.*-filter-.*\\.txt$&amp;quot;,
                              full.names = TRUE,
                              &amp;quot;/media/bay/taha/chepec/laboratory/OOHR2000/160423&amp;quot;),
                   collapse = &amp;quot; &amp;quot;)))&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;assets/lnb-160423-filters.zip&#34;&gt;Spectra (CSV ASCII files) of filters (100 kB)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;assets/ND-filters-spectra.zip&#34;&gt;Spectra (SpectraSuite binary files and CSV ASCII files) of ND filters (800 kB)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;div style=&#34;border: 2px solid #0066CC; padding-left: 0px; padding-top: 0px; background-color:  #ffffe6; color: black;&#34;&gt;
&lt;pre&gt;&lt;code&gt;## Commit:  0057708e5b134d9aff01a590348209be7d467dc9
## Author:  taha@luxor &amp;lt;taha@chepec.se&amp;gt;
## When:    2021-03-07 00:02:33 GMT
## 
##      Fixed the path to an asset
##      
##      (the mistake was introduced when assets were bundled...)
##      
## 1 file changed, 1 insertions, 1 deletions
## index.Rmd | -1 +1  in 1 hunk
## Untracked files:
##  Untracked:  index.Rmd.lock~
## 
## Unstaged changes:
##  Modified:   index.Rmd
## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] here_1.0.1             oceanoptics_0.0.0.9004 common_0.0.2          
##  [4] git2r_0.29.0           directlabels_2021.1.13 ggrepel_0.9.1         
##  [7] ggplot2_3.3.5          dplyr_1.0.8            magrittr_2.0.2        
## [10] knitr_1.37            
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.8       pillar_1.7.0     bslib_0.3.1      compiler_4.0.5  
##  [5] jquerylib_0.1.4  tools_4.0.5      digest_0.6.29    jsonlite_1.7.3  
##  [9] evaluate_0.14    lifecycle_1.0.1  tibble_3.1.6     gtable_0.3.0    
## [13] pkgconfig_2.0.3  rlang_1.0.1      cli_3.2.0        DBI_1.1.2       
## [17] yaml_2.2.2       blogdown_1.7     xfun_0.29        fastmap_1.1.0   
## [21] withr_2.4.3      stringr_1.4.0    generics_0.1.2   vctrs_0.3.8     
## [25] sass_0.4.0       rprojroot_2.0.2  tidyselect_1.1.2 glue_1.6.1      
## [29] R6_2.5.1         fansi_1.0.2      rmarkdown_2.11   bookdown_0.24   
## [33] purrr_0.3.4      scales_1.1.1     ellipsis_0.3.2   htmltools_0.5.2 
## [37] assertthat_0.2.1 colorspace_2.0-2 quadprog_1.5-8   utf8_1.2.2      
## [41] stringi_1.7.6    munsell_0.5.0    crayon_1.5.0
## Linux 4.15.0-173-generic #182-Ubuntu SMP Fri Mar 18 15:53:46 UTC 2022 x86_64&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Extract SEM parameters from TIFF tags using R</title>
      <link>//solarchemist.se/2015/03/20/sem-tiffinfo/</link>
      <pubDate>Fri, 20 Mar 2015 16:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2015/03/20/sem-tiffinfo/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/htmlwidgets/htmlwidgets.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/plotly-binding/plotly.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/typedarray/typedarray.min.js&#34;&gt;&lt;/script&gt;
&lt;script src=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/jquery/jquery.min.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/crosstalk/css/crosstalk.min.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/crosstalk/js/crosstalk.min.js&#34;&gt;&lt;/script&gt;
&lt;link href=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/plotly-htmlwidgets-css/plotly-htmlwidgets.css&#34; rel=&#34;stylesheet&#34; /&gt;
&lt;script src=&#34;//solarchemist.se/2015/03/20/sem-tiffinfo/index_files/plotly-main/plotly-latest.min.js&#34;&gt;&lt;/script&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#smartsem-tiff-images&#34;&gt;SmartSEM® TIFF images&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#advantages-of-utilising-the-sem-parameters-stored-in-tiff-tags&#34;&gt;Advantages of utilising the SEM parameters stored in TIFF tags&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#saving-all-tiff-tags-to-an-r-dataframe&#34;&gt;Saving all TIFF tags to an R dataframe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#exploring-the-sem-dataset&#34;&gt;Exploring the SEM dataset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sessioninfo&#34;&gt;sessionInfo()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div id=&#34;introduction&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Scanning electron microscopy (SEM) is a powerful technique that is regularly used by chemists and other scientists to characterize an array of physical properties of a wide range of solid materials.&lt;/p&gt;
&lt;p&gt;TIFF stands for &lt;a href=&#34;https://en.wikipedia.org/wiki/Tagged_Image_File_Format&#34;&gt;Tagged Image File Format&lt;/a&gt;. Other than the image itself, the software can insert multiple tags with additional information, such as objective settings, acceleration voltage, stage position, etc. Timely recording of the experimental conditions is very important, so this feature of TIFF files is potentially very useful.&lt;/p&gt;
&lt;p&gt;This post will demonstrate a method to extract TIFF tags from SEM micrographs using the R programming language. The method is particularly well-suited for SEM micrographs recorded using the SmartSEM® Operating Software&lt;a href=&#34;#fn1&#34; class=&#34;footnote-ref&#34; id=&#34;fnref1&#34;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, the &lt;a href=&#34;http://www.zeiss.com/microscopy/en_de/products/microscope-software/smartsem.html&#34;&gt;Zeiss SmartSEM® portal&lt;/a&gt; offers no download link to the software manual nor any other documentation on the software’s capabilities. And after perusing the SmartSEM® V05.06 and V05.04 software manuals, I found no description of the tags that the SEM software demonstrably attaches to the TIFF images.&lt;/p&gt;
&lt;p&gt;But the manual does note that “images in BMP and JPEG format cannot be reloaded to the SmartSEM® user interface. Besides, it is not possible to save additional information with the image”. And in table 2.2 (“Available licenses”) of the manual, we learn of a “SmartSEM report generator” that “enables an Office 2007 add in ribbon that imports CZTIFF images and can read the tags so users can create reports”. But I have not tested the functionality of this report generator.&lt;/p&gt;
&lt;p&gt;The only Zeiss-issued documentation related to TIFF files that we could find was a “technical information” sheet titled &lt;a href=&#34;http://www.lewin.nu/~erl/LSM410TIFF.pdf&#34;&gt;“The Tag Imaged File Format in the LSM” by Bernhard Reissner (1994)&lt;/a&gt; hosted on the research blog of former KTH PhD student &lt;a href=&#34;http://www.lewin.nu/~erl/blogs/research/index.html&#34;&gt;Erland Lewin&lt;/a&gt;. The information in the document is interesting and sheds some light on the origins of attaching additional information in TIFF tags, but is severely outdated.&lt;/p&gt;
&lt;p&gt;Notwithstanding the poor documentation offered by the SmartSEM® publisher, other microscopists have created scripts, plugins and software that can handle TIFF images to various degrees.&lt;/p&gt;
&lt;p&gt;Most ambitious is probably &lt;a href=&#34;https://pypi.python.org/pypi/tifffile&#34;&gt;tiffile.py&lt;/a&gt; by &lt;a href=&#34;http://www.lfd.uci.edu/~gohlke/code/tifffile.py.html&#34;&gt;Christoph Gohlke (2014)&lt;/a&gt;, a very well-documented Python script for reading and writing data from and to TIFF files. The script is geared towards handling the TIFF format in general, and does not collect the specific tags generated by the SmartSEM® software, but it could probably easily be expanded upon by someone with Python familiarity.&lt;/p&gt;
&lt;p&gt;There is a MATLAB® function (should also work in Octave) that handles TIFF files, although it is mostly geared towards biophysics and LSM applications.
&lt;a href=&#34;http://www.cytosim.org/other/matlab/tiffread.m&#34;&gt;tiffread.m v3.31&lt;/a&gt; (licensed as GNU GPL v3) imports TIFF files into MATLAB/Octave. By Francois Nedelec of the &lt;a href=&#34;http://www.cytosim.org/cytosim/index.html&#34;&gt;Cell biology and Biophysics unit at EMBL (2013)&lt;/a&gt;. Older versions of the same script are also found online [&lt;a href=&#34;http://se.mathworks.com/matlabcentral/fileexchange/10298-tiffread2-m&#34;&gt;1&lt;/a&gt;, &lt;a href=&#34;http://www.embl.de/ExternalInfo/nedelec/misc/matlab/tiffread30.m&#34;&gt;2&lt;/a&gt;].&lt;/p&gt;
&lt;p&gt;Then there is also a few ImageJ plugins that can read or dump TIFF tags,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://rsb.info.nih.gov/ij/plugins/tiff-tags.html&#34;&gt;TIFF tags ImageJ plugin by Joachim Wesner, 2009&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://rsbweb.nih.gov/ij/plugins/tiff-dumper.html&#34;&gt;TIFF Dumper ImageJ plugin by Curtis Rueden, 2009&lt;/a&gt;,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and a &lt;a href=&#34;http://rsbweb.nih.gov/ij/macros/SetScaleFromTiffTag.txt&#34;&gt;SetScaleFromTiffTag ImageJ macro&lt;/a&gt; that (in conjunction with the TIFF tags ImageJ plugin above) can set the scale for SEM images taken with the Zeiss SmartSEM® software.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;http://www.remotesensing.org/libtiff/&#34;&gt;TIFF format&lt;/a&gt; supports a few different kind of tags, specifically,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;baseline tags&lt;/strong&gt; are those that are listed as part of the core of TIFF, the essentials that all mainstream TIFF developers should support in their products, &lt;strong&gt;extension tags&lt;/strong&gt; are those listed as part of TIFF features that may not be supported by all TIFF readers, &lt;strong&gt;private tags&lt;/strong&gt; are, at least originally, allocated by Adobe for organizations that wish to store information meaningful only to that organization in a TIFF file. […], &lt;strong&gt;private IFD tags&lt;/strong&gt; if one needs more than 10 private tags or so, the TIFF specification suggests that, rather then using a large amount of private tags, one should instead allocate a single private tag, define it as datatype IFD, and use it to point to a so called “private IFD”. In that private IFD, one can next use whatever tags one wants. These private IFD tags do not need to be properly registered with Adobe, they live in a namespace of their own, private to the particular type of IFD. [boldface added]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The above section is quoted from &lt;a href=&#34;http://www.awaresystems.be/imaging/tiff/tifftags.html&#34;&gt;Joris van Damme who maintains a list of known tags and their descriptions and definitions&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;smartsem-tiff-images&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;SmartSEM® TIFF images&lt;/h2&gt;
&lt;p&gt;Below is a SEM micrograph recorded using Zeiss SmartSEM® V05.04.05.00 on a &lt;a href=&#34;http://lims.msl.angstrom.uu.se/WebForms/Equipment/EquipmentView.aspx?toolId=131&#34;&gt;LEO1550 microscope&lt;/a&gt; (at the &lt;a href=&#34;http://www.myfab.se/AringngstroumlmMSL/Resources/Analysislaboratory.aspx&#34;&gt;Ångström Microstructure Laboratory, Uppsala university&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;assets/150320-micrograph.tif&#34;&gt;&lt;img src=&#34;assets/150320-micrograph.png&#34; alt=&#34;Scaled down png of SEM micrograph. Click on the image to download TIFF file in native resolution (sans tags). The sample is electrophoretically deposited TiO2 microparticles.&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Short note: most TIFF editors honour the TIFF specification and discard tags/fields/IFD they do not understand. &lt;a href=&#34;http://gimp.1065349.n5.nabble.com/GIMP-throwing-away-TIFF-tags-td5232.html&#34;&gt;GIMP does too&lt;/a&gt;, and any edits made in GIMP on the original TIFF will cause all SmartSEM® tags to be discarded.&lt;/p&gt;
&lt;p&gt;So if we want to read the tags that SmartSEM® so conveniently attaches to the TIFF images, we need to avoid editing the TIFF image or do our bidding &lt;em&gt;before&lt;/em&gt; any edits.&lt;/p&gt;
&lt;p&gt;To access the tags from the command line, we can use the &lt;a href=&#34;http://www.libtiff.org/tools.html&#34;&gt;TIFF tools collection&lt;/a&gt;, specifically, the &lt;code&gt;tiffinfo&lt;/code&gt; utility. They are easily installed on GNU/Linux Debian-based systems:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo apt-get install libtiff-tools&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The extracted TIFF tags are just text (with some non-UTF8 characters, unfortunately), and we can easily write them to a file using piping.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;tiffinfo micrograph.tif &amp;gt; tags.txt&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gist.github.com/solarchemist/9de1a3397aca8b721908#file-leo1550&#34;&gt;TIFF tags extracted with &lt;code&gt;tiffinfo&lt;/code&gt; from image taken with SmartSEM® V05.04.05.00 on LEO1550 scanning electron microscope&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gist.github.com/solarchemist/9de1a3397aca8b721908#file-merlin&#34;&gt;TIFF tags extracted with &lt;code&gt;tiffinfo&lt;/code&gt; from image taken with SmartSEM® V05.06.00.00 on Merlin scanning electron microscope&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For both software versions, &lt;code&gt;tiffinfo&lt;/code&gt; reports that the tags are in a field with tag 34118 (0x8546), which indicates that SmartSEM® uses a so called private IFD tag to attach its array of parameters. It is also encouraging to see that the newer SmartSEM® version significantly expands the number of recorded parameters. Please note that we have removed the following parameters from the TIFF tag files above for privacy: &lt;code&gt;SV_FILE_NAME&lt;/code&gt;, &lt;code&gt;SV_USER_NAME&lt;/code&gt;, &lt;code&gt;SV_OPERATOR&lt;/code&gt;, &lt;code&gt;SV_USER_TEXT&lt;/code&gt;, &lt;code&gt;SV_SERIAL_NUMBER&lt;/code&gt;, &lt;code&gt;SV_IMAGE_PATH&lt;/code&gt;, &lt;code&gt;SV_SAMPLE_ID&lt;/code&gt;, &lt;code&gt;AP_DATE&lt;/code&gt;, &lt;code&gt;AP_TIME&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We encourage the reader to inspect the SEM parameters stored in the TIFF tags, to get a feel for the scope of data that is recorded by the microscope.&lt;/p&gt;
&lt;div id=&#34;advantages-of-utilising-the-sem-parameters-stored-in-tiff-tags&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Advantages of utilising the SEM parameters stored in TIFF tags&lt;/h3&gt;
&lt;p&gt;Although this particular SEM operating software (and probably others) record all pertinent instrument parameters into each TIFF image, I suspect that most users are not aware of this fact and still rely on taking notes in a lab notebook or similar, in addition to the few parameters that are usually embedded visually into the image itself (scalebar, magnification, acceleration voltage, and such, see example micrograph above).&lt;/p&gt;
&lt;div class=&#34;figure&#34;&gt;
&lt;img src=&#34;assets/related/150320-latex-page.png&#34; alt=&#34;&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;The extracted TIFF tags incorporated into a LaTeX-generated micrograph report.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;We have used a system where each micrograph was added to a SEM experiment report generated by LaTeX, with the a selection of the most relevant parameters included on the same page (see example above). It has worked well, but the report can of course not be generated until the SEM session is finished and all micrographs have been collected. As such, it is not a substitute for the lab notebook.
A nice improvement would be to have the report page generated on a portable computer or tablet immediately after the image is saved by the microscope, and even better would be if the tablet or similar would allow the user to scribble notes on that generated report page. But I guess that is what an electronic lab notebook system is for…&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;saving-all-tiff-tags-to-an-r-dataframe&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Saving all TIFF tags to an R dataframe&lt;/h2&gt;
&lt;p&gt;The following is an R function that extracts all private IFD tags attached to SmartSEM®-produced TIFF images and saves them in a R dataframe and also separates quantities and units into separate columns for easier data treatment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gist.github.com/solarchemist/9de1a3397aca8b721908#file-tiffalltags2df-r&#34;&gt;&lt;code&gt;tiffalltags2df.R&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As written, &lt;code&gt;tiffalltags2df()&lt;/code&gt; expects the text output of &lt;code&gt;tiffinfo&lt;/code&gt; as input. This could easily be generated for an arbitrary number of existing TIFF files inside a directory tree using the following code snippet.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;tagfiles &amp;lt;- list()
tif &amp;lt;- # all laboratory SEM TIFF files
   data.frame(files =
                 # the find command searches recursively into subdirectories
                 system(&amp;quot;find /path/with/TIFF/files -type f -exec ls {} \\; | grep .tif&amp;quot;,
                        intern = TRUE))
tif$tagfiles &amp;lt;- sub(&amp;quot;tif$&amp;quot;, &amp;quot;txt&amp;quot;, tif$files)
for (i in 1:dim(tif)[1]) {
   message(paste(&amp;quot;Saving tags for:&amp;quot;, tif$files[i]))
   # generate TIFF tag text files for each TIFF image
   system(paste(&amp;quot;tiffinfo&amp;quot;, tif$files[i], &amp;quot;&amp;gt;&amp;quot;, tif$tagfiles[i]),
          ignore.stderr = TRUE)
   tagfiles[[i]] &amp;lt;-
      # note that iconv() forcefully converts non-ASCII to ASCII
      # I have noted that degree symbols are lost in this conversion
      iconv(readLines(con = tif$tagfiles[i]), to = &amp;quot;ASCII&amp;quot;, sub = &amp;quot;&amp;quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that we have a bunch of TIFF images of SEM micrographs, and we know about the amount of information stored inside each image’s TIFF tags, what can we do with them?&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;exploring-the-sem-dataset&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Exploring the SEM dataset&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;if (!file.exists(here::here(&amp;quot;assets/tiffiles.rda&amp;quot;))) {
   tif &amp;lt;- # all laboratory SEM TIFF files
      data.frame(files =
                    system(&amp;quot;find /media/bay/taha/chepec/laboratory/SEM -type f -exec ls {} \\; | grep .tif&amp;quot;,
                           intern = TRUE))
   tif$files &amp;lt;- sub(&amp;quot;tif$&amp;quot;, &amp;quot;txt&amp;quot;, tif$files)
   # drop any textfile that does not exist (check for the sake of completeness)
   tif$files &amp;lt;- tif$files[file.exists(tif$files)]
   save(tif, file = here::here(&amp;quot;assets/tiffiles.rda&amp;quot;))
} else {
   load(here::here(&amp;quot;assets/tiffiles.rda&amp;quot;))
}
if (!file.exists(here::here(&amp;quot;assets/tags.rda&amp;quot;))) {
   tags &amp;lt;- tiffalltags2df(tif$files[1])
   for (i in 2:dim(tif)[1]) {
      # this loop can take a while
      message(paste(&amp;quot;Reading file&amp;quot;, i, &amp;quot;of&amp;quot;, dim(tif)[1]))
      tags &amp;lt;- rbind(tags, tiffalltags2df(tif$files[i]))
      }
   save(tags, file = here::here(&amp;quot;assets/tags.rda&amp;quot;))
} else {
   load(here::here(&amp;quot;assets/tags.rda&amp;quot;))
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Our dataset consists of 927 SEM micrographs, recorded from 2011 to 2014. 672 micrographs were recorded using the LEO1550 microscope, and 255 micrographs were recorded using the Merlin microscope.&lt;/p&gt;
&lt;p&gt;We will start this exploration by looking at the brightness vs contrast setting for all SEM micrographs. Since the majority of all SEM experiments were performed on similar samples (solid metal oxides of similar composition and morphology), we can assume that there should be a “sweet spot” of B and C values that the operator keeps repeating for best results. Also, we know from looking at the &lt;code&gt;Auto BC&lt;/code&gt; parameter that BC was set manually for 96.9% of all micrographs.&lt;/p&gt;
&lt;div id=&#34;htmlwidget-1&#34; style=&#34;width:100%;height:480px;&#34; class=&#34;plotly html-widget&#34;&gt;&lt;/div&gt;
&lt;script type=&#34;application/json&#34; data-for=&#34;htmlwidget-1&#34;&gt;{&#34;x&#34;:{&#34;data&#34;:[{&#34;x&#34;:[32.7,32.9,32.9,32.9,39,39,39,35.1,35.1,39,35.1,39,39,39,35.1,35.1,39,35.1,35.1,32,32,32.2,32.2,32.2,32,32.7,32.7,35.2,32.7,32.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31.7,31,31,31,31.8,32.1,32.5,32.3,31.7,31.9,33.6,33.6,45.6,33.6,33.6,45.6,33.6,67.4,33.6,34,33.5,27.8,27.8,27.8,27.8,27.8,32.2,32.2,32.2,31.6,31.7,31.6,31.7,31.7,31.7,31.6,31.7,31.7,31.6,31.6,31.7,31.7,31.7,31.7,38.9,37.4,38.3,38.7,37.4,32.7,37.7,32.7,32.7,32.7,32.7,27.9,27.9,27.9,27.9,27.9,33,33,35.9,33,37,31.9,31.9,31.9,42.9,31.3,33.3,33.2,32.9,32.6,32.3,32.3,32.3,43,32.3,36.4,36.5,35.8,35.8,37,36.5,36.5,37,36.5,31.7,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.6,27.8,37,27.8,27.8,32.5,32.5,32.5,32.5,32.5,32.5,32.5,31.9,29.7,31.9,31.9,29.7,29.7,31.9,31.7,26.1,27.2,27.2,26.1,26.1,26.1,26.1,27.2,32.2,32.2,32.2,32.2,45.1,34.4,40.3,34.4,34.4,33.6,37,29.9,30,29.9,29.9,32,32,30,30,32.2,29.9,29.9,32,53.1,53.1,30,33.1,37.6,33.3,33.3,32,32,32,32,32,32,32,41.2,41.4,41,41.2,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,33.6,33.6,32.2,32.2,32.2,32.2,32.2,32.2,37.5,37,37,37,36,37.5,37,36,37.5,37.5,37.5,37.5,27.8,27.8,27.8,27.8,29,29.1,29,100,29.1,29,29.1,29,71.5,33.2,33.2,33.2,35.2,35.2,34.3,40.2,34.3,49.3,35.2,46,35,32.9,32.9,35,30.9,26.5,26.5,26.5,30.9,26.5,26.8,26.5,39,39,39,39,39,39,39,32.7,32.7,32.8,32.7,32.7,32.7,32.7,32.7,32.7,32.7,41.4,31.9,31.9,31.9,31.9,31.9,33.2,34.7,34.6,36.4,36.4,35.9,35.9,36.4,36.4,36.4,35.9,35.9,32.1,32.1,37,32.1,37,37,32.1,37,32.1,32.1,32.1,37,31.7,31.7,32.1,32.1,36.1,76.6,100,100,43,32.2,37,37,32.1,32.1,32.1,32.1,32.1,32.1,37,32.1,37,32.1,37,32.1,37,32.1,32.1,37,32.1,28.2,32.2,32.2,33.5,33.5,31.4,31.4,31.4,32,30.4,31.7,37,37,31.7,33,33,30.3,31.8,31.3,33,31.3,31.3,41.1,33,34.8,35.3,37,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,35.1,32.3,34.9,32.3,35.1,32.5,32.5,32.5,32.5,32.5,35.7,36.9,37,36.9,31.9,31.9,31.9,31.9,31.9,31.9,31.9,70.4,32.2,58.9,32.2,35.6,31.1,68.4,31,32.2,66.6,37,32.2,32.2,32.2,32.2,34.1,34.1,34.1,34.1,34.1,34.1,34.1,34.1,34.1,34.1,34.1,34.1,44.7,34.1,34.1,34.1,34.1,34.1,32.2,32.2,32.2,33.4,27.8,27.8,27.8,27.8,27.8,27.8,27.8,31.1,32.5,31.1,32.5,32.5,35.5,35.9,37,34.2,27.8,27.8,27.8,27.8,27.8,36.8,33.7,33.7,33.7,38.5,32.7,32.7,38.5,38.5,32.7,32.7,38.5,38.5,32.7,38.5,32.7,32.7,32.3,43,32.3,32.3,32.3,33.5,37,37,33.1,33.1,33.1,33.1,33.3,33.3,33.3,33.3,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.6,32.4,32.4,37.9,37.9,32.4,32.4,32.4,32.4,32.4,35.9,35.9,35.9,35.9,35.9,35.9,35.9,35.9,31.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,33.4,33.6,33.6,33.6,31.5,31.5,31.5,32.9,32.9,32.9,32.9,32.9,32.9,32.9,32.9,32.2,32.2,32.2,32.2,32.2,32.2,37,32.2,31.7,31.7,31.6,31.5,31.5,33.2,33.2,33.2,31.5,31.5,31.5,33.2,33.2,33.2,33.2,30.5,32.3,32.3,32.3,32.3,32.3,30.5,32.3,32.3,32.3,32.3,30.5,32.3,30.6,30.6,32.3,31.9,31.9,31.9,32.7,32.7,32.7,32.2,32.2,32.2,33.5,33.5,33.5,33.5,33.5,29.4,29.4,32.5,32.5,32.5,32.5,32.5,32.1,32.1,32.1,37,32.1,32.1,37,37,37,37,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,32.7,36,37,37,34.1,34.1,34.1,34.1,32.1,31.7,32.1,32.1,31.7,32.1,33.6,41.5,41.5,31.5,31.5,31.5,29.6,29.6,29.7,29.5,29.6,29.5,29.7,29.5,31.1],&#34;y&#34;:[48.6,48.6,48.6,48.6,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,48.9,48.9,48.9,48.9,48.9,48.9,49.6,49.6,52,49.6,49.6,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,49.3,49.3,49.3,49.4,49.5,49.4,49.5,49.5,49.3,49.7,49.7,52,49.7,49.7,52,48.4,0,48.4,48.5,49.5,49.3,49.3,49.3,49.3,49.3,49.5,49.5,49.5,49.5,49.6,49.5,49.6,49.6,49.6,49.5,49.6,49.6,49.5,49.5,49.6,49.6,49.6,49.6,49.1,49.2,49,49,49.2,49.6,52,49.6,49.6,49.6,49.6,48.4,48.4,48.4,48.4,48.4,49,49,49,49,49,49.3,49.3,49.3,49.6,49.1,49.2,49.3,49.3,49.1,49,49,49,49.6,49,35.6,35.3,39.1,35.3,49,35.3,35.3,49,35.3,49.8,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,49,48.7,48.7,50.4,50.6,50.6,50.4,50.6,50.6,50.6,48.9,48.9,48.9,48.9,48.9,48.9,48.9,49.8,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.9,48.9,48.9,48.9,52,49.7,51.9,49.7,49.7,49.7,49,49,49,49,49,49,49,49,49,49,49,49,49,61.3,61.3,49,49,48.7,49,49,48.9,48.9,48.9,48.9,48.9,48.9,48.9,22,13.3,16.8,22,49.3,49.3,49.3,49.3,49.3,49.3,49.3,49.3,49.3,49.3,49.3,49.3,49.8,49.8,49.5,49.5,49.5,49.5,49.5,49.5,39.9,49,49,49,24.6,39.9,49,24.6,39.9,39.9,39.9,39.9,49.3,49.3,49.3,49.3,50.4,50.2,50.4,21.9,50.2,50.4,50.2,50.4,75,49,49,49,48.9,48.9,48.9,52,49.3,50.8,48.9,51.9,49.4,49.4,49.4,49.4,48.4,48.4,48.4,48.4,48.4,48.4,48.5,48.4,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.3,48.9,49.8,48.9,49.3,48.9,48.9,48.9,49.3,49.3,50.8,49.3,49.3,49.3,49.3,49.3,48.9,49.5,49.5,49.7,49.7,49.7,49.7,49.7,49.7,49.7,49.7,49.7,49.4,49.4,49,49.5,49,49,49.5,49,49.5,49.5,49.5,49,49.8,49.8,48.9,49.4,48.6,40.3,40.6,40.6,49.6,49.7,49,49,49.5,49.5,49.5,49.5,48.7,48.7,49,48.7,49,48.7,49,48.7,49,48.7,48.7,49,48.7,47,49.5,49.5,49.5,49.5,47.5,47.5,47.5,48.9,49.5,50.5,49,49,50.5,49.5,49.5,49.5,50.5,50,49.5,50,50,49.4,49.5,48.7,48.9,49,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,49.6,49.8,49.6,49.8,49.6,50.4,50.4,50.4,50.4,50.4,41.4,39.1,49,38.7,48.9,48.9,48.9,48.9,48.9,48.9,48.9,30.8,49,43.5,49,46.7,49,67.9,49.5,49,58.4,49,48.9,48.9,48.9,48.9,49.3,49.3,50,49.3,49.3,50,50,50,49.9,50,50,49.3,52,50,49.3,49.9,49.9,50,49.5,49.5,49.5,49.8,49.3,49.3,49.3,49.3,49.3,49.3,49.3,49.2,50.6,49.2,50.6,50.6,49,48.8,49,49.2,49.3,49.3,49.3,49.3,49.3,49,49.8,49.8,49.8,52,49.4,49.4,52,52,49.4,49.4,52,52,49.4,52,49.4,49.4,49,49.6,49,49,49,46.5,49,49,46.4,46.4,46.4,46.4,49,49,49,49,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,48.7,49,49,49,49,49,49,49,49,49,49.7,49.7,49.7,49.7,49.7,49.7,49.7,49.7,49.8,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,48.9,49,48.4,48.4,48.4,49,49,49,49.4,49.4,49.4,49.4,49.4,49.4,49.4,49.4,48.9,48.9,48.9,48.9,46.6,46.4,49,46.6,49.8,49.8,49.5,49.1,49.1,49.7,49.1,49.7,49.1,49.1,49.1,49.7,49.1,49.1,49.1,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,48.9,48.9,48.9,48.6,48.6,48.6,49.5,49.5,49.5,49.5,49.5,49.5,49.5,49.5,45.1,45.1,50.6,50.6,50.6,50.6,50.6,48.7,48.7,49.5,49,48.7,49.5,49,49,49,49,49.7,49.7,49.7,49.7,49.7,49.7,49.7,49.7,49.7,49,49,49,49.3,49.3,49.3,49.3,49.9,49.5,49.9,49.9,49.5,49.9,49.8,49.5,49.5,49,49,49,46.1,46.1,46.7,46.2,46.1,46.1,46.7,46.1,50.5],&#34;text&#34;:[&#34;contrast:  32.7&lt;br /&gt;brightness: 48.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 48.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 48.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 48.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.2&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.8&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  45.6&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  45.6&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  67.4&lt;br /&gt;brightness:  0.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.0&lt;br /&gt;brightness: 48.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.6&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.6&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.6&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.6&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.6&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.9&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.4&lt;br /&gt;brightness: 49.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.7&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.4&lt;br /&gt;brightness: 49.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.7&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.9&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.9&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.9&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.9&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.9&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  42.9&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.3&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.3&lt;br /&gt;brightness: 49.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  43.0&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.4&lt;br /&gt;brightness: 35.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.5&lt;br /&gt;brightness: 35.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.8&lt;br /&gt;brightness: 39.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.8&lt;br /&gt;brightness: 35.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.5&lt;br /&gt;brightness: 35.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.5&lt;br /&gt;brightness: 35.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.5&lt;br /&gt;brightness: 35.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.2&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.2&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.2&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  45.1&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.4&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  40.3&lt;br /&gt;brightness: 51.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.4&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.4&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  53.1&lt;br /&gt;brightness: 61.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  53.1&lt;br /&gt;brightness: 61.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.1&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  41.2&lt;br /&gt;brightness: 22.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  41.4&lt;br /&gt;brightness: 13.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  41.0&lt;br /&gt;brightness: 16.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  41.2&lt;br /&gt;brightness: 22.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.5&lt;br /&gt;brightness: 39.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.0&lt;br /&gt;brightness: 24.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.5&lt;br /&gt;brightness: 39.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.0&lt;br /&gt;brightness: 24.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.5&lt;br /&gt;brightness: 39.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.5&lt;br /&gt;brightness: 39.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.5&lt;br /&gt;brightness: 39.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.5&lt;br /&gt;brightness: 39.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.0&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.1&lt;br /&gt;brightness: 50.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.0&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast: 100.0&lt;br /&gt;brightness: 21.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.1&lt;br /&gt;brightness: 50.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.0&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.1&lt;br /&gt;brightness: 50.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.0&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  71.5&lt;br /&gt;brightness: 75.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.3&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  40.2&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.3&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  49.3&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  46.0&lt;br /&gt;brightness: 51.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.0&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.0&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.5&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.5&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.5&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.5&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.8&lt;br /&gt;brightness: 48.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  26.5&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.8&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  41.4&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.7&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.6&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.4&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.4&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.4&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.4&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.4&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.1&lt;br /&gt;brightness: 48.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  76.6&lt;br /&gt;brightness: 40.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast: 100.0&lt;br /&gt;brightness: 40.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast: 100.0&lt;br /&gt;brightness: 40.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  43.0&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  28.2&lt;br /&gt;brightness: 47.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.4&lt;br /&gt;brightness: 47.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.4&lt;br /&gt;brightness: 47.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.4&lt;br /&gt;brightness: 47.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.0&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.4&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.8&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.3&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.3&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.3&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  41.1&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.8&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.3&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.9&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.1&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.7&lt;br /&gt;brightness: 41.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.9&lt;br /&gt;brightness: 39.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.9&lt;br /&gt;brightness: 38.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  70.4&lt;br /&gt;brightness: 30.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  58.9&lt;br /&gt;brightness: 43.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.6&lt;br /&gt;brightness: 46.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  68.4&lt;br /&gt;brightness: 67.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  66.6&lt;br /&gt;brightness: 58.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  44.7&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 50.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.4&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 49.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 49.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 48.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.2&lt;br /&gt;brightness: 49.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  27.8&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.8&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.5&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.5&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.5&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.5&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.5&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  38.5&lt;br /&gt;brightness: 52.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  43.0&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 46.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.1&lt;br /&gt;brightness: 46.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.1&lt;br /&gt;brightness: 46.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.1&lt;br /&gt;brightness: 46.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.1&lt;br /&gt;brightness: 46.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.6&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.4&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.4&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.9&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.9&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.4&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.4&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.4&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.4&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.4&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  35.9&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.4&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 48.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.9&lt;br /&gt;brightness: 49.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 46.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 46.4&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 46.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.6&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.2&lt;br /&gt;brightness: 49.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.3&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.9&lt;br /&gt;brightness: 48.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 48.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 45.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 45.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 48.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.7&lt;br /&gt;brightness: 49.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  36.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  37.0&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  34.1&lt;br /&gt;brightness: 49.3&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.7&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  32.1&lt;br /&gt;brightness: 49.9&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  33.6&lt;br /&gt;brightness: 49.8&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  41.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  41.5&lt;br /&gt;brightness: 49.5&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 49.0&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.6&lt;br /&gt;brightness: 46.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.6&lt;br /&gt;brightness: 46.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.7&lt;br /&gt;brightness: 46.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.5&lt;br /&gt;brightness: 46.2&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.6&lt;br /&gt;brightness: 46.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.5&lt;br /&gt;brightness: 46.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.7&lt;br /&gt;brightness: 46.7&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  29.5&lt;br /&gt;brightness: 46.1&lt;br /&gt;instrument: 1550&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: 1550&#34;],&#34;type&#34;:&#34;scatter&#34;,&#34;mode&#34;:&#34;markers&#34;,&#34;marker&#34;:{&#34;autocolorscale&#34;:false,&#34;color&#34;:&#34;rgba(248,118,109,1)&#34;,&#34;opacity&#34;:1,&#34;size&#34;:7.55905511811024,&#34;symbol&#34;:&#34;circle&#34;,&#34;line&#34;:{&#34;width&#34;:1.88976377952756,&#34;color&#34;:&#34;rgba(248,118,109,1)&#34;}},&#34;hoveron&#34;:&#34;points&#34;,&#34;name&#34;:&#34;1550&#34;,&#34;legendgroup&#34;:&#34;1550&#34;,&#34;showlegend&#34;:true,&#34;xaxis&#34;:&#34;x&#34;,&#34;yaxis&#34;:&#34;y&#34;,&#34;hoverinfo&#34;:&#34;text&#34;,&#34;frame&#34;:null},{&#34;x&#34;:[33.4,33.4,29.9,29.9,29.9,29.9,29.8,29.8,29.8,29.8,29.8,31,31,31,31,29.5,29.6,32.5,30.2,29.9,29.8,29.8,29.8,29.8,29.8,29.8,30.2,29.8,33.7,31,31,31,31,31,31,31,31,31,30.1,30.1,30.1,30.1,30.1,30.1,30.1,30.6,30.6,30.6,31,31,31,30.6,31,30.6,30.6,30.6,30.6,30.6,30.6,30.6,31,31,31,30.6,30.6,29.8,30.1,30.1,30.1,30.1,30.1,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,27,27,27,27,27,27,27,27,27,27,27,27,30.3,30.3,30.3,30.3,30.3,30.2,30.2,30.2,29.9,29.9,29.9,29.9,30.9,30.9,30.9,30.9,30.9,33.1,33.1,30.8,30.8,30.8,30.8,30.8,30.8,30.8,30.8,30.8,30.8,30.8,30.8,30.3,30.3,30.3,30.8,30.3,30.8,30.3,30.8,30.3,30.3,30.8,30.8,32.2,32.2,30.1,30.1,30.1,30.1,30.1,30.1,33.1,30.9,30.9,30.9,30.9,29.8,31.5,30.5,29.8,30.9,30.9,30.9,30.9,30.9,30.9,30.9,30.9,30.9,30.9,31,31,31,31,31,31,31,31,31,30.2,30.2,30.2,30.2,30.2,30.2,30.2,31.1,31.1,31.1,31.1,31.1,29.8,30.9,29.8,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.4,29.9,29.9,29.4,29.9,29.9,29.9,33.9,39,32.2,32.2,32.2,32.2,32.2,32.2,32.2,30.1,30.1,30.1,30.1,30.1,30.1,30.2,30.2,30.2,30.2,30.2,30.2,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6,30.6],&#34;y&#34;:[51.5,51.5,50.9,50.9,50.9,50.9,50.8,50.8,50.8,50.8,50.8,50.3,50.3,50.3,50.3,50.9,51.3,50.5,51,50.9,50.8,50.6,50.8,50.8,50.8,50.6,51,50.8,48.1,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,50.7,50.7,50.7,50.9,50.9,50.9,50.7,50.9,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.9,50.9,50.9,50.7,50.7,50.2,50.6,50.6,50.9,50.6,50.6,50.9,50.9,50.9,50.8,51.1,50.9,50.9,51.1,51.1,50.8,50.9,51.1,51.1,50.8,50.8,50.9,50.8,50.8,50.8,50.9,51.1,51,51,51,51,51,51,51,51,51,51,51,51,50.7,50.7,50.7,50.7,50.7,51,51,51,50.8,50.8,50.8,50.8,50.7,50.7,50.7,50.7,50.7,49.6,49.6,50.8,50.8,50.8,50.8,50.8,50.8,50.8,50.8,50.8,50.8,50.8,50.8,50.9,50.9,50.9,51,50.9,51,50.9,51,50.9,50.9,51,51,50.1,50.1,50.6,50.6,50.6,50.6,50.6,50.6,49.6,50.5,50.5,50.5,50.5,50.1,50.6,50.6,50.1,50.5,50.5,50.5,50.5,50.5,50.5,50.5,50.5,50.5,50.5,50.9,50.9,50.9,50.9,50.9,50.9,50.9,50.9,50.9,51,51,51,51,51,51,51,50.6,50.6,50.6,50.6,50.6,50.6,50.5,50.6,50.9,50.9,50.9,50.9,50.9,50.9,50.9,50.9,50.9,50.9,50.2,51.5,51.5,50.2,51.5,51.5,51.5,51.1,47.8,50.1,50.1,50.1,50.1,50.1,50.1,50.1,50.6,50.6,50.6,50.6,50.6,50.6,51,51,51,51,51,51,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7,50.7],&#34;text&#34;:[&#34;contrast:  33.4&lt;br /&gt;brightness: 51.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  33.4&lt;br /&gt;brightness: 51.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.3&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.3&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.3&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.3&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.5&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.6&lt;br /&gt;brightness: 51.3&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.5&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  33.7&lt;br /&gt;brightness: 48.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.2&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 51.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 51.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 51.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 51.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 51.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 51.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  27.0&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  33.1&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  33.1&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 50.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.3&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.8&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  33.1&lt;br /&gt;brightness: 49.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.5&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.0&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  31.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.9&lt;br /&gt;brightness: 50.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.8&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.9&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.2&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 51.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 51.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.4&lt;br /&gt;brightness: 50.2&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 51.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 51.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  29.9&lt;br /&gt;brightness: 51.5&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  33.9&lt;br /&gt;brightness: 51.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  39.0&lt;br /&gt;brightness: 47.8&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  32.2&lt;br /&gt;brightness: 50.1&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.1&lt;br /&gt;brightness: 50.6&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.2&lt;br /&gt;brightness: 51.0&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;,&#34;contrast:  30.6&lt;br /&gt;brightness: 50.7&lt;br /&gt;instrument: Merlin&#34;],&#34;type&#34;:&#34;scatter&#34;,&#34;mode&#34;:&#34;markers&#34;,&#34;marker&#34;:{&#34;autocolorscale&#34;:false,&#34;color&#34;:&#34;rgba(0,191,196,1)&#34;,&#34;opacity&#34;:1,&#34;size&#34;:7.55905511811024,&#34;symbol&#34;:&#34;circle&#34;,&#34;line&#34;:{&#34;width&#34;:1.88976377952756,&#34;color&#34;:&#34;rgba(0,191,196,1)&#34;}},&#34;hoveron&#34;:&#34;points&#34;,&#34;name&#34;:&#34;Merlin&#34;,&#34;legendgroup&#34;:&#34;Merlin&#34;,&#34;showlegend&#34;:true,&#34;xaxis&#34;:&#34;x&#34;,&#34;yaxis&#34;:&#34;y&#34;,&#34;hoverinfo&#34;:&#34;text&#34;,&#34;frame&#34;:null}],&#34;layout&#34;:{&#34;margin&#34;:{&#34;t&#34;:26.2283105022831,&#34;r&#34;:7.30593607305936,&#34;b&#34;:40.1826484018265,&#34;l&#34;:37.2602739726027},&#34;plot_bgcolor&#34;:&#34;rgba(235,235,235,1)&#34;,&#34;paper_bgcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187},&#34;xaxis&#34;:{&#34;domain&#34;:[0,1],&#34;automargin&#34;:true,&#34;type&#34;:&#34;linear&#34;,&#34;autorange&#34;:false,&#34;range&#34;:[22.405,103.695],&#34;tickmode&#34;:&#34;array&#34;,&#34;ticktext&#34;:[&#34;40&#34;,&#34;60&#34;,&#34;80&#34;,&#34;100&#34;],&#34;tickvals&#34;:[40,60,80,100],&#34;categoryorder&#34;:&#34;array&#34;,&#34;categoryarray&#34;:[&#34;40&#34;,&#34;60&#34;,&#34;80&#34;,&#34;100&#34;],&#34;nticks&#34;:null,&#34;ticks&#34;:&#34;outside&#34;,&#34;tickcolor&#34;:&#34;rgba(51,51,51,1)&#34;,&#34;ticklen&#34;:3.65296803652968,&#34;tickwidth&#34;:0.66417600664176,&#34;showticklabels&#34;:true,&#34;tickfont&#34;:{&#34;color&#34;:&#34;rgba(77,77,77,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895},&#34;tickangle&#34;:-0,&#34;showline&#34;:false,&#34;linecolor&#34;:null,&#34;linewidth&#34;:0,&#34;showgrid&#34;:true,&#34;gridcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;gridwidth&#34;:0.66417600664176,&#34;zeroline&#34;:false,&#34;anchor&#34;:&#34;y&#34;,&#34;title&#34;:{&#34;text&#34;:&#34;Contrast/%&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187}},&#34;hoverformat&#34;:&#34;.2f&#34;},&#34;yaxis&#34;:{&#34;domain&#34;:[0,1],&#34;automargin&#34;:true,&#34;type&#34;:&#34;linear&#34;,&#34;autorange&#34;:false,&#34;range&#34;:[-3.75,78.75],&#34;tickmode&#34;:&#34;array&#34;,&#34;ticktext&#34;:[&#34;0&#34;,&#34;20&#34;,&#34;40&#34;,&#34;60&#34;],&#34;tickvals&#34;:[0,20,40,60],&#34;categoryorder&#34;:&#34;array&#34;,&#34;categoryarray&#34;:[&#34;0&#34;,&#34;20&#34;,&#34;40&#34;,&#34;60&#34;],&#34;nticks&#34;:null,&#34;ticks&#34;:&#34;outside&#34;,&#34;tickcolor&#34;:&#34;rgba(51,51,51,1)&#34;,&#34;ticklen&#34;:3.65296803652968,&#34;tickwidth&#34;:0.66417600664176,&#34;showticklabels&#34;:true,&#34;tickfont&#34;:{&#34;color&#34;:&#34;rgba(77,77,77,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895},&#34;tickangle&#34;:-0,&#34;showline&#34;:false,&#34;linecolor&#34;:null,&#34;linewidth&#34;:0,&#34;showgrid&#34;:true,&#34;gridcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;gridwidth&#34;:0.66417600664176,&#34;zeroline&#34;:false,&#34;anchor&#34;:&#34;x&#34;,&#34;title&#34;:{&#34;text&#34;:&#34;Brightness/%&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187}},&#34;hoverformat&#34;:&#34;.2f&#34;},&#34;shapes&#34;:[{&#34;type&#34;:&#34;rect&#34;,&#34;fillcolor&#34;:null,&#34;line&#34;:{&#34;color&#34;:null,&#34;width&#34;:0,&#34;linetype&#34;:[]},&#34;yref&#34;:&#34;paper&#34;,&#34;xref&#34;:&#34;paper&#34;,&#34;x0&#34;:0,&#34;x1&#34;:1,&#34;y0&#34;:0,&#34;y1&#34;:1}],&#34;showlegend&#34;:true,&#34;legend&#34;:{&#34;bgcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;bordercolor&#34;:&#34;transparent&#34;,&#34;borderwidth&#34;:1.88976377952756,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895},&#34;title&#34;:{&#34;text&#34;:&#34;instrument&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187}}},&#34;hovermode&#34;:&#34;closest&#34;,&#34;barmode&#34;:&#34;relative&#34;},&#34;config&#34;:{&#34;doubleClick&#34;:&#34;reset&#34;,&#34;modeBarButtonsToAdd&#34;:[&#34;hoverclosest&#34;,&#34;hovercompare&#34;],&#34;showSendToCloud&#34;:false},&#34;source&#34;:&#34;A&#34;,&#34;attrs&#34;:{&#34;5af99d5e450&#34;:{&#34;x&#34;:{},&#34;y&#34;:{},&#34;colour&#34;:{},&#34;type&#34;:&#34;scatter&#34;}},&#34;cur_data&#34;:&#34;5af99d5e450&#34;,&#34;visdat&#34;:{&#34;5af99d5e450&#34;:[&#34;function (y) &#34;,&#34;x&#34;]},&#34;highlight&#34;:{&#34;on&#34;:&#34;plotly_click&#34;,&#34;persistent&#34;:false,&#34;dynamic&#34;:false,&#34;selectize&#34;:false,&#34;opacityDim&#34;:0.2,&#34;selected&#34;:{&#34;opacity&#34;:1},&#34;debounce&#34;:0},&#34;shinyEvents&#34;:[&#34;plotly_hover&#34;,&#34;plotly_click&#34;,&#34;plotly_selected&#34;,&#34;plotly_relayout&#34;,&#34;plotly_brushed&#34;,&#34;plotly_brushing&#34;,&#34;plotly_clickannotation&#34;,&#34;plotly_doubleclick&#34;,&#34;plotly_deselect&#34;,&#34;plotly_afterplot&#34;,&#34;plotly_sunburstclick&#34;],&#34;base_url&#34;:&#34;https://plot.ly&#34;},&#34;evals&#34;:[],&#34;jsHooks&#34;:[]}&lt;/script&gt;
&lt;p&gt;&lt;a href=&#34;https://plot.ly/~chepec/55&#34;&gt;Brightness vs. contrast&lt;/a&gt; using two different microscopes. The same data plotted against date shows that there is also an apparent improvement in operator proficiency over time.&lt;/p&gt;
&lt;p&gt;Other than clear evidence of the hypothesized “sweet spot”, there is also an observable difference in B and C value clustering between the different microscopes. Although that could also be attributed to improved operator proficiency.&lt;/p&gt;
&lt;p&gt;Here is another plot that highlights operator behaviour when recording micrographs. Number of micrographs consistently drop off with increasing magnification, with a few notable peaks at 35k and 90k.&lt;/p&gt;
&lt;div id=&#34;htmlwidget-2&#34; style=&#34;width:100%;height:480px;&#34; class=&#34;plotly html-widget&#34;&gt;&lt;/div&gt;
&lt;script type=&#34;application/json&#34; data-for=&#34;htmlwidget-2&#34;&gt;{&#34;x&#34;:{&#34;data&#34;:[{&#34;orientation&#34;:&#34;v&#34;,&#34;width&#34;:[5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000,5000],&#34;base&#34;:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],&#34;x&#34;:[0,5000,10000,15000,20000,25000,30000,35000,40000,45000,50000,55000,60000,65000,70000,75000,80000,85000,90000,95000,100000,105000,110000,115000,120000,125000,130000,135000,140000,145000,150000,155000,160000,165000,170000,175000,180000,185000,190000,195000,200000,205000,210000,215000,220000,225000,230000,235000,240000,245000,250000,255000,260000,265000,270000,275000,280000,285000,290000,295000,300000,305000,310000,315000,320000,325000,330000,335000,340000,345000,350000,355000,360000,365000,370000,375000,380000,385000,390000,395000,400000,405000,410000,415000,420000,425000,430000,435000,440000,445000,450000,455000,460000,465000,470000,475000,480000,485000,490000,495000,500000,505000,510000,515000,520000,525000,530000,535000,540000,545000,550000,555000,560000,565000],&#34;y&#34;:[63,151,141,26,42,53,83,29,46,18,39,9,19,15,26,8,11,5,31,12,20,2,2,0,2,2,7,7,9,4,3,4,3,0,3,2,1,1,0,4,14,3,1,0,2,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],&#34;text&#34;:[&#34;count:  63&lt;br /&gt;magnification:      0&lt;br /&gt;stat: bin&#34;,&#34;count: 151&lt;br /&gt;magnification:   5000&lt;br /&gt;stat: bin&#34;,&#34;count: 141&lt;br /&gt;magnification:  10000&lt;br /&gt;stat: bin&#34;,&#34;count:  26&lt;br /&gt;magnification:  15000&lt;br /&gt;stat: bin&#34;,&#34;count:  42&lt;br /&gt;magnification:  20000&lt;br /&gt;stat: bin&#34;,&#34;count:  53&lt;br /&gt;magnification:  25000&lt;br /&gt;stat: bin&#34;,&#34;count:  83&lt;br /&gt;magnification:  30000&lt;br /&gt;stat: bin&#34;,&#34;count:  29&lt;br /&gt;magnification:  35000&lt;br /&gt;stat: bin&#34;,&#34;count:  46&lt;br /&gt;magnification:  40000&lt;br /&gt;stat: bin&#34;,&#34;count:  18&lt;br /&gt;magnification:  45000&lt;br /&gt;stat: bin&#34;,&#34;count:  39&lt;br /&gt;magnification:  50000&lt;br /&gt;stat: bin&#34;,&#34;count:   9&lt;br /&gt;magnification:  55000&lt;br /&gt;stat: bin&#34;,&#34;count:  19&lt;br /&gt;magnification:  60000&lt;br /&gt;stat: bin&#34;,&#34;count:  15&lt;br /&gt;magnification:  65000&lt;br /&gt;stat: bin&#34;,&#34;count:  26&lt;br /&gt;magnification:  70000&lt;br /&gt;stat: bin&#34;,&#34;count:   8&lt;br /&gt;magnification:  75000&lt;br /&gt;stat: bin&#34;,&#34;count:  11&lt;br /&gt;magnification:  80000&lt;br /&gt;stat: bin&#34;,&#34;count:   5&lt;br /&gt;magnification:  85000&lt;br /&gt;stat: bin&#34;,&#34;count:  31&lt;br /&gt;magnification:  90000&lt;br /&gt;stat: bin&#34;,&#34;count:  12&lt;br /&gt;magnification:  95000&lt;br /&gt;stat: bin&#34;,&#34;count:  20&lt;br /&gt;magnification: 100000&lt;br /&gt;stat: bin&#34;,&#34;count:   2&lt;br /&gt;magnification: 105000&lt;br /&gt;stat: bin&#34;,&#34;count:   2&lt;br /&gt;magnification: 110000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 115000&lt;br /&gt;stat: bin&#34;,&#34;count:   2&lt;br /&gt;magnification: 120000&lt;br /&gt;stat: bin&#34;,&#34;count:   2&lt;br /&gt;magnification: 125000&lt;br /&gt;stat: bin&#34;,&#34;count:   7&lt;br /&gt;magnification: 130000&lt;br /&gt;stat: bin&#34;,&#34;count:   7&lt;br /&gt;magnification: 135000&lt;br /&gt;stat: bin&#34;,&#34;count:   9&lt;br /&gt;magnification: 140000&lt;br /&gt;stat: bin&#34;,&#34;count:   4&lt;br /&gt;magnification: 145000&lt;br /&gt;stat: bin&#34;,&#34;count:   3&lt;br /&gt;magnification: 150000&lt;br /&gt;stat: bin&#34;,&#34;count:   4&lt;br /&gt;magnification: 155000&lt;br /&gt;stat: bin&#34;,&#34;count:   3&lt;br /&gt;magnification: 160000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 165000&lt;br /&gt;stat: bin&#34;,&#34;count:   3&lt;br /&gt;magnification: 170000&lt;br /&gt;stat: bin&#34;,&#34;count:   2&lt;br /&gt;magnification: 175000&lt;br /&gt;stat: bin&#34;,&#34;count:   1&lt;br /&gt;magnification: 180000&lt;br /&gt;stat: bin&#34;,&#34;count:   1&lt;br /&gt;magnification: 185000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 190000&lt;br /&gt;stat: bin&#34;,&#34;count:   4&lt;br /&gt;magnification: 195000&lt;br /&gt;stat: bin&#34;,&#34;count:  14&lt;br /&gt;magnification: 200000&lt;br /&gt;stat: bin&#34;,&#34;count:   3&lt;br /&gt;magnification: 205000&lt;br /&gt;stat: bin&#34;,&#34;count:   1&lt;br /&gt;magnification: 210000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 215000&lt;br /&gt;stat: bin&#34;,&#34;count:   2&lt;br /&gt;magnification: 220000&lt;br /&gt;stat: bin&#34;,&#34;count:   1&lt;br /&gt;magnification: 225000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 230000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 235000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 240000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 245000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 250000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 255000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 260000&lt;br /&gt;stat: bin&#34;,&#34;count:   1&lt;br /&gt;magnification: 265000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 270000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 275000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 280000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 285000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 290000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 295000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 300000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 305000&lt;br /&gt;stat: bin&#34;,&#34;count:   1&lt;br /&gt;magnification: 310000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 315000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 320000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 325000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 330000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 335000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 340000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 345000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 350000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 355000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 360000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 365000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 370000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 375000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 380000&lt;br /&gt;stat: bin&#34;,&#34;count:   1&lt;br /&gt;magnification: 385000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 390000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 395000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 400000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 405000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 410000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 415000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 420000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 425000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 430000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 435000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 440000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 445000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 450000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 455000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 460000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 465000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 470000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 475000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 480000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 485000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 490000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 495000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 500000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 505000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 510000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 515000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 520000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 525000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 530000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 535000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 540000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 545000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 550000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 555000&lt;br /&gt;stat: bin&#34;,&#34;count:   0&lt;br /&gt;magnification: 560000&lt;br /&gt;stat: bin&#34;,&#34;count:   1&lt;br /&gt;magnification: 565000&lt;br /&gt;stat: bin&#34;],&#34;type&#34;:&#34;bar&#34;,&#34;textposition&#34;:&#34;none&#34;,&#34;marker&#34;:{&#34;autocolorscale&#34;:false,&#34;color&#34;:&#34;rgba(89,89,89,1)&#34;,&#34;line&#34;:{&#34;width&#34;:1.88976377952756,&#34;color&#34;:&#34;transparent&#34;}},&#34;showlegend&#34;:false,&#34;xaxis&#34;:&#34;x&#34;,&#34;yaxis&#34;:&#34;y&#34;,&#34;hoverinfo&#34;:&#34;text&#34;,&#34;frame&#34;:null}],&#34;layout&#34;:{&#34;margin&#34;:{&#34;t&#34;:26.2283105022831,&#34;r&#34;:7.30593607305936,&#34;b&#34;:40.1826484018265,&#34;l&#34;:43.1050228310502},&#34;plot_bgcolor&#34;:&#34;rgba(235,235,235,1)&#34;,&#34;paper_bgcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187},&#34;xaxis&#34;:{&#34;domain&#34;:[0,1],&#34;automargin&#34;:true,&#34;type&#34;:&#34;linear&#34;,&#34;autorange&#34;:false,&#34;range&#34;:[-31000,596000],&#34;tickmode&#34;:&#34;array&#34;,&#34;ticktext&#34;:[&#34;0e+00&#34;,&#34;2e+05&#34;,&#34;4e+05&#34;],&#34;tickvals&#34;:[-3.63797880709171e-12,200000,400000],&#34;categoryorder&#34;:&#34;array&#34;,&#34;categoryarray&#34;:[&#34;0e+00&#34;,&#34;2e+05&#34;,&#34;4e+05&#34;],&#34;nticks&#34;:null,&#34;ticks&#34;:&#34;outside&#34;,&#34;tickcolor&#34;:&#34;rgba(51,51,51,1)&#34;,&#34;ticklen&#34;:3.65296803652968,&#34;tickwidth&#34;:0.66417600664176,&#34;showticklabels&#34;:true,&#34;tickfont&#34;:{&#34;color&#34;:&#34;rgba(77,77,77,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895},&#34;tickangle&#34;:-0,&#34;showline&#34;:false,&#34;linecolor&#34;:null,&#34;linewidth&#34;:0,&#34;showgrid&#34;:true,&#34;gridcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;gridwidth&#34;:0.66417600664176,&#34;zeroline&#34;:false,&#34;anchor&#34;:&#34;y&#34;,&#34;title&#34;:{&#34;text&#34;:&#34;Magnification&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187}},&#34;hoverformat&#34;:&#34;.2f&#34;},&#34;yaxis&#34;:{&#34;domain&#34;:[0,1],&#34;automargin&#34;:true,&#34;type&#34;:&#34;linear&#34;,&#34;autorange&#34;:false,&#34;range&#34;:[-7.55,158.55],&#34;tickmode&#34;:&#34;array&#34;,&#34;ticktext&#34;:[&#34;0&#34;,&#34;50&#34;,&#34;100&#34;,&#34;150&#34;],&#34;tickvals&#34;:[8.88178419700125e-16,50,100,150],&#34;categoryorder&#34;:&#34;array&#34;,&#34;categoryarray&#34;:[&#34;0&#34;,&#34;50&#34;,&#34;100&#34;,&#34;150&#34;],&#34;nticks&#34;:null,&#34;ticks&#34;:&#34;outside&#34;,&#34;tickcolor&#34;:&#34;rgba(51,51,51,1)&#34;,&#34;ticklen&#34;:3.65296803652968,&#34;tickwidth&#34;:0.66417600664176,&#34;showticklabels&#34;:true,&#34;tickfont&#34;:{&#34;color&#34;:&#34;rgba(77,77,77,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895},&#34;tickangle&#34;:-0,&#34;showline&#34;:false,&#34;linecolor&#34;:null,&#34;linewidth&#34;:0,&#34;showgrid&#34;:true,&#34;gridcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;gridwidth&#34;:0.66417600664176,&#34;zeroline&#34;:false,&#34;anchor&#34;:&#34;x&#34;,&#34;title&#34;:{&#34;text&#34;:&#34;Count&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187}},&#34;hoverformat&#34;:&#34;.2f&#34;},&#34;shapes&#34;:[{&#34;type&#34;:&#34;rect&#34;,&#34;fillcolor&#34;:null,&#34;line&#34;:{&#34;color&#34;:null,&#34;width&#34;:0,&#34;linetype&#34;:[]},&#34;yref&#34;:&#34;paper&#34;,&#34;xref&#34;:&#34;paper&#34;,&#34;x0&#34;:0,&#34;x1&#34;:1,&#34;y0&#34;:0,&#34;y1&#34;:1}],&#34;showlegend&#34;:false,&#34;legend&#34;:{&#34;bgcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;bordercolor&#34;:&#34;transparent&#34;,&#34;borderwidth&#34;:1.88976377952756,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895}},&#34;hovermode&#34;:&#34;closest&#34;,&#34;barmode&#34;:&#34;relative&#34;},&#34;config&#34;:{&#34;doubleClick&#34;:&#34;reset&#34;,&#34;modeBarButtonsToAdd&#34;:[&#34;hoverclosest&#34;,&#34;hovercompare&#34;],&#34;showSendToCloud&#34;:false},&#34;source&#34;:&#34;A&#34;,&#34;attrs&#34;:{&#34;5af97a31afed&#34;:{&#34;x&#34;:{},&#34;stat&#34;:{},&#34;type&#34;:&#34;bar&#34;}},&#34;cur_data&#34;:&#34;5af97a31afed&#34;,&#34;visdat&#34;:{&#34;5af97a31afed&#34;:[&#34;function (y) &#34;,&#34;x&#34;]},&#34;highlight&#34;:{&#34;on&#34;:&#34;plotly_click&#34;,&#34;persistent&#34;:false,&#34;dynamic&#34;:false,&#34;selectize&#34;:false,&#34;opacityDim&#34;:0.2,&#34;selected&#34;:{&#34;opacity&#34;:1},&#34;debounce&#34;:0},&#34;shinyEvents&#34;:[&#34;plotly_hover&#34;,&#34;plotly_click&#34;,&#34;plotly_selected&#34;,&#34;plotly_relayout&#34;,&#34;plotly_brushed&#34;,&#34;plotly_brushing&#34;,&#34;plotly_clickannotation&#34;,&#34;plotly_doubleclick&#34;,&#34;plotly_deselect&#34;,&#34;plotly_afterplot&#34;,&#34;plotly_sunburstclick&#34;],&#34;base_url&#34;:&#34;https://plot.ly&#34;},&#34;evals&#34;:[],&#34;jsHooks&#34;:[]}&lt;/script&gt;
&lt;p&gt;&lt;a href=&#34;https://plot.ly/~chepec/82&#34;&gt;Magnification&lt;/a&gt; of all recorded SEM micrographs. Low magnifications quite reasonable dominate the total number of recorded micrographs (every sample is explored at low magnification before zooming in).&lt;/p&gt;
&lt;p&gt;And finally, a plot that explores the instruments more than the operator.&lt;/p&gt;
&lt;div id=&#34;htmlwidget-3&#34; style=&#34;width:100%;height:480px;&#34; class=&#34;plotly html-widget&#34;&gt;&lt;/div&gt;
&lt;script type=&#34;application/json&#34; data-for=&#34;htmlwidget-3&#34;&gt;{&#34;x&#34;:{&#34;data&#34;:[{&#34;x&#34;:[3480,99980,12890,45840,2000,25000,20000,1000,10000,1000,25000,30000,5000,25000,5000,20000,10000,30000,2000,100650,91660,10010,50150,24990,172830,15020,64410,64410,21620,10550,52480,20170,142400,4800,24830,83800,6430,4420,10050,10050,22370,6100,10050,1860,47800,4420,47300,70170,15380,44870,10020,20740,4740,19900,72990,4500,32090,6020,32090,5200,15020,57450,20070,20070,45630,9900,29180,15060,97870,80320,29910,4700,50410,69580,2500,69900,30420,4260,11100,69170,69900,10210,4090,10430,69900,29490,69170,69900,4090,176330,30000,30000,30000,30000,30000,11950,92680,35610,6400,92680,20100,6980,85560,24320,17250,17070,30260,30260,9900,10050,30260,10120,11830,11830,11830,20490,4680,92520,20070,20280,30040,28810,474,28810,4250,10120,59870,10010,10010,29830,30140,10010,60500,59870,4670,3670,3660,3760,3440,3760,3760,40050,3670,27580,3760,3440,3760,30930,25030,25830,5210,50770,25070,5000,140850,5000,25070,65260,65260,45310,10140,10030,4060,4020,63200,35670,3530,5000,5000,48700,2490,50240,25030,25030,25030,100330,266620,161870,50520,151080,56260,56260,151080,52310,19690,7670,10150,75530,5010,7670,5010,32920,10050,25090,154760,72450,25090,2010,7670,7670,5270,46780,48760,25910,67450,162380,69990,50150,24990,10010,100650,199910,30000,10030,10000,63200,50110,10000,4050,10110,30110,30420,30110,50630,50110,4130,10000,4010,27420,31060,7760,51470,25650,88380,2140,7520,10000,60430,60070,30240,10050,60070,30110,10050,30420,30240,10050,60430,29910,45340,65240,15060,80400,50000,40000,36860,10000,36860,1000,36860,1440,66750,26190,8000,80150,4690,20960,39940,107230,80150,100750,4690,38950,7940,100330,2480,5000,3700,3700,3700,25030,25030,50240,5000,10000,25000,5000,2000,1000,20000,30000,30990,49990,135640,4040,10400,147410,30040,10190,4170,49990,15030,15030,5310,15030,35620,15030,1550,1410,1410,80490,5070,49890,4960,183000,50410,19980,80490,19980,30220,30220,30850,40850,40850,39600,10570,10570,40010,40010,30850,30220,22220,51580,138490,130120,130120,130120,130120,130120,137060,25120,30220,40010,40010,40010,30220,9930,8320,19320,26950,8320,124270,124270,8320,30850,8320,30220,40850,40850,18930,124,61420,25910,8340,2980,25030,50240,4950,28290,10000,46110,37460,1670,1690,10000,39040,38630,1670,28000,10210,10000,69900,69900,39040,24810,5060,24810,50150,10430,4010,30130,30130,50150,4090,4010,10220,50150,10110,30130,3590,1240,2450,509,6850,5000,25070,5000,129610,25070,10000,30100,29790,10000,31820,5000,13990,28090,10350,4020,5000,36080,133720,20160,59430,20160,36080,78,3290,907,78,907,99290,195180,308400,49990,2000,2000,4220,2000,2000,70620,1490,24970,5950,1560,29800,11210,1560,13240,2000,50110,1480,201830,8260,83040,26190,18620,5000,15060,97870,29910,96850,70900,40020,146830,24810,146830,5000,24810,41300,41300,41300,18940,15220,30230,5110,79490,98890,5000,10780,5100,148020,1010,2520,45350,45350,10040,20150,5000,5000,2520,1010,20150,10040,91020,6060,58430,26510,69010,58430,3060,3060,30160,10120,30160,10020,10020,2420,8260,19570,49890,55360,4110,66750,88390,99100,11400,33260,22170,44040,15000,3030,15000,59380,200000,5000,60000,10000,30000,181100,50410,29970,49890,80490,15730,5070,29970,5530,4020,10050,4150,50350,10050,30250,50350,30250,30250,10050,4070,50870,99090,10000,21140,59800,76410,7680,26190,84960,10080,4720,10080,20020,4570,20020,142880,25430,218830,68290,383650,10150,27530,27530,10440,15800,1260,7280,37910,37910,65780,23500,65780,26900,10340,61800,65780,10550,4100,23500,29730,7940,69730,153670,12540,69730,70460,28510,7860,10960,6180,70460,6180,10080,4000,7860,4020,4020,4020,90110,25080,10470,63370,8090,26460,102080,40050,10050,20160,4750,20170,5010,5000,5000,24810,25070,137950,10140,25590,2650,2650,2180,8070,25590,8070,10140,2180,4630,20070,10000,137380,10000,45160,140260,4730,20070,15410,15250,15250,50630,170900,170900,20490,31710,10000,37450,35920,39440,39040,13950,30000,30000,25910,8000,68860,1240,5060,55280,40050,2890,10050,110950,20170,9750],&#34;y&#34;:[2.01410032151962,0.555578072772955,1.4451369687133,0.894316062684438,2.25503116334555,1.15775888604686,1.25454807710897,2.55666426212257,1.55557807277295,2.55666426212257,1.15775888604686,1.07845681805329,1.85660806843694,1.15775888604686,1.85660806843694,1.25454807710897,1.55557807277295,1.07845681805329,2.25503116334555,0.552789850192782,0.593396842300207,1.55521540512607,0.855276803830092,1.15775888604686,0.317854489331469,1.37876117531637,0.746634198937579,0.746634198937579,1.22089224921952,1.53237213356788,0.835563751669097,1.25090769970086,0.402089350572097,1.87413377882797,1.16076856186113,0.632356046239073,1.74780009086437,1.910197369966,1.55351894014897,1.55351894014897,1.20574554094266,1.77041013151391,1.55351894014897,2.28533222764388,0.876160084825628,1.910197369966,0.880699289218702,0.709439574132411,1.36865871239223,0.903578293663054,1.55473137667597,1.23854788768133,1.87984105598656,1.25671774597749,0.692318044259279,1.90254677931399,1.04921802267018,1.77626521826811,1.04921802267018,1.83954089296897,1.37876117531637,0.796296740051792,1.25309558584903,1.25309558584903,0.896305707466081,1.56014583984905,1.09061070782841,1.37767043933432,0.564902672529205,0.650695979760611,1.07954300740291,1.88360466092229,0.85302861471299,0.713070325855639,2.15806079393661,0.711132072306842,1.07224989761351,1.9258790893015,1.51041094801018,0.715585551893196,0.711132072306842,1.54654266347813,1.94384062640126,1.53744128340795,0.711132072306842,1.08600370561838,0.715585551893196,0.711132072306842,1.9437911989293,0.309204179670408,1.07845681805329,1.07845681805329,1.07845681805329,1.07845681805329,1.07845681805329,1.47813342810052,0.588607804742687,1.00389116623691,1.74904026870346,0.588607804742687,1.2523675144599,1.71155416825017,0.6232492903979,1.16967443405881,1.31868926994775,1.32325210017169,1.07481644064517,1.07481644064517,1.56014583984905,1.55339751012388,1.07481644064517,1.55047295710656,1.48273070007994,1.48273070007994,1.48273070007994,1.24402958903002,1.88536122003151,0.589279221235967,1.25309558584903,1.24846371755103,1.07809415040641,1.09586645347854,2.88012732221662,1.09586645347854,1.92685670894969,1.55047295710656,0.778295991088834,1.55497345833324,1.55509444857832,1.08098704691089,1.07627625540422,1.55497345833324,0.773786444981194,0.778295991088834,1.8862086241675,1.99091575450608,1.99166900737995,1.98032158600876,2.01911629044707,1.98032158600876,1.98032158600876,0.952937667750981,1.99091575450608,1.11494441571258,1.98032158600876,2.01911629044707,1.98032158600876,1.06520612805431,1.15715443990628,1.14363923527454,1.83884909073726,0.84997191232885,1.15624619039734,1.85636632365925,0.40671045860979,1.85636632365925,1.15624619039734,0.740915076481283,0.740915076481283,0.899382705533265,1.54961623951909,1.55412558151301,1.94718856552609,1.95158034490339,0.754883228252168,1.00302947055362,2.00817418400643,1.85715150268749,1.85715150268749,0.868056361823042,2.15986784709257,0.85448822504443,1.15715443990628,1.15715443990628,1.15715443990628,0.554125581513013,0.129689892199301,0.346352974450639,0.852113860849761,0.376394442037266,0.805296916157985,0.805296916157985,0.376394442037266,0.83695673705955,1.26150077319828,1.67098760301003,1.54900326202579,0.677424437701247,1.8560639533331,1.67098760301003,1.8555191556678,1.03822263836872,1.55351894014897,1.15594301797184,0.365862215402555,0.695481676490197,1.15594301797184,2.25285303097989,1.67080228426094,1.67080228426094,1.83352958175864,0.885530833188092,0.867467487859051,1.14207646107328,0.726564216162245,0.344981413927258,0.214048679411941,0.855276803830092,1.15775888604686,1.55521540512607,0.552789850192782,0.25478968739721,1.07845681805329,1.55412558151301,1.55557807277295,0.754806855354423,0.855640280890145,1.55557807277295,1.94851076883766,1.55108386518578,1.07700432679335,1.07224989761351,1.07700432679335,0.851135995011574,0.855640280890145,1.93931953107824,1.55557807277295,1.95293766775098,1.11760269169008,1.06333335895175,1.66586230020316,0.844042042041017,1.14643813528577,0.60916737430202,2.22608411597582,1.67942789661212,1.55545721720465,0.774297938499277,0.776846408695299,1.07481644064517,1.55351894014897,0.776919002842046,1.07700432679335,1.55351894014897,1.07224989761351,1.07481644064517,1.55351894014897,0.774297938499277,1.07954300740291,0.899054067998171,0.741072772373321,1.37767043933432,0.650307523131936,0.856608068436936,0.953469743253401,0.988960070390338,1.55557807277295,0.988960070390338,2.55666426212257,0.988960070390338,2.39724458101039,0.731105051215921,1.13767053723676,1.65224634100332,0.651665603922936,1.88445549607049,1.23426412437879,0.954194251815862,0.525174427835271,0.651665603922936,0.552303109338354,1.88434214764706,0.965013450272248,1.65590641818022,0.554125581513013,2.16196661636407,1.85691006030079,1.98788960999775,1.98788960999775,1.98788960999775,1.15715443990628,1.15715443990628,0.85448822504443,1.85715150268749,1.55557807277295,1.15775888604686,1.85660806843694,2.25503116334555,2.55666426212257,1.25454807710897,1.07845681805329,1.06445798922692,0.856668483611535,0.423081958297231,1.94953637337614,1.53844805171022,0.387033701282363,1.07809415040641,1.54752857645978,1.93591013643051,0.856668483611535,1.37876117531637,1.37876117531637,1.8302035989257,1.37876117531637,1.00389116623691,1.37876117531637,2.36623612371829,2.40688067004912,2.40688067004912,0.649821463224565,1.85095239979349,0.857573704147496,1.86021818466876,0.293141483450931,0.85302861471299,1.25503116334555,0.649821463224565,1.25503116334555,1.07518185461869,1.07518185461869,1.06632592536204,0.944383957640844,0.944383957640844,0.957894487212898,1.53135116458306,1.53135116458306,0.953373050726696,0.953373050726696,1.06632592536204,1.07518185461869,1.20897851727625,0.843108141999607,0.414137362184477,0.441223674242612,0.441223674242612,0.441223674242612,0.441223674242612,0.441223674242612,0.418632687354065,1.15563963375978,1.07518185461869,0.953373050726696,0.953421399681035,0.953373050726696,1.07518185461869,1.55846856252379,1.63518204865627,1.26951294421792,1.12483014941386,1.63518204865627,0.461198288622493,0.461198288622493,1.63518204865627,1.06632592536204,1.63518204865627,1.07518185461869,0.944383957640844,0.944383957640844,1.27852496473702,3.46805179145424,0.767230098110718,1.14207646107328,1.63427569462594,2.08134730780413,1.15715443990628,0.85448822504443,1.3647385550554,1.10380372095596,1.55557807277295,0.891704676239183,0.98204497907149,2.33243845991561,2.32756326018728,1.55557807277295,0.964070970557955,0.968623020956989,2.33243845991561,1.10856502373283,1.54654266347813,1.55557807277295,0.711132072306842,0.711132072306842,0.964070970557955,1.16076856186113,1.85174741913326,1.16076856186113,0.85533740446954,1.53718922624364,1.95259873452977,1.07664044367034,1.07664044367034,0.85533740446954,1.94384062640126,1.95259873452977,1.54629583512144,0.85533740446954,1.55071742346928,1.07664044367034,2.00043407747932,2.46044678388072,2.16702179579026,2.84960365808245,1.7199938263676,1.85624540079005,1.15624619039734,1.85636632365925,0.442949869577862,1.15624619039734,1.55557807277295,1.07700432679335,1.08134730780413,1.55557807277295,1.05307844348342,1.85660806843694,1.40976410426635,1.10720996964787,1.54057971650445,1.95158034490339,1.85660806843694,0.998302940098541,0.429429264381788,1.25115134317535,0.781539968605942,1.25115134317535,0.998302940098541,3.66247450375031,2.03782475058834,2.59824319165362,3.66247450375031,2.59824319165362,0.558588583108199,0.265053788504015,0.0663259253620378,0.856668483611535,2.25575478664304,2.25575478664304,1.93028664724552,2.25575478664304,2.25575478664304,0.706632450873295,2.38183679999834,1.15806079393661,1.78153996860594,2.36455099535397,1.08134730780413,1.50582803385484,2.36455099535397,1.43376983392487,2.25575478664304,0.855640280890145,2.38703370128236,0.250663919463244,1.6387886671574,0.636287252098513,1.13735411137073,1.28555730900777,1.85636632365925,1.37767043933432,0.564902672529205,1.07954300740291,0.569490954348783,0.704922291223402,0.953276336667304,0.388811413473524,1.16076856186113,0.388811413473524,1.85636632365925,1.16076856186113,0.939619078956698,0.939619078956698,0.939619078956698,1.27829620809127,1.3732798932775,1.07518185461869,1.84732583078542,0.655234507034294,0.560384922972015,1.85660806843694,1.5232260419657,1.84825071467704,0.38524868240322,2.55266821611219,2.15442397311465,0.898999270889789,0.898999270889789,1.55376169839,1.25115134317535,1.85636632365925,1.85636632365925,2.15442397311465,2.55266821611219,1.25115134317535,1.55388302664387,0.596487133736544,1.77334754198082,0.788945727023748,1.13225968953104,0.716670975560136,0.788945727023748,2.0696680969116,2.0696680969116,1.07627625540422,1.55035067230162,1.07627625540422,1.55473137667597,1.55473137667597,2.17201880942456,1.63868888669012,1.26387267686522,0.857573704147496,0.812378511154194,1.9415114326344,0.731105051215921,0.60916737430202,0.559547555580434,1.4987239707479,1.03342375548695,1.20978301484851,0.911690158753861,1.37948681371727,2.07371835034612,1.37948681371727,0.781898919351149,0.254548077108974,1.85691006030079,0.777426822389311,1.55557807277295,1.07845681805329,0.29754166781816,0.85302861471299,1.07881918309885,0.857573704147496,0.649821463224565,1.35869609957381,1.35430056234536,1.07881918309885,1.81338080673386,1.95090008936639,1.55351894014897,1.93756803860038,0.853576543619642,1.55351894014897,1.07481644064517,0.853576543619642,1.07481644064517,1.07481644064517,1.55351894014897,1.94650139056959,0.849050690569512,0.559547555580434,1.55557807277295,1.23044892137827,0.77887447200274,0.67237497874608,1.67052415778208,1.13767053723676,0.626340367375042,1.55205953418788,1.88189797357301,1.55205953418788,1.25406445291434,1.89536728877336,1.25406445291434,0.400537989391946,1.15014216184856,0.215373152783422,0.721150843749684,-0.028399479769941,1.54937115233318,1.11594317693906,1.11594317693906,1.53681086599154,1.35698140099313,2.45484486000851,1.69372694892365,0.976762523267461,0.976762523267461,0.737431200514582,1.18440748541232,0.737431200514582,1.12580645813953,1.54120469068326,0.764549719064467,0.737431200514582,1.5321171162488,1.94304911100841,1.18440748541232,1.08242630086077,1.65600232068296,0.712144414214886,0.369030221809153,1.45727618606133,0.712144414214886,0.707655323531187,1.10037054511756,1.66048601578497,1.51587384371168,1.76440032295639,0.707655323531187,1.76440032295639,1.55205953418788,1.95395288323192,1.66039109840247,1.95158034490339,1.95158034490339,1.95158034490339,0.600755149639618,1.15624619039734,1.53554727917667,0.753659647285999,1.64787176530623,1.13289976994448,0.546542663478131,0.952986065197055,1.55351894014897,1.25115134317535,1.87869410039611,1.25090769970086,1.8560639533331,1.85636632365925,1.85624540079005,1.16076856186113,1.15624619039734,0.415807727635543,1.54949371321501,1.1476763242411,2.13225968953104,2.13193929521042,2.21774707326279,1.64884770837289,1.1476763242411,1.64884770837289,1.54949371321501,2.21774707326279,1.88974977526404,1.25309558584903,1.55557807277295,0.41763773965223,1.55557807277295,0.90080393481037,0.408579125408667,1.8806992892187,1.25309558584903,1.36791473879375,1.37235958252432,1.37235958252432,0.851135995011574,0.322839272686321,0.322839272686321,1.24402958903002,1.0542299098634,1.55557807277295,0.982135494803769,1,0.959566046637928,0.964070970557955,1.4111144185509,1.07845681805329,1.07845681805329,1.14207646107328,1.65243974758942,0.71758729685546,2.46149852678302,1.85174741913326,0.81298016603948,0.952937667750981,2.09516935143176,1.55351894014897,0.510410948010177,1.25090769970086,1.56643749219507],&#34;text&#34;:[&#34;magnification:   3480&lt;br /&gt;log10(nm.per.pixel):  2.01410032&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  99980&lt;br /&gt;log10(nm.per.pixel):  0.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  12890&lt;br /&gt;log10(nm.per.pixel):  1.44513697&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  45840&lt;br /&gt;log10(nm.per.pixel):  0.89431606&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2000&lt;br /&gt;log10(nm.per.pixel):  2.25503116&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25000&lt;br /&gt;log10(nm.per.pixel):  1.15775889&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20000&lt;br /&gt;log10(nm.per.pixel):  1.25454808&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1000&lt;br /&gt;log10(nm.per.pixel):  2.55666426&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1000&lt;br /&gt;log10(nm.per.pixel):  2.55666426&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25000&lt;br /&gt;log10(nm.per.pixel):  1.15775889&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85660807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25000&lt;br /&gt;log10(nm.per.pixel):  1.15775889&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85660807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20000&lt;br /&gt;log10(nm.per.pixel):  1.25454808&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2000&lt;br /&gt;log10(nm.per.pixel):  2.25503116&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 100650&lt;br /&gt;log10(nm.per.pixel):  0.55278985&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  91660&lt;br /&gt;log10(nm.per.pixel):  0.59339684&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10010&lt;br /&gt;log10(nm.per.pixel):  1.55521541&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50150&lt;br /&gt;log10(nm.per.pixel):  0.85527680&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24990&lt;br /&gt;log10(nm.per.pixel):  1.15775889&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 172830&lt;br /&gt;log10(nm.per.pixel):  0.31785449&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15020&lt;br /&gt;log10(nm.per.pixel):  1.37876118&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  64410&lt;br /&gt;log10(nm.per.pixel):  0.74663420&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  64410&lt;br /&gt;log10(nm.per.pixel):  0.74663420&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  21620&lt;br /&gt;log10(nm.per.pixel):  1.22089225&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10550&lt;br /&gt;log10(nm.per.pixel):  1.53237213&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  52480&lt;br /&gt;log10(nm.per.pixel):  0.83556375&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20170&lt;br /&gt;log10(nm.per.pixel):  1.25090770&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 142400&lt;br /&gt;log10(nm.per.pixel):  0.40208935&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4800&lt;br /&gt;log10(nm.per.pixel):  1.87413378&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24830&lt;br /&gt;log10(nm.per.pixel):  1.16076856&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  83800&lt;br /&gt;log10(nm.per.pixel):  0.63235605&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6430&lt;br /&gt;log10(nm.per.pixel):  1.74780009&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4420&lt;br /&gt;log10(nm.per.pixel):  1.91019737&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  22370&lt;br /&gt;log10(nm.per.pixel):  1.20574554&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6100&lt;br /&gt;log10(nm.per.pixel):  1.77041013&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1860&lt;br /&gt;log10(nm.per.pixel):  2.28533223&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  47800&lt;br /&gt;log10(nm.per.pixel):  0.87616008&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4420&lt;br /&gt;log10(nm.per.pixel):  1.91019737&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  47300&lt;br /&gt;log10(nm.per.pixel):  0.88069929&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  70170&lt;br /&gt;log10(nm.per.pixel):  0.70943957&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15380&lt;br /&gt;log10(nm.per.pixel):  1.36865871&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  44870&lt;br /&gt;log10(nm.per.pixel):  0.90357829&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10020&lt;br /&gt;log10(nm.per.pixel):  1.55473138&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20740&lt;br /&gt;log10(nm.per.pixel):  1.23854789&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4740&lt;br /&gt;log10(nm.per.pixel):  1.87984106&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  19900&lt;br /&gt;log10(nm.per.pixel):  1.25671775&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  72990&lt;br /&gt;log10(nm.per.pixel):  0.69231804&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4500&lt;br /&gt;log10(nm.per.pixel):  1.90254678&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  32090&lt;br /&gt;log10(nm.per.pixel):  1.04921802&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6020&lt;br /&gt;log10(nm.per.pixel):  1.77626522&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  32090&lt;br /&gt;log10(nm.per.pixel):  1.04921802&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5200&lt;br /&gt;log10(nm.per.pixel):  1.83954089&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15020&lt;br /&gt;log10(nm.per.pixel):  1.37876118&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  57450&lt;br /&gt;log10(nm.per.pixel):  0.79629674&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20070&lt;br /&gt;log10(nm.per.pixel):  1.25309559&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20070&lt;br /&gt;log10(nm.per.pixel):  1.25309559&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  45630&lt;br /&gt;log10(nm.per.pixel):  0.89630571&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   9900&lt;br /&gt;log10(nm.per.pixel):  1.56014584&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29180&lt;br /&gt;log10(nm.per.pixel):  1.09061071&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15060&lt;br /&gt;log10(nm.per.pixel):  1.37767044&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  97870&lt;br /&gt;log10(nm.per.pixel):  0.56490267&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  80320&lt;br /&gt;log10(nm.per.pixel):  0.65069598&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29910&lt;br /&gt;log10(nm.per.pixel):  1.07954301&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4700&lt;br /&gt;log10(nm.per.pixel):  1.88360466&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50410&lt;br /&gt;log10(nm.per.pixel):  0.85302861&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69580&lt;br /&gt;log10(nm.per.pixel):  0.71307033&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2500&lt;br /&gt;log10(nm.per.pixel):  2.15806079&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69900&lt;br /&gt;log10(nm.per.pixel):  0.71113207&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30420&lt;br /&gt;log10(nm.per.pixel):  1.07224990&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4260&lt;br /&gt;log10(nm.per.pixel):  1.92587909&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  11100&lt;br /&gt;log10(nm.per.pixel):  1.51041095&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69170&lt;br /&gt;log10(nm.per.pixel):  0.71558555&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69900&lt;br /&gt;log10(nm.per.pixel):  0.71113207&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10210&lt;br /&gt;log10(nm.per.pixel):  1.54654266&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4090&lt;br /&gt;log10(nm.per.pixel):  1.94384063&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10430&lt;br /&gt;log10(nm.per.pixel):  1.53744128&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69900&lt;br /&gt;log10(nm.per.pixel):  0.71113207&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29490&lt;br /&gt;log10(nm.per.pixel):  1.08600371&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69170&lt;br /&gt;log10(nm.per.pixel):  0.71558555&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69900&lt;br /&gt;log10(nm.per.pixel):  0.71113207&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4090&lt;br /&gt;log10(nm.per.pixel):  1.94379120&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 176330&lt;br /&gt;log10(nm.per.pixel):  0.30920418&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  11950&lt;br /&gt;log10(nm.per.pixel):  1.47813343&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  92680&lt;br /&gt;log10(nm.per.pixel):  0.58860780&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  35610&lt;br /&gt;log10(nm.per.pixel):  1.00389117&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6400&lt;br /&gt;log10(nm.per.pixel):  1.74904027&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  92680&lt;br /&gt;log10(nm.per.pixel):  0.58860780&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20100&lt;br /&gt;log10(nm.per.pixel):  1.25236751&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6980&lt;br /&gt;log10(nm.per.pixel):  1.71155417&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  85560&lt;br /&gt;log10(nm.per.pixel):  0.62324929&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24320&lt;br /&gt;log10(nm.per.pixel):  1.16967443&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  17250&lt;br /&gt;log10(nm.per.pixel):  1.31868927&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  17070&lt;br /&gt;log10(nm.per.pixel):  1.32325210&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30260&lt;br /&gt;log10(nm.per.pixel):  1.07481644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30260&lt;br /&gt;log10(nm.per.pixel):  1.07481644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   9900&lt;br /&gt;log10(nm.per.pixel):  1.56014584&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55339751&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30260&lt;br /&gt;log10(nm.per.pixel):  1.07481644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10120&lt;br /&gt;log10(nm.per.pixel):  1.55047296&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  11830&lt;br /&gt;log10(nm.per.pixel):  1.48273070&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  11830&lt;br /&gt;log10(nm.per.pixel):  1.48273070&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  11830&lt;br /&gt;log10(nm.per.pixel):  1.48273070&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20490&lt;br /&gt;log10(nm.per.pixel):  1.24402959&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4680&lt;br /&gt;log10(nm.per.pixel):  1.88536122&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  92520&lt;br /&gt;log10(nm.per.pixel):  0.58927922&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20070&lt;br /&gt;log10(nm.per.pixel):  1.25309559&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20280&lt;br /&gt;log10(nm.per.pixel):  1.24846372&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30040&lt;br /&gt;log10(nm.per.pixel):  1.07809415&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  28810&lt;br /&gt;log10(nm.per.pixel):  1.09586645&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:    474&lt;br /&gt;log10(nm.per.pixel):  2.88012732&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  28810&lt;br /&gt;log10(nm.per.pixel):  1.09586645&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4250&lt;br /&gt;log10(nm.per.pixel):  1.92685671&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10120&lt;br /&gt;log10(nm.per.pixel):  1.55047296&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  59870&lt;br /&gt;log10(nm.per.pixel):  0.77829599&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10010&lt;br /&gt;log10(nm.per.pixel):  1.55497346&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10010&lt;br /&gt;log10(nm.per.pixel):  1.55509445&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29830&lt;br /&gt;log10(nm.per.pixel):  1.08098705&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30140&lt;br /&gt;log10(nm.per.pixel):  1.07627626&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10010&lt;br /&gt;log10(nm.per.pixel):  1.55497346&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  60500&lt;br /&gt;log10(nm.per.pixel):  0.77378644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  59870&lt;br /&gt;log10(nm.per.pixel):  0.77829599&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4670&lt;br /&gt;log10(nm.per.pixel):  1.88620862&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3670&lt;br /&gt;log10(nm.per.pixel):  1.99091575&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3660&lt;br /&gt;log10(nm.per.pixel):  1.99166901&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3760&lt;br /&gt;log10(nm.per.pixel):  1.98032159&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3440&lt;br /&gt;log10(nm.per.pixel):  2.01911629&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3760&lt;br /&gt;log10(nm.per.pixel):  1.98032159&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3760&lt;br /&gt;log10(nm.per.pixel):  1.98032159&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40050&lt;br /&gt;log10(nm.per.pixel):  0.95293767&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3670&lt;br /&gt;log10(nm.per.pixel):  1.99091575&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  27580&lt;br /&gt;log10(nm.per.pixel):  1.11494442&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3760&lt;br /&gt;log10(nm.per.pixel):  1.98032159&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3440&lt;br /&gt;log10(nm.per.pixel):  2.01911629&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3760&lt;br /&gt;log10(nm.per.pixel):  1.98032159&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30930&lt;br /&gt;log10(nm.per.pixel):  1.06520613&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25030&lt;br /&gt;log10(nm.per.pixel):  1.15715444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25830&lt;br /&gt;log10(nm.per.pixel):  1.14363924&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5210&lt;br /&gt;log10(nm.per.pixel):  1.83884909&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50770&lt;br /&gt;log10(nm.per.pixel):  0.84997191&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25070&lt;br /&gt;log10(nm.per.pixel):  1.15624619&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85636632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 140850&lt;br /&gt;log10(nm.per.pixel):  0.40671046&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85636632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25070&lt;br /&gt;log10(nm.per.pixel):  1.15624619&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  65260&lt;br /&gt;log10(nm.per.pixel):  0.74091508&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  65260&lt;br /&gt;log10(nm.per.pixel):  0.74091508&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  45310&lt;br /&gt;log10(nm.per.pixel):  0.89938271&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10140&lt;br /&gt;log10(nm.per.pixel):  1.54961624&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10030&lt;br /&gt;log10(nm.per.pixel):  1.55412558&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4060&lt;br /&gt;log10(nm.per.pixel):  1.94718857&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4020&lt;br /&gt;log10(nm.per.pixel):  1.95158034&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  63200&lt;br /&gt;log10(nm.per.pixel):  0.75488323&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  35670&lt;br /&gt;log10(nm.per.pixel):  1.00302947&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3530&lt;br /&gt;log10(nm.per.pixel):  2.00817418&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85715150&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85715150&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  48700&lt;br /&gt;log10(nm.per.pixel):  0.86805636&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2490&lt;br /&gt;log10(nm.per.pixel):  2.15986785&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50240&lt;br /&gt;log10(nm.per.pixel):  0.85448823&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25030&lt;br /&gt;log10(nm.per.pixel):  1.15715444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25030&lt;br /&gt;log10(nm.per.pixel):  1.15715444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25030&lt;br /&gt;log10(nm.per.pixel):  1.15715444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 100330&lt;br /&gt;log10(nm.per.pixel):  0.55412558&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 266620&lt;br /&gt;log10(nm.per.pixel):  0.12968989&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 161870&lt;br /&gt;log10(nm.per.pixel):  0.34635297&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50520&lt;br /&gt;log10(nm.per.pixel):  0.85211386&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 151080&lt;br /&gt;log10(nm.per.pixel):  0.37639444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  56260&lt;br /&gt;log10(nm.per.pixel):  0.80529692&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  56260&lt;br /&gt;log10(nm.per.pixel):  0.80529692&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 151080&lt;br /&gt;log10(nm.per.pixel):  0.37639444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  52310&lt;br /&gt;log10(nm.per.pixel):  0.83695674&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  19690&lt;br /&gt;log10(nm.per.pixel):  1.26150077&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7670&lt;br /&gt;log10(nm.per.pixel):  1.67098760&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10150&lt;br /&gt;log10(nm.per.pixel):  1.54900326&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  75530&lt;br /&gt;log10(nm.per.pixel):  0.67742444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5010&lt;br /&gt;log10(nm.per.pixel):  1.85606395&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7670&lt;br /&gt;log10(nm.per.pixel):  1.67098760&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5010&lt;br /&gt;log10(nm.per.pixel):  1.85551916&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  32920&lt;br /&gt;log10(nm.per.pixel):  1.03822264&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25090&lt;br /&gt;log10(nm.per.pixel):  1.15594302&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 154760&lt;br /&gt;log10(nm.per.pixel):  0.36586222&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  72450&lt;br /&gt;log10(nm.per.pixel):  0.69548168&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25090&lt;br /&gt;log10(nm.per.pixel):  1.15594302&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2010&lt;br /&gt;log10(nm.per.pixel):  2.25285303&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7670&lt;br /&gt;log10(nm.per.pixel):  1.67080228&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7670&lt;br /&gt;log10(nm.per.pixel):  1.67080228&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5270&lt;br /&gt;log10(nm.per.pixel):  1.83352958&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  46780&lt;br /&gt;log10(nm.per.pixel):  0.88553083&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  48760&lt;br /&gt;log10(nm.per.pixel):  0.86746749&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25910&lt;br /&gt;log10(nm.per.pixel):  1.14207646&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  67450&lt;br /&gt;log10(nm.per.pixel):  0.72656422&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 162380&lt;br /&gt;log10(nm.per.pixel):  0.34498141&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69990&lt;br /&gt;log10(nm.per.pixel):  0.21404868&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50150&lt;br /&gt;log10(nm.per.pixel):  0.85527680&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24990&lt;br /&gt;log10(nm.per.pixel):  1.15775889&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10010&lt;br /&gt;log10(nm.per.pixel):  1.55521541&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 100650&lt;br /&gt;log10(nm.per.pixel):  0.55278985&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 199910&lt;br /&gt;log10(nm.per.pixel):  0.25478969&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10030&lt;br /&gt;log10(nm.per.pixel):  1.55412558&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  63200&lt;br /&gt;log10(nm.per.pixel):  0.75480686&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50110&lt;br /&gt;log10(nm.per.pixel):  0.85564028&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4050&lt;br /&gt;log10(nm.per.pixel):  1.94851077&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10110&lt;br /&gt;log10(nm.per.pixel):  1.55108387&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30110&lt;br /&gt;log10(nm.per.pixel):  1.07700433&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30420&lt;br /&gt;log10(nm.per.pixel):  1.07224990&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30110&lt;br /&gt;log10(nm.per.pixel):  1.07700433&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50630&lt;br /&gt;log10(nm.per.pixel):  0.85113600&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50110&lt;br /&gt;log10(nm.per.pixel):  0.85564028&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4130&lt;br /&gt;log10(nm.per.pixel):  1.93931953&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4010&lt;br /&gt;log10(nm.per.pixel):  1.95293767&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  27420&lt;br /&gt;log10(nm.per.pixel):  1.11760269&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  31060&lt;br /&gt;log10(nm.per.pixel):  1.06333336&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7760&lt;br /&gt;log10(nm.per.pixel):  1.66586230&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  51470&lt;br /&gt;log10(nm.per.pixel):  0.84404204&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25650&lt;br /&gt;log10(nm.per.pixel):  1.14643814&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  88380&lt;br /&gt;log10(nm.per.pixel):  0.60916737&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2140&lt;br /&gt;log10(nm.per.pixel):  2.22608412&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7520&lt;br /&gt;log10(nm.per.pixel):  1.67942790&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55545722&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  60430&lt;br /&gt;log10(nm.per.pixel):  0.77429794&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  60070&lt;br /&gt;log10(nm.per.pixel):  0.77684641&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30240&lt;br /&gt;log10(nm.per.pixel):  1.07481644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  60070&lt;br /&gt;log10(nm.per.pixel):  0.77691900&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30110&lt;br /&gt;log10(nm.per.pixel):  1.07700433&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30420&lt;br /&gt;log10(nm.per.pixel):  1.07224990&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30240&lt;br /&gt;log10(nm.per.pixel):  1.07481644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  60430&lt;br /&gt;log10(nm.per.pixel):  0.77429794&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29910&lt;br /&gt;log10(nm.per.pixel):  1.07954301&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  45340&lt;br /&gt;log10(nm.per.pixel):  0.89905407&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  65240&lt;br /&gt;log10(nm.per.pixel):  0.74107277&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15060&lt;br /&gt;log10(nm.per.pixel):  1.37767044&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  80400&lt;br /&gt;log10(nm.per.pixel):  0.65030752&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50000&lt;br /&gt;log10(nm.per.pixel):  0.85660807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40000&lt;br /&gt;log10(nm.per.pixel):  0.95346974&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  36860&lt;br /&gt;log10(nm.per.pixel):  0.98896007&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  36860&lt;br /&gt;log10(nm.per.pixel):  0.98896007&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1000&lt;br /&gt;log10(nm.per.pixel):  2.55666426&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  36860&lt;br /&gt;log10(nm.per.pixel):  0.98896007&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1440&lt;br /&gt;log10(nm.per.pixel):  2.39724458&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  66750&lt;br /&gt;log10(nm.per.pixel):  0.73110505&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  26190&lt;br /&gt;log10(nm.per.pixel):  1.13767054&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8000&lt;br /&gt;log10(nm.per.pixel):  1.65224634&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  80150&lt;br /&gt;log10(nm.per.pixel):  0.65166560&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4690&lt;br /&gt;log10(nm.per.pixel):  1.88445550&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20960&lt;br /&gt;log10(nm.per.pixel):  1.23426412&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  39940&lt;br /&gt;log10(nm.per.pixel):  0.95419425&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 107230&lt;br /&gt;log10(nm.per.pixel):  0.52517443&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  80150&lt;br /&gt;log10(nm.per.pixel):  0.65166560&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 100750&lt;br /&gt;log10(nm.per.pixel):  0.55230311&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4690&lt;br /&gt;log10(nm.per.pixel):  1.88434215&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  38950&lt;br /&gt;log10(nm.per.pixel):  0.96501345&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7940&lt;br /&gt;log10(nm.per.pixel):  1.65590642&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 100330&lt;br /&gt;log10(nm.per.pixel):  0.55412558&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2480&lt;br /&gt;log10(nm.per.pixel):  2.16196662&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85691006&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3700&lt;br /&gt;log10(nm.per.pixel):  1.98788961&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3700&lt;br /&gt;log10(nm.per.pixel):  1.98788961&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3700&lt;br /&gt;log10(nm.per.pixel):  1.98788961&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25030&lt;br /&gt;log10(nm.per.pixel):  1.15715444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25030&lt;br /&gt;log10(nm.per.pixel):  1.15715444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50240&lt;br /&gt;log10(nm.per.pixel):  0.85448823&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85715150&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25000&lt;br /&gt;log10(nm.per.pixel):  1.15775889&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85660807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2000&lt;br /&gt;log10(nm.per.pixel):  2.25503116&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1000&lt;br /&gt;log10(nm.per.pixel):  2.55666426&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20000&lt;br /&gt;log10(nm.per.pixel):  1.25454808&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30990&lt;br /&gt;log10(nm.per.pixel):  1.06445799&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  49990&lt;br /&gt;log10(nm.per.pixel):  0.85666848&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 135640&lt;br /&gt;log10(nm.per.pixel):  0.42308196&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4040&lt;br /&gt;log10(nm.per.pixel):  1.94953637&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10400&lt;br /&gt;log10(nm.per.pixel):  1.53844805&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 147410&lt;br /&gt;log10(nm.per.pixel):  0.38703370&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30040&lt;br /&gt;log10(nm.per.pixel):  1.07809415&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10190&lt;br /&gt;log10(nm.per.pixel):  1.54752858&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4170&lt;br /&gt;log10(nm.per.pixel):  1.93591014&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  49990&lt;br /&gt;log10(nm.per.pixel):  0.85666848&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15030&lt;br /&gt;log10(nm.per.pixel):  1.37876118&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15030&lt;br /&gt;log10(nm.per.pixel):  1.37876118&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5310&lt;br /&gt;log10(nm.per.pixel):  1.83020360&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15030&lt;br /&gt;log10(nm.per.pixel):  1.37876118&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  35620&lt;br /&gt;log10(nm.per.pixel):  1.00389117&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15030&lt;br /&gt;log10(nm.per.pixel):  1.37876118&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1550&lt;br /&gt;log10(nm.per.pixel):  2.36623612&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1410&lt;br /&gt;log10(nm.per.pixel):  2.40688067&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1410&lt;br /&gt;log10(nm.per.pixel):  2.40688067&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  80490&lt;br /&gt;log10(nm.per.pixel):  0.64982146&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5070&lt;br /&gt;log10(nm.per.pixel):  1.85095240&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  49890&lt;br /&gt;log10(nm.per.pixel):  0.85757370&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4960&lt;br /&gt;log10(nm.per.pixel):  1.86021818&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 183000&lt;br /&gt;log10(nm.per.pixel):  0.29314148&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50410&lt;br /&gt;log10(nm.per.pixel):  0.85302861&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  19980&lt;br /&gt;log10(nm.per.pixel):  1.25503116&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  80490&lt;br /&gt;log10(nm.per.pixel):  0.64982146&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  19980&lt;br /&gt;log10(nm.per.pixel):  1.25503116&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30220&lt;br /&gt;log10(nm.per.pixel):  1.07518185&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30220&lt;br /&gt;log10(nm.per.pixel):  1.07518185&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30850&lt;br /&gt;log10(nm.per.pixel):  1.06632593&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40850&lt;br /&gt;log10(nm.per.pixel):  0.94438396&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40850&lt;br /&gt;log10(nm.per.pixel):  0.94438396&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  39600&lt;br /&gt;log10(nm.per.pixel):  0.95789449&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10570&lt;br /&gt;log10(nm.per.pixel):  1.53135116&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10570&lt;br /&gt;log10(nm.per.pixel):  1.53135116&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40010&lt;br /&gt;log10(nm.per.pixel):  0.95337305&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40010&lt;br /&gt;log10(nm.per.pixel):  0.95337305&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30850&lt;br /&gt;log10(nm.per.pixel):  1.06632593&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30220&lt;br /&gt;log10(nm.per.pixel):  1.07518185&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  22220&lt;br /&gt;log10(nm.per.pixel):  1.20897852&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  51580&lt;br /&gt;log10(nm.per.pixel):  0.84310814&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 138490&lt;br /&gt;log10(nm.per.pixel):  0.41413736&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 130120&lt;br /&gt;log10(nm.per.pixel):  0.44122367&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 130120&lt;br /&gt;log10(nm.per.pixel):  0.44122367&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 130120&lt;br /&gt;log10(nm.per.pixel):  0.44122367&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 130120&lt;br /&gt;log10(nm.per.pixel):  0.44122367&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 130120&lt;br /&gt;log10(nm.per.pixel):  0.44122367&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 137060&lt;br /&gt;log10(nm.per.pixel):  0.41863269&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25120&lt;br /&gt;log10(nm.per.pixel):  1.15563963&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30220&lt;br /&gt;log10(nm.per.pixel):  1.07518185&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40010&lt;br /&gt;log10(nm.per.pixel):  0.95337305&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40010&lt;br /&gt;log10(nm.per.pixel):  0.95342140&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40010&lt;br /&gt;log10(nm.per.pixel):  0.95337305&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30220&lt;br /&gt;log10(nm.per.pixel):  1.07518185&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   9930&lt;br /&gt;log10(nm.per.pixel):  1.55846856&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8320&lt;br /&gt;log10(nm.per.pixel):  1.63518205&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  19320&lt;br /&gt;log10(nm.per.pixel):  1.26951294&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  26950&lt;br /&gt;log10(nm.per.pixel):  1.12483015&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8320&lt;br /&gt;log10(nm.per.pixel):  1.63518205&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 124270&lt;br /&gt;log10(nm.per.pixel):  0.46119829&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 124270&lt;br /&gt;log10(nm.per.pixel):  0.46119829&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8320&lt;br /&gt;log10(nm.per.pixel):  1.63518205&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30850&lt;br /&gt;log10(nm.per.pixel):  1.06632593&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8320&lt;br /&gt;log10(nm.per.pixel):  1.63518205&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30220&lt;br /&gt;log10(nm.per.pixel):  1.07518185&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40850&lt;br /&gt;log10(nm.per.pixel):  0.94438396&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40850&lt;br /&gt;log10(nm.per.pixel):  0.94438396&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  18930&lt;br /&gt;log10(nm.per.pixel):  1.27852496&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:    124&lt;br /&gt;log10(nm.per.pixel):  3.46805179&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  61420&lt;br /&gt;log10(nm.per.pixel):  0.76723010&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25910&lt;br /&gt;log10(nm.per.pixel):  1.14207646&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8340&lt;br /&gt;log10(nm.per.pixel):  1.63427569&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2980&lt;br /&gt;log10(nm.per.pixel):  2.08134731&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25030&lt;br /&gt;log10(nm.per.pixel):  1.15715444&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50240&lt;br /&gt;log10(nm.per.pixel):  0.85448823&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4950&lt;br /&gt;log10(nm.per.pixel):  1.36473856&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  28290&lt;br /&gt;log10(nm.per.pixel):  1.10380372&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  46110&lt;br /&gt;log10(nm.per.pixel):  0.89170468&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  37460&lt;br /&gt;log10(nm.per.pixel):  0.98204498&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1670&lt;br /&gt;log10(nm.per.pixel):  2.33243846&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1690&lt;br /&gt;log10(nm.per.pixel):  2.32756326&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  39040&lt;br /&gt;log10(nm.per.pixel):  0.96407097&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  38630&lt;br /&gt;log10(nm.per.pixel):  0.96862302&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1670&lt;br /&gt;log10(nm.per.pixel):  2.33243846&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  28000&lt;br /&gt;log10(nm.per.pixel):  1.10856502&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10210&lt;br /&gt;log10(nm.per.pixel):  1.54654266&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69900&lt;br /&gt;log10(nm.per.pixel):  0.71113207&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69900&lt;br /&gt;log10(nm.per.pixel):  0.71113207&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  39040&lt;br /&gt;log10(nm.per.pixel):  0.96407097&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24810&lt;br /&gt;log10(nm.per.pixel):  1.16076856&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5060&lt;br /&gt;log10(nm.per.pixel):  1.85174742&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24810&lt;br /&gt;log10(nm.per.pixel):  1.16076856&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50150&lt;br /&gt;log10(nm.per.pixel):  0.85533740&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10430&lt;br /&gt;log10(nm.per.pixel):  1.53718923&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4010&lt;br /&gt;log10(nm.per.pixel):  1.95259873&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30130&lt;br /&gt;log10(nm.per.pixel):  1.07664044&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30130&lt;br /&gt;log10(nm.per.pixel):  1.07664044&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50150&lt;br /&gt;log10(nm.per.pixel):  0.85533740&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4090&lt;br /&gt;log10(nm.per.pixel):  1.94384063&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4010&lt;br /&gt;log10(nm.per.pixel):  1.95259873&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10220&lt;br /&gt;log10(nm.per.pixel):  1.54629584&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50150&lt;br /&gt;log10(nm.per.pixel):  0.85533740&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10110&lt;br /&gt;log10(nm.per.pixel):  1.55071742&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30130&lt;br /&gt;log10(nm.per.pixel):  1.07664044&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3590&lt;br /&gt;log10(nm.per.pixel):  2.00043408&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1240&lt;br /&gt;log10(nm.per.pixel):  2.46044678&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2450&lt;br /&gt;log10(nm.per.pixel):  2.16702180&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:    509&lt;br /&gt;log10(nm.per.pixel):  2.84960366&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6850&lt;br /&gt;log10(nm.per.pixel):  1.71999383&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85624540&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25070&lt;br /&gt;log10(nm.per.pixel):  1.15624619&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85636632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 129610&lt;br /&gt;log10(nm.per.pixel):  0.44294987&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25070&lt;br /&gt;log10(nm.per.pixel):  1.15624619&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30100&lt;br /&gt;log10(nm.per.pixel):  1.07700433&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29790&lt;br /&gt;log10(nm.per.pixel):  1.08134731&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  31820&lt;br /&gt;log10(nm.per.pixel):  1.05307844&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85660807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  13990&lt;br /&gt;log10(nm.per.pixel):  1.40976410&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  28090&lt;br /&gt;log10(nm.per.pixel):  1.10720997&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10350&lt;br /&gt;log10(nm.per.pixel):  1.54057972&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4020&lt;br /&gt;log10(nm.per.pixel):  1.95158034&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85660807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  36080&lt;br /&gt;log10(nm.per.pixel):  0.99830294&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 133720&lt;br /&gt;log10(nm.per.pixel):  0.42942926&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20160&lt;br /&gt;log10(nm.per.pixel):  1.25115134&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  59430&lt;br /&gt;log10(nm.per.pixel):  0.78153997&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20160&lt;br /&gt;log10(nm.per.pixel):  1.25115134&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  36080&lt;br /&gt;log10(nm.per.pixel):  0.99830294&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:     78&lt;br /&gt;log10(nm.per.pixel):  3.66247450&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3290&lt;br /&gt;log10(nm.per.pixel):  2.03782475&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:    907&lt;br /&gt;log10(nm.per.pixel):  2.59824319&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:     78&lt;br /&gt;log10(nm.per.pixel):  3.66247450&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:    907&lt;br /&gt;log10(nm.per.pixel):  2.59824319&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  99290&lt;br /&gt;log10(nm.per.pixel):  0.55858858&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 195180&lt;br /&gt;log10(nm.per.pixel):  0.26505379&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 308400&lt;br /&gt;log10(nm.per.pixel):  0.06632593&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  49990&lt;br /&gt;log10(nm.per.pixel):  0.85666848&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2000&lt;br /&gt;log10(nm.per.pixel):  2.25575479&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2000&lt;br /&gt;log10(nm.per.pixel):  2.25575479&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4220&lt;br /&gt;log10(nm.per.pixel):  1.93028665&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2000&lt;br /&gt;log10(nm.per.pixel):  2.25575479&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2000&lt;br /&gt;log10(nm.per.pixel):  2.25575479&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  70620&lt;br /&gt;log10(nm.per.pixel):  0.70663245&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1490&lt;br /&gt;log10(nm.per.pixel):  2.38183680&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24970&lt;br /&gt;log10(nm.per.pixel):  1.15806079&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5950&lt;br /&gt;log10(nm.per.pixel):  1.78153997&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1560&lt;br /&gt;log10(nm.per.pixel):  2.36455100&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29800&lt;br /&gt;log10(nm.per.pixel):  1.08134731&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  11210&lt;br /&gt;log10(nm.per.pixel):  1.50582803&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1560&lt;br /&gt;log10(nm.per.pixel):  2.36455100&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  13240&lt;br /&gt;log10(nm.per.pixel):  1.43376983&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2000&lt;br /&gt;log10(nm.per.pixel):  2.25575479&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50110&lt;br /&gt;log10(nm.per.pixel):  0.85564028&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1480&lt;br /&gt;log10(nm.per.pixel):  2.38703370&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 201830&lt;br /&gt;log10(nm.per.pixel):  0.25066392&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8260&lt;br /&gt;log10(nm.per.pixel):  1.63878867&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  83040&lt;br /&gt;log10(nm.per.pixel):  0.63628725&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  26190&lt;br /&gt;log10(nm.per.pixel):  1.13735411&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  18620&lt;br /&gt;log10(nm.per.pixel):  1.28555731&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85636632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15060&lt;br /&gt;log10(nm.per.pixel):  1.37767044&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  97870&lt;br /&gt;log10(nm.per.pixel):  0.56490267&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29910&lt;br /&gt;log10(nm.per.pixel):  1.07954301&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  96850&lt;br /&gt;log10(nm.per.pixel):  0.56949095&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  70900&lt;br /&gt;log10(nm.per.pixel):  0.70492229&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40020&lt;br /&gt;log10(nm.per.pixel):  0.95327634&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 146830&lt;br /&gt;log10(nm.per.pixel):  0.38881141&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24810&lt;br /&gt;log10(nm.per.pixel):  1.16076856&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 146830&lt;br /&gt;log10(nm.per.pixel):  0.38881141&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85636632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24810&lt;br /&gt;log10(nm.per.pixel):  1.16076856&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  41300&lt;br /&gt;log10(nm.per.pixel):  0.93961908&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  41300&lt;br /&gt;log10(nm.per.pixel):  0.93961908&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  41300&lt;br /&gt;log10(nm.per.pixel):  0.93961908&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  18940&lt;br /&gt;log10(nm.per.pixel):  1.27829621&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15220&lt;br /&gt;log10(nm.per.pixel):  1.37327989&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30230&lt;br /&gt;log10(nm.per.pixel):  1.07518185&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5110&lt;br /&gt;log10(nm.per.pixel):  1.84732583&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  79490&lt;br /&gt;log10(nm.per.pixel):  0.65523451&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  98890&lt;br /&gt;log10(nm.per.pixel):  0.56038492&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85660807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10780&lt;br /&gt;log10(nm.per.pixel):  1.52322604&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5100&lt;br /&gt;log10(nm.per.pixel):  1.84825071&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 148020&lt;br /&gt;log10(nm.per.pixel):  0.38524868&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1010&lt;br /&gt;log10(nm.per.pixel):  2.55266822&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2520&lt;br /&gt;log10(nm.per.pixel):  2.15442397&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  45350&lt;br /&gt;log10(nm.per.pixel):  0.89899927&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  45350&lt;br /&gt;log10(nm.per.pixel):  0.89899927&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10040&lt;br /&gt;log10(nm.per.pixel):  1.55376170&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20150&lt;br /&gt;log10(nm.per.pixel):  1.25115134&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85636632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85636632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2520&lt;br /&gt;log10(nm.per.pixel):  2.15442397&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1010&lt;br /&gt;log10(nm.per.pixel):  2.55266822&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20150&lt;br /&gt;log10(nm.per.pixel):  1.25115134&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10040&lt;br /&gt;log10(nm.per.pixel):  1.55388303&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  91020&lt;br /&gt;log10(nm.per.pixel):  0.59648713&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6060&lt;br /&gt;log10(nm.per.pixel):  1.77334754&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  58430&lt;br /&gt;log10(nm.per.pixel):  0.78894573&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  26510&lt;br /&gt;log10(nm.per.pixel):  1.13225969&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69010&lt;br /&gt;log10(nm.per.pixel):  0.71667098&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  58430&lt;br /&gt;log10(nm.per.pixel):  0.78894573&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3060&lt;br /&gt;log10(nm.per.pixel):  2.06966810&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3060&lt;br /&gt;log10(nm.per.pixel):  2.06966810&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30160&lt;br /&gt;log10(nm.per.pixel):  1.07627626&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10120&lt;br /&gt;log10(nm.per.pixel):  1.55035067&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30160&lt;br /&gt;log10(nm.per.pixel):  1.07627626&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10020&lt;br /&gt;log10(nm.per.pixel):  1.55473138&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10020&lt;br /&gt;log10(nm.per.pixel):  1.55473138&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2420&lt;br /&gt;log10(nm.per.pixel):  2.17201881&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8260&lt;br /&gt;log10(nm.per.pixel):  1.63868889&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  19570&lt;br /&gt;log10(nm.per.pixel):  1.26387268&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  49890&lt;br /&gt;log10(nm.per.pixel):  0.85757370&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  55360&lt;br /&gt;log10(nm.per.pixel):  0.81237851&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4110&lt;br /&gt;log10(nm.per.pixel):  1.94151143&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  66750&lt;br /&gt;log10(nm.per.pixel):  0.73110505&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  88390&lt;br /&gt;log10(nm.per.pixel):  0.60916737&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  99100&lt;br /&gt;log10(nm.per.pixel):  0.55954756&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  11400&lt;br /&gt;log10(nm.per.pixel):  1.49872397&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  33260&lt;br /&gt;log10(nm.per.pixel):  1.03342376&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  22170&lt;br /&gt;log10(nm.per.pixel):  1.20978301&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  44040&lt;br /&gt;log10(nm.per.pixel):  0.91169016&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15000&lt;br /&gt;log10(nm.per.pixel):  1.37948681&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   3030&lt;br /&gt;log10(nm.per.pixel):  2.07371835&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15000&lt;br /&gt;log10(nm.per.pixel):  1.37948681&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  59380&lt;br /&gt;log10(nm.per.pixel):  0.78189892&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 200000&lt;br /&gt;log10(nm.per.pixel):  0.25454808&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85691006&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  60000&lt;br /&gt;log10(nm.per.pixel):  0.77742682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 181100&lt;br /&gt;log10(nm.per.pixel):  0.29754167&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50410&lt;br /&gt;log10(nm.per.pixel):  0.85302861&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29970&lt;br /&gt;log10(nm.per.pixel):  1.07881918&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  49890&lt;br /&gt;log10(nm.per.pixel):  0.85757370&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  80490&lt;br /&gt;log10(nm.per.pixel):  0.64982146&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15730&lt;br /&gt;log10(nm.per.pixel):  1.35869610&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5070&lt;br /&gt;log10(nm.per.pixel):  1.35430056&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29970&lt;br /&gt;log10(nm.per.pixel):  1.07881918&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5530&lt;br /&gt;log10(nm.per.pixel):  1.81338081&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4020&lt;br /&gt;log10(nm.per.pixel):  1.95090009&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4150&lt;br /&gt;log10(nm.per.pixel):  1.93756804&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50350&lt;br /&gt;log10(nm.per.pixel):  0.85357654&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30250&lt;br /&gt;log10(nm.per.pixel):  1.07481644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50350&lt;br /&gt;log10(nm.per.pixel):  0.85357654&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30250&lt;br /&gt;log10(nm.per.pixel):  1.07481644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30250&lt;br /&gt;log10(nm.per.pixel):  1.07481644&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4070&lt;br /&gt;log10(nm.per.pixel):  1.94650139&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50870&lt;br /&gt;log10(nm.per.pixel):  0.84905069&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  99090&lt;br /&gt;log10(nm.per.pixel):  0.55954756&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  21140&lt;br /&gt;log10(nm.per.pixel):  1.23044892&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  59800&lt;br /&gt;log10(nm.per.pixel):  0.77887447&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  76410&lt;br /&gt;log10(nm.per.pixel):  0.67237498&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7680&lt;br /&gt;log10(nm.per.pixel):  1.67052416&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  26190&lt;br /&gt;log10(nm.per.pixel):  1.13767054&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  84960&lt;br /&gt;log10(nm.per.pixel):  0.62634037&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10080&lt;br /&gt;log10(nm.per.pixel):  1.55205953&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4720&lt;br /&gt;log10(nm.per.pixel):  1.88189797&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10080&lt;br /&gt;log10(nm.per.pixel):  1.55205953&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20020&lt;br /&gt;log10(nm.per.pixel):  1.25406445&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4570&lt;br /&gt;log10(nm.per.pixel):  1.89536729&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20020&lt;br /&gt;log10(nm.per.pixel):  1.25406445&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 142880&lt;br /&gt;log10(nm.per.pixel):  0.40053799&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25430&lt;br /&gt;log10(nm.per.pixel):  1.15014216&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 218830&lt;br /&gt;log10(nm.per.pixel):  0.21537315&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  68290&lt;br /&gt;log10(nm.per.pixel):  0.72115084&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 383650&lt;br /&gt;log10(nm.per.pixel): -0.02839948&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10150&lt;br /&gt;log10(nm.per.pixel):  1.54937115&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  27530&lt;br /&gt;log10(nm.per.pixel):  1.11594318&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  27530&lt;br /&gt;log10(nm.per.pixel):  1.11594318&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10440&lt;br /&gt;log10(nm.per.pixel):  1.53681087&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15800&lt;br /&gt;log10(nm.per.pixel):  1.35698140&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1260&lt;br /&gt;log10(nm.per.pixel):  2.45484486&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7280&lt;br /&gt;log10(nm.per.pixel):  1.69372695&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  37910&lt;br /&gt;log10(nm.per.pixel):  0.97676252&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  37910&lt;br /&gt;log10(nm.per.pixel):  0.97676252&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  65780&lt;br /&gt;log10(nm.per.pixel):  0.73743120&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  23500&lt;br /&gt;log10(nm.per.pixel):  1.18440749&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  65780&lt;br /&gt;log10(nm.per.pixel):  0.73743120&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  26900&lt;br /&gt;log10(nm.per.pixel):  1.12580646&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10340&lt;br /&gt;log10(nm.per.pixel):  1.54120469&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  61800&lt;br /&gt;log10(nm.per.pixel):  0.76454972&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  65780&lt;br /&gt;log10(nm.per.pixel):  0.73743120&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10550&lt;br /&gt;log10(nm.per.pixel):  1.53211712&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4100&lt;br /&gt;log10(nm.per.pixel):  1.94304911&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  23500&lt;br /&gt;log10(nm.per.pixel):  1.18440749&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  29730&lt;br /&gt;log10(nm.per.pixel):  1.08242630&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7940&lt;br /&gt;log10(nm.per.pixel):  1.65600232&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69730&lt;br /&gt;log10(nm.per.pixel):  0.71214441&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 153670&lt;br /&gt;log10(nm.per.pixel):  0.36903022&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  12540&lt;br /&gt;log10(nm.per.pixel):  1.45727619&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  69730&lt;br /&gt;log10(nm.per.pixel):  0.71214441&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  70460&lt;br /&gt;log10(nm.per.pixel):  0.70765532&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  28510&lt;br /&gt;log10(nm.per.pixel):  1.10037055&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7860&lt;br /&gt;log10(nm.per.pixel):  1.66048602&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10960&lt;br /&gt;log10(nm.per.pixel):  1.51587384&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6180&lt;br /&gt;log10(nm.per.pixel):  1.76440032&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  70460&lt;br /&gt;log10(nm.per.pixel):  0.70765532&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   6180&lt;br /&gt;log10(nm.per.pixel):  1.76440032&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10080&lt;br /&gt;log10(nm.per.pixel):  1.55205953&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4000&lt;br /&gt;log10(nm.per.pixel):  1.95395288&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   7860&lt;br /&gt;log10(nm.per.pixel):  1.66039110&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4020&lt;br /&gt;log10(nm.per.pixel):  1.95158034&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4020&lt;br /&gt;log10(nm.per.pixel):  1.95158034&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4020&lt;br /&gt;log10(nm.per.pixel):  1.95158034&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  90110&lt;br /&gt;log10(nm.per.pixel):  0.60075515&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25080&lt;br /&gt;log10(nm.per.pixel):  1.15624619&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10470&lt;br /&gt;log10(nm.per.pixel):  1.53554728&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  63370&lt;br /&gt;log10(nm.per.pixel):  0.75365965&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8090&lt;br /&gt;log10(nm.per.pixel):  1.64787177&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  26460&lt;br /&gt;log10(nm.per.pixel):  1.13289977&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 102080&lt;br /&gt;log10(nm.per.pixel):  0.54654266&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40050&lt;br /&gt;log10(nm.per.pixel):  0.95298607&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20160&lt;br /&gt;log10(nm.per.pixel):  1.25115134&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4750&lt;br /&gt;log10(nm.per.pixel):  1.87869410&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20170&lt;br /&gt;log10(nm.per.pixel):  1.25090770&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5010&lt;br /&gt;log10(nm.per.pixel):  1.85606395&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85636632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.85624540&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  24810&lt;br /&gt;log10(nm.per.pixel):  1.16076856&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25070&lt;br /&gt;log10(nm.per.pixel):  1.15624619&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 137950&lt;br /&gt;log10(nm.per.pixel):  0.41580773&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10140&lt;br /&gt;log10(nm.per.pixel):  1.54949371&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25590&lt;br /&gt;log10(nm.per.pixel):  1.14767632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2650&lt;br /&gt;log10(nm.per.pixel):  2.13225969&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2650&lt;br /&gt;log10(nm.per.pixel):  2.13193930&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2180&lt;br /&gt;log10(nm.per.pixel):  2.21774707&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8070&lt;br /&gt;log10(nm.per.pixel):  1.64884771&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25590&lt;br /&gt;log10(nm.per.pixel):  1.14767632&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8070&lt;br /&gt;log10(nm.per.pixel):  1.64884771&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10140&lt;br /&gt;log10(nm.per.pixel):  1.54949371&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2180&lt;br /&gt;log10(nm.per.pixel):  2.21774707&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4630&lt;br /&gt;log10(nm.per.pixel):  1.88974978&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20070&lt;br /&gt;log10(nm.per.pixel):  1.25309559&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 137380&lt;br /&gt;log10(nm.per.pixel):  0.41763774&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  45160&lt;br /&gt;log10(nm.per.pixel):  0.90080393&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 140260&lt;br /&gt;log10(nm.per.pixel):  0.40857913&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   4730&lt;br /&gt;log10(nm.per.pixel):  1.88069929&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20070&lt;br /&gt;log10(nm.per.pixel):  1.25309559&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15410&lt;br /&gt;log10(nm.per.pixel):  1.36791474&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15250&lt;br /&gt;log10(nm.per.pixel):  1.37235958&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  15250&lt;br /&gt;log10(nm.per.pixel):  1.37235958&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  50630&lt;br /&gt;log10(nm.per.pixel):  0.85113600&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 170900&lt;br /&gt;log10(nm.per.pixel):  0.32283927&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 170900&lt;br /&gt;log10(nm.per.pixel):  0.32283927&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20490&lt;br /&gt;log10(nm.per.pixel):  1.24402959&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  31710&lt;br /&gt;log10(nm.per.pixel):  1.05422991&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10000&lt;br /&gt;log10(nm.per.pixel):  1.55557807&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  37450&lt;br /&gt;log10(nm.per.pixel):  0.98213549&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  35920&lt;br /&gt;log10(nm.per.pixel):  1.00000000&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  39440&lt;br /&gt;log10(nm.per.pixel):  0.95956605&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  39040&lt;br /&gt;log10(nm.per.pixel):  0.96407097&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  13950&lt;br /&gt;log10(nm.per.pixel):  1.41111442&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  30000&lt;br /&gt;log10(nm.per.pixel):  1.07845682&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  25910&lt;br /&gt;log10(nm.per.pixel):  1.14207646&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   8000&lt;br /&gt;log10(nm.per.pixel):  1.65243975&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  68860&lt;br /&gt;log10(nm.per.pixel):  0.71758730&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   1240&lt;br /&gt;log10(nm.per.pixel):  2.46149853&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   5060&lt;br /&gt;log10(nm.per.pixel):  1.85174742&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  55280&lt;br /&gt;log10(nm.per.pixel):  0.81298017&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  40050&lt;br /&gt;log10(nm.per.pixel):  0.95293767&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   2890&lt;br /&gt;log10(nm.per.pixel):  2.09516935&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  10050&lt;br /&gt;log10(nm.per.pixel):  1.55351894&lt;br /&gt;instrument: 1550&#34;,&#34;magnification: 110950&lt;br /&gt;log10(nm.per.pixel):  0.51041095&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:  20170&lt;br /&gt;log10(nm.per.pixel):  1.25090770&lt;br /&gt;instrument: 1550&#34;,&#34;magnification:   9750&lt;br /&gt;log10(nm.per.pixel):  1.56643749&lt;br /&gt;instrument: 1550&#34;],&#34;type&#34;:&#34;scatter&#34;,&#34;mode&#34;:&#34;markers&#34;,&#34;marker&#34;:{&#34;autocolorscale&#34;:false,&#34;color&#34;:&#34;rgba(248,118,109,1)&#34;,&#34;opacity&#34;:1,&#34;size&#34;:5.66929133858268,&#34;symbol&#34;:&#34;circle&#34;,&#34;line&#34;:{&#34;width&#34;:1.88976377952756,&#34;color&#34;:&#34;rgba(248,118,109,1)&#34;}},&#34;hoveron&#34;:&#34;points&#34;,&#34;name&#34;:&#34;1550&#34;,&#34;legendgroup&#34;:&#34;1550&#34;,&#34;showlegend&#34;:true,&#34;xaxis&#34;:&#34;x&#34;,&#34;yaxis&#34;:&#34;y&#34;,&#34;hoverinfo&#34;:&#34;text&#34;,&#34;frame&#34;:null},{&#34;x&#34;:[98430,98430,11800,4350,90570,40670,90240,4520,12010,40950,196810,64410,101770,9510,29840,69970,73700,87950,29530,26620,90070,3060,12110,4460,40870,360,29530,198500,76830,8290,25210,101550,3500,62290,94420,3880,32020,1300,11300,40600,4570,90410,199250,90410,199250,3010,96,200950,35330,70910,35330,11400,35330,200950,3010,90240,8070,4520,8070,435,35330,70910,70910,96,40100,208340,4540,11340,565260,40720,90680,85,430,8330,142320,4570,3010,430,11280,40950,142320,8330,90240,196810,35700,35330,85,132330,35330,35700,3010,196810,18080,91520,5580,102610,8290,8290,43290,100500,18270,53860,30400,8290,200950,90240,4520,11050,40100,97150,71860,52610,11380,4370,91010,40030,79650,139650,220660,154950,6110,92650,92650,81940,30840,50790,120390,76190,30520,45780,5000,88130,154510,18150,50790,199850,90680,11220,4490,90680,90680,40720,11220,199850,4540,199850,40300,12270,44540,40950,11160,198870,135360,4570,90240,34860,85760,94170,95150,4910,160190,206380,117710,203470,4340,18080,10190,9080,91550,30410,33670,29110,100320,8290,8050,3060,3060,8050,88870,433,100,35230,35230,73370,50990,134100,92230,93190,37330,35070,11440,72810,4400,40250,11440,6500,47860,92140,430,2980,2980,79,430,35330,79,35330,8330,8330,141810,90070,4560,90680,11030,40450,202670,90680,52,29080,40150,53160,40150,59600,40150,40150,135870,197550,90580,40670,11320,4490,170330,57170,87560,43180,62130,82260,26380,43010,227000,22810,60610,5380,5270,32480,110780,5320,99840,93800,12100,46740,6760,16020,1880,1880,22810,5000],&#34;y&#34;:[0.473778834646725,0.473778834646725,1.39497671955456,1.82846654735268,0.510008512940235,0.857633985150008,0.511616020569138,1.81204389793023,1.38756777941719,0.854731017213942,0.172894697752176,0.658011396657112,0.459392487759231,1.4888326343824,0.992199929795585,0.622110360361219,0.599446375725276,0.52270499273475,0.996686755600172,1.04178731897175,0.51241754860084,1.98104805891317,1.38381536598043,1.81736701628759,0.855579722501718,2.91121089313755,0.996686755600172,0.169086357487023,0.581380688709987,1.54851225634104,1.06520612805431,0.460296326757475,1.9232958406555,0.672559627763276,0.491921712586151,1.87817698049151,0.961516011448949,2.35218251811136,1.41380251676935,0.858416877723488,1.80665472399186,0.51067903103221,0.16761267272753,0.51067903103221,0.16761267272753,1.98891552051269,3.48358729696889,0.163757523981956,0.918764031027999,0.616265405281708,0.918764031027999,1.41010207664286,0.918764031027999,0.163757523981956,1.98891552051269,0.511616020569138,1.55990662503611,1.81204389793023,1.55990662503611,2.82878874818495,0.918764031027999,0.616265405281708,0.616265405281708,3.48358729696889,0.8637985386805,0.148294097434746,1.80989624660244,1.41246054742996,-0.28525123927494,0.857151502687493,0.509471352102549,3.53769319436739,2.8333383889394,1.54641926683519,0.313656346618031,1.80753502806885,1.98891552051269,2.8333383889394,1.41463914673701,0.854731017213942,0.313656346618031,1.54641926683519,0.511616020569138,0.172894697752176,0.914237347767741,0.918764031027999,3.53769319436739,0.345373730559088,0.918764031027999,0.914237347767741,1.98891552051269,0.172894697752176,1.20978301484851,0.505421327583281,1.72007657276814,0.455758203104137,1.54851225634104,1.54851225634104,0.830524514097258,0.464787519645937,1.20520436394814,0.735758537443739,0.984077033902831,1.54851225634104,0.163757523981956,0.511616020569138,1.81204389793023,1.42373724998233,0.8637985386805,0.479575310174988,0.610447221442121,0.745933158459443,1.41094585868777,1.82639878218762,0.507855871695831,0.86457040685343,0.565729787831127,0.3220124385824,0.123198075031999,0.27669152884504,1.68106024363181,0.500099191915723,0.500099191915723,0.55339751012388,0.977906427637118,0.761175813155731,0.386320573894046,0.585009279902461,0.982406928863795,0.806315669808114,1.7681198941848,0.521791649639123,0.278067330888663,1.20817252666712,0.761175813155731,0.166133970305109,0.509471352102549,1.41697317260304,1.81438079446994,0.509471352102549,0.509471352102549,0.857151502687493,1.41697317260304,0.166133970305109,1.80989624660244,0.166133970305109,0.861653870213911,1.37803432245733,0.818159886397185,0.854731017213942,1.41912930774198,0.168497483523033,0.335457900689384,1.80753502806885,0.511616020569138,0.924589385669418,0.533644978798763,0.493039588317651,0.488550716500444,1.77546480934574,0.262213705476417,0.152288344383056,0.396199347095736,0.15836249209525,1.82923942814139,1.20978301484851,1.45893986189033,1.50866436305294,0.505285674144132,0.98398692196519,0.939718882354105,1.00302947055362,0.46553155697355,1.54838941813292,1.5613399414589,1.98122948742,1.98122948742,1.5613399414589,0.5182506513085,2.83013938742534,3.46686762035411,0.920071124297524,0.920071124297524,0.601408060534684,0.759441197133698,0.339451441306441,0.502153892871361,0.497620649781288,0.894924977359543,0.922050402167174,1.40857912540867,0.604765884703887,1.82393045512556,0.862131379313037,1.40857912540867,1.65398390737407,0.787035182026223,0.502563669107363,2.8333383889394,1.99343623049761,1.99343623049761,3.56937390961505,2.8333383889394,0.918764031027999,3.56937390961505,0.918764031027999,1.54641926683519,1.54641926683519,0.315340476627288,0.51241754860084,1.80834603574039,0.509471352102549,1.42455497660671,0.860098329698518,0.160168292958512,0.509471352102549,3.75488322825217,1.00346053210951,0.863322860120456,0.741387992479269,0.863322860120456,0.691700208290162,0.863322860120456,0.863322860120456,0.333850145102545,0.171433900943008,0.510008512940235,0.857633985150008,1.41296427199666,1.81491318127507,0.23578087032756,0.709778601848225,0.524655712357777,0.831741833645638,0.673665876245702,0.551815822351016,1.04571405894087,0.833402129231859,0.11092624226642,1.10890312766731,0.684396478419021,1.7364761820277,1.74554320199802,0.95535095736766,0.422589839851482,1.74099393158489,0.467608105583633,0.494711025205263,1.38435341413751,0.797267540830716,1.63718942214876,1.26245108973043,2.19256745333655,2.19256745333655,1.10890312766731,1.7681198941848],&#34;text&#34;:[&#34;magnification:  98430&lt;br /&gt;log10(nm.per.pixel):  0.47377883&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  98430&lt;br /&gt;log10(nm.per.pixel):  0.47377883&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11800&lt;br /&gt;log10(nm.per.pixel):  1.39497672&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4350&lt;br /&gt;log10(nm.per.pixel):  1.82846655&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90570&lt;br /&gt;log10(nm.per.pixel):  0.51000851&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40670&lt;br /&gt;log10(nm.per.pixel):  0.85763399&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90240&lt;br /&gt;log10(nm.per.pixel):  0.51161602&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4520&lt;br /&gt;log10(nm.per.pixel):  1.81204390&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  12010&lt;br /&gt;log10(nm.per.pixel):  1.38756778&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40950&lt;br /&gt;log10(nm.per.pixel):  0.85473102&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 196810&lt;br /&gt;log10(nm.per.pixel):  0.17289470&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  64410&lt;br /&gt;log10(nm.per.pixel):  0.65801140&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 101770&lt;br /&gt;log10(nm.per.pixel):  0.45939249&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   9510&lt;br /&gt;log10(nm.per.pixel):  1.48883263&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  29840&lt;br /&gt;log10(nm.per.pixel):  0.99219993&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  69970&lt;br /&gt;log10(nm.per.pixel):  0.62211036&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  73700&lt;br /&gt;log10(nm.per.pixel):  0.59944638&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  87950&lt;br /&gt;log10(nm.per.pixel):  0.52270499&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  29530&lt;br /&gt;log10(nm.per.pixel):  0.99668676&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  26620&lt;br /&gt;log10(nm.per.pixel):  1.04178732&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90070&lt;br /&gt;log10(nm.per.pixel):  0.51241755&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3060&lt;br /&gt;log10(nm.per.pixel):  1.98104806&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  12110&lt;br /&gt;log10(nm.per.pixel):  1.38381537&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4460&lt;br /&gt;log10(nm.per.pixel):  1.81736702&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40870&lt;br /&gt;log10(nm.per.pixel):  0.85557972&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:    360&lt;br /&gt;log10(nm.per.pixel):  2.91121089&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  29530&lt;br /&gt;log10(nm.per.pixel):  0.99668676&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 198500&lt;br /&gt;log10(nm.per.pixel):  0.16908636&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  76830&lt;br /&gt;log10(nm.per.pixel):  0.58138069&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8290&lt;br /&gt;log10(nm.per.pixel):  1.54851226&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  25210&lt;br /&gt;log10(nm.per.pixel):  1.06520613&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 101550&lt;br /&gt;log10(nm.per.pixel):  0.46029633&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3500&lt;br /&gt;log10(nm.per.pixel):  1.92329584&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  62290&lt;br /&gt;log10(nm.per.pixel):  0.67255963&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  94420&lt;br /&gt;log10(nm.per.pixel):  0.49192171&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3880&lt;br /&gt;log10(nm.per.pixel):  1.87817698&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  32020&lt;br /&gt;log10(nm.per.pixel):  0.96151601&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   1300&lt;br /&gt;log10(nm.per.pixel):  2.35218252&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11300&lt;br /&gt;log10(nm.per.pixel):  1.41380252&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40600&lt;br /&gt;log10(nm.per.pixel):  0.85841688&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4570&lt;br /&gt;log10(nm.per.pixel):  1.80665472&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90410&lt;br /&gt;log10(nm.per.pixel):  0.51067903&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 199250&lt;br /&gt;log10(nm.per.pixel):  0.16761267&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90410&lt;br /&gt;log10(nm.per.pixel):  0.51067903&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 199250&lt;br /&gt;log10(nm.per.pixel):  0.16761267&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3010&lt;br /&gt;log10(nm.per.pixel):  1.98891552&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:     96&lt;br /&gt;log10(nm.per.pixel):  3.48358730&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 200950&lt;br /&gt;log10(nm.per.pixel):  0.16375752&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35330&lt;br /&gt;log10(nm.per.pixel):  0.91876403&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  70910&lt;br /&gt;log10(nm.per.pixel):  0.61626541&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35330&lt;br /&gt;log10(nm.per.pixel):  0.91876403&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11400&lt;br /&gt;log10(nm.per.pixel):  1.41010208&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35330&lt;br /&gt;log10(nm.per.pixel):  0.91876403&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 200950&lt;br /&gt;log10(nm.per.pixel):  0.16375752&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3010&lt;br /&gt;log10(nm.per.pixel):  1.98891552&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90240&lt;br /&gt;log10(nm.per.pixel):  0.51161602&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8070&lt;br /&gt;log10(nm.per.pixel):  1.55990663&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4520&lt;br /&gt;log10(nm.per.pixel):  1.81204390&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8070&lt;br /&gt;log10(nm.per.pixel):  1.55990663&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:    435&lt;br /&gt;log10(nm.per.pixel):  2.82878875&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35330&lt;br /&gt;log10(nm.per.pixel):  0.91876403&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  70910&lt;br /&gt;log10(nm.per.pixel):  0.61626541&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  70910&lt;br /&gt;log10(nm.per.pixel):  0.61626541&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:     96&lt;br /&gt;log10(nm.per.pixel):  3.48358730&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40100&lt;br /&gt;log10(nm.per.pixel):  0.86379854&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 208340&lt;br /&gt;log10(nm.per.pixel):  0.14829410&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4540&lt;br /&gt;log10(nm.per.pixel):  1.80989625&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11340&lt;br /&gt;log10(nm.per.pixel):  1.41246055&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 565260&lt;br /&gt;log10(nm.per.pixel): -0.28525124&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40720&lt;br /&gt;log10(nm.per.pixel):  0.85715150&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90680&lt;br /&gt;log10(nm.per.pixel):  0.50947135&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:     85&lt;br /&gt;log10(nm.per.pixel):  3.53769319&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:    430&lt;br /&gt;log10(nm.per.pixel):  2.83333839&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8330&lt;br /&gt;log10(nm.per.pixel):  1.54641927&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 142320&lt;br /&gt;log10(nm.per.pixel):  0.31365635&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4570&lt;br /&gt;log10(nm.per.pixel):  1.80753503&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3010&lt;br /&gt;log10(nm.per.pixel):  1.98891552&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:    430&lt;br /&gt;log10(nm.per.pixel):  2.83333839&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11280&lt;br /&gt;log10(nm.per.pixel):  1.41463915&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40950&lt;br /&gt;log10(nm.per.pixel):  0.85473102&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 142320&lt;br /&gt;log10(nm.per.pixel):  0.31365635&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8330&lt;br /&gt;log10(nm.per.pixel):  1.54641927&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90240&lt;br /&gt;log10(nm.per.pixel):  0.51161602&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 196810&lt;br /&gt;log10(nm.per.pixel):  0.17289470&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35700&lt;br /&gt;log10(nm.per.pixel):  0.91423735&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35330&lt;br /&gt;log10(nm.per.pixel):  0.91876403&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:     85&lt;br /&gt;log10(nm.per.pixel):  3.53769319&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 132330&lt;br /&gt;log10(nm.per.pixel):  0.34537373&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35330&lt;br /&gt;log10(nm.per.pixel):  0.91876403&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35700&lt;br /&gt;log10(nm.per.pixel):  0.91423735&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3010&lt;br /&gt;log10(nm.per.pixel):  1.98891552&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 196810&lt;br /&gt;log10(nm.per.pixel):  0.17289470&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  18080&lt;br /&gt;log10(nm.per.pixel):  1.20978301&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  91520&lt;br /&gt;log10(nm.per.pixel):  0.50542133&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   5580&lt;br /&gt;log10(nm.per.pixel):  1.72007657&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 102610&lt;br /&gt;log10(nm.per.pixel):  0.45575820&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8290&lt;br /&gt;log10(nm.per.pixel):  1.54851226&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8290&lt;br /&gt;log10(nm.per.pixel):  1.54851226&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  43290&lt;br /&gt;log10(nm.per.pixel):  0.83052451&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 100500&lt;br /&gt;log10(nm.per.pixel):  0.46478752&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  18270&lt;br /&gt;log10(nm.per.pixel):  1.20520436&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  53860&lt;br /&gt;log10(nm.per.pixel):  0.73575854&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  30400&lt;br /&gt;log10(nm.per.pixel):  0.98407703&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8290&lt;br /&gt;log10(nm.per.pixel):  1.54851226&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 200950&lt;br /&gt;log10(nm.per.pixel):  0.16375752&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90240&lt;br /&gt;log10(nm.per.pixel):  0.51161602&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4520&lt;br /&gt;log10(nm.per.pixel):  1.81204390&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11050&lt;br /&gt;log10(nm.per.pixel):  1.42373725&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40100&lt;br /&gt;log10(nm.per.pixel):  0.86379854&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  97150&lt;br /&gt;log10(nm.per.pixel):  0.47957531&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  71860&lt;br /&gt;log10(nm.per.pixel):  0.61044722&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  52610&lt;br /&gt;log10(nm.per.pixel):  0.74593316&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11380&lt;br /&gt;log10(nm.per.pixel):  1.41094586&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4370&lt;br /&gt;log10(nm.per.pixel):  1.82639878&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  91010&lt;br /&gt;log10(nm.per.pixel):  0.50785587&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40030&lt;br /&gt;log10(nm.per.pixel):  0.86457041&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  79650&lt;br /&gt;log10(nm.per.pixel):  0.56572979&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 139650&lt;br /&gt;log10(nm.per.pixel):  0.32201244&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 220660&lt;br /&gt;log10(nm.per.pixel):  0.12319808&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 154950&lt;br /&gt;log10(nm.per.pixel):  0.27669153&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   6110&lt;br /&gt;log10(nm.per.pixel):  1.68106024&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  92650&lt;br /&gt;log10(nm.per.pixel):  0.50009919&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  92650&lt;br /&gt;log10(nm.per.pixel):  0.50009919&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  81940&lt;br /&gt;log10(nm.per.pixel):  0.55339751&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  30840&lt;br /&gt;log10(nm.per.pixel):  0.97790643&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  50790&lt;br /&gt;log10(nm.per.pixel):  0.76117581&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 120390&lt;br /&gt;log10(nm.per.pixel):  0.38632057&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  76190&lt;br /&gt;log10(nm.per.pixel):  0.58500928&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  30520&lt;br /&gt;log10(nm.per.pixel):  0.98240693&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  45780&lt;br /&gt;log10(nm.per.pixel):  0.80631567&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.76811989&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  88130&lt;br /&gt;log10(nm.per.pixel):  0.52179165&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 154510&lt;br /&gt;log10(nm.per.pixel):  0.27806733&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  18150&lt;br /&gt;log10(nm.per.pixel):  1.20817253&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  50790&lt;br /&gt;log10(nm.per.pixel):  0.76117581&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 199850&lt;br /&gt;log10(nm.per.pixel):  0.16613397&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90680&lt;br /&gt;log10(nm.per.pixel):  0.50947135&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11220&lt;br /&gt;log10(nm.per.pixel):  1.41697317&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4490&lt;br /&gt;log10(nm.per.pixel):  1.81438079&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90680&lt;br /&gt;log10(nm.per.pixel):  0.50947135&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90680&lt;br /&gt;log10(nm.per.pixel):  0.50947135&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40720&lt;br /&gt;log10(nm.per.pixel):  0.85715150&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11220&lt;br /&gt;log10(nm.per.pixel):  1.41697317&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 199850&lt;br /&gt;log10(nm.per.pixel):  0.16613397&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4540&lt;br /&gt;log10(nm.per.pixel):  1.80989625&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 199850&lt;br /&gt;log10(nm.per.pixel):  0.16613397&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40300&lt;br /&gt;log10(nm.per.pixel):  0.86165387&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  12270&lt;br /&gt;log10(nm.per.pixel):  1.37803432&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  44540&lt;br /&gt;log10(nm.per.pixel):  0.81815989&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40950&lt;br /&gt;log10(nm.per.pixel):  0.85473102&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11160&lt;br /&gt;log10(nm.per.pixel):  1.41912931&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 198870&lt;br /&gt;log10(nm.per.pixel):  0.16849748&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 135360&lt;br /&gt;log10(nm.per.pixel):  0.33545790&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4570&lt;br /&gt;log10(nm.per.pixel):  1.80753503&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90240&lt;br /&gt;log10(nm.per.pixel):  0.51161602&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  34860&lt;br /&gt;log10(nm.per.pixel):  0.92458939&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  85760&lt;br /&gt;log10(nm.per.pixel):  0.53364498&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  94170&lt;br /&gt;log10(nm.per.pixel):  0.49303959&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  95150&lt;br /&gt;log10(nm.per.pixel):  0.48855072&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4910&lt;br /&gt;log10(nm.per.pixel):  1.77546481&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 160190&lt;br /&gt;log10(nm.per.pixel):  0.26221371&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 206380&lt;br /&gt;log10(nm.per.pixel):  0.15228834&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 117710&lt;br /&gt;log10(nm.per.pixel):  0.39619935&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 203470&lt;br /&gt;log10(nm.per.pixel):  0.15836249&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4340&lt;br /&gt;log10(nm.per.pixel):  1.82923943&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  18080&lt;br /&gt;log10(nm.per.pixel):  1.20978301&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  10190&lt;br /&gt;log10(nm.per.pixel):  1.45893986&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   9080&lt;br /&gt;log10(nm.per.pixel):  1.50866436&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  91550&lt;br /&gt;log10(nm.per.pixel):  0.50528567&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  30410&lt;br /&gt;log10(nm.per.pixel):  0.98398692&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  33670&lt;br /&gt;log10(nm.per.pixel):  0.93971888&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  29110&lt;br /&gt;log10(nm.per.pixel):  1.00302947&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 100320&lt;br /&gt;log10(nm.per.pixel):  0.46553156&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8290&lt;br /&gt;log10(nm.per.pixel):  1.54838942&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8050&lt;br /&gt;log10(nm.per.pixel):  1.56133994&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3060&lt;br /&gt;log10(nm.per.pixel):  1.98122949&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   3060&lt;br /&gt;log10(nm.per.pixel):  1.98122949&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8050&lt;br /&gt;log10(nm.per.pixel):  1.56133994&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  88870&lt;br /&gt;log10(nm.per.pixel):  0.51825065&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:    433&lt;br /&gt;log10(nm.per.pixel):  2.83013939&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:    100&lt;br /&gt;log10(nm.per.pixel):  3.46686762&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35230&lt;br /&gt;log10(nm.per.pixel):  0.92007112&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35230&lt;br /&gt;log10(nm.per.pixel):  0.92007112&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  73370&lt;br /&gt;log10(nm.per.pixel):  0.60140806&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  50990&lt;br /&gt;log10(nm.per.pixel):  0.75944120&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 134100&lt;br /&gt;log10(nm.per.pixel):  0.33945144&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  92230&lt;br /&gt;log10(nm.per.pixel):  0.50215389&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  93190&lt;br /&gt;log10(nm.per.pixel):  0.49762065&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  37330&lt;br /&gt;log10(nm.per.pixel):  0.89492498&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35070&lt;br /&gt;log10(nm.per.pixel):  0.92205040&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11440&lt;br /&gt;log10(nm.per.pixel):  1.40857913&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  72810&lt;br /&gt;log10(nm.per.pixel):  0.60476588&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4400&lt;br /&gt;log10(nm.per.pixel):  1.82393046&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40250&lt;br /&gt;log10(nm.per.pixel):  0.86213138&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11440&lt;br /&gt;log10(nm.per.pixel):  1.40857913&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   6500&lt;br /&gt;log10(nm.per.pixel):  1.65398391&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  47860&lt;br /&gt;log10(nm.per.pixel):  0.78703518&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  92140&lt;br /&gt;log10(nm.per.pixel):  0.50256367&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:    430&lt;br /&gt;log10(nm.per.pixel):  2.83333839&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   2980&lt;br /&gt;log10(nm.per.pixel):  1.99343623&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   2980&lt;br /&gt;log10(nm.per.pixel):  1.99343623&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:     79&lt;br /&gt;log10(nm.per.pixel):  3.56937391&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:    430&lt;br /&gt;log10(nm.per.pixel):  2.83333839&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35330&lt;br /&gt;log10(nm.per.pixel):  0.91876403&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:     79&lt;br /&gt;log10(nm.per.pixel):  3.56937391&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  35330&lt;br /&gt;log10(nm.per.pixel):  0.91876403&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8330&lt;br /&gt;log10(nm.per.pixel):  1.54641927&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   8330&lt;br /&gt;log10(nm.per.pixel):  1.54641927&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 141810&lt;br /&gt;log10(nm.per.pixel):  0.31534048&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90070&lt;br /&gt;log10(nm.per.pixel):  0.51241755&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4560&lt;br /&gt;log10(nm.per.pixel):  1.80834604&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90680&lt;br /&gt;log10(nm.per.pixel):  0.50947135&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11030&lt;br /&gt;log10(nm.per.pixel):  1.42455498&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40450&lt;br /&gt;log10(nm.per.pixel):  0.86009833&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 202670&lt;br /&gt;log10(nm.per.pixel):  0.16016829&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90680&lt;br /&gt;log10(nm.per.pixel):  0.50947135&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:     52&lt;br /&gt;log10(nm.per.pixel):  3.75488323&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  29080&lt;br /&gt;log10(nm.per.pixel):  1.00346053&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40150&lt;br /&gt;log10(nm.per.pixel):  0.86332286&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  53160&lt;br /&gt;log10(nm.per.pixel):  0.74138799&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40150&lt;br /&gt;log10(nm.per.pixel):  0.86332286&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  59600&lt;br /&gt;log10(nm.per.pixel):  0.69170021&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40150&lt;br /&gt;log10(nm.per.pixel):  0.86332286&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40150&lt;br /&gt;log10(nm.per.pixel):  0.86332286&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 135870&lt;br /&gt;log10(nm.per.pixel):  0.33385015&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 197550&lt;br /&gt;log10(nm.per.pixel):  0.17143390&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  90580&lt;br /&gt;log10(nm.per.pixel):  0.51000851&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  40670&lt;br /&gt;log10(nm.per.pixel):  0.85763399&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  11320&lt;br /&gt;log10(nm.per.pixel):  1.41296427&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   4490&lt;br /&gt;log10(nm.per.pixel):  1.81491318&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 170330&lt;br /&gt;log10(nm.per.pixel):  0.23578087&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  57170&lt;br /&gt;log10(nm.per.pixel):  0.70977860&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  87560&lt;br /&gt;log10(nm.per.pixel):  0.52465571&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  43180&lt;br /&gt;log10(nm.per.pixel):  0.83174183&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  62130&lt;br /&gt;log10(nm.per.pixel):  0.67366588&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  82260&lt;br /&gt;log10(nm.per.pixel):  0.55181582&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  26380&lt;br /&gt;log10(nm.per.pixel):  1.04571406&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  43010&lt;br /&gt;log10(nm.per.pixel):  0.83340213&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 227000&lt;br /&gt;log10(nm.per.pixel):  0.11092624&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  22810&lt;br /&gt;log10(nm.per.pixel):  1.10890313&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  60610&lt;br /&gt;log10(nm.per.pixel):  0.68439648&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   5380&lt;br /&gt;log10(nm.per.pixel):  1.73647618&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   5270&lt;br /&gt;log10(nm.per.pixel):  1.74554320&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  32480&lt;br /&gt;log10(nm.per.pixel):  0.95535096&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification: 110780&lt;br /&gt;log10(nm.per.pixel):  0.42258984&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   5320&lt;br /&gt;log10(nm.per.pixel):  1.74099393&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  99840&lt;br /&gt;log10(nm.per.pixel):  0.46760811&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  93800&lt;br /&gt;log10(nm.per.pixel):  0.49471103&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  12100&lt;br /&gt;log10(nm.per.pixel):  1.38435341&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  46740&lt;br /&gt;log10(nm.per.pixel):  0.79726754&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   6760&lt;br /&gt;log10(nm.per.pixel):  1.63718942&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  16020&lt;br /&gt;log10(nm.per.pixel):  1.26245109&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   1880&lt;br /&gt;log10(nm.per.pixel):  2.19256745&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   1880&lt;br /&gt;log10(nm.per.pixel):  2.19256745&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:  22810&lt;br /&gt;log10(nm.per.pixel):  1.10890313&lt;br /&gt;instrument: Merlin&#34;,&#34;magnification:   5000&lt;br /&gt;log10(nm.per.pixel):  1.76811989&lt;br /&gt;instrument: Merlin&#34;],&#34;type&#34;:&#34;scatter&#34;,&#34;mode&#34;:&#34;markers&#34;,&#34;marker&#34;:{&#34;autocolorscale&#34;:false,&#34;color&#34;:&#34;rgba(0,191,196,1)&#34;,&#34;opacity&#34;:1,&#34;size&#34;:5.66929133858268,&#34;symbol&#34;:&#34;circle&#34;,&#34;line&#34;:{&#34;width&#34;:1.88976377952756,&#34;color&#34;:&#34;rgba(0,191,196,1)&#34;}},&#34;hoveron&#34;:&#34;points&#34;,&#34;name&#34;:&#34;Merlin&#34;,&#34;legendgroup&#34;:&#34;Merlin&#34;,&#34;showlegend&#34;:true,&#34;xaxis&#34;:&#34;x&#34;,&#34;yaxis&#34;:&#34;y&#34;,&#34;hoverinfo&#34;:&#34;text&#34;,&#34;frame&#34;:null}],&#34;layout&#34;:{&#34;margin&#34;:{&#34;t&#34;:26.2283105022831,&#34;r&#34;:7.30593607305936,&#34;b&#34;:40.1826484018265,&#34;l&#34;:31.4155251141553},&#34;plot_bgcolor&#34;:&#34;rgba(235,235,235,1)&#34;,&#34;paper_bgcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187},&#34;xaxis&#34;:{&#34;domain&#34;:[0,1],&#34;automargin&#34;:true,&#34;type&#34;:&#34;linear&#34;,&#34;autorange&#34;:false,&#34;range&#34;:[-28208.4,593520.4],&#34;tickmode&#34;:&#34;array&#34;,&#34;ticktext&#34;:[&#34;0e+00&#34;,&#34;2e+05&#34;,&#34;4e+05&#34;],&#34;tickvals&#34;:[0,200000,400000],&#34;categoryorder&#34;:&#34;array&#34;,&#34;categoryarray&#34;:[&#34;0e+00&#34;,&#34;2e+05&#34;,&#34;4e+05&#34;],&#34;nticks&#34;:null,&#34;ticks&#34;:&#34;outside&#34;,&#34;tickcolor&#34;:&#34;rgba(51,51,51,1)&#34;,&#34;ticklen&#34;:3.65296803652968,&#34;tickwidth&#34;:0.66417600664176,&#34;showticklabels&#34;:true,&#34;tickfont&#34;:{&#34;color&#34;:&#34;rgba(77,77,77,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895},&#34;tickangle&#34;:-0,&#34;showline&#34;:false,&#34;linecolor&#34;:null,&#34;linewidth&#34;:0,&#34;showgrid&#34;:true,&#34;gridcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;gridwidth&#34;:0.66417600664176,&#34;zeroline&#34;:false,&#34;anchor&#34;:&#34;y&#34;,&#34;title&#34;:{&#34;text&#34;:&#34;Magnification&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187}},&#34;hoverformat&#34;:&#34;.2f&#34;},&#34;yaxis&#34;:{&#34;domain&#34;:[0,1],&#34;automargin&#34;:true,&#34;type&#34;:&#34;linear&#34;,&#34;autorange&#34;:false,&#34;range&#34;:[-0.487257962651296,3.95688995162852],&#34;tickmode&#34;:&#34;array&#34;,&#34;ticktext&#34;:[&#34;0&#34;,&#34;1&#34;,&#34;2&#34;,&#34;3&#34;],&#34;tickvals&#34;:[0,1,2,3],&#34;categoryorder&#34;:&#34;array&#34;,&#34;categoryarray&#34;:[&#34;0&#34;,&#34;1&#34;,&#34;2&#34;,&#34;3&#34;],&#34;nticks&#34;:null,&#34;ticks&#34;:&#34;outside&#34;,&#34;tickcolor&#34;:&#34;rgba(51,51,51,1)&#34;,&#34;ticklen&#34;:3.65296803652968,&#34;tickwidth&#34;:0.66417600664176,&#34;showticklabels&#34;:true,&#34;tickfont&#34;:{&#34;color&#34;:&#34;rgba(77,77,77,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895},&#34;tickangle&#34;:-0,&#34;showline&#34;:false,&#34;linecolor&#34;:null,&#34;linewidth&#34;:0,&#34;showgrid&#34;:true,&#34;gridcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;gridwidth&#34;:0.66417600664176,&#34;zeroline&#34;:false,&#34;anchor&#34;:&#34;x&#34;,&#34;title&#34;:{&#34;text&#34;:&#34;log10(pixel size/nm)&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187}},&#34;hoverformat&#34;:&#34;.2f&#34;},&#34;shapes&#34;:[{&#34;type&#34;:&#34;rect&#34;,&#34;fillcolor&#34;:null,&#34;line&#34;:{&#34;color&#34;:null,&#34;width&#34;:0,&#34;linetype&#34;:[]},&#34;yref&#34;:&#34;paper&#34;,&#34;xref&#34;:&#34;paper&#34;,&#34;x0&#34;:0,&#34;x1&#34;:1,&#34;y0&#34;:0,&#34;y1&#34;:1}],&#34;showlegend&#34;:true,&#34;legend&#34;:{&#34;bgcolor&#34;:&#34;rgba(255,255,255,1)&#34;,&#34;bordercolor&#34;:&#34;transparent&#34;,&#34;borderwidth&#34;:1.88976377952756,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:11.689497716895},&#34;title&#34;:{&#34;text&#34;:&#34;instrument&#34;,&#34;font&#34;:{&#34;color&#34;:&#34;rgba(0,0,0,1)&#34;,&#34;family&#34;:&#34;&#34;,&#34;size&#34;:14.6118721461187}}},&#34;hovermode&#34;:&#34;closest&#34;,&#34;barmode&#34;:&#34;relative&#34;},&#34;config&#34;:{&#34;doubleClick&#34;:&#34;reset&#34;,&#34;modeBarButtonsToAdd&#34;:[&#34;hoverclosest&#34;,&#34;hovercompare&#34;],&#34;showSendToCloud&#34;:false},&#34;source&#34;:&#34;A&#34;,&#34;attrs&#34;:{&#34;5af9405cddac&#34;:{&#34;x&#34;:{},&#34;y&#34;:{},&#34;colour&#34;:{},&#34;type&#34;:&#34;scatter&#34;}},&#34;cur_data&#34;:&#34;5af9405cddac&#34;,&#34;visdat&#34;:{&#34;5af9405cddac&#34;:[&#34;function (y) &#34;,&#34;x&#34;]},&#34;highlight&#34;:{&#34;on&#34;:&#34;plotly_click&#34;,&#34;persistent&#34;:false,&#34;dynamic&#34;:false,&#34;selectize&#34;:false,&#34;opacityDim&#34;:0.2,&#34;selected&#34;:{&#34;opacity&#34;:1},&#34;debounce&#34;:0},&#34;shinyEvents&#34;:[&#34;plotly_hover&#34;,&#34;plotly_click&#34;,&#34;plotly_selected&#34;,&#34;plotly_relayout&#34;,&#34;plotly_brushed&#34;,&#34;plotly_brushing&#34;,&#34;plotly_clickannotation&#34;,&#34;plotly_doubleclick&#34;,&#34;plotly_deselect&#34;,&#34;plotly_afterplot&#34;,&#34;plotly_sunburstclick&#34;],&#34;base_url&#34;:&#34;https://plot.ly&#34;},&#34;evals&#34;:[],&#34;jsHooks&#34;:[]}&lt;/script&gt;
&lt;p&gt;&lt;a href=&#34;https://plot.ly/~chepec/87&#34;&gt;Pixel size vs. magnification&lt;/a&gt;. The difference between the two microscopes is interesting. Is it real, or just the result of different calibration?&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;conclusion&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If your scanning electron microscope uses Zeiss SmartSEM® software, you can take advantage of the fact that each TIFF image contains all the instrument parameters. In this post we have shown how those TIFF tags can be retrieved and saved using the R programming.
We then used the aggregated TIFF tags from more than 900 of our own SEM images to investigate the relationship between a few parameters.&lt;/p&gt;
&lt;p&gt;With the inclusion of what appears to be all instrument parameters in the SEM TIFF file, Zeiss has managed to set a good and bad example simultaneously. Good because it uses an established and open format, bad because the documentation is sorely lacking. Still, let’s hope that more scientific instrument makers emulate Zeiss’ example and attach the full set of instrument parameters to each output file, or at least make it optional.&lt;/p&gt;
&lt;p&gt;If you liked this post and would like to see more like it, comment or &lt;a href=&#34;//solarchemist.se/about&#34;&gt;contact me&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;sessioninfo&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;sessionInfo()&lt;/h2&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;sessionInfo()
## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] common_0.0.2   plotly_4.10.0  reshape2_1.4.4 ggplot2_3.3.5  knitr_1.37    
## 
## loaded via a namespace (and not attached):
##  [1] tidyselect_1.1.2  xfun_0.29         bslib_0.3.1       purrr_0.3.4      
##  [5] colorspace_2.0-2  vctrs_0.3.8       generics_0.1.2    htmltools_0.5.2  
##  [9] viridisLite_0.4.0 yaml_2.2.2        utf8_1.2.2        rlang_1.0.1      
## [13] jquerylib_0.1.4   pillar_1.7.0      glue_1.6.1        withr_2.4.3      
## [17] DBI_1.1.2         lifecycle_1.0.1   plyr_1.8.6        stringr_1.4.0    
## [21] munsell_0.5.0     blogdown_1.7      gtable_0.3.0      htmlwidgets_1.5.4
## [25] evaluate_0.14     fastmap_1.1.0     fansi_1.0.2       Rcpp_1.0.8       
## [29] scales_1.1.1      jsonlite_1.7.3    digest_0.6.29     stringi_1.7.6    
## [33] bookdown_0.24     dplyr_1.0.8       grid_4.0.5        cli_3.2.0        
## [37] tools_4.0.5       magrittr_2.0.2    sass_0.4.0        lazyeval_0.2.2   
## [41] tibble_3.1.6      crayon_1.5.0      tidyr_1.1.4       pkgconfig_2.0.3  
## [45] ellipsis_0.3.2    data.table_1.14.2 assertthat_0.2.1  rmarkdown_2.11   
## [49] httr_1.4.2        R6_2.5.1          compiler_4.0.5&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&#34;footnotes footnotes-end-of-document&#34;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&#34;fn1&#34;&gt;&lt;p&gt;SmartSEM® V05.06 Operating Software for Scanning Electron Microscopes by Carl Zeiss Microscopy GmbH. &lt;a href=&#34;assets/150320-Zeiss-SmartSEM-software-manual.pdf&#34;&gt;Software manual [pdf, 15 MB]&lt;/a&gt;.&lt;a href=&#34;#fnref1&#34; class=&#34;footnote-back&#34;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>All available elemental properties plotted as periodic tables</title>
      <link>//solarchemist.se/2015/01/30/element-properties/</link>
      <pubDate>Fri, 30 Jan 2015 20:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2015/01/30/element-properties/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#available-elemental-properties&#34;&gt;Available elemental properties&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#properties-visualised&#34;&gt;Properties, visualised&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#sessioninfo&#34;&gt;sessionInfo()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div id=&#34;introduction&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In the &lt;a href=&#34;//solarchemist.se/2014/11/16/element-data.html&#34;&gt;previous post&lt;/a&gt; we showed how &lt;code&gt;ggplot2&lt;/code&gt; can be used to effectively and quickly render a periodic table overlaid with near-arbitrary elemental data.&lt;/p&gt;
&lt;p&gt;Let’s use this newfound ability to visualise all the datasets we have available to us.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(ggplot2)
library(dplyr)
library(grid)
library(knitr)
library(common)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;available-elemental-properties&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Available elemental properties&lt;/h2&gt;
&lt;p&gt;Some properties are not suited for this type of visualisation, and will be excluded (see &lt;code&gt;donotplot&lt;/code&gt; vector below). Others are better visualised as discrete variables, although they are numeric in format. Such properties will be converted back to character (see &lt;code&gt;numericasdiscrete&lt;/code&gt; below).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# drop some redundant columns
values &amp;lt;- values[, -grep(pattern = &amp;quot;^Absolute.*&amp;quot;, names(values))]
units &amp;lt;- units[, -grep(pattern = &amp;quot;^Absolute.*&amp;quot;, names(units))]
# some columns are not suitable for this format of visualisation
donotplot &amp;lt;-
   c(&amp;quot;Name&amp;quot;,
     &amp;quot;Symbol&amp;quot;,
     &amp;quot;Group&amp;quot;,
     &amp;quot;Graph.Group&amp;quot;,
     &amp;quot;Period&amp;quot;,
     &amp;quot;Graph.Period&amp;quot;,
     &amp;quot;EU_Number&amp;quot;,
     &amp;quot;RTECS_Number&amp;quot;,
     &amp;quot;Alternate_Names&amp;quot;,
     &amp;quot;Electron_Configuration&amp;quot;,
     &amp;quot;CAS_Number&amp;quot;,
     &amp;quot;CID_Number&amp;quot;,
     &amp;quot;Gmelin_Number&amp;quot;,
     &amp;quot;NSC_Number&amp;quot;,
     &amp;quot;Quantum_Numbers&amp;quot;,
     &amp;quot;Space_Group_Name&amp;quot;,
     &amp;quot;Space_Group_Number&amp;quot;)
# some numeric columns are better visualised as discrete variables
numericasdiscrete &amp;lt;-
   c(&amp;quot;DOT_Hazard_Class&amp;quot;,
     &amp;quot;NFPA_Fire_Rating&amp;quot;,
     &amp;quot;NFPA_Health_Rating&amp;quot;,
     &amp;quot;NFPA_Reactivity_Rating&amp;quot;)
for (i in 1:length(numericasdiscrete)) {
   values[, which(names(values) == numericasdiscrete[i])] &amp;lt;-
      as.character(values[, which(names(values) == numericasdiscrete[i])])
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here are all the elemental properties that have been deemed suitable for visualisation.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;str(values)
## &amp;#39;data.frame&amp;#39;:    118 obs. of  80 variables:
##  $ Name                          : chr  &amp;quot;Hydrogen&amp;quot; &amp;quot;Helium&amp;quot; &amp;quot;Lithium&amp;quot; &amp;quot;Beryllium&amp;quot; ...
##  $ Symbol                        : chr  &amp;quot;H&amp;quot; &amp;quot;He&amp;quot; &amp;quot;Li&amp;quot; &amp;quot;Be&amp;quot; ...
##  $ Atomic_Number                 : num  1 2 3 4 5 6 7 8 9 10 ...
##  $ Atomic_Weight                 : num  1.01 4 6.94 9.01 10.81 ...
##  $ Density                       : num  8.99e-02 1.78e-01 5.35e+02 1.85e+03 2.46e+03 ...
##  $ Melting_Point                 : num  14 NA 454 1560 2348 ...
##  $ Boiling_Point                 : num  20.28 4.22 1615.15 2743.15 4273.15 ...
##  $ Phase                         : chr  &amp;quot;Gas&amp;quot; &amp;quot;Gas&amp;quot; &amp;quot;Solid&amp;quot; &amp;quot;Solid&amp;quot; ...
##  $ Critical_Pressure             : num  1293000 NA NA NA 3390000 ...
##  $ Critical_Temperature          : num  32.97 5.19 3223 NA NA ...
##  $ Heat_of_Fusion                : num  0.558 0.02 3 7.95 50 105 0.36 0.222 0.26 0.34 ...
##  $ Heat_of_Vaporization          : num  0.452 0.083 147 297 507 715 2.79 3.41 3.27 1.75 ...
##  $ Heat_of_Combustion            : num  NA NA -298 NA NA -393 NA NA NA NA ...
##  $ Specific_Heat                 : num  14300 NA 1820 240 1040 165 1030 154 904 140 ...
##  $ Adiabatic_Index               : chr  &amp;quot;7/5&amp;quot; &amp;quot;5/3&amp;quot; NA NA ...
##  $ Neel_Point                    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Thermal_Conductivity          : num  0.18 0.151 85 190 27 ...
##  $ Thermal_Expansion             : num  NA NA 4.60e-05 1.13e-05 6.00e-06 7.10e-06 NA NA NA NA ...
##  $ Density_Liquid                : num  NA NA 512 1690 2080 NA NA NA NA NA ...
##  $ Molar_Volume                  : num  1.12e-02 2.24e-02 1.30e-05 4.88e-06 4.39e-06 ...
##  $ Brinell_Hardness              : num  NA NA NA 6e+08 NA NA NA NA NA NA ...
##  $ Mohs_Hardness                 : num  NA NA 600000 5500000 9300000 500000 NA NA NA NA ...
##  $ Vickers_Hardness              : num  NA NA NA 1.67e+09 4.90e+10 ...
##  $ Bulk_Modulus                  : num  NA NA 1.1e+10 1.3e+11 3.2e+11 ...
##  $ Shear_Modulus                 : num  NA NA 4.20e+09 1.32e+11 NA ...
##  $ Young_Modulus                 : num  NA NA 4.90e+09 2.87e+11 NA ...
##  $ Poisson_Ratio                 : num  NA NA NA 0.032 NA NA NA NA NA NA ...
##  $ Refractive_Index              : num  1 1 NA NA NA ...
##  $ Speed_of_Sound                : num  1270 970 6000 13000 16200 ...
##  $ Valence                       : num  1 0 1 2 3 4 3 2 1 0 ...
##  $ Electronegativity             : num  2.2 NA 0.98 1.57 2.04 2.55 3.04 3.44 3.98 NA ...
##  $ ElectronAffinity              : num  72.8 0 59.6 0 26.7 ...
##  $ Autoignition_Point            : num  809 NA 452 NA NA ...
##  $ Flashpoint                    : num  255 NA NA NA NA ...
##  $ DOT_Hazard_Class              : chr  &amp;quot;2.1&amp;quot; &amp;quot;2.2&amp;quot; &amp;quot;4.3&amp;quot; &amp;quot;6.1&amp;quot; ...
##  $ DOT_Numbers                   : num  1966 1963 1415 1567 NA ...
##  $ EU_Number                     : chr  &amp;quot;EU215-605-7&amp;quot; &amp;quot;EU231-168-5&amp;quot; &amp;quot;EU231-102-5&amp;quot; &amp;quot;EU231-150-7&amp;quot; ...
##  $ NFPA_Fire_Rating              : chr  &amp;quot;4&amp;quot; &amp;quot;0&amp;quot; &amp;quot;2&amp;quot; &amp;quot;1&amp;quot; ...
##  $ NFPA_Health_Rating            : chr  &amp;quot;3&amp;quot; &amp;quot;1&amp;quot; &amp;quot;3&amp;quot; &amp;quot;3&amp;quot; ...
##  $ NFPA_Reactivity_Rating        : chr  &amp;quot;0&amp;quot; &amp;quot;0&amp;quot; &amp;quot;2&amp;quot; &amp;quot;0&amp;quot; ...
##  $ RTECS_Number                  : chr  &amp;quot;RTECSMW8900000&amp;quot; NA &amp;quot;RTECSDS1750000&amp;quot; &amp;quot;RTECSLW3850000&amp;quot; ...
##  $ Alternate_Names               : chr  NA NA NA NA ...
##  $ Block                         : chr  &amp;quot;s&amp;quot; &amp;quot;p&amp;quot; &amp;quot;s&amp;quot; &amp;quot;s&amp;quot; ...
##  $ Group                         : chr  &amp;quot;1&amp;quot; &amp;quot;18&amp;quot; &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; ...
##  $ Period                        : chr  &amp;quot;1&amp;quot; &amp;quot;1&amp;quot; &amp;quot;2&amp;quot; &amp;quot;2&amp;quot; ...
##  $ Electron_Configuration        : chr  &amp;quot;1s1&amp;quot; &amp;quot;[Xe]4f56s2&amp;quot; &amp;quot;[He]2s2&amp;quot; &amp;quot;[Xe]4f75d16s2&amp;quot; ...
##  $ Color                         : chr  &amp;quot;Colorless&amp;quot; &amp;quot;Colorless&amp;quot; &amp;quot;Silver&amp;quot; &amp;quot;SlateGray&amp;quot; ...
##  $ Gas_phase                     : chr  &amp;quot;Diatomic&amp;quot; &amp;quot;Monoatomic&amp;quot; NA NA ...
##  $ CAS_Number                    : chr  &amp;quot;CAS1333-74-0&amp;quot; &amp;quot;CAS7440-59-7&amp;quot; &amp;quot;CAS7439-93-2&amp;quot; &amp;quot;CAS7440-41-7&amp;quot; ...
##  $ CID_Number                    : chr  &amp;quot;CID783&amp;quot; &amp;quot;CID23987&amp;quot; &amp;quot;CID3028194&amp;quot; &amp;quot;CID5460467&amp;quot; ...
##  $ Gmelin_Number                 : chr  &amp;quot;Gmelin3&amp;quot; &amp;quot;Gmelin16294&amp;quot; &amp;quot;Gmelin30&amp;quot; &amp;quot;Gmelin16256&amp;quot; ...
##  $ NSC_Number                    : chr  NA NA NA NA ...
##  $ Electrical_Type               : chr  NA NA &amp;quot;Conductor&amp;quot; &amp;quot;Conductor&amp;quot; ...
##  $ Electrical_Conductivity       : num  NA NA 1.1e+07 2.5e+07 1.0e-04 1.0e+05 NA NA NA NA ...
##  $ Resistivity                   : num  NA NA 9.4e-08 4.0e-08 1.0e+04 1.0e-05 NA NA NA NA ...
##  $ Superconducting_Point         : num  NA NA NA 0.026 NA NA NA NA NA NA ...
##  $ Magnetic_Type                 : chr  &amp;quot;Diamagnetic&amp;quot; &amp;quot;Diamagnetic&amp;quot; &amp;quot;Paramagnetic&amp;quot; &amp;quot;Diamagnetic&amp;quot; ...
##  $ Curie_Point                   : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Mass_Magnetic_Susceptibility  : num  -2.48e-08 -5.90e-09 6.30e-09 -1.26e-08 -8.70e-09 ...
##  $ Molar_Magnetic_Susceptibility : num  -2.50e-11 -2.36e-11 4.37e-11 -1.14e-10 -9.41e-11 ...
##  $ Volume_Magnetic_Susceptibility: num  -2.23e-09 -1.05e-09 3.37e-06 -2.33e-05 -2.14e-05 ...
##  $ Percent_in_Universe           : num  7.5e+01 2.3e+01 6.0e-07 1.0e-07 1.0e-07 5.0e-01 1.0e-01 1.0 4.0e-05 1.3e-01 ...
##  $ Percent_in_Sun                : num  7.5e+01 2.3e+01 6.0e-09 1.0e-08 2.0e-07 3.0e-01 1.0e-01 9.0e-01 5.0e-05 1.0e-01 ...
##  $ Percent_in_Meteorites         : num  2.4 NA 1.7e-04 2.9e-06 1.6e-04 1.5 1.4e-01 4.0e+01 8.7e-03 NA ...
##  $ Percent_in_Earths_Crust       : num  1.5e-01 5.5e-07 1.7e-03 1.9e-04 8.6e-04 1.8e-01 2.0e-03 4.6e+01 5.4e-02 3.0e-07 ...
##  $ Percent_in_Oceans             : num  1.1e+01 7.2e-10 1.8e-05 6.0e-11 4.4e-04 ...
##  $ Percent_in_Humans             : num  1.0e+01 NA 3.0e-06 4.0e-08 7.0e-05 2.3e+01 2.6 6.1e+01 3.7e-03 NA ...
##  $ Atomic_Radius                 : num  5.30e-11 3.10e-11 1.67e-10 1.12e-10 8.70e-11 ...
##  $ Covalent_Radius               : num  3.70e-11 3.20e-11 1.34e-10 9.00e-11 8.20e-11 ...
##  $ Van_der_Waals_Radius          : num  1.20e-10 1.40e-10 1.82e-10 NA NA 1.70e-10 1.55e-10 1.52e-10 1.47e-10 1.54e-10 ...
##  $ Space_Group_Name              : chr  &amp;quot;P63/mmc&amp;quot; &amp;quot;Fm_\n3m&amp;quot; &amp;quot;Im_\n3m&amp;quot; &amp;quot;P63/mmc&amp;quot; ...
##  $ Space_Group_Number            : num  194 225 229 194 166 194 194 12 15 225 ...
##  $ HalfLife                      : num  Inf Inf Inf Inf Inf ...
##  $ Lifetime                      : num  Inf Inf Inf Inf Inf ...
##  $ Decay_Mode                    : chr  NA NA NA NA ...
##  $ Quantum_Numbers               : chr  &amp;quot;2S1/2&amp;quot; &amp;quot;1S0&amp;quot; &amp;quot;2S1/2&amp;quot; &amp;quot;1S0&amp;quot; ...
##  $ Neutron_Cross_Section         : num  3.32e-01 7.00e-03 4.50e-02 9.20e-03 7.55e+02 3.50e-03 1.91 2.80e-04 9.60e-03 4.00e-02 ...
##  $ Neutron_Mass_Absorption       : num  1.1e-02 1.0e-05 NA 3.0e-05 2.4 1.5e-05 4.8e-03 1.0e-06 2.0e-05 6.0e-04 ...
##  $ Graph.Period                  : num  1 1 2 2 2 2 2 2 2 2 ...
##  $ Graph.Group                   : num  1 18 1 2 13 14 15 16 17 18 ...&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;properties-visualised&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Properties, visualised&lt;/h2&gt;
&lt;p&gt;Note: the physical state at which the values are stated are not always determined in this dataset. This is a weakness of the web-scraping algorithm, which does not record the notes accompanying many datapoints. This means that the usability of these plots are limited in scope. If someone has an open, curated dataset of elemental properties available, let me know!&lt;/p&gt;
&lt;p&gt;We can plot periodic tables of all available properties with just one chunk (using some looping, of course).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;for (k in 1:dim(values)[2]) {
   # withhold some columns from plotting
   if (names(values)[k] %in% donotplot) {
      next
   }
   # numeric or character column?
   if (class(values[, k]) == &amp;quot;numeric&amp;quot;) {
      p &amp;lt;-
         continuous_property_as_periodic_table(data = data.frame(
            Graph.Group = values$Graph.Group,
            Graph.Period = values$Graph.Period,
            Symbol = values$Symbol,
            Property = gsub(&amp;quot;_&amp;quot;, &amp;quot; &amp;quot;, names(values)[k]),
            Values = values[, k],
            Unit = units[, k]))
      print(p)
      cat(paste(&amp;quot;Summary of&amp;quot;, gsub(&amp;quot;_&amp;quot;, &amp;quot; &amp;quot;, names(values)[k])), &amp;quot;\n&amp;quot;)
      print(summary(values[, k]))
   }
   if (class(values[, k]) == &amp;quot;character&amp;quot;) {
      p &amp;lt;-
         discrete_property_as_periodic_table(data = data.frame(
            Graph.Group = values$Graph.Group,
            Graph.Period = values$Graph.Period,
            Symbol = values$Symbol,
            Values = values[, k]),
            scale.title = gsub(&amp;quot;_&amp;quot;, &amp;quot; &amp;quot;, names(values)[k]),
            scale.ncol = 3)
      print(p)
      cat(paste(&amp;quot;Count of&amp;quot;, gsub(&amp;quot;_&amp;quot;, &amp;quot; &amp;quot;, names(values)[k])), &amp;quot;\n&amp;quot;)
      print(count(values, vars = values[, k]))
   }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Atomic Number 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00   30.25   59.50   59.50   88.75  118.00&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-2.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Atomic Weight 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   1.008  65.409 140.908 144.877 226.000 294.000       1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-3.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Density 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
##     0.09  2545.00  7140.00  7645.57 10385.00 22650.00       23&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-4.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Melting Point 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   14.01  544.45 1204.15 1296.57 1811.15 3823.15      17&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-5.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Boiling Point 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##    4.22 1193.90 2816.15 2558.87 3604.40 5869.15      24&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-6.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of Phase 
##     vars  n
## 1    Gas 11
## 2 Liquid  2
## 3  Solid 86
## 4   &amp;lt;NA&amp;gt; 19&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-7.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Critical Pressure 
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max.      NA&amp;#39;s 
##    227000   5043000   7991000  20654048  16000000 172000000        97&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-8.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Critical Temperature 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##    5.19  150.87  416.90  963.74 1766.00 3223.00      97&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-9.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Heat of Fusion 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##    0.02    5.40   10.00   13.77   18.70  105.00      25&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-10.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Heat of Vaporization 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   0.083  73.225 272.500 265.906 380.000 800.000      24&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-11.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Heat of Combustion 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
## -9055.0  -829.0  -536.0 -1731.7  -345.5  -182.0     111&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-12.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Specific Heat 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##    63.0   159.6   241.0   624.5   496.8 14300.0      30&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-13.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of Adiabatic Index 
##   vars   n
## 1  5/3   6
## 2  7/5   5
## 3 &amp;lt;NA&amp;gt; 107&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-14.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Neel Point 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##    12.5    69.0   100.0   127.2   155.0   393.0     107&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-15.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Thermal Conductivity 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
##   0.0036  10.0000  23.5000  58.0440  81.5000 430.0000       24&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-16.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Thermal Expansion 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
## 0.00000 0.00001 0.00001 0.00002 0.00002 0.00012      55&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-17.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Density Liquid 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##     512    4240    6980    7706    9330   20000      49&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-18.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Molar Volume 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
## 0.000004 0.000010 0.000017 0.002021 0.000023 0.022820       23&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-19.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Brinell Hardness 
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max.      NA&amp;#39;s 
## 1.400e+05 1.995e+08 4.900e+08 7.087e+08 8.070e+08 3.920e+09        59&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-20.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Mohs Hardness 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##  200000 1875000 3000000 3740000 6000000 9300000      63&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-21.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Vickers Hardness 
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max.      NA&amp;#39;s 
## 1.670e+08 4.060e+08 6.080e+08 2.108e+09 1.203e+09 4.900e+10        79&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-22.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Bulk Modulus 
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max.      NA&amp;#39;s 
## 1.100e+09 2.800e+10 4.500e+10 9.079e+10 1.400e+11 3.800e+11        49&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-23.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Shear Modulus 
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max.      NA&amp;#39;s 
## 1.300e+09 1.575e+10 2.650e+10 4.685e+10 4.725e+10 2.220e+11        58&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-24.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Young Modulus 
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max.      NA&amp;#39;s 
## 1.700e+09 3.700e+10 6.800e+10 1.105e+11 1.290e+11 5.280e+11        55&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-25.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Poisson Ratio 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##  0.0320  0.2525  0.2800  0.2924  0.3375  0.4500      64&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-26.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Refractive Index 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   1.000   1.000   1.001   1.075   1.001   2.417      99&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-27.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Speed of Sound 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##     206    1948    2750    3506    4626   18350      46&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-28.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Valence 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   0.000   3.000   4.000   3.776   5.000   7.000      11&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-29.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Electronegativity 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   0.700   1.285   1.625   1.737   2.175   3.980      24&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-30.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of ElectronAffinity 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##    0.00   21.07   50.00   76.16  105.38  349.00      32&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-31.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Autoignition Point 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   373.1   430.4   593.1   594.6   728.1   903.1     100&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-32.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Flashpoint 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   255.2   260.6   290.1   463.6   655.6   918.1     112&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-33.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of DOT Hazard Class 
##    vars  n
## 1   2.1  1
## 2   2.2  7
## 3   2.3  1
## 4   4.1 26
## 5   4.2  8
## 6   4.3  8
## 7   6.1  6
## 8     7  3
## 9     8  4
## 10 &amp;lt;NA&amp;gt; 54&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-34.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of DOT Numbers 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##    1073    1748    2730    2516    3089    9192      52&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-35.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of NFPA Fire Rating 
##   vars  n
## 1    0 17
## 2    1 13
## 3    2  6
## 4    3  7
## 5    4  4
## 6 &amp;lt;NA&amp;gt; 71&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-36.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of NFPA Health Rating 
##   vars  n
## 1    0  3
## 2    1 15
## 3    2 13
## 4    3 12
## 5    4  2
## 6 &amp;lt;NA&amp;gt; 73&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-37.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of NFPA Reactivity Rating 
##   vars  n
## 1    0 26
## 2    1  7
## 3    2  9
## 4    3  1
## 5    4  1
## 6 &amp;lt;NA&amp;gt; 74&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-38.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of Block 
##   vars  n
## 1    d 40
## 2    f 28
## 3    p 37
## 4    s 13&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-39.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of Color 
##         vars  n
## 1      Black  2
## 2  Colorless 11
## 3     Copper  1
## 4       Gold  1
## 5       Gray 14
## 6        Red  1
## 7     Silver 59
## 8  SlateGray  5
## 9     Yellow  2
## 10      &amp;lt;NA&amp;gt; 22&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-40.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of Gas phase 
##         vars   n
## 1   Diatomic   5
## 2 Monoatomic   6
## 3       &amp;lt;NA&amp;gt; 107&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-41.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of Electrical Type 
##            vars  n
## 1     Conductor 72
## 2     Insulator  5
## 3 Semiconductor  3
## 4          &amp;lt;NA&amp;gt; 38&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-42.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Electrical Conductivity 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
##        0  1100000  4200000  8775038 11250000 62000000       38&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-43.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Resistivity 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
## 0.00e+00 0.00e+00 0.00e+00 1.25e+13 0.00e+00 1.00e+15       38&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-44.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Superconducting Point 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   0.015   0.490   1.083   2.059   3.410   9.250      85&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-45.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of Magnetic Type 
##                vars  n
## 1 Antiferromagnetic  1
## 2       Diamagnetic 31
## 3     Ferromagnetic  4
## 4      Paramagnetic 29
## 5              &amp;lt;NA&amp;gt; 53&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-46.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Curie Point 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##    20.0    32.0   222.0   416.2   631.0  1394.0     109&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-47.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Mass Magnetic Susceptibility 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##   0e+00   0e+00   0e+00   0e+00   0e+00   1e-05      36&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-48.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Molar Magnetic Susceptibility 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##       0       0       0       0       0       0      36&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-49.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Volume Magnetic Susceptibility 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
## -0.00017 -0.00001  0.00001  0.00340  0.00026  0.11178       37&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-50.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Percent in Universe 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##  0.0000  0.0000  0.0000  1.2056  0.0002 75.0000      35&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-51.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Percent in Sun 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
##  0.00000  0.00000  0.00000  0.95902  0.00003 75.00000       14&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-52.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Percent in Meteorites 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
##  0.00000  0.00000  0.00002  0.94255  0.00071 40.00000       11&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-53.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Percent in Earths Crust 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
##  0.00000  0.00000  0.00011  0.88241  0.00298 46.00000        4&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-54.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Percent in Oceans 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##  0.0000  0.0000  0.0000  0.9125  0.0000 86.0000       8&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-55.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Percent in Humans 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
##  0.00000  0.00000  0.00000  1.33104  0.00014 61.00000       43&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-56.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Atomic Radius 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##       0       0       0       0       0       0      34&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-57.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Covalent Radius 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##       0       0       0       0       0       0      47&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-58.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Van der Waals Radius 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##       0       0       0       0       0       0      80&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-59.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of HalfLife 
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 0.000e+00 4.333e+11       Inf       Inf       Inf       Inf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-60.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Lifetime 
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
## 0.000e+00 6.247e+11       Inf       Inf       Inf       Inf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-61.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Count of Decay Mode 
##              vars  n
## 1   AlphaEmission 32
## 2       BetaDecay  3
## 3   BetaPlusDecay  1
## 4 ElectronCapture  1
## 5            &amp;lt;NA&amp;gt; 81&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-62.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Neutron Cross Section 
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA&amp;#39;s 
##     0.00     1.16     8.28   871.63    81.50 49000.00       20&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2015/01/30/element-properties/index_files/figure-html/unnamed-chunk-3-63.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Summary of Neutron Mass Absorption 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA&amp;#39;s 
##  0.0000  0.0006  0.0023  0.2093  0.0165  7.3000      35&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And that’s all for today.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;sessioninfo&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;sessionInfo()&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] common_0.0.2  knitr_1.37    dplyr_1.0.8   ggplot2_3.3.5
## 
## loaded via a namespace (and not attached):
##  [1] bslib_0.3.1      compiler_4.0.5   pillar_1.7.0     jquerylib_0.1.4 
##  [5] tools_4.0.5      digest_0.6.29    jsonlite_1.7.3   evaluate_0.14   
##  [9] lifecycle_1.0.1  tibble_3.1.6     gtable_0.3.0     pkgconfig_2.0.3 
## [13] rlang_1.0.1      DBI_1.1.2        cli_3.2.0        yaml_2.2.2      
## [17] blogdown_1.7     xfun_0.29        fastmap_1.1.0    withr_2.4.3     
## [21] stringr_1.4.0    generics_0.1.2   sass_0.4.0       vctrs_0.3.8     
## [25] tidyselect_1.1.2 glue_1.6.1       R6_2.5.1         fansi_1.0.2     
## [29] rmarkdown_2.11   bookdown_0.24    purrr_0.3.4      magrittr_2.0.2  
## [33] scales_1.1.1     htmltools_0.5.2  ellipsis_0.3.2   assertthat_0.2.1
## [37] colorspace_2.0-2 utf8_1.2.2       stringi_1.7.6    munsell_0.5.0   
## [41] crayon_1.5.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Properties of the elements: data collection and ggplot2 tables</title>
      <link>//solarchemist.se/2014/11/16/element-data/</link>
      <pubDate>Sun, 16 Nov 2014 08:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2014/11/16/element-data/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#collecting-elemental-data&#34;&gt;Collecting elemental data&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#all-elemental-properties&#34;&gt;All elemental properties&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#collect-the-values-for-each-property&#34;&gt;Collect the values for each property&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#clean-up-all-the-value-strings&#34;&gt;Clean up all the value strings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#cleaning-up-the-units&#34;&gt;Cleaning up the units&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#visualising-elemental-data&#34;&gt;Visualising elemental data&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#final-preparations-before-plotting&#34;&gt;Final preparations before plotting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#plotting-continuous-elemental-properties&#34;&gt;Plotting continuous elemental properties&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#plotting-discrete-elemental-properties&#34;&gt;Plotting discrete elemental properties&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#conclusion&#34;&gt;Conclusion&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#minimal-working-example&#34;&gt;Minimal working example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#appendix&#34;&gt;Appendix&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#sessioninfo&#34;&gt;sessionInfo()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#todo&#34;&gt;Todo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#references&#34;&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div id=&#34;introduction&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;We will use &lt;code&gt;rvest&lt;/code&gt; and &lt;code&gt;magrittr&lt;/code&gt; to scrape elemental properties from &lt;a href=&#34;http://periodictable.com&#34;&gt;periodictable.com&lt;/a&gt;, and then plot the data in the form of the periodic table using &lt;code&gt;ggplot2&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is very common to visualise periodic trends in the elemental properties by using the well-established &lt;a href=&#34;http://old.iupac.org/reports/periodic_table/&#34;&gt;IUPAC periodic table&lt;/a&gt; as a canvas. In this post we will demonstrate how common &lt;code&gt;R&lt;/code&gt; tools can make the job quickly and near effortless, once the data is at hand.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(ggplot2)
library(dplyr)
library(grid)
library(XML)
library(httr)
library(rvest)
library(magrittr)
library(stringr)
library(knitr)
library(common)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;collecting-elemental-data&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Collecting elemental data&lt;/h2&gt;
&lt;p&gt;The website &lt;a href=&#34;http://periodictable.com&#34;&gt;periodictable.com&lt;/a&gt; lists a large number of properties for each element, and the data is displayed as not overly complicated HTML tables. The website states that it was created with Mathematica (by Wolfram Research), but even so, the quality of the data on the website is not too good. It appears to have suffered from whatever conversion was applied from the original Mathematica format.&lt;/p&gt;
&lt;p&gt;In any case, in this post the quality of the data is secondary to the goal of achieving a working proof of concept. Plus, our own scraping will inevatibly degrade data quality even more.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;element_data &amp;lt;- read_html(&amp;quot;http://periodictable.com/Elements/001/data.html&amp;quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Starting from this URL, we crawl the page and collect the URLs to all property pages, along with the name of each property.
We put them together in a dataframe, so it is clear which URL belongs to which elemental property.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# extract raw links and place it in a dataframe together with the link text
elemental_properties &amp;lt;-
   data.frame(property = element_data %&amp;gt;%
                 html_nodes(xpath = &amp;quot;//a&amp;quot;) %&amp;gt;%
                 html_text())
elemental_properties$links_raw &amp;lt;-
   element_data %&amp;gt;%
   html_nodes(xpath = &amp;quot;//a&amp;quot;) %&amp;gt;%
   html_attr(&amp;quot;href&amp;quot;)
# drop any rows that do not begin &amp;quot;../../&amp;quot;
elemental_properties &amp;lt;-
   elemental_properties[
      grep(pattern = &amp;quot;^\\.\\./\\.\\./&amp;quot;,
           x = elemental_properties$links_raw), ]
# remove the leading ../.. (relative link signifier)
elemental_properties$links_trail &amp;lt;-
   gsub(pattern = &amp;quot;^\\.\\./\\.\\./&amp;quot;,
        replacement = &amp;quot;&amp;quot;,
        x = elemental_properties$links_raw)
# keep only the rows that begin with &amp;quot;Properties&amp;quot;
elemental_properties &amp;lt;-
   elemental_properties[
      grep(pattern = &amp;quot;^Properties&amp;quot;,
           x = elemental_properties$links_trail), ]
# make full urls
elemental_properties$url &amp;lt;-
   paste0(&amp;quot;http://periodictable.com/&amp;quot;,
          elemental_properties$links_trail)
# modify the URL so it sorts the table by atomic number
# (this is a feature of periodictable.com, they offer lists sortered in different ways
# for each property)
elemental_properties$url &amp;lt;-
   sub(pattern = &amp;quot;\\.html$&amp;quot;,
       replacement = &amp;quot;.an.html&amp;quot;,
       x = elemental_properties$url)
# we are done, go ahead and drop the no longer required columns
# links_raw, links_trail
elemental_properties &amp;lt;-
   elemental_properties[, -c(2,3)]
# oh, and add a sanitised version of the property names
elemental_properties$sanitized &amp;lt;-
   # replace spaces with underscores
   gsub(&amp;quot;\\s+&amp;quot;, &amp;quot;_&amp;quot;,
        # replace &amp;quot;%&amp;quot; with &amp;quot;percent&amp;quot;
        gsub(&amp;quot;%&amp;quot;, &amp;quot;Percent&amp;quot;,
             # remove parentheses and dashes
             gsub(&amp;quot;[()-]&amp;quot;, &amp;quot;&amp;quot;,
                  # remove apostrophes
                  gsub(&amp;quot;&amp;#39;&amp;quot;, &amp;quot;&amp;quot;, elemental_properties$property))))
# NOTE: Melting point and Boiling point are duplicated because they are displayed twice
#       on the data page for Hydrogen, both under &amp;quot;Overview&amp;quot; and &amp;quot;Thermal properties&amp;quot;.
#       So we should deduplicate the dataframe.
elemental_properties &amp;lt;- unique(elemental_properties)
# reset the row numbering
row.names(elemental_properties) &amp;lt;- seq(1, dim(elemental_properties)[1])&lt;/code&gt;&lt;/pre&gt;
&lt;div id=&#34;all-elemental-properties&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;All elemental properties&lt;/h3&gt;
&lt;p&gt;The list of elemental properties available from &lt;a href=&#34;http://periodictable.com&#34;&gt;periodictable.com&lt;/a&gt;. As collected (may contain some duplicates, these will be removed later).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;print(elemental_properties$property)
##  [1] &amp;quot;Name&amp;quot;                           &amp;quot;Symbol&amp;quot;                        
##  [3] &amp;quot;Atomic Number&amp;quot;                  &amp;quot;Atomic Weight&amp;quot;                 
##  [5] &amp;quot;Density&amp;quot;                        &amp;quot;Melting Point&amp;quot;                 
##  [7] &amp;quot;Boiling Point&amp;quot;                  &amp;quot;Phase&amp;quot;                         
##  [9] &amp;quot;Absolute Melting Point&amp;quot;         &amp;quot;Absolute Boiling Point&amp;quot;        
## [11] &amp;quot;Critical Pressure&amp;quot;              &amp;quot;Critical Temperature&amp;quot;          
## [13] &amp;quot;Heat of Fusion&amp;quot;                 &amp;quot;Heat of Vaporization&amp;quot;          
## [15] &amp;quot;Specific Heat&amp;quot;                  &amp;quot;Adiabatic Index&amp;quot;               
## [17] &amp;quot;Neel Point&amp;quot;                     &amp;quot;Thermal Conductivity&amp;quot;          
## [19] &amp;quot;Thermal Expansion&amp;quot;              &amp;quot;Density (Liquid)&amp;quot;              
## [21] &amp;quot;Molar Volume&amp;quot;                   &amp;quot;Brinell Hardness&amp;quot;              
## [23] &amp;quot;Mohs Hardness&amp;quot;                  &amp;quot;Vickers Hardness&amp;quot;              
## [25] &amp;quot;Bulk Modulus&amp;quot;                   &amp;quot;Shear Modulus&amp;quot;                 
## [27] &amp;quot;Young Modulus&amp;quot;                  &amp;quot;Poisson Ratio&amp;quot;                 
## [29] &amp;quot;Refractive Index&amp;quot;               &amp;quot;Speed of Sound&amp;quot;                
## [31] &amp;quot;Valence&amp;quot;                        &amp;quot;Electronegativity&amp;quot;             
## [33] &amp;quot;ElectronAffinity&amp;quot;               &amp;quot;Ionization Energies&amp;quot;           
## [35] &amp;quot;DOT Hazard Class&amp;quot;               &amp;quot;DOT Numbers&amp;quot;                   
## [37] &amp;quot;RTECS Number&amp;quot;                   &amp;quot;NFPA Label&amp;quot;                    
## [39] &amp;quot;Alternate Names&amp;quot;                &amp;quot;Names of Allotropes&amp;quot;           
## [41] &amp;quot;Block&amp;quot;                          &amp;quot;Group&amp;quot;                         
## [43] &amp;quot;Period&amp;quot;                         &amp;quot;Series&amp;quot;                        
## [45] &amp;quot;Electron Configuration&amp;quot;         &amp;quot;Color&amp;quot;                         
## [47] &amp;quot;Discovery&amp;quot;                      &amp;quot;Gas phase&amp;quot;                     
## [49] &amp;quot;CAS Number&amp;quot;                     &amp;quot;CID Number&amp;quot;                    
## [51] &amp;quot;Electrical Type&amp;quot;                &amp;quot;Electrical Conductivity&amp;quot;       
## [53] &amp;quot;Resistivity&amp;quot;                    &amp;quot;Superconducting Point&amp;quot;         
## [55] &amp;quot;Magnetic Type&amp;quot;                  &amp;quot;Curie Point&amp;quot;                   
## [57] &amp;quot;Mass Magnetic Susceptibility&amp;quot;   &amp;quot;Molar Magnetic Susceptibility&amp;quot; 
## [59] &amp;quot;Volume Magnetic Susceptibility&amp;quot; &amp;quot;% in Universe&amp;quot;                 
## [61] &amp;quot;% in Sun&amp;quot;                       &amp;quot;% in Meteorites&amp;quot;               
## [63] &amp;quot;% in Earth&amp;#39;s Crust&amp;quot;             &amp;quot;% in Oceans&amp;quot;                   
## [65] &amp;quot;% in Humans&amp;quot;                    &amp;quot;Atomic Radius&amp;quot;                 
## [67] &amp;quot;Covalent Radius&amp;quot;                &amp;quot;Van der Waals Radius&amp;quot;          
## [69] &amp;quot;Crystal Structure&amp;quot;              &amp;quot;Lattice Angles&amp;quot;                
## [71] &amp;quot;Lattice Constants&amp;quot;              &amp;quot;Space Group Name&amp;quot;              
## [73] &amp;quot;Space Group Number&amp;quot;             &amp;quot;Half-Life&amp;quot;                     
## [75] &amp;quot;Lifetime&amp;quot;                       &amp;quot;Decay Mode&amp;quot;                    
## [77] &amp;quot;Quantum Numbers&amp;quot;                &amp;quot;Neutron Cross Section&amp;quot;         
## [79] &amp;quot;Neutron Mass Absorption&amp;quot;        &amp;quot;Known Isotopes&amp;quot;                
## [81] &amp;quot;Stable Isotopes&amp;quot;                &amp;quot;Isotopic Abundances&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;collect-the-values-for-each-property&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Collect the values for each property&lt;/h3&gt;
&lt;p&gt;Each property, e.g., density, will have a &lt;em&gt;value&lt;/em&gt; for each element of the periodic table. This value is just a string, and depending on the type of the property, it may be just a number, or a quantity with a unit, or some text with various attributes.&lt;/p&gt;
&lt;p&gt;At this stage, we don’t mind the internal structure of the value, we just want to collect it. We will collect all property values into one dataframe.&lt;/p&gt;
&lt;p&gt;Looking slightly ahead, you will realise that the only way to allow different types (character, numeric, etc.) in different columns is if each &lt;em&gt;property&lt;/em&gt; is mapped onto one &lt;em&gt;column&lt;/em&gt;. Thus, we will build the dataframe with properties as columns, and elements as rows.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# get the name of all the elements (two-step process)
element_names &amp;lt;-
   read_html(elemental_properties$url[1]) %&amp;gt;%
   html_nodes(&amp;quot;table&amp;quot;) %&amp;gt;%
   extract2(1) %&amp;gt;%
   html_nodes(&amp;quot;table&amp;quot;) %&amp;gt;%
   extract2(8) %&amp;gt;%
   html_nodes(&amp;quot;td&amp;quot;) %&amp;gt;%
   html_text()
element_names &amp;lt;-
   element_names[
      read_html(elemental_properties$url[1]) %&amp;gt;%
         html_nodes(&amp;quot;table&amp;quot;) %&amp;gt;%
         extract2(1) %&amp;gt;%
         html_nodes(&amp;quot;table&amp;quot;) %&amp;gt;%
         extract2(8) %&amp;gt;%
         html_nodes(&amp;quot;td&amp;quot;) %&amp;gt;%
         html_attr(&amp;quot;align&amp;quot;) == &amp;quot;left&amp;quot;
      ]
# create a properly oriented elements dataframe
elements_raw &amp;lt;-
   data.frame(matrix(data = &amp;quot;&amp;quot;,
                     ncol = dim(elemental_properties)[1],
                     nrow = length(element_names),
                     byrow = TRUE))
names(elements_raw) &amp;lt;- elemental_properties$sanitized
elements_raw$Name &amp;lt;- element_names&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Some property pages (listed below) are difficult to parse (due to the way the data is presented on the webpage). For now, we just skip those pages (no big loss).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;skip_properties &amp;lt;-
   c(&amp;quot;Ionization_Energies&amp;quot;,
     &amp;quot;NFPA_Hazards&amp;quot;,
     &amp;quot;NFPA_Label&amp;quot;,
     &amp;quot;Names_of_Allotropes&amp;quot;,
     &amp;quot;Discovery&amp;quot;,
     &amp;quot;Crystal_Structure&amp;quot;,
     &amp;quot;Lattice_Angles&amp;quot;,
     &amp;quot;Lattice_Constants&amp;quot;,
     &amp;quot;Known_Isotopes&amp;quot;,
     &amp;quot;Stable_Isotopes&amp;quot;,
     &amp;quot;Isotopic_Abundances&amp;quot;)
# drop those rows from elemental_properties
elemental_properties &amp;lt;-
   elemental_properties[-which(elemental_properties$sanitized %in% skip_properties), ]
# drop those columns from elements_raw
elements_raw &amp;lt;-
   elements_raw[, -which(names(elements_raw) %in% skip_properties)]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ok, now we have the skeleton for a dataframe. Let’s populate it.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# re-read only if rda file does not exist (saves time when compiling)
if (!file.exists(here::here(&amp;quot;assets/element-data-raw.rda&amp;quot;))) {
   for (k in 2:length(elemental_properties$property)) {
      message(paste0(&amp;quot;Reading property page (&amp;quot;, k-1, &amp;quot; of &amp;quot;, length(elemental_properties$property)-1, &amp;quot;): &amp;quot;, elemental_properties$property[k]))
      property &amp;lt;-
         read_html(elemental_properties$url[k]) %&amp;gt;%
         html_nodes(&amp;quot;table&amp;quot;) %&amp;gt;%
         extract2(1) %&amp;gt;%
         html_nodes(&amp;quot;table&amp;quot;) %&amp;gt;%
         extract2(8) %&amp;gt;%
         html_nodes(&amp;quot;td&amp;quot;) %&amp;gt;%
         html_text()
      property &amp;lt;-
         property[
            read_html(elemental_properties$url[k]) %&amp;gt;%
               html_nodes(&amp;quot;table&amp;quot;) %&amp;gt;%
               extract2(1) %&amp;gt;%
               html_nodes(&amp;quot;table&amp;quot;) %&amp;gt;%
               extract2(8) %&amp;gt;%
               html_nodes(&amp;quot;td&amp;quot;) %&amp;gt;%
               html_attr(&amp;quot;align&amp;quot;) == &amp;quot;left&amp;quot;
            ]
      # for debugging purposes
      # print(paste(elemental_properties$property[k], &amp;quot;:&amp;quot;, length(property)))
      # assign to elements_raw
      elements_raw[, k] &amp;lt;- property
   }
   # save this dataframe to file
   # (it is not large, but re-scraping the contents takes time)
   save(elements_raw, file = here::here(&amp;quot;assets/element-data-raw.rda&amp;quot;))
} else {
   load(file = here::here(&amp;quot;assets/element-data-raw.rda&amp;quot;))
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Elemental property data collected! Next, we need to sanitize the data. As we mentioned earlier, the values may be of several different types. The biggest job is to deal with quantities and units.&lt;/p&gt;
&lt;p&gt;There might well be an easier way to do this, but to make the coding easy, we will create two empty dataframes (based on the existing &lt;code&gt;elements_raw&lt;/code&gt;, with identical dimensions and column names), and place quantities (and unit-less values) into one, and units into the other.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# creating new dataframes, templated on elements_raw
# notes is not used
values &amp;lt;- units &amp;lt;- notes &amp;lt;-
   data.frame(matrix(nrow = dim(elements_raw)[1],
                     ncol = dim(elements_raw)[2],
                     dimnames = list(seq(1, dim(elements_raw)[1]),
                                     names(elements_raw)),
                     byrow = TRUE))
# create a work-copy of elements_raw
elements_tmp &amp;lt;- elements_raw&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The tricky part will be to correctly determine what part of the values string is a quantity and what part is a unit. We will have to resort to regular expressions. Because of that, the following code is probably the most likely to break if anything should change at the data source.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;clean-up-all-the-value-strings&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Clean up all the value strings&lt;/h3&gt;
&lt;p&gt;We will use regular expressions to identify the different parts of each value string. See comments in the code below. Unfortunately, we found no way to clean up the value strings of each type of column (non-numeric, numbers-only, and quantity+unit) without using explicit, static assignments, as seen in the following three chunks. It is ugly, but it works, as long as no properties (i.e., columns) are added, removed, or renamed at the source.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# non-numeric columns to copy requiring only minor cleanup
# col numbers: 1  2  8 17 39 43 44 45 48 49 50 51 52 53 54 55 59 73 77 78
# 73 (Space_Group_Name, may require some fixing of notation)
cols &amp;lt;-
   c(&amp;quot;Name&amp;quot;,
     &amp;quot;Symbol&amp;quot;,
     &amp;quot;Phase&amp;quot;,
     &amp;quot;Adiabatic_Index&amp;quot;,
     &amp;quot;EU_Number&amp;quot;,
     &amp;quot;RTECS_Number&amp;quot;,
     &amp;quot;Alternate_Names&amp;quot;,
     &amp;quot;Block&amp;quot;,
     &amp;quot;Group&amp;quot;,
     &amp;quot;Period&amp;quot;,
     &amp;quot;Electron_Configuration&amp;quot;,
     &amp;quot;Color&amp;quot;,
     &amp;quot;Gas_phase&amp;quot;,
     &amp;quot;CAS_Number&amp;quot;,
     &amp;quot;CID_Number&amp;quot;,
     &amp;quot;Gmelin_Number&amp;quot;,
     &amp;quot;NSC_Number&amp;quot;,
     &amp;quot;Electrical_Type&amp;quot;,
     &amp;quot;Magnetic_Type&amp;quot;,
     &amp;quot;Space_Group_Name&amp;quot;,
     &amp;quot;Decay_Mode&amp;quot;,
     &amp;quot;Quantum_Numbers&amp;quot;)
for (k in 1:length(cols)) {
   values[, which(names(values) == cols[k])] &amp;lt;-
      gsub(&amp;quot;^None$&amp;quot;, &amp;quot;&amp;quot;,
           gsub(&amp;quot;^N/A$&amp;quot;, &amp;quot;&amp;quot;,
                gsub(&amp;quot;\\[note\\]&amp;quot;,
                     &amp;quot;&amp;quot;,
                     elements_tmp[, which(names(elements_tmp) == cols[k])])
                )
           )
   # set empty strings to NA (proper NA, not the string &amp;quot;NA&amp;quot;)
   values[which(values[, which(names(values) == cols[k])] == &amp;quot;&amp;quot;),
          which(names(values) == cols[k])] &amp;lt;- NA
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# numbers only cols
cols &amp;lt;-
   c(&amp;quot;Atomic_Number&amp;quot;,
     &amp;quot;Atomic_Weight&amp;quot;,
     &amp;quot;Molar_Volume&amp;quot;,
     &amp;quot;Poisson_Ratio&amp;quot;,
     &amp;quot;Refractive_Index&amp;quot;,
     &amp;quot;Valence&amp;quot;,
     &amp;quot;Electronegativity&amp;quot;,
     &amp;quot;DOT_Hazard_Class&amp;quot;,
     &amp;quot;DOT_Numbers&amp;quot;,
     &amp;quot;NFPA_Fire_Rating&amp;quot;,
     &amp;quot;NFPA_Health_Rating&amp;quot;,
     &amp;quot;NFPA_Reactivity_Rating&amp;quot;,
     &amp;quot;Superconducting_Point&amp;quot;,
     &amp;quot;Mass_Magnetic_Susceptibility&amp;quot;,
     &amp;quot;Molar_Magnetic_Susceptibility&amp;quot;,
     &amp;quot;Volume_Magnetic_Susceptibility&amp;quot;,
     &amp;quot;Space_Group_Number&amp;quot;,
     &amp;quot;Neutron_Cross_Section&amp;quot;,
     &amp;quot;Neutron_Mass_Absorption&amp;quot;)
for (k in 1:length(cols)) {
   values[, which(names(values) == cols[k])] &amp;lt;-
      as.numeric(gsub(&amp;quot;×10&amp;quot;, &amp;quot;E&amp;quot;,
                      gsub(&amp;quot;\\[note\\]&amp;quot;,
                           &amp;quot;&amp;quot;,
                           elements_tmp[, which(names(elements_tmp) == cols[k])])
                      )
                 )
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# numbers and units cols
cols &amp;lt;-
   c(&amp;quot;Density&amp;quot;,
     &amp;quot;Melting_Point&amp;quot;,
     &amp;quot;Boiling_Point&amp;quot;,
     &amp;quot;Absolute_Melting_Point&amp;quot;,
     &amp;quot;Absolute_Boiling_Point&amp;quot;,
     &amp;quot;Critical_Pressure&amp;quot;, # contains converted values in parentheses
     &amp;quot;Critical_Temperature&amp;quot;,
     &amp;quot;Heat_of_Fusion&amp;quot;,
     &amp;quot;Heat_of_Vaporization&amp;quot;,
     &amp;quot;Heat_of_Combustion&amp;quot;,
     &amp;quot;Specific_Heat&amp;quot;, # complex unit J/(Kg K)
     &amp;quot;Neel_Point&amp;quot;,
     &amp;quot;Thermal_Conductivity&amp;quot;, # complex unit W/(m K)
     &amp;quot;Thermal_Expansion&amp;quot;,
     &amp;quot;Density_Liquid&amp;quot;,
     &amp;quot;Brinell_Hardness&amp;quot;,
     &amp;quot;Mohs_Hardness&amp;quot;,
     &amp;quot;Vickers_Hardness&amp;quot;,
     &amp;quot;Bulk_Modulus&amp;quot;,
     &amp;quot;Shear_Modulus&amp;quot;,
     &amp;quot;Young_Modulus&amp;quot;,
     &amp;quot;Speed_of_Sound&amp;quot;,
     &amp;quot;ElectronAffinity&amp;quot;,
     &amp;quot;Autoignition_Point&amp;quot;,
     &amp;quot;Flashpoint&amp;quot;,
     &amp;quot;Electrical_Conductivity&amp;quot;,
     &amp;quot;Resistivity&amp;quot;,
     &amp;quot;Curie_Point&amp;quot;,
     &amp;quot;Percent_in_Universe&amp;quot;,
     &amp;quot;Percent_in_Sun&amp;quot;, # makes use of &amp;quot;None&amp;quot; in lieu of zero
     &amp;quot;Percent_in_Meteorites&amp;quot;, # makes use of &amp;quot;None&amp;quot; in lieu of zero
     &amp;quot;Percent_in_Earths_Crust&amp;quot;, # makes use of &amp;quot;None&amp;quot; in lieu of zero
     &amp;quot;Percent_in_Oceans&amp;quot;, # makes use of &amp;quot;None&amp;quot; in lieu of zero
     &amp;quot;Percent_in_Humans&amp;quot;, # makes use of &amp;quot;None&amp;quot; in lieu of zero
     &amp;quot;Atomic_Radius&amp;quot;,
     &amp;quot;Covalent_Radius&amp;quot;,
     &amp;quot;Van_der_Waals_Radius&amp;quot;,
     &amp;quot;HalfLife&amp;quot;, # mix between &amp;quot;Stable&amp;quot; and num + unit
     &amp;quot;Lifetime&amp;quot;) # mix between &amp;quot;Stable&amp;quot; and num + unit
for (k in 1:length(cols)) {
   for (i in 1:length(elements_tmp[, which(names(elements_tmp) %in% cols[k])])) {
      # replace the string &amp;quot;None&amp;quot; with actual zero
      elements_tmp[, which(names(elements_tmp) %in% cols)][i, k] &amp;lt;-
         ifelse(elements_tmp[, which(names(elements_tmp) %in% cols)][i, k] == &amp;quot;None&amp;quot;,
                &amp;quot;0&amp;quot;,
                elements_tmp[, which(names(elements_tmp) %in% cols)][i, k])
      # replace the string &amp;quot;Stable&amp;quot; with &amp;quot;Inf&amp;quot;
      elements_tmp[, which(names(elements_tmp) %in% cols)][i, k] &amp;lt;-
         ifelse(elements_tmp[, which(names(elements_tmp) %in% cols)][i, k] == &amp;quot;Stable&amp;quot;,
                &amp;quot;Inf&amp;quot;,
                elements_tmp[, which(names(elements_tmp) %in% cols)][i, k])
      # look for numbers (also for &amp;quot;Inf&amp;quot;)
      mtch &amp;lt;-
         regexpr(pattern = &amp;quot;Inf|[-×\\.0-9]+&amp;quot;,
                 text = elements_tmp[, which(names(elements_tmp) %in% cols)][i, k])
      # assign numeric value to &amp;quot;values&amp;quot;
      values[i, which(names(values) == cols[k])] &amp;lt;-
         as.numeric(
            sub(
               pattern = &amp;quot;×10&amp;quot;,
               replacement = &amp;quot;E&amp;quot;,
               x = substr(x = elements_tmp[, which(names(elements_tmp) %in% cols)][i, k],
                          start = 1,
                          stop = attr(mtch, &amp;quot;match.length&amp;quot;))))
      # assign unit part to &amp;quot;units&amp;quot; by eliminating the numeric part
      units[i, which(names(values) == cols[k])] &amp;lt;-
         # remove leading or trailing spaces
         sub(&amp;quot;^\\s+&amp;quot;, &amp;quot;&amp;quot;, sub(&amp;quot;\\s+$&amp;quot;, &amp;quot;&amp;quot;,
                 # remove the numeric part
                 sub(&amp;quot;Inf|[-×\\.0-9]+&amp;quot;, &amp;quot;&amp;quot;,
                     # remove any numbers+units within parentheses
                     sub(&amp;quot;\\([.0-9]+\\s[A-Za-z]+\\)&amp;quot;, &amp;quot;&amp;quot;,
                         # remove notes
                         sub(&amp;quot;\\[note\\]&amp;quot;, &amp;quot;&amp;quot;,
                             # remove &amp;quot;N/A&amp;quot; strings
                             sub(&amp;quot;N/A&amp;quot;,
                                 &amp;quot;&amp;quot;,
                                 elements_tmp[, which(
                                    names(elements_tmp) %in% cols)][i, k]
                                 )
                             )
                         )
                     )
                 )
             )
   }
   # set empty strings to NA (proper NA, not the string &amp;quot;NA&amp;quot;)
   values[which(values[, which(names(values) == cols[k])] == &amp;quot;&amp;quot;),
          which(names(values) == cols[k])] &amp;lt;- NA
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;cleaning-up-the-units&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Cleaning up the units&lt;/h3&gt;
&lt;p&gt;Now that we have separated the units and the quantities into separate strings (dataframes, actually), let’s have a look at the units, to see if there’s any fixing needed.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Units by property (looking at the first 10)
tail(sapply(units, unique), 10)
## $Covalent_Radius
## [1] &amp;quot;pm&amp;quot; &amp;quot;&amp;quot;  
## 
## $Van_der_Waals_Radius
## [1] &amp;quot;pm&amp;quot; &amp;quot;&amp;quot;  
## 
## $Space_Group_Name
## [1] NA
## 
## $Space_Group_Number
## [1] NA
## 
## $HalfLife
## [1] &amp;quot;&amp;quot;   &amp;quot;y&amp;quot;  &amp;quot;h&amp;quot;  &amp;quot;d&amp;quot;  &amp;quot;m&amp;quot;  &amp;quot;ms&amp;quot;
## 
## $Lifetime
## [1] &amp;quot;&amp;quot;   &amp;quot;y&amp;quot;  &amp;quot;h&amp;quot;  &amp;quot;d&amp;quot;  &amp;quot;m&amp;quot;  &amp;quot;ms&amp;quot;
## 
## $Decay_Mode
## [1] NA
## 
## $Quantum_Numbers
## [1] NA
## 
## $Neutron_Cross_Section
## [1] NA
## 
## $Neutron_Mass_Absorption
## [1] NA&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, some properties (for example HalfLife) use more than one unit. This is problematic, since we will only be plotting against one y-axis, not several. So we will have to convert all such occurrences to their standard units, which means we have to take the numerical conversion of the quantity into consideration as well. Let’s do it.&lt;/p&gt;
&lt;p&gt;First, let’s see all units in the set.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# All units in the dataset
cat(paste(sort(unique(unlist(sapply(units, unique)))), collapse = &amp;quot;\n&amp;quot;))
## 
## %
## °C
## d
## g/cc
## g/cm3
## g/l
## GPa
## h
## J/(Kg K)
## K
## K-1
## kJ/mol
## KJ/mol
## m
## m Ω
## m/s
## MPa
## ms
## pm
## S/m
## W/(m K)
## y&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Some are equivalent to each other, and others can be reduced to base SI units, according to the following list, which we put together manually after inspecting the output above.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;## %
## GPa         =&amp;gt; Pa
## J/(Kg K)
## K
## K-1
## KJ/mol      =&amp;gt; kJ/mol (wrong case)
## MPa         =&amp;gt; Pa
## S/m
## W/(m K)
## d           =&amp;gt; s
## g/cc        =&amp;gt; kg/m^3
## g/cm3       =&amp;gt; kg/m^3
## g/l         =&amp;gt; kg/m^3
## h           =&amp;gt; s
## kJ/mol
## m
## m Ω
## m/s
## ms          =&amp;gt; s
## pm          =&amp;gt; m
## y           =&amp;gt; s
## °C          =&amp;gt; K&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Someone should probably tell &lt;a href=&#34;http://periodictable.com&#34;&gt;periodictable.com&lt;/a&gt; that they have a typo in some of their values with units of &lt;strong&gt;KJ/mol&lt;/strong&gt; instead of kJ/mol.&lt;/p&gt;
&lt;p&gt;Building up a match-and-replace dataframe to convert non-standard or simplifiable units to standard units. This will help simplify any visualisations as well as possible comparisons between properties.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# Build up a match-and-convert dataframe based on the list above
pcf &amp;lt;-
   # find any values with these units...
   data.frame(pattern = c(&amp;quot;GPa&amp;quot;,
                          &amp;quot;KJ/mol&amp;quot;,
                          &amp;quot;MPa&amp;quot;,
                          &amp;quot;d&amp;quot;,
                          &amp;quot;g/cc&amp;quot;,
                          &amp;quot;g/cm3&amp;quot;,
                          &amp;quot;g/l&amp;quot;,
                          &amp;quot;h&amp;quot;,
                          &amp;quot;ms&amp;quot;,
                          &amp;quot;pm&amp;quot;,
                          &amp;quot;y&amp;quot;,
                          &amp;quot;°C&amp;quot;),
              # ... and convert them into these units
              convert = c(&amp;quot;Pa&amp;quot;,
                          &amp;quot;kJ/mol&amp;quot;,
                          &amp;quot;Pa&amp;quot;,
                          &amp;quot;s&amp;quot;,
                          &amp;quot;kg/m^3&amp;quot;,
                          &amp;quot;kg/m^3&amp;quot;,
                          &amp;quot;kg/m^3&amp;quot;,
                          &amp;quot;s&amp;quot;,
                          &amp;quot;s&amp;quot;,
                          &amp;quot;m&amp;quot;,
                          &amp;quot;s&amp;quot;,
                          &amp;quot;K&amp;quot;),
              # using these conversion factors
              factor = c(&amp;quot;1E9&amp;quot;,
                         &amp;quot;1&amp;quot;,
                         &amp;quot;1E6&amp;quot;,
                         &amp;quot;86400&amp;quot;,
                         &amp;quot;1E3&amp;quot;,
                         &amp;quot;1E3&amp;quot;,
                         &amp;quot;1&amp;quot;,
                         &amp;quot;3600&amp;quot;,
                         &amp;quot;1E-3&amp;quot;,
                         &amp;quot;1E-12&amp;quot;,
                         &amp;quot;3.154E7&amp;quot;,
                         &amp;quot;+273.15&amp;quot;))
# Here we replace the values and the units according to pcf
for (k in 1:dim(units)[2]) {
   # if the entire column is NA, move to the next one
   if (all(is.na(units[, k]))) {next}
   for (i in 1:dim(units)[1]) {
      # jump to the next cell immediately if unit is empty
      if (units[i, k] == &amp;quot;&amp;quot;) {next}
      # for each cell, compare the unit to pcf$pattern,
      # and if they match, replace it with pcf$convert
      # and apply the conversion factor on the value
      # match() returns the position of the match
      # in pcf$pattern, or NA if no match was found
      hit &amp;lt;- match(units[i, k], pcf$pattern)
      if (!is.na(hit)) {
         # go ahead and replace unit and convert value
         units[i, k] &amp;lt;- pcf$convert[hit]
         # had to find a way to handle the odd addition operation,
         # opted to do it with a string operation and this if-else
         if (substr(pcf$factor[hit], 1, 1) %in% c(&amp;quot;+&amp;quot;, &amp;quot;-&amp;quot;)) {
            if (substr(pcf$factor[hit], 1, 1) == &amp;quot;-&amp;quot;) {
               values[i, k] &amp;lt;-
                  values[i, k] + as.numeric(pcf$factor[hit])
            } else {
               values[i, k] &amp;lt;-
                  values[i, k] + as.numeric(sub(&amp;quot;^\\+&amp;quot;, &amp;quot;&amp;quot;, pcf$factor[hit]))
            }
         } else {
            # not addition/subtraction operation
            values[i, k] &amp;lt;-
               values[i, k] * as.numeric(pcf$factor[hit])
         }
      }
   }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;visualising-elemental-data&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Visualising elemental data&lt;/h2&gt;
&lt;p&gt;First, an abridged look at the data itself.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# show the first 10 elemental property quantities/values
str(values, list.len = 10)
## &amp;#39;data.frame&amp;#39;:    118 obs. of  80 variables:
##  $ Name                          : chr  &amp;quot;Hydrogen&amp;quot; &amp;quot;Niobium&amp;quot; &amp;quot;Thallium&amp;quot; &amp;quot;Helium&amp;quot; ...
##  $ Symbol                        : chr  &amp;quot;H&amp;quot; &amp;quot;Nb&amp;quot; &amp;quot;Tl&amp;quot; &amp;quot;He&amp;quot; ...
##  $ Atomic_Number                 : num  1 41 81 2 42 82 3 43 83 4 ...
##  $ Atomic_Weight                 : num  1.01 92.91 204.38 4 95.94 ...
##  $ Density                       : num  8.99e-02 8.57e+03 1.18e+04 1.78e-01 1.03e+04 ...
##  $ Melting_Point                 : num  14 2750 577 NA 2896 ...
##  $ Boiling_Point                 : num  20.28 5017.15 1746.15 4.22 4912.15 ...
##  $ Phase                         : chr  &amp;quot;Gas&amp;quot; &amp;quot;Solid&amp;quot; &amp;quot;Solid&amp;quot; &amp;quot;Gas&amp;quot; ...
##  $ Absolute_Melting_Point        : num  14 2750 577 NA 2896 ...
##  $ Absolute_Boiling_Point        : num  20.28 5017 1746 4.22 4912 ...
##   [list output truncated]
# show the first 10 elemental units
str(units, list.len = 10)
## &amp;#39;data.frame&amp;#39;:    118 obs. of  80 variables:
##  $ Name                          : logi  NA NA NA NA NA NA ...
##  $ Symbol                        : logi  NA NA NA NA NA NA ...
##  $ Atomic_Number                 : logi  NA NA NA NA NA NA ...
##  $ Atomic_Weight                 : logi  NA NA NA NA NA NA ...
##  $ Density                       : chr  &amp;quot;kg/m^3&amp;quot; &amp;quot;kg/m^3&amp;quot; &amp;quot;kg/m^3&amp;quot; &amp;quot;kg/m^3&amp;quot; ...
##  $ Melting_Point                 : chr  &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; &amp;quot;&amp;quot; ...
##  $ Boiling_Point                 : chr  &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; ...
##  $ Phase                         : logi  NA NA NA NA NA NA ...
##  $ Absolute_Melting_Point        : chr  &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; &amp;quot;&amp;quot; ...
##  $ Absolute_Boiling_Point        : chr  &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; &amp;quot;K&amp;quot; ...
##   [list output truncated]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, let’s try a typical plot of a property against atomic number.&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:AtomicWeight-vs-AtomicNumber&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/AtomicWeight-vs-AtomicNumber-1.svg&#34; alt=&#34;Atomic weight vs Z.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: Atomic weight vs Z.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Another plot of a property (density, this time) against atomic number.&lt;/p&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:Density-vs-AtomicNumber&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/Density-vs-AtomicNumber-1.svg&#34; alt=&#34;Density vs Z.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 2: Density vs Z.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Ok, it looks as one would expect. Not very exciting, though.&lt;/p&gt;
&lt;p&gt;We are now ready to attempt to overlay elemental properties on top of the periodic table. I think this is a worthwhile enterprise, because I have so far yet to see a way to programmatically create a periodic table and overlay data visually on it.&lt;/p&gt;
&lt;p&gt;As a long-time LaTeX user myself, the drawing of the &lt;a href=&#34;http://www.texample.net/tikz/examples/periodic-table-of-chemical-elements/&#34;&gt;periodic table using TikZ by Ivan Griffin&lt;/a&gt; was at the same time brilliant and frustrating.&lt;/p&gt;
&lt;p&gt;Brilliant, because for the first time it gave writers (well, at least writers familiar with LaTeX and TikZ) the ability to easily create our own periodic tables, as well as to customise them. Frustrating, because there was no easy way to tie the generation of the TikZ-based periodic table into available periodic trend data. Of course, this was an inherent shortcoming of TikZ/LaTeX more than anything else.&lt;/p&gt;
&lt;p&gt;In this work, I have used &lt;code&gt;R&lt;/code&gt; with the &lt;code&gt;ggplot2&lt;/code&gt; plotting system to achieve this the visualisation of arbitrary elemental data over the canvas of the periodic table.&lt;/p&gt;
&lt;div id=&#34;final-preparations-before-plotting&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Final preparations before plotting&lt;/h3&gt;
&lt;p&gt;The periodic table places the elements next to each other, organised in rows (periods) and columns (groups) on a two-dimensional plot. Obviously, each element’s position on this plot is completely specified by its group and period.&lt;/p&gt;
&lt;p&gt;We will therefore introduce new group and new period variables, specifically for the purpose of plotting. We will not use the original group and period data for two reasons: some elements were not assigned a group and period in the original dataset, and we want some flexibility to adjust the coordinates to control the aesthetics of the plot.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;# rearrange values dataframe by atomic number
# simply to make assignments based on atomic number (below) possible
values &amp;lt;- arrange(values, Atomic_Number)
values$Graph.Period &amp;lt;- values$Period
units$Graph.Period &amp;lt;- &amp;quot;&amp;quot; # to maintain same dims as values
values$Graph.Group &amp;lt;- values$Group
units$Graph.Group &amp;lt;- &amp;quot;&amp;quot; # to maintain same dims as values
# lanthanoids 57-71: Period = 8, Group = seq(3, 17)
values$Graph.Period[seq(57,71)] &amp;lt;- 8.5
values$Graph.Group[seq(57,71)] &amp;lt;- seq(3, 17)
# actinoids 89-103: Period = 9, Group = seq(3, 17)
# increase period to increase the gap up to the transition block
values$Graph.Period[seq(89,103)] &amp;lt;- 9.5
values$Graph.Group[seq(89,103)] &amp;lt;- seq(3, 17)
# make graphical Group and Period numeric
values$Graph.Period &amp;lt;- as.numeric(values$Graph.Period)
values$Graph.Group &amp;lt;- as.numeric(values$Graph.Group)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With just a few lines, we can make a very quick-and-dirty periodic table (sans data) using &lt;tt&gt;ggplot2&lt;/tt&gt;:&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot() +
   scale_y_reverse() +
   geom_point(data = values,
              size = 14,
              shape = 0,
              aes(y = Graph.Period,
                  x = Graph.Group)) +
   geom_text(data = values,
             aes(label = Symbol,
                 y = Graph.Period,
                 x = Graph.Group))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-prototype-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;!--
### Correcting the elemental symbols

### continue editing here ###

It appears that [periodictable.com](periodictable.com) uses the wrong (i.e., outdated) elemental symbols for some of the most recently discovered elements. Wikipedia appears to have a more up-to-date [list of the chemical elements](http://en.wikipedia.org/wiki/List_of_elements).
--&gt;
&lt;/div&gt;
&lt;div id=&#34;plotting-continuous-elemental-properties&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Plotting continuous elemental properties&lt;/h3&gt;
&lt;p&gt;Let’s use the periodic table we created with &lt;code&gt;ggplot2&lt;/code&gt; to plot some of the continuous variables.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot() +
   geom_point(data = values,
              # size 14 fits well with fig.width = 9, fig.height = 5.25
              size = 14,
              # shape #22 allows both fill and colour to be
              # shape #15 only registers colour (is always filled)
              # shape #0 only registers colour (is always empty)
              shape = 15,
              aes(y = Graph.Period, x = Graph.Group, colour = Density)) +
   geom_text(data = values,
             colour = &amp;quot;white&amp;quot;,
             size = 3,
             fontface = &amp;quot;bold&amp;quot;,
             aes(label = Symbol, y = Graph.Period, x = Graph.Group)) +
   scale_x_continuous(breaks = seq(min(values$Graph.Group),
                                   max(values$Graph.Group)),
                      limits = c(min(values$Graph.Group) - 1,
                                 max(values$Graph.Group) + 1),
                      expand = c(0,0)) +
   scale_y_continuous(trans = &amp;quot;reverse&amp;quot;,
                      breaks = seq(min(values$Graph.Period),
                                   max(values$Graph.Period)),
                      limits = c(max(values$Graph.Period) + 1,
                                 min(values$Graph.Period) - 1.5),
                      expand = c(0,0)) +
   # set breaks and labels in the colourbar legend
   scale_colour_continuous(breaks = c(5E3, 10E3, 15E3, 20E3),
                           labels = c(&amp;quot;5&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;15&amp;quot;, &amp;quot;20&amp;quot;),
                           # range of colour
                           low = &amp;quot;#56B1F7&amp;quot;, high = &amp;quot;#132B43&amp;quot;,
                           # colour if value is NA
                           na.value = &amp;quot;grey70&amp;quot;) +
   # plot title (usually property and unit)
   annotate(&amp;quot;text&amp;quot;, x = 8, y = 0.6,
            vjust = 0,
            label = paste(&amp;quot;Density/&amp;quot;, &amp;quot;10^3*~kg~m&amp;quot;, &amp;quot;^-3&amp;quot;, sep=&amp;quot;&amp;quot;),
            # parse required if using superscripts or subscripts
            parse = TRUE) +
   theme(panel.grid.major = element_blank(),
         panel.grid.minor = element_blank(),
         plot.margin = unit(c(0, 0, -0.85, -0.85), &amp;quot;line&amp;quot;),
         axis.title = element_blank(),
         axis.text = element_blank(),
         axis.ticks = element_blank(),
         # center (roughly) over transition metal block
         legend.position = c(0.42, 0.91),
         legend.justification = c(0.5, 1),
         legend.direction = &amp;quot;horizontal&amp;quot;,
         # make the legend colourbar a little longer
         legend.key.width = unit(2.5, &amp;quot;line&amp;quot;),
         legend.title = element_blank(),
         legend.background = element_rect(fill = &amp;quot;transparent&amp;quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-continuous-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;A short explanation is in order. The boxes are inherently square, but we adjusted the plot dimensions (&lt;code&gt;fig.width&lt;/code&gt; and &lt;code&gt;fig.height&lt;/code&gt; in knitr parlance) to make sure the final appearance of the boxes is indeed square.
Colour is mapped to the numeric values of the plotted property, using the built-in &lt;code&gt;ggplot2::scale_colour_continuous()&lt;/code&gt; function.
And we positioned the required legend over the transition metal block, to conform with most other periodic tables out there.
Grayed-out elements lack data for the shown property.&lt;/p&gt;
&lt;p&gt;Here are some more periodic tables overlaid with other continuous elemental data.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-melting-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-boiling-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-thermalconductivity-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-electricalconductivity-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-electronegativity-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;We could easily change the print size of these plots, as well as export them to most common image formats. We could also easily switch from the current knitr and markdown document system to knitr and LaTeX to take advantage of the excellent math and symbol support of LaTeX.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;plotting-discrete-elemental-properties&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Plotting discrete elemental properties&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot() +
   geom_point(data = values,
              # size 14 fits well with fig.width = 9, fig.height = 5.25
              size = 14,
              # shape #22 allows both fill and colour to be
              # shape #15 only registers colour (is always filled)
              # shape #0 only registers colour (is always empty)
              shape = 15,
              aes(y = Graph.Period, x = Graph.Group, colour = Magnetic_Type)) +
   geom_text(data = values,
             colour = &amp;quot;white&amp;quot;,
             size = 3,
             fontface = &amp;quot;bold&amp;quot;,
             aes(label = Symbol, y = Graph.Period, x = Graph.Group)) +
   scale_x_continuous(breaks = seq(min(values$Graph.Group),
                                   max(values$Graph.Group)),
                      limits = c(min(values$Graph.Group) - 1,
                                 max(values$Graph.Group) + 1),
                      expand = c(0,0)) +
   scale_y_continuous(trans = &amp;quot;reverse&amp;quot;,
                      breaks = seq(min(values$Graph.Period),
                                   max(values$Graph.Period)),
                      limits = c(max(values$Graph.Period) + 1,
                                 min(values$Graph.Period) - 1.5),
                      expand = c(0,0)) +
   scale_colour_discrete(na.value = &amp;quot;grey70&amp;quot;) +
   # set the size of the legend boxes independent of geom_point&amp;#39;s aes
   guides(colour = guide_legend(override.aes = list(size = 5),
                                title = &amp;quot;Magnetic type&amp;quot;,
                                nrow = 2,
                                title.hjust = 0.5)) +
   theme(panel.grid.major = element_blank(),
         panel.grid.minor = element_blank(),
         plot.margin = unit(c(0, 0, -0.85, -0.85), &amp;quot;line&amp;quot;),
         axis.ticks = element_blank(),
         axis.title = element_blank(),
         axis.text = element_blank(),
         # center (roughly) over transition metal block
         legend.position = c(0.42, 0.93),
         legend.justification = c(0.5, 1),
         legend.direction = &amp;quot;vertical&amp;quot;,
         legend.key.size = unit(0.8, &amp;quot;line&amp;quot;),
         legend.title = element_text(size = 15,
                                     face = &amp;quot;plain&amp;quot;),
         legend.key = element_rect(fill = &amp;quot;transparent&amp;quot;,
                                   colour = &amp;quot;transparent&amp;quot;),
         legend.background = element_rect(fill = &amp;quot;transparent&amp;quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-discrete-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Some more with discrete variables:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-phase-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-electricaltype-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;//solarchemist.se/2014/11/16/element-data/index_files/figure-html/periodic-ggplot2-decaymode-1.svg&#34; width=&#34;100%&#34; style=&#34;display: block; margin: auto;&#34; /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;conclusion&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We have successfully demonstrated how &lt;code&gt;ggplot2&lt;/code&gt; may be used to programmatically generate plots of elemental properties in the form of the typical periodic table.&lt;/p&gt;
&lt;p&gt;To do this, we also had to scrape and collect a database of elemental property data from public webpages.&lt;/p&gt;
&lt;p&gt;Our hope is that this will make it easier for chemists and others to generate periodic tables of whatever trend they wish to visualise.&lt;/p&gt;
&lt;p&gt;To make it easier to repeat this code, we have included an MWE below.&lt;/p&gt;
&lt;div id=&#34;minimal-working-example&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Minimal working example&lt;/h3&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;library(ggplot2)
library(dplyr)
library(grid)
library(XML)
library(httr)
library(rvest)
library(magrittr)
library(stringr)
library(knitr)
library(common)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Simply load this dataset: &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-elementdata2014&#34; role=&#34;doc-biblioref&#34;&gt;Ahmed 2014&lt;/a&gt;)&lt;/span&gt;.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;load(url(&amp;quot;http://files.figshare.com/1873544/element_data.rda&amp;quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Use this &lt;code&gt;ggplot2&lt;/code&gt; code to generate a periodic table visualising a continuous variable.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot() +
   geom_point(data = values,
              # size 14 fits well with fig.width = 9, fig.height = 5.25
              size = 14,
              # shape #22 allows both fill and colour to be
              # shape #15 only registers colour (is always filled)
              # shape #0 only registers colour (is always empty)
              shape = 15,
              aes(y = Graph.Period, x = Graph.Group, colour = Density)) +
   geom_text(data = values,
             colour = &amp;quot;white&amp;quot;,
             size = 3,
             fontface = &amp;quot;bold&amp;quot;,
             aes(label = Symbol, y = Graph.Period, x = Graph.Group)) +
   scale_x_continuous(breaks = seq(min(values$Graph.Group),
                                   max(values$Graph.Group)),
                      limits = c(min(values$Graph.Group) - 1,
                                 max(values$Graph.Group) + 1),
                      expand = c(0,0)) +
   scale_y_continuous(trans = &amp;quot;reverse&amp;quot;,
                      breaks = seq(min(values$Graph.Period),
                                   max(values$Graph.Period)),
                      limits = c(max(values$Graph.Period) + 1,
                                 min(values$Graph.Period) - 1.5),
                      expand = c(0,0)) +
   # set breaks and labels in the colourbar legend
   scale_colour_continuous(breaks = c(5E3, 10E3, 15E3, 20E3),
                           labels = c(&amp;quot;5&amp;quot;, &amp;quot;10&amp;quot;, &amp;quot;15&amp;quot;, &amp;quot;20&amp;quot;),
                           # range of colour
                           low = &amp;quot;#56B1F7&amp;quot;, high = &amp;quot;#132B43&amp;quot;,
                           # colour if value is NA
                           na.value = &amp;quot;grey70&amp;quot;) +
   # plot title (usually property and unit)
   annotate(&amp;quot;text&amp;quot;, x = 8, y = 0.6,
            vjust = 0,
            label = paste(&amp;quot;Density/&amp;quot;, &amp;quot;10^3*~kg~m&amp;quot;, &amp;quot;^-3&amp;quot;, sep=&amp;quot;&amp;quot;),
            # parse required if using superscripts or subscripts
            parse = TRUE) +
   theme(panel.grid.major = element_blank(),
         panel.grid.minor = element_blank(),
         plot.margin = unit(c(0, 0, -0.85, -0.85), &amp;quot;line&amp;quot;),
         axis.title = element_blank(),
         axis.text = element_blank(),
         axis.ticks = element_blank(),
         # center (roughly) over transition metal block
         legend.position = c(0.42, 0.91),
         legend.justification = c(0.5, 1),
         legend.direction = &amp;quot;horizontal&amp;quot;,
         # make the legend colourbar a little longer
         legend.key.width = unit(2.5, &amp;quot;line&amp;quot;),
         legend.title = element_blank(),
         legend.background = element_rect(fill = &amp;quot;transparent&amp;quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or this code to visualise a discrete variable.&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;ggplot() +
   geom_point(data = values,
              # size 14 fits well with fig.width = 9, fig.height = 5.25
              size = 14,
              # shape #22 allows both fill and colour to be
              # shape #15 only registers colour (is always filled)
              # shape #0 only registers colour (is always empty)
              shape = 15,
              aes(y = Graph.Period, x = Graph.Group, colour = Magnetic_Type)) +
   geom_text(data = values,
             colour = &amp;quot;white&amp;quot;,
             size = 3,
             fontface = &amp;quot;bold&amp;quot;,
             aes(label = Symbol, y = Graph.Period, x = Graph.Group)) +
   scale_x_continuous(breaks = seq(min(values$Graph.Group),
                                   max(values$Graph.Group)),
                      limits = c(min(values$Graph.Group) - 1,
                                 max(values$Graph.Group) + 1),
                      expand = c(0,0)) +
   scale_y_continuous(trans = &amp;quot;reverse&amp;quot;,
                      breaks = seq(min(values$Graph.Period),
                                   max(values$Graph.Period)),
                      limits = c(max(values$Graph.Period) + 1,
                                 min(values$Graph.Period) - 1.5),
                      expand = c(0,0)) +
   scale_colour_discrete(na.value = &amp;quot;grey70&amp;quot;) +
   # set the size of the legend boxes independent of geom_point&amp;#39;s aes
   guides(colour = guide_legend(override.aes = list(size = 5),
                                title = &amp;quot;Magnetic type&amp;quot;,
                                nrow = 2,
                                title.hjust = 0.5)) +
   theme(panel.grid.major = element_blank(),
         panel.grid.minor = element_blank(),
         plot.margin = unit(c(0, 0, -0.85, -0.85), &amp;quot;line&amp;quot;),
         axis.ticks = element_blank(),
         axis.title = element_blank(),
         axis.text = element_blank(),
         # center (roughly) over transition metal block
         legend.position = c(0.42, 0.93),
         legend.justification = c(0.5, 1),
         legend.direction = &amp;quot;vertical&amp;quot;,
         legend.key.size = unit(0.8, &amp;quot;line&amp;quot;),
         legend.title = element_text(size = 15,
                                     face = &amp;quot;plain&amp;quot;),
         legend.key = element_rect(fill = &amp;quot;transparent&amp;quot;,
                                   colour = &amp;quot;transparent&amp;quot;),
         legend.background = element_rect(fill = &amp;quot;transparent&amp;quot;))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And there you are.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;appendix&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Appendix&lt;/h2&gt;
&lt;div id=&#34;sessioninfo&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;sessionInfo()&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] common_0.0.2   knitr_1.37     stringr_1.4.0  magrittr_2.0.2 rvest_1.0.2   
## [6] httr_1.4.2     XML_3.99-0.8   dplyr_1.0.8    ggplot2_3.3.5 
## 
## loaded via a namespace (and not attached):
##  [1] bslib_0.3.1      compiler_4.0.5   pillar_1.7.0     jquerylib_0.1.4 
##  [5] tools_4.0.5      digest_0.6.29    jsonlite_1.7.3   evaluate_0.14   
##  [9] lifecycle_1.0.1  tibble_3.1.6     gtable_0.3.0     pkgconfig_2.0.3 
## [13] rlang_1.0.1      DBI_1.1.2        cli_3.2.0        yaml_2.2.2      
## [17] blogdown_1.7     xfun_0.29        fastmap_1.1.0    xml2_1.3.3      
## [21] withr_2.4.3      generics_0.1.2   sass_0.4.0       vctrs_0.3.8     
## [25] tidyselect_1.1.2 glue_1.6.1       R6_2.5.1         fansi_1.0.2     
## [29] rmarkdown_2.11   bookdown_0.24    purrr_0.3.4      scales_1.1.1    
## [33] htmltools_0.5.2  ellipsis_0.3.2   assertthat_0.2.1 colorspace_2.0-2
## [37] utf8_1.2.2       stringi_1.7.6    munsell_0.5.0    crayon_1.5.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;todo&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Todo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Record &lt;code&gt;notes&lt;/code&gt; and save them along with &lt;code&gt;values&lt;/code&gt; and &lt;code&gt;units&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level3 unnumbered&#34;&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body hanging-indent&#34;&gt;
&lt;div id=&#34;ref-elementdata2014&#34; class=&#34;csl-entry&#34;&gt;
Ahmed, Taha. 2014. &lt;span&gt;“&lt;span class=&#34;nocase&#34;&gt;Properties of the elements&lt;/span&gt;.”&lt;/span&gt; &lt;a href=&#34;https://doi.org/10.6084/m9.figshare.1295585&#34;&gt;https://doi.org/10.6084/m9.figshare.1295585&lt;/a&gt;.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Characteristic x-ray line energies of the elements</title>
      <link>//solarchemist.se/2014/09/13/xray-line-energies/</link>
      <pubDate>Sat, 13 Sep 2014 08:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2014/09/13/xray-line-energies/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2014/09/13/xray-line-energies/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;

&lt;div id=&#34;TOC&#34;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#introduction&#34;&gt;Introduction&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#notation-iupac-more-stringent-than-siegbahn&#34;&gt;Notation: IUPAC more stringent than Siegbahn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#line-energies&#34;&gt;Line energies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-energy-of-the-strongest-mathrmk-mathrml-and-mathrmm-lines&#34;&gt;The energy of the strongest &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\)&lt;/span&gt;, and &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\)&lt;/span&gt; lines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#bibliography&#34;&gt;Bibliography&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#session-info&#34;&gt;Session info&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#references&#34;&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div id=&#34;introduction&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Having a list of all x-ray transitions of the elements is quite useful,
in particular when analysing x-ray fluorescence spectra.&lt;/p&gt;
&lt;p&gt;This work was based on data from the PANalytical Epsilon 5 software,
version 2.0J/ICSW 2.8 of Dec 7, 2010 with kernel PW5050. In this software,
data on every transition’s energy and relative intensity was stored in a
user-accessible format, as well as the edge energies for each element.&lt;/p&gt;
&lt;p&gt;The Epsilon 5 data was used to amend my original dataset, which I got from
&lt;a href=&#34;http://www.kayelaby.npl.co.uk/atomic_and_nuclear_physics/4_2/4_2_1.html&#34;&gt;Kaye &amp;amp; Laby, Tables of Physical &amp;amp; Chemical Constants, National Physical Laboratory&lt;/a&gt;.
Where the two datasets diverged (usually at the third decimal) I gave priority
to the Epsilon 5 data.&lt;/p&gt;
&lt;p&gt;I have improved on this dataset, and included natural line width and fluorescence
yield data from the works of &lt;span class=&#34;citation&#34;&gt;Krause and Oliver (&lt;a href=&#34;#ref-Krause1979&#34; role=&#34;doc-biblioref&#34;&gt;1979&lt;/a&gt;)&lt;/span&gt; and &lt;span class=&#34;citation&#34;&gt;Krause (&lt;a href=&#34;#ref-Krause1979a&#34; role=&#34;doc-biblioref&#34;&gt;1979&lt;/a&gt;)&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;I collated this data into two datasets &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-IUPACvsSiegbahn2014&#34; role=&#34;doc-biblioref&#34;&gt;Ahmed 2014b&lt;/a&gt;, &lt;a href=&#34;#ref-xraylines2014&#34; role=&#34;doc-biblioref&#34;&gt;2014a&lt;/a&gt;)&lt;/span&gt;
which we will explore below.&lt;/p&gt;
&lt;div id=&#34;notation-iupac-more-stringent-than-siegbahn&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Notation: IUPAC more stringent than Siegbahn&lt;/h3&gt;
&lt;p&gt;At this stage in the work, it gradually became untenable to keep using
the Siegbahn notation for x-ray transitions, since it is both incomplete
(not all transitions have labels) and slightly arbitrary (different authors
use the same label for different transitions).
So I decided to switch to the IUPAC notation, which offers a complete, coherent system.
This required me to translate all the existing Siegbahn labels in my dataset into
IUPAC ones. To do that, I needed a “translator”. Luckily I found a good start in
table 10.11 of &lt;span class=&#34;citation&#34;&gt;Lengyel, Ure, and Inczédy (&lt;a href=&#34;#ref-Lengyel1998&#34; role=&#34;doc-biblioref&#34;&gt;1998&lt;/a&gt;)&lt;/span&gt;, and from there it was not too hard to work out the
corresponding IUPAC names of the remaining transitions in my dataset.&lt;/p&gt;
&lt;table&gt;
&lt;caption&gt;&lt;span id=&#34;tab:xray-labels-table&#34;&gt;Table 1: &lt;/span&gt;IUPAC notation and corresponding Siegbahn notation&lt;/caption&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;IUPAC          &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Siegbahn                &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;IUPAC          &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Siegbahn                &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;IUPAC          &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Siegbahn&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_{2,3}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\alpha_{1,2}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{M}_{2,3}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta_{3,4}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_{4,5}\mathrm{N}_{2,3}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\zeta_{1,2}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\alpha_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{M}_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_1\mathrm{N}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;NA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\alpha_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{M}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_2\mathrm{N}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;NA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\alpha_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{M}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_{10}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_3\mathrm{N}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;NA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{M}_{2,3}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta_{1,3}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_9\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_3\mathrm{N}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\gamma_2\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{M}_{4,5}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{N}_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_3\mathrm{N}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\gamma_1\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{M}_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{N}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_3\mathrm{O}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;NA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{M}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{N}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;NA&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_3\mathrm{O}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;NA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{N}_{2,3}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{N}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma_{11}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_3\mathrm{O}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;NA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{N}_{4,5}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{O}_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma^\prime_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_4\mathrm{N}_{2,3}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\zeta_1\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{O}_{2}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\delta_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\mathrm{O}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_4\mathrm{N}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;NA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{O}_{3}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\delta_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\mathrm{M}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\eta\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_4\mathrm{N}_6\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\beta_1\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\mathrm{M}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_{17}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\alpha_{1,2}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\mathrm{M}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\zeta_2\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\nu\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_6\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\alpha_2\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\mathrm{N}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\alpha_1\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\mathrm{N}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\mathrm{O}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma_8\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\mathrm{O}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\gamma_6\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_{4,5}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\alpha_{1,2}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\ell\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}t\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_3\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}s\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\alpha_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\alpha_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta^\prime_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}u\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{N}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_6\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{N}_4\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_{15}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{N}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_2\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{O}_{4,5}\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_5\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{O}_1\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\beta_7\)&lt;/span&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&#34;line-energies&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Line energies&lt;/h3&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:xray-Z-vs-energy&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2014/09/13/xray-line-energies/index_files/figure-html/xray-Z-vs-energy-1.svg&#34; alt=&#34;Transition energy vs Z.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 1: Transition energy vs Z.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:xray-series-distribution&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2014/09/13/xray-line-energies/index_files/figure-html/xray-series-distribution-1.svg&#34; alt=&#34;Distribution of the transition series.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 2: Distribution of the transition series.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:xray-naturalwidth&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2014/09/13/xray-line-energies/index_files/figure-html/xray-naturalwidth-1.svg&#34; alt=&#34;Natural width of the $\mathrm{K}\alpha_1$ and $\mathrm{K}\alpha_2$ lines.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 3: Natural width of the &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\alpha_1\)&lt;/span&gt; and &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\alpha_2\)&lt;/span&gt; lines.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:xray-fluorescence&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2014/09/13/xray-line-energies/index_files/figure-html/xray-fluorescence-1.svg&#34; alt=&#34;Fluorescence yields of the $\mathrm{K}$, $\mathrm{L}_1$, $\mathrm{L}_2$, and $\mathrm{L}_3$ lines.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 4: Fluorescence yields of the &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_1\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_2\)&lt;/span&gt;, and &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\)&lt;/span&gt; lines.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:xray-Kb-Ka-relative-intensity&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2014/09/13/xray-line-energies/index_files/figure-html/xray-Kb-Ka-relative-intensity-1.svg&#34; alt=&#34;$\mathrm{K}\beta$ and $\mathrm{K}\alpha$ relative intensities (in percent). This looks extra messy because most elements have more than one $\mathrm{K}\beta$ or (in particular) more than one $\mathrm{K}\alpha$ transition.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 5: &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta\)&lt;/span&gt; and &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\alpha\)&lt;/span&gt; relative intensities (in percent). This looks extra messy because most elements have more than one &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta\)&lt;/span&gt; or (in particular) more than one &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\alpha\)&lt;/span&gt; transition.
&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&#34;figure&#34; style=&#34;text-align: center&#34;&gt;&lt;span style=&#34;display:block;&#34; id=&#34;fig:xray-Kb-Ka-ratio&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;//solarchemist.se/2014/09/13/xray-line-energies/index_files/figure-html/xray-Kb-Ka-ratio-1.svg&#34; alt=&#34;Variations of $\mathrm{K}\beta/\mathrm{K}\alpha$ with atomic number.&#34; width=&#34;100%&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;
Figure 6: Variations of &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\beta/\mathrm{K}\alpha\)&lt;/span&gt; with atomic number.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;the-energy-of-the-strongest-mathrmk-mathrml-and-mathrmm-lines&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;The energy of the strongest &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\)&lt;/span&gt;, and &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\)&lt;/span&gt; lines&lt;/h2&gt;
&lt;table&gt;
&lt;caption&gt;&lt;span id=&#34;tab:xray-strongest-lines&#34;&gt;Table 2: &lt;/span&gt;The energy of the strongest &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\)&lt;/span&gt;, and &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\)&lt;/span&gt; lines of the elements.&lt;/caption&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;Element            &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Z                &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;K/keV              &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;L/keV              &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;M/keV&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Be&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.109&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;B&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;5&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.183&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;C&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.277&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;N&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;7&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.393&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;O&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;8&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.525&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;F&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;9&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.677&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ne&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;10&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.848&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Na&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;11&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.040&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Mg&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;12&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.254&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Al&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;13&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.487&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Si&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;14&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.740&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;P&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;15&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.011&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;S&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;16&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.310&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Cl&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;17&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.622&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ar&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;18&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.958&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;K&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;19&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.314&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ca&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;20&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.692&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Sc&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;21&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.093&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.395&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ti&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;22&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.512&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.452&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;V&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;23&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.953&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.51&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Cr&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;24&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;5.415&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.572&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Mn&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;25&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;5.900&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.637&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Fe&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;26&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6.405&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.705&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Co&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;27&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6.931&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.775&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ni&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;28&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;7.480&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.849&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Cu&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;29&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;8.046&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.928&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Zn&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;30&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;8.637&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.012&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ga&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;31&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;9.251&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.098&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ge&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;32&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;9.886&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.188&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;As&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;33&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;10.543&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.282&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Se&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;34&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;11.224&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.379&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Br&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;35&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;11.924&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.481&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Kr&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;36&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;12.648&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.585&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Rb&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;37&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;13.396&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.692&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Sr&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;38&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;14.165&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.806&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Y&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;39&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;14.958&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.924&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Zr&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;40&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;15.775&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.044&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Nb&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;41&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;16.615&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.169&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Mo&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;42&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;17.480&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.292&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Tc&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;43&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;18.367&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.423&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ru&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;44&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;19.279&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.558&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Rh&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;45&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;20.216&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.697&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Pd&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;46&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;21.177&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.838&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ag&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;47&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;22.163&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.983&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Cd&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;48&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;23.173&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.133&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;In&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;49&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;24.210&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.286&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Sn&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;50&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;25.271&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.444&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Sb&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;51&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;26.359&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.604&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Te&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;52&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;27.473&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.678&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;I&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;53&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;28.612&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.938&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Xe&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;54&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;29.775&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.11&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Cs&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;55&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;30.973&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.285&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ba&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;56&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;32.194&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.467&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;La&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;57&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;33.442&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.647&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.833&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ce&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;58&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;34.720&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.839&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.882&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Pr&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;59&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;36.027&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;5.035&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.929&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Nd&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;60&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;37.361&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;5.228&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;0.978&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Pm&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;61&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;38.725&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;4.532&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.023&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Sm&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;62&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;40.118&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;5.633&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.085&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Eu&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;63&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;41.542&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;5.85&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.132&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Gd&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;64&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;42.996&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6.053&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Tb&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;65&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;44.482&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6.273&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.248&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Dy&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;66&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;45.999&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6.498&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.299&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ho&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;67&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;47.547&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6.72&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.353&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Er&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;68&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;49.128&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;6.949&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.409&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Tm&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;69&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;50.742&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;7.18&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.466&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Yb&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;70&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;52.388&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;7.416&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.523&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Lu&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;71&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;54.070&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;7.655&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.581&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Hf&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;72&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;55.790&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;7.899&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.645&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ta&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;73&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;57.535&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;8.146&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.71&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;W&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;74&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;59.318&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;8.398&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.776&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Re&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;75&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;61.141&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;8.652&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.843&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Os&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;76&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;63.000&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;8.911&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.91&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ir&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;77&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;64.896&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;9.175&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;1.98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Pt&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;78&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;66.831&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;9.442&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.073&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Au&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;79&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;68.806&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;9.713&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.123&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Hg&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;80&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;70.818&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;9.989&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.195&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Tl&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;81&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;72.872&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;10.269&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.271&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Pb&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;82&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;74.970&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;10.551&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.346&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Bi&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;83&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;77.107&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;10.839&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.423&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Po&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;84&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;79.291&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;11.131&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.502&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;At&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;85&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;81.516&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;11.427&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.582&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Rn&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;86&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;83.785&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;11.727&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.654&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Fr&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;87&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;86.106&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;12.031&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.732&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ra&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;88&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;88.478&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;12.339&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.806&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Ac&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;89&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;90.884&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;12.652&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Th&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;90&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;93.351&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;12.968&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;2.996&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Pa&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;91&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;95.868&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;13.291&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.083&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;U&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;92&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;98.440&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;13.614&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.171&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Np&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;93&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;101.059&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;13.946&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Pu&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;94&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;103.734&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;14.282&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.339&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Am&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;95&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;105.970&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;14.616&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.429&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Cm&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;96&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;108.759&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;14.954&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.525&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Bk&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;97&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;111.698&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;15.307&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.616&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Cf&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;98&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;114.801&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;15.655&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;3.709&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Es&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;99&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;119.080&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;16.036&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Fm&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;100&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;122.190&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;16.402&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Md&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;101&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;125.390&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;16.768&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;No&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;102&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;128.660&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;17.139&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;Lr&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;103&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;132.020&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;17.5&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table&gt;
&lt;caption&gt;&lt;span id=&#34;tab:xray-strongest-lines-by-energy&#34;&gt;Table 3: &lt;/span&gt;The strongest &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\)&lt;/span&gt;, &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}\)&lt;/span&gt;, and &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}\)&lt;/span&gt; lines of the elements sorted by increasing transition energy.&lt;/caption&gt;
&lt;thead&gt;
&lt;tr class=&#34;header&#34;&gt;
&lt;th align=&#34;left&#34;&gt;Energy/keV            &lt;/th&gt;
&lt;th align=&#34;left&#34;&gt;Elemental transition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.109&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;4 Be &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_{2,3}\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.183&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;5 B &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_{2,3}\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.277&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;6 C &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_{2,3}\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.393&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;7 N &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_{2,3}\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.395&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;21 Sc &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_{4,5}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.452&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;22 Ti &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_{4,5}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.510&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;23 V &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.525&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;8 O &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_{2,3}\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.572&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;24 Cr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.637&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;25 Mn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.677&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;9 F &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_{2,3}\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.705&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;26 Fe &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.775&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;27 Co &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.833&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;57 La &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.848&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;10 Ne &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_{2,3}\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.849&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;28 Ni &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.882&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;58 Ce &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.928&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;29 Cu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.929&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;59 Pr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;0.978&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;60 Nd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.012&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;30 Zn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.023&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;61 Pm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.040&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;11 Na &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.085&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;62 Sm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.098&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;31 Ga &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.132&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;63 Eu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.188&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;32 Ge &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.190&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;64 Gd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.248&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;65 Tb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.254&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;12 Mg &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.282&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;33 As &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.299&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;66 Dy &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.353&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;67 Ho &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.379&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;34 Se &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.409&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;68 Er &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.466&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;69 Tm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.481&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;35 Br &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.487&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;13 Al &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.523&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;70 Yb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.581&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;71 Lu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.585&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;36 Kr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.645&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;72 Hf &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.692&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;37 Rb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.710&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;73 Ta &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.740&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;14 Si &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.776&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;74 W &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.806&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;38 Sr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.843&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;75 Re &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.910&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;76 Os &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_{6,7}\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.924&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;39 Y &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;1.980&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;77 Ir &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.011&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;15 P &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.044&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;40 Zr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.073&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;78 Pt &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.123&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;79 Au &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.169&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;41 Nb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.195&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;80 Hg &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.271&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;81 Tl &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.292&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;42 Mo &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.310&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;16 S &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.346&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;82 Pb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.423&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;43 Tc &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.423&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;83 Bi &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.502&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;84 Po &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.558&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;44 Ru &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.582&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;85 At &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.622&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;17 Cl &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.654&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;86 Rn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.697&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;45 Rh &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.732&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;87 Fr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.806&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;88 Ra &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.838&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;46 Pd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.900&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;89 Ac &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.958&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;18 Ar &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.983&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;47 Ag &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;2.996&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;90 Th &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.083&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;91 Pa &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.133&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;48 Cd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.171&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;92 U &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.250&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;93 Np &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.286&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;49 In &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.314&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;19 K &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.339&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;94 Pu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.429&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;95 Am &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.444&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;50 Sn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.525&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;96 Cm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.604&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;51 Sb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.616&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;97 Bk &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.678&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;52 Te &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.692&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;20 Ca &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.709&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;98 Cf &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{M}_5\mathrm{N}_7\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;3.938&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;53 I &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.093&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;21 Sc &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.110&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;54 Xe &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.285&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;55 Cs &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.467&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;56 Ba &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.512&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;22 Ti &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.532&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;61 Pm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.647&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;57 La &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.839&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;58 Ce &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;4.953&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;23 V &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;5.035&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;59 Pr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;5.228&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;60 Nd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;5.415&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;24 Cr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;5.633&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;62 Sm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;5.850&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;63 Eu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;5.900&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;25 Mn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;6.053&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;64 Gd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;6.273&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;65 Tb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;6.405&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;26 Fe &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;6.498&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;66 Dy &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;6.720&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;67 Ho &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;6.931&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;27 Co &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;6.949&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;68 Er &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;7.180&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;69 Tm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;7.416&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;70 Yb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;7.480&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;28 Ni &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;7.655&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;71 Lu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;7.899&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;72 Hf &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;8.046&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;29 Cu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;8.146&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;73 Ta &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;8.398&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;74 W &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;8.637&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;30 Zn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;8.652&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;75 Re &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;8.911&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;76 Os &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;9.175&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;77 Ir &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;9.251&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;31 Ga &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;9.442&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;78 Pt &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;9.713&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;79 Au &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;9.886&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;32 Ge &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;9.989&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;80 Hg &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;10.269&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;81 Tl &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;10.543&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;33 As &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;10.551&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;82 Pb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;10.839&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;83 Bi &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;11.131&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;84 Po &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;11.224&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;34 Se &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;11.427&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;85 At &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;11.727&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;86 Rn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;11.924&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;35 Br &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;12.031&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;87 Fr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;12.339&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;88 Ra &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;12.648&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;36 Kr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;12.652&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;89 Ac &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;12.968&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;90 Th &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;13.291&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;91 Pa &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;13.396&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;37 Rb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;13.614&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;92 U &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;13.946&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;93 Np &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;14.165&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;38 Sr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;14.282&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;94 Pu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;14.616&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;95 Am &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;14.954&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;96 Cm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;14.958&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;39 Y &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;15.307&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;97 Bk &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;15.655&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;98 Cf &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;15.775&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;40 Zr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;16.036&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;99 Es &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;16.402&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;100 Fm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;16.615&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;41 Nb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;16.768&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;101 Md &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;17.139&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;102 No &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;17.480&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;42 Mo &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;17.500&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;103 Lr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{L}_3\mathrm{M}_5\)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;18.367&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;43 Tc &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;19.279&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;44 Ru &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;20.216&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;45 Rh &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;21.177&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;46 Pd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;22.163&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;47 Ag &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;23.173&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;48 Cd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;24.210&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;49 In &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;25.271&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;50 Sn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;26.359&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;51 Sb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;27.473&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;52 Te &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;28.612&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;53 I &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;29.775&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;54 Xe &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;30.973&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;55 Cs &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;32.194&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;56 Ba &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;33.442&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;57 La &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;34.720&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;58 Ce &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;36.027&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;59 Pr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;37.361&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;60 Nd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;38.725&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;61 Pm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;40.118&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;62 Sm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;41.542&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;63 Eu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;42.996&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;64 Gd &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;44.482&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;65 Tb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;45.999&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;66 Dy &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;47.547&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;67 Ho &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;49.128&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;68 Er &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;50.742&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;69 Tm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;52.388&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;70 Yb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;54.070&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;71 Lu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;55.790&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;72 Hf &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;57.535&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;73 Ta &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;59.318&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;74 W &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;61.141&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;75 Re &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;63.000&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;76 Os &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;64.896&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;77 Ir &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;66.831&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;78 Pt &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;68.806&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;79 Au &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;70.818&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;80 Hg &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;72.872&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;81 Tl &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;74.970&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;82 Pb &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;77.107&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;83 Bi &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;79.291&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;84 Po &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;81.516&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;85 At &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;83.785&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;86 Rn &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;86.106&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;87 Fr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;88.478&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;88 Ra &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;90.884&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;89 Ac &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;93.351&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;90 Th &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;95.868&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;91 Pa &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;98.440&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;92 U &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;101.059&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;93 Np &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;103.734&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;94 Pu &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;105.970&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;95 Am &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;108.759&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;96 Cm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;111.698&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;97 Bk &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;114.801&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;98 Cf &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;119.080&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;99 Es &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;122.190&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;100 Fm &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;125.390&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;101 Md &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;even&#34;&gt;
&lt;td align=&#34;left&#34;&gt;128.660&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;102 No &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&#34;odd&#34;&gt;
&lt;td align=&#34;left&#34;&gt;132.020&lt;/td&gt;
&lt;td align=&#34;left&#34;&gt;&lt;strong&gt;103 Lr &lt;span class=&#34;math inline&#34;&gt;\(\mathrm{K}\mathrm{L}_3\)&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div id=&#34;bibliography&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Bibliography&lt;/h2&gt;
&lt;p&gt;Offered in no particular order, and in no particular style.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kaye, G. W. C. (1995). Kaye &amp;amp; Laby: Tables of Physical and Chemical Constants (sixteenth ed., p. 611). Harlow: Longman. &lt;a href=&#34;http://www.kayelaby.npl.co.uk/toc/&#34;&gt;Retrieved from http://www.kayelaby.npl.co.uk/toc/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.kayelaby.npl.co.uk/atomic_and_nuclear_physics/4_2/4_2_1.html&#34;&gt;Kaye &amp;amp; Laby: Tables of Physical &amp;amp; Chemical Constants. Absorption of photons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://physics.nist.gov/cgi-bin/XrayTrans/search.pl?sorttype=element&amp;amp;element=All&amp;amp;trans=All&amp;amp;lower=0&amp;amp;upper=160000&amp;amp;units=eV&#34;&gt;X-ray transition energies database, NIST&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www4.nau.edu/microanalysis/Microprobe/Xray-NamingTransitions.html&#34;&gt;Naming transitions, course GLG 510 by James H. Wittke, Northern Arizona Univ.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.csrri.iit.edu/periodic-table.html&#34;&gt;Periodic table. (Cites a few pertinent references).&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://xdb.lbl.gov/Section1/Sec_1-2.html&#34;&gt;X-ray emission energies, X-ray data booklet by Kortright and Thompson, Lawrence Berkeley National Laboratory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ikp.uni-koeln.de/research/pixe/&#34;&gt;This one contains a few nice graphics.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ikp.uni-koeln.de/research/pixe/bildchen/x_ray_transitions.jpg&#34;&gt;Scanned transitions graphic.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.amptek.com/xrf.html&#34;&gt;X-ray fluorescence spectroscopy, by AmpTek Inc. (a detector manufacturer).&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.amptek.com/pdf/characteristic_xrays.pdf&#34;&gt;X-ray fluorescence: understanding characteristic x-rays, AmpTek Inc. [pdf].&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://web.mit.edu/8.13/www/JLExperiments/JLExp31.pdf&#34;&gt;X-ray physics lab instruction, MIT dept of physics 2007 [pdf].&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://microanalyst.mikroanalytik.de/manual.html&#34;&gt;EDS software manual from Mikroanalytik.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.casaxps.com/help_manual/XPSInformation/IntroductiontoXPS.htm&#34;&gt;The nature of x-ray photoelectron spectra, CasaXPS.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.web.pdx.edu/~jiaoj/phy451/Lect6.pdf&#34;&gt;Energy Dispersive X-ray Spectrometry and X-ray Microanalysis, Portland State Univ. [pdf]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.geology.wisc.edu/~johnf/660.html&#34;&gt;X-ray Compositional Microanalysis: EDS and WDS by Barker and Fournelle.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.atomikateknik.com/pdf/707_33911.pdf&#34;&gt;Analysis of solid alternative fuel materials (PANalytical application note) [pdf].&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://serc.carleton.edu/research_education/geochemsheets/techniques/XRF.html&#34;&gt;X-ray fluorescence spectroscopy, by Karl Wirth, Purdue Univ.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.bri-advantage.com/instrumentcms/pdf/Epsilon5.pdf&#34;&gt;Leading the way in heavy metals analysis, PANalytical application note [pdf].&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] common_0.0.2  xtable_1.8-4  readODS_1.7.0 reshape_0.8.8 plyr_1.8.6   
## [6] ggplot2_3.3.5 knitr_1.37   
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.8       bslib_0.3.1      compiler_4.0.5   pillar_1.7.0    
##  [5] jquerylib_0.1.4  tools_4.0.5      digest_0.6.29    jsonlite_1.7.3  
##  [9] evaluate_0.14    lifecycle_1.0.1  tibble_3.1.6     gtable_0.3.0    
## [13] pkgconfig_2.0.3  rlang_1.0.1      DBI_1.1.2        cli_3.2.0       
## [17] yaml_2.2.2       blogdown_1.7     xfun_0.29        fastmap_1.1.0   
## [21] withr_2.4.3      dplyr_1.0.8      stringr_1.4.0    generics_0.1.2  
## [25] sass_0.4.0       vctrs_0.3.8      tidyselect_1.1.2 grid_4.0.5      
## [29] glue_1.6.1       R6_2.5.1         fansi_1.0.2      rmarkdown_2.11  
## [33] bookdown_0.24    purrr_0.3.4      magrittr_2.0.2   scales_1.1.1    
## [37] htmltools_0.5.2  ellipsis_0.3.2   assertthat_0.2.1 colorspace_2.0-2
## [41] utf8_1.2.2       stringi_1.7.6    munsell_0.5.0    crayon_1.5.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body hanging-indent&#34;&gt;
&lt;div id=&#34;ref-xraylines2014&#34; class=&#34;csl-entry&#34;&gt;
Ahmed, Taha. 2014a. &lt;span&gt;“&lt;span class=&#34;nocase&#34;&gt;Characteristic X-ray lines of the elements&lt;/span&gt;.”&lt;/span&gt; &lt;a href=&#34;https://doi.org/10.6084/m9.figshare.1168939&#34;&gt;https://doi.org/10.6084/m9.figshare.1168939&lt;/a&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-IUPACvsSiegbahn2014&#34; class=&#34;csl-entry&#34;&gt;
———. 2014b. &lt;span&gt;“&lt;span class=&#34;nocase&#34;&gt;IUPAC vs Siegbahn notation of x-ray transitions&lt;/span&gt;.”&lt;/span&gt; &lt;a href=&#34;https://doi.org/10.6084/m9.figshare.1168938&#34;&gt;https://doi.org/10.6084/m9.figshare.1168938&lt;/a&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-Krause1979a&#34; class=&#34;csl-entry&#34;&gt;
Krause, M. O. 1979. &lt;span&gt;“Atomic Radiative and Radiationless Yields for &lt;span&gt;K&lt;/span&gt; and &lt;span&gt;L&lt;/span&gt; Shells.”&lt;/span&gt; &lt;em&gt;Journal of Physical and Chemical Reference Data&lt;/em&gt; 8 (2): 307–27. &lt;a href=&#34;https://doi.org/10.1063/1.555594&#34;&gt;https://doi.org/10.1063/1.555594&lt;/a&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-Krause1979&#34; class=&#34;csl-entry&#34;&gt;
Krause, M. O., and J. H. Oliver. 1979. &lt;span&gt;“Natural Widths of Atomic &lt;span&gt;K&lt;/span&gt; and &lt;span&gt;L&lt;/span&gt; Levels, &lt;span class=&#34;nocase&#34;&gt;K&lt;span class=&#34;math inline&#34;&gt;\(\alpha\)&lt;/span&gt; X-ray&lt;/span&gt; Lines and Several &lt;span&gt;KLL Auger&lt;/span&gt; Lines.”&lt;/span&gt; &lt;em&gt;Journal of Physical and Chemical Reference Data&lt;/em&gt; 8 (2): 329. &lt;a href=&#34;https://doi.org/10.1063/1.555595&#34;&gt;https://doi.org/10.1063/1.555595&lt;/a&gt;.
&lt;/div&gt;
&lt;div id=&#34;ref-Lengyel1998&#34; class=&#34;csl-entry&#34;&gt;
Lengyel, Tamás, Allan M. Ure, and János Inczédy. 1998. &lt;em&gt;Compendium of Analytical Nomenclature: Definitive Rules 1997&lt;/em&gt;. Edited by Tamás Lengyel, Allan M. Ure, and János Inczédy. 3rd ed. &lt;span&gt;Blackwell Science&lt;/span&gt;. &lt;a href=&#34;http://old.iupac.org/publications/analytical_compendium/&#34;&gt;http://old.iupac.org/publications/analytical_compendium/&lt;/a&gt;.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>How to install Rstudio&#39;s Shiny on Ubuntu 14.04</title>
      <link>//solarchemist.se/2014/07/17/installing-shiny/</link>
      <pubDate>Thu, 17 Jul 2014 20:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2014/07/17/installing-shiny/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2014/07/17/installing-shiny/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;div id=&#34;installing-shiny-and-shiny-server-on-localhost&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Installing shiny and shiny-server (on localhost)&lt;/h2&gt;
&lt;p&gt;Assuming you already have a working &lt;code&gt;R&lt;/code&gt; installation on a Debian-like system.&lt;/p&gt;
&lt;p&gt;First step, install the &lt;code&gt;shiny&lt;/code&gt; R package.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo su - -c &amp;quot;R -e \&amp;quot;install.packages(&amp;#39;shiny&amp;#39;, repos=&amp;#39;http://cran.rstudio.com/&amp;#39;)\&amp;quot;&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Download and install the &lt;a href=&#34;http://www.rstudio.com/products/shiny/download-server/&#34;&gt;shiny server software from RStudio&lt;/a&gt; (the shiny package is installed using &lt;code&gt;gdebi&lt;/code&gt;, so you need to install that too if you don’t already have it).&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;sudo apt-get install gdebi-core
wget http://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-1.3.0.403-amd64.deb
sudo gdebi shiny-server-1.3.0.403-amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;RStudio offers shiny-server for free with the &lt;a href=&#34;http://en.wikipedia.org/wiki/Affero_General_Public_License&#34;&gt;AGPL v3 license&lt;/a&gt; but with the limit of a single R process per shiny application, and without support for authentication or SSL. The former limit is not an issue for lightweight shiny apps, but the latter can be problematic if you intend to host public-facing shiny apps on your own server. One possible way of getting around this limit could be to setup a reverse proxy using an SSH tunnel to access the shiny app, but I have not been able to make such a setup work myself.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;running-the-shiny-app&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Running the shiny app&lt;/h2&gt;
&lt;p&gt;I use a dashboard to keep track of my project’s sample matrix (as we chemists like to call it).
It’s run using a short bash script with essentially the following contents:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;#!/bin/bash
PORT=$(shuf -i 2000-10000 -n 1)
# write the port number to file
echo $PORT &amp;gt; /path/to/shinyapp/directory/shiny.port
nohup R -e &amp;quot;shiny::runApp(&amp;#39;/path/to/shinyapp/directory&amp;#39;, port = $PORT)&amp;quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The bash script is called from an Ubuntu autostart script so that the dashboard starts on system login.
Accessing it is then as simple as pointing your browser to &lt;code&gt;localhost:&amp;lt;port-number&amp;gt;&lt;/code&gt;.
Since we don’t want to check the port number manually, something along these lines is used to start the browser:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;#!/bin/bash
PORT=$(&amp;lt;/path/to/shinyapp/directory/shiny.port)
s=&amp;quot;http://localhost:$PORT&amp;quot;
google-chrome $s&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, randomly assigning the shiny app port number is not necessary. It is simply a remnant from the development phase of this app - changing the port number on each launch of the app made debugging easier (one less variable to worry about…).&lt;/p&gt;
&lt;p&gt;The finished dashboard app contains a lot of links to local pdf files, so depending on browser you may have to disable the restriction to open &lt;code&gt;file:///&lt;/code&gt;-type hyperlinks.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;sources&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Sources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.rstudio.com/products/shiny/download-server/&#34;&gt;Installation instructions for Shiny&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://shiny.rstudio.com/&#34;&gt;RStudio’s own Shiny tutorial and reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Publishing R Markdown using Jekyll</title>
      <link>//solarchemist.se/2014/07/16/knitr-jekyll/</link>
      <pubDate>Wed, 16 Jul 2014 16:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2014/07/16/knitr-jekyll/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2014/07/16/knitr-jekyll/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;After getting a barebones Jekyll install up and running, my next step was to work out how to post R Markdown files to it. There is nothing wrong with regular markdown, but after using R for several years and LaTeX for many more years, I preferred the larger set of possibilities that come with R Markdown.&lt;/p&gt;
&lt;p&gt;There are two major routes to work with R Markdown source files with Jekyll, one involves using the Jekyll plugins system, and the other uses R (in effect the &lt;code&gt;knitr::render_jekyll()&lt;/code&gt; function) to pre-process all R Markdown files to Jekyll-compatible markdown files.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;http://jekyllrb.com/docs/plugins/&#34;&gt;plugins route&lt;/a&gt; appeared quite convoluted, and being unfamiliar with Ruby, gems, etc. did not make my situation any better. I found a &lt;a href=&#34;http://jason.bryer.org/posts/2012-12-10/Markdown_Jekyll_R_for_Blogging.html&#34;&gt;few&lt;/a&gt; &lt;a href=&#34;http://stackoverflow.com/questions/13793858/jekyll-converter-for-r-markdown&#34;&gt;pages&lt;/a&gt; &lt;a href=&#34;http://www.simonellistonball.com/technology/embedding-rmarkdown-in-jekyll-blog/&#34;&gt;describing&lt;/a&gt; the process, but the temptation of using more familiar tools was too great.&lt;/p&gt;
&lt;div id=&#34;r-knitr-pre-process-route&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;R (knitr) pre-process route&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://jfisher-usgs.github.io/r/2012/07/03/knitr-jekyll/&#34;&gt;Blog with Knitr and Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://whatwouldhartigando.com/2013/jekyll-and-knitr/&#34;&gt;Jekyll and knitr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://jason.bryer.org/posts/2012-12-10/Markdown_Jekyll_R_for_Blogging.html&#34;&gt;Using (R) Markdown, Jekyll, &amp;amp; GitHub for a Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.uni-kiel.de/psychologie/rexrepos/posts/rerWorkflowJN.html&#34;&gt;Build websites with R and nanoc or Jekyll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/dfeng/dfeng.github.com/blob/master/make.R&#34;&gt;dfeng.github.com/make.R&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I used all of the listed pages for inspiration, but I based my solution heavily on dfeng’s make.R script.&lt;/p&gt;
&lt;p&gt;In my Jekyll site source directory, I created a &lt;code&gt;_knitr&lt;/code&gt; directory, which will hold R Markdown files. In the same directory, I placed my &lt;code&gt;Rmd -&amp;gt; md&lt;/code&gt; conversion script (called &lt;code&gt;render_post.R&lt;/code&gt;).&lt;/p&gt;
&lt;pre class=&#34;r&#34;&gt;&lt;code&gt;#!/usr/bin/env Rscript
options(stringsAsFactors = FALSE)

# inspiration sources:
# http://www.jonzelner.net/jekyll/knitr/r/2014/07/02/autogen-knitr/
# http://gtog.github.io/workflow/2013/06/12/rmarkdown-to-rbloggers/

KnitPost &amp;lt;- function(bashwd = &amp;quot;&amp;quot;, convert_file = &amp;quot;&amp;quot;, overwrite = FALSE) {
   # CONVERT ALL RMD FILES TO MARKDOWN?
   #    REQUIRED: overwrite
   # CONVERT A SPECIFIC RMD FILE TO MARKDOWN?
   #    REQUIRED: bashwd, convert_file

   # bashwd: working directory (passed on from bash, only used below
   #         if a specific Rmd file is to be converted)
   # convert_file: name/path to specific Rmd file to convert
   # overwrite: flag that tells us whether to overwrite md files
   #            when converting all Rmd files

   # directory of jekyll blog (including trailing slash)
   site.path &amp;lt;- &amp;quot;/home/taha/jekyll/chepec/&amp;quot;
   # directory where your Rmd-files reside (relative to base)
   rmd.path &amp;lt;- paste0(site.path, &amp;quot;_knitr&amp;quot;)
   # directory to save figures
   fig.dir &amp;lt;- &amp;quot;figures/&amp;quot;
   # directory for converted markdown files
   posts.path &amp;lt;- paste0(site.path, &amp;quot;_posts&amp;quot;)
   # cache
   cache.path &amp;lt;- paste0(site.path, &amp;quot;_cache&amp;quot;)

   require(knitr)
   render_jekyll(highlight = &amp;quot;pygments&amp;quot;)
   # &amp;quot;base.dir is never used when composing the URL of the figures; it is
   # only used to save the figures to a different directory, which can
   # be useful when you do not want the figures to be saved under the
   # current working directory.
   # The URL of an image is always base.url + fig.path&amp;quot;
   # https://groups.google.com/forum/#!topic/knitr/18aXpOmsumQ
   opts_knit$set(
      base.url = &amp;quot;/&amp;quot;,
      base.dir = site.path)
   opts_chunk$set(
      fig.path   = fig.dir,
      fig.width  = 8.5,
      fig.height = 5.25,
      dev        = &amp;#39;svg&amp;#39;,
      cache      = FALSE,
      warning    = FALSE,
      message    = FALSE,
      cache.path = cache.path,
      tidy       = FALSE)


   if (convert_file == &amp;quot;&amp;quot;) {
      # convert all Rmd files in {site-url}/_knitr/ to markdown files
      # contingent on whether overwrite requested and if md exists

      # setwd to Rmd folder
      setwd(rmd.path)

      files.rmd &amp;lt;-
         data.frame(rmd = list.files(
            path = rmd.path,
            full.names = TRUE,
            pattern = &amp;quot;\\.Rmd$&amp;quot;,
            ignore.case = TRUE,
            recursive = FALSE))

      files.rmd$corresponding.md.file &amp;lt;-
         paste0(posts.path, &amp;quot;/&amp;quot;,
            basename(gsub(pattern = &amp;quot;\\.Rmd$&amp;quot;,
               replacement = &amp;quot;.md&amp;quot;,
               x = files.rmd$rmd)))

      files.rmd$corresponding.md.exists &amp;lt;-
         file.exists(files.rmd$corresponding.md.file)
      files.rmd$md.overwrite &amp;lt;- overwrite
      files.rmd$md.render &amp;lt;- FALSE
      # check if corresponding md file exists for each Rmd file,
      # if not, set flag to convert to markdown
      # (also consider the overwrite flag set by user)
      for (i in 1:dim(files.rmd)[1]) {
         if (files.rmd$corresponding.md.exists[i] == FALSE) {
            files.rmd$md.render[i] &amp;lt;- TRUE
         }
         if ((files.rmd$corresponding.md.exists[i] == TRUE) &amp;amp;&amp;amp;
             (files.rmd$md.overwrite[i] == TRUE)) {
            files.rmd$md.render[i] &amp;lt;- TRUE
         }
      }

      # For each Rmd file, render markdown (contingent on the flags set above)
      for (i in 1:dim(files.rmd)[1]) {
         # only re-knit if overwrite==TRUE or .md not already existing
         if (files.rmd$md.render[i] == TRUE) {
            # KNITTING ====
            message(paste0(&amp;quot;=== KnitPost(overwrite=&amp;quot;, overwrite, &amp;quot;): &amp;quot;,
                           basename(files.rmd$rmd[i])))
            out.file &amp;lt;-
               knit(files.rmd$rmd[i],
                  output = files.rmd$corresponding.md.file[i],
                  envir = parent.frame(),
                  quiet = TRUE)
         }
      }
   } else {
      # convert a single Rmd file to markdown
      # setwd to bash pwd
      setwd(bashwd)
      convert.path &amp;lt;- paste0(bashwd, &amp;quot;/&amp;quot;, convert_file)
      md.path &amp;lt;-
         paste0(posts.path, &amp;quot;/&amp;quot;,
         basename(gsub(pattern = &amp;quot;\\.Rmd$&amp;quot;,
            replacement = &amp;quot;.md&amp;quot;,
            x = convert_file)))
      # KNITTING ====
      message(paste0(&amp;quot;=== KnitPost(&amp;quot;, convert.path, &amp;quot;)&amp;quot;))
      out.file &amp;lt;-
         knit(convert.path,
            output = md.path,
            envir = parent.frame(),
            quiet = TRUE)
   }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we just need to run this script whenever we have new or updated Rmd-files in the &lt;code&gt;_knitr&lt;/code&gt; directory. Since I already created a bash script that handles the &lt;code&gt;jekyll build&lt;/code&gt; command, I decided to handle the R script in the same place.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;#!/bin/bash

function show_help {
   echo &amp;quot;Usage: buildsite.sh [OPTION]...&amp;quot;
    echo &amp;quot;Knit posts, rebuild jekyll blog &amp;lt;chepec&amp;gt;&amp;quot;
    echo &amp;quot;&amp;quot;
    echo &amp;quot;-c   convert all _knitr/*.Rmd files to _posts/*.md (does not overwrite existing md)&amp;quot;
    echo &amp;quot;-o   overwrite existing *.md files&amp;quot;
   echo &amp;quot;-f   convert &amp;#39;~/jekyll/chepec/_knitr/&amp;lt;filename&amp;gt;.Rmd&amp;#39; to md in _posts&amp;quot;
    echo &amp;quot;-b   build the jekyll site&amp;quot;
    echo &amp;quot;-s   send changes to live dir&amp;quot;
    echo &amp;quot;-h   show this help&amp;quot;
}

rmdfile=&amp;quot;&amp;quot;
bashpwd=$(pwd)

# initialise flags here
# convert new *.Rmd =&amp;gt; *.md?
convert=false
# convert even if *.md exists?
overwrite_md=false
# convert a specific Rmd file?
convert_file=false
# build jekyll site?
buildsite=false
# make changes live?
send_live=false

if [ $# -eq 0 ] ; then
   # no args at all? show usage
   show_help
   exit 0
fi

# reset OPTINDEX in case getopts has been used previously in the shell
OPTIND=1
while getopts &amp;quot;h?cf:obs&amp;quot; opt; do
    case $opt in
        c)
            # just a flag, no options
            convert=true
            ;;
      f)
         # has a mandatory option, filename
         convert_file=true
         rmdfile=$OPTARG
         ;;
        o)
            # just a flag, no options
            overwrite_md=true
            ;;
        b)
            # just a flag, no options
            buildsite=true
            ;;
      s)
            # just a flag, no options
            send_live=true
            ;;
        h|\?)
            show_help
            exit 0
    esac
done
shift $((OPTIND-1))

#### 1. convert/overwrite *.Rmd to *.md
# uses the function KnitPost() from the R-script render_post.R
if [ &amp;quot;$convert&amp;quot; = true ] ; then
    echo &amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; jc: Converting RMarkdown to Markdown (overwrite = $overwrite_md)&amp;quot;
    if [ &amp;quot;$overwrite_md&amp;quot; = true ] ; then
        Rscript -e &amp;quot;source(&amp;#39;~/jekyll/chepec/_knitr/render_post.R&amp;#39;); KnitPost(overwrite=TRUE)&amp;quot;
    else
        Rscript -e &amp;quot;source(&amp;#39;~/jekyll/chepec/_knitr/render_post.R&amp;#39;); KnitPost()&amp;quot;
    fi
fi

#### 2. convert a specific Rmd-file
# uses the function KnitPost() from the R-script render_post.R
if [ &amp;quot;$convert_file&amp;quot; = true ] ; then
   # check that $rmdfile exists
   if [ -f $rmdfile ]; then
      Rscript -e &amp;quot;source(&amp;#39;~/jekyll/chepec/_knitr/render_post.R&amp;#39;); KnitPost(bashwd=&amp;#39;$bashpwd&amp;#39;,convert_file=&amp;#39;$rmdfile&amp;#39;)&amp;quot;
   else
      show_help
      exit 0
   fi
fi

#### 3. build the site
if [ &amp;quot;$buildsite&amp;quot; = true ] ; then
    echo &amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; jc: Building site to /var/www/blog&amp;quot;
    jekyll build -s ~/jekyll/chepec -d /var/www/blog
fi

#### 4. make changes live (send to public server)
if [ &amp;quot;$send_live&amp;quot; = true ] ; then
    echo &amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt; jc: Sending changes to live server&amp;quot;
    unison jekyll-damietta -auto
fi

exit 0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This way, we keep the Jekyll source directory exclusively on the local machine, and only sync the site directory with the remote machine (the public-facing server). &lt;del&gt;We still need to maintain a Jekyll install on both the local and remote machine, though – haven’t found a way around that.&lt;/del&gt; Correction: we only require a Jekyll stack on the machine where we build the site. Once Jekyll has built the site, the result is just a bunch of html, css and js that can be served to almost any browser.&lt;/p&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Installing Jekyll</title>
      <link>//solarchemist.se/2014/07/11/installing-jekyll/</link>
      <pubDate>Fri, 11 Jul 2014 16:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2014/07/11/installing-jekyll/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2014/07/11/installing-jekyll/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;I got Jekyll up and running on my server, and most of the time it was simply a matter of following the instructions. But some steps were not so obvious, so for posterity, here it is.&lt;/p&gt;
&lt;div id=&#34;installing-jekyll-via-gems-and-ruby&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Installing Jekyll via gems and Ruby&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;gem&lt;/code&gt; is a Ruby command, so we will need to install Ruby first and then Rubygems.&lt;/p&gt;
&lt;div id=&#34;ruby&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Ruby&lt;/h3&gt;
&lt;p&gt;There are many ways to install Ruby, but since the Debian/Ubuntu repos tend to be slightly outdated&lt;/p&gt;
&lt;p&gt;Downloaded and ran the RVM installation script&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;\curl -sSL https://get.rvm.io | bash -s stable&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sourced it:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;source ~/.rvm/scripts/rvm&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To test that RVM has been properly installed, we can issue&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;type rvm | head -n 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and should get &lt;code&gt;rvm is a function&lt;/code&gt; back.
We have thus successfully installed RVM. But we have not installed Ruby yet.&lt;/p&gt;
&lt;p&gt;RVM gives us plenty of choice when it comes to the flavour of Ruby we want, and it took some googling to figure out what distinguishes them. It turns out, not so much, and since we are noobs, we will go with MRI Ruby which is the original implementation, named after Ruby inventor and author Yukihiro Matsumoto.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;rvm install 2.1.1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We installed MRI Ruby 2.1.1. Now we need to tell RVM to use this as default for new shells.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;rvm use 2.1.1 --default&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s it for Ruby.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;rubygems&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;RubyGems&lt;/h3&gt;
&lt;p&gt;This is fairly straight-forward. Download, unpack and install the latest rubygems.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;wget http://production.cf.rubygems.org/rubygems/rubygems-2.3.0.zip
unzip rubygems-2.3.0.zip
cd rubygems-2.3.0
ruby setup.rb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s it for RubyGems.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;nodejs&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;NodeJS&lt;/h3&gt;
&lt;p&gt;This is another &lt;a href=&#34;http://jekyllrb.com/docs/installation/&#34;&gt;requirement of Jekyll&lt;/a&gt;.
On a recent Ubuntu install, it would be as easy as&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;apt-get install nodejs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;but on Debian, it is available through Wheezy backports or you’ll have to build from source. The former is easier so we’ll add the backport repo and install as usual.&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;echo &amp;quot;deb http://ftp.us.debian.org/debian wheezy-backports main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list
apt-get update
apt-get install nodejs&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;jekyll&#34; class=&#34;section level3&#34;&gt;
&lt;h3&gt;Jekyll&lt;/h3&gt;
&lt;p&gt;Now we can install Jekyll by running:&lt;/p&gt;
&lt;pre class=&#34;bash&#34;&gt;&lt;code&gt;gem install jekyll&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(this will install a bunch of other gems as well).&lt;/p&gt;
&lt;p&gt;At this point, running &lt;code&gt;jekyll&lt;/code&gt; without any arguments should present you with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;jekyll 2.1.1 -- Jekyll is a blog-aware, static site generator in Ruby&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;followed by jekyll’s help message.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&#34;creating-and-building-the-site&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Creating and building the site&lt;/h2&gt;
&lt;p&gt;I put the source directory in my home directory tree, and the site folder in the &lt;code&gt;/var/www&lt;/code&gt; tree.&lt;/p&gt;
&lt;p&gt;The initial source skeleton was created using &lt;code&gt;jekyll new&lt;/code&gt;, and after making some changes to &lt;code&gt;_config.yml&lt;/code&gt; I built the site using &lt;code&gt;jekyll build --source $SOURCE --destination $DESTINATION&lt;/code&gt; where &lt;code&gt;$SOURCE&lt;/code&gt; and &lt;code&gt;$DESTINATION&lt;/code&gt; were the path of the source directory (in the home tree) and the path of the destination directory (in the webserver tree), respectively.&lt;/p&gt;
&lt;p&gt;&lt;del&gt;Note that it was very important to set the &lt;code&gt;baseurl:&lt;/code&gt; property in &lt;code&gt;_config.yml&lt;/code&gt; so that it corresponds to where the destination directory resides. For example, if the site is placed in &lt;code&gt;/var/www/blog&lt;/code&gt;, we should set &lt;code&gt;baseurl: /blog&lt;/code&gt;. At first, I did not realise this, and the site rendered very poorly due to all relative links being broken, including those that pointed to the css-files.&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;Actually, I ended up removing the option &lt;code&gt;baseurl&lt;/code&gt; altogether from &lt;code&gt;_config.yml&lt;/code&gt;. &lt;a href=&#34;http://blog.parkermoore.de/2014/04/27/clearing-up-confusion-around-baseurl/&#34;&gt;Turns out &lt;code&gt;baseurl&lt;/code&gt; can be quirky&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&#34;working-the-site-basics&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Working the site (basics)&lt;/h2&gt;
&lt;p&gt;I dabbled a little with git, trying to setup a &lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-deploy-jekyll-blogs-with-git&#34;&gt;post-receive hook&lt;/a&gt;, but lost patience and created a bash script that handles it instead.&lt;/p&gt;
&lt;p&gt;That part is described in my &lt;a href=&#34;//solarchemist.se/2014/07/16/knitr-jekyll.html&#34;&gt;next post&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Conference talk: ECS 2013</title>
      <link>//solarchemist.se/2013/10/29/ecs-talk/</link>
      <pubDate>Tue, 29 Oct 2013 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2013/10/29/ecs-talk/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2013/10/29/ecs-talk/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;I attended the &lt;a href=&#34;https://ecs.confex.com/ecs/224/webprogram/start.html&#34;&gt;224th Electrochemical Society meeting&lt;/a&gt;
in San Francisco, California.&lt;/p&gt;
&lt;p&gt;I contributed an oral presentation titled
“Electrodeposited zinc oxide nanorods ALD-coated with iron oxide: photocatalytic and photoelectrochemical properties”.&lt;/p&gt;
&lt;object data=&#34;assets/131029-slides.pdf&#34; type=&#34;application/pdf&#34; width=&#34;100%&#34; height=&#34;100px&#34;&gt;
&lt;/object&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569688.v1&#34;&gt;
&lt;div style=&#34;border: 2px solid blue; padding-left: 6px; padding-top: 2px; background-color: #EBEBEB; color: black; text-align: center;&#34;&gt;
&lt;p&gt;The slides and its source files are posted on Figshare.
&lt;br&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569688.v1&#34; class=&#34;uri&#34;&gt;https://dx.doi.org/10.6084/m9.figshare.3569688.v1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The slides were prepared using &lt;code&gt;beamer&lt;/code&gt; and &lt;code&gt;knitr&lt;/code&gt;. Several plots were
dynamically generated on the slide using &lt;code&gt;knitr&lt;/code&gt; and &lt;code&gt;ggplot2&lt;/code&gt;, as can be
seen in the source.&lt;/p&gt;
&lt;div id=&#34;tools&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://yihui.name/knitr/&#34;&gt;knitr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ctan.org/pkg/beamer?lang=en&#34;&gt;beamer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://ggplot2.org/&#34;&gt;ggplot2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] knitr_1.37
## 
## loaded via a namespace (and not attached):
##  [1] bookdown_0.24   digest_0.6.29   R6_2.5.1        jsonlite_1.7.3  magrittr_2.0.2 
##  [6] evaluate_0.14   blogdown_1.7    stringi_1.7.6   rlang_1.0.1     cli_3.2.0      
## [11] jquerylib_0.1.4 bslib_0.3.1     rmarkdown_2.11  tools_4.0.5     stringr_1.4.0  
## [16] xfun_0.29       yaml_2.2.2      fastmap_1.1.0   compiler_4.0.5  htmltools_0.5.2
## [21] sass_0.4.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Conference poster: MRS spring 2013</title>
      <link>//solarchemist.se/2013/04/05/mrs-poster/</link>
      <pubDate>Fri, 05 Apr 2013 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2013/04/05/mrs-poster/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2013/04/05/mrs-poster/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;I attended the &lt;a href=&#34;http://www.mrs.org/spring2013/&#34;&gt;2013 Materials Research Society (MRS) Spring Meeting&lt;/a&gt; at Moscone Center, San Francisco, California.&lt;/p&gt;
&lt;p&gt;We presented the poster “A Facile Approach to ZnO/CdS Nanoarrays and Their Photocatalytic and Photoelectrochemical Properties”, which was based on our recent publication. &lt;span class=&#34;citation&#34;&gt;(&lt;a href=&#34;#ref-Li2013b&#34; role=&#34;doc-biblioref&#34;&gt;Li et al. 2013&lt;/a&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;assets/130405-poster.png&#34; /&gt;&lt;/p&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.850371.v2&#34;&gt;
&lt;div style=&#34;border: 2px solid blue; padding-left: 6px; padding-top: 2px; background-color: #EBEBEB; color: black; text-align: center;&#34;&gt;
&lt;p&gt;The poster and its source files are posted on Figshare.
&lt;br&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.850371.v2&#34; class=&#34;uri&#34;&gt;https://dx.doi.org/10.6084/m9.figshare.850371.v2&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id=&#34;tools&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/deselaers/latex-beamerposter&#34;&gt;beamerposter Github page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ctan.org/pkg/beamerposter&#34;&gt;beamerposter on CTAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://groups.google.com/forum/#!forum/beamerposter&#34;&gt;beamerposter Google Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.statistik.lmu.de/~leisch/Sweave/&#34;&gt;Sweave&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] knitr_1.37
## 
## loaded via a namespace (and not attached):
##  [1] bookdown_0.24   digest_0.6.29   R6_2.5.1        jsonlite_1.7.3  magrittr_2.0.2 
##  [6] evaluate_0.14   blogdown_1.7    stringi_1.7.6   rlang_1.0.1     cli_3.2.0      
## [11] jquerylib_0.1.4 bslib_0.3.1     rmarkdown_2.11  tools_4.0.5     stringr_1.4.0  
## [16] xfun_0.29       yaml_2.2.2      fastmap_1.1.0   compiler_4.0.5  htmltools_0.5.2
## [21] sass_0.4.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body hanging-indent&#34;&gt;
&lt;div id=&#34;ref-Li2013b&#34; class=&#34;csl-entry&#34;&gt;
Li, Chunmei, Taha Ahmed, Mingguo Ma, Tomas Edvinsson, and Jiefang Zhu. 2013. &lt;span&gt;“A Facile Approach to &lt;span&gt;ZnO&lt;/span&gt;/&lt;span&gt;CdS&lt;/span&gt; Nanoarrays and Their Photocatalytic and Photoelectrochemical Properties.”&lt;/span&gt; &lt;em&gt;Applied Catalysis B: Environmental&lt;/em&gt; 138–139 (July): 175–83. &lt;a href=&#34;https://doi.org/10.1016/j.apcatb.2013.02.042&#34;&gt;https://doi.org/10.1016/j.apcatb.2013.02.042&lt;/a&gt;.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Conference poster: IPS-19 2012</title>
      <link>//solarchemist.se/2012/08/03/ips-poster/</link>
      <pubDate>Fri, 03 Aug 2012 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2012/08/03/ips-poster/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2012/08/03/ips-poster/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;I attended the &lt;a href=&#34;http://hoffman-staging.caltech.edu/files/2011/06/IPS-19-Caltech-2012-Poster.pdf&#34;&gt;19th&lt;/a&gt; &lt;a href=&#34;http://www.ips21-spb.com/about-conference&#34;&gt;International Conference on Photochemical Conversion and Storage of Solar Energy&lt;/a&gt; (IPS-19) at Caltech, Pasadena, California.&lt;/p&gt;
&lt;p&gt;We presented two posters, the first on “Preparation, structure and properties of zinc oxide/cadmium sulfide photoanodes”, and the second on “Electrodeposited zinc oxide nanorods coated with atomic-layer-deposited hematite film”.&lt;/p&gt;
&lt;p&gt;Most plots were made using &lt;code&gt;ggplot2&lt;/code&gt;, and physical peak fitting was done using the R package &lt;a href=&#34;https://cran.r-project.org/web/packages/diffractometry/index.html&#34;&gt;&lt;code&gt;diffractometry&lt;/code&gt; by Davies et al&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;figure&#34;&gt;
&lt;img src=&#34;assets/120803-CdS.png&#34; alt=&#34;&#34; /&gt;
&lt;p class=&#34;caption&#34;&gt;This work was later published as &lt;span class=&#34;citation&#34;&gt;Li et al. (&lt;a href=&#34;#ref-Li2013b&#34; role=&#34;doc-biblioref&#34;&gt;2013&lt;/a&gt;)&lt;/span&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.850370.v2&#34;&gt;
&lt;div style=&#34;border: 2px solid blue; padding-left: 6px; padding-top: 2px; background-color: #EBEBEB; color: black; text-align: center;&#34;&gt;
&lt;p&gt;The above poster and its source files are posted on Figshare.
&lt;br&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.850370.v2&#34; class=&#34;uri&#34;&gt;https://dx.doi.org/10.6084/m9.figshare.850370.v2&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;assets/120803-hematite.png&#34; /&gt;&lt;/p&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569661.v1&#34;&gt;
&lt;div style=&#34;border: 2px solid blue; padding-left: 6px; padding-top: 2px; background-color: #EBEBEB; color: black; text-align: center;&#34;&gt;
&lt;p&gt;The above poster and its source files are posted on Figshare.
&lt;br&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569661.v1&#34; class=&#34;uri&#34;&gt;https://dx.doi.org/10.6084/m9.figshare.3569661.v1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id=&#34;tools&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/deselaers/latex-beamerposter&#34;&gt;beamerposter Github page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ctan.org/pkg/beamerposter&#34;&gt;beamerposter on CTAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://groups.google.com/forum/#!forum/beamerposter&#34;&gt;beamerposter Google Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.statistik.lmu.de/~leisch/Sweave/&#34;&gt;Sweave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cran.r-project.org/web/packages/diffractometry/index.html&#34;&gt;diffractometry: R package for physical peak fitting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] knitr_1.37
## 
## loaded via a namespace (and not attached):
##  [1] bookdown_0.24   digest_0.6.29   R6_2.5.1        jsonlite_1.7.3  magrittr_2.0.2 
##  [6] evaluate_0.14   blogdown_1.7    stringi_1.7.6   rlang_1.0.1     cli_3.2.0      
## [11] jquerylib_0.1.4 bslib_0.3.1     rmarkdown_2.11  tools_4.0.5     stringr_1.4.0  
## [16] xfun_0.29       yaml_2.2.2      fastmap_1.1.0   compiler_4.0.5  htmltools_0.5.2
## [21] sass_0.4.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div id=&#34;references&#34; class=&#34;section level2 unnumbered&#34;&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;div id=&#34;refs&#34; class=&#34;references csl-bib-body hanging-indent&#34;&gt;
&lt;div id=&#34;ref-Li2013b&#34; class=&#34;csl-entry&#34;&gt;
Li, Chunmei, Taha Ahmed, Mingguo Ma, Tomas Edvinsson, and Jiefang Zhu. 2013. &lt;span&gt;“A Facile Approach to &lt;span&gt;ZnO&lt;/span&gt;/&lt;span&gt;CdS&lt;/span&gt; Nanoarrays and Their Photocatalytic and Photoelectrochemical Properties.”&lt;/span&gt; &lt;em&gt;Applied Catalysis B: Environmental&lt;/em&gt; 138–139 (July): 175–83. &lt;a href=&#34;https://doi.org/10.1016/j.apcatb.2013.02.042&#34;&gt;https://doi.org/10.1016/j.apcatb.2013.02.042&lt;/a&gt;.
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Conference poster: GradSAM 2012</title>
      <link>//solarchemist.se/2012/02/08/gradsam-poster/</link>
      <pubDate>Wed, 08 Feb 2012 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2012/02/08/gradsam-poster/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2012/02/08/gradsam-poster/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;I attended the &lt;a href=&#34;http://www.avanceradematerial.fysik.uu.se/workshop2012.html&#34;&gt;GradSAM 2012 conference&lt;/a&gt;, which was organised by the &lt;a href=&#34;http://www.avanceradematerial.fysik.uu.se/gradschool.html&#34;&gt;Graduate School in Advanced Materials for the 21st century&lt;/a&gt; at the faculty of Science and technology, Uppsala university (a local conference primarily for the doctoral students at the faculty).&lt;/p&gt;
&lt;p&gt;We presented the poster “Electrodeposited zinc oxide nanorods coated with atomic-layer deposited iron oxide”, which included some X-ray flyuorescence, SEM, and optical UV/Vis characterisation data of &lt;span class=&#34;math inline&#34;&gt;\(\ce{ZnO}/\ce{Fe2O3}\)&lt;/span&gt; nanorod arrays.&lt;/p&gt;
&lt;p&gt;I made the poster using LaTeX (with the &lt;code&gt;beamerposter&lt;/code&gt; package), Sweave and R.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;assets/120208-poster.png&#34; /&gt;&lt;/p&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569655.v1&#34;&gt;
&lt;div style=&#34;border: 2px solid blue; padding-left: 6px; padding-top: 2px; background-color: #EBEBEB; color: black; text-align: center;&#34;&gt;
&lt;p&gt;The poster and its source files are posted on Figshare.
&lt;br&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569655.v1&#34; class=&#34;uri&#34;&gt;https://dx.doi.org/10.6084/m9.figshare.3569655.v1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id=&#34;tools&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/deselaers/latex-beamerposter&#34;&gt;beamerposter Github page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ctan.org/pkg/beamerposter&#34;&gt;beamerposter on CTAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://groups.google.com/forum/#!forum/beamerposter&#34;&gt;beamerposter Google Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.statistik.lmu.de/~leisch/Sweave/&#34;&gt;Sweave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikibooks.org/wiki/LaTeX/PGF/TikZ&#34;&gt;TikZ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] knitr_1.37
## 
## loaded via a namespace (and not attached):
##  [1] bookdown_0.24   digest_0.6.29   R6_2.5.1        jsonlite_1.7.3  magrittr_2.0.2 
##  [6] evaluate_0.14   blogdown_1.7    stringi_1.7.6   rlang_1.0.1     cli_3.2.0      
## [11] jquerylib_0.1.4 bslib_0.3.1     rmarkdown_2.11  tools_4.0.5     stringr_1.4.0  
## [16] xfun_0.29       yaml_2.2.2      fastmap_1.1.0   compiler_4.0.5  htmltools_0.5.2
## [21] sass_0.4.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Conference poster: GradSAM 2011</title>
      <link>//solarchemist.se/2011/02/09/gradsam-poster/</link>
      <pubDate>Wed, 09 Feb 2011 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2011/02/09/gradsam-poster/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2011/02/09/gradsam-poster/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;I attended the &lt;a href=&#34;http://www.avanceradematerial.fysik.uu.se/workshop2011.html&#34;&gt;GradSAM 2011 conference&lt;/a&gt;, which was organised by the &lt;a href=&#34;http://www.avanceradematerial.fysik.uu.se/gradschool.html&#34;&gt;Graduate School in Advanced Materials for the 21st century&lt;/a&gt; at the faculty of Science and technology, Uppsala university (a local conference primarily for the doctoral students at the faculty).&lt;/p&gt;
&lt;p&gt;We presented the poster “Template-assisted electrodeposition of &lt;span class=&#34;math inline&#34;&gt;\(\ce{TiO2}\)&lt;/span&gt; on transparent conductive oxide substrates”, which dealt with some aspects of the synthesis of nanoparticulate titania.&lt;/p&gt;
&lt;p&gt;I made the poster using LaTeX (with the &lt;code&gt;beamerposter&lt;/code&gt; package), Sweave and R, with all of the illustrations done using PGF/TikZ.
The periodic table was written in TikZ and adapted from &lt;a href=&#34;http://www.texample.net/tikz/examples/periodic-table-of-chemical-elements/&#34;&gt;Ivan Griffin’s Periodic Table of Chemical Elements&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;assets/110209-poster.png&#34; /&gt;&lt;/p&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569628.v1&#34;&gt;
&lt;div style=&#34;border: 2px solid blue; padding-left: 6px; padding-top: 2px; background-color: #EBEBEB; color: black; text-align: center;&#34;&gt;
&lt;p&gt;The poster and its source files are posted on Figshare.
&lt;br&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569628.v1&#34; class=&#34;uri&#34;&gt;https://dx.doi.org/10.6084/m9.figshare.3569628.v1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id=&#34;tools&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/deselaers/latex-beamerposter&#34;&gt;beamerposter Github page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ctan.org/pkg/beamerposter&#34;&gt;beamerposter on CTAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://groups.google.com/forum/#!forum/beamerposter&#34;&gt;beamerposter Google Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.statistik.lmu.de/~leisch/Sweave/&#34;&gt;Sweave&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikibooks.org/wiki/LaTeX/PGF/TikZ&#34;&gt;TikZ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] knitr_1.37
## 
## loaded via a namespace (and not attached):
##  [1] bookdown_0.24   digest_0.6.29   R6_2.5.1        jsonlite_1.7.3  magrittr_2.0.2 
##  [6] evaluate_0.14   blogdown_1.7    stringi_1.7.6   rlang_1.0.1     cli_3.2.0      
## [11] jquerylib_0.1.4 bslib_0.3.1     rmarkdown_2.11  tools_4.0.5     stringr_1.4.0  
## [16] xfun_0.29       yaml_2.2.2      fastmap_1.1.0   compiler_4.0.5  htmltools_0.5.2
## [21] sass_0.4.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>Conference poster: Oorgandagarna 2010</title>
      <link>//solarchemist.se/2010/06/19/oorgandagarna-poster/</link>
      <pubDate>Sat, 19 Jun 2010 18:00:00 +0100</pubDate>
      
      <guid>//solarchemist.se/2010/06/19/oorgandagarna-poster/</guid>
      
      <description>
&lt;script src=&#34;//solarchemist.se/2010/06/19/oorgandagarna-poster/index_files/header-attrs/header-attrs.js&#34;&gt;&lt;/script&gt;


&lt;p&gt;I attended the conference Oorgandagarna 2010 (&lt;a href=&#34;http://www.oorgan.se/&#34;&gt;“Inorganic Days”&lt;/a&gt;) which was organised by the &lt;a href=&#34;http://kemisamfundet.se/&#34;&gt;Swedish Chemical Society&lt;/a&gt; at SLU, Uppsala, June 16–19 2010.&lt;/p&gt;
&lt;p&gt;We presented the poster “Semiconducting oxides for photoelectrochemical water splitting”. I made the poster using LaTeX and TikZ with the &lt;code&gt;beamerposter&lt;/code&gt; package.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;assets/100619-poster.png&#34; /&gt;&lt;/p&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569154.v1&#34;&gt;
&lt;div style=&#34;border: 2px solid blue; padding-left: 6px; padding-top: 2px; background-color: #EBEBEB; color: black; text-align: center;&#34;&gt;
&lt;p&gt;The poster and its source files are posted on Figshare.
&lt;br&gt;
&lt;a href=&#34;https://dx.doi.org/10.6084/m9.figshare.3569154.v1&#34; class=&#34;uri&#34;&gt;https://dx.doi.org/10.6084/m9.figshare.3569154.v1&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id=&#34;tools&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Tools&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/deselaers/latex-beamerposter&#34;&gt;beamerposter Github page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.ctan.org/pkg/beamerposter&#34;&gt;beamerposter on CTAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://groups.google.com/forum/#!forum/beamerposter&#34;&gt;beamerposter Google Group&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&#34;session-info&#34; class=&#34;section level2&#34;&gt;
&lt;h2&gt;Session info&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;## R version 4.0.5 (2021-03-31)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 18.04.6 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=C.UTF-8       LC_NUMERIC=C           LC_TIME=C.UTF-8       
##  [4] LC_COLLATE=C.UTF-8     LC_MONETARY=C.UTF-8    LC_MESSAGES=C.UTF-8   
##  [7] LC_PAPER=C.UTF-8       LC_NAME=C              LC_ADDRESS=C          
## [10] LC_TELEPHONE=C         LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C   
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] knitr_1.37
## 
## loaded via a namespace (and not attached):
##  [1] bookdown_0.24   digest_0.6.29   R6_2.5.1        jsonlite_1.7.3  magrittr_2.0.2 
##  [6] evaluate_0.14   blogdown_1.7    stringi_1.7.6   rlang_1.0.1     cli_3.2.0      
## [11] jquerylib_0.1.4 bslib_0.3.1     rmarkdown_2.11  tools_4.0.5     stringr_1.4.0  
## [16] xfun_0.29       yaml_2.2.2      fastmap_1.1.0   compiler_4.0.5  htmltools_0.5.2
## [21] sass_0.4.0&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title></title>
      <link>//solarchemist.se/1/01/01/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>//solarchemist.se/1/01/01/</guid>
      
      <description>&lt;h1 id=&#34;template-blog-post&#34;&gt;template-blog-post&lt;/h1&gt;
&lt;p&gt;Template git repo for blog post, used by create-blog-post.sh script&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
