{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "32653374-08ba-4390-8830-4d6c9413b6fe", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:20.527941Z", "iopub.status.busy": "2024-11-18T21:26:20.527163Z", "iopub.status.idle": "2024-11-18T21:26:20.553961Z", "shell.execute_reply": "2024-11-18T21:26:20.551578Z", "shell.execute_reply.started": "2024-11-18T21:26:20.527868Z" } }, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 2, "id": "c8930546-1827-496d-98a8-264f4c97a2cc", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:20.555450Z", "iopub.status.busy": "2024-11-18T21:26:20.555137Z", "iopub.status.idle": "2024-11-18T21:26:26.663946Z", "shell.execute_reply": "2024-11-18T21:26:26.662988Z", "shell.execute_reply.started": "2024-11-18T21:26:20.555420Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/santiago/Software/bat_detectors/batdetect2/.venv/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] } ], "source": [ "import json\n", "from pathlib import Path\n", "from typing import List\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pytest\n", "from batdetect2.compat.data import load_annotation_project\n", "from batdetect2.compat.params import get_training_preprocessing_config\n", "from batdetect2.train.preprocess import generate_train_example" ] }, { "cell_type": "code", "execution_count": 3, "id": "5af8d5fd-58a8-4034-b92d-0514cd987eaf", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:26.665630Z", "iopub.status.busy": "2024-11-18T21:26:26.664900Z", "iopub.status.idle": "2024-11-18T21:26:26.735198Z", "shell.execute_reply": "2024-11-18T21:26:26.734346Z", "shell.execute_reply.started": "2024-11-18T21:26:26.665601Z" } }, "outputs": [], "source": [ "regression_dir = Path(\"../tests/data/regression/\")\n", "example_audio_dir = Path(\"../example_data/audio/\")\n", "example_audio_files = list(example_audio_dir.glob(\"*.wav\"))\n", "example_anns_dir = Path(\"../example_data/anns/\")\n", "\n", "audio_file = example_audio_files[0]\n", "example_file = regression_dir / f\"{audio_file.name}.npz\"\n", "\n", "dataset = np.load(example_file)\n", "\n", "spec = dataset[\"spec\"][0]\n", "detection_mask = dataset[\"detection_mask\"][0]\n", "size_mask = dataset[\"size_mask\"]\n", "class_mask = dataset[\"class_mask\"]\n", "\n", "project = load_annotation_project(\n", " example_anns_dir,\n", " audio_dir=example_audio_dir,\n", ")\n", "\n", "clip_annotation = next(\n", " ann for ann in project.clip_annotations if ann.clip.recording.path == audio_file\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "id": "b7b069a3-995f-4e73-8886-d1ce2202f5a5", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:26.736224Z", "iopub.status.busy": "2024-11-18T21:26:26.735953Z", "iopub.status.idle": "2024-11-18T21:26:26.767802Z", "shell.execute_reply": "2024-11-18T21:26:26.766909Z", "shell.execute_reply.started": "2024-11-18T21:26:26.736200Z" } }, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clip_annotation.clip.duration" ] }, { "cell_type": "code", "execution_count": 5, "id": "62c23365-8660-4ffb-b987-9131d6af6718", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:26.769444Z", "iopub.status.busy": "2024-11-18T21:26:26.768777Z", "iopub.status.idle": "2024-11-18T21:26:26.806659Z", "shell.execute_reply": "2024-11-18T21:26:26.805641Z", "shell.execute_reply.started": "2024-11-18T21:26:26.769415Z" } }, "outputs": [], "source": [ "old_parameters = json.loads((regression_dir / \"params.json\").read_text())\n", "config = get_training_preprocessing_config(old_parameters)" ] }, { "cell_type": "code", "execution_count": 6, "id": "2f244732-fa11-4042-8043-c8f9268a55a3", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:26.810985Z", "iopub.status.busy": "2024-11-18T21:26:26.810570Z", "iopub.status.idle": "2024-11-18T21:26:26.846914Z", "shell.execute_reply": "2024-11-18T21:26:26.845654Z", "shell.execute_reply.started": "2024-11-18T21:26:26.810945Z" } }, "outputs": [ { "data": { "text/plain": [ "SpecSizeConfig(height=256, resize_factor=0.5, divide_factor=32)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "config.preprocessing.spectrogram.size" ] }, { "cell_type": "code", "execution_count": 7, "id": "641433fb-3d19-44df-8902-b0e0208b2013", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:26.849480Z", "iopub.status.busy": "2024-11-18T21:26:26.848511Z", "iopub.status.idle": "2024-11-18T21:26:27.390760Z", "shell.execute_reply": "2024-11-18T21:26:27.389986Z", "shell.execute_reply.started": "2024-11-18T21:26:26.849438Z" } }, "outputs": [], "source": [ "new_dataset = generate_train_example(clip_annotation, config)\n", "new_spec = new_dataset[\"spectrogram\"].values\n", "new_detection_mask = new_dataset[\"detection\"].values\n", "new_size_mask = new_dataset[\"size\"].values\n", "new_class_mask = new_dataset[\"class\"].values" ] }, { "cell_type": "code", "execution_count": 8, "id": "502d25c1-0924-4a9f-8676-5a68cbd6c3af", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:27.391967Z", "iopub.status.busy": "2024-11-18T21:26:27.391628Z", "iopub.status.idle": "2024-11-18T21:26:27.426737Z", "shell.execute_reply": "2024-11-18T21:26:27.426148Z", "shell.execute_reply.started": "2024-11-18T21:26:27.391935Z" } }, "outputs": [ { "data": { "text/plain": [ "(128, 512)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_spec.shape" ] }, { "cell_type": "code", "execution_count": 9, "id": "185f8b4e-bfcb-447f-9097-845fbd69ba6f", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:27.428183Z", "iopub.status.busy": "2024-11-18T21:26:27.427611Z", "iopub.status.idle": "2024-11-18T21:26:27.468561Z", "shell.execute_reply": "2024-11-18T21:26:27.467552Z", "shell.execute_reply.started": "2024-11-18T21:26:27.428145Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'category' (category: 17)> Size: 2kB\n",
       "array(['Barbastellus barbastellus', 'Eptesicus serotinus', 'Myotis alcathoe',\n",
       "       'Myotis bechsteinii', 'Myotis brandtii', 'Myotis daubentonii',\n",
       "       'Myotis mystacinus', 'Myotis nattereri', 'Nyctalus leisleri',\n",
       "       'Nyctalus noctula', 'Pipistrellus nathusii',\n",
       "       'Pipistrellus pipistrellus', 'Pipistrellus pygmaeus',\n",
       "       'Plecotus auritus', 'Plecotus austriacus', 'Rhinolophus ferrumequinum',\n",
       "       'Rhinolophus hipposideros'], dtype='<U25')\n",
       "Coordinates:\n",
       "    channel   int64 8B 0\n",
       "  * category  (category) <U25 2kB 'Barbastellus barbastellus' ... 'Rhinolophu...
" ], "text/plain": [ " Size: 2kB\n", "array(['Barbastellus barbastellus', 'Eptesicus serotinus', 'Myotis alcathoe',\n", " 'Myotis bechsteinii', 'Myotis brandtii', 'Myotis daubentonii',\n", " 'Myotis mystacinus', 'Myotis nattereri', 'Nyctalus leisleri',\n", " 'Nyctalus noctula', 'Pipistrellus nathusii',\n", " 'Pipistrellus pipistrellus', 'Pipistrellus pygmaeus',\n", " 'Plecotus auritus', 'Plecotus austriacus', 'Rhinolophus ferrumequinum',\n", " 'Rhinolophus hipposideros'], dtype='" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_versions(spec, new_spec, title=\"Spectrogram\")" ] }, { "cell_type": "code", "execution_count": 13, "id": "7db30b20-c0e5-4329-8c31-836d2cfeb595", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:28.075421Z", "iopub.status.busy": "2024-11-18T21:26:28.075178Z", "iopub.status.idle": "2024-11-18T21:26:28.536098Z", "shell.execute_reply": "2024-11-18T21:26:28.535260Z", "shell.execute_reply.started": "2024-11-18T21:26:28.075399Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAAIeCAYAAAA21Rd+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFCklEQVR4nO3de5hX1X0v/s8MN0VwBCx40AAaLwiYRD1PGk9EgtWcaBpP1UZrJCGJR3liD6lJWk2sKWnVFI8mRu1z4iWRGLS2mKRWTVKSNDRcbGyqiUG8AqOoBOVWEOYiDPv3hz/2rBlmZBhmMfPl+3o9z35Y8509e+8Z9mXt/V5r7ZqIKAIAAAAAACCD2t7eAAAAAAAAYP8liAAAAAAAALIRRAAAAAAAANkIIgAAAAAAgGwEEQAAAAAAQDaCCAAAAAAAIBtBBAAAAAAAkI0gAgAAAAAAyEYQAQAAAAAAZCOIAACAfai+vj7mzJnT25sBAACwzwgiAADoU6ZPnx5FUZRTY2NjvPrqq/Ev//IvMXPmzBgyZEi3l3388cfHrFmzYuzYsT24xbs65ZRTYtasWVFXV5d1PXti59/15JNP7vD7CxYsiKVLl2bdhrPOOitmzZqVdR0AAEDfI4gAAKBP+vKXvxzTpk2Lz3zmM3HbbbdFRMQ3vvGNWLp0aZxwwgndWuaECRPiK1/5SowbN64Ht3RX/+N//I/4yle+Eocccsgu3zvuuOPi0ksvzbr+vurss8+Or3zlK729GQAAwD7Wv7c3AAAAOvLjH/84Hn/88fLr2bNnx9SpU+ORRx6Jhx56KI4//vhoamrqxS3snjfffLO3NwEAAGCf0iMCAICKsWDBgrj22mtj3LhxMW3atDbfO+644+KBBx6I9evXR2NjY/zqV7+Kj3zkI+X3p0+fHt/73vciIuLf/u3fyqGfpkyZUs7zoQ99KBYuXBhbtmyJzZs3xyOPPBITJkzYZTuOO+64+Md//Md4/fXXo6GhIZ599tm47rrrIiJi1qxZcdNNN0VExIsvvliuZ+dwUB29I+LII4+MefPmxfr162Pr1q3x7//+73H22We3mWfKlClRFEV89KMfjauvvjpefvnlaGxsjJ/97Gfxzne+s7t/0t26+OKL4z//8z+joaEh1q9fH/fff38cccQRbeY59dRTY968efHSSy9FU1NTrFq1Kr7+9a/HAQccUM4zZ86c+D//5/9ERLQZeisiYuzYsVEURXzhC1+Iyy+/PFasWBFbt26N+fPnl+u65ppr4uWXX46GhoZ48MEHY9iwYW224ZxzzolHHnkkXn311Whqaorly5fHNddcE7W1bW95dg5BddJJJ8WSJUuioaEhVq5cGTNmzOjxvx0AAPAWPSIAAKgoc+fOjb/927+ND37wg/Gtb30rIt4acmnJkiXx6quvxuzZs2Pr1q1xwQUXxIMPPhjnn39+PPjgg7Fw4cK45ZZb4s/+7M/i+uuvj2eeeSYiovx32rRpcc8998T8+fPjqquuisGDB8dnPvOZWLx4cZx44onx0ksvRUTECSecEIsWLYpt27bFnXfeGS+++GK8853vjI985CNxzTXXxA9+8IM49thj42Mf+1hcccUVsW7duoiIWLt2bYe/z8iRI+PRRx+NwYMHx6233hrr16+P6dOnx0MPPRR//Md/HA8++GCb+b/4xS/Gjh074qabboq6urq48sor47777ov3ve99Xfr71dXVxYgRI3b5fMCAAbt8dvXVV8e1114b8+bNi29961vxe7/3ezFz5sxYuHBhnHjiibFp06aIiPjoRz8agwcPjm9+85uxfv36eO973xszZ86MI444Ii644IKIiLjjjjti9OjR8cEPfnCXEGmniy++OAYOHBi33XZbDB8+PK688sqYN29e/PznP48PfOADccMNN8TRRx8dM2fOjJtuuikuueSS8mc/+clPxpYtW+LrX/96bNmyJU4//fS49tpr4+CDD44rr7yyzXqGDRsWP/rRj2LevHlx//33xwUXXBC33357vPnmm14kDgAAmRQmk8lkMplMJlNfmaZPn14URVGcfPLJnc6zcePG4vHHHy+//ulPf1o8+eSTxcCBA9vMt3jx4uK5554rvz7//POLoiiKKVOmtJnvoIMOKjZs2FDccccdbT4fOXJksXHjxjaf/9u//VuxadOm4h3veEen2/eFL3yhKIqiGDt27C7fq6+vL+bMmVN+/fWvf70oiqJ4//vf32Z7VqxYUaxcubKoqakpIqKYMmVKURRFsWzZsmLAgAHlvDNnziyKoigmTpzYpb/r21m6dGk5/5gxY4pt27YVX/rSl9osZ+LEicWbb77Z5vMDDjhgl/VdddVVRUtLS5u/02233VYUb3WDaDONHTu2KIqieO2114qDDz64/Pz6668viqIofv3rXxf9+vUrP7/vvvuKpqamNv/fHW3DN7/5zWLLli1t5luwYEFRFEXxuc99rvxswIABxRNPPFGsWbOm6N+/f68fAyaTyWQymUwm0/42GZoJAICKs2XLlhg6dGhEvNW6/fTTT4958+bF0KFDY8SIEeU0f/78OPbYY2P06NFvu7wzzzwzhg0bFvfff3+bn29paYnHHnsspk6dGhERhx56aEyZMiXuvvvuePnll3vkdzn77LPjscceiyVLlpSfbd26Ne6888448sgjdxkaas6cObFt27by60WLFkVExFFHHdWl9V1++eVxxhln7DI9+eSTbeY777zzora2NubNm9fmb7JmzZp44YUXyr9JRLR5V8fgwYNjxIgR8eijj0ZtbW2ceOKJXf5bPPDAA7F58+by68ceeywiIu69995oaWlp8/mgQYPi8MMP73AbhgwZEiNGjIhFixbFQQcdFOPHj2+znm3btsUdd9yxy9ejRo2Kk08+ucvbCwAAdI2hmQAAqDhDhgyJ119/PSIijj766KitrY3rrruufE9DeyNHjozVq1d3urxjjjkmIt56f0BHdg5BtPNh/1NPPdXtbW9v7Nix5QP31M4ho8aOHRvLli0rP1+1alWb+TZu3BgRscs7EzrzH//xH21eAp4u59BDDy2/PuaYY6K2tjaWL1/e4XLSMOQd73hH/M3f/E2cc845MXz48Dbz1dXVdWm7Inb93Xb+3duHPjs/HzZsWNTX10fEW8NzXXfddXH66afvss72X69evToaGhrafPb8889HRMS4ceM6/P8AAAC6TxABAEBFOfzww+OQQw4pH5DvfBnxjTfeGPPnz+/wZzp7mL7TzmVMmzYt1qxZs8v3t2/fvjeb3KPSngGpmpqaHl1PbW1t7NixI84666wO17lly5Zyvp/+9KcxfPjwuOGGG+LZZ5+NrVu3xuGHHx733HPPLi+Lfjud/W67+53r6uriF7/4RWzevDn+6q/+KlasWBFNTU1x0kknxf/9v/93j7YBAADoeYIIAAAqysc//vGIiDJ0WLlyZUS81UL/X//1X9/2Z996PcGuVqxYERERr7/++tsuY+e6Jk2a1K31dOSll16K4447bpfPdw4ntPMl2fvaihUrora2Nurr6+OFF17odL4TTjghjjvuuPjEJz4Rc+fOLT8/44wzdpl3T/4ue+IDH/hA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fjd++ctfxpQpU+KHP/xhl7fv6KOPju9973vx7W9/O+6555749Kc/Hd/5znfi8ccfj6effjoi3urV8Ud/9EfxwAMPRH19fYwaNSpmzJgRv/jFL2LChAnxu9/9rsvrAwAA+i5BBAAAVJiDDz44Dj/88N2+/+G3v/1t/K//9b9iyJAh5WdPPvlkXHzxxW/7cyeeeGJceOGFcfPNN8fnP//5iIj45je/GXfffXe85z3v6dI2jh8/PiZPnlwGJfPmzYuXX345PvWpT8Vf/MVfRETE0qVL49hjj23TG2Pu3Lnx7LPPxiWXXBLXXXddl9YFAAD0bYZmAgCACjN06NCIiHjjjTfedr6d3z/44IPLz26//fbdLv9DH/pQRET8v//3/9p8ftttt3V5G5ctW9amt8a6deviueeei6OOOqr87M033yxDiNra2hg+fHhs2bIlnnvuuTjppJO6vC4AAKBvE0QAAECF2Rkw7AwkOtNRYNHZi6tTY8eOjZaWll3mXb58eZe3cdWqVbt8tnHjxhg2bFj5dU1NTVxxxRXx/PPPR3Nzc6xfvz7WrVsX7373u6Ourq7L6wIAAPo2QQQAAFSYzZs3x+rVq3f7Uud3vetd8corr7QJIhobG3NvXkREtLS0dPh5+l6Kq6++Om6++eZYuHBhTJs2LT74wQ/GGWecEU899VTU1rpVAQCA/YV3RAAAQAV65JFH4rLLLov3v//9sWTJkl2+f+qpp8aRRx7ZpaGY2nvppZeiX79+ceSRR7bpBXH00Ufv1Ta398d//Mfx85//PP73//7fbT4/5JBDYt26dT26LgAAoPdoZgQAABXoxhtvjIaGhrjjjjti+PDhbb43bNiwuP3222Pr1q1x44037vGy58+fHxERl19+eZvPZ86c2f0N7kBLS0ubHhIRb4UTRxxxRI+uBwAA6F16RAAAQAVavnx5TJ8+Pe67775YunRpfPvb3476+voYN25cXHLJJXHooYfGRRddFCtXrtzjZT/xxBPxve99Lz73uc/FiBEj4pe//GVMmTIljj322IiI8gXTe+uRRx6JWbNmxd133x2PPvponHDCCXHxxRfHihUremT5AABA3yCIAACACvW9730vnn322fjSl75Uhg/r16+PBQsWxFe/+tVYtmxZt5f9iU98ItasWRMXXXRRnHvuufGzn/0sLrzwwnj++eejqampR7b/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Yx+Lp556Kpqbm+NDH/pQRESMHj06vv3tb8eaNWuiqakpnnrqqfjUpz7V5ud3bsdHP/rRuPrqq+Pll1+OxsbG+NnPfhbvfOc7d/l93/ve98YPf/jD2LBhQ2zZsiWefPLJ+OxnP9tmnuOOOy4eeOCBWL9+fTQ2NsavfvWr+MhHPtIzf3AAAKBH6BEBAAAVZO7cufG3f/u38cEPfjC+9a1vtfne2rVrY9q0afGXf/mXMWTIkPjSl74UERHPPPNMTJs2LW6++eZ45ZVX4mtf+1o5f01NTTz00ENx6qmnxp133hnPPPNMnHDCCfG5z30ujj322Dj33HPbrOP000+PCy64IP7u7/4u1q1bFy+++GKMHDkyfvnLX0ZRFPF3f/d3sXbt2jjrrLPi7rvvjoMPPjhuueWWNsv44he/GDt27Iibbrop6urq4sorr4z77rsv3ve+95XznHHGGfHII4/E7373u7jllltizZo1cfzxx8cf/uEfxq233hoRERMmTIglS5bEq6++GrNnz46tW7fGBRdcEA8++GCcf/758eCDD/b0nx8AAOimwmQymUwmk8lkMvWNafr06UVRFMXJJ5/c6TwbN24sHn/88SIiilmzZhXFW10iymnBggXF0qVLd/m5+vr64uGHH27z2cUXX1xs3769eP/739/m88suu6woiqI45ZRTys+Koii2b99eHH/88W3mveuuu4pXX321GD58eJvP//7v/77YuHFjccABBxQRUUyZMqUoiqJYtmxZMWDAgHK+mTNnFkVRFBMnTiwioqitrS1WrFhR1NfXF3V1dZ3+HX76058WTz75ZDFw4MA2ny9evLh47rnnev3/0mQymUwmk8lkMr01GZoJAAAqzJYtW2Lo0KE9sqyPfvSj8cwzz8Szzz4bI0aMKKef//znERExderUNvP/4he/iGeeeabNZ+eff348/PDDUVNT02YZ8+fPj0MOOSROOumkNvPPmTMntm3bVn69aNGiiIg46qijIiLixBNPjKOOOiq+8Y1vxKZNmzrc7mHDhsXpp58e8+bNi6FDh+6y3mOPPTZGjx69d38cAACgRxiaCQAAKsyQIUPi9ddf75FlHXPMMTFhwoRYt25dh98fOXJkm6/r6+vbfP17v/d7MWzYsJgxY0bMmDGjS8tYtWpVm683btwYEW+FCxFRvi/iqaee6nS7jz766KitrY3rrrsurrvuuk7Xu3r16k6XAQAA7BuCCAAAqCCHH354HHLIIbF8+fIeWV5tbW389re/jc9//vMdfv/ll19u83VjY+MuPx/x1rsr7rnnng6X8dvf/rbN1y0tLR3OV1NT06VtTtd74403xvz58zucp6f+RgAAwN4RRAAAQAX5+Mc/HhHR6cP3PbVixYp497vfHf/6r//arZ9fu3ZtbN68Ofr169ftZXS0TRERkyZN6nSZK1eujIiIbdu29dh6AQCAPLwjAgAAKsTUqVPjy1/+cqxcuTLuu+++HlnmvHnz4ogjjohLL710l+8dcMABMXjw4Lf9+R07dsT3v//9OP/882PixIm7fP/QQw/d42164oknYuXKlXHFFVdEXV1dh/OsXbs2FixYEDNmzIjDDjusR9YLAADkoUcEAAD0QWeddVaMHz8++vfvH6NGjYrTTz89zjzzzHjppZfinHPOiebm5h5Zz9y5c+OCCy6I22+/PaZOnRpLliyJfv36xfjx4+OCCy6I//k//2c8/vjjb7uML37xizF16tR47LHH4q677oqnn346hg8fHieddFKcccYZMWLEiD3apqIo4jOf+Uw8/PDD8Zvf/CbmzJkTv/vd72L8+PExceLE+NCHPhQREX/6p38aixcvjqVLl8Zdd90VK1eujFGjRsUpp5wSRxxxRLznPe/p7p8FAADoQYIIAADog6699tqIiGhubo4NGzbE0qVL44orrog5c+bEli1bemw9RVHEH/3RH8XnPve5+MQnPhHnnntuNDQ0xMqVK+OWW26J559/frfLeP311+O9731v/NVf/VWcd955cfnll8f69etj2bJlcdVVV3Vru37yk5/E1KlTY9asWfGFL3whamtrY8WKFXHXXXeV8zzzzDPx3//7f49Zs2bFJz/5yRgxYkS8/vrr8etf/zr+5m/+plvrBQAAel5NRBS9vREAAAAAAMD+yTsiAAAAAACAbAQRAAAAAABANoIIAAAAAAAgG0EEAAAAAACQjSACAAAAAADIRhABAAAAAABkI4gAAAAAAACyEUQAAAAAAADZCCIAAAAAAIBsBBEAAAAAAEA2gggAAAAAACAbQQQAAAAAAJCNIAIAAAAAAMhGEAEAAAAAAGQjiAAAAAAAALIRRAAAAAAAANkIIgAAAAAAgGwEEQAAAAAAQDaCCAAAAAAAIBtBBAAAAAAAkI0g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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_versions(detection_mask, new_detection_mask, title=\"Detection Heatmap\")" ] }, { "cell_type": "code", "execution_count": 14, "id": "a0d380dc-9502-4352-bd22-cbaa84117fdb", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:28.537246Z", "iopub.status.busy": "2024-11-18T21:26:28.536975Z", "iopub.status.idle": "2024-11-18T21:26:28.988473Z", "shell.execute_reply": "2024-11-18T21:26:28.987726Z", "shell.execute_reply.started": "2024-11-18T21:26:28.537222Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAAIeCAYAAAA21Rd+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFCElEQVR4nO3deZQV5Z0//k83qyiyKRo0Yhw1iqhRc3I0sgTFGBM17hsm6GSAyByN0dEkTpL2+3WJjpMxil/HJQQV0cQtDrgnyijiEsWogKgsraiI0oII0t2Bpn5/+ONSvUED/dDd3NfrnDrn6bp1q+rervtU1fOup6okIrIAAAAAAABIoLSlVwAAAAAAANhyCSIAAAAAAIBkBBEAAAAAAEAygggAAAAAACAZQQQAAAAAAJCMIAIAAAAAAEhGEAEAAAAAACQjiAAAAAAAAJIRRAAAAAAAAMkIIgAAaNXKysoiy7KWXo02afDgwZFlWQwePLilVwUAAChigggAgCI2fPjwyLIssiyLQw89tMFp5s+fH1mWxaRJk5Ktx1ZbbRVlZWVF02BebJ+3MePGjYtly5Y1+nqWZTFmzJik63DOOefE8OHDky4DAACKnSACAICorKyMM844o974wYMHx5e//OWoqqpKuvwuXbrEpZdeGt/61rfqvXb55ZdH586dky5/c1vX521OzzzzTHTu3DmeeeaZpMtpy0aPHh1nnXVWS68GAABs0QQRAADEI488EieffHK0a9eu1vgzzjgjXn755Vi4cGELrVlETU1NVFdXt9jy27Isy6K6utqtrQAAgBYliAAAIO6+++7o1atXHHHEEYVxHTp0iJNOOinuuuuuetOXl5fHgw8+WG98p06d4tNPP42bbrqpMG777beP3//+97Fw4cKorKyMV199NX74wx8WXu/bt29UVFRERMSll15auFVUWVlZRDT8jIihQ4fGlClTYsmSJbFs2bJ4880344orrljv51xzq5+TTjopZs6cGStWrIjnnnsu+vfvHxERI0eOjNmzZ0dlZWVMnjw5+vbtW3jvpZdeGv/4xz9iu+22qzffm2++OZYsWRKdOnWKiIiDDjooHnvssVi0aFGsWLEi5s2bF2PHjm3S5913331j3LhxMXfu3KisrIwPP/wwxo4dGz179qy33D59+sTvf//7+OCDD6KqqirmzZsXN954Y3To0CEiGn5GxOTJk2P69Omx9957x1NPPRWff/55vP/++3HRRRfVmvea23blv4PG5rn77rvHfffdFx9++GFUVlbGe++9F3fffXdsu+226/2fbKiOHTvGpZdeGrNnz46qqqqYP39+XH311dGxY8da05111lnx5JNPxkcffRRVVVUxc+bM+PGPf1xrmvLy8ujfv39861vfKvwfJk+eXOvzH3rooXHdddfFxx9/HEuWLImbbropOnToEN26dYvbb789Fi9eHIsXL46rr7663rpeeOGFMXXq1KioqIgVK1bEyy+/HCeeeGK96dZsl2eccUa8+eabUVlZGS+//HIMHDiwGb85AABoOe1begUAAGh577zzTjz//PNx+umnx2OPPRYREUcddVR069Yt/vjHP8Z5551Xa/o777wzLr744ujRo0csWbKkMP6YY46Jbt26xZ133hkREZ07d47//d//jd133z1uuOGGKC8vj5NPPjluv/326N69e1x//fWxaNGi+PGPfxw33XRTPPDAA/HAAw9ERMTrr7/e4Lr269cvHnrooXj99dfj17/+dVRXV8fuu+/e6DMu6ho4cGAce+yx8f/+3/+LiIhf/OIX8dBDD8V//Md/xOjRo+PGG2+MHj16xMUXXxx/+MMf4vDDD4+IiPHjx0dZWVmceuqphfdGrA1s7r///qiuro7tt98+nnjiiVi0aFFcddVV8emnn8auu+4aJ5xwQkTEej/vEUccEbvttluMGzcuFi5cGPvss0+MHDky9tlnnzj44IMLy/3Sl74Uf/vb36J79+5xyy23xJtvvhk77bRTnHTSSdGlS5dYunRpo99Bjx494rHHHosHHngg7rnnnjjppJPiP/7jP2L69OmF/39TdejQIR5//PHo1KlTjBkzJhYuXBg77bRTHH300dG9e/f47LPP1juPXr16NWlZJSUlMXHixBgwYEDccsstMWvWrNh3333jpz/9aey5555x/PHHF6Y955xzYubMmTFx4sRYtWpVHHPMMfHf//3fUVpaGjfeeGNERJx//vkxZsyYWL58eSHI+uijj2otc81nKisri4MPPjhGjRoVn376aXzzm9+M+fPnxyWXXBLf/e534+KLL44ZM2bE+PHjC+/9yU9+EhMnTowJEyZEx44d47TTTov77rsvvve978UjjzxSazmDBw+OU089Na6//vqorq6O0aNHx2OPPRbf+MY3YubMmU36fgAAoDXLDAaDwWAwGAzFOQwfPjzLsiw76KCDstGjR2dLly7NOnfunEVE9qc//Sl78skns4jIysvLs0mTJhXet8cee2RZlmWjRo2qNb8HH3wwmzdvXuHv8847L8uyLDvjjDMK49q3b59NnTo1++yzz7Jtttkmi4isV69eWZZlWVlZWb11LCsry7IvukRkEZH95Cc/ybIsy3r16rXBnzfLsqyysjLr27dvYdyIESOyLMuyBQsWFNYnIrIrrrgiy7Ks1rRTp07Nnn/++VrzPO6447Isy7LBgwdnEZF9//vfL3ynja3Huj7vmu8/P5x66qlZlmXZgAEDCuNuu+22bNWqVetczuDBg2utW0RkkydPzrIsy84888zCuA4dOmQLFizI7r333nrbRv7zNzTP/fffP8uyLDvxxBM3+P8xbty4bH3GjBlTmH7YsGHZqlWrskMPPbTWfEaOHJllWZYdcsgh6/weH3300WzOnDm1xk2fPj2bPHlyo7+NRx99tNb4qVOnZjU1NdmNN95YGFdaWprNnz+/3nzqrkP79u2z119/PfvrX/9ab7vMsiw78MADC+O+/OUvZytWrMjuv//+Df5eDQaDwWAwGAyG1ja4NRMAABERcc8998RWW20VRx99dGyzzTZx9NFHN3hbpoiI2bNnxwsvvBDDhg0rjOvRo0ccddRRMWHChMK47373u/Hhhx/G3XffXRi3atWquP7666Nr1661bu/TVJ9++mlERHz/+9+PkpKSDX7/k08+Ge+++27h7xdffDEiIu6///5Yvnx5vfG77bZbYdwdd9wRBx98cK1xw4YNi/nz58fTTz9da/2OPvroaN9+wzsg5x8M3qlTp+jVq1e88MILERFx4IEHRsQXPQOOO+64mDRpUkybNm2Dl7Fs2bJCr5WIiJUrV8bf/va3Wp+rqdb0vDjyyCNjq6222uD3V1ZWxtChQxsc6jr55JNj1qxZ8eabb0avXr0Kw1NPPRUREUOGDClMm/8et9122+jVq1c8/fTT8U//9E8bdMuoNbfUWuPFF1+M0tLSWuNXr14dL7/8cr3vL78O3bt3j27dusWUKVMK/8e85557Ll555ZXC3++99178z//8Txx55JFRWuq0DQCAts0RLQAAERFRUVERf/3rX+OMM86IE044Idq1axf33Xdfo9Pfcccdceihh8Yuu+wSEV80Enfs2LHWrWn69u0bs2fPrveMh1mzZhVe31B/+tOf4tlnn42xY8fGRx99FHfffXecfPLJTQ4l5s+fX+vvNQ3p7733XoPje/ToUWvZVVVVhQBm2223jaOPPrpW+PL000/HfffdF5deemlUVFTEgw8+GGeddVa9Zxg0pkePHvG73/0uFi5cGFVVVVFRURHvvPNORER069YtIr547ka3bt1ixowZTZpnXe+//369cUuWLKn1WZvqnXfeid/+9rcxYsSIqKioiMceeyxGjx7d5Mb+mpqaePLJJxsc6tpjjz2if//+UVFRUWuYPXt2RET07t27MO03v/nN+Mtf/hLLly+PpUuXRkVFRfzmN7+JiLXfY1NsyPZS9/v73ve+F88//3xUVlbGkiVLoqKiIkaPHt3g8td8hry33347tt5669h+++2bvL4AANAaCSIAACi466674qijjoof//jH8eijj67zOQN//OMfY+XKlYVG+TPPPDNeeumlePvtt5OuY1VVVQwaNCgOP/zwGD9+fOy3335xzz33xF/+8pcmXTleU1OzQePzAcenn34aDz30UOEzn3TSSdG5c+davQsivghlDj744Ljhhhtip512inHjxsW0adNi6623Xu/63XPPPTFixIi46aab4vjjj48jjjgijjzyyIiIZrsyvimftW54tEa7du3qjfu3f/u32HfffePKK6+MrbbaKq6//vqYOXNm7LTTTs2yvmuUlpbG66+/3mgPijXPfthtt93iySefjO222y4uuOCC+O53vxtDhw6N//qv/yrMp6k2ZHvJf38DBgyIiRMnRlVVVYwePTqOOuqoGDp0aEyYMEEPBwAAio6HVQMAUPDnP/85br755jjkkEPilFNOWee0S5YsiYcffjiGDRsWEyZMiEMPPTTOP//8WtO8++67sd9++0VJSUmthu299tqr8HpE443ejcmyLJ566ql46qmn4sILL4xf/OIXceWVV8aQIUMavJK+Od1xxx0xceLE+PrXvx7Dhg2LV155Jd54441607344ovx4osvxi9/+cs4/fTT46677orTTjstxo4d2+jn7d69ewwdOjR+/etfx2WXXVYYv/vuu9eabtGiRbF06dLo379/8364nDUPIe/evXutW1k11otlxowZMWPGjLjiiivikEMOieeeey5+/OMfx69+9atmW6e5c+fG/vvvv97/8THHHBOdO3eOY489tlbPhfytm9bY0G2vqU488cSoqqqKI488Mv7xj38Uxp999tkNTr/HHnvUG7fnnnvG559/HosWLUqyjgAAsLm4FAcAgILPP/88zjnnnCgrK4tJkyatd/rx48fHPvvsE9dcc03U1NTEH//4x1qvP/LII/GlL30pTj311MK4du3axbnnnhvLli0rPFdhxYoVEfFFo/f6NHT7oFdffTUivnimQmqPPvpoLFq0KH72s5/F4MGD6/WGaOgz1F2/xj7vmqvs695mqm7Ak2VZPPjgg3HMMcfEQQcdtJGfZN3mzp0bERGDBg0qjCstLY2RI0fWmq5r1671eklMnz49ampqmv3/cc8998TOO+8cI0aMqPda586do0uXLhHR8Pe47bbbNhgCfP75503a7jZUTU1NZFlW67vp27dvHHfccQ1O/81vfjMOOOCAwt8777xzfP/7348nnngiVq9e3ezrBwAAm5MeEQAA1HLHHXc0edqHH344Kioq4pRTTolHHnmk3pXbt9xyS4waNSpuu+22OOigg+Kdd96Jk046KQYMGBA/+clPCg+HrqqqipkzZ8app54ab7/9dixevDhmzJgRM2fOrLfMX//61zFo0KB4+OGH4913343evXvH6NGj47333otnn3120z58E6xatSr++Mc/xrnnnhurVq2q9SDuiIjhw4fH6NGj489//nPMnTs3unbtGiNGjIilS5fGI488st7P+/TTT8fFF18cHTp0iA8++CC+/e1vx1e+8pV663HJJZfEt7/97Xj66afjlltuiVmzZsWXvvSlOPnkk2PAgAHrvK1WU7zxxhvx/PPPx29+85vo2bNnLF68OE477bR6D+A+7LDD4oYbboh777033n777Wjfvn384Ac/iJqamrj//vs3aR3qGj9+fJxyyilx0003xZAhQ2Lq1KnRrl272GuvveKUU06JI488MqZNmxZPPPFEVFdXx6RJk+Lmm2+ObbbZJkaMGBEff/xx9OnTp9Y8p02bFuecc078+7//e8yZMyc+/vjjmDx58iav68MPPxwXXnhhPPbYY3HXXXdF796941//9V9jzpw5sf/++9ebfvr06fH444/H9ddfH9XV1TF69OiIiCgrK9vkdQEAgNYgMxgMBoPBYDAU5zB8+PAsy7LsoIMOWud05eXl2aRJkxp87YYbbsiyLMtOO+20Bl/ffvvts7Fjx2Yff/xxVlVVlb322mvZ8OHD60138MEHZy+99FJWVVWVZVmWlZWVZRGRlZWVZdkX98/JIiIbMmRI9uc//zl7//33s6qqquz999/PJkyYkO2+++7r/bxZlmVjxoypNa5v375ZlmXZhRdeWGv84MGDsyzLshNPPLHefL7+9a9nWZZljz32WL3Xvva1r2UTJkzI3nnnnayysjJbuHBhNnHixOzAAw9s0uft06dPdv/992eLFy/OlixZkv3pT3/Kdtxxx1rTrBm+/OUvZ7fddlv20UcfZZWVldmcOXOyMWPGZB06dKj1GQYPHlx4z+TJk7Pp06fXW+9x48Zl5eXltcZ95StfyZ544omssrIy+/DDD7PLL788O/zww2vNc9ddd81+//vfZ7Nnz85WrFiRVVRUZE8++WR22GGHrff/MW7cuGzZsmUb9P9q3759dtFFF2XTp0/PKisrs08++SR76aWXsl/96ldZ165dC9MdffTR2auvvpqtWLEimzdvXnbRRRdlZ511VpZlWda3b9/CdL17984mTZqULV26NMuyLJs8efI6fxtrtsdevXqt97OcffbZ2VtvvZVVVlZmb7zxRjZ8+PB623P+c55xxhmF6adNm1br/2YwGAwGg8FgMLTloeT/LwAAwEb5r//6r/jRj34UO+64Y1RWVrb06mwW++23X7z22mvxgx/8oN6tmWBDZVkWN9xwQ5x77rktvSoAAJCEZ0QAALDROnXqFGeeeWbcf//9RRNCRESMGDEili1bFg888EBLrwoAAECr5xkRAABssO233z6GDh0aJ510UvTq1Suuu+66ll6lzeLoo4+Ofv36xciRI+OGG24oPHQaAACAxgkiAADYYP369Yu77rorPvroozjvvPPitddea+lV2izGjBkTO+ywQzzyyCMeIgwAANBEnhEBAAAAAAAk4xkRAAAAAABAMoIIAAAAAAAgGUEEAAAAAACQjCACAAAAAABIRhABAAAAAAAkI4gAAAAAAACSEUQAAAAAAADJCCIAAAAAAIBkBBEAAAAAAEAygggAAAAAACAZQQQAAAAAAJCMIAIAAAAAAEhGEAEAAAAAACQjiAAAAAAAAJIRRAAAAAAAAMkIIgAAAAAAgGQEEQAAAAAAQDKCCAAAAAAAIBlBBAAAAAAAkIwgAgAAilxZWVlkWbZR7x0+fHhkWRZ9+/Zt5rVaq2/fvpFlWQwfPjzZMgAAgHQEEQAA0Ib169cvxo8fH++//35UVVXFBx98EHfeeWf069evpVcNAAAgIiJKImLjLn0CAABa1PHHHx933313LF68OMaOHRvl5eWx6667xo9+9KPo1atXnHbaafHggw+udz7t2rWL9u3bR3V19QavQ2lpaXTo0GGj3ttUffv2jXfeeSfOOuusuP3225MtBwAASKN9S68AAACw4XbbbbcYP358zJs3LwYNGhQVFRWF16677rqYMmVKjB8/Pvbbb78oLy9vcB5dunSJFStWRE1NTdTU1GzUeqxevTppCAEAALR9bs0EAABt0EUXXRRbb711jBw5slYIERHxySefxKhRo2KbbbaJiy++OCLWPgdi7733jgkTJsTixYvj2WefrfVaXufOneO6666LRYsWxWeffRb/8z//E3369Iksy6KsrKwwXUPPiCgvL49JkybFoYceGi+++GJUVlbG3Llz4wc/+EGtZfTo0SOuueaaeP3112PZsmWxdOnSeOSRR2K//fZr1u8KAABoWXpEAABAG3TMMcdEeXl5IUyoa8qUKVFeXh7f+973ao2/9957Y/bs2XHJJZdESUlJo/O/7bbb4tRTT4077rgjXnjhhRg8eHA8/PDDTV6/3XffPe67774YO3Zs3H777fHP//zPcdttt8W0adPijTfeiIgvenUcd9xxce+990Z5eXnssMMOMWrUqHj66aejX79+8eGHHzZ5eQAAQOsliAAAgDZm2223jZ122mm9z394/fXX4/vf/35ss802hXGvvfZaDBs2bJ3vO+CAA+LUU0+Na6+9Ni644IKIiPjv//7v+MMf/hBf+9rXmrSOe+21VwwcOLAQlNxzzz3x3nvvxdlnnx0XXXRRRERMnz499txzz1q9McaPHx9vvvlm/OhHP4rLL7+8ScsCAABaN7dmAgCANqZr164REbFs2bJ1Trfm9W233bYw7qabblrv/L/zne9ERMSNN95Ya/yYMWOavI4zZ86s1VujoqIi3nrrrdhtt90K4/7xj38UQojS0tLo2bNnLF++PN5666048MADm7wsAACgdRNEAABAG7MmYFgTSDSmocCisQdX5/Xt2zdqamrqTTtnzpwmr+P8+fPrjVuyZEn06NGj8HdJSUmcf/758fbbb0d1dXV88sknUVFREfvvv39069atycsCAABaN0EEAAC0MZ999lksWLBgvQ913m+//eL999+vFURUVlamXr2IiKipqWlwfP65FJdccklce+218cwzz8SZZ54Z3/72t2Po0KExY8aMKC11qgIAAFsKz4gAAIA26KGHHoqRI0fGoYceGlOnTq33+oABA+IrX/lKk27FVNe7774b7dq1i6985Su1ekHsvvvum7TOdZ100knx1FNPxb/8y7/UGt+9e/eoqKho1mUBAAAtx2VGAADQBl1zzTWxYsWKuPnmm6Nnz561XuvRo0fcdNNN8fnnn8c111yzwfN+/PHHIyJi9OjRtcafe+65G7/CDaipqanVQyLii3Bi5513btblAAAALUuPCAAAaIPmzJkTw4cPjwkTJsT06dNj7NixUV5eHrvuumv86Ec/iu222y5OP/30mDdv3gbP+5VXXon77rsvfvrTn0avXr3ihRdeiMGDB8eee+4ZEVF4wPSmeuihh6KsrCz+8Ic/xHPPPRf77rtvDBs2LObOndss8wcAAFoHQQQAALRR9913X7z55pvxi1/8ohA+fPLJJzF58uS48sorY+bMmRs97x/+8IexcOHCOP300+P444+Pv/71r3HqqafG22+/HVVVVc2y/ldeeWVsvfXWccYZZ8Spp54ar7zySnzve9+Lq666qlnmDwAAtA4lEdE8lzMBAABbtP333z9effXVGDZsWNx1110tvToAAEAb4RkRAABAPZ07d6437vzzz4+ampp45plnWmCNAACAtsqtmQAAgHouvvjiOOigg2Ly5MmxatWqOOqoo+K73/1u3HzzzfH++++39OoBAABtiFszAQAA9QwdOjTKysqiX79+sc0228T8+fNj/PjxccUVV0RNTU1Lrx4AANCGCCIAAAAAAIBkPCMCAAAAAABIRhABAAAAAAAkI4gAAAAAAACSEUQAAAAAAADJCCIAAAAAAIBkBBEAAAAAAEAygggAAAAAACAZQQQAAAAAAJCMIAIAAAAAAEhGEAEAAAAAACQjiAAAAAAAAJIRRAAAAAAAAMkIIgAAAAAAgGQEEQAAAAAAQDKCCAAAAAAAIBlBBAAAAAAAkIwgAgAAAAAASEYQAQAAAAAAJCOIAAAAAAAAkhFEAAAAAAAAyQgiAAAAAACAZAQRAAAAAABAMoIIAAAAAAAgGUEEAAAAAACQjCACAAAAAABIRhABAAAA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u63wd1VVVSxevDimT58eDz/8cIwbNy6WL1++znn88z//c1x88cVx7bXXxiuvvBLz58+PiIhLLrkkzjrrrLjsssti7ty5MWvWrJQfBQAAICIiSiIiW+9UAADAZrEmiPjVr34V5eXl0aFDh9hxxx3jW9/6VhxxxBExf/78OPbYY2P69OkR8UXvh/bt20d1dXVhHnfffXcMGDAgvvzlL9ea9/PPPx+rVq2KgQMHbtbPBAAAFDc9IgAAoBV69NFHY9q0aYW/r7rqqhgyZEg89NBDMXHixNh7772jqqoqampqoqamptZ7e/fuHZ9++mm9efbu3TveeOONZlvHkpKS6NixY60QBAAAoC7PiAAAgDZi8uTJcdlll8Wuu+4aZ555ZkTUfkZE3759I8uyOOyww6J///6RZVlkWRaDBw+OLMtit912i6OPProwvm/fvhER0bFjx7j00ktj9uzZUVVVFfPnz4+rr746OnbsWGv5WZbFmDFj4owzzogZM2ZEdXV1fOc734mIiD59+sTYsWNj4cKFUVVVFTNmzIizzz671vvXrMfJJ58cl1xySbz33ntRWVkZf/3rX+Of/umf6n3eb3zjG/Hwww/H4sWLY/ny5fHaa6/FeeedV2uar371q3HvvffGJ598EpWVlfHSSy/FMccc0zxfOAAA0Cz0iAAAgDZk/Pjx8Zvf/Ca+/e1vx+9///tary1atCjOPPPM+Pd///fYZptt4he/+EVERMyaNSvOPPPMuPbaa+P999+P3/72t4XpS0pKYuLEiTFgwIC45ZZbYtasWbHvvvvGT3/609hzzz3j+OOPr7WMww47LE455ZS44YYboqKiIt55553o3bt3vPDCC5FlWdxwww2xaNGiOOqoo+IPf/hDbLvttnHdddfVmsfPf/7zWL16dfznf/5ndOvWLS6++OKYMGFCHHzwwYVphg4dGg899FB8+OGHcd1118XChQtj7733jqOPPjquv/76iIjo169fTJ06NT744IO46qqr4vPPP49TTjklHnzwwTjxxBPjwQcfbO6vHwAA2EiZwWAwGAwGg8FgaB3D8OHDsyzLsoMOOqjRaZYsWZJNmzYti4isrKwsy77oElEYJk+enE2fPr3e+8rLy7NJkybVGjds2LBs1apV2aGHHlpr/MiRI7Msy7JDDjmkMC7LsmzVqlXZ3nvvXWvaW2+9Nfvggw+ynj171hp/1113ZUuWLMk6d+6cRUQ2ePDgLMuybObMmVmHDh0K05177rlZlmXZPvvsk0VEVlpams2dOzcrLy/PunXr1uj38Je//CV77bXXso4dO9Ya/+yzz2ZvvfVWi/8vDQaDwWAwGAwGwxeDWzMBAEAbs3z58ujatWuzzOvkk0+OWbNmxZtvvhm9evUqDE899VRERAwZMqTW9E8//XTMmjWr1rgTTzwxJk2aFCUlJbXm8fjjj0f37t3jwAMPrDX9uHHjYuXKlYW/p0yZEhERu+22W0REHHDAAbHbbrvF7373u1i6dGmD692jR4847LDD4p577omuXbvWW+6ee+4Zffr02bQvBwAAaBZuzQQAAG3MNttsEx9//HGzzGuPPfaIfv36RUVFRYOv9+7du9bf5eXltf7efvvto0ePHjFq1KgYNWpUk+Yxf/78Wn8vWbIkIr4IFyKi8LyIGTNmNLreu+++e5SWlsbll18el19+eaPLXbBgQaPzAAAANg9BBAAAtCE77bRTdO/ePebMmdMs8ystLY3XX389LrjgggZff++992r9XVlZWe/9EV88u+L2229vcB6vv/56rb9ramoanK6kpKRJ65xf7jXXXBOPP/54g9M013cEAABsGkEEAAC0IT/4wQ8iIhptfN9Qc+fOjf333z+efPLJjXr/okWL4rPPPot27dpt9DwaWqeIiP79+zc6z3nz5kVExMqVK5ttuQAAQBqeEQEAAG3EkCFD4le/+lXMmzcvJkyY0CzzvOeee2LnnXeOESNG1Hutc+fO0aVLl3W+f/Xq1XH//ffHiSeeGPvss0+917fbbrsNXqdXXnkl5s2bF+eff35069atwWkWLVoUkydPjlGjRsWOO+7YLMsFAADS0CMCAABaoaOOOir22muvaN++feywww5x2GGHxRFHHBHvvvtuHHvssVFdXd0syxk/fnyccsopcdNNN8WQIUNi6tSp0a5du9hrr73ilFNOiSOPPDKmTZu2znn8/Oc/jyFDhsSLL74Yt956a7zxxhvRs2fPOPDAA2Po0KHRq1evDVqnLMvinHPOiUmTJsWrr74a48aNiw8//DD22muv2GeffeI73/lORET867/+azz77LMxffr0uPXWW2PevHmxww47xCGHHBI777xzfO1rX9vYrwUAAGhGgggAAGiFLrvssoiIqK6ujsWLF8f06dPj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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_versions(class_mask[6], new_class_mask[6], title=f\"{new_dataset.category[6].values} Heatmap\")" ] }, { "cell_type": "code", "execution_count": 15, "id": "f17029dd-4623-4684-b966-6faa0dc76a2d", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:28.989272Z", "iopub.status.busy": "2024-11-18T21:26:28.989031Z", "iopub.status.idle": "2024-11-18T21:26:29.437666Z", "shell.execute_reply": "2024-11-18T21:26:29.436822Z", "shell.execute_reply.started": "2024-11-18T21:26:28.989249Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAAIeCAYAAAA21Rd+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3kUlEQVR4nO3de5RXVd0/8M/McBMhBHzAkEQJkYt47SIJ8oyhaZZlKmagZAqWZeIlS0vHHsXgsZYSXTQjVLwilYk+pL8AFTSNNOUiIJdRQES5CQLDBMP5/eHiy3eaGYFxNjDyeq21V/t7vufss+fAlt28zz6nICKyAAAAAAAASKBwd3cAAAAAAAD46BJEAAAAAAAAyQgiAAAAAACAZAQRAAAAAABAMoIIAAAAAAAgGUEEAAAAAACQjCACAAAAAABIRhABAAAAAAAkI4gAAAAAAACSEUQAAOwFRo8eHaWlpbU6tqSkJLIsq+MefTilpaUxevTo3Oc+ffpElmXRp0+f3dirmrn+AADA3kwQAQBQjw0cODCyLMuVsrKymDt3bowcOTLatGmz2/r18Y9/PEpKSuLII4/cbX3Ym+0N179Dhw6RZVlceeWV1X6/NcBp3bp1sj507do1SkpKokOHDsnOAQAAHwWCCACAj4DrrrsuBgwYEN/73vfiueeei+985zvx97//PfbZZ5+IiBg0aFAcdthhtWr7pptuiiZNmuzUMe3atYsbbrghjjrqqFqd86PG9f9o6tatW9xwww1x8MEH7+6uAADAHq3B7u4AAAAf3oQJE+LFF1+MiIhRo0bFypUr48orr4yvfOUr8eCDD8bmzZtr3XZFRUVUVFTUVVertc8++0RZWVnSc+xOrj8AALA3syICAOAjaNKkSRERccghh0RE1XcU5D/WZsiQIfH666/Hhg0b4qmnnoru3btXaqu6dxT07ds3pkyZEqtXr4733nsv5syZE0OHDo2I998X8M9//jMiIu66667cY6MGDhwYERGTJ0+OGTNmxDHHHBNPP/10rF+/Pm6++eaIiGjUqFHccMMNMW/evNi4cWMsWrQohg8fHo0aNdrpa/Cf7zHYavLkyTF58uRK2773ve/FzJkzY/369bFq1aqYNm1anHvuuR/Y/tb3IvTr1y+GDh0ab731Vqxbty7+8pe/RPv27Svt6/pvU1fXv7Y+85nPxIQJE+Ldd9+N9evXx1NPPRWf+9znKu1z0EEHxa9//euYM2dObNiwIVasWBFjx46t9AimgQMHxrhx4yIi4qmnnspd563vySgtLY3x48dHnz59Ytq0abFhw4aYPn167vszzjgjpk+fHmVlZfHPf/6zyuqVHj16xOjRo2PBggVRVlYWb731VowaNSpatWpVab+tfz8OO+yweOihh2LNmjWxYsWKuO2226Jx48Z1ffkAAKBWrIgAAPgI+uQnPxkREStXrvzA/c4///xo3rx5/PrXv44mTZrEZZddFpMmTYoePXrEO++8U+0x3bp1i8ceeyymT58e119/fZSXl0enTp3i+OOPj4iI2bNnx3XXXRc33nhj3HHHHTFlypSIiHjuuedybbRu3TomTJgQDz74YNx7773x9ttvR0FBQTz66KPRq1ev+N3vfhezZ8+OHj16xOWXXx6dO3eOM844oy4uTRUXXXRRjBw5Mh5++OEYMWJENGnSJI444oj47Gc/Gw888MB2j//xj38cWZbF8OHDo02bNjFkyJD429/+FkcddVRs3LjxA491/T/89W/atGm174Fo2rRplW3FxcW51UM//elPY8uWLXHBBRfEpEmTonfv3jFt2rSIiPj0pz8dn/vc5+LBBx+MJUuWxMEHHxzf+c534qmnnopu3bpFWVlZPPPMMzFixIi47LLLYujQoTF79uyIiNz/RkR06tQp7r///rjjjjvi3nvvjauuuirGjx8f3/72t+Pmm2+O3/zmNxERcc0118TYsWPjsMMOy4VOJ510UnTs2DFGjx4dy5Yti+7du8fgwYOje/fucdxxx1X52caOHRuvv/56XHPNNXHcccfFZZddFi1btswFUAAAsLtliqIoiqIoSv0sAwcOzLIsy0488cSsdevW2YEHHpj169cvW758ebZ+/fqsXbt2WURko0ePzkpLS3PHdejQIcuyrNI+EZF9+tOfzrIsy37xi1/ktpWUlGTZ+78dzSIiu+yyy7Isy7LWrVvX2K9jjz02y7IsGzhwYJXvJk+enGVZlg0ePLjS9v79+2ebN2/Ojj/++ErbBw8enGVZlvXs2TO3rbS0NBs9enTuc58+fbIsy7I+ffrUuE/++SdPnpz7/Oc//zmbMWPGTl/7redcvHhx1qxZs9z2s846K8uyLLv00ktz21z/ur/+W6/h9uRfp7lz52YTJkyo1E6TJk2yBQsWZE888USlbf95vs9+9rNZlmXZgAEDctvOPPPMKj93/s+fZVl23HHH5baddNJJuT/3T3ziE7ntgwYNqtJOdX0455xzsizLsl69elX5+/HII49U2vdXv/pVlmVZ1qNHj52+toqiKIqiKIpS18WjmQAAPgImTpwYK1asiCVLlsRDDz0U69atizPOOCOWLl36gcc98sgjlfaZNm1aPP/88/HFL36xxmPefffdiIj4yle+EgUFBbXq78aNG6s8tufss8+O2bNnx5w5c6J169a5svUxU8XFxbU61/a8++670b59+/jUpz5Vq+PvueeeWLduXe7zuHHjYunSpR94Dbdy/T/89b/jjjuib9++Vco999xTab+jjjoqOnfuHPfff3+ln2/fffeNiRMnxgknnJC7nvkrWRo0aBCtWrWK+fPnx+rVq+OYY47Z4b7NmjUrnn/++dznF154ISLef3Ta4sWLq2zv2LFjblt+Hxo3bhytW7fOtVVdH379619X+jxy5MiIiB36ewgAAKl5NBMAwEfAJZdcEq+99lps3rw53n777Zg7d26V9wpUZ968eVW2vfbaa9GvX78aj3nooYfioosuilGjRsWwYcNi4sSJ8ac//SnGjRu3Q+eMiHjzzTdj06ZNlbYdeuih0a1bt1ixYkW1x7Rp02aH2t5Zw4cPj759+8a0adNi3rx58eSTT8b9999f6VFGH6S6azh//vw4+OCDa3Ws67/z13/ixIlVtvfq1avS50MPPTQiokpAka9Fixbx7rvvRpMmTeKaa66JCy64IA488MAoLCystM+OWrRoUaXPa9eujYioFEJERKxZsyYiIlq2bJnb1rJlyygpKYmvf/3r0bZt2yr9/E//+XdpwYIFUVFRsUN/DwEAIDVBBADAR8A//vGPePHFF3fJuTZu3BgnnHBCFBcXx2mnnRannHJKfP3rX4+JEyfGySefHFu2bNluG2VlZVW2FRYWxvTp0+OKK66o9pj//OXt9tT0S/mioqKoqKjIfZ4zZ04cdthh8aUvfSlOOeWUOPPMM+O73/1u/PSnP40bbrhhp865K7j+tbM1TLjqqqvi5ZdfrnafrStbRo4cGRdccEHcdttt8fe//z3WrFkTWZbFgw8+WCmU2J78n3NHtuevcBk7dmx87nOfi1tuuSVefvnlWLduXRQWFsYTTzyxQ33Y0VAKAAB2BUEEAMBebOtd4vk6d+4cr7/++gcel2VZTJo0KSZNmhRXXnllXHPNNXHzzTdHcXFxTJw4sVa/BF2wYEEceeSR1d7dXhurV6+O/fbbr8r2Dh06xMKFCytt27BhQ4wdOzbGjh0bDRs2jD/96U/x4x//OH72s59FeXn5B56numvYqVOnmD59+nb76Pq/78Nc/x21YMGCiHh/VcL2fsazzjor7r777rjqqqty2xo3blzl50n1y/799tsv+vbtG9dff33ceOONue2dOnWq8ZhDDz200t+bTp06RVFR0Xb/LgEAwK7gHREAAHuxr371q9GuXbvc509/+tNx3HHHxYQJE2o8Jv/xMVttvcO8cePGERGxfv36iIhqfxFdk7Fjx0b79u1j0KBBVb5r0qRJNG3adIfbinj/F8/HHXdcNGzYMLfttNNOi4MOOqjSfq1atar0edOmTfHqq69GQUFBpWNrcv7550ezZs1yn88666xo167dB17DrVz/D3/9d9SLL74Y8+fPj6uuuir23XffKt/vv//+uXpFRUWV929ceuml0aBB5fu4anOdd8TWFRP/2YchQ4bUeMx3v/vdSp8vvfTSiIgd+nsIAACpWREBALAXmz9/fkydOjV++9vfRuPGjWPIkCGxYsWK+N///d8aj7n++uvjhBNOiMcffzzeeOONaNOmTVxyySWxePHimDp1akS8/0vo1atXx7e//e147733Yv369fHCCy984N3ZY8aMiX79+sXtt98excXF8eyzz0ZRUVF06dIl+vXrF1/4whd26vFTv//97+Pss8+Ov/71rzF27Nj45Cc/GQMGDIj58+dX2u/JJ5+MZcuWxbPPPhtvv/12dO3aNb73ve/F448/Xukl1DVZtWpVTJ06NUaPHh1t27aNIUOGxLx58+LOO+/c7rGu/4e//jsqy7K46KKLYsKECTFr1qwYPXp0vPnmm3HggQdGcXFxrF27Nk4//fSIiHjsscfivPPOizVr1sSrr74aPXv2jL59+1Z5f8bLL78cmzdvjh/+8IfRokWLKC8vj0mTJsXy5cs/VF/fe++9ePrpp+Pqq6+Ohg0bxptvvhknn3xyHHLIITUec8ghh8Rf/vKX+Otf/xo9e/aM8847L+67774dWpkDAAC7QqYoiqIoiqLUzzJw4MAsy7Ls2GOP/cD9Ro8enZWWluY+d+jQIcuyLLvyyiuzyy+/PHvjjTeysrKy7Omnn8569OhR6diSkpIse/8ZNFlEZMXFxdmf//znbMmSJdnGjRuzJUuWZPfdd1/WqVOnSsd9+ctfzmbOnJn9+9//zrIsywYOHJhFRDZ58uRsxowZ1fazQYMG2Q9+8INsxowZWVlZWbZy5cps2rRp2XXXXZc1b948t19paWk2evTo3Oc+ffpkWZZlffr0qdTe5Zdfni1evDgrKyvLpkyZkh1zzDHZ5MmTs8mTJ+f2GTRoUPbUU09ly5cvz8rKyrJ58+Zlw4cPr3S+6srWc55zzjnZ0KFDs2XLlmXr16/Pxo8fn33iE59w/RNf//xrWN33W69b69atK20/8sgjs3HjxuXOV1pamj344INZcXFxbp8WLVpko0aNyt55551s7dq12YQJE7LOnTtX+bkjIrvwwguz+fPnZ5s2bap0DUpLS7Px48dX6VeWZdnIkSO3+7O0a9cu++Mf/5itWrUqW716dfbQQw9lBxxwQJZlWVZSUlLl5+zSpUs2duzYbM2aNdnKlSuzX/7yl1njxo13y3+XFEVRFEVRFKWasts7oCiKoiiKouzisr1f4irbL1t/+X7mmWe6/spuKzUFLoqiKIqiKIqyJxXviAAAAAAAAJIRRAAAAAAAAMkIIgAAAAAAgGQK4v1nNAEAAAAAANQ5KyIAAAAAAIBkBBEAAAAAAEAygggAAAAAACAZQQQAAAAAAJCMIAIAAAAAAEhGEAEAAAAAACQjiAAAAAAAAJIRRAAAAAAAAMkIIgAAAAAAgGQEEQAAAAAAQDKCCAAAAAAAIBlBBAAAAAAAkIwgAgAAAAAASEYQAQAAAAAAJCOIAAAAAAAAkhFEAAAAAAAAyQgiAAAAAACAZAQRAAAAAABAMoIIAAAAAAAgGUEEAADs5UpKSiLLslodO3DgwMiyLDp06FDHvdqmQ4cOkWVZDBw4MNk5AACAdAQRAABQj3Xr1i3GjBkTS5YsiY0bN8abb74Z9957b3Tr1m13dw0AACAiIgoiona3PgEAALvVGWecEQ888ECsWrUqRo0aFaWlpXHwwQfHhRdeGK1bt46vf/3r8cgjj2y3naKiomjQoEGUl5fvdB8KCwujYcOGtTp2R3Xo0CFef/31+OY3vxl33313svMAAABpNNjdHQAAAHZex44dY8yYMbFw4cI44YQTYsWKFbnvRowYEVOmTIkxY8bEEUccEaWlpdW20bRp09iwYUNUVFRERUVFrfqxZcuWpCEEAABQ/3k0EwAA1EM/+MEPYt99943BgwdXCiEiIlauXBkXX3xxNGvWLK6++uqI2PYeiK5du8Z9990Xq1atiqlTp1b6Ll+TJk1ixIgRsXz58li7dm385S9/iXbt2kWWZVFSUpLbr7p3RJSWlsb48ePj+OOPjxdeeCHKyspiwYIFcd5551U6R8uWLeOWW26J6dOnx3vvvRdr1qyJ//u//4sjjjiiTq8VAACwe1kRAQAA9dCXv/zlKC0tzYUJ/2nKlClRWloap512WqXtDz/8cMybNy+uvfbaKCgoqLH9u+66K84555y455574vnnn48+ffrE448/vsP969SpU4wbNy5GjRoVd999d3zrW9+Ku+66K1588cV49dVXI+L9VR1f/epX4+GHH47S0tJo27ZtXHzxxfH0009Ht27d4q233trh8wEAAHsuQQQAANQzH/vYx+LAAw/c7vsfpk+fHl/5yleiWbNmuW2vvPJK9O/f/wOPO/roo+Occ86JW2+9Na644oqIiPjtb38bf/jDH+Koo47aoT526dIlevfunQtKxo4dG4sXL44LLrggfvCDH0RExIwZM6Jz586VVmOMGTMm5syZExdeeGHcdNNNO3QuAABgz+bRTAAAUM80b948IiLee++9D9xv6/cf+9jHcttuv/327bZ/yimnRETEb37zm0rbR44cucN9nDVrVqXVGitWrIi5c+dGx44dc9v+/e9/50KIwsLCaNWqVaxbty7mzp0bxxxzzA6fCwAA2LMJIgAAoJ7ZGjBsDSRqUl1gUdOLq/N16NAhKioqquw7f/78He7jokWLqmxbvXp1tGzZMve5oKAghgwZEq+99lqUl5fHypUrY8WKFXHkkUdGixYtdvhcAADAnk0QAQAA9czatWtj6dKl232p8xFHHBFLliypFESUlZWl7l5ERFRUVFS7Pf+9FNdee23ceuut8cwzz8SAAQPi5JNPjr59+8bMmTOjsND/VQEAgI8K74gAAIB66LHHHovBgwfH8ccfH88++2yV73v16hWHHHLIDj2K6T+98cYbUVRUFIccckilVRCdOnX6UH3+T2eddVZMmjQpLrrookrb99tvv1ixYkWdngsAANh93GYEAAD10C233BIbNmyIO+64I1q1alXpu5YtW8btt98e69evj1tu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z7XxwAMPRK9eveITn/hEpbb//ve/x+bNm6N379679GcCAAD2blZEAADAHmjChAnx4osv5j4PGzYsiouL47HHHotHH300unbtGhs3boyKioqoqKiodGybNm3i3XffrdJmmzZt4tVXX62zPhYUFESjRo0qhSAAAAD/yTsiAACgnpg8eXLceOONcfDBB8eAAQMiovI7Ijp06BBZlsWJJ54Yhx9+eGRZFlmWRZ8+fSLLsujYsWN86Utfym3v0KFDREQ0atQobrjhhpg3b15s3LgxFi1aFMOHD49GjRpVOn+WZTFy5Mj4xje+ETNnzozy8vI45ZRTIiKiXbt2MWrUqFi2bFls3LgxZs6cGRdccEGl47f24+yzz45rr702Fi9eHGVlZfG3v/0tPvnJT1b5eT/zmc/E448/HqtWrYp169bFK6+8Et///vcr7XPYYYfFww8/HCtXroyysrKYNm1afPnLX66bCw4AANQJKyIAAKAeGTNmTPzsZz+Lk08+OX7/+99X+m758uUxYMCA+PGPfxzNmjWLa665JiIiZs+eHQMGDIhbb701lixZEr/4xS9y+xcUFMSjjz4avXr1it/97ncxe/bs6NGjR1x++eXRuXPnOOOMMyqd48QTT4x+/frFr371q1ixYkW8/vrr0aZNm3j++ecjy7L41a9+FcuXL49TTz01/vCHP8THPvaxGDFiRKU2fvSjH8WWLVvi5z//ebRo0SKuvvrquO++++K4447L7dO3b9947LHH4q233ooRI0bEsmXLomvXrvGlL30pfvnLX0ZERLdu3eLZZ5+NN998M4YNGxbr16+Pfv36xSOPPBJnnnlmPPLII3V9+QEAgFrKFEVRFEVRFEXZM8rAgQOzLMuyY489tsZ9Vq9enb344otZRGQlJSVZ9v6SiFyZPHlyNmPGjCrHlZaWZuPHj6+0rX///tnmzZuz448/vtL2wYMHZ1mWZT179sxty7Is27x5c9a1a9dK+955553Zm2++mbVq1arS9vvvvz9bvXp11qRJkywisj59+mRZlmWzZs3KGjZsmNvv0ksvzbIsy7p3755FRFZYWJgtWLAgKy0tzVq0aFHjdfh//+//Za+88krWqFGjStunTp2azZ07d7f/WSqKoiiKoiiK8n7xaCYAAKhn1q1bF82bN6+Tts4+++yYPXt2zJkzJ1q3bp0rkyZNioiI4uLiSvs//fTTMXv27ErbzjzzzBg/fnwUFBRUauOJJ56I/fbbL4455phK+48ePTo2bdqU+zxlypSIiOjYsWNERBx99NHRsWPHuO2222LNmjXV9rtly5Zx4oknxtixY6N58+ZVztu5c+do167dh7s4AABAnfBoJgAAqGeaNWsW77zzTp20deihh0a3bt1ixYoV1X7fpk2bSp9LS0srff6v//qvaNmyZVx88cVx8cUX71AbixYtqvR59erVEfF+uBARufdFzJw5s8Z+d+rUKQoLC+Omm26Km266qcbzLl26tMY2AACAXUMQAQAA9ciBBx4Y++23X8yfP79O2issLIzp06fHFVdcUe33ixcvrvS5rKysyvER77+74u677662jenTp1f6XFFRUe1+BQUFO9Tn/PPecsst8cQTT1S7T11dIwAA4MMRRAAAQD1y3nnnRUTU+Mv3nbVgwYI48sgjY+LEibU6fvny5bF27dooKiqqdRvV9Ski4vDDD6+xzYULF0ZExKZNm+rsvAAAQBreEQEAAPVEcXFxXHfddbFw4cK477776qTNsWPHRvv27WPQoEFVvmvSpEk0bdr0A4/fsmVL/PGPf4wzzzwzunfvXuX7/ffff6f79NJLL8XChQtjyJAh0aJFi2r3Wb58eUyePDkuvvjiOOCAA+rkvAAAQBpWRAAAwB7o1FNPjS5dukSDBg2ibdu2ceKJJ8ZJJ50Ub7zxRpx++ulRXl5eJ+cZM2ZM9OvXL26//fYoLi6OZ599NoqKiqJLly7Rr1+/+MIXvhAvvvjiB7bxox/9KIqLi+OFF16IO++8M1599dVo1apVHHPMMdG3b99o3br1TvUpy7L4zne+E+PHj4+XX345Ro8eHW+99VZ06dIlunfvHqecckpERHz3u9+NqVOnxowZM+LOO++MhQsXRtu2baNnz57Rvn37OOqoo2p7WQAAgDokiAAAgD3QjTfeGBER5eXlsWrVqpgxY0YMGTIkRo8eHevWrauz82RZFl/96lfj8ssvj/PPPz/OOOOM2LBhQyxcuDBGjBgRr7322nbbeOedd+Izn/lMXH/99fG1r30tLrnkkli5cmXMmjUrfvjDH9aqX08++WQUFxdHSUlJXHnllVFYWBgLFiyIO++8M7fP7Nmz41Of+lSUlJTEN7/5zWjdunW888478a9//Sv+53/+p1bnBQAA6l5BRGS7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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_versions(class_mask[11], new_class_mask[11], title=f\"{new_dataset.category[11].values} Heatmap\")" ] }, { "cell_type": "code", "execution_count": 16, "id": "7d5618a5-30d6-40bd-bff9-c8bb6649d841", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:29.438700Z", "iopub.status.busy": "2024-11-18T21:26:29.438451Z", "iopub.status.idle": "2024-11-18T21:26:29.471501Z", "shell.execute_reply": "2024-11-18T21:26:29.470607Z", "shell.execute_reply.started": "2024-11-18T21:26:29.438677Z" } }, "outputs": [], "source": [ "x_new, y_new = np.nonzero(new_size_mask.max(axis=0)) \n", "x_orig, y_orig = np.nonzero(np.flipud(size_mask.max(axis=0)))\n", "\n", "assert (x_new == x_orig).all()\n", "\n", "# NOTE: a difference of 1 pixel is due to discrepancies on how frequency bins are interpreted.\n", "# shouldn't be an issue\n", "assert (y_new == y_orig + 1).all()\n", "\n", "width_new, height_new = values_new = new_size_mask[:, x_new, y_new]\n", "width_orig, height_orig = values_orig = np.flip(size_mask,axis=1)[:, x_orig, y_orig]\n", "\n", "assert (np.floor(width_new) == width_orig).all()\n", "assert (np.ceil(height_new) == height_orig).all()" ] }, { "cell_type": "code", "execution_count": 17, "id": "5d201d2f-3fee-4ff4-9086-106a2b0607f7", "metadata": { "execution": { "iopub.execute_input": "2024-11-18T21:26:29.472757Z", "iopub.status.busy": "2024-11-18T21:26:29.472487Z", "iopub.status.idle": "2024-11-18T21:26:29.508832Z", "shell.execute_reply": "2024-11-18T21:26:29.508055Z", "shell.execute_reply.started": "2024-11-18T21:26:29.472734Z" } }, "outputs": [ { "data": { "text/plain": [ "{'data_dir': '/data1/bat_data/data/',\n", " 'ann_dir': '/data1/bat_data/annotations/anns_same/',\n", " 'train_split': 'same',\n", " 'standardize_classs_names_ip': 'Rhinolophus ferrumequinum;Rhinolophus hipposideros',\n", " 'model_name': 'Net2DFast',\n", " 'num_filters': 128,\n", " 'experiment': '../../experiments/2021_12_13__20_20_37/',\n", " 'model_file_name': '../../experiments/2021_12_13__20_20_37/2021_12_13__20_20_37.pth.tar',\n", " 'op_im_dir': '../../experiments/2021_12_13__20_20_37/op_ims/',\n", " 'op_im_dir_test': '../../experiments/2021_12_13__20_20_37/op_ims_test/',\n", " 'notes': '',\n", " 'target_samp_rate': 256000,\n", " 'fft_win_length': 0.002,\n", " 'fft_overlap': 0.75,\n", " 'max_freq': 120000,\n", " 'min_freq': 10000,\n", " 'resize_factor': 0.5,\n", " 'spec_height': 256,\n", " 'spec_train_width': 512,\n", " 'spec_divide_factor': 32,\n", " 'denoise_spec_avg': True,\n", " 'scale_raw_audio': False,\n", " 'max_scale_spec': False,\n", " 'spec_scale': 'pcen',\n", " 'detection_overlap': 0.01,\n", " 'ignore_start_end': 0.01,\n", " 'detection_threshold': 0.01,\n", " 'nms_kernel_size': 9,\n", " 'nms_top_k_per_sec': 200,\n", " 'target_sigma': 2.0,\n", " 'aug_prob': 0.2,\n", " 'augment_at_train': True,\n", " 'augment_at_train_combine': True,\n", " 'echo_max_delay': 0.005,\n", " 'stretch_squeeze_delta': 0.04,\n", " 'mask_max_time_perc': 0.05,\n", " 'mask_max_freq_perc': 0.1,\n", " 'spec_amp_scaling': 2.0,\n", " 'aug_sampling_rates': [220500,\n", " 256000,\n", " 300000,\n", " 312500,\n", " 384000,\n", " 441000,\n", " 500000],\n", " 'train_loss': 'focal',\n", " 'det_loss_weight': 1.0,\n", " 'size_loss_weight': 0.1,\n", " 'class_loss_weight': 2.0,\n", " 'individual_loss_weight': 0.0,\n", " 'emb_dim': 0,\n", " 'lr': 0.001,\n", " 'batch_size': 8,\n", " 'num_workers': 4,\n", " 'num_epochs': 200,\n", " 'num_eval_epochs': 5,\n", " 'device': 'cuda',\n", " 'save_test_image_during_train': False,\n", " 'save_test_image_after_train': True,\n", " 'convert_to_genus': False,\n", " 'genus_mapping': [0, 1, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6],\n", " 'class_names': ['Barbastellus barbastellus',\n", " 'Eptesicus serotinus',\n", " 'Myotis alcathoe',\n", " 'Myotis bechsteinii',\n", " 'Myotis brandtii',\n", " 'Myotis daubentonii',\n", " 'Myotis mystacinus',\n", " 'Myotis nattereri',\n", " 'Nyctalus leisleri',\n", " 'Nyctalus noctula',\n", " 'Pipistrellus nathusii',\n", " 'Pipistrellus pipistrellus',\n", " 'Pipistrellus pygmaeus',\n", " 'Plecotus auritus',\n", " 'Plecotus austriacus',\n", " 'Rhinolophus ferrumequinum',\n", " 'Rhinolophus hipposideros'],\n", " 'classes_to_ignore': ['', ' ', 'Unknown', 'Not Bat'],\n", " 'generic_class': ['Bat'],\n", " 'events_of_interest': ['Echolocation'],\n", " 'standardize_classs_names': ['Rhinolophus ferrumequinum',\n", " 'Rhinolophus hipposideros'],\n", " 'train_sets': [{'dataset_name': 'BatDetective',\n", " 'is_test': False,\n", " 'is_binary': True,\n", " 'ann_path': 'train_set_bulgaria_batdetective_with_bbs.json',\n", " 'wav_path': 'bat_detective/audio/'},\n", " {'dataset_name': 'bat_logger_qeop_empty',\n", " 'is_test': False,\n", " 'is_binary': True,\n", " 'ann_path': 'bat_logger_qeop_empty.json',\n", " 'wav_path': 'bat_logger_qeop_empty/audio/'},\n", " {'dataset_name': 'bat_logger_2016_empty',\n", " 'is_test': False,\n", " 'is_binary': True,\n", " 'ann_path': 'train_set_bat_logger_2016_empty.json',\n", " 'wav_path': 'bat_logger_2016/audio/'},\n", " {'dataset_name': 'echobank',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'Echobank_train_expert_TRAIN.json',\n", " 'wav_path': 'echobank/audio/'},\n", " {'dataset_name': 'sn_scot_nor',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'sn_scot_nor_0.5_expert_TRAIN.json',\n", " 'wav_path': 'sn_scot_nor/audio/'},\n", " {'dataset_name': 'BCT_1_sec',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'BCT_1_sec_train_expert_TRAIN.json',\n", " 'wav_path': 'BCT_1_sec/audio/'},\n", " {'dataset_name': 'bcireland',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'bcireland_expert_TRAIN.json',\n", " 'wav_path': 'bcireland/audio/'},\n", " {'dataset_name': 'rhinolophus_steve_BCT',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'rhinolophus_steve_BCT_expert_TRAIN.json',\n", " 'wav_path': 'rhinolophus_steve_BCT/audio/'},\n", " {'dataset_name': 'bat_data_martyn_2018',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'BritishBatCalls_MartynCooke_2018_1_sec_train_expert_TRAIN.json',\n", " 'wav_path': 'bat_data_martyn_2018/audio/'},\n", " {'dataset_name': 'bat_data_martyn_2018_test',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'BritishBatCalls_MartynCooke_2018_1_sec_test_expert_TRAIN.json',\n", " 'wav_path': 'bat_data_martyn_2018_test/audio/'},\n", " {'dataset_name': 'bat_data_martyn_2019',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'BritishBatCalls_MartynCooke_2019_1_sec_train_expert_TRAIN.json',\n", " 'wav_path': 'bat_data_martyn_2019/audio/'},\n", " {'dataset_name': 'bat_data_martyn_2019_test',\n", " 'is_test': False,\n", " 'is_binary': False,\n", " 'ann_path': 'BritishBatCalls_MartynCooke_2019_1_sec_test_expert_TRAIN.json',\n", " 'wav_path': 'bat_data_martyn_2019_test/audio/'}],\n", " 'test_sets': [{'dataset_name': 'echobank',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'Echobank_train_expert_TEST.json',\n", " 'wav_path': 'echobank/audio/'},\n", " {'dataset_name': 'sn_scot_nor',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'sn_scot_nor_0.5_expert_TEST.json',\n", " 'wav_path': 'sn_scot_nor/audio/'},\n", " {'dataset_name': 'BCT_1_sec',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'BCT_1_sec_train_expert_TEST.json',\n", " 'wav_path': 'BCT_1_sec/audio/'},\n", " {'dataset_name': 'bcireland',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'bcireland_expert_TEST.json',\n", " 'wav_path': 'bcireland/audio/'},\n", " {'dataset_name': 'rhinolophus_steve_BCT',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'rhinolophus_steve_BCT_expert_TEST.json',\n", " 'wav_path': 'rhinolophus_steve_BCT/audio/'},\n", " {'dataset_name': 'bat_data_martyn_2018',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'BritishBatCalls_MartynCooke_2018_1_sec_train_expert_TEST.json',\n", " 'wav_path': 'bat_data_martyn_2018/audio/'},\n", " {'dataset_name': 'bat_data_martyn_2018_test',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'BritishBatCalls_MartynCooke_2018_1_sec_test_expert_TEST.json',\n", " 'wav_path': 'bat_data_martyn_2018_test/audio/'},\n", " {'dataset_name': 'bat_data_martyn_2019',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'BritishBatCalls_MartynCooke_2019_1_sec_train_expert_TEST.json',\n", " 'wav_path': 'bat_data_martyn_2019/audio/'},\n", " {'dataset_name': 'bat_data_martyn_2019_test',\n", " 'is_test': True,\n", " 'is_binary': False,\n", " 'ann_path': 'BritishBatCalls_MartynCooke_2019_1_sec_test_expert_TEST.json',\n", " 'wav_path': 'bat_data_martyn_2019_test/audio/'}],\n", " 'class_inv_freq': [1.9637118577957153,\n", " 0.7146786451339722,\n", " 2.441218852996826,\n", " 2.6182825565338135,\n", " 0.955857515335083,\n", " 0.29615065455436707,\n", " 0.6982086896896362,\n", " 0.7116808295249939,\n", " 1.6066733598709106,\n", " 5.473054885864258,\n", " 1.386149525642395,\n", " 1.0264047384262085,\n", " 0.7815048694610596,\n", " 1.8502148389816284,\n", " 2.458908796310425,\n", " 0.885977566242218,\n", " 0.8449437618255615],\n", " 'genus_names': ['Barbastellus',\n", " 'Eptesicus',\n", " 'Myotis',\n", " 'Nyctalus',\n", " 'Pipistrellus',\n", " 'Plecotus',\n", " 'Rhinolophus'],\n", " 'class_names_short': ['Bar bar',\n", " 'Ept ser',\n", " 'Myo alc',\n", " 'Myo bec',\n", " 'Myo bra',\n", " 'Myo dau',\n", " 'Myo mys',\n", " 'Myo nat',\n", " 'Nyc lei',\n", " 'Nyc noc',\n", " 'Pip nat',\n", " 'Pip pip',\n", " 'Pip pyg',\n", " 'Ple aur',\n", " 'Ple aus',\n", " 'Rhi fer',\n", " 'Rhi hip'],\n", " 'ip_height': 128}" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "old_parameters" ] }, { "cell_type": "code", "execution_count": null, "id": "3b903e17-acee-4555-8e67-d7ba9ba731d1", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "batdetect2-dev", "language": "python", "name": "batdetect2-dev" }, "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.12.5" } }, "nbformat": 4, "nbformat_minor": 5 }