{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Model Saving/Loading Example\n", "\n", "This set of examples shows how to load and import template models in order to make setting up and reproducing circuit fits easier." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Load libraries\n", "\n", "import impedance_extend.preprocessing as preprocessing\n", "import impedance_extend.models.circuits as circuits\n", "from impedance_extend.visualization import plot_nyquist\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Load data from the example EIS result\n", "frequencies, Z = preprocessing.readCSV('../../../data/exampleData.csv')\n", "\n", "# keep only the impedance data in the first quandrant\n", "frequencies, Z = preprocessing.ignoreBelowX(frequencies, Z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 1. Importing and Exporting Models\n", "\n", "Call the `circuit.save()` function to export the model to a human readable JSON file. The following code generates a test circuit and export it as a template. Here we are using an unfitted model as a template.\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Circuit string: R0-p(R1,C1)-p(R2,C2)-Wo1\n", "Fit: False\n", "\n", "Initial guesses:\n", " R0 = 1.00e-02 [Ohm]\n", " R1 = 5.00e-03 [Ohm]\n", " C1 = 1.00e-01 [F]\n", " R2 = 5.00e-03 [Ohm]\n", " C2 = 1.00e-01 [F]\n", " Wo1_0 = 1.00e-03 [Ohm]\n", " Wo1_1 = 2.00e+02 [sec]\n", "\n" ] } ], "source": [ "test_circuit = circuits.CustomCircuit(initial_guess=[.01, .005, .1, .005, .1, .001, 200],\n", " circuit='R0-p(R1,C1)-p(R2,C2)-Wo1') \n", "\n", "print(test_circuit)\n", "\n", "test_circuit.save('template_model.json')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Call the `model_io.model_import` function to import the model back as a template." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R0-p(R1,C1)-p(R2,C2)-Wo1\n", "Loaded Template\n", "\n", "Circuit string: R0-p(R1,C1)-p(R2,C2)-Wo1\n", "Fit: False\n", "\n", "Initial guesses:\n", " R0 = 1.00e-02 [Ohm]\n", " R1 = 5.00e-03 [Ohm]\n", " C1 = 1.00e-01 [F]\n", " R2 = 5.00e-03 [Ohm]\n", " C2 = 1.00e-01 [F]\n", " Wo1_0 = 1.00e-03 [Ohm]\n", " Wo1_1 = 2.00e+02 [sec]\n", "\n" ] } ], "source": [ "loaded_template = circuits.CustomCircuit()\n", "loaded_template.load('template_model.json')\n", "\n", "print(\"Loaded Template\")\n", "print(loaded_template)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 2. Using imported template model to fit data\n", "\n", "After the model has been imported as a template, it can be used as a starting point to fit data. This saves on needing to configure the initial parameters each time a fit is performed and to persist starting conditions across several fitting sessions." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Simulating circuit based on initial parameters\n" ] }, { "data": { "image/png": "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zZrFLbcUTT10Mm63mx49egDWrt7//ve/BdeWLVvGn//85zI/wxBa3B7lT/9NYuv+LD69vxPn1g/+/1vBIlD3y7+A64FDQCpWSOPt3kMBvCXtElT1rrKraahKPPTQQ9x3331ERUURGxvL3LlziYmpuG3V+cyZM4eYmBi6du0a1H7tdjsLFlgldvON+q23Wlmpu3TpQpcuXYL6PEPw+eevG5izMZ3XbmlL9/Mr/m+1NAJNvXsl8AfQXFU7qmo9rOpBdwBvAjOBmlhG3uArO5bDgvesnyEiLS2Nq666ivbt23PVVVexfbtV9nXq1Kl06dKFDh06cPXVV7Nvn5VxOCMjg759+9KhQwcee+wxCu8n++qrrwpm3I899ljBZqfx48dzwQUX0KtXLxYtWuSXfllZWQwcOJDOnTvToUMHpk6dClgz7dtuu40bbriBli1b8q9//Yt33nmHDh06cNlll3Ho0CEAunfvzjPPPEO3bt1o165dsRklf/zxx4Kx9u3bl/T0dLZt28bYsWN55513iIuLY/Hixezbt4/bbruN+Ph4OnfufNpZ/Msvv8ygQYPo1asXrVq14pNPPgGsQhZ16tQBrNTGc+fOpXPnznz00UcnzcKXLl1Kt27d6NChA5dffjlbtmzx67MzhIb/LN/OuIUpDLwslge6tqhodU5LoDN1N/CbqmblN3gTbqUBP+S3iUjzYu4985j2Euz946SmCPVAodS75B6BfWshv71hW4g6q+Q+G7WD6970W5UhQ4bQv39/BgwYwBdffMHTTz/NlClT6N69O0uXLkVEGDt2LG+//TbvvfceI0aMoHv37rzyyiv88ssvjB49GrCKgEyePJlFixYRERHBk08+yaRJk+jTpw/Dhg0jMTGR2rVr07t3bzp06OCzfq+++irXXnstEyZMIDMzky5dutCnj1VAa926daxcuZKsrCzOP/983n//fVatWsXQoUP56quvCtw8ubm5LFmyhDlz5jB48GCSkpJOekbPnj256aabEBE+++wz3nvvPd566y0GDx5MTExMgZvm7rvv5oUXXqBr166kpqZyww03sHbt2lL137x5M7Nnz+bQoUO0bt2axx9//KTrb775JqNGjWLy5MlERUUxa9aJol2tW7dm4cKF2O12fvvtN15++WUmT57s82dnCD6Ltx3gH1PW0vOC+rzcr3VFq+MTgRr1BUCr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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Circuit string: R0-p(R1,C1)-p(R2,C2)-Wo1\n", "Fit: True\n", "\n", "Initial guesses:\n", " R0 = 1.00e-02 [Ohm]\n", " R1 = 5.00e-03 [Ohm]\n", " C1 = 1.00e-01 [F]\n", " R2 = 5.00e-03 [Ohm]\n", " C2 = 1.00e-01 [F]\n", " Wo1_0 = 1.00e-03 [Ohm]\n", " Wo1_1 = 2.00e+02 [sec]\n", "\n", "Fit parameters:\n", " R0 = 1.65e-02 (+/- 1.54e-04) [Ohm]\n", " R1 = 8.77e-03 (+/- 1.89e-04) [Ohm]\n", " C1 = 3.28e+00 (+/- 1.85e-01) [F]\n", " R2 = 5.31e-03 (+/- 2.06e-04) [Ohm]\n", " C2 = 2.32e-01 (+/- 1.90e-02) [F]\n", " Wo1_0 = 6.37e-02 (+/- 2.03e-03) [Ohm]\n", " Wo1_1 = 2.37e+02 (+/- 1.72e+01) [sec]\n", "\n" ] } ], "source": [ "fig, ax = plt.subplots(figsize=(5,5))\n", "f_pred = np.logspace(5,-2)\n", "loaded_template.fit(frequencies, Z)\n", "\n", "imported_circuit_init = loaded_template.predict(f_pred, use_initial = True)\n", "imported_circuit_fit = loaded_template.predict(f_pred)\n", "\n", "plot_nyquist(ax, Z)\n", "plot_nyquist(ax, imported_circuit_init)\n", "plot_nyquist(ax, imported_circuit_fit)\n", "\n", "ax.legend(['Data', 'Loaded Template Initial', 'Loaded Template Fit'])\n", "\n", "plt.show()\n", "print(loaded_template)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 3. Using fitted data as a starting point for new fits\n", "\n", "Consider the case where a successful fit has been performed and a new set of EIS data is obtained which is similar to the first spectrum. It is useful to use the successfully fitted parameters as a starting point for subsequent fits." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Export the fitted model as a template\n", "\n", "loaded_template.save('fitted_template.json')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the exported model's fitted parameters, generate a new circuit using the fitted parameters as initial guesses by suppling the `fitted_as_initial` parameter as `True`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R0-p(R1,C1)-p(R2,C2)-Wo1\n", "\n", "Circuit string: R0-p(R1,C1)-p(R2,C2)-Wo1\n", "Fit: False\n", "\n", "Initial guesses:\n", " R0 = 1.65e-02 [Ohm]\n", " R1 = 8.77e-03 [Ohm]\n", " C1 = 3.28e+00 [F]\n", " R2 = 5.31e-03 [Ohm]\n", " C2 = 2.32e-01 [F]\n", " Wo1_0 = 6.37e-02 [Ohm]\n", " Wo1_1 = 2.37e+02 [sec]\n", "\n" ] } ], "source": [ "fitted_template = circuits.CustomCircuit()\n", "fitted_template.load('fitted_template.json', fitted_as_initial=True)\n", "print(fitted_template)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Z2 is a similar impedance spectra that we can fit using the previous fitted parameters as starting points. It has been shifted by 5 mOhm in the real axis and the data has been scaled by 1.5x." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "Z2 = (0.005 + Z.real)*1.5 + 1.5j*Z.imag" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Simulating circuit based on initial parameters\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Circuit string: R0-p(R1,C1)-p(R2,C2)-Wo1\n", "Fit: True\n", "\n", "Initial guesses:\n", " R0 = 1.65e-02 [Ohm]\n", " R1 = 8.77e-03 [Ohm]\n", " C1 = 3.28e+00 [F]\n", " R2 = 5.31e-03 [Ohm]\n", " C2 = 2.32e-01 [F]\n", " Wo1_0 = 6.37e-02 [Ohm]\n", " Wo1_1 = 2.37e+02 [sec]\n", "\n", "Fit parameters:\n", " R0 = 3.22e-02 (+/- 2.31e-04) [Ohm]\n", " R1 = 1.31e-02 (+/- 2.84e-04) [Ohm]\n", " C1 = 2.19e+00 (+/- 1.24e-01) [F]\n", " R2 = 7.96e-03 (+/- 3.10e-04) [Ohm]\n", " C2 = 1.55e-01 (+/- 1.26e-02) [F]\n", " Wo1_0 = 9.56e-02 (+/- 3.05e-03) [Ohm]\n", " Wo1_1 = 2.38e+02 (+/- 1.73e+01) [sec]\n", "\n" ] } ], "source": [ "fig, ax = plt.subplots(figsize=(10,10))\n", "f_pred = np.logspace(5,-2)\n", "fitted_template.fit(frequencies, Z2)\n", "\n", "imported_circuit_init = fitted_template.predict(f_pred, use_initial = True)\n", "imported_circuit_fit = fitted_template.predict(f_pred)\n", "\n", "plot_nyquist(ax, Z)\n", "plot_nyquist(ax, Z2)\n", "plot_nyquist(ax, imported_circuit_init)\n", "plot_nyquist(ax, imported_circuit_fit)\n", "\n", "ax.legend(['Original Data', 'Shifted Data', 'Template Initial', 'Loaded Template Fit'])\n", "\n", "plt.show()\n", "\n", "print(fitted_template)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.10" } }, "nbformat": 4, "nbformat_minor": 4 }