data: add missing hot baselines

This commit is contained in:
jaseg 2025-07-02 17:07:18 +02:00
parent 9801bddfe4
commit a6e11dc6b9
2 changed files with 64 additions and 3 deletions

Binary file not shown.

View file

@ -25,7 +25,7 @@
},
{
"cell_type": "code",
"execution_count": 62,
"execution_count": 68,
"id": "32a509a0-ff60-4744-b0a6-7077c4a15bec",
"metadata": {},
"outputs": [
@ -322,7 +322,7 @@
},
{
"cell_type": "code",
"execution_count": 63,
"execution_count": 69,
"id": "62650fb7-6230-4883-ba9a-aad9e0c4b69e",
"metadata": {
"scrolled": true
@ -349,10 +349,12 @@
" 'mod-25-07-02-01-p0.3': 12,\n",
" 'baseline-repeat-25-07-02-01-p0.3': 11,\n",
" 'baseline-4-p0.3': 10,\n",
" 'hot-mesh-hot-serial-5-25-07-02-01-p0.3': 10,\n",
" 'Baseline-2-alt-side-a-right-p0.4': 10,\n",
" 'Baseline-1-alt-side-a-right-p0.4': 10,\n",
" 'Baseline-2-alt-side-a-left-p0.4': 10,\n",
" 'Baseline-1-alt-side-a-left-p0.4': 10,\n",
" 'hot-mesh-hot-serial-5-25-07-02-01-p0.4': 10,\n",
" 'baseline-6-p0.6': 10,\n",
" 'baseline-6-p1.0': 10,\n",
" 'cal-open': 2,\n",
@ -361,7 +363,7 @@
" 'baseline-4-p0.6': 1})"
]
},
"execution_count": 63,
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
@ -370,6 +372,36 @@
"Counter([value['info']['meta'] for entries in data.values() for value in entries])"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "50d21521-28d4-44da-b72f-223212424c9d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:55:35.537Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:55:42.414Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:55:48.986Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:55:55.904Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:56:02.672Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:56:09.497Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:56:16.729Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:56:23.495Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:56:30.286Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n",
"{'meta': 'hot-mesh-hot-serial-5-25-07-02-01-p0.4', 'specimen': 'SP-PITCH-V2-0004', 'mcu': '203632423631500f003f0034', 'chip': 'pi3hdx12211', 'timestamp': '2025-07-02T14:56:43.710Z', 'mods': [], 'mesh_id': 'M-SP-PITCH-V2-0004-0.4', 'mesh_layout': 'SP-PITCH-V2', 'pitch': '0.4', 'serial': 4}\n"
]
}
],
"source": [
"for foo in data.values():\n",
" for elem in foo:\n",
" if elem['info']['meta'] == 'hot-mesh-hot-serial-5-25-07-02-01-p0.4':\n",
" print(elem['info'])"
]
},
{
"cell_type": "code",
"execution_count": 7,
@ -2049,6 +2081,35 @@
"smooth = None\n",
"plot_vector_covar(group_baseline, group_touch_ground + group_touch, vector_method='norm', distance_method='corr', smooth=smooth, plot_cdf=True)"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "9fd2e923-894d-452b-bcb6-f1a5d9b394b0",
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "zero-size array to reduction operation minimum which has no identity",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mValueError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[72]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[32m 2\u001b[39m group_touch = [value \u001b[38;5;28;01mfor\u001b[39;00m value \u001b[38;5;129;01min\u001b[39;00m data[\u001b[33m'\u001b[39m\u001b[33mM-SP-PITCH-V2-0005-0.3\u001b[39m\u001b[33m'\u001b[39m] \u001b[38;5;28;01mif\u001b[39;00m value[\u001b[33m'\u001b[39m\u001b[33minfo\u001b[39m\u001b[33m'\u001b[39m][\u001b[33m'\u001b[39m\u001b[33mmeta\u001b[39m\u001b[33m'\u001b[39m] == \u001b[33m'\u001b[39m\u001b[33mhot-mesh-hot-serial-5-25-07-02-01-p0.3\u001b[39m\u001b[33m'\u001b[39m][:\u001b[32m10\u001b[39m]\n\u001b[32m 4\u001b[39m smooth = \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m \u001b[43mplot_vector_covar\u001b[49m\u001b[43m(\u001b[49m\u001b[43mgroup_baseline\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgroup_touch\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvector_method\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mnorm\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdistance_method\u001b[49m\u001b[43m=\u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mcorr\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msmooth\u001b[49m\u001b[43m=\u001b[49m\u001b[43msmooth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mplot_cdf\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[48]\u001b[39m\u001b[32m, line 55\u001b[39m, in \u001b[36mplot_vector_covar\u001b[39m\u001b[34m(group_a, group_b, do_cal, vector_method, distance_method, smooth, plot_cdf)\u001b[39m\n\u001b[32m 52\u001b[39m cdf = \u001b[38;5;28;01mlambda\u001b[39;00m x, mu, sigma: \u001b[32m1\u001b[39m/\u001b[32m2\u001b[39m * (\u001b[32m1\u001b[39m + math.erf((x - mu) / (sigma * math.sqrt(\u001b[32m2\u001b[39m))))\n\u001b[32m 53\u001b[39m \u001b[38;5;66;03m#threshold = (np.mean(within_class) + np.mean(cross_class)) / 2\u001b[39;00m\n\u001b[32m 54\u001b[39m \u001b[38;5;66;03m#threshold = np.mean(within_class) -2*np.std(within_class)\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m55\u001b[39m threshold = (\u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmin\u001b[49m\u001b[43m(\u001b[49m\u001b[43mwithin_class\u001b[49m\u001b[43m)\u001b[49m + np.max(cross_class)) / \u001b[32m2\u001b[39m\n\u001b[32m 56\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m'\u001b[39m\u001b[33mBaseline threshold set at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mthreshold\u001b[38;5;132;01m:\u001b[39;00m\u001b[33m.6f\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m'\u001b[39m)\n\u001b[32m 58\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m name, data \u001b[38;5;129;01min\u001b[39;00m [(\u001b[33m'\u001b[39m\u001b[33mWithin\u001b[39m\u001b[33m'\u001b[39m, within_class), (\u001b[33m'\u001b[39m\u001b[33mCross\u001b[39m\u001b[33m'\u001b[39m, cross_class)]:\n",
"\u001b[36mFile \u001b[39m\u001b[32m/usr/lib/python3.13/site-packages/numpy/_core/fromnumeric.py:3301\u001b[39m, in \u001b[36mmin\u001b[39m\u001b[34m(a, axis, out, keepdims, initial, where)\u001b[39m\n\u001b[32m 3189\u001b[39m \u001b[38;5;129m@array_function_dispatch\u001b[39m(_min_dispatcher)\n\u001b[32m 3190\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mmin\u001b[39m(a, axis=\u001b[38;5;28;01mNone\u001b[39;00m, out=\u001b[38;5;28;01mNone\u001b[39;00m, keepdims=np._NoValue, initial=np._NoValue,\n\u001b[32m 3191\u001b[39m where=np._NoValue):\n\u001b[32m 3192\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m 3193\u001b[39m \u001b[33;03m Return the minimum of an array or minimum along an axis.\u001b[39;00m\n\u001b[32m 3194\u001b[39m \n\u001b[32m (...)\u001b[39m\u001b[32m 3299\u001b[39m \u001b[33;03m 6\u001b[39;00m\n\u001b[32m 3300\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m3301\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_wrapreduction\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mminimum\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m'\u001b[39;49m\u001b[33;43mmin\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 3302\u001b[39m \u001b[43m \u001b[49m\u001b[43mkeepdims\u001b[49m\u001b[43m=\u001b[49m\u001b[43mkeepdims\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minitial\u001b[49m\u001b[43m=\u001b[49m\u001b[43minitial\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwhere\u001b[49m\u001b[43m=\u001b[49m\u001b[43mwhere\u001b[49m\u001b[43m)\u001b[49m\n",
"\u001b[36mFile \u001b[39m\u001b[32m/usr/lib/python3.13/site-packages/numpy/_core/fromnumeric.py:86\u001b[39m, in \u001b[36m_wrapreduction\u001b[39m\u001b[34m(obj, ufunc, method, axis, dtype, out, **kwargs)\u001b[39m\n\u001b[32m 83\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 84\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m reduction(axis=axis, out=out, **passkwargs)\n\u001b[32m---> \u001b[39m\u001b[32m86\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mufunc\u001b[49m\u001b[43m.\u001b[49m\u001b[43mreduce\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mpasskwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"\u001b[31mValueError\u001b[39m: zero-size array to reduction operation minimum which has no identity"
]
}
],
"source": [
"group_baseline = [value for value in data['M-SP-PITCH-V2-0004-0.3'] if value['info']['meta'] == 'hot-mesh-hot-serial-5-25-07-02-01-p0.3'][:10]\n",
"group_touch = [value for value in data['M-SP-PITCH-V2-0005-0.3'] if value['info']['meta'] == 'hot-mesh-hot-serial-5-25-07-02-01-p0.3'][:10]\n",
"\n",
"smooth = None\n",
"plot_vector_covar(group_baseline, group_touch, vector_method='norm', distance_method='corr', smooth=smooth, plot_cdf=True)"
]
}
],
"metadata": {