143 lines
99 KiB
Text
143 lines
99 KiB
Text
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 11,
|
||
|
"id": "3a714fd6-1ce2-49ec-8f34-5731788af32b",
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"import io\n",
|
||
|
"import re\n",
|
||
|
"\n",
|
||
|
"import numpy as np\n",
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"\n",
|
||
|
"class Re(object):\n",
|
||
|
" def __init__(self):\n",
|
||
|
" self.last_match = None\n",
|
||
|
" def match(self,pattern,text):\n",
|
||
|
" self.last_match = re.match(pattern,text)\n",
|
||
|
" return self.last_match\n",
|
||
|
" def search(self,pattern,text):\n",
|
||
|
" self.last_match = re.search(pattern,text)\n",
|
||
|
" return self.last_match"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 12,
|
||
|
"id": "a2e3aae8-3742-467d-8271-d2fe36afe84a",
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"INPUT_FILE = \"Parasitics/SingleStage_Cfp_Sweep.txt\"\n",
|
||
|
"\n",
|
||
|
"lines = [];\n",
|
||
|
"sweeps = dict();\n",
|
||
|
"current_step = None;\n",
|
||
|
"\n",
|
||
|
"def setup_sweep(key):\n",
|
||
|
" global sweeps;\n",
|
||
|
"\n",
|
||
|
" if(key in sweeps):\n",
|
||
|
" return;\n",
|
||
|
" \n",
|
||
|
" sweeps[key] = {\n",
|
||
|
" \"sweep\" : key\n",
|
||
|
" };\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"with io.open(INPUT_FILE, mode=\"r\", encoding=\"ISO8859\") as file:\n",
|
||
|
" header = file.readline();\n",
|
||
|
" lines = header.rstrip(\"\\n\").split(\"\\t\");\n",
|
||
|
" \n",
|
||
|
" for line in file:\n",
|
||
|
" line = line.rstrip(\"\\n\");\n",
|
||
|
" lre = Re();\n",
|
||
|
" \n",
|
||
|
" if lre.search(\"^Freq\", line):\n",
|
||
|
" next;\n",
|
||
|
" elif lre.search(\"^Step Information: (.*) \\(Step: .*\\)$\", line):\n",
|
||
|
" current_sweep = lre.last_match[1];\n",
|
||
|
" else:\n",
|
||
|
" setup_sweep(current_sweep);\n",
|
||
|
" sweep = sweeps[current_sweep];\n",
|
||
|
" \n",
|
||
|
" elements = line.split(\"\\t\");\n",
|
||
|
" for idx, element in enumerate(elements):\n",
|
||
|
" lname = lines[idx];\n",
|
||
|
" ere = Re();\n",
|
||
|
" if ere.search(\"^([\\d\\.e\\+-]+)$\", element):\n",
|
||
|
" if(not lname in sweep):\n",
|
||
|
" sweep[lname] = []\n",
|
||
|
" sweep[lname].append(float(ere.last_match[1]));\n",
|
||
|
" elif ere.search(\"^\\(([\\d\\.e\\+-]+)dB,([\\d\\.e\\+-]+)\", element):\n",
|
||
|
" if(not (lname+\" dB\") in sweep):\n",
|
||
|
" sweep[lname+\" dB\"] = []\n",
|
||
|
" sweep[lname+\" deg\"] = []\n",
|
||
|
" sweep[lname+\" dB\"].append(float(ere.last_match[1]));\n",
|
||
|
" sweep[lname+\" deg\"].append(float(ere.last_match[2]));\n",
|
||
|
" else:\n",
|
||
|
" raise RuntimeError(\"Unknown/Not configured parsing element!\");"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 13,
|
||
|
"id": "836be81c-901b-4d8f-87f5-e3f996fcf088",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 640x480 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"for sweep_key in sweeps.keys():\n",
|
||
|
" plt.semilogx(sweeps[sweep_key]['Freq.'], sweeps[sweep_key]['V(n002) dB']);\n",
|
||
|
"\n",
|
||
|
"plt.grid(True);\n",
|
||
|
"plt.xlabel(\"Frequency (in Hz)\");\n",
|
||
|
"plt.ylabel(\"Amplification (in dB)\");\n",
|
||
|
"plt.title(\"Frequency response of varied Rf values\");"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"id": "f0b2b7e1-6163-4756-81fc-54120e5f68d1",
|
||
|
"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.2"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 5
|
||
|
}
|