update notebook

pull/31124/head
Cameron Clough 1 year ago
parent 7615912b16
commit 5699ff101f
  1. 406
      selfdrive/car/ford/tests/ford_fuzzy_fingerprint.ipynb

@ -2,9 +2,17 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 1,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"kj/filesystem-disk-unix.c++:1703: warning: PWD environment variable doesn't match current directory; pwd = /mnt/c/Users/camer/AppData/Local/Programs/Microsoft VS Code\n"
]
}
],
"source": [ "source": [
"from openpilot.tools.lib.comma_car_segments import get_comma_car_segments_database\n", "from openpilot.tools.lib.comma_car_segments import get_comma_car_segments_database\n",
"from openpilot.selfdrive.car.ford.values import CAR\n", "from openpilot.selfdrive.car.ford.values import CAR\n",
@ -20,85 +28,356 @@
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"name": "stdout", "data": {
"output_type": "stream", "application/vnd.jupyter.widget-view+json": {
"text": [ "model_id": "1f0a7e43c6374bafa78941befed85958",
"Skipping platform: FORD F-150 14TH GEN, no data available\n" "version_major": 2,
] "version_minor": 0
},
"text/plain": [
" 0%| | 0/261 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
} }
], ],
"source": [ "source": [
"from openpilot.tools.lib.logreader import get_first_message, LogReader\n", "import random\n",
"\n", "\n",
"from tqdm.contrib.concurrent import thread_map\n",
"\n", "\n",
"FW_TO_CHECK = set()\n", "from openpilot.tools.lib.logreader import LogReader\n",
"\n", "\n",
"for platform in platforms:\n",
" if platform not in database:\n",
" print(f\"Skipping platform: {platform}, no data available\")\n",
" continue\n",
"\n", "\n",
" for segment in database[platform]:\n", "def process(segment):\n",
" lr = LogReader(segment)\n", " CP = LogReader(segment).first(\"carParams\")\n",
" CP = get_first_message(lr, \"carParams\").carParams\n", " return CP.carVin, CP.carFw, CP.carFingerprint, CP.fuzzyFingerprint, CP.fingerprintSource\n",
" FW_TO_CHECK.add((CP.carVin, CP.carFw, CP.carFingerprint, CP.fuzzyFingerprint, CP.fingerprintSource))" "\n",
"\n",
"FW_TO_CHECK = set(thread_map(process, [\n",
" segment for platform in platforms\n",
" for segment in random.sample(database[platform], min(len(database[platform]), 50))\n",
"]))"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 3,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"vin: 3FTTW8E31PRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: FORD MAVERICK 1ST GEN correct: True\n", "vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
"vin: 3FMTK3SU0MMXXXXXX expected: FORD MUSTANG MACH-E 1ST GEN fuzzy: FORD MUSTANG MACH-E 1ST GEN correct: True\n", " source: fw\n",
"vin: 3FMCR9B69NRXXXXXX expected: FORD BRONCO SPORT 1ST GEN fuzzy: FORD BRONCO SPORT 1ST GEN correct: True\n", " fuzzy: True\n",
"vin: 3FTTW8F98NRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: FORD MAVERICK 1ST GEN correct: True\n", " car_fw:\n",
"vin: WF0NXXGCHNJXXXXXX expected: FORD FOCUS 4TH GEN fuzzy: FORD FOCUS 4TH GEN correct: True\n", " abs b'PZ6C-2D053-ED'\n",
"vin: 3FTTW8E31PRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: FORD MAVERICK 1ST GEN correct: True\n", " engine b'PZ6A-14C204-JE'\n",
"vin: WF0NXXGCHNJXXXXXX expected: FORD FOCUS 4TH GEN fuzzy: FORD FOCUS 4TH GEN correct: True\n", " eps b'NZ6C-14D003-AL'\n",
"vin: 3FMCR9B69NRXXXXXX expected: FORD BRONCO SPORT 1ST GEN fuzzy: FORD BRONCO SPORT 1ST GEN correct: True\n", " fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 1FM5K7LC0MGXXXXXX expected: FORD EXPLORER 6TH GEN fuzzy: FORD EXPLORER 6TH GEN correct: True\n", "vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
"vin: 5LM5J7XC9LGXXXXXX expected: FORD EXPLORER 6TH GEN fuzzy: FORD EXPLORER 6TH GEN correct: True\n", " source: fw\n",
"vin: 00000000000XXXXXX expected: FORD ESCAPE 4TH GEN fuzzy: FORD ESCAPE 4TH GEN correct: True\n", " fuzzy: True\n",
"vin: 1FTVW1EL4NWXXXXXX expected: FORD F-150 LIGHTNING 1ST GEN fuzzy: FORD F-150 LIGHTNING 1ST GEN correct: True\n", " car_fw:\n",
"vin: 1FM5K7LC0MGXXXXXX expected: FORD EXPLORER 6TH GEN fuzzy: FORD EXPLORER 6TH GEN correct: True\n", " abs b'PZ6C-2D053-ED'\n",
"vin: 1FMCU9J94MUXXXXXX expected: FORD ESCAPE 4TH GEN fuzzy: FORD ESCAPE 4TH GEN correct: True\n", " engine b'PZ6A-14C204-JE'\n",
"vin: 3FMCR9B69NRXXXXXX expected: FORD BRONCO SPORT 1ST GEN fuzzy: FORD BRONCO SPORT 1ST GEN correct: True\n", " eps b'NZ6C-14D003-AL'\n",
"vin: 00000000000XXXXXX expected: FORD ESCAPE 4TH GEN fuzzy: FORD ESCAPE 4TH GEN correct: True\n", " fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E99NRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: FORD MAVERICK 1ST GEN correct: True\n", "vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
"vin: 3FMTK3SU0MMXXXXXX expected: FORD MUSTANG MACH-E 1ST GEN fuzzy: FORD MUSTANG MACH-E 1ST GEN correct: True\n", " source: fw\n",
"vin: 1FTVW1EL4NWXXXXXX expected: FORD F-150 LIGHTNING 1ST GEN fuzzy: FORD F-150 LIGHTNING 1ST GEN correct: True\n", " fuzzy: True\n",
"vin: 00000000000XXXXXX expected: FORD ESCAPE 4TH GEN fuzzy: FORD ESCAPE 4TH GEN correct: True\n", " car_fw:\n",
"vin: 1FM5K8GC7LGXXXXXX expected: FORD EXPLORER 6TH GEN fuzzy: FORD EXPLORER 6TH GEN correct: True\n", " abs b'PZ6C-2D053-ED'\n",
"vin: 1FM5K7LC0MGXXXXXX expected: FORD EXPLORER 6TH GEN fuzzy: FORD EXPLORER 6TH GEN correct: True\n", " engine b'PZ6A-14C204-JE'\n",
"vin: 3FMCR9B69NRXXXXXX expected: FORD BRONCO SPORT 1ST GEN fuzzy: FORD BRONCO SPORT 1ST GEN correct: True\n", " eps b'NZ6C-14D003-AL'\n",
"vin: 1FM5K8HC7MGXXXXXX expected: FORD EXPLORER 6TH GEN fuzzy: FORD EXPLORER 6TH GEN correct: True\n", " fwdCamera b'NZ6T-14F397-AC'\n",
"vin: WF0NXXGCHNJXXXXXX expected: FORD FOCUS 4TH GEN fuzzy: FORD FOCUS 4TH GEN correct: True\n", "Skipping vin: 00000000000XXXXXX platform: FORD F-150 14TH GEN, no car fw\n",
"vin: 3FTTW8E31PRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: FORD MAVERICK 1ST GEN correct: True\n", "vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
"vin: 5LM5J7XC8MGXXXXXX expected: FORD EXPLORER 6TH GEN fuzzy: FORD EXPLORER 6TH GEN correct: True\n", " source: fw\n",
"vin: 1FTVW1EL4NWXXXXXX expected: FORD F-150 LIGHTNING 1ST GEN fuzzy: FORD F-150 LIGHTNING 1ST GEN correct: True\n", " fuzzy: True\n",
"vin: 1FM5K8GC7NGXXXXXX expected: FORD EXPLORER 6TH GEN fuzzy: FORD EXPLORER 6TH GEN correct: True\n", " car_fw:\n",
"vin: 3FMTK3SU0MMXXXXXX expected: FORD MUSTANG MACH-E 1ST GEN fuzzy: FORD MUSTANG MACH-E 1ST GEN correct: True\n", " abs b'PZ6C-2D053-ED'\n",
"Success rate: 100.00%\n" " engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"Skipping vin: 00000000000XXXXXX platform: FORD F-150 14TH GEN, no car fw\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"Skipping vin: 00000000000XXXXXX platform: FORD F-150 14TH GEN, no car fw\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"Skipping vin: 00000000000XXXXXX platform: FORD F-150 14TH GEN, no car fw\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E34PRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"Skipping vin: 00000000000XXXXXX platform: FORD F-150 14TH GEN, no car fw\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"vin: 3FTTW8E3XPRXXXXXX expected: FORD MAVERICK 1ST GEN fuzzy: mock correct: False\n",
" source: fw\n",
" fuzzy: True\n",
" car_fw:\n",
" abs b'PZ6C-2D053-ED'\n",
" engine b'PZ6A-14C204-JE'\n",
" eps b'NZ6C-14D003-AL'\n",
" fwdCamera b'NZ6T-14F397-AC'\n",
"Success rate: 92.58%\n"
] ]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>source</th>\n",
" <th>expected</th>\n",
" <th>fuzzy</th>\n",
" <th>correct</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>fw</td>\n",
" <td>FORD BRONCO SPORT 1ST GEN</td>\n",
" <td>FORD BRONCO SPORT 1ST GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>fw</td>\n",
" <td>FORD MAVERICK 1ST GEN</td>\n",
" <td>mock</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>fw</td>\n",
" <td>FORD ESCAPE 4TH GEN</td>\n",
" <td>FORD ESCAPE 4TH GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>fw</td>\n",
" <td>FORD FOCUS 4TH GEN</td>\n",
" <td>FORD FOCUS 4TH GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>fixed</td>\n",
" <td>FORD EXPLORER 6TH GEN</td>\n",
" <td>FORD EXPLORER 6TH GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>fw</td>\n",
" <td>FORD EXPLORER 6TH GEN</td>\n",
" <td>FORD EXPLORER 6TH GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>fw</td>\n",
" <td>FORD MAVERICK 1ST GEN</td>\n",
" <td>FORD MAVERICK 1ST GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>fw</td>\n",
" <td>FORD F-150 LIGHTNING 1ST GEN</td>\n",
" <td>FORD F-150 LIGHTNING 1ST GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>fixed</td>\n",
" <td>FORD MAVERICK 1ST GEN</td>\n",
" <td>FORD MAVERICK 1ST GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>113</th>\n",
" <td>fw</td>\n",
" <td>FORD MUSTANG MACH-E 1ST GEN</td>\n",
" <td>FORD MUSTANG MACH-E 1ST GEN</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" source expected fuzzy \\\n",
"0 fw FORD BRONCO SPORT 1ST GEN FORD BRONCO SPORT 1ST GEN \n",
"1 fw FORD MAVERICK 1ST GEN mock \n",
"4 fw FORD ESCAPE 4TH GEN FORD ESCAPE 4TH GEN \n",
"6 fw FORD FOCUS 4TH GEN FORD FOCUS 4TH GEN \n",
"7 fixed FORD EXPLORER 6TH GEN FORD EXPLORER 6TH GEN \n",
"10 fw FORD EXPLORER 6TH GEN FORD EXPLORER 6TH GEN \n",
"19 fw FORD MAVERICK 1ST GEN FORD MAVERICK 1ST GEN \n",
"41 fw FORD F-150 LIGHTNING 1ST GEN FORD F-150 LIGHTNING 1ST GEN \n",
"52 fixed FORD MAVERICK 1ST GEN FORD MAVERICK 1ST GEN \n",
"113 fw FORD MUSTANG MACH-E 1ST GEN FORD MUSTANG MACH-E 1ST GEN \n",
"\n",
" correct \n",
"0 True \n",
"1 False \n",
"4 True \n",
"6 True \n",
"7 True \n",
"10 True \n",
"19 True \n",
"41 True \n",
"52 True \n",
"113 True "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
} }
], ],
"source": [ "source": [
"import pandas as pd\n",
"\n",
"from openpilot.selfdrive.car.fw_versions import build_fw_dict\n", "from openpilot.selfdrive.car.fw_versions import build_fw_dict\n",
"from openpilot.selfdrive.car.ford.values import match_fw_to_car_fuzzy\n",
"from openpilot.selfdrive.car.ford.fingerprints import FW_VERSIONS\n", "from openpilot.selfdrive.car.ford.fingerprints import FW_VERSIONS\n",
"from openpilot.selfdrive.car.ford.values import match_fw_to_car_fuzzy\n",
"\n", "\n",
"rows = []\n",
"success, count = 0, 0\n", "success, count = 0, 0\n",
"for vin, car_fw, expected_platform, fuzzy, surce in FW_TO_CHECK:\n", "for vin, car_fw, expected_platform, fuzzy, source in FW_TO_CHECK:\n",
" car_fw = list(filter(lambda fw: fw.brand == \"ford\" and not fw.logging, car_fw))\n",
" if len(car_fw) == 0:\n", " if len(car_fw) == 0:\n",
" print(f\"Skipping vin: {vin} platform: {expected_platform}, no car fw\")\n", " print(f\"Skipping vin: {vin} platform: {expected_platform}, no car fw\")\n",
" continue\n", " continue\n",
" car_fw = build_fw_dict(car_fw)\n", "\n",
" fuzzy_fingerprint = match_fw_to_car_fuzzy(car_fw, FW_VERSIONS)\n", " fuzzy_fingerprint = match_fw_to_car_fuzzy(build_fw_dict(car_fw), FW_VERSIONS)\n",
" if len(fuzzy_fingerprint) == 0:\n", " if len(fuzzy_fingerprint) == 0:\n",
" fuzzy_fingerprint = \"mock\"\n", " fuzzy_fingerprint = \"mock\"\n",
" elif len(fuzzy_fingerprint) > 1:\n", " elif len(fuzzy_fingerprint) > 1:\n",
@ -107,15 +386,14 @@
" fuzzy_fingerprint = list(fuzzy_fingerprint)[0]\n", " fuzzy_fingerprint = list(fuzzy_fingerprint)[0]\n",
"\n", "\n",
" correct = fuzzy_fingerprint == expected_platform\n", " correct = fuzzy_fingerprint == expected_platform\n",
" print(f\"vin: {vin} expected: {expected_platform: <30} fuzzy: {fuzzy_fingerprint: <30} correct: {correct}\")\n", " rows.append((source, expected_platform, fuzzy_fingerprint, correct))\n",
" if not correct:\n", " if not correct:\n",
" print(f\" source: {surce}\")\n", " print(f\"vin: {vin} expected: {expected_platform: <30} fuzzy: {fuzzy_fingerprint: <30} correct: {correct}\")\n",
" print(f\" source: {source}\")\n",
" print(f\" fuzzy: {fuzzy}\")\n", " print(f\" fuzzy: {fuzzy}\")\n",
" print(\" car_fw:\")\n", " print(\" car_fw:\")\n",
" fws = set()\n", " fws = set()\n",
" for fw in car_fw:\n", " for fw in car_fw:\n",
" if fw.brand != \"ford\" or fw.logging:\n",
" continue\n",
" fw_version = fw.fwVersion.rstrip(b\"\\0\")\n", " fw_version = fw.fwVersion.rstrip(b\"\\0\")\n",
" fws.add(f\"{fw.ecu} {fw_version}\")\n", " fws.add(f\"{fw.ecu} {fw_version}\")\n",
" for fw in sorted(fws):\n", " for fw in sorted(fws):\n",
@ -123,8 +401,20 @@
" success += correct\n", " success += correct\n",
" count += 1\n", " count += 1\n",
"\n", "\n",
"print(f\"Success rate: {success / count * 100:.2f}%\")" "print(f\"Success rate: {success / count * 100:.2f}%\")\n",
"\n",
"pd.set_option(\"display.max_rows\", None)\n",
"\n",
"df = pd.DataFrame(rows, columns=[\"source\", \"expected\", \"fuzzy\", \"correct\"]).drop_duplicates()\n",
"df"
] ]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
} }
], ],
"metadata": { "metadata": {

Loading…
Cancel
Save