{ "cells": [ { "cell_type": "markdown", "id": "b6a1a6b4-30ee-4166-b85a-d094cd968ede", "metadata": {}, "source": [ "# Cell Capacity\n", "The battery data toolkit uses a simple defintion of the charge and discharge capacity of a battery with nuanced implications.\n", "In short, we integrate the power and current moving out of the battery over time then \n", "use the maximum change from the start of the cycle to determine the capacity.\n", "We illustrate the subtle parts below." ] }, { "cell_type": "code", "execution_count": 1, "id": "82b5f3d6-134d-400d-8f70-451b79729058", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "from batdata.postprocess.integral import StateOfCharge, CapacityPerCycle\n", "from batdata.data import BatteryDataset\n", "from pathlib import Path" ] }, { "cell_type": "markdown", "id": "c532e5dc-cd29-41e5-9000-ce397d808700", "metadata": {}, "source": [ "## Load Example Data\n", "We have two simple cells that vary only by the where the \"cycle\" starts." ] }, { "cell_type": "code", "execution_count": 2, "id": "55be6911-37fe-4cff-afdb-58d772ebead5", "metadata": {}, "outputs": [], "source": [ "from_charged = BatteryDataset.from_batdata_hdf('../../tests/files/example-data/single-resistor-constant-charge_from-charged.hdf')" ] }, { "cell_type": "code", "execution_count": 3, "id": "861e8753-ede4-4a26-8a0f-cd59502e7e2c", "metadata": {}, "outputs": [], "source": [ "from_discharged = BatteryDataset.from_batdata_hdf('../../tests/files/example-data/single-resistor-constant-charge_from-discharged.hdf')" ] }, { "cell_type": "markdown", "id": "dae3e6ed-5460-4401-bb41-aa65d6699864", "metadata": {}, "source": [ "## Step 1: Intergrate Current and Power\n", "First integrate the current ($I$) and power output ($IV$) of a battery to determine the amount of charge and energy transfered from the battery during each cycle.\n", "\n", "The `StateOfCharge` tool in battery-data-toolkit computes these integrals." ] }, { "cell_type": "code", "execution_count": 4, "id": "7a6fa71c-8266-451d-bab4-d3679997ca2a", "metadata": {}, "outputs": [], "source": [ "charge = StateOfCharge()" ] }, { "cell_type": "code", "execution_count": 5, "id": "bbb2845d-53ca-4231-a2df-ab88711d7a4f", "metadata": {}, "outputs": [], "source": [ "charge.compute_features(from_charged);\n", "charge.compute_features(from_discharged);" ] }, { "cell_type": "code", "execution_count": 6, "id": "d97343f2-b83b-473f-bca0-48ff4d71bf38", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axxs = plt.subplots(2, 2, sharex=True, sharey='row', figsize=(6., 4.))\n", "\n", "for axs, data, label in zip(axxs.T, [from_charged, from_discharged], ['Charged', 'Discharged']):\n", " axs[0].set_title(f'From {label}', fontsize=10)\n", " axs[0].plot(data.raw_data['test_time'], data.raw_data['cycle_energy'])\n", " axs[1].plot(data.raw_data['test_time'], data.raw_data['cycle_capacity'])\n", "\n", "axxs[0, 0].set_ylabel('$\\Delta$Energy (W-hr)')\n", "axxs[1, 0].set_ylabel('$\\Delta$Capacity (A-hr)')\n", "\n", "for ax in axxs[-1, :]:\n", " ax.set_xlabel('Time (s)')\n", "\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "1d1ee766-f95e-4d27-b583-841875f012a7", "metadata": {}, "source": [ "## Step 2: Assess Whether the Starting Point is Charged\n", "We determine the starting point of the battery as \"charged\" or \"discharged\" as whether the maximum change from the start is positive or negative.\n", "It's clear in the image above that the \"from charged\" battery releases charge in the beginning of the cycle before returning to zero, \n", "and the \"from discharged\" doe sthe opposite.\n", "\n", "> Note: This definition assumes that a cycle returns a battery to as close to the initial charging state as possible.\n" ] }, { "cell_type": "markdown", "id": "8c92b0e7-a965-437a-869b-581e03a0d04a", "metadata": {}, "source": [ "## Step 3: Assign Capacities\n", "We set capacities are using the maximum change from starting capacity, and \n", "the difference between that maximum and the change between the start and end of a cycle.\n", "What each difference represents depends on whether the battery starts by discharging or charging." ] }, { "cell_type": "code", "execution_count": 7, "id": "97651e21-93b4-4825-8747-1bc006bbf6d2", "metadata": {}, "outputs": [], "source": [ "capc = CapacityPerCycle()" ] }, { "cell_type": "code", "execution_count": 8, "id": "d7f1693b-5dd9-40ba-8cd6-03ec505da787", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axxs = plt.subplots(2, 2, sharex=True, sharey='row', figsize=(6., 4.))\n", "\n", "for axs, data, label in zip(axxs.T, [from_charged, from_discharged], ['Charged', 'Discharged']):\n", " capc.compute_features(data)\n", "\n", " # Start with the changes over time\n", " axs[0].set_title(f'From {label}', fontsize=10)\n", " axs[0].plot(data.raw_data['test_time'], data.raw_data['cycle_energy'])\n", " axs[1].plot(data.raw_data['test_time'], data.raw_data['cycle_capacity'])\n", "\n", " # Annotate the capacities/energies\n", " row = data.cycle_stats.iloc[0]\n", " axs[0].set_xlim(ax.get_xlim())\n", " for ax in axs:\n", " ax.plot([0, 3600], [0, 0], 'k-', lw=1)\n", "\n", " # Plot the energies\n", " for i, t in enumerate(['energy', 'capacity']):\n", " first_level = (-row[f'{t}_discharge'] if label == 'Charged' else row[f'{t}_charge'])\n", " axs[i].arrow(3600, 0, 0, first_level, color='red')\n", " axs[i].text(3700, first_level / 2., '$' + t[0].upper() + '_{' + (\"dhg\" if label == \"Charged\" else \"chg\") + '}$')\n", " \n", " axs[i].plot([3600, 7200], [first_level] * 2, 'k-', lw=1)\n", " second_level = (-row[f'{t}_discharge'] if label != 'Charged' else row[f'{t}_charge'])\n", " axs[i].arrow(7200, first_level, 0, second_level, color='red')\n", " axs[i].text(7200, first_level / 2., '$' + t[0].upper() + '_{' + (\"dhg\" if label != \"Charged\" else \"chg\") + '}$', ha='right')\n", " \n", "\n", "axxs[0, 0].set_ylabel('$\\Delta$Energy (W-hr)')\n", "axxs[1, 0].set_ylabel('$\\Delta$Capacity (A-hr)')\n", "\n", "for ax in axxs[-1, :]:\n", " ax.set_xlabel('Time (s)')\n", "\n", "fig.tight_layout()\n", "fig.savefig('figures/explain-capacities.png', dpi=320)" ] }, { "cell_type": "markdown", "id": "fc94d70e-1994-4780-949a-89da4cfa2606", "metadata": {}, "source": [ "The charge and discharge energies (or capacities) for the battery is the same for both cycles, we just have to look a different parts of the curve for each cycle." ] }, { "cell_type": "markdown", "id": "a32509da-45ae-46a3-a202-705244623249", "metadata": {}, "source": [ "## Demonstrate on a Complex Cycling\n", "As an example for how the capacity measurements aren't always meaningful, let's consider the same battery but with a charging cycle which is interrupted with a short discharge" ] }, { "cell_type": "code", "execution_count": 9, "id": "f913a9ed-d564-4f93-acb4-cdc2b3c1a6a0", "metadata": {}, "outputs": [], "source": [ "complex = BatteryDataset.from_batdata_hdf('../../tests/files/example-data/single-resistor-complex-charge_from-discharged.hdf')" ] }, { "cell_type": "code", "execution_count": 10, "id": "a812f84f-b280-46b9-94d1-06dbfb9ddf07", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Current (A)')" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(3., 1.8))\n", "\n", "ax.plot(complex.raw_data['test_time'], complex.raw_data['current'])\n", "\n", "ax.set_xlabel('Time (s)')\n", "ax.set_ylabel('Current (A)')" ] }, { "cell_type": "markdown", "id": "47723e9e-f3dc-4d26-b170-11eab42196bd", "metadata": {}, "source": [ "It is still possible and meaningful to measure the change in charge and the energy added to the battery system." ] }, { "cell_type": "code", "execution_count": 11, "id": "cf3ee7d3-f30b-4e14-8a54-0f6c98ec32d6", "metadata": {}, "outputs": [], "source": [ "charge.compute_features(complex);" ] }, { "cell_type": "code", "execution_count": 12, "id": "402bbd26-88c2-4038-8735-cfd35c640b41", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAASIAAAFACAYAAAAYgnHnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOVUlEQVR4nO3deVhUZfvA8e+w7yCiLIqAibsiq1tZKmpqpllmpIi45F5q9VZvvZpWalbWL3NXQM1dU3tfyzLUTEVBEBRU3EVkU5F9nzm/P0iK3FiGOTPwfK5rritmznIfY27OeZb7UUiSJCEIgiAjPbkDEARBEIlIEATZiUQkCILsRCISBEF2IhEJgiA7kYgEQZCdSESCIMhOJCJBEGRnIHcAclOpVKSkpGBpaYlCoZA7HEGoNyRJIjc3FycnJ/T0Hn/P0+ATUUpKCs7OznKHIQj11s2bN2nevPljt2nwicjS0hIo/8eysrKSORpBqD9ycnJwdnau+I49ToNPRPcfx6ysrEQiEoQ6UJUmD9FYLQiC7EQiEnRSTNI9Fv18gcz8ErlDEdSgwT+aCbrn+p18gtZFkltcRkzSPTZN6IqhvvibqsvE/z1BpxSVKpm6KYbc4jIAIq9lMv+/52SOSqgtjSei0tJSbt68SWJiIpmZmZo+vaDj5v03gXOpOTQ2N+LTYR1RKGDjiRtsPpkkd2hCLWgkEeXm5rJixQqeffZZrKyscHV1pV27djRp0gQXFxcmTpxIVFSUJkIRdNiu6GS2RN5EoYD/e82T0d1ceLtfawDm/hjPqeviD5uuqvNEtGTJElxdXQkNDcXf3589e/YQGxvLxYsXiYiIYO7cuZSVldG/f3+ef/55Ll26VNchCTooMS2XD/ecBeCtvu487W4HwLTerRjcyZFSpcTk72NIySqUM0yhhhR1XbM6ICCAjz76iA4dOjx2u+LiYkJDQzEyMmLcuHF1GVIlOTk5WFtbk52dLcYRaam84jJeXHqUq3fyecbdjrBgP/T1/hqbUlBSxvDlx7mQlkunZtbsmNwdE0N9GSMWoHrfrTpPRNpOJCLtJkkS0zefZt/ZVBytTfjfjKdpbGH8wHY3Mwt48buj3CsoZVgXJ74e2UXMHZRZdb5bGmusLi0tpW/fvuLRS6iWsOPX2Xc2FQM9Bd+97vXQJATgbGvGslFe6Osp2BObwpo/rmo4UqE2NJaIDA0NOXPmjKZOJ9QD0Tfu8dm+8wD8e1A7vF0aPXb7Hk/ZMeeF9gAs+vkCv1+8XecxCuqh0e770aNHs27dOk2eUtBRd/OKmb45hjKVxOBOjgT3dK3SfmO6uzDSxxmVBDM2x3DtTn7dBiqohUZHVpeVlRESEsJvv/2Gt7c35ubmlT5fsmSJJsMRtJRSJTFzWyyp2UW0tDNn0cudqtzeo1AomD+sA5cycolJymLihlPsntoDSxPDOo5aqA2NJqL4+Hi8vLwAuHjxYqXPRMOicN+34Zf449IdTAz1WDHau9pJxNhAn5WjvXnxu2NczshjxpbTrB3jg4GYBqK1RK+Z6DXTKr9fvM3Y0EgkCZa86sFwr8cX1HqcM8lZvLoqgqJSFcE9XZk75PFDSAT10speM0F4kltZhczcehpJgte7tqhVEgLo3NyGJa92ASD02HU2nbyhhiiFuqDx2ffh4eGEh4eTkZGBSqWq9FlISIimwxG0REmZimmbYrhXUErHZlYVvV+1NaiTI2/3a81XBy4yZ28Cbo3N6dHKTi3HFtRHo3dE8+bNo3///oSHh3Pnzh3u3btX6SU0XAt+Ok/szSysTAxYMcpbrSOjp/dpxbAuTihVEpO/j+bq7Ty1HVtQD43eEa1cuZKwsDACAwM1eVpBy+2NvUXY8esAfD2yC862Zmo9vkKhYNHLnbmRWcDppCzGry/vSbMxM1LreYSa0+gdUUlJCT169NDkKQUtl5CSzXu7yge6Tuv9FH3b2dfJeUwM9Vkd6EMzG1Ou3cln6qYYSpWqJ+8oaIRGE9GECRPYvHmzJk8paLGsghImfx9NUamKXq2bMLtfmzo9XxNLY9YG+WBupM/xK3eZszeBBt5prDXq/NFs9uzZFf+tUqlYvXo1v/32G507d8bQsPL4EDGgseFQqiRmbDnNzcxCWtia8e1rXSrNqK8r7Ryt+L/XPJm48RRbIpNo1dSC8U+71fl5hcer80R0+vTpSj936dIFKB/c+HdiQGPDsuRAYsWgxZWjvTXaXuPf3p5/D2zHZz+d57N952hpZ07vtk01dn7hQXWeiA4dOlSnx1+4cCE//PADFy5cwNTUlB49evD555/Tpk3d3uYLNbc/Po1lh64A8PnLnWnvpPmBpBOeceNSRi7bTyUzY8tptk/qLkscQjnZBjQeO3aM4uLiWh/n999/Z9q0aZw4cYIDBw5QWlpK//79yc8Xkx210eWMXN7eHgvAuJ5uDO3STJY4FAoFnw7rRLeWtuQVlzEuLIq07CJZYhFknOJhZWVFbGwsLVu2VOtxb9++TdOmTfn999/p1avXE7cXUzw0J7eolKHLjnH1dj5d3Wz5XguWAcouKGX4imNcuZ1PO0crdkzujoWxWGVLHXRiikdd5b/s7GwAbG1t6+T4Qs2oVBKzt8dx9XY+DlYmLBvlJXsSArA2MyQs2A87CyPOp+YwbVMMZaJbX+Pk/01QI5VKxcyZM+nZsycdO3Z86DbFxcXk5ORUegl1b/nhyxw4l46Rvh4rA72xe0SlRTk425qxLsgXE0M9fr94m/+Ibn2N00giunbt2gPvrVq1Cnt79Q5emzZtGvHx8WzduvWR2yxcuBBra+uKl7Ozs1pjEB50KDGDrw6Ul32ZP7QDXZxt5A3oITycbfj2NU8UCtgSmcTK30WpWU3SSBuRnp4eLi4u9O7du+LVvHntZlb/0/Tp09m7dy9HjhzBze3R40KKi4srNZLn5OTg7Ows2ojqyLU7+Qz97ig5RWUE+LVg4fBOcof0WKHHrjHvz5VjlwZ4MsTDSeaIdFd12og00ip38OBBDh8+zOHDh9myZQslJSW0bNmSPn36VCSmmt4dSZLEjBkz2L17N4cPH35sEgIwNjbG2Fh7Hgvqs5yiUiasjyKnqAzPFjZ8/KJ6ZtTXpeCebiRlFhB67Dpv74jDwdoEX1fR3ljXNN5rVlRUxPHjxysSU2RkJKWlpbRt25aEhIRqH2/q1Kls3ryZvXv3Vho7ZG1tjamp6RP3F71mdUOpkpiwPopDibdxsDLhxxk9aWppIndYVXJ/lv6Bc+nYmBmye2pP3OzMn7yjUIlOrGtWUlLCsWPH+Pnnn1m1ahV5eXkolcpqH+dRI7JDQ0MZO3bsE/cXiahuLPr5Ait/v4KxgR47Jnenc3MbuUOqlsISJa+tjiAuORuXxmb8MKXHI5cyEh5OK7vvS0pKOHLkCPPmzaN3797Y2NgwefJk7t27x3fffffQBu2qkCTpoa+qJCGhbuyNvcXK38tHTi9+pbPOJSEAUyN91gb50ryRKTfuFjBhwykKS6r/h1KoGo3cEfXp04eTJ0/i5ubGs88+yzPPPMOzzz6Lo6NjXZ/6icQdkXqdSc5ixMoIistUTHnuKd57vq3cIdXK5YxcXl4RQXZhKX3bNmVVoLcowl9FWndH9Mcff9C4cWP69OlD37596devn1YkIUG9MnKKeGNDNMVlKvq0bco7/XV/vl+rppasC/LB2ECP8AsZfLg7XowxqgMaSURZWVmsXr0aMzMzPv/8c5ycnOjUqRPTp09n586d3L4tVuTUdcVlSiZ9H01aThFPNTHnGw2V9dAEH1dblgZ4oqeAbadu8vWBi0/eSagWWRqrc3NzOXr0KIcOHeLw4cPExcXh7u7+QGkQTRCPZrUnSRLv7jzDzuhkrEwM2Dv96XrZy7T5ZBL/3n0WgE+GdSSwm4vMEWk3rXs0+ydzc3NsbW2xtbWlUaNGGBgYcP78eTlCEdQg5Nh1dkYno6eA7173qpdJCMqXOJrp7w7AnL3x7I9PlTmi+kMjiUilUhEZGcnixYsZOHAgNjY29OjRg+XLl+Pg4MCyZcu4elUMqddFRy7e5rN95SORPxzcnl6tm8gcUd16q687AX4tkCR4c2sskdcy5Q6pXtDIyGobGxvy8/NxcHCgd+/efP311zz33HM89dRTmji9UEcuZ+QybXMMKgle8W7OuJ6ucodU5xQKBZ8M7cCdvGIOnEtnwvoodkzuQRsHS7lD02kaaSNatWoVvXv3pnXr1nV9qmoTbUQ1k5lfwrBlx0jKLMDHpRGbJnbF2EB9a5Fpu6JSJaPWniT6xj0crEz4YWoPnGyePJK/IdG6NqJJkyZpZRISaqa4TMmkjadIyiygha0ZqwK9G1QSgvLlidYF+dCqqQVpOUWMCYkkq6BE7rB0Vp0noqSkpGptf+vWrTqKRFAHSZL44IezRF2/h6WJASFjfRrs1AcbMyPWj/PDwcqEyxl5jA2NIr+4TO6wdFKdJyJfX18mTZpEVFTUI7fJzs5mzZo1dOzYkV27dtV1SEItLD98hR9ibqGvp2DZ6160atqw20aa2ZiyYbwfNmaGxN7M4o2NpyguE1NBqqvOG6vPnTvHZ599Rr9+/TAxMcHb2xsnJydMTEy4d+8e586dIyEhAS8vLxYvXsygQYPqOiShhn4+m8oXvyQC8PGLHep9D1lVtba3JCzYj9fXnODY5bu8tSWW7173FFNBqkFjAxoLCwvZt28fR48e5caNGxQWFmJnZ4enpycDBgx4ZGnXuiYaq6vmTHIWr66KoKhURXBPV+YO6SB3SFrn2OU7BIdGUaJUMcK7OYtf6dyg1+vTiTIg2kIkoidLySpk6LJj3M4tpnebJqwN8q030zfUbX98GlM3RaOSYMLTbnw4uF2DTUZa12sm6K784jImrD/F7dxi2jpYsvR1L5GEHuP5jg58/nJnANYevcayQ5dljkg3iEQkPJJSJfHW1ljOpeZgZ2HE2iAfseZXFYzwceY/L5SXxf3y14tsjLgub0A6QCQi4ZE+23ee386nY2Sgx+oxPjRvZCZ3SDpj/NNuvNn3z3lpPyawN1YMS3kckYiEh1p39Bohx8qrZn41wgOvFo1kjkj3zPJ3J6i7C5IEs7fHEX4+Xe6QtJZGE1FQUBBHjhzR5CmFGtgfn8qnf05k/WBgW7GkTg0pFArmDunAS57NUKokpmyK4eilO3KHpZU0moiys7Px9/fH3d2dBQsWiFHUWij6xj3e2hqLJEFgNxfe6NVS7pB0mp6egsWvdKZ/e3tKylRM2BDFyat35Q5L62g0Ee3Zs4dbt24xZcoUtm3bhqurKwMHDmTnzp2UlpZqMhThIa7fyWfihlMUl6no27Ypc4e0b7Bdz+pkqK/H0tc9ea5NE4pKVYwLiyIm6Z7cYWkVjbcRNWnShNmzZxMXF8fJkydp1aoVgYGBODk5MWvWLC5duqTpkATKZ9OPDY0kM7+ETs2sWSpGBquVsYE+K0d70+OpxuSXKAkKiST+VrbcYWkN2X7TUlNTOXDgAAcOHEBfX59BgwZx9uxZ2rdvz9dffy1XWA1SUamSCeujuH63gOaNTFk31gczI9FNr24mhvqsDfLB17URuUVlBK47yYW0HLnD0goaTUSlpaXs2rWLF154ARcXF3bs2MHMmTNJSUlh/fr1/Pbbb2zfvp358+drMqwGTamSmLk1lpikLKxNDQkL9tWZFVl1kZmRASFjffFwtuFeQSmj157kckae3GHJTqN/9hwdHVGpVAQEBBAZGUmXLl0e2Ob+4ouCZiz46Tz7E9Iw0tdjdaB3g59NrwmWJoZsCPYjYM0JzqXmMGrtCbZP6o5L4/pZ67sqNDrXbOPGjYwYMQITE+35i9uQ55qFHbvGx/8t76b/v9e6MLRLM5kjalgy80t4bXUEF9PzaGZjyrZJ3erVoFGtnWsWGBioVUmooZAkibPJ2ZSUqSreu5NXzMKfLwDw3vNtRRKSga25Ed9P6EpLO3NuZRUyau1JUrML5Q5LFhp9NJs9e/ZD31coFJiYmNCqVSuGDh2Kra2tJsOq1yRJ4t+749kSmcSori347KVOAGw4fp3iMhUezjZMflaMFZJLU0sTNk3syqurIrhxt4CA1SfY8kY3HK0bVv1rjT6a9e7dm5iYGJRKJW3alC9HfPHiRfT19Wnbti2JiYkoFAqOHj1K+/btNRJTfX80++rXRJYe/GsG+KF3nsPeypgeiw6SVVDK8lFeDOoklv+WW/K9AgLWnOBmZiEujc3YWg+SkdY+mg0dOhR/f39SUlKIjo4mOjqa5ORk+vXrR0BAALdu3aJXr17MmjVLk2HVW6HHrlVKQgBfH7jIjlPJZBWU4tLYjAEdHGSKTvi75o3M2PpGd5xtTblxt4DXVp8gJavhPKZpNBF98cUXfPLJJ5Wyo7W1NR9//DGLFy/GzMyMOXPmEB0dXeVjHjlyhCFDhuDk5IRCoWDPnj11ELnu2Rt7i3l/NkS/0781+958GoAf41JYerB80OiEp91EbSEt0szGtFIyCljTcJKRxueaZWRkPPD+7du3yckpH9hlY2NDSUnVl2XJz8/Hw8ODZcuWqS1OXff7xdu8vT0OgLE9XJnWuxUdnKx5oXP5I9idvBIamRnyireznGEKD3E/GbWwNWtQd0YafzQbN24cu3fvJjk5meTkZHbv3s348eMZNmwYAJGRkdVaA23gwIF8+umnvPTSS3UUtW45nXSPKd9HU6aSeNHDiTkv/DVfbFa/1ty/AQrs7oqpUcNai0xXlCejbrSwNSMps2EkI40molWrVtG3b19ee+01XFxccHFx4bXXXqNv376sXLkSgLZt27J27VpNhlVvXM7IY1xYFAUlSnq1bsKXIzzQ+9uj11NNLHjv+bb0at2kQSwPrcucHpKMbtXjZCRL8fy8vDyuXr0KQMuWLbGwsFDLcRUKBbt37664u3qY4uJiiouLK37OycnB2dlZ53vNbmUV8sqK46RmF+HhbMPmCV0xF2VddV5KViEBa05w424Bzrblj23NdGRpa63sNSstLaVv375cunQJCwsLOnfuTOfOndWWhKpq4cKFWFtbV7ycnXW/neROXjGBa0+Sml1Eq6YWhI71FUmonnCyMWXLxG64NDbjZmYhr66M4MbdfLnDUjuNJSJDQ0POnDmjqdM90gcffEB2dnbF6+bNm3KHVCs5RaUEhURy9U4+zWxM2TjeD1tzI7nDEtTo/mPa/RHYI1ZGcDkjV+6w1EqjbUSjR49m3bp1mjzlA4yNjbGysqr00lVFpUomhJ0iIaV8lY3vJ3TV+UFwwsM5WpuydVI32thbkpFbzMhVJziXUn9KiGj0/r2srIyQkBB+++03vL29MTevPNt4yZIl1T5mXl4ely//NWjv2rVrxMbGYmtrS4sWLWods7YqVaqYuimGyOuZWBobsH6cH252DXf2dkPQ1NKErW90IzDkJPG3cghYc4L14/zo4mwjd2i1pvEpHo8MRKHg4MGD1T7m4cOHH3rcoKAgwsLCnri/Lk7xUKkkZm2PZW9sCiaGemwc3xVfVzE/r6HILiwlODSSmKQsLIzL6xv5uWnf/3+x5HQ16FoikiSJuT8msCHiBgZ6CtaM8aF326ZyhyVo2P0VeCOu3sXEUI+1Y3x52t1O7rAq0cpes/v++OMPRo8eTY8ePSpW8di4cSNHjx7VdCg66esDF9kQcQOFAr561UMkoQbK3NiA0GBfnm39Z0H+9VE6vW6aRhPRrl27GDBgAKampsTExFSM58nOzmbBggWaDEUnrTt6jW//nMQ6f2hHUUOogTMx1Gf1GG8GdChfqmjSxmj2nUmVO6wa0Wgi+vTTT1m5ciVr1qzB0NCw4v2ePXsSExOjyVB0zpbIJD75X/kk1ncHtCGwm4vMEQnawNhAn+9e9+JFDyfKVBLTt8SwJTJJ7rCqTaOJKDExkV69ej3wvrW1NVlZWZoMRafsPp3Mv3efBeCNXi2Z+txTMkckaBNDfT2+HtmFAL8WSBJ88MNZlh++jC41/2o0ETk4OFTqar/v6NGjtGwpqgQ+zL4zqby9PQ5JgqDuLnwwsK1Y9FB4gL6eggUvdWRa7/I/Uov3J7Lgp/M6k4w0mogmTpzIW2+9xcmTJ1EoFKSkpLBp0ybeeecdpkyZoslQdMJv59J5a+tpVBKM9HFm7pAOIgkJj6RQKHh3QFs+GtwOgDV/XOPdnWcoU6qesKf8NDqg8f3330elUtG3b18KCgro1asXxsbGvPPOO8yYMUOToWi9IxdvM3VTDGUqiaFdnFgwvFOlmfSC8CgTnmmJjZkR7+06w87oZLILS1ka4ImJofaWfZFlHFFJSQmXL18mLy+P9u3ba3zi699p4ziiE1fvMjY0kqJSFQM7OrA0QCz/LFTfgXPpTNscQ0mZiq5utqwJ8sHKxPDJO6qJGNBYDdqWiKJv3CNw3UkKSpT0aduUlaO9MTIQSUiomRNX7zJx/Slyi8vo4GTF+nF+2FkYa+TcWp2IwsPDCQ8PJyMjA5Wq8rNrSEiIJkMBtCsRnU3O5vU1J8gtLuPpVnasDfLR6ttpQTfE38pmbGgkd/JKcG1sxvpxfhpZVVZrR1bPmzeP/v37Ex4ezp07d7h3716lV0N2PjWHwJCT5BaX4edqy+ox3iIJCWrRsZk1Oyb3oHkjU67fLeDlFceJu5kld1iVaPSOyNHRkcWLFxMYGKipUz6RNtwRnU/N4fU1J7hXUEoXZxu+n9AVC1HYTFCzjJwigsOiSEjJwdRQn+WjvOp0ipDW3hGVlJTQo0cPTZ5S6/09CXVubs36cX4iCQl1oqmVCdsmdecZdzsKS5VM2HCKrVoyClujiWjChAls3rxZk6fUav9MQhvHd8XaVHO9GkLDc79syCvezVGqJN7/4SxLDlyUfeCjRv/0FhUVsXr1an777Tc6d+5cab4Z1Kwwmq4SSUiQi6G+Hl+80hknaxO+PXiZb8MvkZpVyILhnTCUaZiIRhPRmTNn6NKlCwDx8fGVPmtII4ZFEhLkplAomN2/DQ7Wpny05yw7opNJzy1m+SgvWZoGxDgiDTdWiyQkaJvw8+lM33yawlIlHZysCBnri72VSa2Pq7WN1Q2dSEKCNurbzp6tb3SjsbkRCSk5DP3uGPG3sjUag0YS0aBBg8jO/uvCFi1aVKnsx927d2nfvr0mQpHNuRSRhATt5eFsw+6pPWnV1IK0nCJeXRXBgXOaq/iokUT0yy+/VFpddcGCBWRmZlb8XFZWRmJioiZCkcWZ5CwCRBIStFyLxmbsmtKDZ9ztKChR8sbGU6z946pGetQ0koj+eSENqVkq+kYmo9acJLuwfLCiSEKCNrM2NSRkrC+vdy0vsvbpvvP8e3c8pXVcSkS0EdWh41fuELgusnzahpst308QSUjQfob6enw2rCMfDW6HQlFepjg4NIrswtI6O6dGEpFCoXige76+d9cfTswgODSKghIlz7jbsT5YjJgWdIdCoWDCMy1ZE+iDmZE+Ry/fYfjyYyTdLaiT82nkmyFJEmPHjsXYuLz8QFFREZMnT65Y6fXv7Uf1wS8JaUzfHEOpUqJv26YsG+UlJrAKOsm/vT07JndnfNgprtzOZ9jyY6wY5UXXlo3Veh6NjCMKDg6u0nahoaF1HMmD1D2O6L9xKczcFotSJTGokwPfjPQU9YQEnZeeU8SE9ac4eysbAz0FnwzrSIDf45d01+p6RI8SHx9Px44dNX5edSaindHJ/GtnHCoJXvJsxhevdBaVFYV6o7BEyTs74yrWTvt4SHvG9nR75PY6M6AxNzeX1atX07Vr14qpH7rq+xM3eGdHeRIK8HPmqxEeIgkJ9YqpkT7fBXjydr/WNG9kygseTmo7tizflCNHjhAUFISjoyMffvghzZs319kufUmSWHboMh/tKZ87N7aHKwteEoXuhfpJoVAwo687v8zspdaSsxpLRGlpaSxatAh3d3cGDRpEWVkZ27dvJzU1lXnz5mkqDLWSJIkFP53ni1/KB2NO6/0Uc4e0r/c9goJgruYeYI30mg0ZMoTw8HB69+7Nxx9/zLBhwyp6zEA3u/LLlCre/+EsO6OTAfhocDsmPCMWiRSEmtDIHdG+ffsYPnw48+bNY9SoUZWSkLosW7YMV1dXTExM6Nq1K5GRkWo/x31FpUqmbophZ3Qy+noKvhzhIZKQINSCRhLR8ePHMTU1pU+fPrRp04b58+dz5coVtR1/27ZtzJ49m7lz5xITE4OHhwcDBgwgIyNDbee4L7eolODQKH49l46RgR4rRnnxindztZ9HEBoSjXbf5+fns23bNkJCQoiIiMDX15dRo0bRoUMH+vXrh1KprNFxu3btiq+vL9999x0AKpUKZ2dnZsyYwfvvv//YfavTxXg3r5ixoVGcvZWNhbEBa8b40P0p9Q7sEoT6Qmu7783NzRk3bhxHjx7l3Llz9OrViwULFuDv71/jY5aUlBAdHV3pGHp6evj7+xMREaGOsAFIySpkxKoIzt7KxtbciC0Tu4kkJAhqIttAlzZt2rB48WKSk5P54YcfGDx4cI2Oc+fOHZRKJfb29pXet7e3Jy0t7YHti4uLycnJqfR6kht383llxXGu3s7HydqEHZO706m5dY3iFQThQbKPuNPX12fYsGH8+OOPGjnfwoULsba2rng5Ozs/cR9bcyNsLYx4qok5O6f04KkmFhqIVBAaDp2fDm5nZ4e+vj7p6ZWryaWnp+Pg4PDA9h988AGzZ8+u+DknJ+eJycjSxJD1wX4oFApszY3UE7ggCBVkvyOqLSMjI7y9vQkPD694T6VSER4eTvfu3R/Y3tjYGCsrq0qvqmhsYSySkCDUEZ2/IwKYPXs2QUFB+Pj44OfnxzfffEN+fn6VZ/0LgiCvepGIRo4cye3bt5kzZw5paWl06dKF/fv3P9CA/TD3Ry9UpdFaEISqu/+dqsoIIa0pAyKX5OTkKjVYC4JQMzdv3qR588cP+m3wiUilUpGSkoKlpeVj57zdb9S+efOmRhZi1ARxTdpPl69HkiRyc3NxcnJCT+/xzdH14tGsNvT09J6Yrf+uOg3cukJck/bT1euxtq7aeDud7zUTBEH3iUQkCILsRCKqImNjY+bOnVuxEkl9IK5J+9W363mUBt9YLQiC/MQdkSAIshOJSBAE2YlEJAiC7EQiEgRBdiIRCYIgO5GIBEGQnUhEgiDITiQiQRBkJxKRIAiyE4lIEATZiUQkCILsRCISBEF2Db4wWlUrNAqCUD2iQmM1pKSkiJrVglCHqlKzWqsS0ZEjR/jiiy+Ijo4mNTWV3bt3M2zYsMfuc/jwYWbPnk1CQgLOzs589NFHjB07tsrntLS0BNDJmsCCoM3u19u+/x17HK1KRPn5+Xh4eDBu3DiGDx/+xO2vXbvG4MGDmTx5Mps2bSI8PJwJEybg6OjIgAEDqnTO+49juloTWBC0XVWaPLQqEQ0cOJCBAwdWefuVK1fi5ubGV199BUC7du04evQoX3/9dZUTkSAI8qtVr1lpaSk3b94kMTGRzMxMdcVUZREREfj7+1d6b8CAAURERGg8FkGzlCqJm5kFcochqEm1E1Fubi4rVqzg2WefxcrKCldXV9q1a0eTJk1wcXFh4sSJREVF1UWsD0hLS3tgNVd7e3tycnIoLCx86D7FxcXk5ORUegm6pahUyWurI3hm8SFW/X5F7nAENahWIlqyZAmurq6Ehobi7+/Pnj17iI2N5eLFi0RERDB37lzKysro378/zz//PJcuXaqruGts4cKFWFtbV7xEj5luUaok3tp6mqjr9wBY+PMF9sbekjkqobaq1UYUFRXFkSNH6NChw0M/9/PzY9y4caxcuZLQ0FD++OMP3N3d1RLowzg4OJCenl7pvfT0dKysrDA1NX3oPh988AGzZ8+u+Pl+y76g/SRJ4pP/neOXhHSM9PXo3bYJvySk886OOJpYGtPjKTu5QxRqqFp3RFu2bKFDhw6UlpbSt2/fR97xGBsbM3nyZMaNG6eWIB+le/fuhIeHV3rvwIEDdO/e/ZH7GBsbV/SQiZ4y3bLmj6uEHb8OwNcju7BilDeDOzlSqpSYtDGaxLRceQMUaqxGjdWGhoacOXNG3bGQl5dHbGwssbGxQHn3fGxsLElJSUD53cyYMWMqtp88eTJXr17lX//6FxcuXGD58uVs376dWbNmqT02QV4/xqWw4KcLAHw0uB2DOzuip6fgq1c98HVtRG5RGWNDI0nLLpI5UqEmatxrNnr0aNatW6fOWDh16hSenp54enoCMHv2bDw9PZkzZw4AqampFUkJwM3NjX379nHgwAE8PDz46quvWLt2rei6r2cirtzlne1xAIzr6caEZ1pWfGZiqM+aMT481cSc1OwixoZGklNUKleoQg3VeIHFGTNmsGHDBtzd3fH29sbc3LzS50uWLFFLgHUtJycHa2trsrOzxWOaFkpMy+WVlcfJLSpjcCdHlgZ4oqf34AC5m5kFDF9xnNu5xfRs1ZjQsX4YGYg53XKqznerxomod+/ejz6oQsHBgwdrcliNE4lIe6VlF/HS8mOkZhfh69qIjeO7YmKo/8jt429lM3JVBPklSl7ybMaSVz3ERGYZaSQR1RciEWmnnKJSXl0ZwYW0XJ5qYs6uKT2wMTN64n6/X7zNuLAolCqJab2f4t0BbTUQrfAw1fluiXtXQeuUlKmY8n00F9JyaWJpTFiwX5WSEMCzrZuwcHgnAJYdusL3J27UZaiCmtRqrll4eDjh4eFkZGSgUqkqfRYSElKrwISGSZIk/rUzjmOX72JupE/oWF+cbc2qdYxXfZxJzSri698uMmdvPA5WJvi3t3/yjoJsanxHNG/ePPr37094eDh37tzh3r17lV6CUBNf/JLIntgUDPQUrBjtTcdm1jU6zpt9WzHSxxmVBNO3xBB7M0u9gQpqVeM7opUrVxIWFkZgYKA64xEasI0nbrD8cPncsYXDO9GrdZMaH0uhUPDpSx1Jzy3icOJtxodFsWtKD1ztzJ+8s6BxNb4jKikpoUePHuqMRWjAfk1IY+7eeABm92vNCJ/aT7sx1Ndj2etedGxmxd38EsaGRnI3r7jWxxXUr8aJaMKECWzevFmdsQgNVEzSPd7cehqVBAF+zszo00ptxzY3NiBkrC/NG5ly/W4B49eforBEqbbjC+pRre77v08WValUrF+/ns6dO9O5c2cMDQ0rbSsGNApVce1OPi+vOE5mfgm92zRhzRgfDPTV35l75XYeL684TlZBKf7t7FkV6I3+QwZGCupTZ+OIHjeIsdJBxYBGoQru5BUzfPlxkjIL6Nzcmi0Tu2FuXHdFQ09dz+T1tScpKVMxulsLPhnaUQx4rEPV+W5V6//6oUOHahWYINxXUFLG+LAokjILaGFrxrog3zpNQgA+rrb838guTN0cw/cnknCyMWXqc+p7DBRqTi33wMeOHaO4WDQCClVTplQxY/Np4pKzaWRmSFiwL00sjTVy7oGdHJnzQnsAFu9PZPfpZI2cV3g8tSSigQMHcuuWqJInPJkkSfxnbwLhFzIwNtBjbZAvLZtYaDSG4J5uTHzGDYB/7TzDsct3NHp+4UFqSUQNfLqaUA3LDl1mS2QSegr4NsATb5dGssTxwcDymkalSonJG6M5nypql8tJzDUTNGZndDJf/noRgI9f7MCADg6yxaKnp+CrER74udmSW1xGcGgUKVkPX3BBqHtqSUSrVq16YDUNQfi7Ixdv8/6u8qqek599ijHdXeUNiD+LqgX60KqpBWk55UXVsgtFUTU5qCURvf7665UKo8XHx6vjsEI9kZCSzZTvoylTSQzt4sS/BrSRO6QK1n82lje1NOZieh6TNp6iuEwMeNQ0tT2a5ebmsnr1avz8/PDw8FDXYQUdl3yvgODQKPJLlHRv2ZjFr3R+aIVFOTVvZEZosC/mRvqcuJrJuzvOoFKJdk9NqnUiOnLkCEFBQTg6OvLll1/Sp08fTpw4oY7YBB2XVVDC2NAoMnKLaetgyaox3hgbPLrCopw6OFmzMtAbAz0FP8alsPiXRLlDalBqlIjS0tJYtGgR7u7ujBgxAisrK4qLi9mzZw+LFi3C19dX3XEKOqaoVMkbG6K5nJGHg5UJocG+WJkYPnlHGT3j3oTPX+4MwMrfr7Ah4rq8ATUg1U5EQ4YMoU2bNpw5c4ZvvvmGlJQUli5dWhexCTpKpZJ4e3sckdczsTQ2IGycL47WD1/wUtu87N2cd/q3BmDujwn8kpAmc0QNQ7UT0c8//8z48eOZN28egwcPRl9fO2+1Bfks+Ok8+86mYqivYNUYb9o66NYcvmm9WxHg1wJJgje3nCb6hij0V9eqnYiOHj1Kbm4u3t7edO3ale+++447d8TIVKHcuqPXWHv0GgBfjvDQyWWgFQoFnwztQJ+2TSkuUzFhfRRXb+fJHVa9Vu1E1K1bN9asWUNqaiqTJk1i69atODk5oVKpOHDgALm5YtnfhmrfmVQ+3XcOgPcHtmVol2YyR1RzBvp6fPe6J52bW3OvoJSxoVHcEUXV6oxalhNKTExk3bp1bNy4kaysLPr168ePP/6ojvjqnCgDoh6R1zIZva68xMaY7i7Me7FDvSixcTu3mJdXlJcq8WhuzZY3umFmVLdVAuoLjS8n1KZNGxYvXkxycjJbtmxRxyEFHXI5I5eJG05RUqaif3t75g6pH0kI+HM5I18amRkSl5zNjM2nKVOqnryjUC3VSkR/X3f+YfT19Rk2bFjF3ZCYkV//pecUERQSRXZhKV4tbPg2wLPeVT5s2cSCtUG+GBvoEX4hg//sTRATvdWsWonI19eXSZMmERUV9chtsrOzWbNmDR07dmTXrl21DlDQXnl/Tha9lVWIm505a4N8H7sktC7zdmnEtwGeKBSwJTKpYrURQT2q9bB77tw5PvvsM/r164eJiQne3t44OTlhYmLCvXv3OHfuHAkJCXh5ebF48WIGDRpUV3ELMitVlq/Gei41BzsLI9YH+2FrXrXVWHXVgA4OzHuxA3P2JvDFL4k4WJnwsndzucOqF2rUWF1YWMi+ffs4evQoN27coLCwEDs7Ozw9PRkwYAAdO3asi1jrhGisrj5Jknhnxxl2xSRjaqjPtknd6NzcRu6wNGbhz+dZ9ftVDPQUhAb78ox7zddfq8/qrHh+fSQSUfUt+TWRbw9eRl9PwdoxPvRu21TukDRKpZKYuS2WH+NSsDA2YPuk7rR3Er87/6TxXjOh4dh8MolvD14G4LNhHRtcEoLyompfjOhMt5a25e1kYZHcEkXVakUkIqHKws+n89GeswC82ded1/xayByRfIwN9FkV6ENrewvSc4oZGxJJdoEoqlZTIhEJVRJ3M4vpm8tXY33Fuzmz/N3lDkl21qaGhAX7YW9lzKWMPCaKomo1JhKR8EQ37uYzLiyKwlIlz7jbsXB4p3ozYLG2nGxMCQv2w8LYgMhrmby9PU4UVasBkYiEx7qbV8zY0Cju5pfQwcmKFaO9MayDJaF1WTtHK1b9WVTtf2dSWbT/gtwh6Zwa/0YFBQVx5MgRdcYiaJnCEiUTNpzi2p18mtmYEjrWF4s6Xo1VV/VsZcfiV8qLqq0+cpXQY9dkjki31DgRZWdn4+/vj7u7OwsWLBDTOeoZpUriza2nOZ2UhbWpIevH+dLUykTusLTacK/mvPvnwgDz/3eO/fGpMkekO2qciPbs2cOtW7eYMmUK27Ztw9XVlYEDB7Jz505KS0XvgS6TJImPf0zgwLl0jAz0WBvkQ6umlnKHpROmPvcUo7qWF1V7a2ssp65nyh2STqjVw36TJk2YPXs2cXFxnDx5klatWhEYGIiTkxOzZs3i0qVL6opT0KCVv19l44kbKBTwzcgu+Lrayh2SzlAoFMx7sQP+7f4sqrbhFFdEUbUnUkurY2pqKgcOHODAgQPo6+szaNAgzp49S/v27fn666/VcQpBQ/acvsXnfza2/mdwewZ1cpQ5It1joK/HtwGeeDjbkFVQSlBIJBm5RXKHpdVqnIhKS0vZtWsXL7zwAi4uLuzYsYOZM2eSkpLC+vXr+e2339i+fTvz589XZ7xCHTp2+Q7v7owDYMLTbox72k3miHSXmZEB64J8cGlsRvK9QsaHnSK/uEzusLRWjbtAHB0dUalUBAQEEBkZSZcuXR7Ypnfv3tjY2NQiPEFTzqfmMHljNKVKicGdHfn3oHZyh6Tz7CyMWR/sx/AVxzl7K5tpm2NYO8YHAzH84QE1/hd56623SE5OZtmyZZWSkCRJFQXUbGxsuHat+t2Yy5Ytw9XVFRMTE7p27UpkZOQjtw0LC0OhUFR6mZiI3p3qSMkqJDg0itziMvzcbPlqhIfWrcaqq1ztzFkX5IOJoR6HE2/z0Z54UVTtIWqciD7++GPy8h5shMvMzMTNrea39Nu2bWP27NnMnTuXmJgYPDw8GDBgABkZGY/cx8rKitTU1IrXjRs3anz+hia7sJSxoZGk5RTRqqkFawJ96m1xM7l4tmjE0gAv9BSwNeomS/+cNCz8pcaJ6FFZPS8vr1Z3JEuWLGHixIkEBwfTvn17Vq5ciZmZGSEhIY/cR6FQ4ODgUPGyt7ev8fkbkuIyJZM2nuJieh5N/6zNbG2m3aux6qp+7e2ZP7S8TteSAxfZceqmzBFpl2q3Ec2ePRso//LPmTMHMzOzis+USiUnT558aHtRVZSUlBAdHc0HH3xQ8Z6enh7+/v5EREQ8cr+8vDxcXFxQqVR4eXmxYMECOnToUKMY6qOiUiU/x6fSu01TbMz+qqL4wQ9nOXE1EwtjA0KDfWneyOwxRxFqa3Q3F1KyCll++Aof/HCWplYmPNtaFFWDGiSi06dPA+V3RGfPnsXI6K9fbCMjIzw8PHjnnXdqFMydO3dQKpUP3NHY29tz4cLD5++0adOGkJAQOnfuTHZ2Nl9++SU9evQgISGB5s0fLONZXFxMcfFf61Pl5OTUKFZdUapUMWljNL9fvM3gTo4sG+UFwNnkbH6IuYW+noIVo73o4GQtc6QNw7sD2pCaXcTu07eY+n002yZ1p2Mz8W9f7UR06NAhAIKDg/m///s/2asadu/ene7du1f83KNHD9q1a8eqVav45JNPHth+4cKFzJs3T5MhykaSJP79w1l+v3gbgJ/jU0m6W0CLxmasOlJe/H1IZ0dR6lSDFAoFn7/cmYzcIo5dvktwWBS7p/Zo8HejNW4jCg0NVXsSsrOzQ19fn/T09Ervp6en4+DgUKVjGBoa4unpyeXLD28Q/OCDD8jOzq543bxZf5/Vv/ntEjuik9FTQEs7c1QShBy7RtLdAn46Wz4P6o1eT8kcZcNjZKDHitHetHWw5HZueXWDrIISucOSVbXuiGbPns0nn3yCubl5RVvRoyxZsqTawRgZGeHt7U14eDjDhg0DQKVSER4ezvTp06t0DKVSydmzZx+5goixsTHGxsbVjk3XbI1M4v/Cy6fYfDqsEy1szRi97iTbT93kXkEJKgl6tW4iai3LxMrEkNBgX4YvP87ljDze2BDNhvF+DbbHslqJ6PTp0xUTWu+3FT1MbYpmzZ49m6CgIHx8fPDz8+Obb74hPz+f4OBgAMaMGUOzZs1YuHAhAPPnz6dbt260atWKrKwsvvjiC27cuMGECRNqHIOuO3Qhgw/3xAMwo08rXu/aAkmSaOtgyYW0XPbGpgAwuVdLOcNs8Byty4uqvbLyOJHXy4uqLQ3wbJBjuKqViO63D/3zv9Vp5MiR3L59mzlz5pCWlkaXLl3Yv39/RQN2UlISenp/PVHeu3ePiRMnkpaWRqNGjfD29ub48eO0b9++TuLTdmeSs5i6KQalSuJlr+bM7tcaKP/j8EavlszeXj6Fo1Mza7o/1VjOUAWgjYMlqwK9CQqJZN/ZVBytTfjohYb3uyuWE6pHywkl3S1g+Ipj3Mkr4Rl3O0LG+laqplhSpuLZLw6Rml3Ed6978kJnJxmjFf5ub+wt3toaC8B/XmjP+Howz08jywktXLjwoYMMQ0JC+Pzzz2t6WKGGMvNLCAqN5E5eCe0dH17S1chAj7BgP74N8GSwmFWvVYZ2acb7A9sC8Om+c+w707CKqtU4Ea1atYq2bds+8H6HDh1YuXJlrYISqqewRMmE9VEVJV3Dgh9d0rWNgyUvejiJ4vdaaFKvlozp7oIkwaztsUReazhF1WqciNLS0nB0fPCvapMmTUhNbVjZXE5KlcRbW08Tk5SFlYmBKOmqwxQKBXOHdKBfe3tKylRM3HCKyxm5coelETVORM7Ozhw7duyB948dO4aTk2h70ARJkpj33wR+rSjp6itKuuo4fT0F377miWcLG7ILSwkKiSIjp/4XVatxIpo4cSIzZ84kNDSUGzducOPGDUJCQpg1axYTJ05UZ4zCI6w6cpUNEX+VdPVzEyVd6wNTI33WBfniZmfOraxCgsOiyKvnRdVqXBjt3Xff5e7du0ydOpWSkhIkScLU1JT33nuP999/X50xCg+xN/YWi34un3/3kSjpWu/YmhsR9ueAx4SUHKZuimFdkE+9XVOu1t33eXl5nD9/HlNTU9zd3XVu1LIudt8fv3yHoNBISpUSE552a5DjThqKuJtZvLb6BIWlSkZ4N2fxK511pqOhOt+tWq+Wl5SUxN27dykpKeHq1asV77/44ou1PbTwEBfScpgkSro2GB7ONnz3uicTN5xiR3QyTjamzPpzkGp9UuNEdPXqVV566SXOnj2LQqGoKJR2P1srlUr1RChUSMkqZGyIKOna0PRtZ88nwzry4e54/i/8Ek42Joz0bSF3WGpVq5rVbm5uZGRkYGZmRnx8PEeOHMHHx4fDhw+rMUQBREnXhm5UVxem924FwL93x3Mo8dGlk3VRjRNRREQE8+fPx87ODj09PfT19Xn66adZuHAhb775pjpjbPD+WdJ1/Tg/UdK1AXq7f2uGezVDqZKYtimGs8nZcoekNjVOREqlEkvL8jErdnZ2pKSUz+h2cXEhMTFRPdEJqFQS7+w4U6mkazMbU7nDEmSgUChYNLwzT7eyo6BESXBYFDczC+QOSy1qnIg6duxIXFz5TO6uXbuyePFijh07xvz582nZUpSXUJfP91/gv3EpGIiSrgL3i6p50c7Rijt5xQSFRnIvX/eLqtU4EX300UeoVCqgvCbQtWvXeOaZZ/jpp5/49ttv1RZgQxZ27BqrjpT3RH7+cmdR0lUAwNLEkLBgX5ysTbh6O58JG05RVKrbnUNqLQOSmZlJo0aNdGacA2jvOKL98WlM2RSNJJUXXJ/2Z0OlINx3MT2XV1YcJ6eojOc7OLBslBf6WtSLqpEyIH8nSRKSJGFra6tTSUhbRd/I5K2tp5EkeL1rC6Y+J+pKCw9qbW/J6jE+GOnrsT8hjU/+d05nV5GtVSJat24dHTt2xMTEBBMTEzp27MjatWvVFVuDdOV2HuPXn6K4TIV/u6bMf7GDSO7CI3Vr2ZivXvUAIOz4ddYdrf4S79qgxgMa58yZw5IlS5gxY0bFcj4RERHMmjWLpKQk5s+fr7YgG4qM3CKCQiLJKijFw9mGbwM8Mainc4sE9Rni4URadhGf/XSeT/edx97KhCEeulUBo8ZtRE2aNOHbb78lICCg0vtbtmxhxowZ3LlzRy0B1jVtaSPKLy5j5OoI4m/l4NrYjF1TetDYQrfm7QnyKS8Jc46w49cx0tdj43g/uraUtya5RtqISktL8fHxeeB9b29vysrqd8kCdStVqpi6KYb4Wzl/zrr2E0lIqBaFQsF/XmjP8x0cKFGWF1W7lK47RdVqnIgCAwNZsWLFA++vXr2aUaNG1SqohkSSJD7cXb4aq4mhHuuCfHC1M5c7LEEH6esp+Oa1Lni7NCKnqIyxoVGk60hRtRo/ms2YMYMNGzbg7OxMt27dADh58iRJSUmMGTMGQ8O/piDUZLFFTZH70eyb3y7yzW+X0FPA6kAf/NvbazwGoX65l1/CyyuOc/VOPu0crdg+qRuWJpqfElSd71aNE1Hv3r2rtJ1CoeDgwYM1OYVGyJmItkUl8d6uswB89lJHRnV10ej5hfrrZmYBLy0vX1rq6VblS0sZGWi240Mjiai+kCsRHUrMYML6UyhVEtN7t+KdAW00dm6hYTiTXF5UraBEyXCvZnw1wkOjQ0E0Whjt3LlzJCUlUVLy13wXhULBkCFDanvoeutMchbT/lyNdbhXM97uX/8KXQny69zchmWvezFhwyl+iLlFMxtT3u6vnX/wRGE0DUu6W8C4sCgKSpQ83cqORcN1p/SnoHt6t23KZ8M68v4PZ1l68DKO1qa83lX7iqqprTBaQkKCKIz2BJn5JYz9czXWdo5WrBjtpfHndqHhec2vBW/2dQfgoz1nCT+fLnNED1JbYTQ9PT1RGO0xikrLV2O9+rfVWOXoyRAapln+7rzi3RyVBNM3nybuZpbcIVUiCqNpwD9XYw0L9sVerMYqaJBCoWDh8E48425HYamScWFR3LibL3dYFURhtDomSRLz/5vALwnpGOnrsWaMD+72YjVWQfMM9fVYMdqb9o5W3M0vYWxoFJlaUlRNFEarY6uPXGV9xA0Aloz0kH3+j9CwWRiX35E3szHl2p18xq+PorBE/o4lURitDscR7Y29xVtbYwH4aHA7Jjwj7hQF7XA5I5fhy8uLqvVvb8+K0d5qL6qm8cJo94nCaH85fuUO7+wof3Qd19NNJCFBq7RqasnaIF+M9PX49Vw68/6bIGtRtWonooMHD9K+fXtycnIe+Cw7O5sOHTrwxx9/qCU4XXUhLYdJG/5cjbWTIx8NFquxCtrHz82Wr0d2AWBDxA1WH7n6+B3qULUT0TfffMPEiRMfeqtlbW3NpEmTtHqSa11Lzf5rNVZf10Z89apYjVXQXoM7//WHcuHPF9gbe0uWOKqdiOLi4nj++ecf+Xn//v2Jjo6uVVC6KruwlLEhUX+txjpGrMYqaL8Jz7Rk/NNuALyzI47jVzRf1LDaiSg9Pb1SiY9/MjAw4Pbt27UKShfdX401MT2XJpbGhAX7YmNmJHdYglAlHw5qx+BOjpQqJSZtjCYxTbNF1aqdiJo1a0Z8fPwjPz9z5gyOjo61CkrXqFQS7/65Gqu5kT5hwb40b2Qmd1iCUGV6egq+etUDX9dG5BaVMTY0krRszRVVq3YiGjRoEP/5z38oKnowyMLCQubOncsLL7ygluB0xee/XODHitVYvcVqrIJOMjHUZ80YH55qYk5qdhFjQyPJKSrVyLmrPY4oPT0dLy8v9PX1mT59Om3alJcVuHDhAsuWLUOpVBITE4O9vW5UGqztOKL1x68z98cEAL4c4cEr3s3VHaIgaNTNzAKGrzjO7dxierZqTOhYvxpNzq7zwmg3btxgypQp/PLLL5XKfwwYMIBly5bh5uZW7aDlUptE9PfVWN/u15oZf85wFgRdF38rm5GrIsgvUfKSZzOWvFr9omoaq9B47949Ll++jCRJuLu706hRo/KLiI+nY8eONT2sRtU0EUXfyOT1NScpLlMR4NeCBS91FIM5hXrl94u3GRcWhVIlMa33U7w7oG219tfYyOpGjRrh6+uLn58fBgYGrF69mq5du9KlS5faHFbr/X011r5tm/LJULEaq1D/PNu6CQuHdwJg2aErfH/iRp2dq9ZTPI4cOUJQUBCOjo58+OGHNG/evNZDxZctW4arqysmJiZ07dqVyMjIx26/Y8cO2rZti4mJCZ06deKnn36q1fkfp9JqrM2tWfq6WI1VqL9e9XFmln95KeM5e+M5cK5uiqrV6BuUlpbGokWLcHd3Z9CgQZSVlbF9+3ZSU1OZN29erQLatm0bs2fPZu7cucTExODh4cGAAQPIyMh46PbHjx8nICCA8ePHc/r0aYYNG8awYcMeO8SgpvKLyxgfdorke4W0sDVj3VhfzIxqXfZbELTam31bMdLHGZUEM7bEcDrpnvpPIlXTCy+8IJmamkqDBg2Svv/+eykvL6/S5/Hx8ZKenl51D1vBz89PmjZtWsXPSqVScnJykhYuXPjQ7V999VVp8ODBld7r2rWrNGnSpCqdLzs7WwKk7Ozsx25XUqaUgkJOSi7v/U/ynP+rdPV23mO3F4T65J+//9eq8Ptf1e+WJElSte+I9u3bx/Dhw5k3bx6jRo3C3Fx9q5KWlJQQHR2Nv79/xXt6enr4+/sTERHx0H0iIiIqbQ8wYMCAR25fXFxMTk5OpdeTSJLER7vjOZz412qsbmI1VqEBMdTXY9nrXnRsZkVmfglBoZHczStW2/GrnYiOHz+Oqakpffr0oU2bNsyfP58rV66oJZg7d+6gVCofGINkb29PWlraQ/dJS0ur1vYLFy7E2tq64uXs7PzEuBJSctgZk4yeApYGeOHZolEVr0gQ6g9zYwNCxvrSvJEpN+4W8GNcitqOXe1E1K1bN9asWUNqairvvfcev/76K61bt6Zbt24sXbqU9HTtWyHg7z744AOys7MrXjdv3nziPh2bWbMuyIfPXupEP7EktNCANbU0Yf04P+a92IHgnuobL1jjllZzc3PGjRvHuHHjSExMZN26dSxYsID09PQad2Xb2dmhr6//QDJLT0/HwcHhofs4ODhUa3tjY2OMjY2rHdtzbZpWex9BqI+eamLBU00s1HpMtfQ7t2nThsWLF5OcnMwPP/zA4MGDa3QcIyMjvL29CQ8Pr3hPpVIRHh5O9+7dH7pP9+7dK20PcODAgUduLwiCFlJDg7pabd26VTI2NpbCwsKkc+fOSW+88YZkY2MjpaWlSZIkSYGBgdL7779fsf2xY8ckAwMD6csvv5TOnz8vzZ07VzI0NJTOnj1bpfNVp2VfEISqq853S+sGwYwcOZLbt28zZ84c0tLS6NKlC/v3769okE5KSkJP768buR49erB582Y++ugj/v3vf+Pu7s6ePXuqPMVE+nPwZVV6zwRBqLr73ympCgOc1bqKhy5KTk6uUs+ZIAg1c/PmTZo3f3xVigafiFQqFSkpKVhaWj62kT0nJwdnZ2du3ryp9mWH5CKuSfvp8vVIkkRubi5OTk6VnmIeRusezTRNT0/vidn676ysrHTuF+JJxDVpP129HmvrqhUJFLM1BUGQnUhEgiDITiSiKjI2Nmbu3Lk1GgyprcQ1ab/6dj2P0uAbqwVBkJ+4IxIEQXYiEQmCIDuRiARBkJ1IRFVU3TramrBw4UJ8fX2xtLSkadOmDBs2jMTExErbFBUVMW3aNBo3boyFhQUvv/zyA9UKkpKSGDx4MGZmZjRt2pR3332XsrKyStscPnwYLy8vjI2NadWqFWFhYXV9eQAsWrQIhULBzJkzK97TxWu6desWo0ePpnHjxpiamtKpUydOnTpV8bkkScyZMwdHR0dMTU3x9/fn0qVLlY6RmZnJqFGjsLKywsbGhvHjx5OXl1dpmzNnzvDMM89gYmKCs7MzixcvrrNrUqs6m/FWj2zdulUyMjKSQkJCpISEBGnixImSjY2NlJ6eLmtcAwYMkEJDQ6X4+HgpNjZWGjRokNSiRYtK5XsnT54sOTs7S+Hh4dKpU6ekbt26ST169Kj4vKysTOrYsaPk7+8vnT59Wvrpp58kOzs76YMPPqjY5urVq5KZmZk0e/Zs6dy5c9LSpUslfX19af/+/XV6fZGRkZKrq6vUuXNn6a233tLZa8rMzJRcXFyksWPHSidPnpSuXr0q/fLLL9Lly5crtlm0aJFkbW0t7dmzR4qLi5NefPFFyc3NTSosLKzY5vnnn5c8PDykEydOSH/88YfUqlUrKSAgoOLz7Oxsyd7eXho1apQUHx8vbdmyRTI1NZVWrVql9mtSN5GIqqC6dbTlkpGRIQHS77//LkmSJGVlZUmGhobSjh07KrY5f/68BEgRERGSJEnSTz/9JOnp6VVUN5AkSVqxYoVkZWUlFRcXS5IkSf/617+kDh06VDrXyJEjpQEDBtTZteTm5kru7u7SgQMHpGeffbYiEeniNb333nvS008//cjPVSqV5ODgIH3xxRcV72VlZUnGxsbSli1bJEmSpHPnzkmAFBUVVbHNzz//LCkUCunWrVuSJEnS8uXLpUaNGlVc4/1zt2nTRt2XpHbi0ewJalJHWy7Z2dkA2NraAhAdHU1paWml2Nu2bUuLFi0qYo+IiKBTp06Vyu0OGDCAnJwcEhISKrapTl1wdZg2bRqDBw9+4Ly6eE0//vgjPj4+jBgxgqZNm+Lp6cmaNWsqPr927RppaWmV4rG2tqZr166VrsnGxgYfH5+Kbfz9/dHT0+PkyZMV2/Tq1QsjI6NK15SYmMi9e3Ww8oYaiUT0BDWpoy0HlUrFzJkz6dmzZ0UJlLS0NIyMjLCxsam07d9jf1TN7/ufPW6bnJwcCgsL1X4tW7duJSYmhoULFz7wmS5e09WrV1mxYgXu7u788ssvTJkyhTfffJP169dXiulxv2NpaWk0bVq5SqiBgQG2trbVum5t1eAnvdYX06ZNIz4+nqNHj8odSq3cvHmTt956iwMHDmBiYiJ3OGqhUqnw8fFhwYIFAHh6ehIfH8/KlSsJCgqSOTrtIO6InqAmdbQ1bfr06fzvf//j0KFDlSoJODg4UFJSQlZWVqXt/x77o2p+3//scdtYWVlhamqq1muJjo4mIyMDLy8vDAwMMDAw4Pfff+fbb7/FwMAAe3t7nbsmR0dH2rdvX+m9du3akZSUVCmmx/2OOTg4PLDIaFlZGZmZmdW6bm0lEtET1KSOtqZIksT06dPZvXs3Bw8exM2t8qoK3t7eGBoaVoo9MTGRpKSkiti7d+/O2bNnK/2SHzhwACsrq4ovjybrgvft25ezZ88SGxtb8fLx8WHUqFEV/61r19SzZ88HhlVcvHgRFxcXANzc3HBwcKgUT05ODidPnqx0TVlZWURHR1dsc/DgQVQqFV27dq3Y5siRI5SWlla6pjZt2tCokZYvgSV3a7kueFIdbblMmTJFsra2lg4fPiylpqZWvAoKCiq2mTx5stSiRQvp4MGD0qlTp6Tu3btL3bt3r/j8fld3//79pdjYWGn//v1SkyZNHtrV/e6770rnz5+Xli1bppHu+/v+3mumi9cUGRkpGRgYSJ999pl06dIladOmTZKZmZn0/fffV2yzaNEiycbGRtq7d6905swZaejQoQ/tvvf09JROnjwpHT16VHJ3d6/UfZ+VlSXZ29tLgYGBUnx8vLR161bJzMxMdN/XJ0uXLpVatGghGRkZSX5+ftKJEyfkDkkCHvoKDQ2t2KawsFCaOnWq1KhRI8nMzEx66aWXpNTU1ErHuX79ujRw4EDJ1NRUsrOzk95++22ptLS00jaHDh2SunTpIhkZGUktW7asdI669s9EpIvX9N///lfq2LGjZGxsLLVt21ZavXp1pc9VKpX0n//8R7K3t5eMjY2lvn37SomJiZW2uXv3rhQQECBZWFhIVlZWUnBwsJSbm1tpm7i4OOnpp5+WjI2NpWbNmkmLFi2qs2tSJzH7XhAE2Yk2IkEQZCcSkSAIshOJSBAE2YlEJAiC7EQiEgRBdiIRCYIgO5GIBEGQnUhEgiDITiQioc6NHTuWYcOGyXb+wMDAipnvT/Laa6/x1Vdf1XFEwj+JkdVCrSgUisd+PnfuXGbNmoUkSQ/UENKEuLg4+vTpw40bN7CwsHji9vHx8fTq1Ytr165Ved12ofZEIhJq5e8Ft7Zt28acOXMqzTS3sLCoUgKoKxMmTMDAwICVK1dWeR9fX1/Gjh3LtGnT6jAy4e/Eo5lQKw4ODhUva2trFApFpfcsLCweeDR77rnnmDFjBjNnzqRRo0bY29uzZs0a8vPzCQ4OxtLSklatWvHzzz9XOld8fDwDBw7EwsICe3t7AgMDuXPnziNjUyqV7Ny5kyFDhlR6f/ny5bi7u2NiYoK9vT2vvPJKpc+HDBnC1q1ba/+PI1SZSESCLNavX4+dnR2RkZHMmDGDKVOmMGLECHr06EFMTAz9+/cnMDCQgoICALKysujTpw+enp6cOnWK/fv3k56ezquvvvrIc5w5c4bs7OxKdZ5PnTrFm2++yfz580lMTGT//v306tWr0n5+fn5ERkZSXFxcNxcvPEjGmf9CPRMaGipZW1s/8H5QUJA0dOjQip+fffbZSqtalJWVSebm5lJgYGDFe6mpqZVW5vjkk0+k/v37VzruzZs3JeCBchn37d69W9LX15dUKlXFe7t27ZKsrKyknJycR15HXFycBEjXr19/7PUK6iPuiARZdO7cueK/9fX1ady4MZ06dap4737R9/tVFuPi4jh06FBFm5OFhQVt27YF4MqVKw89R2FhIcbGxpUa1Pv164eLiwstW7YkMDCQTZs2Vdx13Xe/VOw/3xfqjkhEgiwMDQ0r/axQKCq9dz95qFQqAPLy8hgyZEilErKxsbFcunTpgUer++zs7CgoKKCkpKTiPUtLS2JiYtiyZQuOjo7MmTMHDw+PSjWwMzMzAWjSpIlarlV4MpGIBJ3g5eVFQkICrq6utGrVqtLL3Nz8oft06dIFgHPnzlV638DAAH9/fxYvXsyZM2e4fv06Bw8erPg8Pj6e5s2bY2dnV2fXI1QmEpGgE6ZNm0ZmZiYBAQFERUVx5coVfvnlF4KDg1EqlQ/dp0mTJnh5eVVaYul///sf3377LbGxsdy4cYMNGzagUqlo06ZNxTZ//PEH/fv3r/NrEv4iEpGgE5ycnDh27BhKpZL+/fvTqVMnZs6ciY2NDXp6j/41njBhAps2bar42cbGhh9++IE+ffrQrl07Vq5cyZYtW+jQoQMARUVF7Nmzh4kTJ9b5NQl/EQMahXqtsLCQNm3asG3btiotFbRixQp2797Nr7/+qoHohPvEHZFQr5mamrJhw4bHDnz8O0NDQ5YuXVrHUQn/JO6IBEGQnbgjEgRBdiIRCYIgO5GIBEGQnUhEgiDITiQiQRBkJxKRIAiyE4lIEATZiUQkCILsRCISBEF2IhEJgiC7/wfQn2UVF2qRXQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(2, 1, sharex=True, sharey='row', figsize=(3., 3.3))\n", "\n", "axs[0].plot(complex.raw_data['test_time'], complex.raw_data['cycle_energy'])\n", "axs[1].plot(complex.raw_data['test_time'], complex.raw_data['cycle_capacity'])\n", "\n", "axs[0].set_ylabel('$\\Delta$Energy (W-hr)')\n", "axs[1].set_ylabel('$\\Delta$Capacity (A-hr)')\n", "\n", "axs[1].set_xlabel('Time (s)')\n", "\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "367e11a1-725d-41d0-831e-745173b8dd62", "metadata": {}, "source": [ "However, the measurements of capacity get strange" ] }, { "cell_type": "code", "execution_count": 13, "id": "86920ee7-09d3-4e0e-a6f4-c1bdab97465f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cycle_numberenergy_chargecapacity_chargeenergy_dischargecapacity_discharge
002.622341.02.3983890.999444
\n", "
" ], "text/plain": [ " cycle_number energy_charge capacity_charge energy_discharge \\\n", "0 0 2.62234 1.0 2.398389 \n", "\n", " capacity_discharge \n", "0 0.999444 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "capc.compute_features(complex)" ] }, { "cell_type": "code", "execution_count": 14, "id": "1ff630c5-6d70-4df8-be3b-840189b8c276", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cycle_numberenergy_chargecapacity_chargeenergy_dischargecapacity_discharge
002.6000841.02.3975840.999167
\n", "
" ], "text/plain": [ " cycle_number energy_charge capacity_charge energy_discharge \\\n", "0 0 2.600084 1.0 2.397584 \n", "\n", " capacity_discharge \n", "0 0.999167 " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from_discharged.cycle_stats" ] }, { "cell_type": "markdown", "id": "a29b82cd-b5ce-46e4-93bd-81d2ad28b5c0", "metadata": {}, "source": [ "The discharge part of the cycle is unchanged, so the estimates for the discharge energy and capacity are nearly identical (just numerical differences) between the simple and complex charge.\n", "\n", "The charge part of the cycle is different between the two cycles. The integral of current over that time is the same, so both yield a charge capacity of 1. However, the amount of energy required to charge was larger for the complex cycle due to the energy loss during the pulse during charge, which leads to over-estimating the batteries energy of charge.\n", "\n", "In short, take caution when comparing the capacities and energies measured during different cycling protocols." ] }, { "cell_type": "markdown", "id": "dfd61c5b-6785-4c38-ad0a-b1fe76adcb0f", "metadata": {}, "source": [ "## Use on Actual Testing Data\n", "Demonstrating on data from the XCEL Dataset" ] }, { "cell_type": "code", "execution_count": 15, "id": "ca344e46-b2df-44ce-b2f6-b7f90cc9e665", "metadata": {}, "outputs": [], "source": [ "from batdata.extractors.batterydata import BDExtractor\n", "xcel_data = BDExtractor().parse_to_dataframe(['../../tests/files/batterydata/p492-13-raw.csv'])" ] }, { "cell_type": "code", "execution_count": 16, "id": "b4211e77-aeef-4995-8014-81e556ee1704", "metadata": {}, "outputs": [], "source": [ "charge.compute_features(xcel_data);" ] }, { "cell_type": "markdown", "id": "11f43e65-4165-4fc6-8c6e-b30689645e7d", "metadata": {}, "source": [ "These cells contain many aging cycles, with different provenances" ] }, { "cell_type": "code", "execution_count": 17, "id": "da6d3854-4da6-48bb-9e47-57c3e6aef5c8", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(2, 1, figsize=(3, 2), sharex=True)\n", "\n", "d = xcel_data.raw_data.query('cycle_number > 6')\n", "ax = axs[0]\n", "ax.plot(d['test_time'] / 3600, d['current'])\n", "ax.set_ylabel('$I$ (A)')\n", "\n", "ax = axs[1]\n", "# Plot the cycle capacity\n", "ax.plot(d['test_time'] / 3600, d['cycle_capacity'] * 1000)\n", "\n", "# Mark where cycles start\n", "cycle_start = d.drop_duplicates('cycle_number', keep='first')[['test_time', 'cycle_number']]\n", "for ax in axs:\n", " ax.set_ylim(ax.get_ylim())\n", " for ind, start in zip(cycle_start['cycle_number'], cycle_start['test_time']):\n", " axs[0].text(start / 3600 + 0.1, 0.01, ind)\n", " ax.plot([start / 3600] * 2, ax.get_ylim(), 'k--', lw=1)\n", "\n", "ax.set_ylabel('$\\Delta$Capacity\\n(mA-hr)')\n", "ax.set_xlabel('Test Time (hr)')\n", "\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "id": "a39e1b27-7e1e-464b-9365-632813e5f323", "metadata": {}, "source": [ "The battery was determined to have a capacity of ~19 mAh, consistent with what we see in the above plot for the second cycle (Cycle 8) but not the first. As discussed above, no all cycles are good for estimating capacity but we can do it.\n", "\n", "Note how we get values close to the known capacity for some only a few of the cycles included in our dataframe." ] }, { "cell_type": "code", "execution_count": 18, "id": "3a1eb92c-780d-49e6-9e06-4edf33260529", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/lward/Work/ROVI/battery-data-toolkit/batdata/postprocess/integral.py:83: UserWarning: Unable to clearly detect if battery started charged or discharged in cycle 6. Amount discharged is -0.00e+00 A-s, charged is 0.00e+00 A-s\n", " warnings.warn(f'Unable to clearly detect if battery started charged or discharged in cycle {cyc}. '\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cycle_numberenergy_chargecapacity_chargeenergy_dischargecapacity_discharge
005.708257e-091.875000e-092.255638e-037.170268e-04
118.078932e-022.186822e-027.969142e-022.173635e-02
223.792782e-021.059627e-020.000000e+000.000000e+00
334.582476e-021.121207e-027.670663e-091.875000e-09
440.000000e+000.000000e+001.296412e-013.653862e-02
552.881001e-027.866233e-030.000000e+000.000000e+00
66-0.000000e+000.000000e+00-0.000000e+000.000000e+00
779.563373e-092.875000e-093.320689e-029.473813e-03
887.072788e-021.894571e-026.924310e-021.900843e-02
\n", "
" ], "text/plain": [ " cycle_number energy_charge capacity_charge energy_discharge \\\n", "0 0 5.708257e-09 1.875000e-09 2.255638e-03 \n", "1 1 8.078932e-02 2.186822e-02 7.969142e-02 \n", "2 2 3.792782e-02 1.059627e-02 0.000000e+00 \n", "3 3 4.582476e-02 1.121207e-02 7.670663e-09 \n", "4 4 0.000000e+00 0.000000e+00 1.296412e-01 \n", "5 5 2.881001e-02 7.866233e-03 0.000000e+00 \n", "6 6 -0.000000e+00 0.000000e+00 -0.000000e+00 \n", "7 7 9.563373e-09 2.875000e-09 3.320689e-02 \n", "8 8 7.072788e-02 1.894571e-02 6.924310e-02 \n", "\n", " capacity_discharge \n", "0 7.170268e-04 \n", "1 2.173635e-02 \n", "2 0.000000e+00 \n", "3 1.875000e-09 \n", "4 3.653862e-02 \n", "5 0.000000e+00 \n", "6 0.000000e+00 \n", "7 9.473813e-03 \n", "8 1.900843e-02 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "capc.compute_features(xcel_data)" ] }, { "cell_type": "code", "execution_count": null, "id": "630bd58c-3522-491e-a5fe-84bfbec3a941", "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.9.18" } }, "nbformat": 4, "nbformat_minor": 5 }