{
"cells": [
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-03-19T14:08:46.152785Z",
"start_time": "2025-03-19T14:08:40.892203Z"
}
},
"cell_type": "code",
"source": [
"import pickle\n",
"import torch\n",
"import os\n",
"import matplotlib.pyplot as plt\n",
"from src.utils.paths import get_path\n",
"from src.utils.utils import CPU_Unpickler\n",
"from pathlib import Path\n",
"import fastjet\n",
"from src.dataset.dataset import EventDataset\n",
"import numpy as np\n",
"filename = get_path(\"/work/gkrzmanc/jetclustering/results/train/Eval_no_pid_eval_1_2025_03_05_14_41_16/eval_1.pkl\", \"results\")\n",
"# for rinv=0.7, see /work/gkrzmanc/jetclustering/results/train/Test_betaPt_BC_rinv07_2025_01_03_15_38_58\n",
"\n",
"result = CPU_Unpickler(open(filename, \"rb\")).load()\n",
"dataset = EventDataset.from_directory(result[\"filename\"], mmap=True)\n"
],
"id": "862bda2d2f12153f",
"outputs": [
{
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: '/work/gkrzmanc/jetclustering/results/train/Eval_no_pid_eval_1_2025_03_05_14_41_16/eval_1.pkl'",
"output_type": "error",
"traceback": [
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[0;31mFileNotFoundError\u001B[0m Traceback (most recent call last)",
"Cell \u001B[0;32mIn[1], line 14\u001B[0m\n\u001B[1;32m 11\u001B[0m filename \u001B[38;5;241m=\u001B[39m get_path(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m/work/gkrzmanc/jetclustering/results/train/Eval_no_pid_eval_1_2025_03_05_14_41_16/eval_1.pkl\u001B[39m\u001B[38;5;124m\"\u001B[39m, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mresults\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[1;32m 12\u001B[0m \u001B[38;5;66;03m# for rinv=0.7, see /work/gkrzmanc/jetclustering/results/train/Test_betaPt_BC_rinv07_2025_01_03_15_38_58\u001B[39;00m\n\u001B[0;32m---> 14\u001B[0m result \u001B[38;5;241m=\u001B[39m CPU_Unpickler(\u001B[38;5;28;43mopen\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mfilename\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mrb\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m)\u001B[49m)\u001B[38;5;241m.\u001B[39mload()\n\u001B[1;32m 15\u001B[0m dataset \u001B[38;5;241m=\u001B[39m EventDataset\u001B[38;5;241m.\u001B[39mfrom_directory(result[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mfilename\u001B[39m\u001B[38;5;124m\"\u001B[39m], mmap\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m)\n",
"File \u001B[0;32m/work/gkrzmanc/1gatr/lib/python3.10/site-packages/IPython/core/interactiveshell.py:324\u001B[0m, in \u001B[0;36m_modified_open\u001B[0;34m(file, *args, **kwargs)\u001B[0m\n\u001B[1;32m 317\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m file \u001B[38;5;129;01min\u001B[39;00m {\u001B[38;5;241m0\u001B[39m, \u001B[38;5;241m1\u001B[39m, \u001B[38;5;241m2\u001B[39m}:\n\u001B[1;32m 318\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\n\u001B[1;32m 319\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mIPython won\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mt let you open fd=\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mfile\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m by default \u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 320\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mas it is likely to crash IPython. If you know what you are doing, \u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 321\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124myou can use builtins\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m open.\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 322\u001B[0m )\n\u001B[0;32m--> 324\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mio_open\u001B[49m\u001B[43m(\u001B[49m\u001B[43mfile\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n",
"\u001B[0;31mFileNotFoundError\u001B[0m: [Errno 2] No such file or directory: '/work/gkrzmanc/jetclustering/results/train/Eval_no_pid_eval_1_2025_03_05_14_41_16/eval_1.pkl'"
]
}
],
"execution_count": 1
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-03-19T14:08:46.177874072Z",
"start_time": "2025-03-05T14:22:24.763317Z"
}
},
"cell_type": "code",
"source": "",
"id": "9087767e438ba4e7",
"outputs": [],
"execution_count": null
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-03-19T14:08:46.181119723Z",
"start_time": "2025-03-05T14:22:24.880737Z"
}
},
"cell_type": "code",
"source": "",
"id": "d5c75efc6fdc491c",
"outputs": [],
"execution_count": null
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-03-19T14:08:46.182137398Z",
"start_time": "2025-03-05T14:22:24.976045Z"
}
},
"cell_type": "code",
"source": [
"# plotly 3d plot of result[\"pred\"], colored by result[\"GT_cluster\"]\n",
"from src.plotting.plot_coordinates import plot_coordinates\n",
"filt = result[\"event_idx\"] == 15\n",
"# normalized coordinates\n",
"norm_coords = result[\"pred\"][filt, 1:4] #/ np.linalg.norm(result[\"pred\"][filt, 1:4] , axis=1 ,keepdims=1)\n",
"pt = torch.tensor(result[\"pt\"][filt])\n",
"plot_coordinates(norm_coords, torch.tensor(result[\"pt\"][filt]), torch.tensor(result[\"GT_cluster\"][filt])).show()\n"
],
"id": "d584df4044d8a585",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[('X', (32, 1)), ('Y', (32, 1)), ('Z', (32, 1)), ('tIdx', (32, 1)), ('pt', (32, 1))]\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_51221/2041003322.py:6: UserWarning:\n",
"\n",
"To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
"\n",
"/tmp/ipykernel_51221/2041003322.py:7: UserWarning:\n",
"\n",
"To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
"\n"
]
},
{
"data": {
"application/vnd.plotly.v1+json": {
"data": [
{
"hovertemplate": "X=%{x}
Y=%{y}
Z=%{z}
pt=%{marker.size}
tIdx=%{marker.color}