diff --git a/00_overview.ipynb b/00_overview.ipynb
new file mode 100644
index 0000000..1425107
--- /dev/null
+++ b/00_overview.ipynb
@@ -0,0 +1,108 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib widget\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from util import render_audio_sample"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Building Open Source Geochemical Research Tools in Python\n",
+ "\n",
+ "Morgan Williams , Louise Schoneveld, Steve Barnes and Jens Klump; \n",
+ "CSIRO Mineral Resources \n",
+ "\n",
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "\n",
+ "\n",
+ " About this Presentation \n",
+ "\n",
+ "This is a Binder-enabled repository to accompany the abstract\n",
+ "\n",
+ "\"Building Open Source Geochemical Research Tools in Python\" \n",
+ "for Goldschmidt 2020 Session 06d \n",
+ "(Information, Innovation, and Knowledge in Microanalytical Mass Spectrometry;\n",
+ "12:30-13:30 Thursday June 25 AWST/ 18:30-19:30 Wednesday June 24 HST).\n",
+ "To view the un-rendered notebooks behind this presentation, have a look at the repository on GitHub .\n",
+ " \n",
+ "This presentation has been constructed using Jupyter notebooks and Voilà as an experiment in combining what would typically be found in a conference presentation with live-rendered interactive elements as a way to demonstrate aspects of software.\n",
+ "
\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Abstract \n",
+ "\n",
+ "While the geochemistry community is transitioning to more open, reproducible and collaborative science practices, effective tools to facilitate this transition remain few in number. Here we describe a number of geochemistry-focused open source Python packages at various stages of development, and highlight some of the software development practises and tools we have used to build them.\n",
+ "\n",
+ "Of these, the most advanced is pyrolite, a Python package built to facilitate data-driven understanding of geological processes using multivariate geochemical data. The core features of this package include functions for transforming geochemical data and visualisation (including ternary, spider and density diagrams). Other under-development tools include utilities for transformation of image and stage coordinates to allow reproducible positioning between instruments, a simple tool for predicting molecular ion interferences from and a pyrolite extension linking compositions to alphaMELTS models. Each of these software projects are co-developed with their documentation and integrated test suites. Online documentation is updated and versioned with the software, and includes a set of examples for key features.\n",
+ "These tools are developed for and by the geochemistry community, and are both freely available and released under an unrestrictive license. Questions and all forms of user contributions are welcomed (e.g. code, documentation, bug reports and feature requests). We hope these tools will contribute to enabling better geochemical research practices, and potentially even establishing common workflows for geochemical data processing and analysis within the user community.\n",
+ "\n",
+ "A programmatic approach has distinct advantages over spreadsheet-based tools, and can result in improved transparency and traceability of results. The scientific Python ecosystem provides a solid foundation for prototyping, developing and interlinking tools from data processing through to modelling and machine learning. Tools can be extended with user interfaces and optimised for performance where needed. Where accessibility is kept in mind, developing tools in Python, and designing packages to be re-used and integrated into existing scientific workflows can improve efficiency and reproducibility while enabling geoscientists to develop transferable digital skills."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/01_Introduction.ipynb b/01_Introduction.ipynb
new file mode 100644
index 0000000..b087a13
--- /dev/null
+++ b/01_Introduction.ipynb
@@ -0,0 +1,233 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Building Open Source Geochemical Research Tools in Python\n",
+ "\n",
+ "Morgan Williams , Louise Schoneveld, Steve Barnes and Jens Klump; \n",
+ "CSIRO Mineral Resources \n",
+ "\n",
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Introduction\n",
+ "\n",
+ "### Key Messages\n",
+ "\n",
+ "* Software is a key part of geochemical research\n",
+ "* Existing software is often relatively inflexible and intransparent\n",
+ "* Developing open-source tools can address some of the existing challenges\n",
+ "* Community input and support is likely required to make this sustainable\n",
+ "\n",
+ "### Software in Geochemistry\n",
+ "\n",
+ "While software was once auxiliary to the collection of data and generation of knowledge, it is quickly becoming an essential component of scientific research. In geochemical research, we use software[*](#f1) to control instruments and collect data, to reduce this raw data to produce estimates of composition, to analyse and model our data, and to produce graphical representations which we can use to communicate the meaning and significance of all of this. Additionally, while it's not the focus of this presentation, reserach software can also be later tertiary education programmes, especially those which seek to introduce students to what research looks like in practise. \n",
+ "\n",
+ "With regard to mass-spectrometry, software for data collection is often specific to individual instruments and in most cases proprietary, but tools for data analysis and visualisation can vary widely. Particularly in this space, there’s opportunities to develop specialised tools to enhance and add value geochemical research outputs, and potentially get more out of our data. In particular, specifically designing software for transparency, reproducibility and accessibility will aid the interpretability of results and data reuse. In this presentation we make the case for developing tools for geochemical research with Python[†](#f2) , and in the open - ideally with contribution from a community of users. \n",
+ "\n",
+ "While it’s not always the first option, developing your own software may be a productive path if you’re frequently having issues wrangling with inflexible (and sometimes, expensive) software which doesn’t meet your need. With some planning and design, It is also a way to add value to research already being conducted, bring interoperability and standardisation and contribute to the community.\n",
+ "\n",
+ "\n",
+ " \n",
+ "* : Here where we refer to software, we are purposely using the term in a relatively broad sense, and intend to refer to the range of software-based tools which are used in geochemistry (i.e. everything from templated excel spreadsheets to ecosystems of related professionally-developed standalone executable programs). ↩ \n",
+ "
\n",
+ "\n",
+ "† : Note that while this presentation focuses on Python, it is largely for reasons of convenience rather than in support of it’s exclusive use. There are a number of languages which fit well with the ideas presented here and are approachable for those new to coding, notably including R and Julia. ↩ \n",
+ "
\n",
+ " \n",
+ "\n",
+ "### Requirements and Challenges for Research Software\n",
+ "\n",
+ "There are number of key challenges for the development, adoption and sustainability of research software projects. Below we've listed a few of them with assocaited questions, and some potential solutions or advantages in developing community-driven open-source software.\n",
+ "\n",
+ "
\n",
+ "Development and Maintenance \n",
+ "Do I have the skills to develop this? Can we sustainabily develop and maintain this? \n",
+ " \n",
+ "One relatively flexible way of making tools available for use is through developing modular libraries or packages, which can be used as components in other software (which may, for example, add an additional user interface). By constructing modular software, not only can we focus on the core components we need and use for research, but we can build and version individual components separately.\n",
+ " \n",
+ "By developing tools in high-level languages (e.g. Python, R, Julia) which do not need to be compiled, some of the complexity of learning and starting to write code is avoided. This allows researchers to relatively quickly build something which works, which can be further developed into a prototype or package.\n",
+ " \n",
+ "Trust and Transparency \n",
+ "How do I know this does what I expect? How do I know if this is a bug? \n",
+ "\n",
+ "Being open-source allows others to interrogate and debug a code base to understand how it works, and potentially contribute to bugfixes and patches where issues are identified.\n",
+ " \n",
+ "A suite of automated tests which cover most of the code base can be used to demonstrate that most things are working as expected (at least for the expected use cases).\n",
+ " \n",
+ "By attributing versions to successive releases, a consistent reference point is established for the identification of issues (e.g. \"there's a bug with plot colors in v1.2.0, but it was fixed for v1.2.1\"). A changelog is a useful addition to the documentation which effectively describes how the software evolves, at at which issues are identified and fixed.\n",
+ " \n",
+ "One key advantage of building these tools at a community level, or at least in interaction with the community, is that outcomes of discussions around best-practise can be integrated into tools as defaults (and hence available without any additional effort from the user).\n",
+ " \n",
+ "Accessibility and Documentation \n",
+ "How do I install this? Can I contribute? Does it work on my operating system? How do I do X? \n",
+ "\n",
+ "Packaging code and publishing it in public repositories (e.g. PyPI for Python) allows for relatively straightforward installation. \n",
+ " \n",
+ "Documentation is a key facilitator for adoption of software, and will also typically help with sustainable maintenance and development.\n",
+ " \n",
+ "Developing modular packages in e.g. Python reduces changes of operating-system dependencies. Adding automated test suites which are run on multiple systems allows users more certainty around what potential issues might exist.\n",
+ "\n",
+ "Governance \n",
+ "Who should have oversight? How do we encourage all parts of our community to contribute? \n",
+ " \n",
+ "This is perhaps the key challenge for open-source projects, especially those developed by researchers. Typcially a project has a single maintainer, and potentially a number of contributors.\n",
+ " \n",
+ "Recognition \n",
+ "How do we assure that researchers, developers and technicians receive attribution/credit for this work? \n",
+ "\n",
+ "For this work to be sustainable, those developing research software should recieve appropriate recognition and have the opportunity to develop ongoing careers - but the commonly used metrics in academic research don't necessarily translate well for software. \n",
+ " \n",
+ "While there are efforts towards increased software citation, there are open questions around how e.g. maintenance is recognised.\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Development Workflow & Tools\n",
+ "\n",
+ "Given the requirements discussed above, below we highlight some of the key aspects of the development of research software, and some of the tools we've used to develop the packages we exhibit later. These incldue:\n",
+ "* An open and accessible codebase\n",
+ "* Versioning and packaging/deployment \n",
+ "* Documentation\n",
+ "* A test suite which covers most of the code\n",
+ "* A platform for discussion and contribution"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Leveraging The Scientific Python Ecosystem\n",
+ "\n",
+ "The scientific Python ecosystem is large and relatively mature; a wide variety of numerical, visualisation and utility packages exist which make for a solid foundation from which to build more specialised tools.\n",
+ "\n",
+ "``pyrolite`` and releated tools are built upon already-existing and widely used tools for working with tabluar data (e.g. [pandas](https://pandas.pydata.org/)[[1]](#mckinney) ) and visualisation (e.g. [matplotlib](https://matplotlib.org/)[[2]](#hunter) ). As a result generally follows their conventions and syntax, and also exposes exposes their API such that it can be readily accessed. In particular, the API makes use of dataframe accessor classes provided by ``pandas`` to add additional dataframe 'namespaces' (e.g. accessing the ``pyrolite`` spiderplot method via `df.pyroplot.spider()`). This approach allows ``pyrolite`` to use more familiar syntax, helping geochemists new to Python to hit the ground running, and encouraging development of transferable knowledge and skills.\n",
+ "\n",
+ "\n",
+ "\n",
+ "[1] : McKinney, W., 2010. Data structures for statistical computing in python, in: van der Walt, S., Millman, J. (Eds.), Proceedings of the 9th Python in Science Conference. pp. 51–56.\n",
+ "
\n",
+ "\n",
+ "[2] : Hunter, J.D., 2007. Matplotlib: A 2D Graphics Environment. Comput. Sci. Eng. 9, 90–95. https://doi.org/10.1109/MCSE.2007.55\n",
+ "
\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Software Repositories and Packaging\n",
+ "\n",
+ "**Repositories**: All of the software projects are hosted in remote git repositories on [GitHub](https://github.com/), together with associated documentation and test suites. Using git repositories allows for managment of incremental changes to code and documentation, and in this case the GitHub repository also serves as a discussion board to identify issues and a point-of-contact for potential contriubtions.\n",
+ "\n",
+ "**Versions**: Named versions correspond to 'releases', where each release incorporates all the changes and bugfixes since the last. Naming conventions largely follow [semantic versioning guidelines](https://semver.org/), where version numbers such as v2.4.3 correspond to major (2), minor (4) and patch (3) versions.\n",
+ "\n",
+ "**Branches, Releases and Packaging**: Git repositories are arranged such that they have a 'stable' master branch which corresponds to the latest release, and a potentially 'unstable' development branch where ongoing work occurs. These projects use a ['gitflow' workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) to incorporate new changes into the next release. Once releases are generated, the repository is packaged and uploaded to the Python Package Index, [PyPI](https://pypi.org/), and typically an archive is created on [Zenodo](https://zenodo.org/), which then recieves a DOI such that each version is readily citable."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Documentation\n",
+ "\n",
+ "The principal source of documentation for these packages in within the code itself - in the form of 'docstrings' which accompany each function and class, describing what they do, their inputs, outputs and where relevant appropriate references. From this, each time a new change is pushed to the repository, [Sphinx](https://www.sphinx-doc.org) is used to automatically generated a website (hosted on [readthedocs.org](https://readthedocs.org/)) which documents how the code is structured and how you can interact with it (or, the API).\n",
+ "\n",
+ "This is supplemented with manually-created examples and tutorials to demonstrate how to use the packages, which are generated form code each time the documentation is built, such that examples incorporate all new changes by default. Further, the page includes a changelog listing all notable changes and releases, along with information regarding development, citation and contributing.\n",
+ "\n",
+ "Finally, each branch (and version) has its own documentation, such that documentation largely keeps pace with the code base. For an example, see the [pyrolite documentation page](https://pyrolite.rtfd.io), one page of which is shown below:\n",
+ "\n",
+ "![pyrolite documentation page](img/rtfd.png)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Testing and Continuous Integration\n",
+ "\n",
+ "Each of the software project has an independent set of unit tests which systematically test the *expected* functionality of the code base.\n",
+ "\n",
+ "While these tests are useful for local development, they're also used as part of the on-push pipeline (this is typically referred to as continuous integration and deployment/delivery, or CI/CD), where services automatically run this suite of tests each time changes are pushed to the hosted repository ([Travis.org](https://travis-ci.org/) is used for these projects; e.g. see the [page for pyrolite](https://travis-ci.org/github/morganjwilliams/pyrolite)). In our case the tests are run for a specifed range of Python versions (similarly, a range of operating systems can be specified). In cases where tests fail, certain actions such as deployment or releases can be blocked.\n",
+ "\n",
+ "These services provide detailed information regarding test results and *test coverage*, which can be used as one metric for assessing test gaps. This information is collected as displayed by a separate service, [Coveralls](https://coveralls.io) where line-by-line test coverage can be assesed to identify targets for increasing test coverage."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Community Platforms and Contribution\n",
+ "\n",
+ "``pyrolite`` and associated tools aim to be designed, developed and supported by the geochemistry community. For general chat, questions and debugging, we use [Gitter](https://gitter.im) (e.g. see the [channel for ``pyrolite``](https://gitter.im/pyrolite/community)), which nicely links to Issues and Pull Requests on GitHub for reference. This essentially serves as a searchable forum space, such that we can easily identify questions which appear repeatedly and improve the related documentation. GitHub serves as the centre of development activity for the project. It hosts an Issues board (for identifying bugs and issues, as well as requesting or discussing new features), and provides a foundation on which we can incorporate community contributions (e.g. via pull-request).\n",
+ "\n",
+ "Community contributions to help develop these projects into useful toolkits and resources are welcomed and encouraged (for both research and education purposes). Information regarding contributions (of various flavours, from bug reports and documentation through to code contributions or even whole features) are presented on the documentation websites (e.g. [pyrolite's](https://pyrolite.readthedocs.io/en/master/dev/contributing.html), along with a list of contributors and a Code of Conduct (which applies across the project generally; [see here](https://pyrolite.readthedocs.io/en/master/dev/conduct.html))."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### A Call Towards a Community Effort\n",
+ "\n",
+ "While we're all currently moving towards more digital approaches to our research, it would seem an opportune time to combine efforts and reduce potentially duplicated work through collaborative development of shared tools. Not only can we work towards improved standardisation and interoperatiblity, but we can incorporate best practises and modern data analysis tools into our software such that we make the most of our data. In an ideal world, a shared effort here might mean we can spend more of our time and money on the actual research, instrument maintenance, supporting technicians and researchers - but that may be a touch optimistic.\n",
+ "\n",
+ "There remain a variety of challenges to developing software in a research context, and while the solutions to some technical issues are often readily solved, challenges related to the community and developers will remain for some time. Software needs to be maintained to be sustained and to remain useful, and this is relatively human intensive (lest we be left with more bugs, less functional software and legacy issues). Approaching and discussing these challenges proactively would be a worthy investment to make such efforts more sustainable."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/021_pyrolite.ipynb b/021_pyrolite.ipynb
new file mode 100644
index 0000000..685ce55
--- /dev/null
+++ b/021_pyrolite.ipynb
@@ -0,0 +1,170 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Building Open Source Geochemical Research Tools in Python\n",
+ "\n",
+ "Morgan Williams , Louise Schoneveld, Steve Barnes and Jens Klump; \n",
+ "CSIRO Mineral Resources \n",
+ "\n",
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## [pyrolite](https://github.com/morganjwilliams/pyrolite)\n",
+ "\n",
+ "> pyrolite is a set of tools for making the most of your geochemical data.\n",
+ "\n",
+ "[![PyPI](https://img.shields.io/pypi/v/pyrolite.svg?style=flat)](https://pypi.python.org/pypi/pyrolite)\n",
+ "[![Docs](https://readthedocs.org/projects/pyrolite/badge/?version=develop)](https://pyrolite.readthedocs.io/)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "``pyrolite`` provides tools for processing, transforming and visualising geochemical data from common tabular formats.\n",
+ "The package includes methods to recalculate and rescale whole-rock and mineral compositions, perform compositional statistics and create appropriate visualisations and also includes numerous auxiliary utilities (e.g. a geological timescale).\n",
+ "In addition, these tools provide a foundation for preparing data for subsequent machine learning applications using ``scikit-learn``[[1]](#pedregosa) .\n",
+ "\n",
+ "Geochemical data are compositional (i.e. sum to 100%), and as such require non-standard statistical treatment[[2]](#aitchison) . While challenges of compositional data have long been acknowledged[[3]](#pearson) , appropriate measures to account for this have thus far seen limited uptake by the geochemistry community. The submodule ``pyrolite.comp`` provides access to methods for transforming compositional data, facilitating more robust statistical practices.\n",
+ "\n",
+ "A variety of standard diagram methods (e.g. ternary, spider, and data-density diagrams; see Figs. 1, 2), templated diagrams (e.g. the Total-Alkali Silica diagram[[4]](#lebas) ; and Pearce diagrams[[5]](#pearce) and novel geochemical visualisation methods are available.\n",
+ "The need to visualise geochemical data (typically graphically represented as bivariate and ternary diagrams) has historically limited the use of multivariate measures in geochemical research.\n",
+ "Together with the methods for compositional data and utilities for dimensional reduction via ``scikit-learn``, ``pyrolite`` eases some of these difficulties and encourages users to make the most of their data dimensionality.\n",
+ "Further, the data-density and histogram-based methods are particularly useful for working with steadily growing volumes of geochemical data, as they reduce the impact of 'overplotting'.\n",
+ "\n",
+ "Reference datasets of compositional reservoirs (e.g. CI-Chondrite, Bulk Silicate Earth, Mid-Ocean Ridge Basalt) and a number of rock-forming mineral endmembers are installed with ``pyrolite``.\n",
+ "The first of these enables normalisation of composition to investigate relative geochemical patterns, and the second facilitates mineral endmember recalculation and normative calculations.\n",
+ "\n",
+ "``pyrolite`` also includes some specific methods to model geochemical patterns, such as the lattice strain model for trace element partitioning[[6]](#blundy) , a Sulfur Content at Sulfur Saturation (SCSS) model[[7]](#li) , and orthogonal polynomial decomposition for parameterising Rare Earth Element patterns[[8]](#oneill) .\n",
+ "\n",
+ "Extensions beyond the core functionality are also being developed, including ``pyrolite-meltsutil`` which provides utilities for working with ``alphaMELTS`` and it's outputs[[9]](#smith) , and is targeted towards performing large numbers of related melting and fractionation experiments.\n",
+ "\n",
+ "| |\n",
+ "| - |\n",
+ "| |\n",
+ "|Example of different bivariate and ternary diagrams, highlighting the ability to visualise data distribution.|\n",
+ "\n",
+ "| |\n",
+ "| - |\n",
+ "| |\n",
+ "|Standard and density-mode spider diagrams generated from a synthetic dataset centred around an Enriched- Mid-Ocean Ridge Basalt composition[[10]](#sun) , normalised to Primitive Mantle[[11]](#palme) . Elements are ordered based on a proxy for trace element 'incompatibility' during mantle melting (e.g. as used by Hofmann[[12]](#hofmann) ).|\n",
+ "\n",
+ "\n",
+ "### Conventions\n",
+ "\n",
+ "\n",
+ "\n",
+ "Tidy Geochemical Tables\n",
+ " \n",
+ "\n",
+ " Being based on pandas
, pyrolite
operations are based on tabular structured data in dataframes, where each geochemical variable or component is a column, and each observation is a row (consistent with 'tidy data' principles[13] ).\n",
+ "pyrolite
additionally assumes that geochemical components are identifiable with either element- or oxide-based column names (which contain only one element excluding oxygen, e.g. $Ca$, $MgO$, $Al_2O_3$, but not $Ca_3Al_3(SiO_4){_3}$ or $Ti\\_ppm$).\n",
+ " \n",
+ " \n",
+ "\n",
+ "Open to Oxygen\n",
+ " \n",
+ "\n",
+ "\n",
+ "Geochemical calculations in pyrolite
conserve mass for all elements excluding oxygen (which for most geological scenarios is typically in abundance).\n",
+ "This convention is equivalent to assuming that the system is open to oxygen, and saves accounting for a 'free oxygen' phase (which would not appear in a typical subsurface environment).\n",
+ " \n",
+ "\n",
+ " \n",
+ "\n",
+ "\n",
+ "\n",
+ "[1] : Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., Blondel, M., Prettenhofer, P., Weiss, R., Dubourg, V., Vanderplas, J., Passos, A., Cournapeau, D., Brucher, M., Perrot, M., Duchesnay, É., 2011. Scikit-learn: Machine Learning in Python. Journal of Machine Learning Research 12, 2825−2830.\n",
+ "
\n",
+ "\n",
+ "[2] : Aitchison, J., 1984. The statistical analysis of geochemical compositions. Journal of the International Association for Mathematical Geology 16, 531–564. https://doi.org/10.1007/BF01029316\n",
+ "
\n",
+ "\n",
+ "[3] : Pearson, K., 1897. Mathematical contributions to the theory of evolution.—On a form of spurious correlation which may arise when indices are used in the measurement of organs. Proceedings of the Royal Society of London 60, 489–498. https://doi.org/10.1098/rspl.1896.0076\n",
+ "
\n",
+ "\n",
+ "[4] : Le Bas, M.J., Le Maitre, R.W., Woolley, A.R., 1992. The construction of the Total Alkali-Silica chemical classification of volcanic rocks. Mineralogy and Petrology 46, 1–22. https://doi.org/10.1007/BF01160698\n",
+ "
\n",
+ "\n",
+ "[5] : Pearce, J.A., 2008. Geochemical fingerprinting of oceanic basalts with applications to ophiolite classification and the search for Archean oceanic crust. Lithos 100, 14–48. https://doi.org/10.1016/j.lithos.2007.06.016/BF01160698\n",
+ "
\n",
+ "\n",
+ "[6] : Blundy, J., Wood, B., 2003. Partitioning of trace elements between crystals and melts. Earth and Planetary Science Letters 210, 383–397. https://doi.org/10.1016/S0012-821X(03)00129-8\n",
+ "
\n",
+ "\n",
+ "[7] : Li, C., Ripley, E.M., 2009. Sulfur Contents at Sulfide-Liquid or Anhydrite Saturation in Silicate Melts: Empirical Equations and Example Applications. Economic Geology 104, 405–412. https://doi.org/10.2113/gsecongeo.104.3.405\n",
+ "
\n",
+ "\n",
+ "[8] : Smith, P.M., Asimow, P.D., 2005. Adiabat_1ph: A new public front-end to the MELTS, pMELTS, and pHMELTS models. Geochemistry, Geophysics, Geosystems 6. https://doi.org/10.1029/2004GC000816\n",
+ "
\n",
+ "\n",
+ "[9] : O’Neill, H.S.C., 2016. The Smoothness and Shapes of Chondrite-normalized Rare Earth Element Patterns in Basalts. J Petrology 57, 1463–1508. https://doi.org/10.1093/petrology/egw047\n",
+ "
\n",
+ "\n",
+ "[10] : Sun, S. -s, McDonough, W.F., 1989. Chemical and isotopic systematics of oceanic basalts: implications for mantle composition and processes. Geological Society, London, Special Publications 42, 313–345. https://doi.org/10.1144/GSL.SP.1989.042.01.19\n",
+ "
\n",
+ "\n",
+ "[11] : Palme, H., O’Neill, H.St.C., 2014. Cosmochemical Estimates of Mantle Composition. Treatise on Geochemistry (Second Edition) 3, 1–39. https://doi.org/10.1016/B978-0-08-095975-7.00201-1\n",
+ "
\n",
+ "\n",
+ "[12] :Hofmann, A.W., 2014. 3.3 - Sampling Mantle Heterogeneity through Oceanic Basalts: Isotopes and Trace Elements, in: Holland, H.D., Turekian, K.K. (Eds.), Treatise on Geochemistry (Second Edition). Elsevier, Oxford, pp. 67–101. https://doi.org/10.1016/B978-0-08-095975-7.00203-5\n",
+ "
\n",
+ "\n",
+ "[13] : Wickham, H., 2014. Tidy Data. Journal of Statistical Software 59, 1–23. https://doi.org/10.18637/jss.v059.i10\n",
+ "
\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/022_pyrolite-meltsutil.ipynb b/022_pyrolite-meltsutil.ipynb
new file mode 100644
index 0000000..70f3dde
--- /dev/null
+++ b/022_pyrolite-meltsutil.ipynb
@@ -0,0 +1,263 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Building Open Source Geochemical Research Tools in Python\n",
+ "\n",
+ "Morgan Williams , Louise Schoneveld, Steve Barnes and Jens Klump; \n",
+ "CSIRO Mineral Resources \n",
+ "\n",
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## [pyrolite-meltsutil](https://github.com/morganjwilliams/pyrolite-meltsutil)\n",
+ "\n",
+ "> pyrolite-meltsutil is a pyrolite extension for working with alphaMELTS and its outputs.\n",
+ "\n",
+ "[![PyPI](https://img.shields.io/pypi/v/pyrolite-meltsutil.svg?style=flat)](https://pypi.python.org/pypi/pyrolite-meltsutil)\n",
+ "[![Docs](https://readthedocs.org/projects/pyrolite-meltsutil/badge/?version=develop)](https://pyrolite-meltsutil.readthedocs.io/)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "``pyrolite-meltsutil`` seeks to extend the capabilities of ``alphaMELTS`` and make the outputs easier to use for visualisation purposes. The python package includes functions to install and run melts with specific configurations,\n",
+ "to import output tables, and to visualise these results. ``alphaMELTS`` already includes batch calculation, capability, but this has been generalised slightly for ``pyrolite-meltsutil``, with batches configurable along the lines of:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "```python\n",
+ "batch = MeltsBatch(\n",
+ " MORB,\n",
+ " default_config={ # things that won't change between experiments\n",
+ " \"Initial Temperature\": 1400,\n",
+ " \"Final Temperature\": 800,\n",
+ " \"modes\": [\"isobaric\", \"fractionate solids\"],\n",
+ " },\n",
+ " config_grid={ # things that change between experiments\n",
+ " \"Initial Pressure\": [5000, 7000],\n",
+ " \"Log fO2 Path\": [None, \"FMQ\"],\n",
+ " \"modifychem\": [None, {\"H2O\": 0.5}],\n",
+ " },\n",
+ " env=env,\n",
+ " fromdir=experiment_dir,\n",
+ ")\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Once configured this set of experiemnts can be run, and during execution a progress bar and estimated time to completion are shown for reference. Once complete, the output tables from the experiments are aggregated into two tables (typically named `system` and `phases`, respectively). Visualisation functions then use these tables as a starting point. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from pyrolite_meltsutil.util.general import get_data_example\n",
+ "from pyrolite_meltsutil.tables import import_tables\n",
+ "\n",
+ "exp_dir = get_data_example(\"montecarlo/3149b39eee\")\n",
+ "system, phases = import_tables(exp_dir)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from pyrolite_meltsutil.vis.templates import plot_phasemasses\n",
+ "\n",
+ "ax, proxies = plot_phasemasses(phases, marker=None)\n",
+ "ax.set_yscale(\"log\")\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import pyrolite.plot\n",
+ "from pyrolite.util.plot.style import mappable_from_values\n",
+ "\n",
+ "chemvars = [\"MgO\", \"Al2O3\", \"FeO\"]\n",
+ "cumulate_comp = phases.loc[phases.phase == \"cumulate\", :]\n",
+ "ax = cumulate_comp.loc[:, chemvars].pyroplot.scatter(\n",
+ " c=cumulate_comp.temperature, cmap=\"magma\"\n",
+ ")\n",
+ "plt.colorbar(\n",
+ " mappable_from_values(cumulate_comp.temperature.dropna(), cmap=\"magma\"),\n",
+ " label=\"Temperature (C)\",\n",
+ ")\n",
+ "\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "One interesting applicaiton of ``pyrolite-meltsutil`` is to investigate potential model uncertainty given uncertainties in either your input composition or model parameters. The following is an output from repeated isobaric crystallisation of a MORB composition (with added 'noise'), from [one of the ``pyrolite-meltsutil`` tutorials](https://pyrolite-meltsutil.readthedocs.io/en/develop/tutorials/montecarlo.html#sphx-glr-tutorials-montecarlo-py):\n",
+ "\n",
+ "| |\n",
+ "| - |\n",
+ "| |\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Combined with some ``pyrolite`` functions for estimating sulfur content at sulfide/sulfate saturation, ``pyrolite-meltsutil`` can also be used to visualise estimates for timing fo sulfur saturaiton:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import pyrolite.plot\n",
+ "from pyrolite.geochem.magma import SCSS\n",
+ "from pyrolite_meltsutil.vis.scss import plot_sulfur_saturation_point\n",
+ "from pyrolite_meltsutil.util.general import get_data_example\n",
+ "from pyrolite_meltsutil.tables.load import import_tables, import_batch_config\n",
+ "\n",
+ "hsh = \"363f3d0a0b\" # the hash index of our experiment\n",
+ "batchdir = get_data_example(\"batch\") # let's use the example batch data for this\n",
+ "system, phases = import_tables(batchdir / hsh, kelvin=False) # let's import the tables\n",
+ "name, cfg, env = import_batch_config(batchdir)[hsh] # and also the configuration\n",
+ "\n",
+ "liquid = phases.loc[phases.phase == \"liquid\", :]\n",
+ "\n",
+ "sulfate, sulfide = SCSS(\n",
+ " liquid, T=liquid.temperature, P=liquid.pressure / 1000, grid=None, kelvin=False\n",
+ ")\n",
+ "liquid.loc[:, \"SCSS\"] = sulfide\n",
+ "\n",
+ "xvar, colorvar = \"mass%\", \"temperature\"\n",
+ "\n",
+ "# show the SCSS for the liqud\n",
+ "ax = liquid.loc[:, [xvar, \"SCSS\"]].pyroplot.scatter(\n",
+ " c=liquid[colorvar], fontsize=12, figsize=(12, 6)\n",
+ ")\n",
+ "plt.colorbar(mappable_from_values(liquid[colorvar]), ax=ax, pad=0.1, label=colorvar)\n",
+ "plot_sulfur_saturation_point(liquid, start=[1000, 1500], xvar=xvar, ax=ax)\n",
+ "\n",
+ "ax.set_ylim(0, 0.35)\n",
+ "ax.set_xlim((np.nanmax(liquid[\"mass%\"]), 0))\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/023_interferences.ipynb b/023_interferences.ipynb
new file mode 100644
index 0000000..328af80
--- /dev/null
+++ b/023_interferences.ipynb
@@ -0,0 +1,273 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Building Open Source Geochemical Research Tools in Python\n",
+ "\n",
+ "Morgan Williams , Louise Schoneveld, Steve Barnes and Jens Klump; \n",
+ "CSIRO Mineral Resources \n",
+ "\n",
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## interferences\n",
+ "\n",
+ "> Tools for inorganic mass spectra and interference patterns.\n",
+ "\n",
+ "[![Docs](https://readthedocs.org/projects/interferences/badge/?version=develop)](https://interferences.readthedocs.io/)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This is an under-development package to facilitate debugging and identification of\n",
+ "issues during method development and analysis of novel samples for geologically-focused\n",
+ "mass spectrometry."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "``interferences`` is centred around building tables which contain sets of molecular ions corresponding to a specific set of elements within your analytical target. Building the tables themselves is relatively straightforward. For examples, to build a table of ions which might be expected from Ca, O, Ar and H with a charge of +1 and up to two atoms within a molecule, you could use:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "```python\n",
+ "df = build_table([\"Ca\", \"O\", \"Ar\", \"H\"], charges=[1], max_atoms=2)\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "These tables can then be displayed graphically, with a rudimentary estimate of relative abundance shown. Currently, ``interferences`` has two such methods, ``stemplot`` and ``spectra``. The first simply illustates the relative position of peaks (in m/z), while the second attempts to represent the width of some of these mass peaks given a specified mass resolution."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "from interferences.table import build_table\n",
+ "import matplotlib.pyplot as plt\n",
+ "from pyrolite.geochem.ind import REE"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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rFHVavmXQkQSgcSOHTtO+uabb4IdTrV18OBBli1bRtOmTenfvz+xsbHWwqhj8vPz+eijj8jKyuK+++6r0N4QpnLy8/NJSUlh48aNdO3aleuuu44bbriBkydP0rRp02CHZ2o4Edmqqr09HvOmW09Euqrqfp9HFgC9e/fWLVu2BDuMaq2wsJBdu3axbt06br75Znr16lWjpnSZqlNVPvvsMwoLC7nrrruCHU6tpaoUFBQwb9486tWrx8CBA4mKiuKpp57i3LlzPtuXw9RtVU76zovcBfQEGruXq+rvqxyhH1nS915hYSGqyty5c8nPz6d///506NDBkn8dUlhYyKxZs7j77rtp08ZfC27WTenp6Sxbtoy4uDgSEhKoV68eFy5coGXLlrRv354VK1bU2D0STPXii5b+G8BPgc8B9706VVWr5fZs1r1feUVbc65bt44GDRpw7733EhkZGeywTICkpqayZMkShg8fTpcuXYIdTo136dIlVq1axYEDBxg0aBA33HCDfZE2fuWLpP8d0FNVj5V7cjVjLf3KKyws5MCBA7Ro0YIPP/yQ7t2706tXLyIiIoIdmvGz9PR05s2bx+DBg7nhhhuCHU6NVFhYyKFDhwgJCeHQoUPccccdNGjQINhhmTrAF0n/AHCzqp73dXD+ZknfN9LT00lJSeHAgQN0796du+66y3bzquW+//57MjMzXdvF2ohy7x0/fpzly5dTr149HnzwQY/bWhvjL75I+g8D9wBTcYzad1HVw74I0l8s6ftWdnY2u3btIjY2lrVr19KzZ086d+7sWgPd1C6qyvz58zl37hw/+clPasRtnry8PLKzs7nqqqsCXreqsnz5cvbt22dd+SZofJH0S9v8WVW1Wn/9t6TvH6rqWkEsOzubvn370rdvX/sDVwupKl9++SVffPEFI0eO9HoHu2A4ffo0CxYsoGvXrgwYMCBg9RYWFrJt2zYaN25Mbm4unTt3tq58EzRlJX2v+pxUtcY149wG8gU7lFpJROjRowc9evQgPT2dPXv2cPz4cXbt2kXv3r1p0aJFsEM0PiIi3HrrrbRt25ZvvvmGqKgomjVrVq16d9S51e3q1asZNGgQPXv2DFjdx48fZ9myZYSFhTF8+HCioqICVrcxFeX1lL2aylr6gXP58mU2bdrEli1baN68Obfeemu1bhWaylm8eDGZmZnce++9NGnSJNjhUFBQwIULF1i4cCH33HMPzZs3D1jdO3fuZPXq1QwePJgePXpYT5epFirdvS8i7+JYfa9UqvrzqoXnX5b0A6+goIC9e/eSlpZG9+7dSU9P5/rrr8fX+yBkZWUxePBg9u7dy6ZNm7j++uvZsGEDzz33HAAZGRncc889PPPMM4waNYqwsDBCQ0OZO3curVq18nndAMnJybz44osUFhbyy1/+klGjRnHkyBH69OlD9+7dAZg/f35AE5OvFRYWsm7dOtcOcLGxsUGL5cSJEyxYsICBAwfSrVu3gNW7f/9+Nm7cyP33309oaKgNau71pVYAACAASURBVDXVSlW69w/6IR5Ty4WGhrq6/r///nu+/vpr/va3vxEdHc3NN9/MjTfe6JN6GjZsyCeffMKUKVNcZbfffjvJyckAJCUlMXLkSKKjo9mwYQMhISHMmTOHWbNmub4Y+LLuS5cuMX36dJYvX35FEujfvz8LFiyoUp1lSUhIcH3uqpzjjZCQEBISEoiJiWHlypVMmDCBevXqBbSVq6qkpKSwbt06hg0bFrCEf+HCBVasWEF6ejrDhw+36aumxikz6avqHwIViDdEpBHwFyAXSFbVuUEOyZTjqquuYvjw4dxzzz0cPnyYM2fOsHv3brZt20b37t257rrrKr3We1hYWKkt5ry8PFJSUpg9e3axe89F08+8ERsby1tvvcWgQYO8qvuLL74gIiKCxMREGjZsyIwZM7jmmmsA2LhxI/369aNfv368/PLLtaIbuEOHDjz88MN8+eWX7N69m1GjRhEdHR2Quvft28fXX3/NxIkTXfvS+5uqMmfOHDp16sSjjz5KWNgVm48aU+0FfSSOiMwWkdMisrtE+VARSRWRgyLyjLN4NLBAVScBwwMerKm00NBQOnXqxC233ELXrl3p06cPhw8f5rXXXmPx4sXk5+eTm5vrs/pWrVrFwIEDXQl/x44d9O3blzfeeIObbroJgAceeIAJE4ovKLl27VqioqI4ceJEhes8deoUBw8eZOnSpUyaNMm1k1urVq04ePAg69at4/Tp0yxcuBBwfKlYvXp1sWvMmTPHtc96TfGjH/2Inj17Mnv2bDZt2sSibce57ZU1xD3zCbe9sobF29N9VtfFixd5//33ad68OZMmTQpIwj937hzz5s1j3bp1PPLII9x1112W8E2NFfSkD8wBhroXiEgo8CYwDOgGjBWRbkBboGhVwIIAxmh8qF69elx33XWMGTOG3/zmN/Tt25cDBw7w6quv8sEHH7B3794qb/M6f/58xowZ43rds2dPvvrqK1588UWmTp0KwGuvvcayZctYtWoV4OienzRpEtOnT6/UPf/IyEhuu+02wsPDGThwIHv37gWgfv36NGrUCBFh9OjR7Ny5s0qfrUhaWhoJCQkkJCSwY8cO1/O0tLQKnVNVIkKfPn34xS9+wYYtX/P64vWkZ+agQHpmDs8u3OWTxP/9998ze/ZsoqKiAtKjoKps27aNv/3tb7Rs2ZLbbrvNFigyNV7Qk76qrgPOliiOBw6q6mFVzQXmASOA4zgSP1SD2E3V1a9fn1atWtGtWzd+9atf0bFjR7Zu3crbb7/N2bNnOXDgAAUFFft+l5eXx+bNm10t5suXL7uONWvWzHU7ISoqitdff53Jkydz4cIF/vCHP3DttdeSlJTkOn/z5s1069aNq666ioceeohLly6VWm98fDz79u1zTR+79tprAUdLscj69esrNKNh3759JCQkEBkZSffu3VmyZInrWExMDMnJySQnJ9OzZ0/X85iYmAqd4ytXX301i7I7cji3KfFhacSHOb5Y5OQVMG1lapWu/e233zJ79mzi4+O56667/H57JD8/n2+++YZt27bx4IMPcuedd9qqeqZWqK7/itvwQ4seHMm+L/Aa8IaI3AMsLe3NIjIZmAz45Y+b8Y+IiAhuuukmbrrpJlSVjIwMNm7cyOLFi+ncuTNdu3ala9euxd5z9913s2PHDlJTU3n44YdJSkpi9erVDBgwwNW1v23bNp5++mlCQ0Np0KBBse1Lx4wZwz//+U/Gjh3Lxo0b2b59e7Hrz507l5UrV9KoUSMSExN56aWXeOmll0qte9SoUfTv35+QkBBXPWvXruWFF16gYcOGxMXF8eKLL3r188jLyyMxMZEJEybw6aefsmHDBkaMGMGWLVuq7UY4GZk5AFwtFz2WV8bx48cpLCxk1KhRdOjQoUrxlaewsJDNmzezdu1aHn/8cX7xi1/4tT5jAs3bFfkE+AUwFohW1RtE5A7gGlX9oMpBiMQCH6vq9c7XY4AhqvoL5+sHgXhVfbIC17Rd9mqJrKwsDhw4wNmzZ+nUqRMrV64kNjaWDh060L59+yqvfHbq1CmuvfZaXn75ZX71q1+5ymNjY3nmmWd45JFHAFi2bBlPPvkkhw4dqlJ97tc/c+ZMsRZkbm4uN910Exs2bGD9+vWMGTOGjIwM1xeYsWPH0qVLF9d4germtlfWkJ6Zw9Dw/QCsyHV8SWsTGcHGZyq+Ql5KSgrr169n4sSJfl8CODMzk0WLFqGqDB8+PGCDEo3xtbKm7HnbRf6fwERgJlDUdD4OPF318Dw6DrhvLN0WyKjIBVR1qapO9vXccBN4zZo1o0+fPgwZMoS4uDhGjBhBkyZNSElJ4c033+Ts2bOsXbuWI0eOkJ+fX+Hrt2zZkujoaI+j+t33N2/fvj0ZGRX6Z1iuooVuih5/+ctfXMcyMjJo165dsdkH7du3Jz3ddwPjfG3KkC5EhBW/7x0RFsqUIRXrmVBVPv30U1JSUpgwYYLfE35+fj6ff/45nTt35qGHHrKEb2otb7v3k4BeqnpGRGY4y/4F+KuvbTPQSUTigHTgPuD+ilzAluGtnUSE1q1b07p1a9c9+0uXLpGXl8eqVas4c+YM7dq1Y+TIkeTm5nLVVVdV6f7vsWM/3GVKS0ujdevWVf4M3mrdujXHjh2jsLDQlfjT0tLo3LlzwGKoqJG92gDw+dL95OYX0CYygilDurjKvbV//35OnDjBxIkT/ToX/tKlSyxbtoz8/Hx++tOf+q0eY6oLb5N+KJDtfF50P6CxW1mlicj7QAIQLSLHgedVdZaIPAGsdNY9W1X3VLUuUzs1aNDANZc+JyeH9PR0VJV58+aRnZ1NXFwccXFx3HDDDRVeOe3NN9/kxz/+MQ0bNuS//uu/+NnPfuaPj+BR3759adSoEf/93//Nb3/7WzZu3MjSpUvZvHlzwGKojJG92pC509Eyn5FUsS79ixcvsmjRIgYOHMj48eP9EZ7L0aNHWbRoEZ06dSIxMdGvdRlTXXib9JcBr4rIb8B1j/9FyhhM5y1VHVtK+TJnvZW97lJgae/evSdV9hqm5omIiHCNjn/sscc4d+4chw8f5ujRo7Rp04aPP/6Yhg0bunoL4uLiin0RWLw9nWkrU8nIzOFk1iX6JY7lrrvuIiMjgxEjRlR5Jb+KCA8PZ8mSJTz22GNMnTqVNm3a8M4771wxmLG2OHv2LHPnzqVr1660bNnSr3VdvnyZxYsXc/fdd1frnhNjfM3bgXxNgXdwzKcPAy4BnwI/V9Xzfo2wkmwgn/Hk/PnzpKenk56eTkZGBjfeeCNpaWlcuHCBTGnMO7tySM/7oTs5IiyUqaN7VLh7uq6bM2cOQLHpj2X59ttveeedd7jjjjvo06eP3+L67rvvWLRoEX369PHZctDGVDeV3nDHw4Va4hjId0xVT/ooPr+yDXdMec6fP8/Ro0eZvngTly9fJt85vjUlzzFmtbIjz+uyiiT9tLQ0RISCggK/bd6jqmzfvp3PPvuM/v3706dPn1qxFLIxnlR59L6I/K+I9FHVU6q6uSYkfBFJFJGZWVlZwQ7FVHNNmjTh+uuvJzm7FV/kxXK1XCw2z7wqc8xN2Xbs2MH8+fNp0qSJX3fr27NnDykpKYwfP574+HhL+KbO8nbKngAficg3IvIHEameK4O4sSl7pqJaR3oeJV5auamar7/+mjVr1jB+/Hi/Tcn717/+xRtvvOHaHKhFixZ+qceYmsKrpK+qv8IxV/4xHPPnN4nIVhF5yp/BGRNIvppj7m+5ubm8++67pKSkkJNTM3shzp49y6pVqxg3bpxf5sQXFhaydu1aFi5cyLBhw2jYsKG17o2hAsvwqmohsApYJSL/AbwNTANe9VNsVWLz9E1F+WqOub+Fh4dz2223sX37dtasWUPHjh0ZNmwYjRo1CnZoXvnmm28oKCjgiSeeoH79+n6pY8WKFZw+fZrJkyfTpEkTv9RhTE3kddIXkcbASBxL8SYAawH/TqStApuyZyqjKnPMA6lDhw506NCBnJwcUlNTuXTpEm+//TYdOnSge/fuV6zkV10cOHCAjz76iHHjxvkk4btPsWwdGcGjNzelycV0Bg0aRERERLX8GRgTTF4lfRGZj2Ob223A+8B4VT3jz8CMMeWLiIigZ8+egGNd/j179rB8+XIuXLhAUlIS+fn5NG/evFokv0OHDvHRRx8xduzYSm1dXNLi7ek8u3AXOXmOXRivzj7M7o2n6XbLwBrT62FMoHnb0t8C/FZVfbcJt59Z976pa6Kiorjjjju44447yMrKIjw8nHfffZfz58/TtWtXunfvTvv27QN6b9u9JT684Tf0uXUAbdu2Lf+NXpi2MpWcvALnFr5KPZQll65j/fYL/HyIT6owptbxdiDfH2tSwgcbvW/qtmbNmhEREcHkyZNJSkqiadOmrF69moyMDFasWMHOnTs5f96/62qdyb7Mswt3kZ6ZgwIfXezEy2u/ZfF232wY5L6N79WSwxd5sVwk3KZYGlOGUlv6IrJPVa9zPj/GD2vuF6OqtmG9MdVYVFQU/fr1o1+/fqgqp0+fJjU1lRUrVtCkSROGDx9OeHg4kZGRFd6boCzHzua4tcQdix3l5BUwbWWqTwZHto6MIN1DgrcplsaUrqzuffcBcOP8HYgxxv9EhF69etGrVy8KCws5efIkV111FUuWLOHw4cO0atWKDh060LNnT5o2bVqlunLznffa3RY6At8tdjRlSBeeXbirWFl1nGJpTHVSatJX1Q1uL1uo6vyS54jIT/wSlTHG70JCQlxbBf/sZz8jNzeXo0ePcvjwYU6ePMmKFSvIzMx0bU507bXX4s3tssXb09melum5axDftcRryhRLY6oTbwfyzQKuSPrATGCB78LxHRvIZ2q7ktPVqprwwsPD6dSpE506dQIgLi6OkydPkpGRwdGjR7lw4QLgmGffunVr2rRpQ0xMTLEvAkUj6vtLgcc6fN0SrylTLI2pLspM+iLSwfk0RETicCzHW6QDjt32qiWbp29qs5LT1dIzc1xd3b5q6YaFhdGuXTvatWvnKsvNzaVt27akp6ezb98+9u/fz4033siaNWuIjo7mo/3naVoQQdOwy1dcz1rixgRfeS39gzgG8AlwqMSxk8ALfojJGFOO4tPVfD9IrjTh4eHExcURFxfnKissLKRJkyZ8++23XNjxJc1DCqlXoqUvYDsVGlMNlJn0VTUEQETWqmr/wIRkjCmP+3Q1T+WBFBISQqtWrWjVqhWnlp0hPTOHG+plFDsnvF5oKe82xgSSt/P0LeEbU41U1x0BPW1aFBoitLvaptEZUx14uwxvPRw77PUHonG7t6+qd/gnNI9xdAB+BzRTVZs5YOqs6jpdrejWwpYlW1BV2kRGENe4EdGN/bOxjjGmYrxdkPtPwMPAOuBm4EOgBbDG24pEZLaInBaR3SXKh4pIqogcFJFnyrqGqh5W1Yne1mlMbTWyVxumju5B/XqhCI5BclNH9wj6ILmiGQWqiogwZUgXS/jGVCPeJv3RwDBV/TOQ7/zvSODOCtQ1BxjqXiAiocCbODbz6QaMFZFuItJDRD4u8WhRgbqMqfVG9mpDr5hI+naIYuMzA6pFwndfdrdQlWcX7uJM9pUj+Y0xweHtPP2GwDHn8xwRaaiq+0Wkl7cVqeo6EYktURwPHFTVwwAiMg8YoapTgR97e+2SRGQyMBkgJsZWCTYmENxnFNRDyUfIySvg2Nkca+0bU01429LfB/RxPt8CvCAizwFV3TmjDT98mQA47izzSESiROSvQC8Reba081R1JvAHYJsv1xI3xlxp8fZ0bntljWsd/KvlIuK2Hl/RcrzGmODztqX/K6Do/9yngBlAE5yt6SrwtMdnaat3oqrfAY94c2FbnMcY/yu5SJAnNl3PmOrDq6Svqpvdnn8DDPJR/ceBdm6v2wIZpZxbIbYMrzH+52mRIHcRYaE2Xc+YaqSsrXW9Wj5LVb0ewe/BZqCTc4nfdOA+4P4qXM8YE0ClLRIEECLC1NE9yNx5MtBhGWNKUVZLf5YX71cca/CXS0TeBxKAaBE5DjyvqrNE5AlgJRAKzFbVPd5cr9zArHvfGL8rbU97BBrXr8fIXm2YszPwcRljPCtra9240o5VhqqOLaV8GbDMl3WBde8bEwieFgkKDRFCPA7XMcYEm7ej9xGRMBHpJyI/c75uJCKN/Bda1ajqUlWd7M3+38aYyvG0SFBcdCPEcr4x1ZJXSV9EegAHgL/zQ7d/f2C2n+KqMhFJFJGZWVlZwQ7FmFrNfZGgKUO6cOxsDgWFSvblfBZvr+qsXmOML3nb0p8B/F5VuwJ5zrK1wO1+icoHrKVvTGCdyb7Mswt3cdk5L99W5DOm+vE26XcH3nM+VwBVvQDYXBxjDADHzuaQk1dA05DLrjv6OXkFHDydzfa0TGv1G1MNeJv0j+DYaMdFROKBg74OyFese9+YwCpaea8eVy7Uczm/gGcX7rLEb0yQeZv0/wP4RET+AIQ7l8CdDzznt8iqyLr3jQmskivv1UOJD0ujaYijez8nr4BpK1ODEZoxxsmrpK+qH+PYCa85jnv57YHRqvqpH2MzxtQgJVfeE5Sr5WKxln+Gpzn9xpiA8XbtfVR1G/BY0WsRaSEi01R1il8iqyKbp29MYEU3rs9VDcOgsPRzWkfaMCBjgqnMlr44TBSR10Xkl865+pEi8irwL6BbYMKsOOveNybwnk/sjpSyME9EWChThnQJcETGGHflde//D44talsAzwBzcGyt2wLoq6r3+DU6Y0yNMrJXGxqEhbj2zxTnKj3164UydXQPRvYqdedsY0wAlNe9/1PgDlU9LCJdgb3AT1V1gf9DM8bURGGhIRTmQ0iI0Dfmak6ezKXzNZGW8I2pBspr6TdT1cMAqrofuGgJ3xhjjKmZymvpi3Pb26KbdPklXlP0paC6sYF8xhhjTHHlJf1GOBbgcR+Zc8jtueLYErfasa11jTHGmOLKTPqq6vUufMYYY4yp3iypG2OMMXWEJX1jjDGmjqhxSV9ERorI30XkIxG5K9jxGGOMMTVFQJO+iMwWkdMisrtE+VARSRWRgyLyTFnXUNXFqjoJSAJ+5sdwjTHGmFrF67X3fWQO8AbwTlGBiIQCbwKDgePAZhFZgmNWwNQS75+gqqedz59zvs8YY4wxXig16YvIMRxT8sqkqjHeVqaq60QktkRxPHCwaL6/iMwDRqjqVODHHuIS4BVguXMTIE+xTwYmA8TEeB2eMaaSzmRf5tjZHP7wzCc8EJFPWLADMsZ4VFZLf5zb8z7AeOA14CiOrXWfwK3FXgVtgGNur48Dfcs4/0lgENBMRDqq6l9LnqCqM4GZAL179y73i4sxpvIWb0/nX2cuUFCoKFCoWn5rwRgTFKUmfVVdW/RcRN4EhqhqulvZcmAFML2KMXjakqvUvxmq+hqOLx9lX9RW5DMmIKatTKVHodJULhMfluYqL0TZnpZJ48I8TqRlErk93dbfNybIvB3I1xrILlGWjaOVXlXHgXZur9sCGT64rjEmADIycwCoJwVcLRd/OKBwOb8AxfHfZxfuYvH2dM8XMcYEhLdJfwmwREQGi8h1zqlyi5zlVbUZ6CQicSISDtzno+saYwKgdWREqceaymXqOTvucvIKmLYyNVBhGWM88DbpPwJ8CfwV2AbMAL5ylntNRN53XqeLiBwXkYmqmo9jfMBKYB/wgaruqch1PVHVpao6uVmzZlW9lDGmDFOGdCE0xNNdOkfrX9zu1hX1ChhjgsOrKXuqegl4xvmoNFUdW0r5MmBZVa5dkt3TNyYwRvZqw8GNjfj+u4vlnltWr4Axxv+8XpzH2bU/S0SWOl/3FpEB/gutaqylb0zgRDeu7xqRG0qhx3MiwkKZMqRL4IIyxlzBq6QvIk/i6NL/BrjDWZwDvOSnuKpMRBJFZGZWVlawQzGmTlB1dON7+qNSv14oU0f3sNH7xgSZty39XwODVPUVcH2N3w9U26/t1tI3JrAc62Z5OgC9YiIt4RtTDXi7DG8TflhAp2hUThiQ6/OIjDE1Uv16IYRq8cQvCCEel+IwxgSDty39dVw5iO+XwOe+Dcd3rHvfmMAKCw0hLrrRD8ttCTQIC6G0DgBjTOB5m/SfBEaJyBGgiYikAmOAp/wVWFVZ974xgRfduD6hIohAqAhhoTVu925jajVvp+ydEJE+ONbgb4+jqz9FVT0P0zXGGGNMtePt6P2P1CFFVeer6iZVLRSRhf4OsLKse98YY4wpztu+tztLKU/wURw+Z937xhhjTHFldu+LyH86n4a7PS/SAcc2u8YYY4ypAcq7p1+0+10IxXfCUxz39V/wQ0zGGGOM8YMyk76qPgQgIl+o6t8DE5Ixxhhj/MHb0ft/BxCRJkA0P8zERVUP+ye0qrENd4wxxpjivB29f52IbAeygIPOxzfOR7VkA/mMMcaY4rxdhncGjtX37gT+BcQCU4Ev/BOWMcZUzeLt6UxbmUpGZg6tIyOYMqSLrf9v6jxvk/6NwGBVzRMRUdUsEZkC7Abe8194xhhTcYu3p/Pswl3k5BUAkJ6Zw7MLdwFY4jd1mrfz9C/h2GAH4IyIxDjfG+WXqIwxpgqmrUwlJ6+A+LA04sPSAMjJK2DaytQgR2ZMcHmb9NcDP3U+XwAsB9YCa/wRVGmcYwv+KiILROTRQNZtjKk5MjJzALhaLnK1XLyi3Ji6ytvR+z91e/n/gD1AY+AdbysSkdnAj4HTqnq9W/lQ4M9AKPCWqr5SRhz7gEdEJASwKYSmWrB7x9VP68gI0j0k+NaREUGIxpjqo8JbYKlqoaq+q6ozVPVCBd46BxjqXiAiocCbwDCgGzBWRLqJSA8R+bjEo4XzPcOBDcBnFY3dGF8runecnpmD8sO948Xb04MdWp02ZUgXIsJCi5VFhIUyZUiXIEVkTPXgVUtfRJoBvwR64Wjhu6jqXd5cQ1XXiUhsieJ44GDRXH8RmQeMUNWpOHoFPF1nCbBERD4B/lFKvJOByQAxMTHehGdMpbjfOwZIyYtx3Tv2prVvvQT+UfQz/HzpfnLzC2hjP1tjAO9H78/H0f2+CPDlTbE2OJbzLXIc6FvaySKSAIwG6gPLSjtPVWcCMwF69+6tvgjUGE/c7x17Ki+LjTD3r5G92pC5MxKAGUkDghyNMdWDt0n/R0CUqub5uH7xUFZqklbVZCDZqwvbinwmAKpy77iqvQTGGFNR3t7T3wBc54f6j1N8I5+2QIYf6jHGL6py79hGmBtjAs3bln4SsExEvgJOuR9Q1ZJb7lbEZqCTiMQB6cB9wP1VuJ57XEuBpb17957ki+sZ40lV7h3bCHNjTKB5m/RfxtEiPwI0dSv3+n65iLwPJADRInIceF5VZ4nIE8BKHGMGZqvqHm+vWU591r1vAqKy946nDOniuodfxEaYG2P8ydukfx/QWVVPVLYiVR1bSvkyyhiUZ0xtZSPMjTGB5m3SPwz4ehCfX1n3vqkJbIS5MSaQvE367+KYG/86V97TD+hSvMYYY4ypHG+T/uPO//5XiXIFOvguHN+xe/rGGGNMcd6uvR/n70B8zbr3jTHGmOIqvPZ+TSEiiSIyMysrK9ihGGOMMdVCqUlfRPa5PT8mImmeHoEJs+JUdamqTm7WrFmwQzHGGGOqhbK69927xcf5OxBjjDHG+FepSV9VN7i9bKGq80ueIyI/8UtUxhhjjPE5b+/pzyqlfKavAvE1u6dvjDHGFFdm0heRDiLSAQgRkbii187HIOBSYMKsOLunb4wxxhRX3pS9gzjm4gtwqMSxk8ALfojJGFMLqEL25XxCVdmelknk9nRbYtiYICsz6atqCICIrFXV/oEJyRhTGxSqUogSClzOL+DZhbvYcvQsn+//lozMHFrbXgPGBJy3i/MUS/jOLv8CVT3ql6h8wFbkMyZ4irbfrIcizuc5eQXM3ZTmOpaemePaZdASvzGB4dVAPhF5X0RudT5/CNgD7BWRif4Mrirsnr4xQeTM7FJi920F4sPSiA9zLPGRk1fAtJWpAQ7OmLrL29H7A4EtzudPAYOAeOAZfwRljKnhpPRDV8tFrpaLrtcZmTkBCMgYA95vuBOuqrki0ga4WlU3AohIS/+FZoypqQRKtPE9lwG0jozwf0DGGMD7lv4OEXkW+A/gEwDnF4Bz/grMGFOzhYi4Wvz164XywI9iiAgLLXZORFgoU4Z0CUJ0xtRN3ib9iUAPIAJ4zll2CzDXH0GVRUQaichWEflxoOs2xpPF29PZnpbJV4e/47ZX1rB4e3qwQ6oWRCBUBBHoFRPJSyN7MHV0D+rXC0WANpERTB3dwwbxGRNA3o7ePwTcX6JsAbDA24pEZDbwY+C0ql7vVj4U+DMQCrylqq+Uc6mngQ+8rdcYf1q8PZ1nF+6ivxQANiK9PCN7tSFzZyQAM5IGBDkaY+qe8lbke63E64klXn9YgbrmAENLvD8UeBMYBnQDxopINxHpISIfl3i0cK4CuBc4VYF6jfGbaStTyckroGnIZZqGXAZsRLoxpvoqr6WfBPzS7fU0iq/DP9jbilR1nYjEliiOBw6q6mEAEZkHjFDVqTh6BYoRkTuBRji+IOSIyDJVLfQ2BmN8rWjkeT0KPJYXWbw9nWkrU21RGmNMUJWX9EtOvCljIk6ltAGOub0+DvQt7WRV/R2AiCQBZ0pL+CIyGZgMEBMT46tYjblC68gI0j1MOXMfkV50CyAnz24BGGOCq7yBfCVn2HiacVMVnr5ElFuHqs5R1Y/LOD4T+AOwLTw8vArhGVO2KUO6lDsivegWgC1KY4wJtvJa+vWcXepSyutQz2/z2nGgndvrtkBGFa9pTMAUtdS3LNmCqtLGQ9d9UVe/+4I07uXGGBMo5SX908Bst9fflXh9uor1bwY6iUgckA7cR4lZApWlqkuBpb17957ki+sZU5qRvdqwf6Xjf6WN0dz94AAACGRJREFUz1w5It2bWwDGGBMIZXbvq2qsqsaV9fC2IhF5H/gS6CIix0VkoqrmA08AK4F9wAequqcqH8itvkQRmZmVlfX/27vXGDvKOo7j318vtLSVtLGUhKK2JLSJ3MRU6wuwWMPFeCkWTLioL4qBGCG+kKpVE0tMLBKjJtRIiBo1RhrEQooWGzDaNoRILSu1C60p0OCC0lQxshWXdvfvi3m2PT09u3sKZ2bOmfl9ksnO7Zl9nn/Ozv/MZZ+nE4cze8PaeQRgZlaEdrvhfdMi4rox1m8GNufw+3ylb11h9Fb/7x/aw+tHhls+AjAzK0JhSb9oHlrXuok7pTGzbtBuN7w9x0PrmpmZHa+ySd/P9M3KNRzB8EgQwMHBobKrY2ZUOOn7St+sHBHZdLTHjYDnDx7iwb4XPTiRWcn8TN/MOmqEQBzf89bwSLB2Uz9DR0Y8OJFZiXylb2adNUafmv9+7XA2OJGGOE0enMisDJW90jezkohxO9OeovEHJ+pGHjDJqsJJ38w6ahIimrL+5ElizoypvPLfwyfs3+09E3rAJKuSyt7e99v7ZuWQsunoQ33Bwrkz+fpHz+3Jngk9YJJVSWWTvp/pm5VLpC8AwNxZ07jqovmsW3k+kyQEzJ99KutWnt/1V8uNAyY1DprUC48lzJr59r6ZFWaiwYm6kQdMsiqp7JW+mVkneMAkqxJf6ZuZjcMDJlmVVDbpu3MeM+sUD5hkVVHZ2/t+kc/MzOx4lU36ZmZmdjwnfTMzs5roqaQv6VJJ2yXdLenSsutjZmbWSwpL+pJ+LOmApN1N66+UtFfSPklfnuAwAQwC04GBvOpqZmZWRUW+vf8TYD3ws9EVkiYD3wcuI0viOyRtAiYD65rKrwK2R8RWSWcA3wFuKKDeZmZmlVBY0o+IbZIWNK1+L7AvIp4DkLQBWBER64CPjHO4V4BpedTTzMysqhQxzhiYnf5lWdL/dUScl5avAa6MiM+k5U8BSyPiljHKrwSuAGYDP4iIP4yx303ATWlxMeCRMU40FzhYdiVqwHHOn2OcP8e4GJ2K8zsi4vRWG8runEct1o35LSQiNgIbJzpoRNwD3PMm6lV5kv4UEUvKrkfVOc75c4zz5xgXo4g4l/32/gDwtobls4CXSqqLmZlZpZWd9HcA50haKOkU4FpgU8l1MjMzq6Qi/2XvXuBxYLGkAUk3RsQR4BZgC/AMcF9E9BdVp5rz449iOM75c4zz5xgXI/c4F/oin5mZmZWn7Nv7ZmZmVhAn/R41Tg+Ht6YeDvsl3ZnWTZX0U0l/kfSMpDVjHPNCSY+n/R6SdFrDtjWp18S9kq7It3XdocgYS7pM0s60fqek2ozfWvRnOW1/u6RBSbfl17LuUcL54oK0rT9tn55vC8tX8PmirfItRYSnHpyA9wPvBnY3rPsA8CgwLS3PSz+vBzak+RnAfmBBi2PuAJal+VXAN9L8O4GnyDpEWgg8C0wuOwYVi/FFwJlp/jzgxbLbX8U4N2z/FfBL4Lay21+1GJP9K/gu4MK0/FafLzoe47bKt5p8pd+jImIb8K+m1Z8F7oiIobTPgdHdgZmSpgCnAq8D/2lx2MXAtjT/CHB1ml9B9gEbiojngX1kvSlWWpExjoi+iBj9d9V+YLqkWvQ6WfBnGUlXAc+RxbkWCo7x5cCuiHgqHfefETHcqbZ0q4Jj3G75EzjpV8si4BJJf5S0VdJ70vr7gUPA34EXgG9HRPOHE2A38LE0/wmO9aEwH/hbw34DaV0d5RXjRlcDfaMniprKJc6SZgJfAm7Ps/I9Iq/P8iIgJG2R9KSkL+bXhK6XV4zbLX8CJ/1qmQLMAd4HrAbukySyq/Jh4Eyy2/NfkHR2i/KrgM9J2gm8hezbI5xkz4kVl1eMAZB0LvAt4ObcWtAb8orz7cB3I2Iw5/r3grxiPAW4mGxAtIuBj0v6YJ4N6WJ5xbjd8i0rZNUxAGyM7EHPE5JGyPpyvh74bUQcBg5IegxYQnaL86iI2EN2aw5Ji4APNxzXPSdm8ooxks4CHgA+HRHPFtGYLpZXnJcC16QXqmYDI5L+FxHri2hUl8nzfLE1Ig6mbZvJnnX/Lv8mdZ28YtxW+VZ8pV8tDwLL4egH5BSywRteAJYrM5PsW+ee5sKS5qWfk4CvAXenTZuAayVNk7QQOAd4Iue2dKtcYixpNvAbYE1EPFZAO7pdLnGOiEsiYkFELAC+B3yzpgkf8jtfbAEukDQjPXNeBjydc1u6VV4xbqt8S2W/8ejpDb8pei/Z85zDZN8mb0wfqJ+TPQd6Elie9p1F9qZyP9kf3+qG4/wQWJLmPw/8NU13kDpvStu+SvbW/l7gQ2W3v2oxTn/Qh4A/N0zzyo5B1eLc9HvXUp+394s+X3wyld8N3Fl2+6sW4/HKTzS5Rz4zM7Oa8O19MzOzmnDSNzMzqwknfTMzs5pw0jczM6sJJ30zM7OacNI3MzOrCSd9MzOzmnDSNzMzqwknfTMzs5pw0jeztknaL2m1pF2SDkn6kaQzJD0s6VVJj0qaM0759ZIGG6YjktYW2ASzWnM3vGbWNkn7gX8AK8hG6ezjWD/jTwMPk42wNuF49ZLeBTwCXB4RfXnV2cyO8dC6Znay7oqIlwEkbQcOjCZtSQ8AE46dLul0shHIbnXCNyuOb++b2cl6uWH+tRbLs8YrLGkqcD/wi4jY0PnqmdlYnPTNrGh3Aa+SDSdsZgXy7X0zK4ykm4FlwNKIGCm7PmZ14yt9MyvSdcDZwEsNb/B/pexKmdWF3943MzOrCV/pm5mZ1YSTvpl1lKQbmjrgGZ36y66bWd359r6ZmVlN+ErfzMysJpz0zczMasJJ38zMrCac9M3MzGrCSd/MzKwm/g96KSxmz4O+lgAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "window = (\"Tm[169]\", 0.1)\n",
+ "df = build_table(REE() + [\"O\", \"N\", \"H\"], window=window, max_atoms=2)\n",
+ "ax = df.mz.stemplot(window=window, max_labels=5, figsize=(8, 4))\n",
+ "ax.figure.suptitle('stemplot: Tm Interferences')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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KlH4qSfnnEu+rEoU3qJwzrnky6pE4S0K55xLvqxKFM4555LPE4VzzrmEsipReB+Fc84lX1YlCu+jcM655MuqROGccy75PFE455xLKKsShfdROOdc8mVVovA+CuecS76sShTOOeeSzxOFc865hDxROOecSyjjE4WkAZIekPSspNPTHY9zztU16Roz+yFJqyUtLFPeW9KHkpZIuhbAzCab2YXAecCQNITrnHN1WrpaFBOA3rEFknKAe4E+wCHAUEmHxCzy+3C+c865GpSWRGFms4GvyxT3BJaY2admtg14EjhTgduB6Wb2n5qO1Tnn6rpM6qPoAHweM10Ull0O/AgYLOnieCtLGi7pbUlvr1mzJrWROudcHVI/3QHEUDllZmZjgbEVrWxm90taCfTPy8s7JunROedcHZVJLYoioFPMdEdgRZpicc45F8qkRDEPOEjS/pLygLOAKZWpwB/h4ZxzyZeuy2MnAnOB7pKKJF1gZiXAZcAMYDEwyczer2S9/lBA55xLMplZumNIuvz8fHv77bfTHYZzztUqkuabWX7Z8kw69VRt3qJwzrnky6pE4X0UzjmXfFmVKLxF4ZxzyZdVicJbFM45l3xZlSi8ReGcc8mXVYnCWxTOOZd8FSaK8Kmuzjnn6qgoLYolku4s88hv55xzdUSURHE48BEwXtIb4VNam6U4rirxPgoXRXFxMT179qRp06YsXBiMnTV37lxOOOEETjnlFIYOHcr27durXFesiRMn0rp166TG71xNqzBRmNkGM3vAzL4P/A64CVgp6WFJ3VIeYSV4H4WLonHjxjz33HMMHjx4V1mXLl14+eWXmTVrFgcccADPPvtslesqtXPnTp566ik6depUzpoVKygoqNJ6ziVbpD4KSWdIega4B/gjcAAwFZiW4vicS7rc3Ny9vuW3b9+eRo0aAVC/fn3q1Yt2nUd5dZV64oknGDx4cOS6nMtUUf6CPwbOBO40s6PM7G4zW2VmTwHPpzY852rW0qVLmT59Ov369duj/IknniA/P5+mTZvSrl07+vTpw5w5c+LWs2PHDiZNmsSQIXsO8961a1fatm3Lpk2bdpWNHz/eWw8uo0VJFL80swvM7PXSAkknApjZFSmLzLkatn79es4991weffRR8vLydpXffffdXHXVVVx//fWsWrWK5cuXM2LEiISnpx577DF+/vOfl9uaKCkp4Z577il3veXLl1NQUEBBQQELFizY9X758uXV30HnqihKoihvdLm/JDuQZPDObFdVJSUlDB06lFGjRtG9e/dd5cXFxdx4443ce++9DBo0iCZNmpCbm0v//v25884749a3aNEiHnnkEXr37s3HH3/MFVfs/k51zTXXcNddd7Fu3bq91uvcuTOFhYUUFhZy5JFH7nrfuXPn5O6wc5UQdyhUSScA3wdaS7o6ZlYzICPvrTCzqcDU/Pz8C9Mdi8tsffv2ZcGCBXz44YdcdNFF5OTk8OabbzJ69GhGjx7NJZdcwpAhQ5g7dy5btmxh4MCBkes677zzuP3223fNz8/PZ+zYsXtMFxQUcNddd3HrrbemdD+dS4ZEY2bnAU3DZfaJKV8P7H2Jh3O1yLRpe1+Hcc455+xV9tVXX9GqVSvq14//r1JeXbHKGxtl9OjRnHjiiVx55ZVx1yssLExYr3M1Je5fv5nNAmZJmmBmn9VgTM5ljJYtW7J27VpKSkoSJovK6tGjB/369WPMmDEcfPDBSavXuVSI20ch6c/h23GSppR91VB8SDpA0oOSnqqpbTpX6oQTTqBhw4ZMnjw56XXffPPNPPDAA3zxxRdJr9u5ZEr0FenR8Oddyd6opIeAfsBqM+sRU96b4F6NHGC8mY0xs0+BCzxRuHRo3rw5o0eP5tJLL6V+/fqcfvrp5Obm8uKLL/LKK69wxx13VLnubt26MWTIEMaOHcthhx2WxKidS664LQozmx/+nFX6At4FvgnfV8cEoHdsQfjwwXuBPsAhwFB/vpTLBFdffTV33303t956K61bt6ZTp06MGzeOAQMGVLvuG2+8cY97KpzLRBWedJVUCJwRLrsAWCNplpldnXDFBMxstqSuZYp7AkvCFgSSniS40W9RVbfjXLIMGzaMYcOGVbueZcuW7THdqVMntmzZUu16nUulKPdRNDez9cAg4O9mdgzwoxTE0gH4PGa6COggqaWk+4CjJF0Xb+XwYYVvS3p7zZo1KQjPOefqpiiXcdSX1A74OXBDCmNROWVmZl8BF1e0spndL2kl0D8vL++YpEfnnHN1VJQWxWhgBsFpoXmSDiB4/lOyFQGxj9nsCKxIwXacc85VQpTHjP/TzA43sxHh9Kdm9tMUxDIPOEjS/pLygLOASl2G648Zd8m2c+dOvvnmm3SH4VxaRenMbg1cCHSNXd7Mzq/qRiVNBAqAVpKKgJvM7EFJlxG0XnKAh8zs/UrW2x/o361bRg2T4WqxV199lTVr1pQ73oRzdYXMLPEC0uvAq8B8YEdpuZn9K7WhVV1+fr6V99gE5yrjiy++YOLEiQwfPpxmzTJyUEfnkkrSfDPLL1sepTO7sZmNTEFMSectCpcs27dv55lnnqFPnz6eJFydF6Uz+9+S+qY8kiTwPgqXLBs3bqRHjx4ceuih6Q7FubSLkiiuJEgWWyStl7RB0vpUB1YVPh6FS4aPP/6Y119/3Uedcy4U5aqnfcysnpk1NLNm4XRGtsW9ReGqa/v27fz73//mkEP86THOlaowUSjwC0n/G053ktQz9aE5V/PmzJlDp06d2H///dMdinMZI8qpp/8DTgDODqc3Ejy8L+P4qSdXHdu3b2fevHn06tUr3aE4l1GiJIrjzOxSYAuAmX1DMPpdxvFTT646VqxYwaWXXor//Ti3pyiJYnv4CHCDXTfg7UxpVM7VsGXLlvHMM8/QpEmTdIfiXMaJkijGAs8AbST9AZgD3JbSqKrITz25qti5cyfPP/+8n3JyLo4Kb7gzs8clzQdOI3jC6wAzW5zyyKrAzKYCU/Pz8y9Mdyyu9pg/fz4NGzb0K52ciyPKs54eNbNzgA/KKXOu1tu4cSN9+/ZFKu9J9865KKee9rg1Neyv8PEeXFaYM2cO3bp1o02bNukOxbmMFTdRSLpO0gbg8Jg7sjcAq4FnayxC51Jk9erVzJ07l5YtW6Y7FOcyWtxEYWa3mdk+wJ0xd2TvY2YtzSzukKTp5J3ZrjJmzpzJD37wAxo3bpzuUJzLaFEe4XGdpA6Svi/pB6Wvmgiusvw+ChfVl19+yZo1a8jP3+uJys65MqJ0Zo8hGG1uEbvHozBgdgrjci6lmjRpwpAhQ8jJyUl3KM5lvCjjUQwEupvZ1lQH41xNWLNmDf/85z8ZMWJEukNxrlaIkig+BXKBtCQKSU0Inje1DSg0s8fTEYfLHq+99ho9evRIdxjO1RpRLo/dDCyQ9DdJY0tf1dmopIckrZa0sEx5b0kfSloi6dqweBDwlJldCJxRne06t27dOj766COOPfbYdIfiXK0RpUUxJXwl0wRgHPBIaUF4f8a9QC+gCJgnaQrQEXgvXGwHzlXDt99+y2mnnUajRo3SHYpztUaUR3g8nOyNmtlsSV3LFPcElpjZpwCSngTOJEgaHYEFRGsBuVqg6JvN3P78h2wrSVPuX/R2jW2qfYtG3NjvEL/z29VacROFpPcInxhbHjM7PMmxdAA+j5kuAo4jeCjhOEk/AabGW1nScGA4QOfOnZMcmku2uZ98xdT/ruCA1k3Iy8ne/P/1pm3MeH8VV552EC0aZ+TT+Z2rUKIWRb8aiyJQ3tctM7NNwK8qWtnM7pe0Euifl5fnjxipJR7+VU867Ze9N7z9/bWl3Dx1UbrDcK5a4iYKM/usJgMhaEF0ipnuCKyoTAX+9FjnnEu+TGrzzwMOkrS/pDyCm/wq1Ynuj/BwzrnkS0uikDQRmAt0l1Qk6QIzKwEuA2YAi4FJZvZ+OuJzzjm3W5TLY5HUCOhsZh8mY6NmNjRO+TRgWjXq9VNPzjmXZBW2KCT1J7g09flw+sjw/oaM46eenHMu+aKcehpFcI/DOgAzWwB0TV1IVedPj3XOueSLkihKzKxWfEX3FoVzziVflESxUNLZQI6kgyT9BXg9xXFVibconHMu+aIkissJxs3eCjwBFANXpTIol/3i3vLvnMs4Ua566m5mNwA3pDqY6go73vt369Yt3aE451zWiNKiuFvSB5JukXRoyiOqBj/1VPv4c/Kcy3xRxsz+IVAArAHul/SepN+nOjDnnHOZIdKd2Wb2pZmNBS4muKfixpRGVUV+1ZNzziVflBvuDpY0KhyNbhzBFU8dUx5ZFfipJ+ecS74ondl/ByYCp5tZpZ7m6pxzrvaLMsLd8TURiHPOucyUaIS7SWb283JGuhPBgELJHuHOuRrz6bpP+cObf2D7zu0p3c6q9Vto1GUzI16eSP1wJD/tEK2Wt0I7BQbF3ymmyddNyNuSF/ynCTY338z2httpXNyYnfV2sjNnJztyd7Cx5cbyh/hK4DtNvsOYk8dQT5k0qoCrTRK1KK4Mf9b0SHdV5vdRuKjeWf0Ob335Fke1OYq8nNQNUVpfO8G2k5fTgPo54Se8YHuL7buSghqLbfW2UbK9JPwaBjsa7KAe9aAB5OzIIbckF9thbKu/rVLb/3LTl7yz+h1uOO4GmjfwvjtXNYlGuFsZvh1hZiNj50m6HRi591rp5Y8Zr0Uy5NbsO35wB99p8p2U1f/315Zy838W8efzeiV9zOzi4mJ69erFokWLeOONN+jRowcAN9xwA7Nnz6Zt27YMvG4gf1745yrXVVhYyC233MLOnTu54oorGDhwYFL3wdUOUdqivcop65PsQJxzldO4cWOee+45Bg8evKts4cKFfPLJJ7z66qv86Ec/YvbTs6tc15YtW/jjH//I9OnTeeWVV6qVJAoKCqq8rku/uIlC0iVh/0R3Se/GvJYC79ZciC6byW/NrrLc3Fxat269R9mrr75Knz7B97g+ffrw4TvRxhorr67XX3+dRo0a0b9/fwYOHMiXX36ZnMBdrZOoRfEE0J9g3Or+Ma9jzOwXNRCbc66SvvnmG0rvI2revDmbijftmte1a1caNWpE06ZN2XffffnJT37C559/HreuVatWsWTJEqZOncqFF17IqFGj9pg/YcIEDjvsMBo3bsx3vvMdLrnkEtatW5eS/XLpFTdRmFmxmS0zs6Fm9hnwLcGZ5aaSOtdUgJIOkPSgpKdqapvO1Vb77rsvpU8mKC4upknzJnvMnzp1Khs3bmTlypW0bduWyy+/PG5dLVq04MQTTyQvL4/TTjuNRYsW7Zr3xz/+kZEjR3LnnXdSXFzMG2+8wWeffUavXr3Yti3ocF++fDkFBQUUFBSwYMGCXe+XL1+egj13qRRpKFRJHwNLgVnAMmB6lMolPSRpdXhXd2x5b0kfSloi6dpEdZjZp2Z2QZTtOVfXnXTSScyYMQOAGTNm8N2jvlvucg0bNmTw4MF7fPiX1bNnTxYvXoyZsWDBAg488EAA1q9fz0033cRf/vIXevfuTW5uLl27dmXSpEl89tlnPPbYYwB07tyZwsJCCgsLOfLII3e979y5xr5nuiSJcmf2rcDxwItmdpSkHwJDI9Y/geCxH4+UFkjKAe4l6CQvAuaFY3DnALeVWf98M1sdcVvO1Tl9+/ZlwYIFfPjhh1x00UWcd955dOnShZNPPpk2bdrQ57o+vPP+O3utt3nzZv7xj39w/PHHJ6xr4MCBnHLKKdSrV4+HHnoICPoutmzZwqBBg/aos2nTpvTp04cXXniB888/P7U77mpUlESx3cy+klRPUj0zeyW8PLZCZjZbUtcyxT2BJWb2KYCkJ4Ezzew2qnHPhqThwHDAv7G4OmPatGl7ld122+7vW48temyPeQMGDKB+/fps3LiRNm3a7Gp9xKvr0ksv5dJLL92jbO3atbRq1Yr69ff++GjXrh3z58/fq7ywsLDCfXGZK8rlseskNQVmA49LugcoqcY2OwCxPWhFYVm5JLWUdB9wlKTr4i1nZvcDNwP/yctL3Q1ULjtYptzIUcMmT57MunXr2Lp1K+PGjeOUU06p9NVMrVq1Yu3atZSU7P0xsHLlSlq1apWscF2GiJIoziToyP4f4HngE4Krn6qqvOsh4/7XmtlXZnaxmR0Ytjri8qfHOhdNTk4OgwYNIicnhzlz5lRq3RNOOIEGDRrw9NNP71G+adMmpk+fzmmnnZbMUF0GiPJQwE0xkw8nYZtFQKeY6Y5AUp5K64/wcJWlyj44KUuYGVOmTOGbb77h4IMPrtS6zZs356abbuLyyy+nWbNmnHbaaXzxxReMGDGCjh07cs4556QoapcuiR4KuIFyHgbI7ocCNqviNucBB0naH/gCOAs4u4p1uVqqrp76Sbf+/fuTk5ODJLp06cLDDz/MoYdWfoTj3/3ud7Rs2ZLf/va3fPLJJzRr1owBAwbw+OOP06BBgxRE7tIp0bOe9qlu5ZImEgyj2kpSEXCTmT0o6TJgBsGVTg+Z2fvV3Rb4s56cS2TZsmVJre+CCy7gggv8yvW6IMpVT0g6CTjIzP4uqRWwj5ktrWg9Myv3MlozmwbsfYlFNfmpp9qnbp74ca52iXLD3U0ET4otveIoD3gs/hrp453ZzjmXfFGuehoInAFsAgiHQ632aalUCO8iv7/0EQbOOeeqL0qi2GZmRtixLalJBcunjbconHMu+aIkikmS/ga0kHQh8BIwPrVhOeecyxRR7qO4S1IvYD3QHfhfM3sh5ZFVgXdmu6j88lznokvYopCUI6mVmb1gZtcA1wP7S1pcM+FVjp96cs655Es0wt1ZwNfAu5JmhU+N/ZRgGNRhNRSfq8OKi4vp2bMnTZs2ZeHChXHLqlrXtjXbOLTrobvGSVizZk1K9sO52i5Ri+L3BKPZtWf3c54uN7OBZvafGomukvyqp9rDIpz5KW8c5/LKooi33gknnbBrnISyQ4FG5eNBu2yXKFFsM7MlAGFiWGpmz9RMWFXjp56yS3njOJdXVtW6AN6a+xYnn3wy119/PRYlezlXByVKFG0kXV36IhgCNXbauWpTEm/NruyY0PVb1OeN995g9uzZrF69eo+noXbt2pW2bduyadPuZ2KOHz/eWw+uTkqUKB4guLGu9FV22rmMU5kxoevl1qNJkyZIYtCgQfz3v//dY35JSQn33HNPuev6eNCuLkn0UMCbazIQ55KpdEzoq666Ku4yO77dsev9q6++utfjtq+55hruuOMORowYQYsWLfaYVzoeNAR9FD6Cm8tmUW64qzW8Mzv79O3bl5kzZ3LhhRcyYcKEuGVlxRsTunS9wqcL2fTBJnqd2IuTTz6ZL774grPP3vNp9/n5+RQUFHDXXXelavecqxUiPT22tvDHjGef8sZxLq+sVNQxof/50T+ZPXc2L/y/F2jTuE3c+kaPHs2JJ57IlVdeGXcZb024bJdVLQrnoo4JHfUKpx49etCvXz/GjBmT7FCdqzUSjXCX8MomM7s7+eE4l1IrOTwAABQqSURBVBylY0JfdNFFzJkzJ+59F1GGQr355ps5+uij+c1vfpPsMJ2rFRK1KEqvbsoHLgE6hK+LgUNSH5pzVWdmPPvss1UaE7qsbt26MWTIEMaOHZuk6JyrXSq86knSTOBoM9sQTo8C/lkj0YUkDQB+ArQB7jWzmTW5fVd7JGtM6LJuvPFGHn300SRE6FztE6UzuzOwLWZ6G9A16gYkPQT0A1abWY+Y8t7APQTjZo83s7gngc1sMjBZ0r7AXYAnilouFfdAJ3NM6LJ1derUiS1btiStfudqkyiJ4lHgLUnPEPx/DwQeqcQ2JgDjYteRlAPcC/QCioB5kqYQJI3byqx/vpmtDt//PlzPZYkofQTOufSKMh7FHyRNB04Oi35lZu9E3YCZzZbUtUxxT2CJmX0KIOlJ4Ewzu42g9bEHSQLGANPjPZBQ0nBgOAQ3QznnnEuOqJfHNgbWm9k9QJGk/au53Q5A7EN4isKyeC4HfgQMlnRxeQuY2f1mlm9m+VV9Cqhzzrm9VdiikHQTwZVP3YG/A7nAY8CJ1dhueecb4p62NrOxQIWXnPgId64mfPvtt2zdunWvx3o4l62itCgGAmcAmwDMbAXVfyhgEdApZrojsKKadTpXI1avXs0DDzzAzJkzvYPb1QlREsU2C25jNQBJTZKw3XnAQZL2l5QHnAVMSUK9zqVcly5duOSSS9iyZQv33nsvH3zwQbpDci6loiSKSZL+BrSQdCHwIjA+6gYkTQTmAt0lFUm6wMxKgMuAGcBiYJKZvV/58PfkAxe5ylIVB8Ro2rQpZ5xxBkOHDqVevXq89tprfPbZZ0mOzrnMEOWqp7sk9QLWE/RT3GhmL0TdgJkNjVM+DYj/dLcq8D4KV9Pat28PBHeCT548mRYtWnDSSSdxwAEHVDkJOZdponRm325mI4EXyinLKP70WJcu3bt3p1u3bixcuJCZM2dy+umn06BBAx9e1WWFKDfc9QLKJoU+5ZSlnbcoao9s/PzMycnhiCOO4IgjjqCkpISHH36YL7/ZQLecfdmxY0fFFTiXoeL2UUi6RNJ7BH0L78a8lgLv1lyI0XkfhcsU9evX5/zzz2e/7j05MOcrHh7/NzZv3uwtDFcrJWpRPAFMJ3ikxrUx5RvM7OuURuXqjGw+jS+Jhvu1Y8a27lz7s6MpLi7mr3/9Kz179uTYY4+lYcOG6Q7RuUjitijMrNjMlpnZUDP7DPiW4BLZppIy8hkZPhSqy1T77teSdu3acc4557B27VrGjh3LSy+95C0MVytE6czuD9wNtAdWA10ILmmt/rObk8w7s12ma9OmDQMHDmTdunUsW7aMjz76iNmzZ3PEEUdw2GGH0ahRo3SH6NxeonRm3wocD7xoZkdJ+iFQ7iWvztUWlfkmb9u3s3PTpiptJ2fjBppu28zO4mJ2bMvdVb4PcFjXruzcuRP17Ml/Fy3i5Zde4tDu3el76qlV2la529/wLU2+tWD7eRXsc7165DRrlrRtu+wRJVFsN7OvJNWTVM/MXpF0e8ojqwK/6smlwtKfD2Hr4sVVWvdYglG+Vk2DVQmW6wEclJdHcYsWfHT9DVXaVnmOJHhA25d//jF7jxy+t7b/+3v2GzYsadt32SFKolgnqSkwG3hc0mqgJLVhVY2fenKpsH3FChrlH0Oz039c6XXfXPoV0xd+ycje3WmUG+XfLbnmrXqblz57kSuPvpJG9ROf1lp1++2UfBklnbi6Jspf7pnAFuB/gGFAc2B0KoNyLtM0/N7B7PfLcyq93pevLWXKt4sYPbQXLRrnpSCyxNYsEtPnvcwNZw2heYPEl42vvuuuGorK1TZRHuGxCUBSM2BqyiNyzjmXUaJc9XQRQQviW2AnwVgSBhyQ2tCcc85lgiinnn4LHGpma1MdTHV5Z3btYfHHqXLOZZgojxn/BNic6kCSwR/hUftk8Y3ZzmWNKC2K64DXJb0JbC0tNLMrUhaVc5nE7552dVyURPE34GXgPYI+Cuecc3VIlERRYmZXpzwS52pQpftIsvnphc5VIEofxSuShktqJ2m/0lfKIwtJOljSfZKeknRJTW3X1Q3yXhLnKhSlRXF2+PO6mLJIl8dKegjoB6w2sx4x5b2Be4AcYLyZjYlXh5ktBi6WVA94IEK8zjnnkijKDXf7V6P+CcA44JHSAkk5wL0EI+cVAfMkTSFIGreVWf98M1st6QyCMTHGVSMW55xzVRA3UUg61cxeljSovPlm9nRFlZvZbEldyxT3BJaY2afhdp4EzjSz2whaH+XVMwWYIuk5ggGVyot3ODAcoHPnjBwuwznnaqVELYpTCK526l/OPAMqTBRxdAA+j5kuAo6Lt7CkAmAQ0ACYFm85M7sfuB8gPz/fr2d0yeOXx7o6Lm6iMLObwrejzWxp7DxJ1TkdVV7vYdz/RDMrBAojVex3Ztcate6z1/u8XR0W5aqnf5VT9lQ1tlkEdIqZ7gisqEZ9zjnnUihRH8X3CIY7bV6mn6IZUJ1R4ecBB4Wtki+As9h9ZVW1+HgUtZB/U3cu4yXqo+hO0Lncgj37KTYAkT6IJU0ECoBWkoqAm8zsQUmXATMIrnR6yMzer0Ls5W3PTz0551ySJeqjeBZ4VtIJZja3KpWbWblja5vZNBJ0TDuXav70Wueii9JHMVBSM0m5kl6StFbSL1IeWRX402NdZSnKozlqXc+7c8kVJVGcbmbrCU5DFQHfBa5JaVTOOecyRpREkRv+7AtMNLOvUxhPtUjqL+n+4uLidIfiskyklodzWSpKopgq6QMgH3hJUmtgS2rDqho/9eScc8lXYaIws2uBE4B8M9tOMNrdmakOrCq8ReGcc8kXN1FI+l3M5I/MbAeAmW0CMnJ0O29RuExRXFxMz549uaRXD7atWQbAqlWr+P73v88pp5zCqaeeysqVK9MbpHMRJWpRnBXz/roy83qnIBZXh2T7dUSNGzfmueeeI7+gz66yVq1aMWfOHGbNmsUvf/lLHnzwwaRtr6CgIGl1OVdWohvuFOd9edPOVUmtGDioCpfH5ubm0rp16z3KcnJydr3fsGEDhx56aLVDc64mJGpRWJz35U1nBO+jcFFZmu6NWLBgAccddxzjxo3j6KOP3mPeE088QX5+Pk2bNqVdu3b06dOHOXPmpCVO52IlShRHSFovaQNwePi+dPqwGoqvUryPwqVOclo+Rx55JG+++Sa33HILt922e5yuu+++m6uuuorrr7+eVatWsXz5ckaMGMGzzz4bt67ly5dTUFBAQUEBCxYs2PV++fLlSYnVuVKJHuGRE2+ec9miJk99bd26lQYNGgDQvHlzGjdujJnxwQcf8MYbb3DVVVcxYMAA6tULvr/179+f/v3LGw4m0LlzZwoLC4Ggj6L0vXPJFmXMbOdcFfTt25eFb83n2wYLeeLRBhx1+KGMHDmSnJwcGjZsyJ/+9Cf++te/smHDBlasWMH48eN3JQnnMklWJQp/eqzLJNOmTePvry3l5qmLOPucXrRonMesWbP4+OOPmTNnDq1ateKMM86gsLCQJUuW0KxZs3LrmTt3LldffTV5eXm0b9+eRx55hNzc3D2W8daES6Ws+vrifRQuk61YsYJHHnmEF154gRNPPJFWrVrRsWNHWrVqxdq1aykpKSl3vS5duvDyyy8za9YsDjjggIT9Fs6lQla1KJxLiWpeIdVUW1lfvI45hYX06NGDo446ao9TTCeccAINGzZk8uTJDB48eK/127dvv+t9/fr1/fSUq3H+F+dcFFV4KODOnTspXvYe/RssZs3q1Zx99tkcc8wxe33QN2/enNGjR3PppZcyefJkNm/ezPbt25k+fTq/+93uByQsXbqU6dOn069fv2rvjnOV4S0Klx5ZPsbDxo0beeqpp9hSvIUpWw9m5EHfTbj81VdfTdu2bbn11lsZNmwY++yzD8cccww33HADAOvXr+fcc8/l0UcfJS8vryZ2wbldakWikNQEmE0wlOq/0x2PS55sfXr3V199Rffu3dm5ow2b/v1BpHWGDRvGsGHD9iovKSlh6NChjBo1iu7duyc7VOcqlNJEIekhggGPVptZj5jy3sA9BGNmjzezMRVUNRKYlLJAXfYxg+d+A19/Gmd2ePf+P34JquCWoZJvYdGz8Ej0EYG7hK/O676lW+4mmky6H+pVLStOfO1z3py9kNGfvslo4JJT92fIcR12L5CTC71ugTbfq1L9zlUk1S2KCcA44JHSAkk5wL1AL4IR8+ZJmkKQNG4rs/75wOHAIqBhimN12aRkC7z9IDTrCM3a7z2/3lbIAW3fTIVddQbs2A7bNlU6jNwdW2iiLWjbpioninOO3Y9zjv3BnoWlsezcDivegYNO90ThUialicLMZkvqWqa4J7DEzD4FkPQkcKaZ3UbQ+tiDpB8CTYBDgG8lTTOznamM22WRnr+Gk/5n7/LFj8NbY+AX/4KGLRLX8X/HwGGD4dcjK73558L7KBb8IriPIuk2rYU7D0x+vc7FSEcfRQfg85jpIuC4eAub2Q0Aks4D1sZLEpKGA8MheLSBc8mS3d3uzlUsHYmivPZ3hf+LZjahgvn3S1oJ9M/LyzumirG5bJHsq6qytdfduQjScR9FEdApZrojsCINcTjnnIsgHYliHnCQpP0l5RGMpDclGRX7Izzc3rwl4Fx1pTRRSJoIzAW6SyqSdIGZlQCXATOAxcAkM3s/SdvzgYuccy7JUn3V09A45dOAaSnY3lRgan5+/oXJrtvVNt4F7VyyZNWznrxFUXvU2Md4Mjqhs/xxI85VJKsShfdR1D7eg+Bc5suqROEtCrdLxFaAorY4/PJYV4dlVaLwFoVzziVfViUKb1G4vXlLwLnqyqpE4S0K55xLvqxKFM7t5lcqOZcsnihcdvPLY52rtqxKFN5H4VLGuzpcHZZVicL7KJxzLvmyKlG42iPlZ3P8dJFzSeOJwqVV5Bveqr6FckvNE4lzkXmicM45l1BWJQrvzHa7eYvBuWTJqkThndluL355rHPVllWJwrlUSX1finOZyxOFc865hDI+UUgqkPSqpPskFaQ7HldL+Oki55Im1WNmPyRptaSFZcp7S/pQ0hJJ11ZQjQEbgYZAUapiddnKTxk5V10pHTMbmACMAx4pLZCUA9wL9CL44J8naQqQA9xWZv3zgVfNbJaktsDdwLAUx+yccy5GShOFmc2W1LVMcU9giZl9CiDpSeBMM7sN6Jegum+ABqmI0znnXHxK9R2qYaL4t5n1CKcHA73N7Nfh9DnAcWZ2WZz1BwE/BloAfzWzwjjLDQeGh5PdgQ+Ttxc1rhWwNt1BZAg/Frv5sdjNj8VuyTwWXcysddnCVJ96Kk95J43jZiszexp4uqJKzex+4P5qxJUxJL1tZvnpjiMT+LHYzY/Fbn4sdquJY5GOq56KgE4x0x2BFWmIwznnXATpSBTzgIMk7S8pDzgLmJKGOJxzzkWQ6stjJwJzge6SiiRdYGYlwGXADGAxMMnM3k9lHLVQVpxCSxI/Frv5sdjNj8VuKT8WKe/Mds45V7tl/J3Zzjnn0ssTRQpJ6iTpFUmLJb0v6cqwfJSkLyQtCF9946x/paSF4bpXxZQfIWmupPckTZXUrKb2qariHYtw3uXhnfrvS7ojzvrl3s0vaT9JL0j6OPy5b03sT3Wk8Fj8LFxvp6RacUVQCo/FnZI+kPSupGcktaiJ/amOFB6LW8LjsEDSTEntKx2cmfkrRS+gHXB0+H4f4CPgEGAU8NsK1u0BLAQaE1zG/CJwUDhvHnBK+P584JZ072s1jsUPw31rEM5rU866OcAnwAFAHvBf4JBw3h3AteH7a4Hb072vaTwWBxPcQ1QI5Kd7P9N8LE4H6ofvb6/jfxfNYpa7ArivsrF5iyKFzGylmf0nfL+BoPO+Q8TVDwbeMLPNFlwAMAsYGM7rDswO378A/DR5UadGgmNxCTDGzLaG81aXs/quu/nNbBvwJHBmOO9M4OHw/cPAgNTtRXKk6liY2WIzq1U3mqbwWMwM/28A3iC4DD+jpfBYrI9ZrglVGNXLE0UNCe9QPwp4Myy6LGwOPhTndMlC4AeSWkpqDPRl9/0nC4Ezwvc/Y8/7UjJemWPxXeBkSW9KmiXp2HJW6QB8HjNdxO6E29bMVkLwjwa0SVXcqZDkY1GrpfBYnA9MT260qZXsYyHpD5I+J3hW3o2VjccTRQ2Q1BT4F3BVmN3/ChwIHAmsBP5Ydh0zW0zQZH4BeJ6gKVn6Del84FJJ8wmaqNtSvQ/JUs6xqA/sCxwPXANMkvYaJahSd/PXFn4sdkvVsZB0A8H/zeNJDzpFUnEszOwGM+tEcBzKfVxSIp4oUkxSLsEv/XELHkeCma0ysx1mthN4gKDZuBcze9DMjjazHwBfAx+H5R+Y2elmdgwwkeDcZMYr71gQfPN52gJvATsJnl0TK9Hd/KsktQvrbweU1yzPOCk6FrVSqo6FpHMJHjQ6zMIT9JmuBv4unqAKp6o9UaRQmPUfBBab2d0x5e1iFhtIcCqpvPXbhD87A4MIkkJseT3g98B9qYg/meIdC2AycGq4zHcJOuLKPuAs0d38U4Bzw/fnAs+mZg+SJ4XHotZJ1bGQ1BsYCZxhZptTuxfJkcJjcVDMcmcAH1Q6uGT01vsr7lUMJxE0/94FFoSvvsCjwHth+RSgXbh8e2BazPqvAosITjudFlN+JcEVER8BYwhvnMzkV4JjkQc8RpAs/wOcGudY9A339xPghpjylsBLBK2tl4D90r2vaTwWAwm+WW4FVgEz0r2vaTwWSwjO2ZfWWekrfbLoWPwrXPddYCrQobKx+Z3ZzjnnEvJTT8455xLyROGccy4hTxTOOecS8kThnHMuIU8UzjnnEvJE4ZxzLiFPFM455xLyROGccy6h/w+s1ybl1yT+zwAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "window = (\"B[10]O[16]\", 0.05)\n",
+ "df = build_table([\"C\", \"B\", \"N\", \"O\"], window=window, max_atoms=2)\n",
+ "ax = df.mz.spectra(window=window, mass_resolution=3000, max_labels=5, figsize=(8, 4))\n",
+ "ax.figure.suptitle('spectra: Cyanide BO Interference')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We've included some interactive examples below, if you'd like to play around with some of these without getting into the code itself:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import ipywidgets as widgets\n",
+ "interact_manual = widgets.interact.options(manual=True, manual_name=\"Build Plot\")\n",
+ "\n",
+ "def plot_function(mode='stem', elements=[],window1=None, window2=0.05, max_atoms=2, max_charge=2, mass_resolution=3000,image_ratio=0):\n",
+ " elements = [el.strip() for el in elements.split(',')]\n",
+ " window = (window1, window2)\n",
+ " df = build_table(elements, window=window, max_atoms=max_atoms, charges=[i+1 for i in range(max_charge)])\n",
+ " if 'stem' in mode:\n",
+ " ax = df.mz.stemplot(window=window, max_labels=5, figsize=(8, 4))\n",
+ " else:\n",
+ " ax = df.mz.spectra(window=window, mass_resolution=mass_resolution,image_ratio=image_ratio, max_labels=5, figsize=(8, 4))\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAD+CAYAAAAkukJzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3deXyU5bn4/881MwnZAIEAZQdFqUut1hwUqQVbtYCiQqmKHKtHK65U66nV1h6t1P7Uiv6OFL/1oOIulq+1LAco1iUsdSlo0SIUQcAYDDtkAZLMcn3/eGaSSTIzmSSzJbner9e8MnM/y1wPQ3LNvTz3LaqKMcYYE40r3QEYY4zJbJYojDHGxGSJwhhjTEyWKIwxxsRkicIYY0xMliiMMcbEZInCGGNMTJYojDHGxJTxiUJEThSRJ0XkNRG5Kd3xGGNMZ5OWRCEi80Rkj4hsaFQ+TkQ2i8hWEbkbQFU3qeqNwGVAUTriNcaYzixdNYrngHHhBSLiBp4AxgMnAVNF5KTgtouBNcBbqQ3TGGOMJx1vqqqrRGRoo+KRwFZV3QYgIq8ClwAbVXUxsFhElgKvRDqniEwHpgPk5+ef8fWvfz1J0RtjTMf04Ycf7lPV3o3L05IoohgAfBn2uhQ4U0TGApOBLsCyaAer6lxgLkBRUZGuW7cueZEaY0wHJCJfRCrPpEQhEcpUVYuB4rhOIDIRmDh8+PAEhmWMMZ1bJo16KgUGhb0eCHyVpliMMcYEZVKiWAscLyLDRCQbuAJY3JITqOoSVZ3evXv3pARojDGdUbqGx84H3gNGiEipiFynqj7gVmAFsAlYoKqftvC8E0Vkbnl5eeKDNsaYTipdo56mRilfRowOa2OMMamXSU1PbWZNT8YYk3gdKlEYY4xJvA6VKKyPwhhjEq9DJQprejLGmMTrUInCahTGGJN4HSpRWI3CGGMSr0MlCmOMMYlnicIYY0xMHSpRWB+FMcYkXodKFNZHYYwxidehEoUxxpjEs0RhjDEmpg6VKKyPwhhjEq9DJQrrozDGmMTrUInCGGNM4lmiMMYYE5MlCmOMMTFlfKIQkUtF5CkRWSQiF6Q7HmOM6WzStWb2PBHZIyIbGpWPE5HNIrJVRO4GUNWFqno9cA1weRrCNcaYTi1dNYrngHHhBSLiBp4AxgMnAVNF5KSwXX4V3G6MMSaF0pIoVHUVcKBR8Uhgq6puU9Va4FXgEnE8DCxX1Y9SHasxxnR2mdRHMQD4Mux1abBsBnAeMEVEbox2sIhMF5F1IrJu7969yY3UGGM6EU+6AwgjEcpUVWcDs5s7WFXnikgZMDE7O/uMhEdnjDGdVCbVKEqBQWGvBwJfpSkWY4wxQZmUKNYCx4vIMBHJBq4AFrfkBDaFhzHGJF66hsfOB94DRohIqYhcp6o+4FZgBbAJWKCqn7bwvDYpoDHGJJioarpjSLiioiJdt25dusMwxph2RUQ+VNWixuWZ1PTUZlajMMaYxOtQicL6KIwxJvE6VKKwGoUxxiReh0oUVqMwxpjE61CJwmoUxhiTeB0qUViNwhhjEq/ZRBGc1dUYY0wnFU+NYquIPNJoym9jjDGdRDyJ4lTgM+BpEXk/OEtrtyTH1SrWR9HxlJeXM3LkSAoKCtiwwVnn6r333mPUqFGMGTOGqVOn4vV6W32ucPPnz6d3794Jjd+YjqDZRKGqlar6lKqeDfwcuA8oE5HnRWR40iNsAeuj6Hjy8vJYunQpU6ZMqSsbMmQIb7/9NitXruTYY49l0aJFrT5XSCAQ4LXXXmPQoEERjmze2LFjW3WcMe1BXH0UInKxiPwZeBx4FDgWWAIsS3J8ppPLyspq8i2/f//+5ObmAuDxeHC54huTEelcIa+88gpTpkyJ+1zGdCbx/FZsAS4BHlHV01X1MVXdraqvAX9JbnjGRLd9+3aWL1/ORRdd1KD8lVdeoaioiIKCAvr168f48eNZs2ZN1PP4/X4WLFjA5Zc3XJJ96NCh9O3bl8OHD9eVPf3001Z7MJ1OPIniR6p6naq+GyoQkdEAqvqTpEVmTAwVFRVcffXVvPjii2RnZ9eVP/bYY9x+++388pe/ZPfu3ZSUlHDzzTfHbJ566aWXuOyyyyLWJnw+H48//njE40pKShg7dixjx45l/fr1dc9LSkrafoHGZJB4EkWk1eV+n+hAEsE6szsHn8/H1KlT+fWvf82IESPqysvLy7n33nt54oknmDx5Mvn5+WRlZTFx4kQeeeSRqOfbuHEjL7zwAuPGjWPLli385Cf133/uvPNOZs2axaFDh5ocN3jwYIqLiykuLua0006rez548ODEXrAxaRZ1KVQRGQWcDfQWkTvCNnUDMvLeClVdAiwpKiq6Pt2xmMSZMGEC69evZ/Pmzdxwww243W4++OADZs6cycyZM7npppu4/PLLee+996iurmbSpElxn+uaa67h4YcfrtteVFTE7NmzG7weO3Yss2bN4oEHHkjqdRqTqWKtmZ0NFAT36RpWXgE0HTZiTJIsW9Z0zMRVV13VpGz//v0UFhbi8UT/bx3pXOEirWMyc+ZMRo8ezW233Rb1uOLi4pjnNaY9i/obpaorgZUi8pyqfpHCmIxplV69erFv3z58Pl/MZNFSp5xyChdddBEPPfQQJ554YsLOa0x7EbWPQkT+O/h0jogsbvxIUXyIyLEi8oyIvJaq9zTt06hRo8jJyWHhwoUJP/f999/PU089xc6dOxN+bmMyXayvXS8Gf85K9JuKyDzgImCPqp4SVj4O514NN/C0qj6kqtuA6yxRmOZ0796dmTNncsstt+DxeLjgggvIysrizTff5J133uF3v/tdq889fPhwLr/8cmbPns03vvGNBEZtTOaLWqNQ1Q+DP1eGHsAnwMHg87Z4DhgXXhCcfPAJYDxwEjDV5pcyLXXHHXfw2GOP8cADD9C7d28GDRrEnDlzuPTSS9t87nvvvbfBPRXGdBbNNuSKSDFwcXDf9cBeEVmpqnfEPDAGVV0lIkMbFY8EtgZrEIjIqzg3+m1s7fuYzmnatGlMmzatzefZsWNHg9eDBg2iurq6zec1pr2J5z6K7qpaAUwGnlXVM4DzkhDLAODLsNelwAAR6SUiTwKni8gvoh0cnKxwnYis27t3bxLCM8aYzimeoSEeEekHXAbck8RYJEKZqup+4MbmDlbVuSJSBkzMzs4+I+HRGWNMJxVPjWImsAKnWWitiByLM/9TopUC4VN3DgS+SsL7GGOMaYF4phn/v6p6qqreHHy9TVV/kIRY1gLHi8gwEckGrgBaNAzXphk3ieDz+dIdgjEZJZ5pxnuLyC9FZK6IzAs92vKmIjIfeA8YISKlInKdqvqAW3FqL5uABar6aQvPa3M9mTZ78cUX2bIlGZVmY9onUdXYO4i8C6wGPgT8oXJV/VNyQ2u9oqIijTQVgzHx2Lp1K0uXLuXmm28mKysr3eEYkzIi8qGqFjUuj6czO09V70pCTAknIhOBicOHZ9TCe6adGT58OAMHDmTlypWcd14yBvgZ077E05n9vyIyIemRJID1UZhE+f73v89nn31GczVuYzqDeBLFbTjJolpEKkSkUkQqkh1Ya1gfhUmUgoICbrrpJlavXm3JwnR68Yx66qqqLlXNUdVuwdfdUhFcS1mNwiTali1bIk49bkxnEs+oJxGRfxeR/wq+HiQiI5MfmjHpJSJcfPHFFBcXs3v37nSHY0zaxNP09H+AUcCVwddVOJP3ZRxrejKJ1rt3by644AJee+01a4IynVY8ieJMVb0FqAZQ1YM4q99lHGt6MsnwzW9+k4kTJ1JWVmbJwnRK8SQKb3AKcAXnBjwgkNSojMkwgwcPZvny5axduzbdoRiTcvEkitnAn4E+IvJbYA3wYFKjaiVrejLJNGnSJFauXGmr3JlOp9k7swFE5OvA93BmeH1LVTclO7C2sDuzTbJs2rSJN954gxtuuIGcnJx0h2NMQrX6zmwReVFVrwL+FaHMmE7lxBNPpLq6mpqaGksUptOIp+np5PAXwf4KW+/BdFqnn34677zzDmvWrEl3KMakRNREISK/EJFK4NSwO7IrgT3AopRFaEwGOvfcc3n//febLJdqTEcUNVGo6oOq2hV4JOyO7K6q2ktVoy5Jmk7WmW1SpXv37lx66aW8/vrrVFVVpTscY5Iq3s7sAcAQwvo0VHVVEuNqE+vMNqny/vvvU1hYiM1YbDqCaJ3Z8Uzh8RDwN+BXwJ3Bx88SHqEx7dBZZ52F1+vltddeIxCw24tMxxRPZ/YkYISqTlDVicHHxckOzJj24oQTTqC6upolS5bYndumQ4onUWwDbJkvY6Jwu91cdtll7N27lzfffDPd4RiTcPGscHcEWC8ibwE1oUJV/UnSogojIvk4ExPWAsWq+nIq3teYlsjOzubKK6+kuLiYQCCAyxXPdzBj2od4/jcvBn4DvIuzbnbo0WoiMk9E9ojIhkbl40Rks4hsFZG7g8WTgddU9XrAmrxMxsrLy2PChAm8/PLLlJWVpTscYxKm2RqFqj6fhPd9DpgDvBAqCN7I9wRwPlAKrBWRxcBA4J/B3fxJiMWYhKj1BXj8rc/YpiNY+04ZHs9ust0usj0uLjmtP2cM6ZnuEI1plaiJQkT+SXDG2EhU9dTWvqmqrhKRoY2KRwJbVXVb8P1fBS7BSRoDgfXEvkFwOjAdnJk+jUm1/1n5OU+88znHFuajOInDFwiwp7KGP3+0kzV3fZfuedbdZ9qfWDWKi1IWhWMA8GXY61LgTJzZa+eIyIXAkmgHq+pcESkDJmZnZ9sUIyalAgHlhfe/4NwRvXn2PxouALnxqwomzF7NwvU7ufrsoekJ0Jg2iJooVPWLVAaCMzNthDD0MPAf8ZxAVZcAS4qKiq5PaGTGNONfuyrZW1nDhaf2b7LtpP7dOLYwn7f/tccShWmXMmloRikwKOz1QOCrlpzApvAw6bJ2xwEAzj6uV8TtI4f15OPSQ3afhWmXMilRrAWOF5FhIpINXIEz4sqYjLdlTyVdczz06x556vGT+3fj0BEvX5VXpzgyY9ourkQhIrkiMiJRbyoi84H3gBEiUioi16mqD7gVWAFsAhao6qctOa+tmW3SZeueKob3KUAkUgsqDO/TFYDtew+nMixjEiKehYsmArOAbGCYiJwGzGzLNB6qOjVK+TJgWWvPG4x1ok3QZlJt+77DfHt476jbB/bIBWDnoSOpCsmYhImnRvFrnKGrhwBUdT0wNHkhtZ7VKEw6BALKvqpavta9S9R9vtY9B5fAzoNHUxiZMYkRT6LwqWq76B22zmyTDgeP1OIPKL0LoieKLLeLPl1zrI/CtEvxJIoNInIl4BaR40Xk9zjTeWQcq1GYdNhb5UyBVtg1eqIA6FWQzf6qmpj7GJOJ4kkUM3DWza4BXgHKgduTGZQx7cm+ylqAmDUKgJ752Rw4XJuKkIxJqHhmjx2hqvcA9yQ7mLayzmyTDnurnOak3s3VKPKz2b7PRj2Z9ieeGsVjIvIvEfmNiJyc9IjawJqeTDqEahTNNT31zO9iNQrTLjWbKFT1XGAssBeYKyL/FJFfJTswY9qLvVU1ZHtcdO0Su4LeqyCbI7V+qr02CbJpX+K64U5Vd6nqbOBGnFlc701qVK1ko55MOhw6UkuPvKyoN9uF9MzPBmC/1SpMO9NsohCRE0Xk18FFhubgjHgamPTIWsGankw6VBz10T23+enDQ4niQJUlCtO+xNOZ/SwwH7hAVVs0SZ8xnUFFtZduOc0nih55TqI4eMQShWlf4lnh7qxUBGJMe1VR7aVP18iTAYbrmuP8ulXV+JIdkjEJFWuFuwWqelmEle4EZ52IVq9wZ0xHUn7Uy/DeBRG31fprmbVuFpsPbCYQcJM7qIJntizkrf3dGDdsHOcPOT/F0RrTcrFqFLcFf6Z6pbtWs/soTDrE6qN4YeMLzP/XfEbmjeRobi3iPsyBmlp2lW3k7ZK3WTxpMYO6Dop4rDGZImpntqqWBZ/erKpfhD+Am1MTXstYZ7aJpry8nJEjR1JQUMCGDRvqyu+55x7OOeccpkyZwpEj8c3sGn6uTz75J5XVXrrlZlFcXMz3vvc9zj33XP785z+jqizcsJALKy7k9N2n89R353Jkx61cXDiL1y9+nQABFm1dlKxLNiZh4hkeG6luPD7RgRiTTHl5eSxdupQpU6bUlW3YsIHPP/+c1atXc9555zFv3rwWn+uo10dAIVcCPProoyxfvpx33nmHSZMm8fYHb/PNrd9k4NcGcuONN5Kfl0t+tpvKah998/vyzd7fZM3ONU3OP3bs2ERdtjEJETVRiMhNwf6JESLySdhjO/BJ6kI0pu2ysrLo3bvhehGrV69m/HjnO8/48eNZs6bpH+3mzlVZ7XRMl21ZT25uLj/4wQ+45ZZbmDdvHvty9vFG/ze48IIL8XicVt6uOVlU1XgBOL3P6Ww+uBmv35uQazQmWWL1UbwCLAceBO4OK69U1QNJjcqYFDh48CD9+vUDoHv37hw4UP/feujQoezevRu3201WVhZnn302Tz75JIMGNexPOBK8y7q2fC+FhYUMGTKEbt26sW7dOo479TgC2QEGdx3Mc889x6OPPsrGzVv4JK+Ayrd+yPdu+h6+gI/Pyz/n6z2/nroLN6aFYvVRlKvqDlWdGuyXOIoz+qlARAanKkAROVZEnhGR11L1nqZz6NGjB6G7+MvLy+nZs2eD7UuWLKGqqoqysjL69u3LjBkzmpyjJpgounfvTm5uLnfccQfXXnstGzZsYFv5NoZ0H8J/////zV133cUjjzzCRY+u4IK7n+KLL77g/qvvJ+AL8EXFF5SUlDB27FjGjh3L+vXr656XlJQk/x/CmGbEc2f2RBHZAmwHVgI7cGoazRKReSKyJ3hXd3j5OBHZLCJbReTuaMcDqOo2Vb0unvczpiW+/e1vs2LFCgBWrFjB6NGjI+6Xk5PDlClT2LhxY5NtNd4AAN8aeTYff/wxHo+H9evXc9xxx1FSUUI/dz/uu+8+fv/73zNu3Di65eWgXfuwYMECdu3cRfm75ZRVlTF48GCKi4spLi7mtNNOq3s+eHDKvpMZE1U8d2Y/AJwFvKmqp4vIuUDENa8jeA5n2o8XQgUi4gaewOkkLwXWishiwI3TzBXuWlXdE+d7GRPThAkTWL9+PZs3b+aGG27gmmuuYciQIZxzzjn06dOHF154IeJxR44c4Y9//CNnnXVWk3P9ff0GqgacQ79bRjNp0iTGjBmDy+Vi3rx5THt/GoUlhVRXVzN58mQA8rLd7KmooaCggAnjJ7B001K+OmwTHpjMFk+i8KrqfhFxiYhLVd8RkYfjObmqrhKRoY2KRwJbVXUbgIi8Clyiqg/Shns2RGQ6MB2wb2EmomXLljUpe/DBxt9N6l166aV4PB6qqqro06dPXe0j/Fz/+8lX3PrKP8jNdnPLLbdwyy23AFDtq6ZqdRWuwy4KCwvrOrNzstxU+5zmqn79+uH62MWuw7savG9xcXGbrtOYRItneOwhESkAVgEvi8jjQFvmIBgAfBn2ujRYFpGI9BKRJ4HTReQX0fZT1bnA/cBH2dnZbQjPGMfChQs5dOgQNTU1zJkzhzFjxrBrV8M/6kdqnT/6uVnuBuX7q/cD0L9vf/bt24fP56vb72jwmLKyMroe05WD1QeTfSnGtEk8ieISnI7snwJ/AT4HJrbhPSPNxawRypwNqvtV9UZVPS5Y64jKbrgzyeB2u5k8eTJut7vJENrQ2hK52Y0SxVEnUYwaNYouXbrw+uuvA8EahdfP4cOHWb58OcP/bTgHayxRmMwWz6SA4Ws3Pp+A9ywFwscYDgQS0khrU3iYZFBVFi9ezMGDBznxxBMbbAvVKPIaJYp9R/cBMKTvEO677z5mzJhBt27dyJIBVO4t44c//CEDBw5k9MWj+UvpX1JzIca0UqxJASuJMBkg9ZMCdmvle64FjheRYcBO4Argylaey5ikmThxIm63GxFhyJAhPP/885x8csPVgEPNSDmeyE1PvXJ68fOf/5xevXrxs5/9jM+2bMXvyeX8aT/k5Zdf5tWSV6msrcQb8JLlan6qcmPSIWqiUNWubT25iMzHWUa1UERKgftU9RkRuRVYgTPSaZ6qftrW9wKn6QlYUlRUdH0izmc6rx07dsS1X7XXTxePC5erYYtqqEbRK6cXANdddx3XXXcdT678nIeW/4v/nvl98rI99Nzt3LtxqPoQvfMa3jluTKaIZ9QTIvJt4HhVfVZECoGuqrq9ueNUNeIwWlVdBjQdgtJG1vRkUu1Irb9JsxNARU0F+Vn5ZLkb1hJCnd5Ha/3kZXvokdMDgAPVByxRmIwVzw139wF3AaERR9nAS8kMqrWsM9uk2lGvv8mIJ4DK2kq6ZjetlOdkOb9y1T7nRr1QorAObZPJ4hn1NAm4GDgMEFwOtc3NUskQvIt8bmhaBmOSrdrrp0uERFFRW0G37KbdeDlhNQqAY7ocA0B5jf2fNZkrnkRRq6pKsGNbRPKTG1LrWY3CpJrXHyDb3fTXKHqNwkkUoWG1oX2qaquSGKUxbRNPolggIv8DHCMi1wNvAU8nNyxj2gefX8nyNL01KFqi6OJxfuVqgk1P+VnO964qryUKk7niuY9iloicD1QAI4D/UtW/Jj2yVrDObJNqtf4AHlfkGsWI7BFNyrOCtQ+fvz5RCEJlbWVyAzWmDWLWKETELSKFqvpXVb0T+CUwTEQ2pSa8lrGmJ5Nq0ZqeovVRhBKF1+/couQSF/lZ+Rz2Hm6yrzGZItYKd1cAB4BPRGRlcNbYbTjLoE5LUXzGZLRITU/+gJ8qb1XEpieP29nXGwjUlRVkF1iNwmS0WDWKXwFnqGp/6ud5mqGqk1T1o5RE10I26smkmtcfqKslhIT6GyIlilDtw+sLSxRZBWnvoygvL2fkyJEUFBSwYcOGqGWtPdeOHTvo3bt33YJMe/fuTcp1mOSIlShqVXUrQDAxbFfVP6cmrNaxpieTarV+bdJHEWpGKsgqaLJ/qEbhC9TPjlOQVZD2UU95eXksXbqUKVOmxCxr7bkAxowZU7cgU+P1y+M1duzYVh1n2iZWZ3YfEbkj7HVB+GtVfSx5YRnTPnj9AbIbNT1V+6oByPXkNtm/vo+iYdPTger0LkOflZXV5I93pLLWngvgb3/7G+eccw7nnHMOv/3tbxGJNJG0yUSxahRP4dxYF3o0fm1Mp+eL0PR01H8UgBxPTpP9s1wNO7PBqVG0t87soUOHkpubS0FBAT169ODCCy/kyy+/jLp/v3792Lp1K6tWrWLPnj11066HztW3b18OH67/N3j66aet9pBBoiYKVb0/1iOVQRqTqbx+bZoovDESRbD2EV6j6OLuUlcLaU+WLFlCVVUVZWVl9O3blxkzZkTdt0uXLuTn5yMiTJ48mY8//rjBdp/Px+OPPx7x2JKSkrq+jfXr19c9LykpSej1mOjiueGu3bDObJNqtf4AWe5GTU/+6E1Pof4MX1iiyPHkUOOvSWKUyZWTk8OUKVPYuHFj1H0qKirqnq9evZrG9zrdeeedzJo1i0OHDjU5dvDgwXV9G6eddlrdc1vyOHU6VKKwzmyTapFGPR31BWsU7qY1itCop9qwpqdcT25G1CgmTJjAG2+8wfXXX89zzz0XtayxI0eO8Mc//pGzzjor6rlWrlzJGWecwTnnnMPOnTu58sqGS9AUFRUxduxYZs2alazLM20Q1zTjxpjIfBGanmJ1ZteNemrc9OSvRlXT2sG7bFnTmf8jlYVceumleDweqqqq6NOnDytWrIh53MSJsVdQnjlzJqNHj+a2226Luk9xcXHMc5jkiLXC3R3RtoGNejIGQk1PkWsUsUY9hQ+PDfVl1PhrIvZrZKqFCxdy3nnn4ff7WbRoEWPGjGHjxo187Wtfa9X5TjnlFC666CIeeuihJkvOmvSK1fQUGt1UBNwEDAg+bgROSn5oxmQ2VQ02PTWsBdQ1PUXqzA7uWxt2w12oiaq99lO43W4mT56M2+1mzZo1bTrX/fffz1NPPcXOnTsTFJ1JhGZHPQGFwLdU9T9V9T+BM4CBqQoQQEQuFZGnRGSRiFyQyvc2JpqAgipNbrgLNT1FShQigscl+AINO7OhPsGkwv79+/nss88Sci5VZdGiRRw8eLDNNYHhw4dz+eWXM3v27ITEZhIjnj6KwUBt2OtaYGi8byAi84CLgD2qekpY+TjgcZx1s59W1YeinUNVFwILRaQHMAt4I973NyZZ/MHmI0+EGoXH5SHLlRXpMNwuwRfWmd3F3QVIfo3C5/OxceNGPvroI/bu3cuoUaM44YQTWn2+iRMn4na7ERGGDBnC888/z8knn9zmOO+9915efPHFNp/HJE48ieJF4O8i8mecxYsmAS+04D2eA+aEHyMibuAJ4HygFFgrIotxksaDjY6/VlX3BJ//KnicMWkXUOePfeP+52p/Nbnupv0TIW6X1B0L9X0ZyRr5tGvXLsrKyvB4PHzyySeMHDmSESNG4HY3XZkvXjt27EhYfI3PNWjQIKqr0z8KzNSLZz2K34rIcuCcYNF/qOo/4n0DVV0lIkMbFY8EtqrqNgAReRW4RFUfxKl9NCDOUJCHgOXRJiQUkenAdMDGV5uUCP2xdzXKFDX+GrLd2VGPc4kQNuiprukpdP9FIni9Xj7++GP+8Y9/UFVVxZlnnsnZZ5/NN77xjYS9h+k84h0emwdUqOqzItJbRIap6vY2vO8AIPx+/1LgzBj7zwDOA7qLyHBVfbLxDqo6F5gLUFRUpI23G5NooYFL7kaJwuv3kuWO3OwE4BIa1ChCTU+JqFHU1NSwZcsWcnJy2L59O+eeey7HHnssrgiLKxkTr2YThYjchzPyaQTwLJAFvASMbsP7RhosHvWPu6rOBprt3bIV7kwqhfooGjc9eQPeqP0TAK5GTU+hfb0Bb6tjqa6u5oMPPuDvf/87xx9/PBdffHGTu5+Naa14ahSTgNOBjwBU9SsRaeukgKXAoLDXA4Gv2nhOY1JKozQ9+QK+mInCLVKXZIC62ocv4GtxDD6fj6NHj/KHP/yBESNGcO2119KrV68Wn8eYWOJJFLWqqiKiACKSn4D3XQscLzXyE0UAABdhSURBVCLDgJ3AFcCVsQ8xJrPUNT25GjU9xVWjqH/tEU/dcfE6fPgw7777Lv/4xz+4+uqrmTFjBrm50TvQjWmLeBouF4jI/wDHiMj1wJvA0/G+gYjMB94DRohIqYhcp6o+4FZgBbAJWKCqn7Y8/IZsrieTSqFagStC05PHFf07mEsg0IYaxdtvv82cOXPwer3ccMMN9O3b15KESap4Rj3NEpHzgQqcfop7VfWv8b6Bqk6NUr4MiD6RTCtYH4VJpbqmpxbWKNzS8j6K8vJy3n33XQYPHkyvXr24+eab6drVloUxqRFPZ/bDqnoX8NcIZRlFVZcAS4qKiq5Pdyym4wtVCiL2UcQY9SQi+CMkikg1ivLyclatWsXGjRs5/fTTGTZsGHl5eQmI3pj4xdNHcT7QOCmMj1CWdlajMKnk1+hNT5HWyw5xuwQN76MINlN5/fU1ioqKCvbt20dJSQl5eXnMmDHDEoRJm1izx94E3AwcKyKfhG3qCvwt2YG1htUoTCoFApFHPXn9XjxdYvdRNBj1FNb05PP5eP/993n33XfrVnIzJt1i1SheAZbjTKlxd1h5paqmdyV4YzJAtDuz4xn1FKnp6WiFM8y1sLCQH//4x/Ts2TMJURvTclEThaqWA+XAVAAR6QPkAAUiUqCqGbdgrTU9mVSq66NoNHYwnvsoNCxRHK44zBn7zsA7zMvEiRMZOnRoEqI1pvWaHR4bXId6C7AdWAnswKlpZBwbHmtSqdU1iuANd16vl5UrV/LsM89y2HMYumJJwmSkeO6jeAA4C/hMVYcB3yND+yiMSaWofRRR7qMIHD2K/9Ah8rxHEW8tf/rTn9i9ezfTp09na4+t+LTld2YbkwrxjHryqup+EXGJiEtV3xGRh5MeWStY05NJpWh3ZkdqeipfvJiv7vkVeL38f6HjRfB07YqrRw88Lk+rpvAwJhXiSRSHRKQAWAW8LCJ7gIz8H22jnkwqBWIMjw2/jyJQU8OuB35LzogRdL/4Yp5etZVurgA/OKUP5UuWsPuB35LzY0+bJgU0JpniSRSXANXAT4FpQHdgZjKDMqY9qJ89tmmNIjR/E0DVypUEKiro/dPbKRg9mr9V/o3uuVnceO1IuowYwc7bbmNEaXe8x1uiMJkpnik8DgOISDdgSdIjMqad0CjrUQQ00GD9hyPr1iG5ueSfeWZw//r+jYJvjwa3m5O2+agaG8CYTBTPqKcbRGQ38AmwDvgw+NOYTq3uzmxX43I/rrBfreqPPyHn5JMQj/O9LHwpVFd+Pl2OO47Bu3wE1BKFyUzxjHr6GXCyqg5V1WNVdZiqHpvswFojOJR3bnl5ebpDMZ1A/ZrZDWsUqopLXHXPq7dsIefEk+q2Cw0nBcw58UQG7vJaojAZK55E8TlwJNmBJILdR2FSKXTTXOOmJ7/66xKF/9Ah9MgRsgcOqN9BaDDXU9aQwXSvDKC1tUmP2ZjWiKcz+xfAuyLyAVATKlTVnyQtKmPaAX+wAhB+H0X9qndOovCW7gQga0B9ohAarvub1b8/ALn7DicvWGPaIJ5E8T/A28A/AasbGxMUiNBHEWo+qksUXzkr/IaSAThrbIe3MmUHk0je/qpkhmtMq8WTKHyqekfSIzGmnYk0hUfjROHbVQaAp1+/un0EQcO+c3n69AEg91B1cgM2ppXi6aN4R0Smi0g/EekZeiQ9siAROVFEnhSR14JTnxuTEUL9DOE9FAEaJYqDB8Hlwh3WbyaN+ijcwVlisystUZjMFE+N4srgz1+ElSnQ7MgnEZkHXATsUdVTwsrHAY8DbuBpVX0o2jlUdRNwo4i4gKfiiNeYlAof9eQP+IH6ROE/cBD3MccgYe1Tjfq+cRUU4HNDl8oajMlE8dxwN6wN538OmAO8ECoQETfwBM7KeaXAWhFZjJM0Hmx0/LWqukdELsZZE2NOG2IxJqHCawV1ZYRGQrkB8B88gLtnjwj71RMRjuR7yLFEYTJUrBXuvquqb4vI5EjbVfX15k6uqqtEZGij4pHAVlXdFnyfV4FLVPVBnNpHpPMsBhaLyFKcBZUixTsdmA4wePDg5kIzJmHCawihPgoJNkj5Dh7Ec0zDRCE0XI8C4HC+h5wqGx5rMlOsGsUYnNFOEyNsU6DZRBHFAODLsNelwJnRdhaRscBkoAuwLNp+qjoXmAtQVFQU4bueMcnXuDPbf+AgXRrNZizSsEYBcKTAQ77VKEyGirXC3X3BpzNVdXv4NhFpS3OURCiL+oddVYuB4rhObNOMmxTSCP9tmySKgwcjNz01OvRoQRa9vjya+CCNSYB4Rj39KULZa214z1JgUNjrgcBXbTifMWkV/s3Hr/Wd2er34z90CHePRk1PIhFqFFnkVtrssSYzxeqj+DpwMtC9UT9FN5y1s1trLXB8sFayE7iC+pFVbWLrUZh0C78z219RAap4GieKCMfV5nnoUuNH/X7E7U5BpMbEL1YfxQiczuVjaNhPUQnE9YdYROYDY4FCESkF7lPVZ0TkVmAFzkinear6aStij/R+1vRkUibSqKfwpqdAlXOntatrt2YPrs11FjoKVFU1uOfCmEwQq49iEbBIREap6nutObmqTo1SvowYHdPGtCeRRj01SBQF+U32b5xjvJYoTAaLp49ikoh0E5EsEXlLRPaJyL8nPbJWsNljTbqF35kdShTugoIG+whNayO1uc53Nn+VzfdkMk88ieICVa3AaYYqBU4A7kxqVMa0A5GG6gUC9YnCX1ejaJQoRJqMmPKFahSVlYkP1Jg2iidRhFaJnwDMV9UDSYynTWzhIpMeYZMCNqhRONOGu/Kbr1F4c7MB8FuiMBkonkSxRET+BRQBb4lIbyAjZy+zpieTbnXDY3EROByjj6Jx01Oe0/QUsKYnk4GaTRSqejcwCihSVS/OaneXJDuw1rAahUmlxtNwhJe5XNH7KCINkPXm1HdmG5NpoiYKEfl52MvzVJ2vSqp6GMjI1e2sRmGiKS8vZ+TIkRQUFLBhwwYAdu/ezdlnn82YMWP47ne/S1lZWavOHXHUE8E+CpcLyc1tcky0UU/+SksUJvPEqlFcEfb8F422jUtCLMYkTV5eHkuXLmXKlCl1ZYWFhaxZs4aVK1fyox/9iGeeeabN7xNKFHdecSeBqsO4CgoaTEMOoaanRp3ZWS4CAoEjthyqyTyxbriTKM8jvTYmo2VlZdG7d+8GZe6wO6ArKys5+eSTW3TOiKOeQrPHihCoqmrSPwFRfnlcgjfLhVbbxIAm88SqUWiU55FeZwTrozAttX79es4880zmzJnDt771rQbbXnnlFYqKiigoKKBfv36MHz+eNWvWNDlHgxXuwhbDDlRX48rNa7p/hM5sQfBmCYFqmxjQZJ5YieKbIlIhIpXAqcHnodffSFF8LWJ9FKalTjvtND744AN+85vf8OCD9etmPfbYY9x+++388pe/ZPfu3ZSUlHDzzTezaNGiqOcqKSnhmkuuYduD2/h84+f8cMECpv39A0pKShrs56yZrU3KvNku9GhGDig0nVysKTxsZjLTodXU1NClSxcAunfvTl6e8+2/vLyce++9l2effZbJk+vnwxw5ciTf+c536k/QqFYwePBgnl30LFOXTsXzpIc/nng6gaPVTRbSilijEMHrEQI11vRkMk88a2Yb0yFMmDCB9evXs3nzZm644QZGjBjBXXfdhdvtJicnh3nz5gHw3nvvUV1dzaRJkxocv3v3blasWMH48eM55ZS6JeAbdFaHd1IHqmuQYCIK13jNbAjVKAQ9ak1PJvN0qERhs8eaWJYtazoP5apVq5qU7d+/n8LCQjyehr8ep556KoWFhbz88svMnj2bdR9vZG+lG+/0psuzPP5/H0dvm427a9eIsTTu5HNqFC6rUZiMFM+d2e2G9VGYROjVqxf79u3D5/M12da/f38uu+wyLr30Uu599P9w8tdP4J0VS+u2h/c9BGqqI9coIqyZDViNwmSsDpUojEmEUaNGkZOTw8KFCyNuHzJkCBMmTCCv2zGcMqAH1fu/YuPGjQ3++AuC1tQiOU0TBRGmGQesj8JkLEsUxjTSvXt3Zs6cyS233MLChQs5cuQIXq+X5cuX8/Of109YsHfPLl7+00L+bcz3WbVqFS+99FKDGoVWV+OKWKOgSaYQhFqrUZgM1aH6KIxJlDvuuIO+ffvywAMPMG3aNLp27coZZ5zBPffcA0BFRQUP330bhRf+J/2HHse4b3+LvXv38u6Gdxm1ZxTlu8vpXVuLdGm6anCkNbNFhNosq1GYzNQuEoWI5AOrcJZS/d90x2M6h2nTpjFt2rQm5T6fj6lTp/KjW37GnM05iDh/6Pv06cNg/2D2btjLptWb2PLt0Yx0u/hao+Odacab3kfh87isRmEyUlIThYjMw1nwaI+qnhJWPg54HGfN7KdV9aFmTnUXsCBpgRrTAvPnz+eDDz6gdO9Bdu2q5C+Df8qpN18LgMvtYmu3rdzx3Z8SuPJXeIoGwEs/AHc2uLPAlcXUXUeoClzQ4JyC4HODRuhANybdkl2jeA6YA7wQKhARN/AEcD7OinlrRWQxTtJ4sNHx1wKnAhuBpnV4Y9Lgqquu4qqrruLNjbv58QvrGHfx6Cb7uHwBCvfupfdX2+HE4RDwgt8L/lpGlu9giHwI/n93kgeAgN9licJkpqQmClVdJSJDGxWPBLaq6jYAEXkVuERVH8SpfTQgIucC+cBJwFERWaYaNqGOMWkmEab5k/K9ALiOGw3TX22w7bmnZnPdzv+CbcVw/Pl15/C5Qb3epMdrTEulo49iAPBl2OtS4MxoO6vqPQAicg2wL1qSEJHpwHSgyZQJxiRDrJkx5atPnScDT2+ybWP+SI6SQ+6WN+oThQh+l0AggPr9iNtm0DGZIx2JItIsy83ORquqzzWzfa6IlAETs7Ozz2hlbMa0WPiUHHXDY/dsdrb1HNJkf5+rC5tdx3Hazo/qz4HgD/42qs9nicJklHTcR1EKDAp7PRD4Kg1xGJM0cmin8zMrO+L2La5jYfen4K/vk/C5nYyjXuunMJklHYliLXC8iAwTkWyclfQWJ+LENoWHSaVI03DUqXT6KCQrcqV9h2sQ+I5CpfMdSRD8wd9G9dYmNE5j2iqpiUJE5gPvASNEpFRErlNVH3ArsALYBCxQ1U8T9H62cJFJq7rkcfiQ8zNKE9IuCa62d8jprhNxOrMBsJFPJsMke9TT1Cjly4CmU3m2/f2WAEuKioquT/S5jWkJCeYL8WQ13QbsdvVxXpTXj+uor1HYyCeTWTrUXE9WozCpFKnhKdSZLcGxeeKJXKPYLYXOk/JSZz/qaxR2L4XJNB0qUVgfhUmHiAsRBYKFUZqeaqULZBfAkf3Bcwg+q1GYDNWhEoXVKEy61fVRxGh6qpPXCw7vc/azGoXJYB0qUViNwqRSrEFPos6vVrSmJwDyC+FIMFGI4A8Nj621GoXJLB0qUViNwqRD+BQedTfcufOcbZ4Y40XyCutqFBDWme2zRGEyS4dKFFajMJlCPPnOkyh9FKoEaxTBPoqw+yhseKzJNB0qURiTWjHanoKJIuLw2FDvd6iPItiG5Xc5P9Vvc16azGKJwpg2ijjqyZ3r/Gyuj8JfA7VViAihgVLY5Mgmw3SoRGF9FCZjSHCOp1iT++X2dH4eOYAgBMRqFCYzdahEYX0UJpUijXoKDY8VVxfnZ6zhsTndnJ81lcFEEaxSBPyJDNOYNutQicKYdGjQ9OQPjlgSJ0HEbHrqEkoUFU7TU2jUU8BqFCazWKIwJoHUe9h54nKanmIOjw0liuoK59hQwrFEYTKMJQpjWinimKdaJ1EIwSYnd4xEEdb0BNR1Zqvfmp5MZulQicI6s006NFgzu7ZRjcIVaUHH4I15dU1Pzv/XQGhf68w2GaZDJQrrzDbppqFE4Q6OenI1/RWrSx1dujo/Gzc92fBYk2E6VKIwJpUizvXkPQKAuIJNT5FusgjJygWXB2qcROHHhseazGSJwpg2Cs8FTWoUsRKFiNP8FOyj0NBvow2PNRkm4xOFiIwVkdUi8qSIjE13PMbE5Kt2forTiS2xEgU4zU/BpqfQfRQ2PNZkmmSvmT1PRPaIyIZG5eNEZLOIbBWRu5s5jQJVQA5QmqxYjWkpjTDuSX01zhNX8P6JCH0UDWTlge+oc2wop1jTk8kwSV0zG3gOmAO8ECoQETfwBHA+zh/+tSKyGHADDzY6/lpgtaquFJG+wGPAtCTHbEyLNKgz+GuDZcFE0VyNIisXvE6iqL/hzpqeTGZJaqJQ1VUiMrRR8Uhgq6puAxCRV4FLVPVB4KIYpzsIdElGnMYkTKhGEUofURJFXUd4Vh54neYqf3CuJ6tRmEwjGmuZrkS8gZMo/ldVTwm+ngKMU9UfB19fBZypqrdGOX4y8H3gGOAPqlocZb/pwPTgy1OADZH2a8cKgX3N7tW+2DW1D3ZN7UMirmmIqvZuXJjspqdIIn3FipqtVPV14PXmTqqqc4G5ACKyTlWLWh1hBrJrah/smtoHu6aWSceop1JgUNjrgcBXaYjDGGNMHNKRKNYCx4vIMBHJBq4AFqchDmOMMXFI9vDY+cB7wAgRKRWR61TVB9wKrAA2AQtU9dMEv/XcBJ8vE9g1tQ92Te2DXVMLJL0z2xhjTPuW8XdmG2OMSS9LFMYYY2LK+EQhIoNE5B0R2SQin4rIbcHyX4vIThFZH3xMiHL8T4PHbRCR+SKS05LjM/B6bgtey6cicntYeU8R+auIbAn+7JGK60nyNaXlM4p1TcFtM4JT0HwqIr+LcnzEaWoy8XMKbmvLNbXnzynaNEPt+XOKdk2t/5xUNaMfQD/gW8HnXYHPgJOAXwM/a+bYAcB2IDf4egFwTfB5s8dn4PWEbiTMw7kH5k3g+OC23wF3B5/fDTzcAa4pLZ9RM9d0bjDGLsFtfSIc6wY+B44FsoGPgZMy+HNq6zW1y88pWP4d4FvAhkbl7fJzauaaWv05ZXyNQlXLVPWj4PNKnJFSA1pwCg+QKyIenD9Gab1no43XcyLwvqoeUWf02EpgUnDbJcDzwefPA5cmLurYknhNaRPjmm4CHlLVmuC2PREOr5umRlVrgVdxPh/IzM+prdeUNm28JlR1FXAgwqb2+jnFuqZWy/hEEU6c6UBOBz4IFt0qIp8Eq1pNqoaquhOYBZQAZUC5qr4RtkvM45OtpdeD8837OyLSS0TygAnU37zYV1XLwPmPBvRJavBRJPia4jk+6Rpd0wnAOSLygYisFJF/i3DIAODLsNel1CfOTPyc2npN0D4/p1ja6+fUnFZ9Tu0mUYhIAfAn4HZVrQD+ABwHnIaTBB6NcEwPnG8Gw4D+QL6I/Htwc7PHJ1NrrkdVNwEPA38F/oJT/felKubmJOGa0voZQcRr8gA9gLOAO4EFIk1m/mvRNDWploRraq+fU0ZLwjW1+nNqF4lCRLJw/sFeVmfuJ1R1t6r6VTUAPIVTNW7sPGC7qu5VVS/OnFFnt+D4pGjD9aCqz6jqt1T1OzjVyy3BTbtFpF/w/P2AiNXSZEnGNaXzM4LI14TzTfp1dfwdCOBMxhYu1jQ1Gfc50cZrasefUyzt9XOKqi2fU8YnimDGfAbYpKqPhZX3C9ttEpFniy0BzhKRvOB5vofT3hfv8QnXxutBRPoEfw4GJgPzg5sWA1cHn18NLEps5NEl65rS9RkF3zviNQELge8G9zkBp2O38YydsaapybjPiTZeUzv+nGJpr59TrPO2/nNqrrc73Q/g2zhV3E+A9cHHBOBF4J/B8sVAv+D+/YFlYcffD/wr+I/yIvUjBiIe3w6uZzWwEaeJ5nth5b2At3C+jb8F9GxHn1G0a0rLZ9TMNWUDLwX/P30EfDfKNU3AGa3yOXBPhn9Obb2m9vw5zcdphvHifGO/rgN8TtGuqdWfk03hYYwxJqaMb3oyxhiTXpYojDHGxGSJwhhjTEyWKIwxxsRkicIYY0xMliiMMcbEZInCGGNMTP8PhjiqQkrknxMAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "652769bf689a4518b65c22e6834fd14c",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "HBox(children=(VBox(children=(ToggleButtons(description='Mode:', options=('spectra', 'stemplot'), value='spect…"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "7d2be55eb9694f09ae3ef472ae4b26a1",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Output(layout=Layout(height='350px'))"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "mode= widgets.ToggleButtons(options=['spectra','stemplot'], value='spectra', description='Mode:')\n",
+ "elements=widgets.Text(value=\"C,B,N,O\",description='Elements:')\n",
+ "max_atoms=widgets.IntSlider(min=1, max=3, step=1, value=2, description='Atoms:')\n",
+ "max_charge=widgets.IntSlider(min=1, max=3, step=1, value=2, description='Max Charge:')\n",
+ "window1=widgets.Text(value=\"B[10]O[16]\", description='Target:')\n",
+ "window2=widgets.FloatLogSlider(min=-2, max=-0.5, step=0.1, description='Width')\n",
+ "mass_resolution=widgets.IntSlider(min=500, max=10000, step=1000, value=3000, description='Resolution:')\n",
+ "image_ratio = widgets.FloatSlider(min=0, max=1.5, step=0.1, value=0.5, description='Image Ratio:')\n",
+ "\n",
+ "ui = widgets.HBox([widgets.VBox([mode, elements, max_atoms, max_charge]), widgets.VBox([window1, window2, mass_resolution, image_ratio])])\n",
+ "\n",
+ "out = widgets.interactive_output(plot_function, {'mode': mode, \n",
+ " 'elements': elements, \n",
+ " 'max_atoms': max_atoms,\n",
+ " 'max_charge': max_charge, \n",
+ " 'window1': window1, \n",
+ " 'window2': window2,\n",
+ " 'mass_resolution': mass_resolution,\n",
+ " 'image_ratio' :image_ratio\n",
+ " })\n",
+ "out.layout.height = '350px'\n",
+ "\n",
+ "display(ui, out)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "If you're interested in seeing some more of this, check out the [documentation](https://interferences.readthedocs.io/) or [repository](https://github.com/morganjwilliams/interferences)."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/024_autopew.ipynb b/024_autopew.ipynb
new file mode 100644
index 0000000..193860f
--- /dev/null
+++ b/024_autopew.ipynb
@@ -0,0 +1,90 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Building Open Source Geochemical Research Tools in Python\n",
+ "\n",
+ "Morgan Williams , Louise Schoneveld, Steve Barnes and Jens Klump; \n",
+ "CSIRO Mineral Resources \n",
+ "\n",
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## autopew\n",
+ "\n",
+ "[![Docs](https://readthedocs.org/projects/autopew/badge/?version=develop)](https://autopew.readthedocs.io/)\n",
+ " \n",
+ "> Automating sample targeting for geological microanalysis systems.\n",
+ "\n",
+ "\n",
+ "| | | \n",
+ "|:---:|:---:|\n",
+ "| | |\n",
+ "| A back-scattered electron image of a 25mm diameter round rock sample. The sample contains sulfide as the very bright phases and spinel in mid-grey tones. Three grains were used for reference coordinates and marked on the image. | Analysis locations can be chosen as pixel coordinates on the image. ``autopew`` allows for zoom and pan to allow extremely precise placement. This image was saved directly from autopew. |\n",
+ "\n",
+ "\n",
+ "| |\n",
+ "|:--:|\n",
+ "| |\n",
+ "| The transformation can be visualised to quickly determine if it is reasonable or if more reference points are required. Here reference points used are circled, sample coordiantes are connected to their transformed quivalents, and a convex hull is used to illustrate the outer bounds of the coordinates used. Note the change in coordinate magnitudes and sign from the pixels (left) to stage coordinates (right). |"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[Repository](https://github.com/morganjwilliams/autopew)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/02_examples.ipynb b/02_examples.ipynb
new file mode 100644
index 0000000..3a4dcc6
--- /dev/null
+++ b/02_examples.ipynb
@@ -0,0 +1,115 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Building Open Source Geochemical Research Tools in Python\n",
+ "\n",
+ "Morgan Williams , Louise Schoneveld, Steve Barnes and Jens Klump; \n",
+ "CSIRO Mineral Resources \n",
+ "\n",
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following section lists a set of Python packages developed largely for geochemical research purposes, and demonstrates some of their functionality. Follow the links on the headings to have a look at some examples and interactive visualisations. Note that the figures displayed are actually being generated from code when each page is opened, so it may take a few seconds to open!\n",
+ "\n",
+ "Alternatively, follow the 'docs' links under the respective heading to have a look at the more extensive documentation pages."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## [pyrolite](./021_pyrolite.ipynb)\n",
+ "\n",
+ "> pyrolite is a set of tools for making the most of your geochemical data.\n",
+ "\n",
+ "[![PyPI](https://img.shields.io/pypi/v/pyrolite.svg?style=flat)](https://pypi.python.org/pypi/pyrolite)\n",
+ "[![Docs](https://readthedocs.org/projects/pyrolite/badge/?version=develop)](https://pyrolite.readthedocs.io/)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## [pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb)\n",
+ "\n",
+ "> pyrolite-meltsutil is a pyrolite extension for working with alphaMELTS and its outputs.\n",
+ "\n",
+ "[![PyPI](https://img.shields.io/pypi/v/pyrolite-meltsutil.svg?style=flat)](https://pypi.python.org/pypi/pyrolite-meltsutil)\n",
+ "[![Docs](https://readthedocs.org/projects/pyrolite-meltsutil/badge/?version=develop)](https://pyrolite-meltsutil.readthedocs.io/)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## [interferences](./023_interferences.ipynb)\n",
+ "\n",
+ "> Tools for inorganic mass spectra and interference patterns.\n",
+ "\n",
+ "[![Docs](https://readthedocs.org/projects/interferences/badge/?version=develop)](https://interferences.readthedocs.io/)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## [autopew](./024_autopew.ipynb)\n",
+ "\n",
+ "[![Docs](https://readthedocs.org/projects/autopew/badge/?version=develop)](https://autopew.readthedocs.io/)\n",
+ " \n",
+ "> Automating sample targeting for geological microanalysis systems."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "[**Abstract**](./00_overview.ipynb) | \n",
+ "**Intro**:\n",
+ "[Software in Geochem](./01_introduction.ipynb#Software-in-Geochemistry),\n",
+ "[Development & Tools](./01_introduction.ipynb#Development-Workflow-&-Tools) |\n",
+ "[**Examples**](./02_examples.ipynb):\n",
+ "[pyrolite](./021_pyrolite.ipynb),\n",
+ "[pyrolite-meltsutil](./022_pyrolite-meltsutil.ipynb),\n",
+ "[interferences](./023_interferences.ipynb),\n",
+ "[autopew](./024_autopew.ipynb)"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/README.md b/README.md
index dcfbb94..f863682 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,26 @@
-# gs2020_python4geochem
\ No newline at end of file
+# Building Open Source Geochemical Research Tools in Python
+
+[![License: MIT License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/morganjwilliams/gs2020-python4geochem/blob/master/LICENSE)
+
+This is a Binder-enabled repository to accompany the abstract ["Building Open Source
+Geochemical Research Tools in Python"](
+https://goldschmidt.info/2020/abstracts/abstractView?id=2020003661)
+for [Goldschmidt 2020 Session 06d](
+https://goldschmidt.info/2020/program/programViewThemes#period_472_4728_12337)
+(Information, Innovation, and Knowledge in Microanalytical Mass Spectrometry;
+12:30-13:30 Thursday June 25 AWST/ 18:30-19:30 Wednesday June 24 HST). To view the interactive presentation and demonstrations, use the link below:
+
+| View Presentation with Voilà on Binder |
+|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
+| [![View Presentation](https://img.shields.io/badge/Presentation_via-Binder-F5A252.svg?logo=data:image/png;base64,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)](https://mybinder.org/v2/gh/morganjwilliams/gs2020-python4geochem/develop?urlpath=/voila/render/00_overview.ipynb) |
+
+
+This presentation has been constructed using
+Jupyter notebooks and
+Voilà as an experiment in combining what
+would typically be found in a conference presentation with live-rendered interactive
+elements as a way to demonstrate aspects of software. If you'd like to see the un-rendered notebooks, use the link below:
+
+| View and Run Notebooks on Binder |
+|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
+| [![View Notebooks](https://img.shields.io/badge/Notebooks_via-Binder-F5A252.svg?logo=data:image/png;base64,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)](https://mybinder.org/v2/gh/morganjwilliams/gs2020-python4geochem/develop?filepath=./00_overview.ipynb) |
diff --git a/binder/environment.yml b/binder/environment.yml
new file mode 100644
index 0000000..5e7ca2f
--- /dev/null
+++ b/binder/environment.yml
@@ -0,0 +1,22 @@
+name: gs2020-python4geochem
+
+channels:
+ - conda-forge
+ - defaults
+
+dependencies:
+ - python>=3.7
+ - pip
+ - umap-learn
+ - voila
+ - ipympl
+ - ipyvolume
+ - widgetsnbextension
+ - imagemagick
+ - jupytext
+ - pip:
+ - jupyter_contrib_nbextensions
+ - -e git+git://github.com/morganjwilliams/pyrolite.git@develop#egg=pyrolite[skl]
+ - -e git+git://github.com/morganjwilliams/pyrolite-meltsutil.git@develop#egg=pyrolite-meltsutil
+ - -e git+git://github.com/morganjwilliams/autopew.git@develop#egg=autopew
+ - -e git+git://github.com/morganjwilliams/interferences.git@develop#egg=interferences
diff --git a/binder/postBuild b/binder/postBuild
new file mode 100644
index 0000000..d90854f
--- /dev/null
+++ b/binder/postBuild
@@ -0,0 +1,11 @@
+# the following is required for ipyvolume widgets
+jupyter-nbextension enable widgetsnbextension --py
+
+# make sure we have a place where we can pick up the custom template
+mkdir -p ~/.jupyter/voila/templates/
+
+cp -r ./custom/ ~/.jupyter/voila/templates/
+cp -r ./custom/ ~/.local/share/jupyter/voila/templates
+
+# alias viola to default to using extensions and our custom template for styling
+alias voila="voila --template=custom --enable_nbextensions=True"
diff --git a/custom/nbconvert_templates/voila.tpl b/custom/nbconvert_templates/voila.tpl
new file mode 100644
index 0000000..aeaac4e
--- /dev/null
+++ b/custom/nbconvert_templates/voila.tpl
@@ -0,0 +1,186 @@
+{%- extends 'base.tpl' -%}
+{% from 'mathjax.tpl' import mathjax %}
+
+{# this overrides the default behaviour of directly starting the kernel and executing the notebook #}
+{% block notebook_execute %}
+{% endblock notebook_execute %}
+
+
+{%- block html_head_css -%}
+
+
+{% if resources.theme == 'dark' %}
+
+{% else %}
+
+{% endif %}
+
+{% for css in resources.inlining.css %}
+
+{% endfor %}
+
+
+
+{{ mathjax() }}
+
+
+
+{%- endblock html_head_css -%}
+
+{%- block body -%}
+{%- block body_header -%}
+{% if resources.theme == 'dark' %}
+
+
+ {% else %}
+
+
+ {% endif %}
+
+
+
+
+
+
+ image/svg+xml
+
+ voila
+
+
+
+ spin
+
+
+
+
+
Running {{nb_title}}...
+
+
+
+
+ {%- endblock body_header -%}
+
+ {%- block body_loop -%}
+ {# from this point on, the kernel is started #}
+ {%- with kernel_id = kernel_start() -%}
+
+ {% set cell_count = nb.cells|length %}
+ {#
+ Voila is using Jinja's Template.generate method to not render the whole template in one go.
+ The current implementation of Jinja will however not yield template snippets if we call a blocks' super()
+ Therefore it is important to have the cell loop in the template.
+ The issue for Jinja is: https://github.com/pallets/jinja/issues/1044
+ #}
+ {%- for cell in cell_generator(nb, kernel_id) -%}
+ {% set cellloop = loop %}
+ {%- block any_cell scoped -%}
+
+ {{ super() }}
+ {%- endblock any_cell -%}
+ {%- endfor -%}
+ {% endwith %}
+ {%- endblock body_loop -%}
+
+ {%- block body_footer -%}
+
+
+
+
+
+ {%- endblock body_footer -%}
+ {%- endblock body -%}
\ No newline at end of file
diff --git a/img/Ref_1.png b/img/Ref_1.png
new file mode 100644
index 0000000..78b4ee5
Binary files /dev/null and b/img/Ref_1.png differ
diff --git a/img/rtfd.png b/img/rtfd.png
new file mode 100644
index 0000000..3f1f251
Binary files /dev/null and b/img/rtfd.png differ
diff --git a/img/samplecoords_2.png b/img/samplecoords_2.png
new file mode 100644
index 0000000..3dfcfe1
Binary files /dev/null and b/img/samplecoords_2.png differ
diff --git a/img/sphx_glr_heatscatter_001.png b/img/sphx_glr_heatscatter_001.png
new file mode 100644
index 0000000..96bdd4f
Binary files /dev/null and b/img/sphx_glr_heatscatter_001.png differ
diff --git a/img/sphx_glr_montecarlo_002.png b/img/sphx_glr_montecarlo_002.png
new file mode 100644
index 0000000..6dd3e5e
Binary files /dev/null and b/img/sphx_glr_montecarlo_002.png differ
diff --git a/img/sphx_glr_spider_005.png b/img/sphx_glr_spider_005.png
new file mode 100644
index 0000000..d08716b
Binary files /dev/null and b/img/sphx_glr_spider_005.png differ
diff --git a/img/transpose_vis_2.png b/img/transpose_vis_2.png
new file mode 100644
index 0000000..6db6d8b
Binary files /dev/null and b/img/transpose_vis_2.png differ
diff --git a/util.py b/util.py
new file mode 100644
index 0000000..4348442
--- /dev/null
+++ b/util.py
@@ -0,0 +1,13 @@
+from pathlib import Path
+import ipywidgets as widgets
+
+
+def render_audio_sample(name, label="Listen here:", container=widgets.HBox):
+ return container(
+ [
+ widgets.Label(value=label),
+ widgets.Audio.from_file(
+ Path("audio") / "{}.mp3".format(name), autoplay=False
+ ),
+ ]
+ )