{ "cells": [ { "cell_type": "markdown", "id": "edd45bd3-d582-4a4e-b61b-4a20b65290b3", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 3, "id": "cd0cee5e-bf71-4781-84bc-9526aeb3bb66", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import scipy.optimize\n", "# from impedance.models.circuits import CustomCircuit\n", "# from impedance.visualization import plot_nyquist # Kept if you want to switch plotting methods" ] }, { "cell_type": "markdown", "id": "27912549-0083-4fcc-b82c-a3770ec22060", "metadata": {}, "source": [ "## Data imports" ] }, { "cell_type": "code", "execution_count": 244, "id": "91821d16-a56b-457c-938a-9665dce5d4ee", "metadata": {}, "outputs": [], "source": [ "# --- Data Loading ---\n", "\n", "def EIS_z60_import(filename):\n", " \"\"\" Import z60 file as pandas dataframe.\"\"\"\n", " df = pd.read_csv(\n", " filename,\n", " skiprows=11,\n", " sep='\\s+',\n", " header=None,\n", " names=[\"Freq\", \"Ampl\", \"Bias\", \"Time\", \"Z'\", \"Z''\", \"GD\", \"Err\", \"Range\"],\n", " index_col=\"Freq\")\n", "\n", " df = df.drop(columns=['Ampl', 'Bias', 'Time', 'GD', 'Err', 'Range']) # Drop columns\n", " mask = (df[\"Z'\"] > 0) & (df[\"Z''\"] < 0) # Only keep first quadrant in Nyquist plot\n", "\n", " df['Z'] = np.sqrt( (df[\"Z'\"].to_numpy())**2 + \\\n", " (df[\"Z'\"].to_numpy())**2 )\n", "\n", " df['theta'] = np.arctan2(-df[\"Z'\"].to_numpy(), df[\"Z''\"].to_numpy()) * 180 / np.pi\n", " \n", " df[~mask] = None\n", " return df\n", " \n", "try:\n", " HS_EIS_10mV_1_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_10mV_2.z60\")\n", " HS_EIS_10mV_2_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_10mV_3.z60\")\n", " HS_EIS_10mV_3_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_10mV_4.z60\")\n", "\n", " HS_EIS_20mV_1_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_20mV_2.z60\")\n", " HS_EIS_20mV_2_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_20mV_3.z60\")\n", " HS_EIS_20mV_3_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_20mV_4.z60\") \n", "\n", " HS_EIS_30mV_1_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_30mV_3.z60\")\n", " HS_EIS_30mV_2_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_30mV_3.z60\")\n", " HS_EIS_30mV_3_df = EIS_z60_import(\"./HIPed_Stellite1_EIS/HIPedStellite1_EIS_30mV_5.z60\")\n", "\n", " \n", " CS_EIS_10mV_1_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_10mV_4.z60\")\n", " CS_EIS_10mV_2_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_10mV_5.z60\")\n", " CS_EIS_10mV_3_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_10mV_6.z60\")\n", " \n", " CS_EIS_20mV_1_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_20mV_4.z60\")\n", " CS_EIS_20mV_2_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_20mV_5.z60\")\n", " CS_EIS_20mV_3_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_20mV_6.z60\")\n", " \n", " CS_EIS_30mV_1_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_30mV_4.z60\")\n", " CS_EIS_30mV_2_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_30mV_5.z60\")\n", " CS_EIS_30mV_3_df = EIS_z60_import(\"./Cast_Stellite1_EIS/CastStellite1_EIS_30mV_6.z60\")\n", " \n", "except FileNotFoundError as e:\n", " print(f\"Error: File was not found.\")\n", " print(e.message)\n", " print(e.args)\n", " exit()\n", "except Exception as e:\n", " print(f\"Error reading the CSV file: {e}\")\n", " exit()\n", "\n", "#CS_EIS_10mV_1_df" ] }, { "cell_type": "code", "execution_count": 245, "id": "73b19be1-b2d8-40cd-bea7-b3ed44591cec", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | Z' | \n", "Z'' | \n", "Z | \n", "theta | \n", "
---|---|---|---|---|
Freq | \n", "\n", " | \n", " | \n", " | \n", " |
100000.000000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
89038.900000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
79279.300000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
70589.400000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
62852.000000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
0.147548 | \n", "248470.0 | \n", "-368151.0 | \n", "351389.643843 | \n", "-145.984063 | \n", "
0.131375 | \n", "295073.0 | \n", "-378262.0 | \n", "417296.238490 | \n", "-142.043072 | \n", "
0.116975 | \n", "325722.0 | \n", "-397505.0 | \n", "460640.469963 | \n", "-140.668257 | \n", "
0.104153 | \n", "330906.0 | \n", "-414913.0 | \n", "467971.753071 | \n", "-141.426552 | \n", "
0.100000 | \n", "344939.0 | \n", "-432463.0 | \n", "487817.411991 | \n", "-141.423610 | \n", "
120 rows × 4 columns
\n", "\n", " | Z' | \n", "Z'' | \n", "Z | \n", "theta | \n", "
---|---|---|---|---|
Freq | \n", "\n", " | \n", " | \n", " | \n", " |
0.100000 | \n", "190442.450394 | \n", "213949.959424 | \n", "269326.296198 | \n", "1.470589 | \n", "
0.103060 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
0.104153 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
0.115770 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
0.116975 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
62852.000000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
70589.400000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
79279.300000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
89038.900000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
100000.000000 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "
218 rows × 4 columns
\n", "