{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", " **Chapter 4: [Spectroscopy](CH4_00-Spectroscopy.ipynb)** \n", "\n", "
\n", "\n", "\n", "\n", "# Introduction to Electron Energy-Loss Spectroscopy\n", "\n", "\n", "[Download](https://raw.githubusercontent.com/gduscher/MSE672-Introduction-to-TEM/main/Spectroscopy/CH4_01-Introduction.ipynb)\n", "\n", "\n", "\n", "[![OpenInColab](https://colab.research.google.com/assets/colab-badge.svg)](\n", " https://colab.research.google.com/github/gduscher/MSE672-Introduction-to-TEM/blob/main//Spectroscopy/CH4_01-Introduction.ipynb)\n", "\n", "part of \n", "\n", " **[MSE672: Introduction to Transmission Electron Microscopy](../_MSE672_Intro_TEM.ipynb)**\n", "\n", "by Gerd Duscher, Spring 2026\n", "\n", "Microscopy Facilities
\n", "Institute of Advanced Materials & Manufacturing
\n", "Materials Science & Engineering
\n", "The University of Tennessee, Knoxville\n", "\n", "Background and methods to analysis and quantification of data acquired with transmission electron microscopes.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries\n", "### Check Installed Packages" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "done\n" ] } ], "source": [ "import sys\n", "import importlib.metadata\n", "def test_package(package_name):\n", " \"\"\"Test if package exists and returns version or -1\"\"\"\n", " try:\n", " version = importlib.metadata.version(package_name)\n", " except importlib.metadata.PackageNotFoundError:\n", " version = '-1'\n", " return version\n", "\n", "if test_package('pyTEMlib') < '0.2026.1.0':\n", " print('installing pyTEMlib')\n", " !{sys.executable} -m pip install --upgrade pyTEMlib -q\n", "\n", "print('done')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import all relevant libraries\n", "\n", "Please note that the EELS_tools package from pyTEMlib is essential." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pyTEM version: 0.2026.1.0\n" ] } ], "source": [ "import sys\n", "%matplotlib widget\n", "if 'google.colab' in sys.modules:\n", " from google.colab import output\n", " from google.colab import drive\n", " output.enable_custom_widget_manager()\n", "\n", "import matplotlib.pylab as plt\n", "import numpy as np\n", " \n", "# Import libraries from the book\n", "import pyTEMlib\n", "\n", "# For archiving reasons it is a good idea to print the version numbers out at this point\n", "print('pyTEM version: ',pyTEMlib.__version__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "\n", "### Parts of an EELS Spectrum:\n", "\n", "\n", "![EELS spectrum](images/EELS.jpg \"Title\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "**No energy transfer**\n", "\n", "The zero--loss peak is caused by electrons of the acceleration energy which apparently did not loose any energy (or only a tiny amount in a quasi--elastic scattering). \n", "\n", "**Little energy transfer: 1-70 eV**\n", "\n", "The valence--loss region shows intraband, interband, and plasmon transitions.\n", "\n", "**High energy transfer: above 70eV**\n", "\n", "The core--loss region contains excitation from the atom core levels into the conduction band appear as saw tooth like edges.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Inelastic Excitation\n", "Energy is transfered to an atom in ground state and after a while (femto seconds) this atoms will change its electron levels and shell occupations and becomes an excited atom.\n", "\n", "\n", "\"inelastic\n", "\n", "\n", "After some time (femto seconds to minutes) this atoms falls back to the ground state and after a little while longer (femto seconds), the atom emits this energy either in form of photons (in the light and X-ray spectrum) or Auger electron. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So we have two obervable processes:\n", "\n", "**energy transfer to the atom in ground state**\n", "- primary energy transfer\n", " - electron energy-loss spectroscopy\n", "\n", "**excited atom emitting energy**\n", "- secondary processes\n", " - electron energy-loss spectroscopy\n", " - Auger spectroscopy\n", " - energy-dispersive X-ray spectroscopy\n", " - Cathodoluminescence\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EELS Spectrometer\n", "\n", "We use a magnetic field to bend the electron beam (here 90$^{\\rm o}$) which acts like a prism for light and separates the electrons by spead (kinetic energy). The faster electrons will get bent less. \n", "\n", "\"EELS\n", "\n", "With such a prism for electrons we can determine the energy lost in the sample. \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EELS and STEM\n", "\n", "The advantage of EELS in STEM mode is that we get a HAADF signal and the bright field signal is analysed with EELS spectroscopy. So we get spatially resolved image and chemical information simultaneously.\n", "\n", "\"EELS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load an EELS Spectrum\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# ---- Input ------\n", "load_example = True\n", "# -----------------\n", "if not load_example:\n", " if 'google.colab' in sys.modules:\n", " drive.mount(\"/content/drive\")\n", "\n", " fileWidget = pyTEMlib.file_tools.FileWidget()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "frames: Number of frames\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "50bcb71dafef42d08fdea0b550571218", "version_major": 2, "version_minor": 0 }, "image/png": "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1av9jrt69Wrv9nPBE6IKTp7YtWuXz/MKFSqoXr16+vbbb709lgX9+OOP+vPPP3XddddJyrvmzTOJ5JZbblGpUqW8PxMmTJB0YjKIJ/Ru377d77jbtm1TmTJlTvuzTZo0SZGRkfr666912223qUWLFqcM/bNnz9aIESPUvHlzTZ06VZ999lmR7xEREaGBAwdqxYoV2rNnjz7++GNt3bpV7du3P+n35NG8eXPl5OTot99+O+3PBuDcIQACOG2FBRZJOnTokLZu3aqKFSv6bYuNjVWDBg1UoUIFrVixQt9//70efvhh7/ZKlSqpefPmGj9+vM/klcWLF2v9+vWFrrN3pi655BJJ0qpVq3zaPZMh8nvmmWe0d+/eQtfwO3z4sB566CEVK1ZMjzzyiKS8Ra9///13paamau7cuX4/9erV04cffqicnBylpKQoJibGb3Hk33//XXPmzFGbNm1O+7NZlqWIiAiFh4d7244cOaKPPvrIb9/t27frrrvu0rXXXqtFixbpxhtvVJ8+fYrs8cyvZMmSuvXWW5Wamqo9e/Zo06ZNp9x/7ty5CgsLU/Xq1QN+DwDnHkPAQIhYs2aNcnJy/NovvfRS71Dbvn37tHjxYr99XC6XGjdu7NM2Z86cQv8x79ixo1588UUtXLhQt99+uxo1aqSYmBhlZGTo7bff1u7du/Xvf//bu/+8efO0dOlSJScnyxijJUuWaPjw4br++uv14IMP+hx7+PDhuu6669S1a1c98MAD2rlzp5566inVr19fvXr1OpOvpVDly5dX27ZtlZaWplKlSqlq1ar6/vvv9fnnn/vt261bN61YsUKvvPKKNm3apN69e6tcuXJav369Xn/9df3666+aOHGiN9CMHj1aERERevrppwsNwvfdd58eeughTZ8+XV26dNFzzz2np59+Wt27d1e3bt20e/duDR06VNHR0RoyZMhpf7ZOnTrptdde0x133KF7771Xu3fv1iuvvOI3Ezs3N1fdunWTZVmaOHGiwsPDNW7cODVq1Ei33367fvjhB++QekGdO3dW/fr11axZMyUmJmrz5s164403VLVqVdWoUUOSdO+996pEiRJq3ry5ypUrp127dumTTz7R5MmT9fjjjzP8CwRbkCehADhLp5oFLMmMGjXKGHPqWcCVKlUK+HgZGRlm8eLFJjU11TRs2NAkJCSY8PBwk5iYaK6//nozY8YMn/oWLlxorrjiClOiRAnjcrlM/fr1zSuvvGKOHTtW6Of59ttvzZVXXmmio6NNQkKC6d69u/nzzz8L/cwFZyoPGTLESDJ//fWXT3uPHj1M8eLFfdq2b99ubr31VpOQkGDi4+PNXXfdZZYtW+YzCzi/GTNmmI4dO5rSpUubyMhIU6lSJXP33XebtWvXevf566+/TFRUlLnppptOcrZOzPzt3Lmzt+2DDz4wycnJJioqysTHx5suXbr4HPdknyH/Z85vzJgxplatWsblcpnq1aubtLQ0M3r0aO/5M8aYZ555xoSFhZnvv//e57WLFi0yERER5uGHH/a2FZwF/Oqrr5oWLVqYMmXKmKioKFOlShXTp08fs2nTJp8arrnmGlOmTBkTERFhSpYsaa699lrz0UcfnfS7AXDhWMac5gJgAAAAsDWuAQQAAHAYAiAAAIDDEAABAAAchgAIAADgMARAAAAAhyEAniPz589X586dVbFiRVmWpS+++OK0jzFr1ixdeeWViouLU2Jiov7+97+f1oKsAAAAgSAAniOHDx9Ww4YN9fbbb5/R63/77Td16dJFrVu31sqVKzVr1izt2rXrnN79AAAAQJJYB/A8sCxLU6dO1U033eRtO3bsmJ599llNmDBB+/btU/369TV8+HC1atVKkvTpp5+qW7duysrKUlhYXi7/6quv1KVLF2VlZSkyMjIInwQAAIQiegAvkF69emnhwoWaNGmSVq1apa5du+r666/Xhg0bJEnNmjVTeHi4xo4dq9zcXO3fv18fffSR2rVrR/gDAADnFD2A50HBHsBff/1VNWrU0O+//+5zb9C2bduqefPmeumllyTlXUfYtWtX7d69W7m5uUpJSdGMGTNUsmTJIHwKAAAQqugBvABWrFghY4xq1qyp2NhY7096erp+/fVXSdKOHTt0zz33qEePHlq6dKnS09MVFRWlW2+9VWR0AABwLkUEuwAncLvdCg8P1/LlyxUeHu6zLTY2VpL0zjvvqESJEnr55Ze928aPH6+kpCT95z//0ZVXXnlBawYAAKGLAHgBNG7cWLm5udq5c6euueaaQvfJzMz0C4ee5263+7zXCAAAnIMh4HPk0KFDWrlypVauXClJysjI0MqVK7VlyxbVrFlTd955p7p3767PP/9cGRkZWrp0qYYPH64ZM2ZIkjp16qSlS5fq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9u/frxIlSlyoMoPiUFaO6g+Z5X3+ab8UNbskIYgVAQBwZg4cOKD4+HhH/Pt9Mo4eAi7IGOMT8ApyuVxyuVwXsKKLh99C0EGqAwAAnD3HBsCnn35aHTp0UFJSkg4ePKhJkyZp3rx5mjlzZrBLuygVDHz0GwMAYF+ODYB//vmn7r77bm3fvl3x8fFKTk7WzJkzdd111wW7tIuS3yQQEiAAALbl2AA4evToYJdgL8wCBgAgZDh6FjACxyxgAABCBwEQAfFfB5AECACAXdluCDgrK0tLlizRpk2blJmZqcTERDVu3FjVqlULdmkhjUkgAACEDtsEwEWLFumtt97SF198oWPHjqlkyZKKiYnRnj17lJWVperVq+vee+9Vv379FBcXF+xyQ47fMjAEQAAAbMsWQ8BdunTRrbfeqkqVKmnWrFk6ePCgdu/erd9//12ZmZnasGGDnn32WX3//feqWbOmZs+eHeySQ45fDyBDwAAA2JYtegDbtWunTz75RFFRUYVur169uqpXr64ePXpo7dq12rZt2wWuMPS56QEEACBk2CIApqamBrxvvXr1VK9evfNYjUOxDAwAACHDFkPA+W3dulW///679/mSJUs0YMAAjRw5MohVhT7/SSBEQAAA7Mp2AfCOO+7Q3LlzJUk7duzQddddpyVLlujpp5/W888/H+TqQpf/MjAAAMCubBcA16xZo+bNm0uSpkyZovr162vRokWaOHGixo0bF9ziQpj/QtBEQAAA7Mp2ATA7O1sul0uS9N133+nGG2+UJNWuXVvbt28PZmkhzf9ewMGpAwAAnD3bBcB69erpvffe04IFCzR79mxdf/31kqRt27apdOnSQa4udLEQNAAAocN2AXD48OF6//331apVK3Xr1k0NGzaUJH355ZfeoWGce34LQQepDgAAcPZssQxMfq1atdKuXbt04MABlSpVytt+7733qnjx4kGsLLT5DwETAQEAsCvb9QC2bt1aBw8e9Al/kpSQkKDbb789SFWFPmYBAwAQOmwXAOfNm6djx475tR89elQLFiwIQkXOwCxgAABCh22GgFetWuV9vG7dOu3YscP7PDc3VzNnzlSlSpWCUZojMAsYAIDQYZsA2KhRI1mWJcuy1Lp1a7/tMTExeuutt4JQmTP4zQIOShUAAOBcsE0AzMjIkDFG1atX15IlS5SYmOjdFhUVpbJl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RE9P/+kE0JP3dvuPAuTf1ftehR6rqNee4j3y7Zj/M56q7sL2K/id+Lb5HOkUr83/fif/vPk/h0738/rs5/8eCvi78j3GyT5HwJ83wO+0YE0nfe25+LyFvN+p6szfmFy5pF/NOHuODYBlypRReHi4X2/fzp07/XoFPVwul1wuV6HbzqXGVUqpcZVS5/19LoSwMEuusHC5IiSd/68OOGvhYZbCw4r+zw8A2JljZwFHRUWpadOmmj17tk/77Nmz1aJFiyBVBQAAcP45tgdQkgYOHKi7775bzZo1U0pKikaOHKktW7aoX79+wS4NAADgvHF0ALz99tu1e/duPf/889q+fbvq16+vGTNmqGrVqsEuDQAA4Lxx7DIw5wLTyAEAsB/+/XbwNYAAAABORQAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAAAMBhCIAAAAAO4+hbwZ0tz01UDhw4EORKAABAoDz/bjv5ZmgEwLNw8OBBSVJSUlKQKwEAAKfr4MGDio+PD3YZQcG9gM+C2+3Wtm3bFBcXJ8uygl3OBXPgwAElJSVp69atjr2Hot1wzuyJ82Y/nDN7MMbo4MGDqlixosLCnHk1HD2AZyEsLEyVK1cOdhlBU6JECf6CsxnOmT1x3uyHc3bxc2rPn4czYy8AAICDEQABAAAchgCI0+ZyuTRkyBC5XK5gl4IAcc7sifNmP5wz2AWTQAAAAByGHkAAAACHIQACAAA4DAEQAADAYQiAAAAADkMAxGl59913Va1aNUVHR6tp06ZasGBBsEtCPvPnz1fnzp1VsWJFWZalL774wme7MUb//Oc/VbFiRcXExKhVq1Zau3ZtcIqFJCktLU2XX3654uLiVLZsWd10001av369zz6ct4vPiBEjlJyc7F3wOSUlRd988413O+cMFzsCIAI2efJkDRgwQM8884x++uknXXPNNerQoYO2bNkS7NJw3OHDh9WwYUO9/fbbhW5/+eWX9dprr+ntt9/W0qVLVb58eV133XXe+1rjwktPT1dqaqoWL16s2bNnKycnR+3atdPhw4e9+3DeLj6VK1fWv/71Ly1btkzLli1T69at1aVLF2/I45zhomeAADVv3tz069fPp6127drmqaeeClJFOBVJZurUqd7nbrfblC9f3vzrX//yth09etTEx8eb9957LwgVojA7d+40kkx6eroxhvNmJ6VKlTIffPAB5wy2QA8gAnLs2DEtX75c7dq182lv166dFi1aFKSqcDoyMjK0Y8cOn3Pocrl07bXXcg4vIvv375ckJSQkSOK82UFubq4mTZqkw4cPKyUlhXMGWyAAIiC7du1Sbm6uypUr59Nerlw57dixI0hV4XR4zhPn8OJljNHAgQN19dVXq379+pI4bxez1atXKzY2Vi6XS/369dPUqVNVt25dzhlsISLYBcBeLMvyeW6M8WvDxY1zePF68MEHtWrVKv3www9+2zhvF59atWpp5cqV2rdvnz777DP16NFD6enp3u2cM1zM6AFEQMqUKaPw8HC//73u3LnT73+5uDiVL19ekjiHF6n+/fvryy+/1Ny5c1W5cmVvO+ft4hUVFaXLLrtMzZo1U1pamho2bKg333yTcwZbIAAiIFFRUWratKlmz57t0z579my1aNEiSFXhdFSrVk3ly5f3OYfHjh1Teno65zCIjDF68MEH9fnnn2vOnDmqVq2az3bOm30YY5SVlcU5gy0wBIyADRw4UHfffbeaNWumlJQUjRw5Ulu2bFG/fv2CXRqOO3TokDZu3Oh9npGRoZUrVyohIUFVqlTRgAED9NJLL6lGjRqqUaOGXnrpJRUrVkx33HFHEKt2ttTUVE2cOFHTpk1TXFyct9coPj5eMTExsiyL83YRevrpp9WhQwclJSXp4MGDmjRpkubNm6eZM2dyzmAPQZyBDBt65513TNWqVU1UVJRp0qSJd6kKXBzmzp1rJPn99OjRwxiTt6TIkCFDTPny5Y3L5TItW7Y0q1evDm7RDlfY+ZJkxo4d692H83bx6d27t/fvwsTERNOmTRvz7bfferdzznCxs4wxJkjZEwAAAEHANYAAAAAOQwAEAABwGAIgAACAwxAAAQAAHIYACAAA4DAEQAAAAIchAAIAADgMARAACmjVqpUGDBgQtPffvXu3ypYtq02bNp3T465evVqVK1fW4cOHz+lxAdgPARAALjJpaWnq3LmzLrnkkoD279y5s9q2bVvoth9//FGWZWnFihVq0KCBmjdvrtdff/0cVgvAjgiAAGwpOzs72CWcF0eOHNHo0aN1zz33BPyaPn36aM6cOdq8ebPftjFjxqhRo0Zq0qSJJKlXr14aMWKEcnNzz1nNAOyHAAjgrBhj9PLLL6t69eqKiYlRw4YN9emnn3q3z5s3T5Zl6fvvv1ezZs1UrFgxtWjRQuvXr/c5zldffaWmTZsqOjpa1atX19ChQ5WTk+PdblmW3nvvPXXp0kXFixfXsGHDJEnDhg1T2bJlFRcXp3vuuUdPPfWUGjVqJEmaP3++IiMjtWPHDp/3evTRR9WyZcuAP+PevXvVvXt3lSpVSsWKFVOHDh20YcMG7/bNmzerc+fOKlWqlIoXL6569eppxowZ3tfeeeedSkxMVExMjGrUqKGxY8ee9L2++eYbRUREKCUlxad93bp16tixo2JjY1WuXDndfffd2rVrlyTphhtuUNmyZTVu3Dif12RmZmry5Mnq06ePt619+/bavXu30tPTA/78AEIPARDAWXn22Wc1duxYjRgxQmvXrtUjjzyiu+66yy9gPPPMM3r11Ve1bNkyRUREqHfv3t5ts2bN0l133aWHHnpI69at0/vvv69x48bpxRdf9DnGkCFD1KVLF61evVq9e/fWhAkT9OKLL2r48OFavny5qlSpohEjRnj3b9mypapXr66PPvrI25aTk6Px48erV69eAX/Gnj17atmyZfryyy/1448/yhijjh07enshU1NTlZWVpfnz52v16tUaPny4YmNjJUnPPfec1q1bp2+++UY///yzRowYoTJlypz0vebPn69mzZr5tG3fvl3XXnutGjVqpGXLlmnmzJn6888/ddttt0mSIiIi1L17d40bN075b+/+ySef6NixY7rzzju9bVFRUWrYsKEWLFgQ8OcHEIIMAJyhQ4cOmejoaLNo0SKf9j59+phu3boZY4yZO3eukWS+++477/bp06cbSebIkSPGGGOuueYa89JLL/kc46OPPjIVKlTwPpdkBgwY4LPPFVdcYVJTU33arrrqKtOwYUPv8+HDh5s6dep4n3/xxRcmNjbWHDp06KSf69prrzUPP/ywMcaYX375xUgyCxcu9G7ftWuXiYmJMVOmTDHGGNOgQQPzz3/+s9Bjde7c2fTq1euk71VQly5dTO/evX3annvuOdOuXTuftq1btxpJZv369cYYY37++WcjycyZM8e7T8uWLb3nIb+bb77Z9OzZM+CaAIQeegABnLF169bp6NGjuu666xQbG+v9+fDDD/Xrr7/67JucnOx9XKFCBUnSzp07JUnLly/X888/73OMvn37avv27crMzPS+rmDP2Pr169W8eXOftoLPe/bsqY0bN2rx4sWS8q6Ju+2221S8eHEtWLDA5z0nTJjg9xl//vlnRURE6IorrvC2lS5dWrVq1dLPP/8sSXrooYc0bNgwXXXVVRoyZIhWrVrl3ff+++/XpEmT1KhRIz3xxBNatGjRKb/TI0eOKDo62qdt+fLlmjt3rk+ttWvXliTv91y7dm21aNFCY8aM8bYvWLDAp6fVIyYmxud7BeA8EcEuAIB9ud1uSdL06dNVqVIln20ul8vneWRkpPexZVk+r3e73Ro6dKhuueUWv/fIH4aKFy/ut91zLA+TbwhUksqWLavOnTtr7Nixql69umbMmKF58+ZJyguUK1eu9O5brlw5v+MXPF7+ds9733PPPWrfvr2mT5+ub7/9VmlpaXr11VfVv39/dejQQZs3b9b06dP13XffqU2bNkpNTdUrr7xS6HHLlCmjvXv3+rS53W517txZw4cP99vfE6alvMkgDz74oN555x2NHTtWVatWVZs2bfxes2fPHl166aWFvj8AZ6AHEMAZq1u3rlwul7Zs2aLLLrvM5ycpKSng4zRp0kTr16/3O8Zll12msLCT/zVVq1YtLVmyxKdt2bJlfvvdc889mjRpkt5//31deumluuqqqyTl9YTlf6+4uLhCP2NOTo7+85//eNt2796tX375RXXq1PG2JSUlqV+/fvr888/16KOPatSoUd5tiYmJ6tmzp8aPH6833nhDI0eOPOlnaty4sdatW+f3/axdu1aXXHKJ3/eTPxTfdtttCg8P18SJE/V///d/6tWrl19AlqQ1a9aocePGJ60BQOijBxDAGYuLi9Njjz2mRx55RG63W1dffbUOHDigRYsWKTY2Vj169AjoOIMHD9YNN9ygpKQkde3aVWFhYVq1apVWr17tne1bmP79+6tv375q1qyZWrRoocmTJ2vVqlWqXr26z37t27dXfHy8hg0bpueff/60PmONGjXUpUsX9e3bV++//77i4uL01FNPqVKlSurSpYskacCAAerQoYNq1qypvXv3as6cOd5wOHjwYDVt2lT16tVTVlaWvv76a5/gWFD79u01aNAg7d27V6VKlZKUN8lk1KhR6tatmx5//HGVKVNGGzdu1KRJkzRq1CiFh4dLkmJjY3X77bfr6aef1v79+9WzZ0+/42/atEl//PHHSdcNBOAM9AACOCsvvPCCBg8erLS0NNWpU0ft27fXV199pWrVqgV8jPbt2+vrr7/W7Nmzdfnll+vKK6/Ua6+9pqpVq57ydXfeeacGDRqkxx57TE2aNFFGRoZ69uzpdw1dWFiYevbsqdzcXHXv3v20P+PYsWPVtGlT3XDDDUpJSZExRjNmzPAOa+fm5io1NVV16tTR9ddfr1q1aundd9+VlDfrdtCgQUpOTlbLli0VHh6uSZMmnfS9GjRooGbNmmnKlCnetooVK2rhwoXKzc1V+/btVb9+fT388MOKj4/36yHt06eP9u7dq7Zt26pKlSp+x//444/Vrl27Ir9bAKHNMie7wAUAbOi6665T+fLlfZZ+kaS+ffvqzz//1JdffhmkygI3Y8YMPfbYY1qzZs0ph8BPV1ZWlmrUqKGPP/7YOwwOwJkYAgZgW5mZmXrvvffUvn17hYeH6+OPP9Z3332n2bNne/fZv3+/li5dqgkTJmjatGlBrDZwHTt21IYNG/THH3+c1rWURdm8ebOeeeYZwh8AegAB2NeRI0fUuXNnrVixQllZWapVq5aeffZZn9nErVq10pIlS3TfffdxD1wAOI4ACAAA4DBMAgEAAHAYAiAAAIDDEAABAAAchgAIAADgMARAAAAAhyEAAgAAOAwBEAAAwGEIgAAAAA5DAAQAAHCY/w+g4b6RkNaovQAAAABJRU5ErkJggg==", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# ---- Input ------\n", "load_example = True\n", "file_name = 'AL-DFoffset0.00.dm3'\n", "# -----------------\n", "if load_example:\n", " if 'google.colab' in sys.modules:\n", " if not os.path.exists('./'+file_name):\n", " !wget https://github.com/gduscher/MSE672-Introduction-to-TEM/raw/main/example_data/AL-DFoffset0.00.dm3\n", " else:\n", " datasets = pyTEMlib.file_tools.open_file('../example_data/'+file_name)\n", " eels_dataset = datasets['Channel_000']\n", " \n", "else:\n", " datasets = fileWidget.datasets\n", " eels_dataset = fileWidget.selected_dataset\n", " \n", "view = eels_dataset.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Important Parameters in an EELS spectrum\n", "\n", "A lot of information is stored in the ``original_metadata``. \n", "\n", "We will learn in this ``Spectroscopy`` section of the lecture which ones are absolutely necessary. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ImageData :\n", "\tCalibrations :\n", "\t\tBrightness :\n", "\t\t\tOrigin : 0.0\n", "\t\t\tScale : 1.0\n", "\t\t\tUnits : Counts\n", "\t\tDimension :\n", "\t\t\t0 :\n", "\t\t\t\tOrigin : 179.33062744140625\n", "\t\t\t\tScale : 0.0201262179762125\n", "\t\t\t\tUnits : eV\n", "\t\tDisplayCalibratedUnits : 1\n", "\tData : read\n", "\tDataType : 2\n", "\tDimensions :\n", "\t\t0 : 2048\n", "\tPixelDepth : 4\n", "ImageTags :\n", "\tAcquisition :\n", "\t\tDevice :\n", "\t\t\tActive Size (pixels) : [2048, 2048]\n", "\t\t\tCamera Number : 0\n", "\t\t\tCCD :\n", "\t\t\t\tPixel Size (um) : [14.0, 14.0]\n", "\t\t\tConfiguration :\n", "\t\t\t\tTranspose :\n", "\t\t\t\t\tDiagonal Flip : 0\n", "\t\t\t\t\tHorizontal Flip : 1\n", "\t\t\t\t\tVertical Flip : 0\n", "\t\t\tName : US1000XP 1\n", "\t\t\tSource : US1000XP 1\n", "\t\tFrame :\n", "\t\t\tArea :\n", "\t\t\t\tTransform :\n", "\t\t\t\t\tClass Name : cm_acquisitiontransform_list\n", "\t\t\t\t\tTransform List :\n", "\t\t\t\t\t\t0 :\n", "\t\t\t\t\t\t\tBinning : [1, 1]\n", "\t\t\t\t\t\t\tClass Name : cm_acquisitiontransform\n", "\t\t\t\t\t\t\tSub Area Adjust : [0, 0, 0, 0]\n", "\t\t\t\t\t\t\tTranspose :\n", "\t\t\t\t\t\t\t\tDiagonal Flip : 0\n", "\t\t\t\t\t\t\t\tHorizontal Flip : 1\n", "\t\t\t\t\t\t\t\tVertical Flip : 0\n", "\t\t\tCCD :\n", "\t\t\t\tPixel Size (um) : [14.0, 14.0]\n", "\t\t\tIntensity :\n", "\t\t\t\tTransform :\n", "\t\t\t\t\tClass Name : cm_valuetransform_list\n", "\t\t\t\t\tTransform List :\n", "\t\t\t\t\t\t0 :\n", "\t\t\t\t\t\t\tClass Name : cm_valuetransform_affine\n", "\t\t\t\t\t\t\tOffset : 250.0\n", "\t\t\t\t\t\t\tScale : 1.0\n", "\t\t\t\t\t\t1 :\n", "\t\t\t\t\t\t\tADC Max : 65535.0\n", "\t\t\t\t\t\t\tADC Min : 0.0\n", "\t\t\t\t\t\t\tClass Name : cm_valuetransform_adc\n", "\t\tParameters :\n", "\t\t\tAcquisition Write Flags : 4294967295\n", "\t\t\tBase Detector :\n", "\t\t\t\tClass Name : cm_namedcameradetectorparameterset\n", "\t\t\t\tName : default\n", "\t\t\tDetector :\n", "\t\t\t\tcontinuous : 1\n", "\t\t\t\texposure (s) : 0.1\n", "\t\t\t\thbin : 1\n", "\t\t\t\theight : 2048\n", "\t\t\t\tleft : 0\n", "\t\t\t\ttop : 0\n", "\t\t\t\tvbin : 1\n", "\t\t\t\twidth : 2048\n", "\t\t\tEnvironment :\n", "\t\t\t\tMode Name : Spectroscopy\n", "\t\t\tHigh Level :\n", "\t\t\t\tAcquisition Buffer Size : 0\n", "\t\t\t\tAntiblooming : 0\n", "\t\t\t\tBinning : [1, 1]\n", "\t\t\t\tCCD Read Area : [0, 0, 2048, 2048]\n", "\t\t\t\tCCD Read Ports : 1\n", "\t\t\t\tChoose Number Of Frame Shutters Automatically : 1\n", "\t\t\t\tClass Name : cm_camera_highlevelparameters\n", "\t\t\t\tContinuous Readout : 1\n", "\t\t\t\tCorrections : 817\n", "\t\t\t\tCorrections Mask : 817\n", "\t\t\t\tExposure (s) : 0.1\n", "\t\t\t\tNumber Of Frame Shutters : 1\n", "\t\t\t\tProcessing : Gain Normalized\n", "\t\t\t\tQuality Level : 1\n", "\t\t\t\tRead Frame Style : 0\n", "\t\t\t\tRead Mode : 0\n", "\t\t\t\tSecondary Shutter Post Exposure Compensation (s) : 0.0\n", "\t\t\t\tSecondary Shutter Pre Exposure Compensation (s) : 0.0\n", "\t\t\t\tShutter :\n", "\t\t\t\t\tPrimary Shutter States : 0\n", "\t\t\t\t\tPrimary Shutter States Mask : 0\n", "\t\t\t\t\tSecondary Shutter States : 0\n", "\t\t\t\t\tSecondary Shutter States Mask : 0\n", "\t\t\t\t\tShutter Exposure : 0\n", "\t\t\t\t\tShutter Index : 0\n", "\t\t\t\tShutter Post Exposure Compensation (s) : 0.0\n", "\t\t\t\tShutter Pre Exposure Compensation (s) : 0.0\n", "\t\t\t\tTransform :\n", "\t\t\t\t\tDiagonal Flip : 0\n", "\t\t\t\t\tHorizontal Flip : 0\n", "\t\t\t\t\tVertical Flip : 0\n", "\t\t\tObjects :\n", "\t\t\t\t0 :\n", "\t\t\t\t\tClass Name : cm_imgproc_finalcombine\n", "\t\t\t\t\tFrame Combine Style : Copy\n", "\t\t\t\t\tParameter 1 : 1.0\n", "\t\t\tParameter Set Name : Acquire\n", "\t\t\tParameter Set Tag Path : Spectroscopy:Acquire:Acquire\n", "\t\t\tVersion : 33947648\n", "\tDataBar :\n", "\t\tCustom elements :\n", "\tEELS :\n", "\t\tAcquisition :\n", "\t\t\tContinuous mode : 0\n", "\t\t\tDate : 10/1/2018\n", "\t\t\tEnd time : 11:12:22 AM\n", "\t\t\tExposure (s) : 0.1\n", "\t\t\tIntegration time (s) : 10.0\n", "\t\t\tNumber of frames : 100\n", "\t\t\tSaturation fraction : 0.7989057898521423\n", "\t\t\tStart time : 11:10:22 AM\n", "\t\tExperimental Conditions :\n", "\t\t\tCollection semi-angle (mrad) : 100.0\n", "\t\t\tConvergence semi-angle (mrad) : 0.0\n", "\tMeta Data :\n", "\t\tAcquisition Mode : Parallel dispersive\n", "\t\tFormat : Spectrum\n", "\t\tSignal : EELS\n", "\tMicroscope Info :\n", "\t\tCs(mm) : 2.2\n", "\t\tEmission Current (A) : 230.0\n", "\t\tFormatted Indicated Mag : 100kx\n", "\t\tFormatted Voltage : 200.0kV\n", "\t\tIllumination Mode : TEM\n", "\t\tImaging Mode : Image Mag\n", "\t\tIndicated Magnification : 100000.0\n", "\t\tItems :\n", "\t\t\t0 :\n", "\t\t\t\tData Type : 20\n", "\t\t\t\tLabel : Specimen\n", "\t\t\t\tTag path : Microscope Info:Specimen\n", "\t\t\t\tValue : Fe-9Cr(0.3Y)-3E10(17)-475C\n", "\t\t\t1 :\n", "\t\t\t\tData Type : 20\n", "\t\t\t\tLabel : Operator\n", "\t\t\t\tTag path : Microscope Info:Operator\n", "\t\t\t\tValue : Tengfei Yang\n", "\t\t\t2 :\n", "\t\t\t\tData Type : 20\n", "\t\t\t\tLabel : Microscope\n", "\t\t\t\tTag path : Microscope Info:Microscope\n", "\t\t\t\tValue : Libra 200 MC\n", "\t\tMicroscope : Libra 200 MC\n", "\t\tName : Libra COM\n", "\t\tOperation Mode : IMAGING\n", "\t\tOperator : Tengfei Yang\n", "\t\tProbe Current (nA) : 0.0\n", "\t\tProbe Size (nm) : 0.0\n", "\t\tSpecimen : Fe-9Cr(0.3Y)-3E10(17)-475C\n", "\t\tSTEM Camera Length : 479.99998927116394\n", "\t\tVoltage : 199990.28125\n", "Name : EELS90muOAonaxis3\n", "UniqueID :\n", "\t0 : 182066807\n", "\t1 : 2055036577\n", "\t2 : 773457963\n", "\t3 : 990266004\n", "DM :\n", "\tdm_version : 3\n", "\tfile_size : 322288\n", "\tfull_file_name : ../example_data/AL-DFoffset0.00.dm3\n", "original_filename : ../example_data/AL-DFoffset0.00.dm3\n", "ApplicationBounds : [0, 0, 1465, 2236]\n", "DocumentObjectList :\n", "\t0 :\n", "\t\tAnnotationGroupList :\n", "\t\tAnnotationType : 20\n", "\t\tBackgroundColor : [-1, -1, -1]\n", "\t\tBackgroundMode : 2\n", "\t\tFillMode : 2\n", "\t\tForegroundColor : [-1, 0, -32640]\n", "\t\tHasBackground : 0\n", "\t\tImageDisplayInfo :\n", "\t\t\tBackgroundOn : 1\n", "\t\t\tCalibrationSliceId :\n", "\t\t\t\t0 : 0\n", "\t\t\tCaptionOn : 1\n", "\t\t\tCaptionSize : 10\n", "\t\t\tCursorOn : 0\n", "\t\t\tCursorPosition : 0.0\n", "\t\t\tDimensionLabels :\n", "\t\t\t\t0 : \n", "\t\t\tFrameOn : 1\n", "\t\t\tGridOn : 1\n", "\t\t\tGroupId : 0\n", "\t\t\tGroupList :\n", "\t\t\t\t0 :\n", "\t\t\t\t\tDoAutoSurveyHigh : 0\n", "\t\t\t\t\tDoAutoSurveyLow : 0\n", "\t\t\t\t\tGroupToDisplay :\n", "\t\t\t\t\t\tOffset : [0.159382164478302, 4.566257121041417e-05]\n", "\t\t\t\t\t\tScale : [0.00034526686067692935, 1.484737140344805e-06]\n", "\t\t\t\t\tTrackStyleX : 0\n", "\t\t\t\t\tTrackStyleY : 0\n", "\t\t\tLegendOn : 0\n", "\t\t\tMainSliceId :\n", "\t\t\t\t0 : 0\n", "\t\t\tNumHorizontalTicks : 1\n", "\t\t\tNumVerticalTicks : 1\n", "\t\t\tROIList :\n", "\t\t\t\t0 :\n", "\t\t\t\t\tBoldLabel : 0\n", "\t\t\t\t\tColor : [-32640, 0, 0]\n", "\t\t\t\t\tDrawSolid : 0\n", "\t\t\t\t\tEnd : 935.0\n", "\t\t\t\t\tHeightValue : 1.0\n", "\t\t\t\t\tIsDeletable : 1\n", "\t\t\t\t\tIsMoveable : 1\n", "\t\t\t\t\tIsResizable : 1\n", "\t\t\t\t\tIsVolatile : 1\n", "\t\t\t\t\tLabel : \n", "\t\t\t\t\tMovableLabel : 0\n", "\t\t\t\t\tName : \n", "\t\t\t\t\tPartialHeightMarker : 0\n", "\t\t\t\t\tRef : 0\n", "\t\t\t\t\tSelected : 1\n", "\t\t\t\t\tSliceId :\n", "\t\t\t\t\t\t0 : 0\n", "\t\t\t\t\tStart : 907.0\n", "\t\t\tSliceList :\n", "\t\t\t\t0 :\n", "\t\t\t\t\tBaseIntensity : 0.0\n", "\t\t\t\t\tComplexMode : 4\n", "\t\t\t\t\tDrawFill : 1\n", "\t\t\t\t\tDrawLine : 0\n", "\t\t\t\t\tFillColor : [23387, -16706, -16706]\n", "\t\t\t\t\tHorz Pos Fixed : 1\n", "\t\t\t\t\tHorz Scale Fixed : 1\n", "\t\t\t\t\tImageToGroup :\n", "\t\t\t\t\t\tOffset : [0.0, 0.0]\n", "\t\t\t\t\t\tScale : [1.0, 1.0]\n", "\t\t\t\t\tIsVisible : 1\n", "\t\t\t\t\tLineColor : [0, -32640, -16449]\n", "\t\t\t\t\tLineThickness : 1\n", "\t\t\t\t\tSliceGroup : 0\n", "\t\t\t\t\tSliceId :\n", "\t\t\t\t\t\t0 : 0\n", "\t\t\t\t\tVert Pos Fixed : 1\n", "\t\t\t\t\tVert Scale Fixed : 1\n", "\t\tImageDisplayType : 3\n", "\t\tImageSource : 0\n", "\t\tIsMoveable : 1\n", "\t\tIsResizable : 1\n", "\t\tIsSelectable : 1\n", "\t\tIsTranslatable : 1\n", "\t\tIsVisible : 1\n", "\t\tObjectTags :\n", "\t\t\t__is_not_copy : 1\n", "\t\t\t__was_selected : 0\n", "\t\tRectangle : [0.0, 0.0, 342.0, 669.0]\n", "\t\tUniqueID : 8\n", "DocumentTags :\n", "HasWindowPosition : 1\n", "Image Behavior :\n", "\tDoIntegralZoom : 0\n", "\tImageDisplayBounds : [0.0, 0.0, 342.0, 669.0]\n", "\tIsZoomedToWindow : 1\n", "\tUnscaledTransform :\n", "\t\tOffset : [0.0, 0.0]\n", "\t\tScale : [1.0, 1.0]\n", "\tViewDisplayID : 8\n", "\tWindowRect : [0.0, 0.0, 342.0, 669.0]\n", "\tZoomAndMoveTransform :\n", "\t\tOffset : [0.0, 0.0]\n", "\t\tScale : [1.0, 1.0]\n", "ImageSourceList :\n", "\t0 :\n", "\t\tClassName : ImageSource:Simple\n", "\t\tExtra Slice Info :\n", "\t\t\t0 :\n", "\t\t\t\tId :\n", "\t\t\t\t\t0 : 0\n", "\t\t\t\tLabel : Spectrum\n", "\t\tId :\n", "\t\t\t0 : 0\n", "\t\tImageRef : 1\n", "InImageMode : 1\n", "MinVersionList :\n", "\t0 :\n", "\t\tRequiredVersion : 50659328\n", "NextDocumentObjectID : 9\n", "Page Behavior :\n", "\tDoIntegralZoom : 0\n", "\tDrawMargins : 1\n", "\tDrawPaper : 1\n", "\tIsFixedInPageMode : 0\n", "\tIsZoomedToWindow : 1\n", "\tLayedOut : 0\n", "\tPageTransform :\n", "\t\tOffset : [0.0, 0.0]\n", "\t\tScale : [1.0, 1.0]\n", "\tRestoreImageDisplayBounds : [0.0, 0.0, 342.0, 669.5]\n", "\tRestoreImageDisplayID : 8\n", "\tTargetDisplayID : 4294967295\n", "PageSetup :\n", "\tGeneral : [1, 1000, 8500, 11000, 1000, 1000, -1000, -1000]\n", "\tWin32 : b'\\x06\\x00\\x00\\x004!\\x00\\x00\\xf8*\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xe8\\x03\\x00\\x00\\xe8\\x03\\x00\\x00\\xe8\\x03\\x00\\x00\\xe8\\x03\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x01\\x00\\x01\\x00\\x01\\x00\\x01\\x00\\x1b\\x10'\n", "\tWin32_DevModeW : b'S\\x00e\\x00n\\x00d\\x00 \\x00T\\x00o\\x00 \\x00O\\x00n\\x00e\\x00N\\x00o\\x00t\\x00e\\x00 \\x002\\x000\\x001\\x000\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04\\x00\\x06\\xdc\\x00\\x0c\\x03\\x03\\xff\\x81\\x03\\x01\\x00\\x01\\x00\\xea\\no\\x08d\\x00\\x01\\x00\\x07\\x00\\xfd\\xff\\x02\\x00\\x01\\x00X\\x02\\x01\\x00\\x00\\x00L\\x00e\\x00t\\x00t\\x00e\\x00r\\x00 \\x008\\x00.\\x005\\x00\"\\x00x\\x001\\x001\\x00\"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00DINU\"\\x00\\xd0\\x00\\x0c\\x03\\x00\\x00\\xc2\\xac\\x90Q\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x00\\x00\\x07\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xd0\\x00\\x00\\x00SMTJ\\x00\\x00\\x00\\x00\\x10\\x00\\xc0\\x00S\\x00e\\x00n\\x00d\\x00 \\x00T\\x00o\\x00 \\x00M\\x00i\\x00c\\x00r\\x00o\\x00s\\x00o\\x00f\\x00t\\x00 \\x00O\\x00n\\x00e\\x00N\\x00o\\x00t\\x00e\\x00 \\x002\\x000\\x001\\x000\\x00 \\x00D\\x00r\\x00i\\x00v\\x00e\\x00r\\x00\\x00\\x00RESDLL\\x00UniresDLL\\x00PaperSize\\x00LETTER\\x00Orientation\\x00PORTRAIT\\x00Resolution\\x00DPI600\\x00ColorMode\\x0024bpp\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'\n", "\tWin32_DevNamesW : b'\\x04\\x00*\\x00?\\x00\\x00\\x00S\\x00e\\x00n\\x00d\\x00 \\x00T\\x00o\\x00 \\x00M\\x00i\\x00c\\x00r\\x00o\\x00s\\x00o\\x00f\\x00t\\x00 \\x00O\\x00n\\x00e\\x00N\\x00o\\x00t\\x00e\\x00 \\x002\\x000\\x001\\x000\\x00 \\x00D\\x00r\\x00i\\x00v\\x00e\\x00r\\x00\\x00\\x00S\\x00e\\x00n\\x00d\\x00 \\x00T\\x00o\\x00 \\x00O\\x00n\\x00e\\x00N\\x00o\\x00t\\x00e\\x00 \\x002\\x000\\x001\\x000\\x00\\x00\\x00n\\x00u\\x00l\\x00:\\x00\\x00\\x00'\n", "SentinelList :\n", "Thumbnails :\n", "\t0 :\n", "\t\tImageIndex : 0\n", "\t\tSourceSize_Pixels : [669, 342]\n", "WindowPosition : [30, 1378, 372, 2047]\n" ] } ], "source": [ "eels_dataset.view_original_metadata()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The information is contained in a python dictionary and we will have to data mine this information to get the experimental conditions." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ImageData\n", "ImageTags\n", "Name\n", "UniqueID\n", "DM\n", "original_filename\n", "ApplicationBounds\n", "DocumentObjectList\n", "DocumentTags\n", "HasWindowPosition\n", "Image Behavior\n", "ImageSourceList\n", "InImageMode\n", "MinVersionList\n", "NextDocumentObjectID\n", "Page Behavior\n", "PageSetup\n", "SentinelList\n", "Thumbnails\n", "WindowPosition\n", "\n", " Dictionary: original_metadata['ImageList']['1']['ImageTags']['EELS']['Acquisition'] \n", "Continuous mode 0\n", "Date 10/1/2018\n", "End time 11:12:22 AM\n", "Exposure (s) 0.1\n", "Integration time (s) 10.0\n", "Number of frames 100\n", "Saturation fraction 0.7989057898521423\n", "Start time 11:10:22 AM\n" ] } ], "source": [ "for key in eels_dataset.original_metadata:\n", " print(key)\n", "print()\n", "print(\" Dictionary: original_metadata['ImageList']['1']['ImageTags']['EELS']['Acquisition'] \")\n", "for key, item in eels_dataset.original_metadata['ImageTags']['EELS']['Acquisition'].items():\n", " print(key, item)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course there is a function for this (in pyTEMlib.eels_tools)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "experiment :\n", "\tsingle_exposure_time : 0.1\n", "\texposure_time : 0.1\n", "\tnumber_of_frames : 100\n", "\tconvergence_angle : 0.0\n", "\tcollection_angle : 0.0\n", "\tmicroscope : Libra 200 MC\n", "\tacceleration_voltage : 199990.28125\n", "filename : ../example_data/AL-DFoffset0.00.dm3\n" ] } ], "source": [ "eels_dataset.view_metadata()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Make Energy Scale andPlot\n", "\n", "The energy scale above is linear and so a linear increasing numpy array (of size *eels_dataset.shape[0]*) is multiplied with the channel width (*sipersion*), the first channel is in the variable *offset*." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dispersion [eV/pixel] : 0.02 eV \n", "Offset [eV] : -3.61 eV \n", "Maximum energy [eV] : 37.59 eV \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1b9c45832483448a9f0da60c87c76e84", "version_major": 2, "version_minor": 0 }, "image/png": "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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(f\"Dispersion [eV/pixel] : {eels_dataset.energy_loss.slope:.2f} eV \")\n", "print(f\"Offset [eV] : {eels_dataset.energy_loss[0]:.2f} eV \")\n", "print(f\"Maximum energy [eV] : {eels_dataset.energy_loss[-1]:.2f} eV \")\n", "\n", "energy_scale = np.arange(eels_dataset.shape[0])\n", "\n", "dispersion = eels_dataset.energy_loss.slope\n", "energy_scale = energy_scale * dispersion\n", "\n", "offset = eels_dataset.energy_loss[0]\n", "energy_scale = energy_scale + offset\n", "\n", "plt.figure()\n", "plt.plot(energy_scale, eels_dataset);\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's compare the keys in the current_channel and in the dictionary " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Normalizing Intensity Scale\n", "The following normalization makes only sense if this is a low loss spectrum,
where the total number of counts represents approximatively the incident current **$I_0$**" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "976a0b02d43f41468626c84e81b9cedf", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAATTxJREFUeJzt3Xd4VFX+x/HPTe+hhE5oAiIdKUqRgIqsS5GluAsKItafoDRFsVFEorgi7qKwqBBEUVYpIjZYpFiQojQBQRAEkV5CQglJ5vz+CDNkMoFMaMOdeb+eJw+ZM3fu/c7caD45555zLWOMEQAAAAJGkK8LAAAAwJVFAAQAAAgwBEAAAIAAQwAEAAAIMARAAACAAEMABAAACDAEQAAAgABDAAQAAAgwBEAAAIAAQwAEAAAIMARAAACAAEMABAAACDAEQAAAgABDAAQAAAgwBEAAAIAAQwAEAAAIMARAAACAAEMABAAACDAEQAAAgABDAAQAAAgwBEAAAIAAQwAEAAAIMARAAACAAEMABAAACDAEQAAAgABDAAQAAAgwBEAAAIAAQwAEAAAIMARAAACAAEMABAAACDAEQAAAgABDAAQAAAgwBEAAAIAAQwAEAAAIMARAAACAAEMABAAACDAEQCAfy5cv19/+9jdVqFBB4eHhKlWqlJo2barBgwf7ujRJ0ptvvqmUlBRfl1EoixcvlmVZ5/zK/X5atWp1zu0qVarksc+PP/74vMc+dOiQhg4dqpo1ayo6Olrx8fGqUaOGevbsqXXr1rltu2LFCrVt21axsbGKiYlR69at9d133+W7359++km33nqrYmJiVKRIEXXu3Fm//fbbBX9Gl8oPP/ygbt26qUyZMgoLC1Pp0qXVtWtXLVu27Lyv69y5syzLUr9+/a5QpZdeq1at1KpVq0K9ZteuXfrb3/6mKlWquH4+GjRooPHjxysrK+vyFAr4WIivCwCuNp999pk6duyoVq1aacyYMSpTpoz27NmjVatW6cMPP9Srr77q6xL15ptvKiEhQb179/Z1KYU2evRotW7d2qP9mmuucXtcpUoVvf/++x7bhYeHF+p46enpuvHGG5Wenq4nnnhC9erV08mTJ7VlyxbNmjVLa9asUd26dSVJK1euVMuWLdWkSRNNmzZNxhiNGTNGt9xyixYtWqSmTZu69vvLL7+oVatWql+/vv773//q1KlTev7553XTTTdpzZo1KlGiRKHqvFT+/e9/a8CAAWrSpInGjBmjihUraufOnXrjjTfUokULvf766/kGvP3792vevHmSpPfff1///Oc/FRERcaXLv2hvvvlmoV9z/PhxxcXF6bnnnlOFChV0+vRpff7553r00Ue1Zs0avf3225ehUsDHDAA3LVu2NNdcc43JzMz0eC47O9sHFXmqVauWSUpK8mrb06dP5/terrRFixYZSeajjz4qcNukpCRTq1atS7LPyZMnG0nm66+/zvf53Oe0bdu2plSpUub48eOutmPHjpmEhATTrFkzt9d169bNJCQkmNTUVFfbjh07TGhoqBkyZEiBtV8O3377rQkKCjLt27f3OOeZmZmmffv2JigoyHz77bcer33llVeMJNOuXTsjybz//vtXquyr1p133mlCQkLMqVOnfF0KcMkxBAzkcejQISUkJCgkxLODPCjI/T+ZSpUqqX379po9e7bq1q2riIgIValSRf/61788Xnvs2DE9/vjjqly5ssLCwlSuXDkNGDBAx48fd9vO4XDo3//+t+rXr6/IyEgVKVJEN954o+bOnes65oYNG7RkyRKPYVHnkOi0adM0ePBglStXTuHh4dq6dauGDx8uy7I86kpJSZFlWdqxY4fH+5o3b54aNGigyMhIXXfdda4eopSUFF133XWKjo5WkyZNtGrVqkJ9xlfSoUOHJEllypTJ9/nc5/S7775Tq1atFBUV5WqLjY1Vy5Yt9f3332vPnj2SpKysLM2bN09dunRRXFyca9uKFSuqdevWmj17tqvNeU6mT5+uJ598UmXKlFFMTIw6dOigffv2KS0tTQ8++KASEhKUkJCge++9V+np6a7X79ixw2OI3MmyLA0fPtz1ODk5WZZlacKECR4/vyEhIXrzzTdlWZZeeuklj31NnjxZpUqV0tSpUxUZGanJkyfn+3nNnTtXTZs2VVRUlGJjY9WmTRuPoWXnz9qGDRvUvXt3xcfHq1SpUurTp49SU1Pdtn3jjTfUsmVLlSxZUtHR0apTp47GjBmjzMxM1za//vqr4uLi1K1bN7fXfv311woODtZzzz3nastvCHjChAmqV6+eYmJiFBsbqxo1aujpp5/O9/3lVqJECQUFBSk4OLjAbQG7IQACeTRt2lTLly/XY489puXLl7v9IsrPmjVrNGDAAA0cOFCzZ89Ws2bN1L9/f/3zn/90bXPixAklJSVp6tSpeuyxx/TFF1/oySefVEpKijp27ChjjGvb3r17q3///mrcuLFmzJihDz/8UB07dnQFtNmzZ6tKlSpq0KCBli1bpmXLlrkFDkkaOnSodu7cqYkTJ+rTTz9VyZIlC/05rF27VkOHDtWTTz6pWbNmKT4+Xp07d9awYcP09ttva/To0Xr//feVmpqq9u3b6+TJk17t1+FwKCsry+MrP/lt53A4CvU+nMO2vXr10pw5c1yBMD+nT5/Od4jZ2bZ+/XpJ0rZt23Ty5EnX0HFudevW1datW3Xq1Cm39qefflr79+9XSkqKXn31VS1evFjdu3dXly5dFB8frw8++EBDhgzRtGnTvAoneWVnZ2vRokVq1KiRypcvn+82iYmJatiwob7++mtlZ2e72r///ntt2rRJvXr1UvHixdWlSxd9/fXX2r59u9vrp0+frjvuuENxcXH64IMP9M477+jIkSNq1aqVvv32W4/jdenSRdWrV9fMmTP11FNPafr06Ro4cKDbNtu2bVOPHj00bdo0zZs3T/fdd59eeeUVPfTQQ65tqlWrprfeeksff/yx64+rvXv3qkePHrrpppvcQnBeH374oR555BElJSVp9uzZmjNnjgYOHOjxh5ckGWOUlZWlI0eOaMaMGUpJSdHgwYPz/WMQsD1fd0ECV5uDBw+aFi1aGElGkgkNDTXNmjUzycnJJi0tzW3bihUrGsuyzJo1a9za27RpY+Li4lxDicnJySYoKMisXLnSbbuPP/7YSDKff/65McaYpUuXGknmmWeeOW+N5xoCdg6JtmzZ0uO5YcOGmfz+k58yZYqRZLZv3+72viIjI80ff/zhaluzZo2RZMqUKeM2RDpnzhwjycydO/e8NTtrO9fXrl27XNsmJSWdc7v77rvPY58FDSuPHDnShIWFufZRuXJl8/DDD5u1a9e6bVe/fn1TvXp1t2HhzMxMU6VKFSPJTJ8+3RhjzHfffWckmQ8++MDjWKNHjzaSzJ9//ulWY4cOHdy2GzBggJFkHnvsMbf2Tp06mWLFirkeb9++3UgyU6ZM8TiWJDNs2DBjjDF79+41ksw//vGP834Wf//7340ks2/fPldbnz59jCSzadMmt5qfe+451zbZ2dmmbNmypk6dOm6fT1pamilZsqTbELnzZ23MmDFux37kkUdMRESEcTgc+daWnZ1tMjMzzbvvvmuCg4PN4cOH3Z7/v//7PxMWFmaWLVtmbr75ZlOyZEnX5+yUlJTk9t9Gv379TJEiRc77mTglJye7fkYsyyrwv0PAzugBBPIoXry4vvnmG61cuVIvvfSS7rjjDm3ZskVDhw5VnTp1dPDgQbfta9WqpXr16rm19ejRQ8eOHdNPP/0kSZo3b55q166t+vXru/VmtW3bVpZlafHixZKkL774QpLUt2/fi3oPXbp0uajXS1L9+vVVrlw51+PrrrtOkjyGSJ3tv//+u1f7ffnll7Vy5UqPr1KlSrltd8011+S7Xe7hPm8999xz2rlzpyZPnqyHHnpIMTExmjhxoho2bKgPPvjAtd2jjz6qLVu2qF+/ftq9e7d27dqlhx9+2PXe8l4CkN+Q+rmea9++vdtj5+fWrl07j/bDhw+7DQNfSuZMb7OzvvT0dP33v/9Vs2bNVKNGDUlSUlKSrrnmGqWkpLh6XDdv3qw///xTPXv2dPscYmJi1KVLF/3www86ceKE27E6duzo9rhu3bo6deqU9u/f72pbvXq1OnbsqOLFiys4OFihoaHq1auXsrOztWXLFrfXv/baa6pVq5Zat26txYsX67333jvn0L5TkyZNdPToUXXv3l2ffPKJx3+/ufXu3VsrV67UV199pSFDhuiVV17Ro48+et79A3ZFvzZwDo0aNVKjRo0kSZmZmXryySf12muvacyYMRozZoxru9KlS3u81tnmHG7ct2+ftm7dqtDQ0HyP5fyldODAAQUHB+e7z8Io6JeiN4oVK+b2OCws7LzteYc8z6VKlSquz/V8IiIivNrOW6VKldK9996re++9V5K0dOlS3X777erfv7+6d+8uSerTp48OHDigUaNGacKECZJyhpAff/xxvfzyy65AXLx4cUnKdzj58OHDsixLRYoUcWu/kM8zJibG6/eXkJCgqKgoj2HbvHbs2KGoqCjXcWfMmKH09HTdeeedOnr0qGu7O++8U8nJyVqwYIHatm173mspy5YtK4fDoSNHjrj9ceD8nJycQ+nOywV27typm266Sddee61ef/11VapUSREREVqxYoX69u3rcVlBeHi4evTooSeeeELXX3+92rRpU+Dn0rNnT2VlZemtt95Sly5d5HA41LhxY40aNcrj9aVLl3b9t3fbbbepaNGieuqpp9SnTx81aNCgwGMBdkIPIOCF0NBQDRs2TJL0888/uz23d+9ej+2dbc5fgAkJCapTp06+PVq5e7VKlCih7OzsfPdZGPn1TDmX9MjIyHBrP1+PiD9r2bKlbrvtNh04cMCtR+rJJ5/UwYMHtX79eu3YsUPff/+9jhw5oujoaDVs2FBSTu9kZGSk65rA3NavX6+qVatesiVUznXe8obP4OBgtW7dWqtWrdIff/yR777++OMP/fjjj7r55ptdExveeecdSdKAAQNUtGhR11dycrLb886fZedEmNz+/PNPBQUFqWjRooV6b3PmzNHx48c1a9Ys3X333WrRooUaNWrkCsF5/fzzz3r++efVuHFj/fTTTxo7dqxXx7n33nv1/fffKzU1VZ999pmMMWrfvn2BvdZNmjSRJI+eSMAfEACBPPL7BSdJmzZtkpTT25Hbhg0btHbtWre26dOnKzY2Vtdff72knOG/bdu2qXjx4q6exdxfzlm8t99+uyS5ep/OJTw83OtJF07OY+Rd+PjTTz8t1H7sZt++fflOHMnOztavv/6qqKgoj9668PBw1a5d27WG3owZM/TAAw8oMjJSUs6M2g4dOmjWrFlKS0tzvW7nzp1atGiROnfufMnqL1WqlCIiIjzO2yeffOKx7dChQ2WM0SOPPOI2yUPKeb//93//J2OMhg4dKinnZ3rZsmXq0qWLFi1a5PF1yy236JNPPtGhQ4d07bXXqly5cpo+fbrbpKXjx49r5syZrpnBheH8QyX3xBtjjN566y2PbY8fP65u3bqpUqVKWrRokfr166ennnpKy5cv9/p40dHRuv322/XMM8/o9OnT2rBhw3m3X7RokSSpatWqXh8DsAuGgIE82rZtq/Lly6tDhw6qUaOGHA6H1qxZo1dffVUxMTHq37+/2/Zly5ZVx44dNXz4cJUpU0bvvfeeFixYoJdfftn1C3HAgAGaOXOmWrZsqYEDB6pu3bpyOBzauXOn5s+fr8GDB+uGG27QTTfdpJ49e2rUqFHat2+f2rdvr/DwcK1evVpRUVGu65Hq1KmjDz/8UDNmzFCVKlUUERGhOnXqnPd9/fWvf1WxYsV03333aeTIkQoJCVFKSop27dp1eT7Ic/j111/1ww8/eLSXL1/ebfbqyZMn891Okm688Ua3x+faLikpSdOmTdN//vMf9ejRQ40bN1Z8fLz++OMPvf3229qwYYOef/55V4/Tzz//rJkzZ6pRo0YKDw/X2rVr9dJLL6latWp64YUX3PY9YsQINW7cWO3bt9dTTz3lWgg6ISHhkt4xxrIs3X333Zo8ebKuueYa1atXTytWrND06dM9tm3evLnGjRunAQMGqEWLFurXr58qVKjgWgh6+fLlGjdunJo1aybpbO/ekCFDXL1duaWlpWnhwoV677331L9/f40ZM0Z33XWX2rdvr4ceekgZGRl65ZVXdPTo0XyXlilImzZtFBYWpu7du2vIkCE6deqUJkyYoCNHjnhs+/DDD2vnzp1asWKFoqOj9eqrr2rZsmX6xz/+odWrV3uEeCdncG/evLnKlCmjvXv3Kjk5WfHx8WrcuLEkadiwYdq3b59atmypcuXK6ejRo/ryyy/11ltvqVu3bq6eX8Cv+HIGCnA1mjFjhunRo4epVq2aiYmJMaGhoaZChQqmZ8+eZuPGjW7bVqxY0bRr1858/PHHplatWiYsLMxUqlTJjB071mO/6enp5tlnnzXXXnutCQsLM/Hx8aZOnTpm4MCBZu/eva7tsrOzzWuvvWZq167t2q5p06bm008/dW2zY8cOc9ttt5nY2FgjyVSsWNEYU/Cs2BUrVphmzZqZ6OhoU65cOTNs2DDz9ttv5zsLuF27dh6vl2T69u3r1uacpfrKK6+c93MtaBZw7hmX55sFLMm1yHFB+1y0aJHZuHGjGTx4sGnUqJEpUaKECQkJMUWLFjVJSUlm2rRpbjVu3rzZtGzZ0hQrVsyEhYWZqlWrmmeffdakp6fn+55WrVplbrnlFhMVFWXi4uJMp06dzNatW/N933nPiXP2dd6Z4c4ZtAcOHHC1paammvvvv9+UKlXKREdHmw4dOpgdO3a4zQLObdmyZaZr166mVKlSJiQkxJQsWdJ07tzZfP/9965tTp8+bUqWLGnq169/znOWlZVlypcvb+rUqeNqmzNnjrnhhhtMRESEiY6ONrfccov57rvvCnwPud9z7p+1Tz/91NSrV89ERESYcuXKmSeeeMJ88cUXrvNnjDFvvfVWvjOht27d6vrcnfLOAp46dapp3bq1KVWqlAkLCzNly5Y1d955p1m3bp1rm7lz55pbb73V9XnFxMSYJk2amH/9619XxSLqwOVgGZOrLx9AoVSqVEm1a9d2LZAMAIAdcA0gAABAgCEAAgAABBiGgAEAAAIMPYAAAAABhgAIAAAQYAiAAAAAAYYACAAAEGC4E8hFcDgc+vPPPxUbG5vvvVcBAMDVxxijtLQ0lS1bVkFBgdkXRgC8CH/++acSExN9XQYAALgAu3btcrsFZSAhAF6E2NhYSTk/QHFxcT6uBgAAeOPYsWNKTEx0/R4PRATAi+Ac9o2LiyMAAgBgM4F8+VZgDnwDAAAEMAIgAABAgCEAAgAABBgCIAAAQIAhAAIAAAQYAiAAAECAIQACAAAEGAIgAABAgCEAAgAABBgCIAAAQIAhAAIAAAQYAiAAAECAIQDCa+kZWRr9+Sb9vDvV16UAAICLQACE14Z9skGTlv6mTm985+tSAADARSAAwmsLNu6VJGU5jI8rAQAAF4MACK+lZWT5ugQAAHAJEADhNcvXBQAAgEuCAAivWRYREAAAf0AAhNeIfwAA+AcCIAAAQIAhAMJrjAADAOAfCIDwmsUgMAAAfoEACO+R/wAA8AsEQAAAgABDAAQAAAgwBEB4jRFgAAD8AwEQXmMWMAAA/oEACAAAEGAIgPAay8AAAOAfCIDwGkPAAAD4BwIgvEb+AwDAPxAAAQAAAgwBEF6zGAMGAMAvEAABAAACDAEQXqP/DwAA/0AABAAACDAEQHiPLkAAAPwCARBeI/8BAOAfAjYAZmVl6dlnn1XlypUVGRmpKlWqaOTIkXI4HL4u7arFLGAAAPxDiK8L8JWXX35ZEydO1NSpU1WrVi2tWrVK9957r+Lj49W/f39flwcAAHDZBGwAXLZsme644w61a9dOklSpUiV98MEHWrVqlY8ru3rRAQgAgH8I2CHgFi1aaOHChdqyZYskae3atfr222/117/+1ceVXb3IfwAA+IeA7QF88sknlZqaqho1aig4OFjZ2dl68cUX1b1793O+JiMjQxkZGa7Hx44duxKlAgAAXFIB2wM4Y8YMvffee5o+fbp++uknTZ06Vf/85z81derUc74mOTlZ8fHxrq/ExMQrWDEAAMClYRljjK+L8IXExEQ99dRT6tu3r6tt1KhReu+99/TLL7/k+5r8egATExOVmpqquLi4y16zr13/wgIdPn5akrTjpXY+rgYAgAtz7NgxxcfHB8zv7/wE7BDwiRMnFBTk3gEaHBx83mVgwsPDFR4efrlLu2pxDSAAAP4hYANghw4d9OKLL6pChQqqVauWVq9erbFjx6pPnz6+Lg0AAOCyCtgA+O9//1vPPfecHnnkEe3fv19ly5bVQw89pOeff97XpQEAAFxWARsAY2NjNW7cOI0bN87XpQAAAFxRATsLGIXHQtAAAPgHAiAAAECAIQDCa4G5YBAAAP6HAAgAABBgCIAAAAABhgAIAAAQYAiA8BqzgAEA8A8EQAAAgABDAAQAAAgwBEAAAIAAQwAEAAAIMARAeI2FoAEA8A8EQAAAgABDAITXWAYGAAD/QAAEAAAIMARAAACAAEMAxAUxzAgBAMC2CIC4IOQ/AADsiwCIC0L+AwDAvgiAuCAMAQMAYF8EQFwQB/kPAADbIgDighgGgQEAsC0CIC4II8AAANgXARAAACDAEABxQegBBADAvgiAuCBcAwgAgH0RAFEIlus7ZgEDAGBfBEBcENYBBADAvgiAuCDEPwAA7IsAiEI4G/voAAQAwL4IgLgwBEAAAGyLAIgLwixgAADsiwCIC8IQMAAA9kUARCHkXgaGBAgAgF0RAFEIJp/vAACA3RAA4bXcnX50AAIAYF8EQHjNuH1PAgQAwK4IgPCa290/yH8AANgWARBeM+f4HgAA2AsBEF5zOLgTCAAA/oAACK/lznwsAwMAgH0RAOE9LgEEAMAvEADhNbdrAOkBBADAtgiA8Fru0Ef+AwDAvgiA8BqZDwAA/0AAhNe4EwgAAP6BAAiv5b77B7OAAQCwLwIgvMaNQAAA8A8EQHjNfQiYCAgAgF0RAOG13EPAxD8AAOyLAAivMQkEAAD/QACE18x5HgEAAPsgAMJrLAQNAIB/IADCa7kzn4MACACAbREA4TX3ZWBIgAAA2BUBEBeEIWAAAOyLAAiv5F33jwAIAIB9EQDhlbzX/DEEDACAfdkuAPbu3VtLly71dRkBhx5AAAD8h+0CYFpamm677TZVq1ZNo0eP1u7du31dUkAg7wEA4D9sFwBnzpyp3bt3q1+/fvroo49UqVIl3X777fr444+VmZnp6/L8Vt4ePwddgAAA2JbtAqAkFS9eXP3799fq1au1YsUKVa1aVT179lTZsmU1cOBA/frrr74u0e/kveaP/AcAgH3ZMgA67dmzR/Pnz9f8+fMVHBysv/71r9qwYYNq1qyp1157zdfl+ZW8gY/8BwCAfdkuAGZmZmrmzJlq3769KlasqI8++kgDBw7Unj17NHXqVM2fP1/Tpk3TyJEjfV2qX8s7KQQAANhHiK8LKKwyZcrI4XCoe/fuWrFiherXr++xTdu2bVWkSJErXps/owcQAAD/YbsA+Nprr6lbt26KiIg45zZFixbV9u3br2BV/o9rAAEA8B+2GwJetGhRvrN9jx8/rj59+hRqX7t379bdd9+t4sWLKyoqSvXr19ePP/54qUr1Kx4LQZMAAQCwLdsFwKlTp+rkyZMe7SdPntS7777r9X6OHDmi5s2bKzQ0VF988YU2btyoV199laHjc/BYCNpHdQAAgItnmyHgY8eOyRgjY4zS0tLchoCzs7P1+eefq2TJkl7v7+WXX1ZiYqKmTJniaqtUqdKlLNmv5A18dAACAGBftgmARYoUkWVZsixL1atX93jesiyNGDHC6/3NnTtXbdu2Vbdu3bRkyRKVK1dOjzzyiB544IFLWbbf8JgEQgIEAMC2bBMAFy1aJGOMbr75Zs2cOVPFihVzPRcWFqaKFSuqbNmyXu/vt99+04QJEzRo0CA9/fTTWrFihR577DGFh4erV69e+b4mIyNDGRkZrsfHjh278DdkN8wCBgDAb9gmACYlJUmStm/frgoVKsiyrIvan8PhUKNGjTR69GhJUoMGDbRhwwZNmDDhnAEwOTm5UL2M/oRZwAAA+A9bBMB169apdu3aCgoKUmpqqtavX3/ObevWrevVPsuUKaOaNWu6tV133XWaOXPmOV8zdOhQDRo0yPX42LFjSkxM9Op4due5DiAJEAAAu7JFAKxfv7727t2rkiVLqn79+rIsK99r0CzLUnZ2tlf7bN68uTZv3uzWtmXLFlWsWPGcrwkPD1d4eHjhivcTTAIBAMB/2CIAbt++XSVKlHB9fykMHDhQzZo10+jRo3XnnXdqxYoVmjRpkiZNmnRJ9u9vPJaBIQACAGBbtgiAuXvlztdDVxiNGzfW7NmzNXToUI0cOVKVK1fWuHHjdNddd12S/fsbjx5AhoABALAtWy4E/dlnn7keDxkyREWKFFGzZs30+++/F2pf7du31/r163Xq1Clt2rSJJWDOw0EPIAAAfsN2AXD06NGKjIyUJC1btkzjx4/XmDFjlJCQoIEDB/q4Oj/GMjAAAPgNWwwB57Zr1y5VrVpVkjRnzhx17dpVDz74oJo3b65WrVr5tjg/5jkJhAgIAIBd2a4HMCYmRocOHZIkzZ8/X7feeqskKSIiIt97BOPS8FwGBgAA2JXtegDbtGmj+++/Xw0aNNCWLVvUrl07SdKGDRu4l+9l5LkQNBEQAAC7sl0P4BtvvKGmTZvqwIEDmjlzpooXLy5J+vHHH9W9e3cfV+e/PO8F7Js6AADAxbNdD2CRIkU0fvx4j/ZAvUXblcJC0AAA+A/bBUBJOnr0qFasWKH9+/fL4XC42i3LUs+ePX1Ymf/yWAjaR3UAAICLZ7sA+Omnn+quu+7S8ePHFRsbK8uyXM8RAC8fzyFgIiAAAHZlu2sABw8erD59+igtLU1Hjx7VkSNHXF+HDx/2dXl+i1nAAAD4D9sFwN27d+uxxx5TVFSUr0sJKMwCBgDAf9guALZt21arVq3ydRkBh1nAAAD4D9tdA9iuXTs98cQT2rhxo+rUqaPQ0FC35zt27Oijyvybxyxgn1QBAAAuBdsFwAceeECSNHLkSI/nLMtSdnb2lS4pIHjMAiYBAgBgW7YLgLmXfcGV49kDSAIEAMCubHcNYG6nTp3ydQkBg2sAAQDwH7YLgNnZ2XrhhRdUrlw5xcTE6LfffpMkPffcc3rnnXd8XJ0/YyFoAAD8he0C4IsvvqiUlBSNGTNGYWFhrvY6dero7bff9mFl/o2FoAEA8B+2C4DvvvuuJk2apLvuukvBwcGu9rp16+qXX37xYWX+zcEQMAAAfsN2AXD37t2qWrWqR7vD4VBmZqYPKgoMHgtBMwgMAIBt2S4A1qpVS998841H+0cffaQGDRr4oKLAwCQQAAD8h+2WgRk2bJh69uyp3bt3y+FwaNasWdq8ebPeffddzZs3z9fl+S0CIAAA/sN2PYAdOnTQjBkz9Pnnn8uyLD3//PPatGmTPv30U7Vp08bX5fktzyFgAABgV7brAZRy7gfctm1bX5cRUJgFDACA/7BdD2CVKlV06NAhj/ajR4+qSpUqPqgoMJH/AACwL9sFwB07duR7v9+MjAzt3r3bBxUFBo8eQAaBAQCwLdsMAc+dO9f1/VdffaX4+HjX4+zsbC1cuFCVKlXyQWWBweMaQPIfAAC2ZZsA2KlTJ0mSZVm655573J4LDQ1VpUqV9Oqrr/qgssDgsRC0b8oAAACXgG0CoMPhkCRVrlxZK1euVEJCgo8rCix5J33QAwgAgH3ZJgA6bd++3dclBKS8eY9rAAEAsC/bBUBJWrhwoRYuXKj9+/e7egadJk+e7KOq/FveHr+8Q8IAAMA+bBcAR4wYoZEjR6pRo0YqU6aMLMvydUkBgluBAADgL2wXACdOnKiUlBT17NnT16UEFM9lYAAAgF3Zbh3A06dPq1mzZr4uI+B4XANIAgQAwLZsFwDvv/9+TZ8+3ddlBBxuBQcAgP+w3RDwqVOnNGnSJP3vf/9T3bp1FRoa6vb82LFjfVSZf/NYBsZHdQAAgItnuwC4bt061a9fX5L0888/uz3HhJDLx2MhaBIgAAC2ZbsAuGjRIl+XEJDyrvvnIAECAGBbtrsGED5C3gMAwG/Ypgewc+fOXm03a9asy1xJYGIWMAAA/sM2ATA+Pt7XJQQ0z3UASYAAANiVbQLglClTfF1CQMsb+OgBBADAvrgGEF7hTiAAAPgPAiC8wjWAAAD4DwIgvJJ32ReWgQEAwL4IgPAOeQ8AAL9BAIRXPCeBkAgBALAr28wCdpo7d26+7ZZlKSIiQlWrVlXlypWvcFX+z+Fwf0z+AwDAvmwXADt16iTLsjx6oJxtlmWpRYsWmjNnjooWLeqjKv2PxyQQn1QBAAAuBdsNAS9YsECNGzfWggULlJqaqtTUVC1YsEBNmjTRvHnztHTpUh06dEiPP/64r0v1K3kDNz2AAADYl+16APv3769JkyapWbNmrrZbbrlFERERevDBB7VhwwaNGzdOffr08WGV/idv3mMWMAAA9mW7HsBt27YpLi7Ooz0uLk6//fabJKlatWo6ePDglS7Nr3n0APqoDgAAcPFsFwAbNmyoJ554QgcOHHC1HThwQEOGDFHjxo0lSb/++qvKly/vqxL9kkeHHz2AAADYlu2GgN955x3dcccdKl++vBITE2VZlnbu3KkqVarok08+kSSlp6frueee83Gl/oVJIAAA+A/bBcBrr71WmzZt0ldffaUtW7bIGKMaNWqoTZs2CgrK6dDs1KmTb4v0Qx73AiYBAgBgW7YLgFLOki9/+ctf9Je//MXXpQSMvJM+8i4MDQAA7MOWAXDhwoVauHCh9u/fL0eeFYonT57so6r8G5cAAgDgP2wXAEeMGKGRI0eqUaNGKlOmjCzL8nVJASHvLGAHARAAANuyXQCcOHGiUlJS1LNnT1+XEtAYAgYAwL5stwzM6dOn3RaBxpXhsfAz+Q8AANuyXQC8//77NX36dF+XEXDIfwAA+A/bDQGfOnVKkyZN0v/+9z/VrVtXoaGhbs+PHTvWR5X5N89lYIiAAADYle0C4Lp161S/fn1J0s8//+z2HBNCLh9mAQMA4D9sFwAXLVrk6xICkuc6gAAAwK5sdw0gfCRP4vOYFAIAAGzDFj2AnTt3VkpKiuLi4tS5c+fzbjtr1qwrVFVgybvsC/kPAAD7skUAjI+Pd13fFx8f7+NqAhMLPwMA4D9sEQCnTJkiKWfm6fDhw1WiRAlFRUVd0mMkJyfr6aefVv/+/TVu3LhLum9/wCxgAAD8h62uATTGqFq1atq9e/cl3e/KlSs1adIk1a1b95Lu1594DAH7qA4AAHDxbBUAg4KCVK1aNR06dOiS7TM9PV133XWX3nrrLRUtWvSS7dffePYA+qYOAABw8WwVACVpzJgxeuKJJzzWALxQffv2Vbt27XTrrbcWuG1GRoaOHTvm9hUo8g75ci9gAADsyxbXAOZ2991368SJE6pXr57CwsIUGRnp9vzhw4e93teHH36on376SStXrvRq++TkZI0YMaJQ9fqLvHGPSSEAANiX7QLgpZqgsWvXLvXv31/z589XRESEV68ZOnSoBg0a5Hp87NgxJSYmXpJ6rnYMAQMA4D9sFwDvueeeS7KfH3/8Ufv371fDhg1dbdnZ2Vq6dKnGjx+vjIwMBQcHu70mPDxc4eHhl+T4duM565cECACAXdkuAErStm3bNGXKFG3btk2vv/66SpYsqS+//FKJiYmqVauWV/u45ZZbtH79ere2e++9VzVq1NCTTz7pEf4CXd4hX3oAAQCwL9tNAlmyZInq1Kmj5cuXa9asWUpPT5ckrVu3TsOGDfN6P7Gxsapdu7bbV3R0tIoXL67atWtfrvJty6P/jwAIAIBt2S4APvXUUxo1apQWLFigsLAwV3vr1q21bNkyH1bm35gFDACA/7DdEPD69es1ffp0j/YSJUpc9PqAixcvvqjXBxJmAQMAYF+26wEsUqSI9uzZ49G+evVqlStXzgcVBQZH3h5AAiAAALZluwDYo0cPPfnkk9q7d68sy5LD4dB3332nxx9/XL169fJ1eX7LYxkYhoABALAt2wXAF198URUqVFC5cuWUnp6umjVrqmXLlmrWrJmeffZZX5fntzziHvkPAADbst01gKGhoXr//ff1wgsv6KeffpLD4VCDBg1UrVo1X5fm1zx7AAEAgF3Zrgdw5MiROnHihKpUqaKuXbvqzjvvVLVq1XTy5EmNHDnS1+X5Lc9rAImAAADYle0C4IgRI1xr/+V24sSJgL1Pry8Q/wAAsC/bBUBjjCzL8mhfu3atihUr5oOKAkPeHj+WgQEAwL5scw1g0aJFZVmWLMtS9erV3UJgdna20tPT9fDDD/uwQv/meSs4EiAAAHZlmwA4btw4GWPUp08fjRgxQvHx8a7nwsLCVKlSJTVt2tSHFfo3JoEAAOA/bBMA77nnHklS5cqV1bx5c4WE2KZ0v+Cx7h8JEAAA27LdNYA333yzDh8+7NF+6NAhBQcH+6CiwMBC0AAA+A/bBcBzXXuWkZGhsLCwK1xN4HB+7s5LL7kEEAAA+7LNOOq//vUvSZJlWXr77bcVExPjei47O1tLly5VjRo1fFWe33PmvWDLUpYxBEAAAGzMNgHwtddek5TTEzVx4kS34V7nJJCJEyf6qjy/5wx8QUGW5DAeC0MDAAD7sE0A3L59uySpdevWmjVrlooWLerjigKL85q/IOcQsA9rAQAAF8c2AdBp0aJFvi4hIDnXAQw6cxEgHYAAANiX7QKgJP3xxx+aO3eudu7cqdOnT7s9N3bsWB9V5d9MngBIHyAAAPZluwC4cOFCdezYUZUrV9bmzZtVu3Zt7dixQ8YYXX/99b4uz295DAGT/wAAsC3bLQMzdOhQDR48WD///LMiIiI0c+ZM7dq1S0lJSerWrZuvy/NfuSeBiP4/AADszHYBcNOmTa67goSEhOjkyZOKiYnRyJEj9fLLL/u4Ov/lnPUbfGYImFnAAADYl+0CYHR0tDIyMiRJZcuW1bZt21zPHTx40Fdl+T1n3rOYBAIAgO3Z7hrAG2+8Ud99951q1qypdu3aafDgwVq/fr1mzZqlG2+80dfl+S3XQtBB7o8BAID92C4Ajh07Vunp6ZKk4cOHKz09XTNmzFDVqlVdi0Xj0nMO+Z5dBoYICACAXdkuAFapUsX1fVRUlN58800fVhM4PJeBAQAAdmW7awBXrlyp5cuXe7QvX75cq1at8kFFgcViGRgAAGzPdgGwb9++2rVrl0f77t271bdvXx9UFBicQ77BrmVgSIAAANiV7QLgxo0b813wuUGDBtq4caMPKgoMzlvBuZaBcfiwGAAAcFFsFwDDw8O1b98+j/Y9e/YoJMR2lzTahrPHzzUETA8gAAC2ZbsA2KZNGw0dOlSpqamutqNHj+rpp59WmzZtfFiZf8s7CYRrAAEAsC/bdZm9+uqratmypSpWrKgGDRpIktasWaNSpUpp2rRpPq7Of51dB5BbwQEAYHe2C4DlypXTunXr9P7772vt2rWKjIzUvffeq+7duys0NNTX5fkt5yQQ6+wYMAAAsCnbBUAp53ZwDz74oK/LCChnh4DPPCYBAgBgW7a7BnDq1Kn67LPPXI+HDBmiIkWKqFmzZvr99999WJl/cwZA1xAw+Q8AANuyXQAcPXq0IiMjJUnLli3T+PHjNWbMGCUkJGjgwIE+rs5/OXv8nJNAHCRAAABsy3ZDwLt27VLVqlUlSXPmzFHXrl314IMPqnnz5mrVqpVvi/NjDo8hYAAAYFe26wGMiYnRoUOHJEnz58/XrbfeKkmKiIjQyZMnfVmaX2MZGAAA/IftegDbtGmj+++/Xw0aNNCWLVvUrl07SdKGDRtUqVIl3xbnx/IOAZP/AACwL9v1AL7xxhtq2rSpDhw4oJkzZ6p48eKSpB9//FHdu3f3cXV+zNkD6PyJoQsQAADbsl0PYJEiRTR+/HiP9hEjRvigmsDhnPRxdhKIL6sBAAAXw3Y9gPANzzuBkAABALArAiC8kncdQIfDh8UAAICLQgCEV5xDwMGsAwgAgO0RAOGVvEPABEAAAOzLdpNAcjt48KCWL1+u7OxsNW7cWGXKlPF1Sf4r7xAw+Q8AANuybQCcOXOm7rvvPlWvXl2ZmZnavHmz3njjDd17772+Ls0vOSd90AMIAID92WYIOD093e3xiBEjtGLFCq1YsUKrV6/WRx99pGeeecZH1fk/56SPENckEAIgAAB2ZZsA2LBhQ33yySeuxyEhIdq/f7/r8b59+xQWFuaL0gKC604gDAEDAGB7thkC/uqrr/TII48oJSVFb7zxhl5//XX9/e9/V3Z2trKyshQUFKSUlBRfl+m3XMvAMAsYAADbs00ArFSpkj7//HNNnz5dSUlJ6t+/v7Zu3aqtW7cqOztbNWrUUEREhK/L9FvOuBcSzBAwAAB2Z5shYKcePXq4rvtr1aqVHA6H6tevT/i7zIzJOwnEl9UAAICLYZseQEn64osvtHHjRtWrV0/vvPOOFi9erB49euivf/2rRo4cqcjISF+X6LcYAgYAwH/YpgdwyJAh6t27t1auXKmHHnpIL7zwglq1aqXVq1crPDxc9evX1xdffOHrMv2WM+4FsQwMAAC2Z5sAOHnyZH3++ef68MMPtXLlSk2bNk2SFBYWplGjRmnWrFl68cUXfVyl/3IOAYcwBAwAgO3ZJgBGRUVp+/btkqRdu3Z5XPNXq1Ytffvtt74oLSA4XHcCCTrzmAQIAIBd2SYAJicnq1evXipbtqySkpL0wgsv+LqkgOLI0wOYTRcgAAC2ZZtJIHfddZf+8pe/6LffflO1atVUpEgRX5cUUJwdfs5lYOgABADAvmwTACWpePHiKl68uK/LCEjOHr/QYIaAAQCwO9sMAcO3GAIGAMB/EADhFUeehaDpAAQAwL4IgPCKs8OPIWAAAOyPAAivuIaAz0wCySYAAgBgWwRAeMXhnARyZh1AY84uDg0AAOyFAAivOPIsAyNxHSAAAHZFAIRXnLN+Q4LP/sgwDAwAgD0RAOGVvMvA5G4DAAD2ErABMDk5WY0bN1ZsbKxKliypTp06afPmzb4u66qVXwAk/wEAYE8BGwCXLFmivn376ocfftCCBQuUlZWl2267TcePH/d1aVelvMvASCwGDQCAXdnqVnCX0pdffun2eMqUKSpZsqR+/PFHtWzZ0kdVXb2cs4CDGQIGAMD2ArYHMK/U1FRJUrFixXxcydUp7zqAOW2+qgYAAFyMgO0BzM0Yo0GDBqlFixaqXbv2ObfLyMhQRkaG6/GxY8euRHlXhfyGgFkHEAAAe6IHUFK/fv20bt06ffDBB+fdLjk5WfHx8a6vxMTEK1Sh77mWgck1BMw1gAAA2FPAB8BHH31Uc+fO1aJFi1S+fPnzbjt06FClpqa6vnbt2nWFqvQ9Z2+f+zWAvqoGAABcjIAdAjbG6NFHH9Xs2bO1ePFiVa5cucDXhIeHKzw8/ApUd/VxLvocZFkKsnLCH0PAAADYU8AGwL59+2r69On65JNPFBsbq71790qS4uPjFRkZ6ePqrj7O3r4gy1JwkCVHtuFOIAAA2FTADgFPmDBBqampatWqlcqUKeP6mjFjhq9LuyrlXgbGsnKGgRkCBgDAngK2B5Dhy8JxuIaAc76ks6EQAADYS8D2AKJwnFnPsiwFu3oACYAAANgRARBeyT0EHMQQMAAAtkYAhFdyDwFblnsbAACwFwIgvOK2DMyZiwC5BhAAAHsiAMIrrmVggnJfA+jDggAAwAUjAMIrrmsArdzLwJAAAQCwIwIgvJLfMjDcCxgAAHsiAKJAxhj3IeAzCZAOQAAA7IkAiALlDno59wJmCBgAADsjAKJAuYNezjWAOd9zL2AAAOyJAIgC5Q56VpByDQETAAEAsCMCIAqUO+cF5xoCznb4qCAAAHBRCIAoUO7ZvkHW2UkgzAIGAMCeCIAoUO5rAC1LCiEAAgBgawRAFMiRa6g3ONcyMJkOxoABALAjAiAKlLsHMMiyFBKc82OTnU0PIAAAdkQARIHcA+DZIeAshoABALAlAiAK5FwGxrIky7JyBUCGgAEAsCMCIArk7AAMPrP8S0gwk0AAALAzAiAK5Ax6zvX/goNyfmyyuAYQAABbIgCiQM5rAM/kPoUyBAwAgK0RAFEgZ8472wPIJBAAAOyMAIgCOXsAuQYQAAD/QABEgXLPApakkDNjwZlcAwgAgC0RAFEg52SP0DMLQJ+9FRzXAAIAYEcEQBQoMzsn6Dmv/eMaQAAA7I0AiAI5g56rBzCYZWAAALAzAiAKlHWmB9A5+YNbwQEAYG8EQBTIOdnDGfzOzgLmGkAAAOyIAIgCORd8zjsJhCFgAADsiQCIAjmDnrPnz3UrOIaAAQCwJQIgCuScBexc/y+UhaABALA1AiAKdHYWsPsyMM5gCAAA7IUAiALl7QE8uxA0PYAAANgRARAFcgY91zIwwVwDCACAnREAUaBz3QouiyFgAABsiQCIAmU6nEPALAQNAIA/IACiQHl7AIO5FRwAALZGAESBMvPcCi48JOfH5jRDwAAA2BIBEAVyDvU6ZwE7A2BGVrbPagIAABeOAIgCOSd7hLp6AIMlSRmZ9AACAGBHBEAUKDPPreDCQ509gARAAADsiACIAmU53BeCZggYAAB7IwCiQGdnAecZAqYHEAAAWyIAokBnh4Dz9AByDSAAALZEAESBnEPAoWcWgI4IZQgYAAA7IwCiQJmuWcDOHkCGgAEAsDMCIAp04nROT19kWE7wOzsJhAAIAIAdEQBRoJMeATDn32yHca0RCAAA7IMAiAKdzMwJgFHOABh69seGXkAAAOyHAIgCuXoAQ3MCYFgwARAAADsjAKJAzmsAI84EwKAgyxUCT2UyExgAALshAKJAp1xDwCGuNuf1gCdOZ/mkJgAAcOEIgCjQiTxDwJIUE54TBtMz6AEEAMBuCIAokHMSiLPXT5Kiw8/0AGbQAwgAgN0QAFGgvMvASGeHg9MJgAAA2A4BEOeVle3Q6TNr/eU3BHycawABALAdAiDOK+3U2YDnHPbN/T3XAAIAYD8EQJzXoeOnJUmx4SGuO4BIUrSzB5AhYAAAbIcAiPM6fCYAFosJc2uPIQACAGBbBECc1+HjGZKkYtH5B8DcQ8QAAMAeCIA4L+cQcPE8AdAZCJ3PAwAA+yAA4rwOpOX0ACbEhLu1l4jNeXzwzPMAAMA+CIA4r+0Hj0uSKhaPdmt3BsKD6QRA+IYxRhv+TNW3vx7kntQAUEghBW+CQPbbgZwAWKUEARBXj1OZ2Rr837X6bP0eSVLZ+AhNuLuh6iUW8W1hAGAT9ADinDKysrVlX5okqVrJGLfnnEPAR05k6gSLQeMKSj2ZqV6TV+iz9XsUHGSpSFSo/kw9pe5v/aBvfz3o6/IAwBYCPgC++eabqly5siIiItSwYUN98803vi7pqvHjjiPKyHKoRGy4Kie49wAWiw5z9QJu2pPmi/IQgPakntTf/7NMK7YfVmx4iN677wZ9++TNalE1QSdOZ6v3lBV6d9kOGWN8XSoAXNUCOgDOmDFDAwYM0DPPPKPVq1frpptu0u23366dO3f6urSrwgcrd0mSWl9bQpZleTxfu1ycJGnF9sNXtC4EnsPHT+vNxVt129il+mVvmkrEhmvGQ03V9JriigkP0Tu9G6ljvbLKchg9/8kGdX/rB339yz5lnrmNIQDAnWUC+E/lG264Qddff70mTJjgarvuuuvUqVMnJScnF/j6Y8eOKT4+XqmpqYqLi7ucpV5RDofR1GU7NOLTjZKkeY+2UO1y8R7bfbBip4bOWq+I0CB1bVhe11coqrJFIlU0KkxRYcEKCwlSaHCQQoMthQYHKSw4SEFBnkHSjowxchgp22FkZBRkWQqyLFmSLEv5BmZ/YIyRMZKR5HB9f+bfXN87jJFRTpvcHud8bkY5O3HuJ9thlJ6RpfRTWUo7laUjJ05r1+GT+v3wcf26L10//5kq5/+p6icW0b/+0UAVikd51Pb2N9v1yvzNOp119v7VdcvHq1LxaJUvGqlS8RGKDQ9RTESIYsJDFBkWrJCgnJ/RkOAghQbl/BsSbCk0KEjO02hZUs7ZdX7vbLdyfX+2DcDVzV9/fxdGwAbA06dPKyoqSh999JH+9re/udr79++vNWvWaMmSJR6vycjIUEbG2UkPx44dU2Ji4iX/Afpi/R59/vNe1+O8p8jjhJm8D8825D27Ho9llJVtlJHl0OkshzKysrUn9ZT2n1ne5aGkKhp6+3X51pmRla1e76zQ8kL0AAYHWQq2LFlWzvc5wSnX9+cIiPn/lOb/o3uun+j8mk2uoOL83hlMcocVV+hxGGWfCT7nY1lyvTdnSHA+DjqTICxJQUFnn8vJDc7XKFegtM6ESvc2j/qM+/tx5PPenP86HGffq9t2ytmncn2fe5++VLtcnHo3q6y/NSin4PP8IfHHkROa/O0OzV27WwfTfbtO5fnCoutRrn9cIVLnD5HeZMzcmzhDqZXPk1aebXLv/7z7cKujoNc62869XX7BOXeTN/s4V53yYju3Y+UK+5415Tr+RdSp83ye+Z6T89SZ//n03M7bOs8+Luj43m2n/I5fiDrb1SmrdnXL6FIiAAbwLOCDBw8qOztbpUqVcmsvVaqU9u7dm+9rkpOTNWLEiMte2+Z9afp07Z+X/TjnExseov63VtN9LSqfc5vwkGBNf+BGLdmyX9/8elAb/jymg2kZOnLitE5lOpSZ7VCWwz01ZDuMss8R3PyJMVK2McpZnMT/329hOYORM/gGWZZiwkMUG5HTOxcfGaryRaJUoXiUKhSLUuNKxVQ6PsKrfZcvGqXnO9TUs+2u09YD6Vr/R6p2Hz2pP46c0L5jGTqekZXT25iRpZOns10/p1nZRpkOxyUNus4/HFwP3J+9dAcC/Fj1UrGSLm0ARAAHQKe8f3UaY845hDN06FANGjTI9djZA3ipJVUvofjIUPc682yTt0aPv9zO82TefYUGWwoPyRmyDQsOUmxEiOolFlFEaHCBtQYHWbq5RindXKNUvs87HDm/VDOzjU5n5YRC55Cfw3Fm+M8YGWOU7cgJiOfq3cj3r/Fz9JSccx/n3NZyhZLcPXZuQ4BWTu9lUJBy/j3TY2lZZ3vZHPn86zDm7HDpmWCYX89j7m0cZ8KCsy2/3rygXHW7DT/rbI+hpZx6rbzvL08Ac3tNnvd/5jBuvY9Bzh4sK2/P5Jkezly15O4FvZLD40FBlqqXij3zy8N72Q7jCoUevZ/G+c/ZXmDXU8bk+v7sdsq1nVu73AOis6e/MAH03L3dnqMAuTd1HSvffRX02vMcI9eGud/j+erOb7u8n4l7m9uezvPa3Mc79/vN/T5U2Pfrtp3nMeT1Z+W+j3O9D6/fr5efad6azvnaS/F+8zne+erM3Vi3fBGPmnHxAjYAJiQkKDg42KO3b//+/R69gk7h4eEKDw/P97lLqUGFompQoehlP86VEBRkKTwoWOEhki7/RwdctOAgS8FBBf/xAwB2FrCzgMPCwtSwYUMtWLDArX3BggVq1qyZj6oCAAC4/AK2B1CSBg0apJ49e6pRo0Zq2rSpJk2apJ07d+rhhx/2dWkAAACXTUAHwL///e86dOiQRo4cqT179qh27dr6/PPPVbFiRV+XBgAAcNkE7DIwlwLTyAEAsB9+fwfwNYAAAACBigAIAAAQYAiAAAAAAYYACAAAEGAIgAAAAAGGAAgAABBgCIAAAAABhgAIAAAQYAiAAAAAASagbwV3sZw3UTl27JiPKwEAAN5y/t4O5JuhEQAvQlpamiQpMTHRx5UAAIDCSktLU3x8vK/L8AnuBXwRHA6H/vzzT8XGxsqyLF+Xc8UcO3ZMiYmJ2rVrV8DeQ9FuOGf2xHmzH86ZPRhjlJaWprJlyyooKDCvhqMH8CIEBQWpfPnyvi7DZ+Li4vgfnM1wzuyJ82Y/nLOrX6D2/DkFZuwFAAAIYARAAACAAEMARKGFh4dr2LBhCg8P93Up8BLnzJ44b/bDOYNdMAkEAAAgwNADCAAAEGAIgAAAAAGGAAgAABBgCIAAAAABhgCIQnnzzTdVuXJlRUREqGHDhvrmm298XRJyWbp0qTp06KCyZcvKsizNmTPH7XljjIYPH66yZcsqMjJSrVq10oYNG3xTLCRJycnJaty4sWJjY1WyZEl16tRJmzdvdtuG83b1mTBhgurWreta8Llp06b64osvXM9zznC1IwDCazNmzNCAAQP0zDPPaPXq1brpppt0++23a+fOnb4uDWccP35c9erV0/jx4/N9fsyYMRo7dqzGjx+vlStXqnTp0mrTpo3rvta48pYsWaK+ffvqhx9+0IIFC5SVlaXbbrtNx48fd23Debv6lC9fXi+99JJWrVqlVatW6eabb9Ydd9zhCnmcM1z1DOClJk2amIcfftitrUaNGuapp57yUUU4H0lm9uzZrscOh8OULl3avPTSS662U6dOmfj4eDNx4kQfVIj87N+/30gyS5YsMcZw3uykaNGi5u233+acwRboAYRXTp8+rR9//FG33XabW/ttt92m77//3kdVoTC2b9+uvXv3up3D8PBwJSUlcQ6vIqmpqZKkYsWKSeK82UF2drY+/PBDHT9+XE2bNuWcwRYIgPDKwYMHlZ2drVKlSrm1lypVSnv37vVRVSgM53niHF69jDEaNGiQWrRoodq1a0vivF3N1q9fr5iYGIWHh+vhhx/W7NmzVbNmTc4ZbCHE1wXAXizLcntsjPFow9WNc3j16tevn9atW6dvv/3W4znO29Xn2muv1Zo1a3T06FHNnDlT99xzj5YsWeJ6nnOGqxk9gPBKQkKCgoODPf563b9/v8dfubg6lS5dWpI4h1epRx99VHPnztWiRYtUvnx5Vzvn7eoVFhamqlWrqlGjRkpOTla9evX0+uuvc85gCwRAeCUsLEwNGzbUggUL3NoXLFigZs2a+agqFEblypVVunRpt3N4+vRpLVmyhHPoQ8YY9evXT7NmzdLXX3+typUruz3PebMPY4wyMjI4Z7AFhoDhtUGDBqlnz55q1KiRmjZtqkmTJmnnzp16+OGHfV0azkhPT9fWrVtdj7dv3641a9aoWLFiqlChggYMGKDRo0erWrVqqlatmkaPHq2oqCj16NHDh1UHtr59+2r69On65JNPFBsb6+o1io+PV2RkpCzL4rxdhZ5++mndfvvtSkxMVFpamj788EMtXrxYX375JecM9uDDGciwoTfeeMNUrFjRhIWFmeuvv961VAWuDosWLTKSPL7uueceY0zOkiLDhg0zpUuXNuHh4aZly5Zm/fr1vi06wOV3viSZKVOmuLbhvF19+vTp4/p/YYkSJcwtt9xi5s+f73qec4arnWWMMT7KngAAAPABrgEEAAAIMARAAACAAEMABAAACDAEQAAAgABDAAQAAAgwBEAAAIAAQwAEAAAIMARAAMjDsizNmTPHZ8e2LEtFihS55PtOSUlx7X/AgAGXfP8A7IMACABXmSlTpmjLli1ebXv69GklJCRo1KhR+T6fnJyshIQEnT59Wn//+9+1Z88eNW3a9FKWC8CGCIAAbCkzM9PXJVw2RYoUUcmSJb3aNiwsTHfffbdSUlKU342dpkyZop49eyosLEyRkZEqXbq0wsLCLnXJAGyGAAjgohhjNGbMGFWpUkWRkZGqV6+ePv74Y9fzixcvlmVZWrhwoRo1aqSoqCg1a9ZMmzdvdtvPp59+qoYNGyoiIkJVqlTRiBEjlJWV5XresixNnDhRd9xxh6Kjo109XqNGjVLJkiUVGxur+++/X0899ZTq168vSVq6dKlCQ0O1d+9et2MNHjxYLVu29Po9rl+/XjfffLMiIyNVvHhxPfjgg0pPT3d7j02aNFF0dLSKFCmi5s2b6/fff5ckrV27Vq1bt1ZsbKzi4uLUsGFDrVq1yutje/P53Hfffdq2bZuWLl3q9ppvvvlGv/76q+67775CHw+An/PtrYgB2N3TTz9tatSoYb788kuzbds2M2XKFBMeHm4WL15sjDFm0aJFRpK54YYbzOLFi82GDRvMTTfdZJo1a+bax5dffmni4uJMSkqK2bZtm5k/f76pVKmSGT58uGsbSaZkyZLmnXfeMdu2bTM7duww7733nomIiDCTJ082mzdvNiNGjDBxcXGmXr16rtdVr17djBkzxvU4MzPTlCxZ0kyePPmc70mSmT17tjHGmOPHj5uyZcuazp07m/Xr15uFCxeaypUrm3vuuce1v/j4ePP444+brVu3mo0bN5qUlBTz+++/G2OMqVWrlrn77rvNpk2bzJYtW8x///tfs2bNGq+OXZjPp3Hjxq6anHr37m2aNGnicYykpCTTv3//c9YAwP8RAAFcsPT0dBMREWG+//57t/b77rvPdO/e3RhzNgD+73//cz3/2WefGUnm5MmTxhhjbrrpJjN69Gi3fUybNs2UKVPG9ViSGTBggNs2N9xwg+nbt69bW/Pmzd0C4Msvv2yuu+461+M5c+aYmJgYk56efs73lTuETZo0yRQtWtRt+88++8wEBQWZvXv3mkOHDhlJrsCbV2xsrElJSTnnsc53bCdvPp8JEyaY6Ohok5aWZowxJi0tzURHR5v//Oc/HscgAAJgCBjABdu4caNOnTqlNm3aKCYmxvX17rvvatu2bW7b1q1b1/V9mTJlJEn79++XJP34448aOXKk2z4eeOAB7dmzRydOnHC9rlGjRm773Lx5s5o0aeLWlvdx7969tXXrVv3www+SpMmTJ+vOO+9UdHS0V+9x06ZNqlevntv2zZs3l8Ph0ObNm1WsWDH17t1bbdu2VYcOHfT6669rz549rm0HDRqk+++/X7feeqteeuklj8/FG958Pt27d5fD4dCMGTMkSTNmzJAxRv/4xz8KfTwA/o8ACOCCORwOSdJnn32mNWvWuL42btzodh2gJIWGhrq+tyzL7fUOh0MjRoxw28f69ev166+/KiIiwvW6/EKbc19OJs9EiJIlS6pDhw6aMmWK9u/fr88//1x9+vTx+j0aYzyOkffYU6ZM0bJly9SsWTPNmDFD1atXdwXO4cOHa8OGDWrXrp2+/vpr1axZU7Nnz/b6+JJ3n098fLy6du2qKVOmuGrq2rWr4uLiCnUsAIEhxNcFALCvmjVrKjw8XDt37lRSUtIF7+f666/X5s2bVbVq1UK97tprr9WKFSvUs2dPV1t+Eyzuv/9+/eMf/1D58uV1zTXXqHnz5l4fo2bNmpo6daqOHz/uCqDfffedgoKCVL16ddd2DRo0UIMGDTR06FA1bdpU06dP14033ihJql69uqpXr66BAweqe/fumjJliv72t795XYO3n899992nVq1aad68efruu+80evRor48BILAQAAFcsNjYWD3++OMaOHCgHA6HWrRooWPHjun7779XTEyM7rnnHq/28/zzz6t9+/ZKTExUt27dFBQUpHXr1mn9+vXnXN9Okh599FE98MADatSokav3bd26dapSpYrbdm3btlV8fLxGjRqlkSNHFuo93nXXXRo2bJjuueceDR8+XAcOHNCjjz6qnj17qlSpUtq+fbsmTZqkjh07qmzZstq8ebO2bNmiXr166eTJk3riiSfUtWtXVa5cWX/88YdWrlypLl26FKoGbz+fpKQkVa1aVb169VLVqlULNdMZQGBhCBjARXnhhRf0/PPPKzk5Wdddd53atm2rTz/9VJUrV/Z6H23bttW8efO0YMECNW7cWDfeeKPGjh2rihUrnvd1d911l4YOHarHH39c119/vbZv367evXu7DRtLUlBQkHr37q3s7Gz16tWrUO8vKipKX331lQ4fPqzGjRura9euuuWWWzR+/HjX87/88ou6dOmi6tWr68EHH1S/fv300EMPKTg4WIcOHVKvXr1UvXp13Xnnnbr99ts1YsSIQtVQmM+nT58+OnLkSKGGuQEEHsvkvWAGAGysTZs2Kl26tKZNm+bW/sADD2jfvn2aO3eujyrzjmVZmj17tjp16nTZjtGqVSvVr19f48aNu2zHAHB1YwgYgG2dOHFCEydOVNu2bRUcHKwPPvhA//vf/7RgwQLXNqmpqVq5cqXef/99ffLJJz6s1nvdu3dX8eLF9ccff1zS/b7//vt66KGHdPLkSddi2QACEz2AAGzr5MmT6tChg3766SdlZGTo2muv1bPPPqvOnTu7tmnVqpVWrFihhx56SK+99poPq/XO1q1bJUnBwcGFGkb3Rlpamvbt2ycp53ZzCQkJl3T/AOyDAAgAABBgmAQCAAAQYAiAAAAAAYYACAAAEGAIgAAAAAGGAAgAABBgCIAAAAABhgAIAAAQYAiAAAAAAYYACAAAEGD+Hy/rrnrlowifAAAAAElFTkSuQmCC", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "I_0 = sumSpec = float(np.sum(np.array(eels_dataset)))\n", "plt.figure()\n", "plt.plot(energy_scale,eels_dataset/sumSpec*1e2)\n", "plt.title ('Spectrum '+eels_dataset.title);\n", "plt.xlabel('energy loss [eV]')\n", "plt.ylabel('% scattering Intensity');\n", "#plt.xlim(-10,50)\n", "#plt.ylim(0,8);\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "The metadata are as important as the values of a spectrum.\n", "\n", "Make sure all metadata are saved, whcih ususally means to store data in the proprietary format of the software used." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Navigation\n", "- **Up Chapter 4: [Imaging](CH4_00-Spectroscopy.ipynb)** \n", "- **Back: [Overview](CH4_00-Spectroscopy.ipynb)** \n", "- **Next: [Fit Zero-Loss](CH4_02-Fit_Zero_Loss.ipynb)** \n", "- **List of Content: [Front](../_MSE672_Intro_TEM.ipynb)** \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false }, "vscode": { "interpreter": { "hash": "838e0debddb5b6f29d3d8c39ba50ae8c51920a564d3bac000e89375a158a81de" } } }, "nbformat": 4, "nbformat_minor": 4 }