diff --git a/etx4velo/analyses/check_training_tracks.ipynb b/etx4velo/analyses/check_training_tracks.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..70fae51d67463b73e3320f800f68837cefc5ebdf --- /dev/null +++ b/etx4velo/analyses/check_training_tracks.ipynb @@ -0,0 +1,454 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "\n", + "os.environ[\"ETX4VELO_REPO\"] = os.path.abspath(os.path.join(\"../..\"))\n", + "sys.path.append(os.environ[\"ETX4VELO_REPO\"])\n", + "from setup.setup import setup_envvars\n", + "\n", + "setup_envvars()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm.auto import tqdm\n", + "import torch\n", + "\n", + "from utils.commonutils.config import load_config\n", + "from pipeline import load_trained_model\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from utils.plotutils.plotconfig import configure_matplotlib\n", + "\n", + "configure_matplotlib()\n", + "\n", + "CONFIG = \"../pipeline_configs/focal-loss-nopid-triplets-embedding-3-withspillover-new.yaml\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "config = load_config(CONFIG)\n", + "config[\"embedding\"][\n", + " \"query_particle_requirement\"\n", + "] = \"(abs(pid) != 11) and has_velo and has_scifi\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "embedding_model = load_trained_model(path_or_config=config, step=\"embedding\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f69610857bb042ae84576569ac4dcce1", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/100 [00:00<?, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "embedding_model.load_partition(\"minbias-sim10b-xdigi_v2.4_1496\", n_events=100)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "batch = embedding_model.testset[0].cuda()\n", + "all_features = batch[\"x\"]\n", + "true_edge_indices = batch[\"signal_true_edges\"]\n", + "planes = batch[\"plane\"]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "df_hits = pd.DataFrame(\n", + " {\n", + " \"un_x\": batch.un_x.cpu().numpy(),\n", + " \"un_y\": batch.un_y.cpu().numpy(),\n", + " \"un_z\": batch.un_z.cpu().numpy(),\n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "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>un_x</th>\n", + " <th>un_y</th>\n", + " <th>un_z</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>6.49478</td>\n", + " <td>-27.41810</td>\n", + " <td>-288.141</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>6.88369</td>\n", + " <td>-39.24090</td>\n", + " <td>-286.859</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>2.54735</td>\n", + " <td>-13.08680</td>\n", + " <td>-288.141</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>-8.34209</td>\n", + " <td>-1.88621</td>\n", + " <td>-288.141</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>-1.71120</td>\n", + " <td>-21.54550</td>\n", + " <td>-288.141</td>\n", + " </tr>\n", + " <tr>\n", + " <th>...</th>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " <td>...</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1820</th>\n", + " <td>25.35680</td>\n", + " <td>16.48970</td>\n", + " <td>750.641</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1821</th>\n", + " <td>-2.50846</td>\n", + " <td>44.93840</td>\n", + " <td>750.641</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1822</th>\n", + " <td>10.63670</td>\n", + " <td>-3.24739</td>\n", + " <td>750.641</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1823</th>\n", + " <td>32.92110</td>\n", + " <td>-1.69175</td>\n", + " <td>749.359</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1824</th>\n", + " <td>-2.11955</td>\n", + " <td>15.98410</td>\n", + " <td>749.359</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "<p>1825 rows × 3 columns</p>\n", + "</div>" + ], + "text/plain": [ + " un_x un_y un_z\n", + "0 6.49478 -27.41810 -288.141\n", + "1 6.88369 -39.24090 -286.859\n", + "2 2.54735 -13.08680 -288.141\n", + "3 -8.34209 -1.88621 -288.141\n", + "4 -1.71120 -21.54550 -288.141\n", + "... ... ... ...\n", + "1820 25.35680 16.48970 750.641\n", + "1821 -2.50846 44.93840 750.641\n", + "1822 10.63670 -3.24739 750.641\n", + "1823 32.92110 -1.69175 749.359\n", + "1824 -2.11955 15.98410 749.359\n", + "\n", + "[1825 rows x 3 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_hits" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "62d59504c4254fb98c170fd175390dbe", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAABwgAAAJYCAYAAAB2JbLWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9b2xbR54n/H5piVE43khUGplnrtwxldFujE7csrTGNIRJj0x1Y+M7K0S2d4ABDKitePqVXkSKMQY2uelYzXRnkxfGOFYPoFfT/tPCY2BejGWndWfluRNT2jRG6IFXMsedXGcerUVnrM3dPB1TymgZhZJ5X9BFH1IkzymyiucU+f0AabpF8rBOnTr/6nd+Vb50Op0GEREREREREREREREREdWFHW4XgIiIiIiIiIiIiIiIiIiqhwFCIiIiIiIiIiIiIiIiojrCACERERERERERERERERFRHWGAkIiIiIiIiIiIiIiIiKiOMEBIREREREREREREREREVEcYICQiIiIiIiIiIiIiIiKqIwwQEhEREREREREREREREdURBgiJiIiIiIiIiIiIiIiI6ggDhERERERERERERERERER1hAFCIiIiIiIiIiIiIiIiojrCACERERERERERERERERFRHWGAkIiIiIiIiIiIiIiIiKiOMEBIREREREREREREREREVEcYICQiIiIiIiIiIiIiIiKqIwwQEhEREREREREREREREdURBgiJiIiIiIiIiIiIiIiI6ggDhERERERERERERERERER1hAFCIiIiIiIiIiIiIiIiojrCACERERERERERERERERFRHWGAkIiIiIiIiIiIiIiIiKiOMEBIREREREREREREREREVEcYICQiIiIiIiIiIiIiIiKqIwwQVsHdu3crej8Wi2Fubs72c0RERERERERERERERER2Gt0uQD04f/48zpw5g8OHD+OZZ57J/v3OnTuIRqO4cuUKdu/eve17c3NzOHPmDI4fP45gMIipqSlcv34dFy5cQHNzczVXgYiIiIiIiIiIiIiIiGoEA4RVkkgkcP78+Zy/vfzyy7h582bBYF8sFsPQ0FDO+729vejq6sKBAwcwOzvLICERERERERERERERERFJY4CwSmZnZxEMBpFIJAAAXV1dJQN8Q0NDiEQi2z7T29uLYDCI9957D6dOndJZZCIiIiIiIiIiIiIiIqpBDBBWUWdnp6PPxWIxLC4uIhwOF3y/r68PZ86cYYCQiIiIiIiIiIiIiIiIpO1wuwC03dTUFAAUnJcQAMLhMBKJBGKxWBVLRURERERERERERERERLWAGYQedP36dQSDQdvPRaPRglmJDx48wMrKCp544gn4fD4NJSQiIiIiIiIiXdLpNL788ku0tbVhxw4+213P2MdDRERU29y87mOAsIrW1tYQjUaxuLiI9vZ2hMPhglmCiUQCXV1dtssT8xnmW1lZwdNPP11haYmIiIiIiIjITZ9++im++c1vul0MchH7eIiIiOqDG9d9DBBWyeXLl7G4uIjDhw9jYGAAd+/exdDQEI4fP45jx47lfLbU/INOPPHEEwAyDaq5ubmSYhMRERERERFRla2treHpp5/O3t9T/WIfDxERUW1z87qPAcIq6e7uzgkE7t69G1euXEEoFEIwGMTAwICy3yo25ERTUxOampqU/Q4RERERERER6cMhJUm0gebmZgYIiYiIapgb130cyL4KTp06tS1LEMhc3B0+fBijo6Nafvfpp59GS0tL9r933nlHy+8QERERERERERERERGROZhB6LLu7m6cP38ec3Nz6O3tVbrs/OEnmD1IREREREREREREREREzCB0WVdXFwAgGo1m/9be3q5k2WL4CfEfA4RERERERERERERERETEAKFmV69exfHjx6W+097enhMwLCYYDJZXKCIiIiIiIiIiIiIiIqpbDBBqdubMmewQok6JrMJiEomEo88RERERERERERERERER5WOAULNgMIizZ88WnV9QZAoePnw4+7e+vj4AQCwWK/idxcVFBINB5XMWkl6T83G88O4HmJyPu10UIiIiIiIiIiIiIiKqYwwQatbX14dwOFz0/cuXLyMcDqOzszP7t4GBAbS3t2NxcbHod6wBRTLDRHQJ9xJJTESX3C4KERERERERERERERHVMQYINRsZGcGZM2ewtra27b3x8XEsLy/jwoUL2947e/YsxsbGtn1vbm4Oy8vLOHv2rLYykx7D4Q7sCgYwHO5wuyhERERERERERERERFTHGt0uQD04e/YshoaG0N3dnc0mPHfuHJaXlzE7O4vdu3dv+87AwAASiQRGR0cRiUSwe/duzM3NYXR0FLOzs2hubq7yWlClBntCGOwJuV0MIiIiIiIiIiIiIiKqc750Op12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QBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUkf8/UIDuGLDAv+IAAAAASUVORK5CYII=", + "text/html": [ + "\n", + " <div style=\"display: inline-block;\">\n", + " <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n", + " Figure\n", + " </div>\n", + " <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABwgAAAJYCAYAAAB2JbLWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9b2xbR54n/H5piVE43khUGplnrtwxldFujE7csrTGNIRJj0x1Y+M7K0S2d4ABDKitePqVXkSKMQY2uelYzXRnkxfGOFYPoFfT/tPCY2BejGWndWfluRNT2jRG6IFXMsedXGcerUVnrM3dPB1TymgZhZJ5X9BFH1IkzymyiucU+f0AabpF8rBOnTr/6nd+Vb50Op0GEREREREREREREREREdWFHW4XgIiIiIiIiIiIiIiIiIiqhwFCIiIiIiIiIiIiIiIiojrCACERERERERERERERERFRHWGAkIiIiIiIiIiIiIiIiKiOMEBIREREREREREREREREVEcYICQiIiIiIiIiIiIiIiKqIwwQEhEREREREREREREREdURBgiJiIiIiIiIiIiIiIiI6ggDhERERERERERERERERER1hAFCIiIiIiIiIiIiIiIiojrCACERERERERERERERERFRHWGAkIiIiIiIiIiIiIiIiKiOMEBIREREREREREREREREVEcYICQiIiIiIiIiIiIiIiKqIwwQEhEREREREREREREREdURBgiJiIiIiIiIiIiIiIiI6ggDhERERERERERERERERER1hAFCIiIiIiIiIiIiIiIiojrCACERERERERERERERERFRHWGAkIiIiIiIiIiIiIiIiKiOMEBIREREREREREREREREVEcYICQiIiIiIiIiIiIiIiKqIwwQVsHdu3crej8Wi2Fubs72c0RERERERERERERERER2Gt0uQD04f/48zpw5g8OHD+OZZ57J/v3OnTuIRqO4cuUKdu/eve17c3NzOHPmDI4fP45gMIipqSlcv34dFy5cQHNzczVXgYiIiIiIiIiIiIiIiGoEA4RVkkgkcP78+Zy/vfzyy7h582bBYF8sFsPQ0FDO+729vejq6sKBAwcwOzvLICERERERERERERERERFJY4CwSmZnZxEMBpFIJAAAXV1dJQN8Q0NDiEQi2z7T29uLYDCI9957D6dOndJZZCIiIiIiIiIiIiIiIqpBDBBWUWdnp6PPxWIxLC4uIhwOF3y/r68PZ86cYYCQiIiIiIiIiIiIiIiIpO1wuwC03dTUFAAUnJcQAMLhMBKJBGKxWBVLRURERERERERERERERLWAGYQedP36dQSDQdvPRaPRglmJDx48wMrKCp544gn4fD4NJSQiIiIiIiIiXdLpNL788ku0tbVhxw4+213P2MdDRERU29y87mOAsIrW1tYQjUaxuLiI9vZ2hMPhglmCiUQCXV1dtssT8xnmW1lZwdNPP11haYmIiIiIiIjITZ9++im++c1vul0MchH7eIiIiOqDG9d9DBBWyeXLl7G4uIjDhw9jYGAAd+/exdDQEI4fP45jx47lfLbU/INOPPHEEwAyDaq5ubmSYhMRERERERFRla2treHpp5/O3t9T/WIfDxERUW1z87qPAcIq6e7uzgkE7t69G1euXEEoFEIwGMTAwICy3yo25ERTUxOampqU/Q4RERERERER6cMhJUm0gebmZgYIiYiIapgb130cyL4KTp06tS1LEMhc3B0+fBijo6Nafvfpp59GS0tL9r933nlHy+8QERERERERERERERGROZhB6LLu7m6cP38ec3Nz6O3tVbrs/OEnmD1IREREREREREREREREzCB0WVdXFwAgGo1m/9be3q5k2WL4CfEfA4RERERERERERERERETEAKFmV69exfHjx6W+097enhMwLCYYDJZXKCIiIiIiIiIiIiIiIqpbDBBqdubMmewQok6JrMJiEomEo88RERERERERERERERER5WOAULNgMIizZ88WnV9QZAoePnw4+7e+vj4AQCwWK/idxcVFBINB5XMWkl6T83G88O4HmJyPu10UIiIiIiIiIiIiIiKqYwwQatbX14dwOFz0/cuXLyMcDqOzszP7t4GBAbS3t2NxcbHod6wBRTLDRHQJ9xJJTESX3C4KERERERERERERERHVMQYINRsZGcGZM2ewtra27b3x8XEsLy/jwoUL2947e/YsxsbGtn1vbm4Oy8vLOHv2rLYykx7D4Q7sCgYwHO5wuyhERERERERERERERFTHGt0uQD04e/YshoaG0N3dnc0mPHfuHJaXlzE7O4vdu3dv+87AwAASiQRGR0cRiUSwe/duzM3NYXR0FLOzs2hubq7yWlClBntCGOwJuV0MIiIiIiIiIiIiIiKqc750Op12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QBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUEQKEAAAAAAAAAAAAQBUhQAgAAAAAAAAAAABUkf8/UIDuGLDAv+IAAAAASUVORK5CYII=' width=1800.0/>\n", + " </div>\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib widget\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.gridspec import GridSpec\n", + "\n", + "fig = plt.figure(figsize=(18, 18 / 3.0))\n", + "gs = GridSpec(2, 2, figure=fig, width_ratios=(2.0, 1), height_ratios=(1, 1))\n", + "\n", + "mpl_axes = {\n", + " (\"z\", \"x\") : fig.add_subplot(gs[0, 0]),\n", + " (\"z\", \"y\") : fig.add_subplot(gs[1, 0]),\n", + " (\"x\", \"y\") : fig.add_subplot(gs[:, 1]),\n", + "}\n", + "\n", + "# mpl_axes[\"z\", \"x\"].set_aspect(4, adjustable='box')\n", + "# mpl_axes[\"z\", \"y\"].set_aspect(4, adjustable='box')\n", + "# mpl_axes[\"x\", \"y\"].set_aspect(4, adjustable='box')\n", + "\n", + "for axes, mpl_ax in mpl_axes.items():\n", + " mpl_ax.set_xlabel(axes[0])\n", + " mpl_ax.set_ylabel(axes[1])\n", + " mpl_ax.scatter(\n", + " df_hits[\"un_\" + axes[0]],\n", + " df_hits[\"un_\" + axes[1]],\n", + " s=1,\n", + " )\n", + "\n", + "fig.subplots_adjust(hspace=-1.0, wspace=-1.0, left=0.0, right=1.0, bottom=0.0, top=1.0)\n", + "\n", + "fig.tight_layout()\n", + "# def onclick(event):\n", + "# if event.inaxes is not None: # Check if click is inside the axes\n", + "# z, x = event.xdata, event.ydata\n", + " \n", + "# a = ('button=%d, x=%d, y=%d, xdata=%f, ydata=%f' %\n", + "# (event.button, event.x, event.y, event.xdata, event.ydata))\n", + "# ax.set_title(a)\n", + "\n", + "# fig.canvas.mpl_connect('button_press_event',onclick)\n", + "\n", + "plt.draw()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a18aec668a744c3985dff6625281afc", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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", + "text/html": [ + "\n", + " <div style=\"display: inline-block;\">\n", + " <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n", + " Figure\n", + " </div>\n", + " <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABqQAAAEsCAYAAACllNIDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABtjElEQVR4nO3dX3Bc1ZXo/9WWhCx8sdryJAPSgLB0E34YMIMUKFcllXJNpOHm6oczD3Yoqvw6VvkBnijL/nFzuUyGa6TiCR4oOa9UUUR6mJirm8tYM0VRpMqFbTGY2PwgPzVxKCmeMMgtGI8sJLl/D63VOv1Htnqf3d6rj7+fKqeDZLW2T5+zzz57rb12KpfL5QQAAAAAAAAAAACokU2hGwAAAAAAAAAAAIBkIyAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAAAAAAAAgJoiIAUAAAAAAAAAAICaIiAFAAAAAAAAAACAmiIgBQAAAADGDA4OSm9vr3R3d0sqlZJsNhu6SQAAAAAQSyqXy+VCNwIAAAAAsGZqakrOnDkjg4ODIiJy+fJlSafTYRsFAAAAADGwQgoAAAAAPMhkMtLd3S379++P/V49PT1y8OBB2bdvn4eWAQAAAEB4BKQAAAAA4Do2GmAaHx+XTCYj4+PjXt4PAAAAAJKkMXQDAAAAAMCyTCazob938OBBmZ6elt7eXi/vJyLS1ta24b8LAAAAAJYRkAIAAACA69hoACmdTsvo6Ki39wMAAACAJKFkHwAAAACsY3JyUrLZrNn3AwAAAIB6QUAKAAAAANYxPDxs+v0AAAAAoF4QkAIAAACACgYHB2VyctLs+wEAAABAPWEPKQAAAACIOH78eNlKpm3btklbW1vhv/v6+or2ixoZGZGTJ09KJpORTCYjly9flnQ67fx+1ZicnJTR0dGi90un06zGAgAAAGBKKpfL5UI3AgAAAAAs6u/vl8nJSbnRY9PU1JRkMhn527/9W8lms0UBKZf3U4ODg3L8+PF1329oaEgmJydlbGxMurq6in5ucnJSTp48WfR1AAAAAAiFkn0AAAAAEFNPT4/s27dP+vr6btrvHBoakpGRkbJglIgUVlvt37//prUHAAAAAK6HgBQAAAAAeBItm1dLmUxGRkZG5PDhw+uugBoaGpKpqSn2rQIAAABgAgEpAAAAAKgzQ0NDIpIvAbie733veyIicvLkyZvSJgAAAAC4HgJSAAAAAFBnpqamRGQt6FSJrpzSvwsAAAAAITWGbgAAAAAAoDqZTEZERI4dOybbt29f9+8NDw+vW9IPAAAAAG4mAlIAAAAAUEey2Wzh/x89elTS6XSwtgAAAADARlGyDwAAAACqdPz48cIqpZv9fgSgAAAAANQjAlIAAAAAUGf27dsnIiJnzpwJ3BIAAAAA2BgCUgAAAABwA9EyefrfbW1twd5veHhYRERGR0dv+HuGhoaqbh8AAAAA+EZACgAAAADW0d/fLyJSVk5venq6Yum8ubm5m/J+XV1dMjo6KuPj4zI5Obnu7zt27JgMDg5et00AAAAAcDMQkAIAAACAdRw8eFC6urqKVhlNTU1Jd3d3xb+vgab19oPy+X4HDx6U0dFR2b9/v4yPj5d9f2hoSPr7+6Wrq2udfx0AAAAA3DypXC6XC90IAAAAALAqk8kUVhl1dXVJd3e3HD58uOjv9Pb2SiaTKZTiS6fT0tbWJmfPni1b+RTn/UZHR6Wvr6/s/YaHhyWTyRQFn4aGhghGAQAAADCDgBQAAAAAAAAAAABqqjF0A2rh+PHjMjY2JoODg9LX1yfpdFoymYxMTU3Jm2++KUePHpWenp6yn8tms3Ls2DEREdm+fbtMT09Lf3+/7Nu372b/EwAAAAAAAAAAABIjkQGpbDYrk5OTZZv7ptNpGRsbWzcY1dvbW/b9wcFBOX36tAwPD9e83QAAAAAAAAAAAEmUyJJ9IyMjkk6nZXp6WjKZjLS1tUlvb68cPHhw3Z/p7++Xnp6eioGnbdu2ydjYWFmtdgAAAAAAAAAAANxYIldIiYj89Kc/Lds8eD2ZTEYmJydldHR03fcaHh4mIAUAAAAAAAAAAOBgU+gGWKCBqK6urorf7+7ulsnJSclmszexVQAAAAAAAAAAAMlAQEpEpqamrruaSgNVZ86cuUktAgAAAAAAAAAASI7EluxTU1NTcubMGfne974nPT09Ff+O7jO1Hg1WZTKZit+/du2azM7Oyh133CGpVCp2mwEAAAAAAAAAAErlcjn5+uuvpb29XTZtqq81R4kNSE1OTkomk5G+vj45ePCgTE1NSX9/vwwNDZXtBTU3N7duuT4RKQSr1ivZNzs7K3fffbe3tgMAAAAAAAAAAKzn888/l7/4i78I3YyqJDIgpcGlw4cPF77W09MjY2Njsm3bNjl79mzRaqmN7g315ZdfVvz6HXfcUfHrR44ckaNHj26w1QAAAAAAAAAAAOv76quv5O677143LmFZIgNS+/btq/j1dDot+/btk/3798v09LS336dl+j7//HPZunVr4evNzc3S3Nzs7fcAAAAAAAAAAADU4/ZB9VVg0INHH31UMplM0X5Q6XR6Q6uktm/fft3vb926tegPwSgAAAAAAAAAAIBbMCCVTqdFRGRqaqrwNd0jaj1zc3NFPwsAAAAAAAAAAICNS1xAanBwULq7u6v6ma6urkLQqRJdPaV7UwEAAAAAAODW9fqpi/L9l/5ZXj91MXRTAACoG4kLSJ05c2ZDwaWenp7C13p6eq5bsk/L+/X19XlpIwAAAADcDEyYAkBtvPbOtMxkF+S1d/ztUQ4AQNIlLiDV19cnly9fXvf7p0+flnQ6XbTa6cknnxSR4jJ+pT9DMAoAANxMViaRrbQDgBsmTAGgNg7t6ZaOdIsc2lNdlR4AAG5liQtIPfnkk3L8+PGK38tkMjI+Pi6/+MUvir7e09MjfX198uabb1b8ufHxcRkaGvLeVgAAQtr76nty75EJ2fvqe6GbggqsTCJbaQcAN0yYAkBtHNjdKb858ldyYHdn6KYAAFA3EheQ0vJ7IyMjRV/PZDLS29srhw8fln379pX93NjYmIyPj5etkhocHJTDhw+zQgpA3WFVA27k3Mx80StssTKJbKUdANwwYQoAAADAilQul8uFbkQtTE5OytjYmMzNzUk2m5V0Oi1Hjx4t2juqVDablaGhIUmn07J9+3aZnp6W/v7+igGsqK+++kpaW1tlfn5etm7d6vufAgBOvv/SP8tMdkE60i3ymyN/Fbo5MOg7/8//lqVrOWnalJLf/c//Gro5AKr0+qmL8to703JoTzfBBqAOcQ0DAADART3HIxIbkLqZ6vkEAJBcTHLgRjhHgPpG4oFd9K/YCK5hAAAAuKjneETiSvYBAPIo0YMb4RwB6hvlFO1i7zVsBNcwAABAObagSDZWSHlQzxHJekCGKQAAAOoJ41cAAADADavIb6ye4xGskIJ5ljJMidADAADgRliBCgAAALhhFXmyEZCCeZY6IUvBMQAAbiUkhaCecL6W45gAAACUY4xUjuSuZCMgBfMsdUKWgmMAANxKLCWF8NBY7pk3PpDuoxPyzBsfBG2Hlc/G0vlqBccEAACgHGMk3GoISAFVsBQcAwD4Z2UyG+UsJYXw0Fhu4tysrOTyryFZ+Wwsna9W9HZuk4ZU/hUAAAB5jBtxqyEgBQAAsMrKZDbKWUoK4aGx3MCudmlI5V9DsvLZWDpfrTh78bKs5PKvAADcSkh6w/UwbsStJpXL5XKhG1HvvvrqK2ltbZX5+XnZunVr6OYAAABHr5+6KK+9My2H9nTzQAAgEaz0a1baAQDAzfb9l/5ZZrIL0pFukd8c+avQzQmK8QDgRz3HI1ghBVSBrBYASDay01BPrOzbBNusrPykfwWQVNyPcSNWVnBbYGVcAiAcAlJAFazcOAmMAfXNyjVspR0A3Jz4ML9v04kPZ4Nfy/QndrF3EwDUlpV9FGEXSRlrCM4BICAFVMHKjdNKYAyAGyvX8IsTH8tMdkFenPg4aDsAxBe6T7HSr6EcezcBQG1Z2UcRqAcE5wAQkAKqYOXGaSUwBsCNlWt4YWml6BVAfdnV0SoiIh3pzcH7FCv9mpWVWlbaIWLns1GWjg2wHs5TVOOVpx6R6WMD8spTj4RuCoyhLwHccf0kVyqXy+VCN6Le1fMmYqhvbAYJII77f/ZrWVi6Ji1Nm+Tjn/84dHNgFPeachwTu6xsGm6lHRZxbFAP9DxNtzTJluZG+nsATuhLAHeMGa+vnuMRrJAC6hjlcQDE8dzATulIt8hzAztDNwUVWMkIs3KvsXI8ROwcE5TT1UC9nduCni+6b9P2LbeZOW+tsLZiC6hEr+HF5RX6e6zL0tgENuk9TyR8eWWg3jBmTC4CUoCD0ANP/f29ndvonIE6FrovQTlLn4mVoIeVBwErx0PEzjHR8/WZNz4Ift5auXa0vPLZi5eDni+6b9P52Xkz560VVkpgW2DlukE5vYabGxtM9PewSccmL7/9CdcyKtJ73rOP30dfUoJ7YDmOCW4VBKRgnsUOOfSkmP7+dz/9IsjvB+BH6L7k5bc/KTxEIy/0ZxJlJehhhaXjoZMLIhJ0jKLn68S52eDnrZVrx0rSjq6ueKC91cx5C3usXDcop/ecZx+/jwAq1sXqF2wUyRjluAeW45isef3URXn+V7/leCQUASmYZ3HCNPSkGANfIBlC9yWLyytFrxaETkKwUu5LxM6Dq5XsXyvHIyr0Q6OerwO72oMHPTQA09u5LVgbRNbGje9++kXQ80VXV3x55Rtz5y3sCD0OABAPq18Ad9wDy3FM1rz2zrSs5EQaUsLxSKDG0A0A6tGB3Z1BJxb090c3VQdQP6LXbsjNOZsbG2Rh6Zo0NzYEa0Op6AR/iH5W+1fdQDVUOyzp7dwml+YXZHF5RbILSxyTiEN7uoPeh0OPR6I0AHP24uXQTTEh9LmB+mDpGkaxaDKGXst8VlgP1zJQPa4bXI8+gw7sauc8SSBWSME8zTZ69vH7QjcleOZ+KYvZ4gBuLPSqCmWpf1VWssKstMMC9tFYH/fhNVZWSFnp1zg3ylkbRwPXQ0UKVIP+DTfCOVKOY1LOyjyBBSS7JRsBKZhn6YGemwMAH6wEOyz1r8pKm6y0wwIr+2hYfGi12KZQrDw0Wtnfy6LQ5yvjaNQT7UvuabtdRES2b7ktcItgGf0bboRzpBzHZI2VPVAtObSnW9ItTXJlcZnxfAIRkAKqYCX7V4WeWLDWDhTjc7HLWrCDcwXXY+V8tbKXVaU2hXqQtnTt6thoJrsgz7zxQeDWhP9sLAp9TKwkYwDV+GhmvugVqIT+DTfCOVLO2vxaSFb2QLXkwO5O2dLcWCgZj2QhIAVUwUr2r05A6U0rZOf8+qmL8rN/+G1hkhB2hJ54wvosTSKLcK5EWftssMZi+aTQkws6DrBw/42OjSbOzQZsSV7oz8ZSX2Il69ZKcNuSZ974QLqPTpgI4qKyzU0NRa8A4IJ7YDkr82uwK/R4HrVDQAp1w8KDvZXOUCegFpevBW/Py29/Irlgvx3XY+V8RTkrAaC9r74n9x6ZEJEc58oqK58N1vfD737LzPnK5MKaQ3u6paVpk6REZGBXe+jmBGcpWKj92tmLlzlfjZk4NysrORtBXBTTYGHbliZpSIn07/zz0E2CYYwfcSMkIKzRY7F9y21mxvSh6R6oP/zut4LPe1rCs1ZyEZCCeRqIenHi4+AP9tY6w+bGTcHbs7i8Uvj/oTcQRzFr5yvWWAkWnlstPzOTvcq5sko/m97ObcEfBiwkYljCpHo5Sw+vB3Z3ysc//7F89tKAvPLUI8HaYWkVuRVW7jkoN7CrXRpSBHEt0mDhTPYqGfy4IfpZ3AgJCGv0WJyfnWdMv0rnbs5evMz4NYLn4eQiIAXzdALq6tLKjf/yTRK6U/zhd78lDan8a2jNjfnyFemWJgYSwAZZCRbu6mgteoWthwGybYvpZM/2LbeZyTANPR5QJy/8a/CkHSv0uhGRoJOD97TdXvQakpV7Dsq98tQjMn1sQETETL+GPA0W7upoJdCAG6KfxY2QgLCGY7E+gtvFeB5OLgJSME875CcebpeOdIuJVTihO0VLtXZ1ouXK4nLwCTkA1Tnx9A/k9y8NyImnfxC6KQVWyllYeBiw0AZLdLLn/Ox88AxTK6tw9PcvGEjaef3URfnLF/5R/vKFfzRRXvnZx+8LOjn40eoKVH0FrufEh/ls8RMfkjlvhQYLf/ro3aGbAqCO6ZjxsR1tMn0s7CpyK7R/fWxHm4nELtjF83ByEZBC3XhsR1vwrCMrm0JbKil1fjY/0bJ0LUdmNlAlK8EXC6s8tA1vfWijnIWFTFcLbYiycJ6I2Miq1MSUxeUVaUiJ9HZuC9YWEZGWpk3Bk3ZefvsTyS4sSXZhyUQW4/ufzQU9Xzc35R+zGjelTFw3FljpQ4BqhE5ERH2gf8N6NHnoxYkLnCMl6F/LcUzWvH7qorz2zrQc2tNt5nkY/hCQgnmWOmQr+1dYKinFMmvAnZVa4hb62RfeOl8osxU62IBiVlYDKc2qDJlhqokhIilZyYm8++kXQdqhJXy/8+07gvz+SlIiQbMY9Tx968PZoOfrcwM7pSPdIluaG01cNxZYuNdY1bIawNRX2EF2NjZC7z0kaGI9V5eucQ8sQf9ajmOyhnFjsjHihXm9ndtMZB+L2FmZ5GOllq8srleeekT2PtxuZk8roJ5YWOkhYmPgu7SSExGRnIjc2doij+1oC9YWFLOyJ48lmhiSP2NFFpfDlMzTEr7nZ+eDP7A9+/h90pFukZ//zYNBsxivLC6LiEgqFfZ81XNEg4YWxrGh6ZheJGdidbAlC0vXil4Rnj4riYip1coA6ouOjx7qaGU8gHVxzylnYY4CtUNACuZZ2i/JysokHyu1fGUbvH7qYmGVh4XPCKgHVmqJWxr4piL/P2T/aq3kioWyjvowYCXpwMIxWbt28mduc2NDkHboZzOwqz34A9uB3Z1yaE+3vPbOdNDrZ/laPki4+hKMniPvfvoFY6RVOqafyV6VlZzIW+yXBMPIzEY1NPnAylgJdugc0pdXvmE8UIJ+dg3Hopy18vXwi4AUzLO0QsraHlJxfr+vbIPX3pmWlVy+xBaZCzZZm2CHnQGnlXaUCtm/Wjomr5+6WNjoPuTErZVkDEv7jK2tGssFnYDSz+aVpx4J/sD2+qmL8vyvfhv8+nliddV2S1ODieQhETsrC0OPB3Ts2bQpH8jdTHm6wmeyekgKxwbhkZmNjSD5ABtlaV4rNCvzapZwz8GtpjF0A4AbsbRC6sWJC7KwdE3mrizKxz//cbB2HNjdGXvSycd7iORvnNTKti06wU52iQ26iiD0gLO3c5tcml8w8WD0xMPtMnFuVgZ2tQffG+i1d6Zl+5bbpPvoRND2RPvWkHOUuqGsniehg4UtTZvkm+VrQUtd6nkyd2Ux6B5SysKmvy+//YmsVt4M2qc8tqNNzl68LL2d2+TsxctBk4dCfyZKz48/fXVVlq7l5MWJj4O26f67tsr52Xnp33lnsDZYof2advFbmnk8t0KflXTi1MK1DHv0Gk63NDGZjOuyNK8VWjRpJ18CG77m55Lk9VMXC8/Dzz5+H8cnYUhLg3maKaCTgyFL9FyN1He3sOIkdKarSP7GuaW5UbILSyZWFGCNlrXavuU2HpCMsbL83NKD0StPPSLTxwbksR1tQfs1/Ww+mpkPvjIpKmT5MR9lYn3QzNLvfPuO4PuMre0hlRdqDyllbTP1kH3KixMXZCa7ICcvXAp6vlrp50XWzo+l1Y7k6lKY81X7knOr/euvP/pjkHZYov1ae3oz5b6MsrRyGvboNXxP2+2hmwKjWA1UjtVA2IiX3/5EsgtLzDUmFAEpmKcP9Odn54OX6LFSBkYHNTrBELpzZkBhk5b6Ojczb2ZSDLZYLB1hZeJHS0mFLCn17OP3SUtTg6Qkf/8JRfv43s5tQYOFGkA9NzMvM9kFeXHiQpB2ROneUaH2kNLxwOLytSC/P+rZx++TdEuTpFuago4HrCUP7X31Pbn3yITsffW9oO0QWdurrz29Ocjv13uOWgq90ZcBWuZrdnVfLQsJIihmcawEP3wkd+rY5PzsvInxK+yxkthliaWkHSu0P3rmjQ9MjF8tiCb8MdeYPASkUFM+V/Dc2bq56DUEzeDv3/nnQR9MrO1LwIDCvtCrC2GTpRVSykqA+7mBndKRbpHnBnZW/bO+7n0HdnfKcwP3S3vaxmqgdz/9IugqHD03lAYeQnr28fukI90izz5+X5Dfb2UvK7WluTF4SQ1NHmpIyWrg8uOq38Pn+PXczHzRawh6nmr4ZyZ7NUg79J6DcpubNpm496GcBg1Dl2aFfz6SoHRs8kB7K4FLVGTl2Qa2aX/01oezpqoehKQJf+mWJuYaE4iAFGrKZ6b77OrD82ygh+iokxcuyUou/xqCZuptaW6QS/ML8v5nc0HaIWKjbCAqi26Mban0GOywsvJFZK0vCdmfRcUJtPu891lZMSYihVU4oVbj6GeydzXgEHLVmHr/s7mg92G9hpsbG4IHl62cq4/taJM7W1sKgY8Fh/J0Vv4tSVMaVMZasJD9tPzy+XwS+t6H2vERKNCxyR/m/oPAJSoiebccq4HK6RxfY3Qp+S0udOIfaouAFGrKZzZIKlX8GtJCpBxMCJphOrNa3iNkoIFJG7tKN8Zu3GTg4oEp+oB09uLl4NexliA9sZoVZqEcmyuf5X22b7mt6DWk5ZVrRa+h6GrlV556JGg7RPJlhEOXExbJr4wKnX3rY8znYxJZ+5I4fI5fm1YnFpoCTjBEV9ZboEeCYYmt+3CS+Hw+aW7cVPSK5PARKFgrnRt2L0mgnpQ+97EaaG2Ob8ttjYkIwvgY0xPMTTZGVagpnx2Ilpl3LTfvM1NOV540BXqS1okS/f0h9zg5tKdb0i1NcmVxmcwWYzSjpKUpv9S5NECF8KysMIw7+frMGx94LwsZuhxbnH+Tr1KIr5+6aKLcl56nut/LssON2Oe5buG60TZoGeEH2luDtMPSvgQ+Vov5mEQunRTscNgvyce/Rc+RFb1eApaqs7IyST/f1pYm6Ui3yN/95MHQTTKDfYr88nE8dRygF+89bbd7ah2SRPu15saGREwiwz9WA2EjdKz27OP3BR/T+/DixIXYSaYWnvlQOwSkUDfiBoF8ZsrpMtpQy2k10Pfjh+6ShpQELfNxYHenLC5fk+zCktM+Dai9/p1/zgOSUVZWGMadfPWxSkQDqLs6Wk2UY3vrw1nnFai+VleEPi+UZjHqHa/dYYLfx7muDyUvnDjvvDeQL/rvuTSfLyP85ZVvgrTDx6Srr4e9E6vXzIkPZ53fqxb7LOhnVI0417/S60bjUUuuGVUe6LgxtKRNtvi4dvQ9dJ8iS3s61jMfiSE6tskuLIuIyEcBE0NgV9L6NfjH3kDl9Llv78PtiZin2Pvqe3LvkQnZ++p7oZtiho+qUjqW5ppJJgJSqBu6usN1lYfPSY7l1Y0Jlh12ZvYZ5beyya7uz+CyTwMq83Ge6OA39PmBcvr59nZuC15mSyR+QGlgV35Pn4Fd7kEknTA98fQPTJRj0xKXLqUufa0Ojp4XrskYPvoSXXGidzyXCX4f92Dt03RiP+Q9x8om5j7GAbUIjFt6cNRVbNXQledxVqBTvqmc9o3vfzbnfVVtCD6uHX2PxeUVVkh55OOeo2MbZaFsPOyhpBRuRPujkFVtfPJZiu2Vpx5JxPXjo6JF0oIvWqVHX13oWJoxdTIlo0dEoukN756226Uhld8nwYXPwaJOhrlku1pZEeFT6BKGSeTjPNHM+SvfLCdqcJMEVoKF2r/etrovwh2b3QL+rzz1iLzwkwfl7MXLsYPtoZfm6+/X5UCNDeGGSgd2dxYG8a7t8NGXNDfm29C0KeUcePRxD7ZSdizqd3/62jkg5ONcv/LNctGri1qUCptfWHL6OZ/nq5rNVh9AfW5gp3SkW+S5gZ3e2mHBro7Wotdq+Oybrey9FpePa0ffQyTFCimPfNxzdL9CfbrJBSy7CftCj19hl/ZHOrao99VAWqnghRPnnd8jadeLlod2KRNdanF5JRHH5rmB+1fH0vc7v4eOpReWrtV9EhPKEZCCeZopcG5m3sRqIJF40X6fK7W0lnnImuavn7q4FpgjHuWNj/Pk5IV/lZWcyNLqSr4ri+4TlvBLP18NFoYqPaaTv7qUXsvSxHmvuMH20NlhhVU4hRWwYWeglleuFb1Wy0df8sPvfksaUiL337VV7mxtkcd2tDm/VxxaWrIjvVkaUiJ7A5Z11PM0ThkKH9eMnqdLKznnh1dfe561RDJ/Xa8an+erclnV4GMye20fx/xxSbe4Bfx9TtpoaUmXEpM+E6p0z7VQe6/54mOFor7H8so1VkgZo9feQ0ZKCcO2JCadwm9pVhFJxGqgOMnZSsfRL05cSETwZW0izH1CTMeNyyu52HsvWeBjP9boYoQTMcpowyYCUqg7i8thN7oXiRft97lSS2uZu9Q09zXBER10u5QwRGU+zpOrJeWslgPuX4Fi+vnqNVP6Wd0sa5nZeXEWOdZi75dq+ejX9Jjois/Qqxz0unW9fn30JScvXJKVXL4MxUx2QV54yz0jMg5dVXFp/mrwso4a4N+UEudsV98rk1wDub6uXR/7Wfo4X3WCX7msavBZjiZuwN/nJGecc87HeaLH9Q9z/yEi4fZes0Sfa5au5cwk3iFPr70vr3wT/J4D+2qx2hjh+UiUC51s55vP6jgLS9cSEXzxef1roO9qjKQ3C3yshmfVeLIRkIJ5mimg9zvXLHEf9EH6l6c/jx3t9yHOHie+JjgO7ekuDEYecigBg9rRzyPd0khmp0fPvPGBt70v9DMKde2UTtxu3dzk/F5xJ5L1uOraCpeVnz76NV0t0tiwKVaZWF+eeLg9+PVbugpoKVDyge4F5LInUJSPYIM+LMaJ8/tamRSVdSiV5ytRJvrvaHCco/DRv5bWmW93KJ/iY/IomhEdh89AkK6cdgl6+DhP9LheWVxOxMStrsaLd58gWcgqvfZ6O7clJIMfpXyuftExNROoyeJzD5sri8uJ2D/x+b0PSEe6RZ7f+4Dze5SuZq/34IuPMb0+xyZlbs3HHtPRuUaXctOwjYAUaspnmRGd9ImzNDguvUlo+cC3Ai8b3dLcWPRaDZ+rGa6tph+T6WqLfh5bmpvI7PTI594Xv/vT10WvN5tmZuvzQMjyn3pcdRWBy6awPrLT1vYpCp+t/vqpi/Lrj/4oKzmR3//blWDtaPG4CXOcccHM6l5AMw57AkX5CDZE80BcMzt93Id91Kr3Z218tsmlTp746V9LVzVemo93vrjSMaOeKyE/q7XyrO4Taz73PEvKaiAfE1Cle/SFToLAGg3Cnr14mVJsCeVjPKD9q4gErxQA/7SPjlMxQYMveu8LPYcUl48EFb1/JiX44mNMr++h+wbravJ6pfswxp2D0ioh9X48UI6AFGrqxYkLsZfg6kDRgtLyVqHopMDahEL1QTpfGdGvvTNdWGFR75muSUPpiNrwke2jdOWJyz40PiYHdcWp9iDnZ6sPAvkSd9WLiJ/JwUI5xdXBr06ghvDy258UkjBcAnS+fOfbd4jIWmDKJUNNV768OPGxl4m90BmmpbkxLtewj/vwb478SH7/0kDhs/EZPKxWNFDoWmLSR/+qK+t1zyaXvkXfI87G4zqxoIdi1jGQ6mPl5/Ytt4lIdGeDMCvrk1ba2ccElJ5rjQ2bEhGksybOWEl/trdzG4EGrEuft0ImdaF2fIwH9PlEOebsJErSgi8+t+XQ53Mfq/JC8jFX8eLEhcI8Rb0fD5QjIIWa0qW3cZbg6j4NyjXD1EcZmF//9o/F+xI4v1M8a5mu8fYl8CH6cHbywqVg7UA5H5tto5yvbJ+4vEwOlkwah9xgvnQVg04mV8Pnyk8tSxeqPF2pJsdsCB8PAxoM03vOx3/8qur3eOvD/MqXhaUVL5/RSs59c9tnH79P0i358pT1XoJp76vvyb1HJgqfTcgJ/+g56prp6rN/1bGRy4o6HxML+h56WFy3WvDRr+leo3p2NDdW/wiok67bt9zm3Kdo+cR0S2PsCT4LfE5AUbqvNuKMlTQp8tcf/dFEqXb45yPYoM9boffZRG346OfXqi/kuextmVQaZCid86s3voIvM9mFSEWo+o5c+piriM4jJy2pCQSkUGM+9keJlujLr/Zoc3ofH2VgrExMlj60+thQ0geXDHHUTnSAR+17W0r3FnG5gn1MUmrfrBPJrmU3fQzCdWWE+vpq9Q8mPh4av//SP8m9Ryacf96naOmmHz94l9N76IqkFyc+9tUsp9K5m1dX7sS5X/m60x3Y3Slbmhslu7Dk/JBUukos1G24dOVcyLLG0XM0VBlSkbVz3oc4fZsmQunQ0fWjObC7Uw7t6ZbX3pl27mP1+tuUEueycJrhfX523nmCQRMPsgvLTPCv0qDH8kqOkn01EGespGWNtcyWj1LNsMVvUDnPznwBrPjl6c9lJrtQGMduDria3Qc/wZf8WM3Cthw++Cj/WZrEX+8rgnR1vr66iM4j1/s5gnL13RPCPF1662sJbpyHAc38D7kCwJfSbN+QnTNZYHZpreula7nYAyT4Fa0378rHQ/THl/IrXfTh2XXA6CMDSldG6ER/qL66tH91XZnkQ3TV6f9yvPfpnjH6GspzAzulI90iW5obnc+V0jtdnCBQ3ICuBm+1DXd5KDnponTVeMj0lGipzLgJKnEmO3ye63H6Nl0VqFyTs14/dVGe/9VvY/WxWnazIZVyLmuq18zArnbnayfarydhHw2flleDHnFKzmJNNPHHfaxUfNfxUVoYyaOrrPT+a6G8P2w5V7JKud6TeP0EX4rHavV+2WgCg766KB0n1nv8RbcCiLMlAHvUJxsBKZgXnXCKs6+Aj+CYSwmppCMLzC7dQFWvoXrPskkSndjb1dEqDSmRJx6uvl/zkZ1Wev267lPkY7WWrib43Z/+XUTcBqA+jklpP9/oEPXw0Q6R4gdW14cSbb7PFTwu+xRpAFUnbnyUVYzzoBY3oKvly7QNLmXhfJwnVxaL+3WXQ+LrfI3uVxh35XacQFDp+Rln7BanbyvtO1wfqnWvzoaUOF83WrJPE5hckg/0mnnlqUecr53SMbhL/5o0OlZrT29m30+PfCTKaGKXcunnkXy6+kXvv/U+iYxiPsZIpavq6/3Op3MKceYWSoMv9X7ZaClkl5LIqt730SrlY0EAY6JkIyC1KpvNytDQkAwNDcnIyIgMDg7K+Ph46GbVPR91maM1du9sbZHHdriV7POhdK8ml0m5WkyYhizZx1yCXVrTXB+MXDeZR+3c+2dbnPs1H5MtvvhYrXUisseQ66Scj2NSOsHvkummmYMvTlzwVi7TtavVe2icevV6r9M26GoLF3HOFV/3Oh/3Ye1flUvTfJyvcTIxfbZDpHi/wsaYKeJxAkFtJcEWl/Kfymc5J9cVqHosXvjJg87tKC0P9JFj8oFvupl5vfLRl2gpxJnsVVnJsR+rLz4SZTRYCFxPaTIXT1vJ4mM10L1/tqWoL6n/cyRV8lq9pAVf7mm7vegVa+W745TxZtV4stX3U4An2WxWent75cknn5Th4WE5fPiwjI6OysmTJ2VoaCh08255ugFySiTWYEAfKuLUZi99KHGZlPMx8VMaGHOZ+PGVER3NAuGZzZb5haWi/2Y1mx26aemJD2ed+wMfky17H87v29Sxmpm912Glloi//kS5li3yUau6tASqSxxXgwQLS9e8BQ1dVxJoBmJ7erPzZ6Tl9vRQuExm+zhHtjQXJ2O4xqf8BIKKA5cuGZE+rmEf0xp+2lF8TOJuPBwnEFS6iuG2GNmqcc7b0iQQ1yCQj6BY/847pSG1Nk6LszIpzjEpXbld79NyPvoSXW2p6r2UkxU+rpuTFy4JQ+dkq8XqFyTLlcXlolcXupd5UiyvXCt6xdoYL07CT9KSIHRPrNK9sarhs/oC7CEgJSL79++Xffv2SU9PT9HXR0dH5fjx4zI5ORmoZfXPx4OaboAc9x6uGYhxouylkxou9VD1wTPO8tPSFVIuD6/62bz89iexBuLRchYp7hGmlF4zfDx2RK9Z14lgH5Mtum/Tb478SKaPDcgrTz3i9D4++vryvZqq7/V91Kou3ZPHhQYnWpo2xZroj67Cdd0rUEsgzmSvFlZtVUvPNX0QcJnM9nGOlD6oua768hWAiUuP62vv/H9y75EJ+f5L/1T1e5QGPeKUUxQRb4HluCtyfQa540zwx8mMfmI14B83CPT6qYvyly/8o/zlC//ofDx0DKyfiksik5ZV1YQKl2u5bOV2nc/Q+ehLCHrYRXAw+XyMTU48/QP5/UsDHlsFS3T8HWfP7oFd+fGAPuukW5q8tC0UHePFGetpJSV9tnAZv1qiK9FLV6RXw0f1BUt0HOyyNYEqrr5Q3+cIyt3yn2gmk5HJyUkZHBys+P2f/vSnMjw8fJNblRw+HtT0Bq5BGNdlsD7aosEXvTe4bG7rIzBWWn7GJVtAA2OLyyuxBuLRFWdUhPPHx2Rc6XwTH49NvspBufA16eujf91yW3Gg3WWvBr1fuO41KFJess+lf9UsyuWVXKzPt3/nnYX/7/qgVrppsEuWWmFz+NVD4fJA4GP1mk7cbkpJrAecA7s75dCebnntnWlvq/riTKzrue5yzpeufG3b0uzcDh9laVSch0+R8CVJ9ZyPsz+CBvx1csK1jOFr70xLdmFJsgtLzsdDx3xrTai+LZrhfXXpmnN/X5phXu+lhH0khpQGPZKUHV3v6n2CFDfmI1EUyab9QJz+4LEdbXJna4vcf+fW2BV7LPARaFD335U/JtFnnnqkK9F9/ju2bq7vwKWe9762XImzPxdsuuU/0dHRURER6erqqvj97u5umZyclGw2exNblRw+a+9rmbqQJU80O1sfn2cdJo98TNzG2RhQaWCsubEhVnuiWQv1nsVhiY/JuBd+8qB0pFs8tgpJ42vS10f/qply2o+4BIJ0Ath1pVeUrm56fu8DVf+sj2xKkeL+1fUBR0v2pVsanR8eXzhxXmayC4Xgh8sDgY/Vazpxey0nsT/n+MGX4vMzzsR6nEr8ep1sSrmvtvQlumI6rjhjJS1Fql2IyySS9o06RnLZC1WDWmvnhtsg6dCebkm3NEm6pSnWWG0lJ4XMW5drWAP+Tzzc7tzfR68TX5NZSROnxCTW6Iq+Z974wPk9dIIRyeUjUVT7ej1Xylf8o55p2ernBnY6v4eOOc/NzMtKrnh8X498BBp0tbUek3rfK8hHX6JzjXET8a3wVR1D1fvxQLlbfsQ7NTUl6XR63e9roOrMmTM3qUUoVVpzN84y2LhKl9G6tMXHxG3pJpAuE2E62RM3QyeaPVzvWRyW9HZuk5SIzF1ZdM7gf/+zObk0v+C3YfBCJ5FD10L2lRnqo6SU9o3/9+qk548fusupHXFXfOlg9zvfviPo6jWR4v7V9QHnyyvfiIjIluYm5yDOUskksst9QxMp4iRUtDQ1FL26euaNDyRbssdetXRCv2lTKvbEeutq6ZZWhxIuuq/W1s1N3oLCLsEX/Xn11oezTu+h1/D7n805/bzIWmBa+xKXYK6OkZ59/D7n46oP4ssxArki+b7xX57/a/mX5/86dn/U0uQeYPMR8Nes6l0drV6zZuuZBlDjrF5DOX1+nDjn1heJrD33aT/vus8m7PIxDtZgg84RlK74R33zMXcTZ7W1RT4CDT7K11viI+lc7zmaiB8nic8CX8dE1fvxQLlbPiCVyWSkrW39hyENVmUymZvUomTxMTmoGZm7OlpjZ6f4og/0odsSZyJMB1fvfvpFrCzxaBlD10kslDt78bLkJD9Ycx3sRYO5PEj74yPrtlDyLOW+Z4uP/lVLoJ28cMn5PUT8lJTS43rywr86Z5j5eEDSVbjnZuadj+/f/01+deLf/82Dzu0o5TpZ4nPfwpSI82ejgTF9ddG/88+lISXStqUp1jUYnaB0vW9p4HJLc/xVQXECQfqz97TdHrtfijvpcmB3Z2FVkuueknoNT5ybjX0tx+nffExA6bXXnt4cvESPZt1+59v/KVgbRNayqn/3p3/3Vh6y3ukx0ZVRlKTxw0cSRLTEpK/V17Dl1x/9UVZy+VdXV77JnycpcU/agV17X32vsM+n63OBJg/ravb6nzPJ/3uuLC45HxNdSdjUkAqeAOjDL09/LjPZBfnl6c+d30MDl1qaPE4Jegt8HhOR+j8eKHfLj3jn5uauu0JKg1UbKdn31VdfFf1ZXFz01Mr69eLEx6ubqH/s/B6akXni6R/EulnpYGLvq+85t0Unfp4buN+5LT4mkbUdP37oruAZptqWn//Ng3U/kLBEV0i1NG1yzirRYO7eh9t5kPbIR9atDuSXVnLOk64+9nvR7LS4G3f7KCl14sP8cV1YWnHOpvKRiRVdtOb62fgrV7vWGNcVUj5KSMyvZurlxD2L0eceUjPZq7GuQd3/sSO92fkz0sBldmHZuS0ahH3/sznn80XPtfOz887t0HHJM298EHt8kssVv1ZLgzh3tm6OHUjV/dLi7JsW55jotTe7er66lujxkQShbTk/O+/cr/lohwYcF1b3tqv3rHE9Jntffc/5PPFRHhLlfvenr4teXegkcr3vdYb1+SixrKtgc+KetAO7zq2O92ayV53vn4VzJBd272BfdM/T7MKy8zHRlYRJWVF4LpLQ6EoTvbdudq9qYYnPY5Juaar744Fyt3xAaqN7Q3355Zc3/Dt33323tLa2Fv4cO3YsZuvqn26mvrC0EnsVQNyJkmiHGHcT8/c/m4v94Oljo25d3RS3LivZXPboCqm2Lc3Og1bfG0kiTyez9dWFDq50laPLpKtO5FmZ0NvS3CjPPn6fl4eskA9r0TmJ0BtdRzPlXdvhI0i3OVIqz/Wz8bHyLBo4jZM5qPs/uuwDqbRkb5wsRj/B7TxNQHBphwa33/ow/qqkuBtdlwYd40zsxWmL7m1wIsYx0Wtvc8wSkxqsP+FYBjHaloFd7c79gc92aNlNn/uOhaDH5NzM/GoC3oWq30ODsD/87rcSMVFpRTThxvWeo3sw6iuSZ9fqZ7srxmes50dHenMiSo+hWGHlt7gnZcUdG1mjJed1VaDLM0rcMtHWRMvwu841Ju2YdKTzcyUNKY4JKrvlA1I+ff755zI/P1/4c/To0dBNCu6JyMbSrg9qvsq3RAeaLu3w1RZ98BTJOWeaajtE3AdG33/pn+TeIxPy1urDtGvmrs8AG9b4WE3wwonzMpNdkBdOnPfVLMhaVthMjMlsHVxtaW6MMemaKnmtXsvqpHpLzL35dPLWtW/1xceqMb1vtTRtcv5sfCVSPPv4fYV9ReJm3MZJpHhu4P7C6mAfXO8Z+qy3KRWvfFIu8ur62bSt9s13tW52bouPklK6QuPsRfc9l1RjjAC5SP5YnrxwSeIsJigNOsYJCMdJyrjqYW8DXb2m10/Ih2ltyytPPRI06GHpmNSCy2o8H6tYUS46Oeg6PtE9e0v37kVy3PtnW6QhlX91pefHlcUVgsoJ1LBag7hxk3tpuaQlid5/11YREWlsSHH/WvXtrc2F/8+8WN6fvspXDFvJcUxQ2S0fkEqn0xtaJbV9+/Yb/p2tW7cW/Wlubr7hzyTd7//tiqzk1jLOXR7UNIDzQHtrrKyjP8xdKfx/l3b4asv/Ws2I1uxfl42/fWRT6mS6zhu5rrLwsT8JykVXE7iWx/FRhgK1oZNyGphy6Ut09czyyjXn4PZzAzu97Ifno/Sfj+CY1vHXVxdaJlaPjctn42vFyYHdnfLCTx6Mde/z0RYfJQhLeyGXYHvccnCVuAYvfQSmP/7jVyKS7+9dr+GJkjGFy2or3Qdr6Vou1p5y//1Xv5WFpWuSE/dVX9GSmfm2/GvV76Elmn/2D791nohuX83qbGnaJJfmF+T9z6oP+Gk7Xn77/3V+D5G1DFN9daFB8r2vvud8rvlYSaD8lTUNS49FuqXROfvdxypWlNvSXFwGyvXZD8mm99ATH87GrqCCZPJRutNHwpwlOk+xtJKL/ayUlGMSfR5wnRdLWqJ3dA6KY4JKbvmAlO4RtZ65ufzD4/X2mcL6ovVCXR/UdIP73/3p32M9vGYX1iYoXZdL68anH//xK+e2lI5lGjdVv7ohzkbd63Etm0JmZ21EzwvXiT2fk0fwSycHRdzL02m5TZ1Edglu+9IQ6cZcH+h9BMeWVtb25oq7Z2CcCVMN8DduSsWeaIw7cattSaXCliAsnUw/P1t9PXFLJU98BAn0QU33nXDp67VUX0d6s3PJvtKgmmtgOTq+cS2nWDpG0r2GqqFjT30rl4loPSYLS9ecy9Sd87DPmMhahulM9qpzn6arWM/NuO815qPspq7Ov/9nv469H5UFX175RkREtjQnY7+HJNExkvaNLvcNSgUlX/Re5TrhyXmSbJqg0h5jvLe4fK3otd7pPEVTjFVjSROd0XOdF0taond0pbLrMdF9qq8sLpM0kEC3fECqq6urEHSqRFdPdXV13aQWJZfrg9pCZB+qOKI3id//25V1/971+Fhx0lASfyrN4NuIOBt1K51ES7c0xhpEJ+3GaUX0vHAt53Ti6R/I718akBNP/8BXsyBrg6smh2Cy8pHt8+6nX8hKpCva7LCyyFfWUbQdL0587PQetciYj7OJahw6ob90LScz2QX55enPg7RDZC3Z4FpOvCcyVOPK4mpgbPW/XfZg09VrcSd9o9eu+/6J8Utmlq6ucAni6DH5zZEfOR+bdEvxOMR1laK+T7qlMejEfFND8d4GoQKY0fFenD3PomNO1z7Nx/5r0ZHvTHZBfvYPv636PUoDfT72TwvpyuKSiIjMXVl0DtJRXrk2NGFOJOXcN77/2Vys1Y2wr3hOwO35PikrPlHZpfm1fUdd+3mtahHdG7aeNa4OcBpLJ7aqoEkD97TdHqu8uRXR3sM1EVGf7V230rBGKzCkxP2YHNjdKVuaGyW7sMQqqQRKRo8YQ09Pz3VL9mUyGRER6evru0ktShYfKzR87XESnZBwfaD38e/R4IJufOoSCPKxya4OruYX3EtbiUhhD6qQqzOSaW1Yoxm41dJVOPU+wLNmJbdWusH1+PoI5OrKl6bVVTguK4tqEVC+GjN5II6494laCRUYExH56upS0X/HKavog/ZscUrdxRUN+MfJ2Iu7+u2nj969Og74v4Kurvj6an4coBt2u69SjB+ki2pIiex1CCb9+MG7CoEo1+Na2pc0OUy63LG5SURE0i22Vs/4aovL1G30KMYJ0lmh1RcWlq7JTHZB/ptDkI7yyrWSK3mt3okPZ51XSKI+RMdnccclPHclkyZQ5USckweStopOk92WV9z3RNekgfOz84kryUYSQ56OkeKMbl4/dVGuLC5LuqWJ0sYJZHPm5iZ68sknRURkamqq4vdPnz5NMCoGHxuF+trjJJpp4BpQ8vHv0TJFszEGvRqgcA1UiKwFxlIpiVW/18fm8CiXLQoUut3GqblbGzpnpA8mLteOj1KXhVrmKfeyf7XIxHINlD/zxgexSzh959t3FP23n2nx6pWungvVDpHyEmguC/v8TLLYmWyNrorSFQ7V8pERbaWP1vFAnHI0vkSTkFwDJz7612jgtiPdIs8/8UDV7+FrAioaC3Ndmbt3tdylS4DPp9YWm0G6kHysuka56D5/9x6ZkO+/9E+BWwSLoledawleHb8+/yvdt9CtUgBsKg1UuiQP6Jjx/c/mElGutnTvUZegvSZ2DexqT8Q+itFqA66J2kkLXEb7VNe5xtfemZbswpJsaW5kFWoC3fIBqZ6eHunr65M333yz4vfHx8dlaGjoJrcqOXSjUAslOXQ1gUg+K9mFj3/PHZvzN6s4k9k+sv50M3UdU0WPj6ukbEppjWvGHhtl3xwu9cB9fDbR/ZJcgwV63ce9/qOTnH+Y+w+n9/DRv5auRAoVArmWK/7Nru2oRbatSxK+j8BJtmQ1rsvkq4+gpUh+b8r12rVRPj4bXaEo4p5h6oMmt8xmr8ZKUPHxIN225baiVxe+732ugUdfZZyiJVGf31t9YEzET7nL0iu2pan6vUeTNtniw48fyq/o+/FDd4VuSqKUnq8hV+XCruiQSEsLV0urhWhfHbJSAGrPJXCpY8akrLr00Z/qGOmxHW0eWhRe9HnCtZRh0sp/bt/SXPj/rnMNzGcl2y0fkBIRGRsbk/Hx8bJVUoODg3L48GFWSMWgWbd3tm52nrjxl0G8dmN4ceKC0zvokm2XvS+U6+RXVDTrz1Vpdo8uva5WjNLB2CDXMmRJG9RYZaEeeD4js/p+Ta971+tfRR8mXAecA7vaE1HCSWTt3xLXixMXnD9b5VJqrJSPhwEftwpfSS7RPSld2+VjbHLywiVZyeXv5WFL3+Yi/+t+Dfu450THN67jRmv3Pp+B5ZD/puioMV+54P6q38PaZ2OBjxV9KOcjIcXKykLUTjQ5Zn7BbcV04yYb+xaiNrQf0PG0S+BSx/NJUfps4VJ9aO+r78m9Rybkv/1DfmXhC28lZx/FLbdVv0d8EvkoWc+4MdnCz6IZkE6n5ezZszI6OipDQ0MyMjIig4OD0t/fL8PDw6GbV9c0U34mRtbt9tUs2e0xsmXz1h5NrjruoaH7Lumri6aSQavLhup60+9Iuwf6NLtH23NP2+1Vv4eIyAs/eVDSLU2Sbmki49Wj6Dgv9J4vWJ/rNexjMrs0Q8+lX/OVre5jdaSPDH4ffEwen704V7SqwZV+pq73LBE7D0Vaqku5lDypRdBys8MqDxE/QbrSvj0VqJxiaXLLcsC9bKIJGHH7yDjHRidbUiKxV6/F7e+1LT6Cy74wOZAXLdEj4pZARPbvzVH6WW2ElXEJaijSrbre+XRfylZKkSbSYzva5M7WlsIJ4pK0Uzrec1lhbMnzTzwgHemWwrjkd3/696rfozRYseTjwSmg6BjNdV5Ng3R/+cLbiSjtWMxtDMvefMlGQGpVOp2W0dFRGR4elsOHD8vo6Kjs27cvdLPqno8ycB+t3qw+ihlhj64AcN3jRFd86auL5/fmb+CbmzY5791y4ukfyO9fGhCRlPMkh2b36KSg6/E9sLtT/uX5v5Z/ef6vmZzwKDomY18Bu1yvYT8TUPnzoqVpk3NGpq+sIx99vQ+axdiR3uyc1fzy25/EKlsm4q800BOr/5442bb6UKTdiMuknI8AqgY/LYgGcy2scFQ5h2fxWuxDFXJSoDwBo/q26MOrXssux0Yz3nMiscvrxO3vn3/iAWlpapDllVzQyQkdi2xKCZMDq6JVD1z3uyX79+b4+mr1FSqYCEu+6P3O9WmLUqTJpmMJnTNxKdUevX+6rjC25P3P5uTS/ELh+llwKFNZmmNT7/Md0b1GXefVNEiXXVg2s+1JHMWB13h7ov+3f/htwgJ0ECEghRrTIFDTppTzSgKdFGiMeZOKDhJ/96evnd5D91nQVxd6A9fBTJyJ3DiTHFYmkFFZ9HR33VeAB2m7dAJKxH1iT6///p13yp2tLUFrcEcD/q7l/3ycr5rFGK1ZXS1f+2pFuZbd1H9PnM9WH2500YtL2Vjd66i3c5tzO5Q+cLocE92nIW5pu2i5FZdxiYifwKUGUDVI6JIs4yO4bXkSwCW4qw+vIuJ8bJY9BuV8BBwWllYkJyHLOq6tAriWi7MHanIRVLKltFdzSSasRcAfdrnONRBUTrYr3xSPm10Wkev9c+vmpkScK1pCW7lcOXdszldOaGnaJB3pFuc9Mi1yqXggUjz/IxIvCd4CH4HX6LNnvQfoUI6AFGrqh9/9ljSk8hu8r+SKNxLfKL2B66sPriXQfEz86A1cBzMupXF04lbE/QG4dNLYdeqFoEdtRDPlXVbgiPiZMMX1xc2IjDPZoQ/AZy9eDlraSiTf16cknwnlejz0WLz89ifObdFz/tzMvPOqBl/7akW53nOsTIb52ONE/y1bmhudVxJoeT3XMnsqGmx07V/XkkrcyykWysCsPsrHSXaJo3R85bKKTkTkmTc+iF1ixEdoTMdqzz5+n/MYyaWkZK1E95BzneTwQcf0lgOYN5seC46JfVpGvhqUU7y1WOr3YUfpqnGXMVLSVtGV7qfucuXoMXluYGcignTRZzXXrmTrapBORxShngtqwfV5KfrsWe8BOpQjIIWa0kksvY+7LOetxR4nIR8cSztSl9I4PiYpdWJBhdzYHeVcy0qi9rT78DlxGmeyw8d7xL2O3/30C8lJvo9//7M5p/fQf4eI+94xVxarX/1Tysc9x2Vz30pqMRkWao+TtX0gc3JpfsHpPOnf+efSkMq/hqal/uKU/POxkkc3yo4GLapVOh6Yd1hFJ7KWcBMng1HLVMZRi2z1kPGGaEDbdZLDR/LQu59+sZpQlW+E6x4JSaJluH/80F0kZxnTvlqaNc6ly8qX5IvOCbjOD5CceWtxGSMlrS+ZLVm97vJskbRjEn+/+7Vn0Ccebk9EMoSPIN2hPd2F54IkBeiQR0AKNRWdYHRVi5tVo+Nsh4/gS2lH6jL21ePa27nNeQCsEwvKNSeM7MHa0EzOlIjzxHjSsrGs+LufPCgd6RZpbWmK3R/46N98vEfc6zgaCHItKaX/Dj1vncpslYx2XfpXH8dzbZ+/eHy0pXSCxWW1lo8Sk+dn49dF97FSS2Rt9Vvo/lWvO9eygSIiV1c/z6uOq/BEyscDmx1LTGrGbGnmbDX0M9bz1iW462OlVmnf4bK/l69Jyqa4ETrxM37VlYV6rsTd2zVJ3v30C5KzjLk0vzZhylgY64p0r40Nbvc+KlIkW+k4JO42EklQegxcK0EkiT7niLhXGtDnrVeeeiQRwbpokM51LHtgd6e8sDr3wnxj8hCQwk2h9yyXzCNfD/TFEz5uHaKP4IvuxaFcsgV8luqKK2nZLVbosubNTQ3Ox5bPpjZ8BE588jH5GvdciZY5cZ3M9lGKtHR1RejqK5ox6LqHlI/7n89yt3EmtXV1sA4D7thcfbt8JUDoeCAnIr88/Xms94rDx71cz/knHm6P3R7d77N/551OP68Zs6WZs9XQz1jPW5dsSB97jZWWTdHVFtXwtYJ8y23xr2Ef105pGdOQ5QOt0InoK98se9tnD37oPeehjlbGwlhXtFJJnBXPSC6Xcp9JV5rcTdna4ipILvv1JlE0SPftO9z3d2ZOK7m466Km9GFcJwVdVib5eqAvzqh2m6X00Rlq9q8PcSYYdDJ9V0erNKTym6u78DEZjnI+ykGhNnwETnzyUSbLpzbHkgU++vpXnnpEpo8NeNnXI04waO+r78m9RyYK//2db9/h1AYf5di0r9dj4RocE4l3z9EHeh0PuDys+XogiY4Hzjmu8vBxvuo51tu5zfm46jn/ylOPOLdDS/atFPb7vOT0PhqMdg1KR93TdrvzBL9m7sbJYtbrRodrMw5BNk1AihukiLOCTvm4dkpLO4YO+Fugq4OXVuJdO/BP7zm/+9PXlFPDhlCRAhvBXmNrCSo6zLr/rq0BW2NDNHBJfC4vGqRzGUcj+ZjpRE3pw7hOhLlsEu8rI9pK1qL+e9YmB6s/Jj4mxHVy4t4/21L1z0b5yERGOZ2Ayi4sEewzxtq+aTrYC7nRZ0dk9YDrgNNn+U9dXRFndVCcz1mDHFrCIpohVg0f5djUjx+6q7B5sKukZKgd2tMdqyScvkfc81VXV0ycm5WZ7EKw1VqaKKNzLK6lV54b2Bn7HNPr7vzsvHN5Ri275Fp+SUTk/c/m5NL8gvPPi4j8+qM/ykou/xpH9BiEnOTwmVCVFKVlYn301fBDS0wuLF0zNWaDLXsfbpeUuD2Pq6SMjVCZj/0Sk7bPmCao6C3QNbkrqXSV/a0uWuWAIB0qISCFmtKH18aGTdKQcsvyrEVG9HLAJ2r99+hGyM8N3F/1e/ioVa0DoxMxA0o+MpFRLnq+Wln5gjwr+6bpNfy7P30tImFLSvzmyI8KQakOh9JWIn4f6H3u7+PyOWuQQ1cjuQYLfZRj0wn+sxcvOx9fHw/S+plYcGB3p/zuf/5X+f1LA3Li6R84v4ev83UlxgO9j89Gk4f0Lu66stDnfna6D5XLJtE+VhjrylPl0q9pFnXcbOpoHxQyMVs/Gz07PGxtVfe0j9ZrptVx3wj4p0mQLU2bTIzZYNMrTz0irS1NsrC0wh5QqKh0v0SXMZK1ZMa4SFApF53n3NLsHuBOkuh9l6o/qISzAjWlkxzLK9dkJZff9DeUaIdYmtF4K9KBkXIppyjiZyUCyh3a0y0tTQ2SEpGBXfH3BoE/VjIh9Rq2k5GdKnmtb3E+5xNP/0B+/9JA4b81aFgtH+XYtETtlcUl58CFjwdpPZ4WvH7qotz/s1/LjiNhy81qkC7OPps+PhudWLAwMtLzRFdaugTpfASkB3blAw27OlpXJ7P/c9XvoRs4u27kXOm9XFf0ff+lf5J7j0zI91/6J+c26KoxPU+YjFrrozXoyL4RdmgGf9uW2+TS/IK8/9lc6CYBqEObS1bPucx5WElm9EXn+HTY6lIOPGmrxqLJxJSnyzuwu1PSLfnVYi6VspB8BKRQUzrJoQ9qWj4hhAO7O2Wvx82/XenN97//6rcyk12QF06cr/o9dOl4nCXkOjDSAYTrptnUza6NA7s75eOf/xf57KW4k9GolTgDaR+DcL2Gn3i43cQ1aOlhy0omos+Se670oSi7sLy6H9XHVb+Hz8/W5yS9q9femZaFpWuSE5ETAcvNavDlwdUVdC41+H18NvoeynVFj5XJBR9JAxpo+PLKN859yfNP5FfCP//EA87tEMmfr0ur0R/XMsvaD8SZJCldNeYSQLVyjviWXl0ZlWaFlBknL1ySlVz+nKe0OK7Hx3M1kuu5gfuL9t0OWfHHinc//SJ2qWcrz2q+RMfhyUjN9CVX8lqdpI4bkUdACjVVul9S6O75sR1tcmdrizy2oy1YG/Tmqzdwl4kf3Y/EdV8SkbWBUdtqORzXpcVJG2ABGxVnIO17xYmF7F9LfYGV4JiPkntxlU4aLyxVnxji87PV5AfXJAgfrOwpqXQVkMtqIB+fjb6HJqi4ZLqK+J1ciFsC1Jc4fYmv6yb6u10DqNoNxKmu7GOfwhdOnHdOxrLs66vLRa8IrzQRhNLiWI+WZCstzQaIrN3L/zD3H8Er/lij3arL6m0rz2q+RMd6rgvIkxh80ZXjrivIkxa4RDECUqgpvYHr0ubQtUN97L0Ul958dZLF5QaupWR8lHLzkTUL/5I4IEmaOANpn4Pwt2LuA+eLpXPWSnDMT8m9eHS/wjhl4XzQ8+OettudM0x9nWPRshquJdCSqH/nndKQyr+68NmvxRmb+DhP9D1CB/pFxEs/9nc/eVA60i3ydz950Pk9optTi7iVv/a1r5YVz7zxgXQfnZA7Wzd7G5fDD00I0Vuea2lyJJ+WZCstzQagMq2Q83c/edB5P1Yrz2qWJDH4os+drs+fSQtcohgBKdSUjwkon64sLhe9hqA3398c+ZHzDdznJCdlRmxK4oAkaeIMpH0MwrV/1azfzY6rGnyxEPBXloJjoem51qAPAg7PAzrpGme/JT0/zs3My0ouX/6rWr76xUN7uguH4Q9z/xHrvXyIuzLJFy2zHA3YVcPK5IKP80Tf48SHs6ulLi94bGH1NHDqGkD18dmUJlQ9RDC3UMbw0vzV4MkHKKbPSls3s38F1vfMGx8UVo5/59v/KXBrYJE+U/zwu98yUSLdgmiVDp631sQdzycx+JK0RCT4RUAKNaUP9Odn52NNcvgSt0P0OckZev8ZRZkRm5I4IIFf2r9uaW6UjnSLPDewM3STzAgdHLMYEFte3fxleaX6+59OuroEkVTpHpIOzfDaL+qvv/JNuHufniff+fYdsVYm+aKbVFsoaah7fu51KHdZi321XPaB89kPaOA0ZAB1bQIqH84tXTG1EXE+V4u0YsGdrZtjB+1RG+x1i+uJjmvilMJHcunz1skLl0yUSLeEBNpizw3sjPVMbiWxy6e4JaM5x5KNgBRqSh/oH2hvNTHJEXfJqM8OMc6EqY92aMb7HZvzK6N87A0Af5I4IIFf2r+GXnkqkp94XVxekZSEXwlrQeiAWCWtq6tgWx1Ww/ooE1uane5SPclXvxi9dy65RMY80Xv5R6urxkLvSxB3hZRPcVaC+9xXS1ckuawG8jlmtLDCX8UJ+FkoY+qT/nsuzV91DtpbTGAAbhV3tq7tU0jJTVSi97yrS9diJ2cljaVEJtikq5T1tVokaScbASnUlD7Qf3nlGxOTHLqXlb5Wy2eHuLh8rej1ZrdDM951g0GXTFcA4Wj/evbi5eCZQ6+9My0LS9ckJ+H7eZF8UMxCmVhL4mwq62MSWbPU9z7cLh3pFnkhxl42cUXvnSF3FdF7uZV9K5hYKBdnZZLPMaOFkicaOPnl6c/JEl+lx0QntV2Su8j+rQ39bF44cd5E2U3YdGl+bZ/Cx3a0BWwJrNLnLd2XjsDlWv968sIlEwlVVnA/Lxd3lTJJ2slGQAo3hYXItmYepluaTHSIzY2bil5vdjs0431XR2vwzwa1QdbtrcFC/3poT7ekW5ok3dJkoi8JvdLDYomguHvQxKX3LQsTPtF7Z8iK5npM+nf+uYkAaujrRsTPfmVW+Bwzxl3h74NOtOg+cG99SJa4roadzeYntV2Suyzcw5NIz1cN4rqU3UTyRYMLTCKjEh2XnL1IEobS/pV+tRiJXUB1CEjhlvHaO9OSXViSLc2NQSPsGiTY0pzPiL6n7fYg7dCM958+eneQ348bixtQIksn2fQB6f3P5oJnDh3Y3SnPPn6f8+pT30I/EFjM5jrx9A/k9y8NyImnfxC0HZqt/sKJ81X/rK8g++unLhYm9kMF6KJOXvhXWcnlX0PQ47p9y23BH6R97Ffmk5XgctwV/j5o4ERDYqmQywuN2dy0yTmoZPF+kQQ6DuhIb5aGlMgTCdm3DH698tQjhb3tmERGJToumcm6l2ZNGh0PPLFa9SD0GMmC109dlLc+nGXFWAnmo3A9BKRwU1joiKxkIOqxmFnNpgy9gaqFzwaVxf1srJzzqA1rE7eW+hILKz2ssbJiMk7pMV/n2GvvTMvStZx0pFuCB+hERBaWVopebzY9rudn54NfNz72K/NBrxcRMREssBAY08CJXrkBqweaoZ/LcwM7TZwnWKPjAJFUovYtg3+MGXE9Oi7R4Hbo8YkFlqoeWPHaO9NBqy5YFTpJFLYRkMJNwcT4Gj0WuzpaTQxq+GzsivvZkHVbW6En+K1M3CpLfYmltlhhJWAYp/SYr8/V2sNRS9OmotebTY/rwK724NeNrt5+bEdb0P71xYkLpvad4X5uk34uImIi4I81jAOwUZwruJ7HdrTJna0tcmjPfya4XcLKs4UF0fL1rBjLe/3UxUICLQF/VGKjtg4S6/VTF+W1d6bl0J7uwgNbKC+//YlkF5bk5bc/MfFA/9NH75YDu8NnZh/Y3WnieKAcn41t0UF4iM/placeMfNQ9Pqpi/Ly25+EbkaBlWsneg8M3Z5De7oLbQnp/ru2yrmZebn/rq1V/6yvz9VaNvRzAzuDfjZ6XJ954wO5NL8g7382F+x8feaND2Ti3Kzc1tggC0srwfpX3ReB/RHKtTRtkoWla8ECqBZZe8bAWr+myUMW7sOwycqYETbp897Lb39iZkxvRW/nNrk0v2AmwSskPScIzq15+e1PZCUnkhIJ/vwJm3iSQE1ZzJrILizJ3lffC/b7o4MasimB+kVG5Rrdoy+7sOS0N5BvoVevKUv3QCsrLLRMbchytZrFeGVxOeg5ovvA/fL058HaEHVitfb9iQ/DlQHVTMqFpZWgq9ieWN1TxMK+M1b6M/XcwM5CmTrAKr1uXn77EzP3YdhjrX+FPfq8JyL0JSWsJXiFZum5z5LWlqbgz5+wiYAUaspSWZzo0tlzM2EnwjrSLbK4fK0QmAKAehbt4132BvLF2gQUQctyFkpN6kORrmgIRTc/Pjczb+J8tUDPj6aGVNCNoa2UDhSxN8FhJbhtyQ+/+y1pSOVfYYNeN4vLYYPbsM1a/wp79J6n/Tx9yRpLc30W8NxXzML+p7CNgBRqylLWxIHdnbKro1VEpPAaqh2/OfJX0tzI5QfUs9APsZayOqN9fMj+dW0C6pqJByQLE7eWzhORtYl+K+UmQ9rc1CAi+f20LDzA7l1dFbQ34KogPT90Z+gri8vB2iISvp8XYYKjHrz76RdBA6gop9dNc2ODmWdR2HNoT7e0NDXIbHZBnnnjg9DNgWH08+UszfVZYOG5zxKOB26EGXHUlLWH6BNP/0B+/9KAnHg6/N5NVjIGrE1WAvUidP+mq4AsrLLUY/H3f/Ng0P51bQJqEw9IqyxMqFtk4R78nW//JxHJ76tl4YHNUrBweXWl5XKgFZc6Ntq+5bbgwW0rD/SMF8vpMdHA6eLySuAWQbGqARtxYHenfLO8IjnJl4wFsHGskCrGOAmoDgEp3BS/PP25dB+dIPMowsoEg6VJbaCeWLmGLbByLLQdGmywkgwRUujAqVXvfzYnl+YX5P3P5oK1wcJ+WiK2HqC1La0tjSIi0p7eHKQdGsj9aGbeREa0hc+I4HY5PSYaOG1ubAjcIpQigx83YqGUMOyzkMhkhe6BevLCv9K/RjBOAqpDQAo1pZ3yudUH+tCZRxYe6AHABx6M1mclQGbhnmPlWCgLx0RE5MTq/k0nPgw3LtFJsAfaW4MeE0sP0NqW7EJ+xcml+atB2qGB3M1NNh6VLCQPEdwup8fkoY5W9pAyxtIqR9hmaXUw7LI2ng5p4lx+DH11aYVxQQTjJKA6Np6ykFjaKe9afVALnXlkadLFyqQck9pAfdIHIxEx0ZdYYKVfVRYmka2xdB8O7bEdbXJna4v87k//HvQ8sfQAbWXcqP1r/847CTSsYjKunB6TL698Q5a4MS9OfFyUFMlnAwB+aELVEw+3My7AdVl7NoctjaEbgGQ7sLvT1A3q0J5uee2daROTLtFJuZDHyNpnBKA6VvqS109dLPSvodph5VhYZOHzEbFzH977cLtMnJsNmiij52sqWAvyLI0DLLVFxM4m5ve03S7ZmXm5p+32oO1AZVb6Nay5urS2n5eVgDvssTI2AurJK089worCEs+88UGh6gLPoWt4Nsf1sEIKCIRNIAH4YGV1g4WVL1aOhbK0AjX056MZciJiIpvSQokePV+feLg96Hmin80zb3xgJosxdEal/v7F5WtBfn8pK/uNoTJWj9nzxMP5DP69ZPDjOljJjhsJPR5BfYhuTWLlOdQCa8/msIUVUrilWIrQs8kuAB+srCiwkCFu5VgoS+3p7dwml+YXgiVBWLr/WmHl/NDPZja7IDnJT9CFatczb3wgE+dm5bbGTbKwdC3Y+aLHJN3SJG1bbgv+IP1Ae6ucm5mXB9pbg7ZDZO0zGtjVfstnSLO6wq7HdrQVnrG+/9I/8xmhosXllaJXoJSOB15++xP6e6xrYNda5QXOjzVWnnVgEyukcFNYySyxtCqJbAEAcVjpV5WFDHFrx8RSe0InQVi751n6bELTz2ZzU/jHgrWNsq8FPV/0mDz7+H3B+zURkT/M/UfRa0j6GUWzgW9V0YlK+hNb9LOZODcbfPU27GpubCh6BUrpeGBx+Rqr6bAuC5UXrHnmjQ9kx5EJuf9n/4fxESoK/+SJW4KV5fBW9gIQsTF5C6B+hS7BFrX31ffk3iMT8p3n/nfQAaelYyJiqz2hA0KW7nmvn7ooz//qt2Y+GyvBsf6ddwYvMakrgB7qaA16vlg7X+cXlkI3o0A/IwurtULTflVEzPQnyNPPZmBXu6lkCNhiqbQybNLxQHMjU6fKyrgVtk2cm5WciCwsrTA+QkX0qrgptAa/lVr8AFDvQgcYos7N5Pc1WVrJsYdUhKX2WJpgD+21d6ZlJSfSkLJR5z104FKTht799Ivg58iXV74peg3F0mTLy29/IjkRSYmYmDS18hlZoP3qD7/7LTMVGJCnn81jO9pCNwWGMTbCRhG8XBN63Ir6MLCrXVIi0tLUYOJ5C/YQkMJNoRkloTNLGEgAiMvKRKWlh+imTanC/w+9h5SVYyJirz3I00DhCz950MRnYylwGZqVY2FlZX9Ua0uTiZKovZ3bTHxGloQuiYr1WbyWYYeVMT3sY0y/RsdqvZ3buH5W0ZeUe+WpR+Szlwbk45//F64bVERACjeFlUAQAwkAcZEVVu75vQ9IR7pF/v5vbEzwA9djbSwQuj1WxmiozMrno/e+sxcvm7p+LLASSAVQHcb0QPV03Prup18Q8F9FXwJUj4AUAABVYOKpXOgJ9VJkqaGePPPGB9J9dEKeeeODIL/f0vVr5YHeShBIxM7nw71vfVY+I5SzdC3DHvo1AD70dm6jdC9QpVQul8uFbkS9++qrr6S1tVXm5+dl69atoZtj0vdf+meZyS5IR7pFfnPkr0I3BxGvn7oor70zLYf2dPMgDcCJtX6Ee45d1s6VkPRYzGYXJCf5Pa2mjw2EblZQekx6O7fJ2YuXOU8AAAAMYky/hmdPhFLP8QhWSOGmIPvILivZyACqY2kVkLV+hHuOXdbOlZD0WGxuapCGVH7z3xAs9SVKy8Bwnthh8TwBAKCWuPetj9XBa1ghBVSPgBRuCm5WdjFxC9QnSxP71vqR0PccHl7XZ+1cCUmPxXMD98v0sQF55alHgrTDUl+ibRGRoOcJ13A5S+eJFXqePPPGB5wvQB0KXTIX9nHvw0a8++kXspLLvyKPsTRuhIAUcIsLPXEL1BsrgytLE/v0I8V4eC2n142IcK4YY6kv0bY8+/h9Qc8TruFyls4TK/Q8mTg3y/kC1KGJc7Oyksu/ApVw7wPcMJbGjbCHlAf1XLMRAFAdakTbZaWWuZV2WMJ1U45jYhfXMDaCPc+A+vbMGx/IxLlZGdjVHmyVMoD6x7ixHMfk5qjneERj6AYg2eiEACTNoT3dhX4NeVb6+pff/kSyC0vy8tufBG3Hgd2d3PNKcN2U6+3cJpfmF6g3D9Qp+nqgvr3y1CMEonBdVp5xYBvjgXLvfzYnl+YX5P3P5jg2qIiSfagplmkCSBrK05Wjr8eNcN2UO3vxsqzk8q/Is1IS9eW3P5GZ7IK8/PYnQdsBwI2VvgRAfeMZpxz9KzaCkqi4EQJSqClq7gJA8lnp6599/L7C/jMh8aCGjbBy3VhCIKgc/QlQPSaRsRH0r7gRxmrl6F+xEQO72qUhlX8FKmEPKQ/quWYjAADwi72BADd/+cI/SnZhSdItTfIvz/91sHZYKtFjpT+xdEyAG+F8xUZY6V+BekL/CthRz/EIVkgBAAB4RDYl4MbKKkdLJSat9CdkRJdjdYVdlq5h2GWlfwUA4FbDCikP6jkiCQAAAADXQ0Z0OVZXAABuNdz7yjFGKscxuTnqOR7BCikAAADgJmN1BTbCynnCipNyrK4AANxquPeVYxV5OY4JbiRxAanjx49Lf3+/jI+PSzabFRGRTCYj4+Pjsn//fpmamqr4c9lsVoaGhmRoaEhGRkZkcHBQxsfHb2LLAQAAcKuw8qBmJeCByqycJyhHkA4Ako0xUjnufeUI0pXjmOBGGkM3wLdsNiuTk5MyOTlZ9PV0Oi1jY2PS09NT8Wd6e3vLvj84OCinT5+W4eHhmrcbAAAkAyUKsBGH9nQXzpOQogEPzld7rJwnAADcahgjAW4O7O7kmsF1JW4PqZGREUmn0zI9PS2ZTEba2tqkt7dXDh48uO7P9Pf3S09PT8XA07Zt22RsbEz6+vrW/fl6rtkIAAD8orY66gkBVAAAgHKMkbARPPshlHqORyQyIHXw4EFJp9Mb+vuZTEa6u7tlenpaurq6yr4/ODgomUxGTp48ue571PMJAAAA/OLhFQAAAACSj2e/chyTm6Oe4xGJK9lXrdHRURGRisEoEZHu7m45fvy4ZLPZDQe5AADArYsSBQAAAACQfDz7laPcJW5kU+gGhDY1NXXdQJMGqs6cOXOTWgQAAAAAAAAAQH3p7dwmDan8K1BJogNSU1NTcvz4cZmamlr37+g+U+vRYFUmk/HdPAAAAAAAAAAAEuHsxcuyksu/ApUkMiA1OTkpIyMjIiJy8OBBERHp7++XycnJsr87Nzd33RVSGqzKZrPe2wkkxeLiovyP//E/ZHFxMXRTANQx+hIAPtCXAPCBvgSAD/QluNUc2tMtHekWObSnO3RTEiVJfUkql8vlQjfCp/HxcRER2bdvX9HXs9msbNu2Tc6ePSs9PT2Fr6dSKenp6ZGzZ89WfL+pqSnp7e2Vw4cPy/DwcMW/o5uIff7550WbiDU3N0tzc3PcfxJgXj1vpAfADvoSAD7QlwDwgb4EgA/0JQB8KO1L6rlvSdwKqX379pUFo0Typff27dsn+/fvr9nvvvvuu6W1tbXw59ixYzX7XQAAAAAAAAAAAPWiMeQvj1MG73pl9tbz6KOPyvj4uGQyGenq6iq8z0basX379hv+nUorpAAAAAAAAAAAAG51wQJSQ0NDhX2eXFVbbVCDWFNTU4WAlO4RtZ65ubmin62mHYuLi4mo6wjcyFdffVX0CgAu6EsA+EBfAsAH+hIAPtCXAPChtC/R13rcjSlYQGp4eHjdPZlcDQ4OyuTkpExPT2/4Z7q6uuTMmTPrfl9XT2kAq5Kvv/5aRPIl+4BbGdcAAB/oSwD4QF8CwAf6EgA+0JcA8KG0L/n666+ltbU1UGvcBC3Z59uZM2cKK5oq0eBST09P4Ws9PT0yOTm57s9kMhkREenr61v377S3t8vnn38ud9xxh6RSqSpbDQAAAAAAAAAAcGO5XE6+/vpraW9vD92UqiUqINXX13fdVVenT5+WdDpdtNrpySeflJGREZmamioKVEV/5nrBKBGRTZs2yV/8xV+4NxwAAAAAAAAAAGAD6m1llNoUugE+Pfnkk3L8+PGK38tkMjI+Pi6/+MUvir7e09MjfX198uabb1b8ufHxcRkaGvLeVgAAAAAAAAAAgFtFogJSPT09ks1mZWRkpOjrmUxGent75fDhw7Jv376ynxsbG5Px8XGZmpoq+vrg4KAcPnz4hiukAAAAAAAAAAAAsL5ULpfLhW6Eb5OTkzI2NiZzc3OSzWYlnU7L0aNHK5bkU9lsVoaGhiSdTsv27dtlenpa+vv7KwawAAAAAAAAAAAAsHGJDEgBqI2pqSkZHR2Vubk5mZqaknQ6LYODg3Lw4MF1fyabzcqxY8dERDYc7HX5GQD1h2sdQCWMNwDU0uDgoAwNDRXtLR1FfwKgkuPHj8vY2Jik02kREenq6lp3H3v6EQCV6IIYEZG5uTkREXn00Ufl8OHD1/2ZpPUnBKQAbIjuzxadDJqcnJT9+/dLW1ubnD17tjAwU9lsVnp7e2VsbKxoheLg4KCk0+mKgzeXnwFQf7jWAVTCeANALU1NTUlvb6+cPXu2YgUV+hMApbLZrPzoRz+Svr6+ous5k8nI6Oho2TVOPwKgEk26Gx4eLnqeGR8fl2PHjsnZs2fLfiax/UkOAG5geno6Nzw8XPF7Z8+ezYlIrq+vr+x7fX19ucOHD1f8uXQ6nTt58qSXnwFQf7jWAZRivAGg1vr6+nIikjt79uy636c/ARDV09NT8Rrv6+vLpdPpil+nHwFQqtJzjBodHc0dPHiw4s8ksT9hhRSAGxoaGpKjR4+WZSSr/v5+mZyclOnp6ULpi0wmI93d3UVfixocHJRMJiMnT54sfM3lZwDUH651AJUw3gBQS7oCc3BwsOIKKfoTAKVGRkbk2LFjcvny5bLv7d+/X7LZbOw+gX4ESD5dHTU6Olrx+7qqaXp6uvC1JPcnm4L+dgB1YXJyUnbs2CHZbLbi9/VhbmpqqvA17WTXq83e3d0tk5OTRe/p8jMA6g/XOoBKGG8AqJVMJiMi61/3IvQnAModO3Zs3T0sx8bGyiZ16UcAVJLJZGRycnLd78/NzZUl5SW5PyEgBeCG2traJJvNFh7kNkI3IV+Pdo5nzpyJ9TMA6g/XOoBKGG8AqJXR0dF1J5UV/QmAqPHxcclms/Lkk09u+GfoRwBU0tPTI5lMRvbv31/x+6Ojo2V9TZL7EwJSAG7o5MmTMj09XXHjX5G1jMPo9zOZjLS1ta37ntpBRiedXH4GQP3hWgdQCeMNALUwPj4ug4ODN/x79CcAot58800RKV6hffz48aKV2qXoRwBU0tXVJQcPHpTx8fHCKiWlK5YOHz5c9DNJ7k8ISAHYkOuVtxgfH5eenp6iv1NpuWmUdpDRZaIuPwOg/nCtA1gP4w0APumqy+v1LYr+BEBUNPA0MjIic3NzhZWWuq9lKfoRAOsZHR2V4eFhyWQy0t/fL4ODgzIyMlL4Xqkk9yeNQX87gLqnnecvfvGLoq9vtHP78ssvY/0MgPrDtQ6gWow3ALg4duyYDA8Pb+jv0p8AiNKJ3ePHjxetXOjp6ZGxsTHZsWOHjI2NSV9fX+F79CMArufw4cOSTqdlcHBQjh8/Lul0WsbGxir+3ST3J6yQAuBsampKhoaGZGxsbN3yOgAAAHEw3gDgYnJyUvr7+0M3A0Cdymazks1mK5a/SqfT0tfXt6FyoACghoaGREQkl8vJ4cOHJZvNFlZL3UoISAEJpAMnlz/V2L9/v4yOjsq+ffvKvpdOpzf0ftu3b4/1MwDqD9c6gGow3gDg4uTJk0UrF26E/gRAlJa9Wq8f6e/vl0wmU1Taj34EwHr6+/ulv7+/UPpzeHhYzp49K11dXXL8+HHZv39/0d9Pcn9CQApImKGhIdm2bZvzn1QqtaHfs3//fhkcHCx0pKWut4meSH75u8jaIM/1ZwDUH651ABvFeAOAi5GRETl69GhVP0N/AiBKr+/1rl/9/pkzZ8q+th76EeDWNDIyIj09PWUB7p6eHpmenpaDBw/K+Ph40d50Se5PCEgBCTM8PCy5XC7WnxsZGhqSRx99tKiOcqmurq5CR1eJRuyjGwy7/AyA+sO1DmAjGG8AcJHJZCSdTlc92UJ/AiBqo2WCo6sR6EcAVDI6OnrdRJnR0VHp6emRkydPFr6W5P6EgBSAqhw/fly6u7srTg5FB2I9PT3XXSaayWREpHj5u8vPAKg/XOsAboTxBgBXU1NTMjY2ViiNE/2jezT87d/+beFriv4EQNSjjz4qIrLuNa6TvtHAFf0IgEo0WeZ6BgcHb5nnHAJSADZsfHxcRKRi2ZxMJlO0tPTJJ58UESmqpxx1+vTpsg7Q5WcA1B+udQDXw3gDQBz79u2TkydPVvwzPDwsIiK/+MUvCl9T9CcAonTvyui4I2p6elpERL73ve8VvkY/AqCSrq6uQjBoPdPT09Lb21v47yT3JwSkAGzI1NSUzM3NrbuHw+TkZFlmUF9fn7z55psV//74+LgMDQ0Vfc3lZwDUH651AOthvAEgFPoTAFFdXV2yb98+OXbsWMXvj4+Py+HDh4tWPdCPAKhk3759172Os9msTE1NyU9/+tPC15Lcn6RyG9kwBsAtLZPJSH9//7pR9Lm5OZmcnJTLly8XfT2bzUpvb6+MjY0VTR4NDg5KOp0uZCjG/RkA9YdrHUApxhsAam1kZESGhoZkbGyssPohiv4EQJRe30NDQ0XJMvv375dsNlu0yrL0Z+hHAETt379f2traZHh4uCiQPTU1JUNDQzI8PFy2d11S+xMCUgBuqLu7+4ZLS7u6ugpL1qOy2awMDQ1JOp2W7du3y/T0tPT391d8AIzzMwDqD9c6gCjGGwBqZXBwUDKZjJw5c0ay2ayk02n53ve+Jz09PWUTM/QnAKKy2awcO3asMEbJZrOyf//+dVdz69+hHwFQanJyUkZHR4u+1tXVdd0gURL7EwJSAAAAAAAAAAAAqCn2kAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE0RkAIAAAAAAAAAAEBNEZACAAAAAAAAAABATRGQAgAAAAAAAAAAQE39/5mr+uI0O4y7AAAAAElFTkSuQmCC' width=1700.0/>\n", + " </div>\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "fig, ax = plt.subplots(figsize=(17, 3))\n", + "ax.scatter(\n", + " batch.un_z.cpu().numpy(),\n", + " batch.un_x.cpu().numpy(),\n", + " s=1,\n", + ")\n", + "ax.set_aspect('equal')\n", + "ax.set_title(\"title\")\n", + "fig.tight_layout()\n", + "def onclick(event):\n", + " if event.inaxes is not None: # Check if click is inside the axes\n", + " z, x = event.xdata, event.ydata\n", + " \n", + " a = ('button=%d, x=%d, y=%d, xdata=%f, ydata=%f' %\n", + " (event.button, event.x, event.y, event.xdata, event.ydata))\n", + " ax.set_title(a)\n", + "\n", + "fig.canvas.mpl_connect('button_press_event',onclick)\n", + "\n", + "plt.draw()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f8ff9fad2d6542d1b0d886b06b4249d8", + "version_major": 2, + "version_minor": 0 + }, + "image/png": "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KqWU8ubyovGRZG2f72zPe1au91xc77m43nOZ9Xpvn+923cbDnVw5e9345z//WT777LPWhwEAwB1+/vnn8umnn7Y+jCEJkI5cXl6Wly9flvPz83JyctL6cAAA2HN1dVVev35dPvnkk7LZuJvhGAIEAACIkW0AAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAx/w931tZLFpTC/AAAAABJRU5ErkJggg==", + "text/html": [ + "\n", + " <div style=\"display: inline-block;\">\n", + " <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n", + " Figure\n", + " </div>\n", + " <img src='data:image/png;base64,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KqWU8ubyovGRZG2f72zPe1au91xc77m43nOZ9Xpvn+923cbDnVw5e9345z//WT777LPWhwEAwB1+/vnn8umnn7Y+jCEJkI5cXl6Wly9flvPz83JyctL6cAAA2HN1dVVev35dPvnkk7LZuJvhGAIEAACIkW0AAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAxAgQAAIgRIAAAQIwAAQAAYgQIAAAQI0AAAIAYAQIAAMQIEAAAIEaAAAAAMQIEAACIESAAAECMAAEAAGIECAAAECNAAACAGAECAADECBAAACBGgAAAADECBAAAiBEgAABAjAABAABiBAgAABAjQAAAgBgBAgAAxAgQAAAgRoAAAAAx/w931tZLFpTC/AAAAABJRU5ErkJggg==' width=800.0/>\n", + " </div>\n", + " " + ], + "text/plain": [ + "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib widget\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "def compute_2d_gaussian(x, y, mx, my, sigma=1):\n", + " return np.exp(-((x - mx)**2 + (y - my)**2) / (2 * sigma**2))\n", + "\n", + "x = np.linspace(-5, 5, 100)\n", + "y = np.linspace(-5, 5, 100)\n", + "X, Y = np.meshgrid(x, y)\n", + "Z = compute_2d_gaussian(X, Y, 0, 0)\n", + "\n", + "fig, ax = plt.subplots()\n", + "contour = plt.contourf(X, Y, Z)\n", + "\n", + "def onclick(event):\n", + " if event.inaxes is not None: # Check if click is inside the axes\n", + " mx, my = event.xdata, event.ydata\n", + " Z = compute_2d_gaussian(X, Y, mx, my)\n", + " plt.clf()\n", + " plt.contourf(X, Y, Z)\n", + " plt.draw()\n", + "\n", + "fig.canvas.mpl_connect('button_press_event',onclick)\n", + "plt.show()\n", + "plt.draw()" + ] + } + ], + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/etx4velo/pipeline/Embedding/embedding_base.py b/etx4velo/pipeline/Embedding/embedding_base.py index 29efe202757c219631d3e4da58f06ecb489d749e..3d1a72a3b055bcd41f56218971ef3e6cdc58c3f6 100644 --- a/etx4velo/pipeline/Embedding/embedding_base.py +++ b/etx4velo/pipeline/Embedding/embedding_base.py @@ -172,6 +172,8 @@ class EmbeddingLazyDataSet(LazyDatasetBase): x=batch["x"][kept_hit_indices], plane=batch["plane"][kept_hit_indices], fake=batch["fake"][kept_hit_indices], + un_x=batch["un_x"][kept_hit_indices], + un_z=batch["un_z"][kept_hit_indices], signal_true_edges=true_edge_indices, **dict_mask_columns, ) diff --git a/etx4velo/pipeline/GNN/models/__init__.py b/etx4velo/pipeline/GNN/models/__init__.py index 540d4aa43af9918668a34f579f49f3cde689e8ad..8a3130a1a2ab231838921c64cd71683bbc51abed 100644 --- a/etx4velo/pipeline/GNN/models/__init__.py +++ b/etx4velo/pipeline/GNN/models/__init__.py @@ -1,5 +1,6 @@ """A package that defines various triplet-based GNNs. """ + import typing from ..triplet_gnn_base import TripletGNNBase @@ -28,5 +29,12 @@ def get_model(model_type: str | None = None) -> typing.Type[TripletGNNBase]: from .scifi_triplet_interaction_gnn import SciFiTripletInteractionGNN return SciFiTripletInteractionGNN + elif model_type == "incremental_triplet_interaction": + from .incremental_triplet_interaction_gnn import ( + IncrementalTripletInteractionGNN, + ) + + return IncrementalTripletInteractionGNN + else: raise ValueError(f"GNN type {model_type} is not recognised.") diff --git a/etx4velo/pipeline/GNN/models/edge_based_gnn.py b/etx4velo/pipeline/GNN/models/edge_based_gnn.py index ba38c064e19fa16b17125fc9e53f7047cf8a1bbf..1c3f7d6981ec394aae207d4f78c7eb75c34c431f 100644 --- a/etx4velo/pipeline/GNN/models/edge_based_gnn.py +++ b/etx4velo/pipeline/GNN/models/edge_based_gnn.py @@ -1,5 +1,3 @@ -import os - import typing import torch from torch_scatter import scatter_add @@ -185,128 +183,72 @@ class EdgeBasedGNN(TripletGNNBase): @property def subnetworks(self) -> typing.List[str]: - return ["edge_encoder", "edge_network", "edge_output_classifier"] - - def to_onnx( - self, - outpath: str, - mode: typing.Literal[ - "edge", "split", "edge_encoder", "edge_network", "edge_output_classifier" - ] = "edge", - ) -> None: - """Export this model to ONNX. + return super(EdgeBasedGNN, self).subnetworks + [ + "edge_encoder", + "edge_network", + "edge_output_classifier", + ] - Args: - outpath: where to save the ONNX file - mode: Export mode. In ``edge`` mode, the network is recorded up to - the edge output classifier. - In ``split`` mode, the ``outpath`` must contain the placeholder - ``{subnetwork}``. In this case, the 3 edge subnetworks - ``edge_encoder``, ``edge_network`` and ``edge_output_classifier`` - are saved in their respective ONNX files. - Finally, ``mode`` can also be set to one of these sub-networks. - """ - if mode is None: - mode = "edge" - - if mode == "edge": - return super(EdgeBasedGNN, self).to_onnx(outpath=outpath, mode="edge") - elif mode == "split": - assert "{subnetwork}" in outpath, ( - "In `split` mode, the output path should contain the placeholder " - "{subnetwork}." - ) - for subnetwork in self.subnetworks: - self.to_onnx( - outpath=outpath.format(subnetwork=subnetwork), - mode=subnetwork, # type: ignore - ) - elif mode in self.subnetworks: - from utils.modelutils.export import change_input_index_types - - n_hits = 200 - n_edges = 2000 - n_hiddens = self.hparams["hidden"] - dummy_inputs = { - "x": torch.zeros(size=(n_hits, 3), device="cuda", dtype=torch.float32), - "start": torch.zeros(size=(n_edges,), device="cuda", dtype=torch.int64), - "end": torch.zeros(size=(n_edges,), device="cuda", dtype=torch.int64), - "message_in": torch.zeros( - size=(n_hits, n_hiddens), device="cuda", dtype=torch.float32 - ), - "message_out": torch.zeros( - size=(n_hits, n_hiddens), device="cuda", dtype=torch.float32 - ), - "e": torch.zeros( - size=(n_edges, n_hiddens), device="cuda", dtype=torch.float32 - ), - } - - network_to_inputs = { - "edge_encoder": ["x", "start", "end"], - "edge_network": ["e", "start", "end", "message_in", "message_out"], - "edge_output_classifier": ["e"], - } - - network_to_outputs = { - "edge_encoder": ["e"], - "edge_network": ["e"], - "edge_output_classifier": ["edge_score"], - } - - input_to_dynamic_axes = { - "x": {0: "n_hits"}, - "start": {0: "n_edges"}, - "end": {0: "n_edges"}, - "e": {0: "n_edges"}, - "message_in": {0: "n_edges"}, - "message_out": {0: "n_edges"}, - "edge_score": {0: "n_edges"}, - } - input_names = network_to_inputs[mode] - output_names = network_to_outputs[mode] - - os.makedirs(os.path.dirname(outpath), exist_ok=True) - torch.onnx.export( - model=GNNSubNetworkExport(self, network=mode), - args=tuple(dummy_inputs[input_name] for input_name in input_names), - f=outpath, - verbose=False, - # Names to assign to the input nodes of the graph, in order - input_names=input_names, - # Names to assign to the output nodes of the graph, in order - output_names=output_names, - # Apply the constant-folding optimisation: - # replace some of the ops that have all constant inputs with pre-computed - # constant nodes - do_constant_folding=True, - opset_version=17, - dynamic_axes={ - name: input_to_dynamic_axes[name] - for name in input_names + output_names - }, - ) - change_input_index_types(outpath) - print("Model was exported to", os.path.abspath(outpath)) - else: - raise ValueError(f"ONNX export mode `{mode}` is not recognised.") + @property + def subnetwork_to_outputs(self) -> typing.Dict[str, typing.List[str]]: + return { + **super(EdgeBasedGNN, self).subnetwork_to_outputs, + "edge_encoder": ["e"], + "edge_network": ["e"], + "edge_output_classifier": ["edge_score"], + } + @property + def subnetwork_to_inputs(self) -> typing.Dict[str, typing.List[str]]: + return { + **super(EdgeBasedGNN, self).subnetwork_to_inputs, + "edge_encoder": ["x", "start", "end"], + "edge_network": ["e", "start", "end", "message_in", "message_out"], + "edge_output_classifier": ["e"], + } -class GNNSubNetworkExport(torch.nn.Module): - def __init__(self, model: EdgeBasedGNN, network: str): - super().__init__() - self.model = model - self.network = str(network) + @property + def subnetwork_groups(self) -> typing.Dict[str, typing.List[str]]: + return { + **super(EdgeBasedGNN, self).subnetwork_groups, + "edge_split": ["edge_encoder", "edge_network", "edge_output_classifier"], + } - def forward_edge_output_classifier(self, e): - return torch.sigmoid(self.model.output_edge_classifier(e).squeeze(-1)) + @property + def input_kwargs(self) -> typing.Dict[str, typing.Any]: + return { + **super(EdgeBasedGNN, self).input_kwargs, + "message_in": dict( + size=(self._n_hits, self.n_hiddens), dtype=torch.float32 + ), + "message_out": dict( + size=(self._n_hits, self.n_hiddens), dtype=torch.float32 + ), + "e": dict(size=(self._n_edges, self.n_hiddens), dtype=torch.float32), + } - def forward_edge_encoder( + @property + def input_to_dynamic_axes(self): + """A dictionary that associates an input name + with the dynamic axis specification. + """ + return { + **super(EdgeBasedGNN, self).input_to_dynamic_axes, + "e": {0: "n_edges"}, + "message_in": {0: "n_hits"}, + "message_out": {0: "n_hits"}, + "edge_score": {0: "n_edges"}, + } + + def _onnx_edge_output_classifier(self, e): + return torch.sigmoid(self.output_edge_classifier(e)) + + def _onnx_edge_encoder( self, x: torch.Tensor, start: torch.Tensor, end: torch.Tensor ) -> torch.Tensor: - return self.model.edge_encoder(torch.cat((x[start], x[end]), dim=-1)) + return self.edge_encoder(torch.cat((x[start], x[end]), dim=-1)) - def forward_edge_network( + def _onnx_edge_network( self, e: torch.Tensor, start: torch.Tensor, @@ -315,12 +257,9 @@ class GNNSubNetworkExport(torch.nn.Module): message_out: torch.Tensor, ) -> torch.Tensor: e = ( - self.model.edge_network( + self.edge_network( torch.cat((e, message_in[start], message_out[end]), dim=-1) ) + e ) return e - - def forward(self, *args, **kwargs): - return getattr(self, f"forward_{self.network}")(*args, **kwargs) diff --git a/etx4velo/pipeline/GNN/models/incremental_triplet_interaction_gnn.py b/etx4velo/pipeline/GNN/models/incremental_triplet_interaction_gnn.py new file mode 100644 index 0000000000000000000000000000000000000000..3dad30cd3cc268af040e0e5afa0cc05fe2fcc14c --- /dev/null +++ b/etx4velo/pipeline/GNN/models/incremental_triplet_interaction_gnn.py @@ -0,0 +1,217 @@ +import typing + +import torch +from torch_scatter import scatter_add, scatter_max +from GNN.models.triplet_interaction_gnn import TripletInteractionGNN + +from utils.modelutils.mlp import make_mlp +from utils.commonutils.cfeatures import get_number_input_features + + +class IncrementalTripletInteractionGNN(TripletInteractionGNN): + """A triplet-based interaction network.""" + + def __init__(self, hparams): + super(TripletInteractionGNN, self).__init__(hparams) + """ + Initialise the Lightning Module that can scan over different GNN training + regimes + """ + + nb_hidden: int = hparams["hidden"] + + list_nb_node_layers = [2, 1] + list_nb_edge_layers = [2, 1, 1, 1, 1] + + # Setup input network + self.node_encoder = make_mlp( + get_number_input_features(hparams["feature_indices"]), + [nb_hidden] * self.hparams["nb_node_encoder_layers"], + output_activation=None, + hidden_activation=hparams["hidden_activation"], + layer_norm=hparams["layernorm"], + ) + + # The edge network computes new edge features from connected nodes + self.edge_encoder = make_mlp( + 2 * (nb_hidden), + [nb_hidden] * self.hparams["nb_edge_encoder_layers"], + layer_norm=hparams["layernorm"], + output_activation=None, + hidden_activation=hparams["hidden_activation"], + ) + + # The edge network computes new edge features from connected nodes + self.edge_networks = torch.nn.Sequential( + *( + make_mlp( + 3 * nb_hidden if idx == 0 else nb_hidden, + [nb_hidden] * nb_edge_layers, + layer_norm=hparams["layernorm"], + output_activation=None, + hidden_activation=hparams["hidden_activation"], + ) + for idx, nb_edge_layers in enumerate(list_nb_edge_layers) + ) + ) + + message_size = 2 if self.hparams["aggregation"] == "sum_max" else 1 + if not self.hparams["bidir"]: + message_size *= 2 + + # The node network computes new node features + self.node_networks = torch.nn.Sequential( + *( + make_mlp( + (1 + message_size) * nb_hidden if idx == 0 else nb_hidden, + [nb_hidden] * nb_node_layers, + layer_norm=hparams["layernorm"], + output_activation=None, + hidden_activation=hparams["hidden_activation"], + ) + for idx, nb_node_layers in enumerate(list_nb_node_layers) + ) + ) + + # Final edge output classification network + self.output_edge_combiners = torch.nn.Sequential( + *( + make_mlp( + 3 * nb_hidden if idx == 0 else nb_hidden, + [nb_hidden] * nb_layers, + layer_norm=hparams["layernorm"], + output_activation=None, + hidden_activation=hparams["hidden_activation"], + ) + for idx, nb_layers in enumerate(list_nb_node_layers) + ) + ) + + self.output_edge_classifier = make_mlp( + nb_hidden, + [nb_hidden] * 1 + [1], + layer_norm=hparams["layernorm"], + output_activation=None, + hidden_activation=hparams["hidden_activation"], + ) + self.output_triplet_classifier = make_mlp( + 5 * nb_hidden, + [nb_hidden] * hparams.get("nb_edge_classifier_layers", 6) + [1], + layer_norm=hparams["layernorm"], + output_activation=None, + hidden_activation=hparams["hidden_activation"], + ) + + def message_step( + self, + x: torch.Tensor, + start: torch.Tensor, + end: torch.Tensor, + e: torch.Tensor, + step: int, + ) -> typing.Tuple[torch.Tensor, torch.Tensor]: + """Apply one step of message-passing that updates the node and edge + encodings. + """ + if self.hparams["aggregation"] == "sum": + node_inputs = torch.cat( + ( + x, + scatter_add(e, end, dim=0, dim_size=x.shape[0]), + scatter_add(e, start, dim=0, dim_size=x.shape[0]), + ), + dim=-1, + ) + elif self.hparams["aggregation"] == "max": + node_inputs = torch.cat( + ( + x, + scatter_max(e, end, dim=0, dim_size=x.shape[0])[0], + scatter_max(e, start, dim=0, dim_size=x.shape[0])[0], + ), + dim=-1, + ) + + elif self.hparams["aggregation"] == "sum_max": + node_inputs = torch.cat( + ( + x, + scatter_max(e, end, dim=0, dim_size=x.shape[0])[0], + scatter_add(e, end, dim=0, dim_size=x.shape[0]), + scatter_max(e, start, dim=0, dim_size=x.shape[0])[0], + scatter_add(e, start, dim=0, dim_size=x.shape[0]), + ), + dim=-1, + ) + else: + raise ValueError( + f"Aggregation `{self.hparams['aggregation']}` not recognised" + ) + + x = self.node_networks[: step + 1](node_inputs) + x + + # Compute new edge features + edge_inputs = torch.cat([x[start], x[end], e], dim=-1) + e = self.edge_networks[: step + 1](edge_inputs) + e + return x, e + + def output_step( + self, + x: torch.Tensor, + start: torch.Tensor, + end: torch.Tensor, + e: torch.Tensor, + step: int, + ) -> torch.Tensor: + """Apply the edge output classifier to edges to get edge logits.""" + classifier_inputs = torch.cat((x[start], x[end], e), dim=-1) + + return self.output_edge_classifier( + self.output_edge_combiners[: step + 1](classifier_inputs) + ).squeeze(-1) + + def forward_edges( + self, x: torch.Tensor, start: torch.Tensor, end: torch.Tensor + ) -> typing.Dict[str, torch.Tensor]: + """Forwrd step for edge classification. + + Args: + x: Hit features + edge_index: Torch tensor with 2 rows that define the edges. + + Returns: + A tuple of 3 tensors: the hit encodings and edge encodings after message + passing, and the edge classifier output. + """ + # Encode the graph features into the hidden space + x = self.node_encoder(x) + e = self.edge_encoder(torch.cat((x[start], x[end]), dim=-1)) + + # Loop over iterations of edge and node networks + n_edges = start.shape[0] + edge_mask = torch.ones(n_edges, dtype=torch.bool, device=self.device) + edge_output = torch.zeros(n_edges, dtype=x.dtype, device=self.device) + n_graph_iters = self.hparams["n_graph_iters"] + for step in range(n_graph_iters): + start_mask = start[edge_mask] + end_mask = end[edge_mask] + e_mask = e[edge_mask] + + x, e_mask = self.message_step(x, start_mask, end_mask, e_mask, step) + edge_output_mask = self.output_step(x, start_mask, end_mask, e_mask, step) + + e = e.clone() + e[edge_mask] = e_mask + + edge_output = edge_output.clone() + edge_output[edge_mask] = edge_output_mask + + if step < n_graph_iters - 1: + updated_edge_mask = edge_mask.clone() + updated_edge_mask[edge_mask] = torch.sigmoid(edge_output_mask) > 0.2 + edge_mask = updated_edge_mask + + return {"x": x, "e": e, "edge_output": edge_output} + + # def backward(self, loss: torch.Tensor): + # loss.backward(retain_graph=True) diff --git a/etx4velo/pipeline/GNN/models/triplet_interaction_gnn.py b/etx4velo/pipeline/GNN/models/triplet_interaction_gnn.py index acac4d846572a2f739fef9dcb60fc1cccad044f7..74aa1c30e17fc8d5744dc78f6972177221807e5c 100644 --- a/etx4velo/pipeline/GNN/models/triplet_interaction_gnn.py +++ b/etx4velo/pipeline/GNN/models/triplet_interaction_gnn.py @@ -82,7 +82,7 @@ class TripletInteractionGNN(TripletGNNBase): ) def message_step( - self, x: torch.Tensor, start: torch.Tensor, end: torch.Tensor, e: torch.Tensor + self, h: torch.Tensor, start: torch.Tensor, end: torch.Tensor, e: torch.Tensor ) -> typing.Tuple[torch.Tensor, torch.Tensor]: """Apply one step of message-passing that updates the node and edge encodings. @@ -90,18 +90,18 @@ class TripletInteractionGNN(TripletGNNBase): if self.hparams["aggregation"] == "sum": node_inputs = torch.cat( ( - x, - scatter_add(e, end, dim=0, dim_size=x.shape[0]), - scatter_add(e, start, dim=0, dim_size=x.shape[0]), + h, + scatter_add(e, end, dim=0, dim_size=h.shape[0]), + scatter_add(e, start, dim=0, dim_size=h.shape[0]), ), dim=-1, ) elif self.hparams["aggregation"] == "max": node_inputs = torch.cat( ( - x, - scatter_max(e, end, dim=0, dim_size=x.shape[0])[0], - scatter_max(e, start, dim=0, dim_size=x.shape[0])[0], + h, + scatter_max(e, end, dim=0, dim_size=h.shape[0])[0], + scatter_max(e, start, dim=0, dim_size=h.shape[0])[0], ), dim=-1, ) @@ -109,11 +109,11 @@ class TripletInteractionGNN(TripletGNNBase): elif self.hparams["aggregation"] == "sum_max": node_inputs = torch.cat( ( - x, - scatter_max(e, end, dim=0, dim_size=x.shape[0])[0], - scatter_add(e, end, dim=0, dim_size=x.shape[0]), - scatter_max(e, start, dim=0, dim_size=x.shape[0])[0], - scatter_add(e, start, dim=0, dim_size=x.shape[0]), + h, + scatter_max(e, end, dim=0, dim_size=h.shape[0])[0], + scatter_add(e, end, dim=0, dim_size=h.shape[0]), + scatter_max(e, start, dim=0, dim_size=h.shape[0])[0], + scatter_add(e, start, dim=0, dim_size=h.shape[0]), ), dim=-1, ) @@ -122,30 +122,30 @@ class TripletInteractionGNN(TripletGNNBase): f"Aggregation `{self.hparams['aggregation']}` not recognised" ) - x = self.node_network(node_inputs) + x + h = self.node_network(node_inputs) + h # Compute new edge features - edge_inputs = torch.cat([x[start], x[end], e], dim=-1) + edge_inputs = torch.cat([h[start], h[end], e], dim=-1) e = self.edge_network(edge_inputs) + e - return x, e + return h, e def output_step( - self, x: torch.Tensor, start: torch.Tensor, end: torch.Tensor, e: torch.Tensor + self, h: torch.Tensor, start: torch.Tensor, end: torch.Tensor, e: torch.Tensor ) -> torch.Tensor: """Apply the edge output classifier to edges to get edge logits.""" - classifier_inputs = torch.cat((x[start], x[end], e), dim=-1) + classifier_inputs = torch.cat((h[start], h[end], e), dim=-1) return self.output_edge_classifier(classifier_inputs).squeeze(-1) - def triplet_output_step_articulation(self, x, e, edge_indices, triplet_indices): + def triplet_output_step_articulation(self, h, e, edge_indices, triplet_indices): assert torch.all( edge_indices[1][triplet_indices[0]] == edge_indices[0][triplet_indices[1]] ) triplet_classifier_inputs = torch.cat( ( - x[edge_indices[1][triplet_indices[0]]], # shared - x[edge_indices[0][triplet_indices[0]]], # first - x[edge_indices[1][triplet_indices[1]]], # second + h[edge_indices[1][triplet_indices[0]]], # shared + h[edge_indices[0][triplet_indices[0]]], # first + h[edge_indices[1][triplet_indices[1]]], # second e[triplet_indices[0]], e[triplet_indices[1]], ), @@ -153,16 +153,16 @@ class TripletInteractionGNN(TripletGNNBase): ) return self.output_triplet_classifier(triplet_classifier_inputs).squeeze(-1) - def triplet_output_step_elbow_left(self, x, e, edge_indices, triplet_indices): + def triplet_output_step_elbow_left(self, h, e, edge_indices, triplet_indices): assert torch.all( edge_indices[0][triplet_indices[0]] == edge_indices[0][triplet_indices[1]] ) triplet_classifier_inputs_1 = torch.cat( ( - x[edge_indices[0][triplet_indices[0]]], # shared - x[edge_indices[1][triplet_indices[0]]], # first - x[edge_indices[1][triplet_indices[1]]], # second + h[edge_indices[0][triplet_indices[0]]], # shared + h[edge_indices[1][triplet_indices[0]]], # first + h[edge_indices[1][triplet_indices[1]]], # second e[triplet_indices[0]], e[triplet_indices[1]], ), @@ -170,9 +170,9 @@ class TripletInteractionGNN(TripletGNNBase): ).squeeze(-1) triplet_classifier_inputs_2 = torch.cat( ( - x[edge_indices[0][triplet_indices[1]]], # shared - x[edge_indices[1][triplet_indices[1]]], # first - x[edge_indices[1][triplet_indices[0]]], # second + h[edge_indices[0][triplet_indices[1]]], # shared + h[edge_indices[1][triplet_indices[1]]], # first + h[edge_indices[1][triplet_indices[0]]], # second e[triplet_indices[1]], e[triplet_indices[0]], ), @@ -186,16 +186,16 @@ class TripletInteractionGNN(TripletGNNBase): ) return (output_1 + output_2) / 2 - def triplet_output_step_elbow_right(self, x, e, edge_indices, triplet_indices): + def triplet_output_step_elbow_right(self, h, e, edge_indices, triplet_indices): assert torch.all( edge_indices[1][triplet_indices[0]] == edge_indices[1][triplet_indices[1]] ) triplet_classifier_inputs_1 = torch.cat( ( - x[edge_indices[1][triplet_indices[0]]], - x[edge_indices[0][triplet_indices[0]]], - x[edge_indices[0][triplet_indices[1]]], + h[edge_indices[1][triplet_indices[0]]], + h[edge_indices[0][triplet_indices[0]]], + h[edge_indices[0][triplet_indices[1]]], e[triplet_indices[0]], e[triplet_indices[1]], ), @@ -203,9 +203,9 @@ class TripletInteractionGNN(TripletGNNBase): ) triplet_classifier_inputs_2 = torch.cat( ( - x[edge_indices[1][triplet_indices[1]]], - x[edge_indices[0][triplet_indices[1]]], - x[edge_indices[0][triplet_indices[0]]], + h[edge_indices[1][triplet_indices[1]]], + h[edge_indices[0][triplet_indices[1]]], + h[edge_indices[0][triplet_indices[0]]], e[triplet_indices[1]], e[triplet_indices[0]], ), @@ -225,28 +225,29 @@ class TripletInteractionGNN(TripletGNNBase): """Forwrd step for edge classification. Args: - x: Hit features - edge_index: Torch tensor with 2 rows that define the edges. + x: hit input features + start: start indices of the edges + end: end indices of the edges Returns: A tuple of 3 tensors: the hit encodings and edge encodings after message passing, and the edge classifier output. """ # Encode the graph features into the hidden space - x = self.node_encoder(x) - e = self.edge_encoder(torch.cat((x[start], x[end]), dim=-1)) + h = self.node_encoder(x) + e = self.edge_encoder(torch.cat((h[start], h[end]), dim=-1)) # Loop over iterations of edge and node networks for _ in range(self.hparams["n_graph_iters"]): - x, e = self.message_step(x, start, end, e) + h, e = self.message_step(h=h, start=start, end=end, e=e) # Compute final edge scores; use original edge directions only - edge_output = self.output_step(x, start, end, e) - return {"x": x, "e": e, "edge_output": edge_output} + edge_output = self.output_step(h=h, start=start, end=end, e=e) + return {"h": h, "e": e, "edge_output": edge_output} def forward_triplets( self, - x: torch.Tensor, + h: torch.Tensor, e: torch.Tensor, filtered_edge_index: torch.Tensor, old_edge_indices: torch.Tensor, @@ -256,7 +257,7 @@ class TripletInteractionGNN(TripletGNNBase): """Forward step for triplet classification. Args: - x: Hit encodings after the edge forward step + h: Hit encodings after the edge forward step e: Edge encodings after the edge forward step filtered_edge_index: edge index after requiring the minimal edge score old_edge_indices: tensor of indices that allow to get a tensor of @@ -270,10 +271,83 @@ class TripletInteractionGNN(TripletGNNBase): """ dict_triplet_outputs: typing.Dict[str, torch.Tensor] = self.triplet_output_step( - x=x, + h=h, e=e[old_edge_indices], edge_indices=filtered_edge_index, dict_triplet_indices=dict_triplet_indices, ) return dict_triplet_outputs + + @property + def subnetwork_groups(self) -> typing.Dict[str, typing.List[str]]: + return { + **super(TripletInteractionGNN, self).subnetwork_groups, + "edge_split": ["encoder", "network", "edge_output_classifier"], + } + + @property + def subnetwork_to_outputs(self) -> typing.Dict[str, typing.List[str]]: + return { + **super(TripletInteractionGNN, self).subnetwork_to_outputs, + "encoder": ["h", "e"], + "network": ["h", "e"], + "edge_output_classifier": ["edge_score"], + } + + @property + def input_kwargs(self) -> typing.Dict[str, typing.Any]: + return { + **super(TripletInteractionGNN, self).input_kwargs, + "message_in": dict( + size=(self._n_hits, self.n_hiddens), dtype=torch.float32 + ), + "message_out": dict( + size=(self._n_hits, self.n_hiddens), dtype=torch.float32 + ), + "h": dict(size=(self._n_hits, self.n_hiddens), dtype=torch.float32), + "e": dict(size=(self._n_edges, self.n_hiddens), dtype=torch.float32), + } + + @property + def input_to_dynamic_axes(self): + """A dictionary that associates an input name + with the dynamic axis specification. + """ + return { + **super(TripletInteractionGNN, self).input_to_dynamic_axes, + "h": {0: "n_hits"}, + "e": {0: "n_edges"}, + "message_in": {0: "n_hits"}, + "message_out": {0: "n_hits"}, + "edge_score": {0: "n_edges"}, + } + + def _onnx_edge_output_classifier( + self, h: torch.Tensor, start: torch.Tensor, end: torch.Tensor, e: torch.Tensor + ): + return torch.sigmoid( + self.output_edge_classifier(torch.cat((h[start], h[end], e), dim=-1)) + ) + + def _onnx_encoder( + self, x: torch.Tensor, start: torch.Tensor, end: torch.Tensor + ) -> typing.Tuple[torch.Tensor, torch.Tensor]: + h = self.node_encoder(x) + e = self.edge_encoder(torch.cat((h[start], h[end]), dim=-1)) + return h, e + + def _onnx_network( + self, + h: torch.Tensor, + e: torch.Tensor, + start: torch.Tensor, + end: torch.Tensor, + message_in: torch.Tensor, + message_out: torch.Tensor, + ) -> typing.Tuple[torch.Tensor, torch.Tensor]: + h = self.node_network(torch.cat((h, message_in, message_out), dim=-1)) + h + + # Compute new edge features + e = self.edge_network(torch.cat([h[start], h[end], e], dim=-1)) + e + return h, e diff --git a/etx4velo/pipeline/GNN/triplet_gnn_base.py b/etx4velo/pipeline/GNN/triplet_gnn_base.py index 87bbb75162dcbc8091d4973c388ff311aca0bf1b..ce1b06e73854d2546c2c4d4f494b6b7e28bc58f7 100644 --- a/etx4velo/pipeline/GNN/triplet_gnn_base.py +++ b/etx4velo/pipeline/GNN/triplet_gnn_base.py @@ -1,9 +1,11 @@ """A module that define :py:class:`.TripletGNNBase`, the base class of all triplet-based GNNs in this repository. """ + from __future__ import annotations import typing import os +import inspect import numpy as np from sklearn.metrics import roc_auc_score @@ -185,7 +187,10 @@ class TripletGNNBase(ModelBase): return dict_triplet_outputs # type: ignore def forward_edges( - self, x: torch.Tensor, start: torch.Tensor, end: torch.Tensor + self, + x: torch.Tensor, + start: torch.Tensor, + end: torch.Tensor, ) -> typing.Dict[str, torch.Tensor]: """Forward step for edge classification. @@ -567,64 +572,237 @@ class TripletGNNBase(ModelBase): return outputs + @property + def _n_hits(self) -> int: + """Dummy number of hits used for ONNX export.""" + return 200 + + @property + def _n_edges(self) -> int: + """Dummy number of edges used for ONNX export.""" + return 2000 + + @property + def n_hiddens(self) -> int: + """Number of hidden units""" + return self.hparams["hidden"] + + @property + def input_kwargs(self) -> typing.Dict[str, typing.Any]: + """Associates an input name with a dictionary corresponding to + the keyword arguments used to build a dummy tensor representing the input. + This dictionary basically gives the ``size`` and ``dtype`` of the tensor. + """ + return { + "x": dict(size=(self._n_hits, 3), dtype=torch.float32), + "start": dict(size=(self._n_edges,), dtype=torch.int64), + "end": dict(size=(self._n_edges,), dtype=torch.int64), + } + + @property + def subnetwork_groups(self) -> typing.Dict[str, typing.List[str]]: + """A dictionary that associates a subnetwork actually corresponding + to a list of subnetworks, with this list of subnetworks. + """ + return {} + + @property + def subnetwork_to_outputs(self) -> typing.Dict[str, typing.List[str]]: + """A dictionary that associates a subnetwork name with the list of its + output names.""" + return {"edge": ["edge_score"]} + + @property + def subnetworks(self) -> typing.List[str]: + """List of subnetworks available. It is derived from + :py:attr:`subnetwork_to_outputs`. + """ + return list(self.subnetwork_to_outputs.keys()) + + @property + def input_to_dynamic_axes(self): + """A dictionary that associates an input name + with the dynamic axis specification. + """ + return { + "x": {0: "n_hits"}, + "start": {0: "n_edges"}, + "end": {0: "n_edges"}, + "e": {0: "n_edges"}, + } + + def get_subnetwork_inputs(self, subnetwork: str) -> typing.List[str]: + """Find the input names of a subnetwork by looking at the signature + of its ONNX forward method ``_onnx_{subnetwork}``. + + Args: + subnetwork: subnetwork name + + Returns: + List of the input names of the subnetwork. + """ + foward_func = self._get_subnetwork_forward_func(subnetwork=subnetwork) + return list(inspect.signature(foward_func).parameters.keys()) + + def get_subnetwork_outputs(self, subnetwork: str) -> typing.List[str]: + """Get the outputs of a subnetwork, as configured + by the :py:attr:`subnetwork_to_outputs` property. + + Args: + subnetwork: subnetwork name + + Returns: + List of the output names of the subnetwork. + + Raises: + KeyError: if the outputs of the subnetwork were not specified + in the :py:attr:`subnetwork_to_outputs` property. + """ + outputs = self.subnetwork_to_outputs.get(subnetwork) + if outputs is None: + raise KeyError( + f"The outputs for the subnetwork {subnetwork} were not defined. " + "To define it, you can modify the property `subnetwork_to_outputs` " + f"of the {self.__class__.__name__} class." + ) + else: + return outputs + + def _get_subnetwork_forward_func(self, subnetwork: str): + """Get the forward function of a given subnetwork. + + Args: + subnetwork + + Returns: + Method ``_onnx_{subnetwork}`` of this class + + raises: + AttributeError: the method is missing. + """ + try: + forward_func = getattr(self, f"_onnx_{subnetwork}") + except AttributeError: + raise AttributeError( + f"The forward method `_onnx_{subnetwork}` " + f"for the subnetwork {subnetwork} was not defined." + ) + return forward_func + + def _onnx_edge( + self, x: torch.Tensor, start: torch.Tensor, end: torch.Tensor + ) -> torch.Tensor: + """Forward pass for the ``edge`` subnetwork.""" + edge_output = self.forward_edges(x, start, end)["edge_output"] + return torch.sigmoid(edge_output) + def to_onnx(self, outpath: str, mode: str | None = None) -> None: + """Export the model to ONNX + + Args: + outpath: path to the ONNX output file + mode: subnetwork to save + """ from utils.modelutils.export import change_input_index_types - if mode is None: - mode = "edge" - if mode == "edge": - os.makedirs(os.path.dirname(outpath), exist_ok=True) + subnetwork = mode # mode is the subnetwork for the GNN - n_hits = 200 - n_edges = 2000 + if subnetwork is None: + subnetwork = self.subnetworks[0] - inputs = ( - # node features (x) - torch.zeros(size=(n_hits, 3), device="cuda", dtype=torch.float32), - # edge_index_start - torch.zeros(size=(n_edges,), device="cuda", dtype=torch.int64), - # edge_index_end - torch.zeros(size=(n_edges,), device="cuda", dtype=torch.int64), + if (subnetworks := self.subnetwork_groups.get(subnetwork)) is not None: + assert "{subnetwork}" in outpath, ( + f"In `{subnetwork}` mode, the output path should contain " + "the placeholder {subnetwork}." ) + for subnetwork_ in subnetworks: + self.to_onnx( + outpath=outpath.format(subnetwork=subnetwork_), + mode=subnetwork_, + ) + else: + input_names = self.get_subnetwork_inputs(subnetwork) + input_kwargs = self.input_kwargs + + def extract_input_kwargs( + input_kwargs: typing.Dict[str, typing.Any], input_name: str + ) -> typing.Dict[str, typing.Any]: + kwargs = input_kwargs.get(input_name) + if kwargs is None: + raise KeyError( + f"The subnetwork `{subnetwork}` needs the input {input_name} " + "but the latter was not defined in `input_kwargs`" + ) + else: + return kwargs + + dummy_inputs = { + input_name: torch.zeros( + **extract_input_kwargs(input_kwargs, input_name), device="cuda" + ) + for input_name in input_names + } + output_names = self.get_subnetwork_outputs(subnetwork) + + output_names_named_as_input = list( + set(output_names).intersection(input_names) + ) + modified_output_names = [ + ( + f"{output_name}_out" + if output_name in output_names_named_as_input + else output_name + ) + for output_name in output_names + ] + + os.makedirs(os.path.dirname(outpath), exist_ok=True) + + print(f"{subnetwork} input names:", ", ".join(input_names)) + print(f"{subnetwork} output names:", ", ".join(modified_output_names)) torch.onnx.export( - model=GNNEdgeExport(self), - args=inputs, + model=ModelONNXExport(model=self, subnetwork=subnetwork), + args=tuple(dummy_inputs[input_name] for input_name in input_names), f=outpath, verbose=False, # Names to assign to the input nodes of the graph, in order - input_names=["x", "start", "end"], + input_names=input_names, # Names to assign to the output nodes of the graph, in order - output_names=["edge_score"], + output_names=modified_output_names, # Apply the constant-folding optimisation: # replace some of the ops that have all constant inputs with pre-computed # constant nodes do_constant_folding=True, opset_version=17, dynamic_axes={ - "x": {0: "n_hits"}, - "start": {0: "n_edges"}, - "end": {0: "n_edges"}, - # "edge_index_t": {0: "n_edges"}, - "edge_score": {0: "n_edges"}, + modified_name: self.input_to_dynamic_axes[name] + for (name, modified_name) in zip( + input_names + output_names, input_names + modified_output_names + ) }, ) change_input_index_types(outpath) print("Model was exported to", os.path.abspath(outpath)) - else: - raise ValueError( - f"Only export `edge` is supported for {self.__class__.__name__}" - ) -class GNNEdgeExport(torch.nn.Module): - def __init__(self, model: TripletGNNBase): - super(GNNEdgeExport, self).__init__() +class ModelONNXExport(torch.nn.Module): + """Class used to export the forward pass of a subnetwork within + a :py:class:`TripletGNNBase` model. + + Attributes: + model: triplet GNN model + subnetwork: name of the subnetwork to export + """ + + def __init__(self, model: TripletGNNBase, subnetwork: str): + super(ModelONNXExport, self).__init__() self.model = model + self.subnetwork = str(subnetwork) - def forward( - self, x: torch.Tensor, start: torch.Tensor, end: torch.Tensor - ) -> torch.Tensor: + def forward(self, *args) -> typing.Any: """Forward pass to use when the model is exported to ONNX.""" - edge_output = self.model.forward_edges(x, start, end)["edge_output"] - return torch.sigmoid(edge_output) + forward_func = self.model._get_subnetwork_forward_func( + subnetwork=self.subnetwork + ) + return forward_func(*args) diff --git a/etx4velo/pipeline/utils/graphutils/edgebuilding.py b/etx4velo/pipeline/utils/graphutils/edgebuilding.py index af0c634601164b56f2d3ab9783ae04d2a48b8bae..ef09f3b6c01c263a4201e9f654406a12f8d73122 100644 --- a/etx4velo/pipeline/utils/graphutils/edgebuilding.py +++ b/etx4velo/pipeline/utils/graphutils/edgebuilding.py @@ -1,5 +1,6 @@ """A module that allows to build edges in various ways. """ + import torch from .torchutils import get_groupby_indices @@ -62,13 +63,25 @@ def get_random_pairs_plane_by_plane( if plane_range is not None else destination_plane_run_lengths[-1] ) - destination_indices_plane = torch.randint( - low=idx_next_start, # type: ignore - high=idx_next_stop, # type: ignore - size=(source_query_plane_count,), - device=query_indices.device, - ) + if idx_next_start == idx_next_stop: + destination_indices_plane = torch.full( + size=(source_query_plane_count,), + fill_value=-1, + device=query_indices.device, + dtype=torch.int64, + ) + else: + destination_indices_plane = torch.randint( + low=idx_next_start, # type: ignore + high=idx_next_stop, # type: ignore + size=(source_query_plane_count,), + device=query_indices.device, + ) list_destination_indices.append(destination_indices_plane) destination_indices = torch.cat(list_destination_indices, dim=0) - return torch.stack((source_query_indices, destination_indices)) + random_edge_indices = torch.stack((source_query_indices, destination_indices)) + + # Remove edge indices that are not valid + random_edge_indices = random_edge_indices[:, random_edge_indices[1] != -1] + return random_edge_indices diff --git a/etx4velo/pipeline/utils/modelutils/basemodel.py b/etx4velo/pipeline/utils/modelutils/basemodel.py index 4fbc43afdc1f239934983738d7e701eac3ffc241..6c70cf0d2a8c1c5919a38a7c1c91822fe95521e1 100644 --- a/etx4velo/pipeline/utils/modelutils/basemodel.py +++ b/etx4velo/pipeline/utils/modelutils/basemodel.py @@ -1,5 +1,6 @@ """Define a base model for GNN and Embedding, to avoid copy of functions. """ + from __future__ import annotations import typing import logging @@ -103,21 +104,21 @@ class ModelBase(LightningModule): else: trainset = self.trainset shuffle = True - return DataLoader(trainset, batch_size=1, num_workers=14, shuffle=shuffle) + return DataLoader(trainset, batch_size=1, num_workers=8, shuffle=shuffle) else: return None def val_dataloader(self): """Validation dataloader.""" if len(self.valset) > 0: - return DataLoader(self.valset, batch_size=1, num_workers=14) + return DataLoader(self.valset, batch_size=1, num_workers=8) else: return None def test_dataloader(self): """Test dataloader.""" if self.testset is not None and len(self.testset) > 0: - return DataLoader(self.testset, batch_size=1, num_workers=14) + return DataLoader(self.testset, batch_size=1, num_workers=8) else: return None @@ -169,10 +170,7 @@ class ModelBase(LightningModule): logging.info( f"Load {len(lazy_dataset)} files located in {lazy_dataset.input_dir}" ) - return [ - event.to(device=self.device) - for event in tqdm(iter(lazy_dataset), total=len(lazy_dataset)) - ] + return [event for event in tqdm(iter(lazy_dataset), total=len(lazy_dataset))] def load_testset_from_directory(self, input_dir: str, **kwargs): """Load a test dataset from a path to a directory. @@ -342,7 +340,7 @@ class ModelBase(LightningModule): # update params optimizer.step(closure=optimizer_closure) - optimizer.zero_grad(set_to_none=False) # type: ignore + optimizer.zero_grad(set_to_none=True) # type: ignore @classmethod def get_model_from_checkpoint( diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_base.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_base.yaml new file mode 100644 index 0000000000000000000000000000000000000000..827dbc753d99eafdfeac0381b2b461ad6ee5565a --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_base.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 3 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 7 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_e5.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_e5.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1108688e81f037138919b46147c11f560fe093cc --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_e5.yaml @@ -0,0 +1,132 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 5 + activation: Tanh + weight: 3 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 7 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_e6.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_e6.yaml new file mode 100644 index 0000000000000000000000000000000000000000..db20d895b29489e2d54d2e8784de9d908794f2ad --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_e6.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 6 + activation: Tanh + weight: 3 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 7 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h16.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h16.yaml new file mode 100644 index 0000000000000000000000000000000000000000..eca43808fa0c102fda777eb512303e80247f732e --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h16.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 16 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 3 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 10 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h32_w6.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h32_w6.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f4eabaa203716f448d6a50d3d45c09caee187251 --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h32_w6.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 32 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 10 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h32_w6_l5.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h32_w6_l5.yaml new file mode 100644 index 0000000000000000000000000000000000000000..192cf326a9d62caf03b83a9350fa7316d1a2c179 --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h32_w6_l5.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 32 + nb_layer: 5 + emb_dim: 4 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 10 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64.yaml new file mode 100644 index 0000000000000000000000000000000000000000..827dbc753d99eafdfeac0381b2b461ad6ee5565a --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 3 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 7 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w10.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w10.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fa07220c487568e74bb6a724e5f46881d59ee47a --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w10.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 64 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 10 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 10 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w6.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w6.yaml new file mode 100644 index 0000000000000000000000000000000000000000..26da4bfe010b79841c7bed4b5454ef652909f9e8 --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w6.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 64 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 10 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w6_e5.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w6_e5.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6ecdb97b34e4ddb55aa765fa42eb78c32c89e430 --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w6_e5.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 64 + nb_layer: 3 + emb_dim: 5 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 10 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w8.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w8.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bd97771a299397939003d9bf11d5c4c17756d503 --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_h64_w8.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 64 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 8 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 10 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_k60.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_k60.yaml new file mode 100644 index 0000000000000000000000000000000000000000..65c89f33b6ae7d7d49729f5e1411234357c5b848 --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_k60.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 60 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 7 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_w1.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_w1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..885a95f88c334560f56d4990b420e79b11fe6e9e --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_w1.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 1 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 7 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_w6.yaml b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_w6.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fc5748b7d8079e24639c55ff08325ca1c8f8a1b8 --- /dev/null +++ b/etx4velo/pipeline_configs/embedding_exploration/velo-query-long_w6.yaml @@ -0,0 +1,135 @@ +common: + test_dataset_names: + # - minbias-sim10b-xdigi-nospillover_v2.1_98 + # - minbias-sim10b-xdigi-nospillover_v2.1_99 + # - bu2kspi-sim10aU1-xdigi_v2.3_48 + # - bu2kstee-sim10aU1-xdigi_v2.2.2_500 + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + # - minbias-sim10b-xdigi_v2.4_1500 + - minbias-sim10b-xdigi_v2.4_1480-1485 + # - smog2-digi_v2.3_430 + # - PbPb-minbias-sim10aU1-xdigi_v2.4_702 + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + - compute_n_unique_planes + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo", "n_unique_planes", "has_velo", "has_scifi", "pt"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 50 + on_step: false + remove_noise: true + n_workers: 1 + query_particle_requirement: "(abs(pid) != 11) and has_velo and (((eta > -5) and (eta < -2)) or ((eta > 2) and (eta < 5)))" + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 1.5 + squared_distance_max_inference: 1.0 + # squared_distance_max_inference: 0.02 + k_max: 50 + warmup: 6 + # warmup: null + margin: 1.0 + lr: 0.01 + factor: 0.7 + patience: 7 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 100 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 256 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum_max + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" + +track_building_from_edges: + edge_score_cut: 0.8 + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_from_edges_processed" + +track_building_perfect: + input_subdirectory: "metric_learning_processed" + output_subdirectory: "perfect_track_building_processed" diff --git a/etx4velo/pipeline_configs/velo-incremental.yaml b/etx4velo/pipeline_configs/velo-incremental.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2e372a39086ce001bdcf76e1e4fafa9e03f178ad --- /dev/null +++ b/etx4velo/pipeline_configs/velo-incremental.yaml @@ -0,0 +1,116 @@ +common: + test_dataset_names: + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 100 + on_step: false + remove_noise: true + n_workers: 1 + from: focal-loss-nopid-triplets-embedding-3-withspillover-new + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 0.010 + squared_distance_max_inference: 0.010 + k_max: 50 + warmup: 8 + # warmup: null + margin: 0.01 + lr: 0.001 + factor: 0.7 + patience: 6 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 40 + model: incremental_triplet_interaction + triplets_step: 2000 + edge_checkpointing: false + triplet_checkpointing: false + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 64 + n_graph_iters: 5 + nb_node_encoder_layers: 3 + nb_edge_encoder_layers: 3 + layernorm: True + aggregation: sum + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" diff --git a/etx4velo/pipeline_configs/velo-scatter-sum-long-epoch-32.yaml b/etx4velo/pipeline_configs/velo-scatter-sum-long-epoch-32.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b62f830a282e3eedf4595b2cfe800ee3c432541d --- /dev/null +++ b/etx4velo/pipeline_configs/velo-scatter-sum-long-epoch-32.yaml @@ -0,0 +1,117 @@ +common: + test_dataset_names: + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 100 + on_step: false + remove_noise: true + n_workers: 1 + from: focal-loss-nopid-triplets-embedding-3-withspillover-new + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 0.010 + squared_distance_max_inference: 0.010 + k_max: 50 + warmup: 8 + # warmup: null + margin: 0.01 + lr: 0.001 + factor: 0.7 + patience: 6 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 40 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 32 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.36 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" diff --git a/etx4velo/pipeline_configs/velo-scatter-sum-long-epoch-64.yaml b/etx4velo/pipeline_configs/velo-scatter-sum-long-epoch-64.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5dd083802e0ba0880d7aa91bdffcd135563439b5 --- /dev/null +++ b/etx4velo/pipeline_configs/velo-scatter-sum-long-epoch-64.yaml @@ -0,0 +1,117 @@ +common: + test_dataset_names: + - minbias-sim10b-xdigi_v2.4_1496 + - minbias-sim10b-xdigi_v2.4_1498 + + +preprocessing: + input_dir: /scratch/acorreia/minbias-sim10b-xdigi + subdirs: {"start": 0, "stop": 1000} + output_subdirectory: "preprocessed" + processing: + - remove_curved_particles + n_events: null # if `null`, default to `n_train_events + n_test_events` + num_true_hits_threshold: 500 + hits_particles_columns: ["x", "y", "z", "plane"] + particles_columns: null + n_workers: 14 + +processing: + input_subdirectory: "preprocessed" + output_subdirectory: "processed" + n_workers: 14 + features: ["r", "phi", "z", "plane"] + feature_means: [18., 0.0, 281.0, 7.5] + feature_scales: [9.75, 1.82, 287.0, 12.5] + kept_hits_columns: ["plane", {"un_x": "x"}, {"un_y": "y"}, {"un_z": "z"}] + kept_particles_columns: ["nhits_velo"] + n_train_events: 700000 + + n_val_events: 1000 + split_seed: 0 + true_edges_column: planewise + +metric_learning: + # Dataset parameters + input_subdirectory: "processed" + output_subdirectory: "metric_learning_processed" + lazy: true + trainset_split: 100 + on_step: false + remove_noise: true + n_workers: 1 + from: focal-loss-nopid-triplets-embedding-3-withspillover-new + + # Model parameters + feature_indices: 3 + # emb_hidden: 256 + # nb_layer: 6 + # emb_dim: 4 + emb_hidden: 128 + nb_layer: 3 + emb_dim: 4 + activation: Tanh + weight: 6 + randomisation: 1 + points_per_batch: 100000 + squared_distance_max: 0.010 + squared_distance_max_inference: 0.010 + k_max: 50 + warmup: 8 + # warmup: null + margin: 0.01 + lr: 0.001 + factor: 0.7 + patience: 6 + regime: [rp, hnm] + bidir: False + plane_range: 2 + max_epochs: 300 + n_planes: 26 + + # Building + test_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + training_processing: ["edges_at_least_3_hits", "remove_edges_in_same_plane"] + + +gnn: + # Dataset parameters + input_subdirectory: "metric_learning_processed" + output_subdirectory: "gnn_processed" + edge_score_cut: 0.5 + triplet_score_cut: 0.2 + bidir: False + on_step: false + lazy: true + trainset_split: 40 + model: triplet_interaction + triplets_step: 2000 + # n_val_events: 10 + + # Model parameters + feature_indices: 3 + hidden: 64 + n_graph_iters: 6 + nb_node_layers: 3 + nb_node_encoder_layers: 3 + nb_edge_layers: 6 + nb_edge_encoder_layers: 3 + nb_edge_classifier_layers: 3 + layernorm: True + aggregation: sum + hidden_activation: SiLU + # weight: 2 + warmup: null + lr: 0.0002 + factor: 0.7 + patience: 7 + regime: [] + max_epochs: 300 + gradient_clip_val: 0.5 + +track_building: + edge_score_cut: 0.4 + triplet_score_cut: 0.32 + # input_subdirectory: "gnn_processed" + input_subdirectory: "metric_learning_processed" + output_subdirectory: "track_building_processed" diff --git a/etx4velo/scripts/onnx_export.py b/etx4velo/scripts/onnx_export.py index 2c1d21c604bf97b9c27a4289974bc31e98f0c58d..21af0dfe6d78327e2f99cfffe64f0da1087a4df8 100755 --- a/etx4velo/scripts/onnx_export.py +++ b/etx4velo/scripts/onnx_export.py @@ -2,6 +2,7 @@ """A python script to export a model to an ONNX file. """ from __future__ import annotations +import typing import os from argparse import ArgumentParser, Namespace @@ -15,7 +16,7 @@ from utils.commonutils.config import load_config, cdirs def export_model_to_onnx( path_or_config: str | dict, - step: str, + step: typing.Literal["embedding", "gnn"], mode: str | None = None, output_path: str | None = None, ) -> None: @@ -26,9 +27,15 @@ def export_model_to_onnx( # Print the summary of the model that is going to be exported torchinfo.summary(model) + subnetworks = ( + model.subnetwork_groups.get(mode) + if mode is not None and hasattr(model, "subnetwork_groups") + else None + ) + if output_path is None: # Special case: - if mode == "split": + if subnetworks: output_path = os.path.join( cdirs.export_directory, step, @@ -39,11 +46,14 @@ def export_model_to_onnx( cdirs.export_directory, step, f"{experiment_name}.onnx" ) - model.to_onnx(outpath=output_path, mode=mode) + if step == "gnn": + model.to_onnx(outpath=output_path, mode=mode) + else: + model.to_onnx(outpath=output_path, mode=mode) # Check model integrities. - if mode == "split": - for subnetwork in model.subnetworks: + if subnetworks: + for subnetwork in subnetworks: check_onnx_integrity(output_path.format(subnetwork=subnetwork)) else: check_onnx_integrity(output_path) @@ -57,6 +67,7 @@ def get_parsed_args() -> Namespace: "--step", required=True, help="Model step, such as `embedding` or `gnn`.", + choices=["embedding", "gnn"], ) parser.add_argument( "-m", @@ -80,9 +91,12 @@ def get_parsed_args() -> Namespace: if __name__ == "__main__": parsed_args = get_parsed_args() config_path: str = parsed_args.pipeline_config - step: str = parsed_args.step + step: typing.Literal["embedding", "gnn"] = parsed_args.step mode: str = parsed_args.mode output_path: str | None = parsed_args.output export_model_to_onnx( - path_or_config=config_path, step=step, mode=mode, output_path=output_path + path_or_config=config_path, + step=step, + mode=mode, + output_path=output_path, )