Spaces:
Sleeping
Sleeping
File size: 39,952 Bytes
e75a247 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 |
{
"cells": [
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-12T14:32:10.766770Z",
"start_time": "2025-02-12T14:32:07.793979Z"
}
},
"cell_type": "code",
"source": [
"from src.dataset.dataset import EventDataset\n",
"from src.utils.paths import get_path"
],
"id": "7b407a8095806d09",
"outputs": [],
"execution_count": 1
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-12T14:32:12.034102Z",
"start_time": "2025-02-12T14:32:10.864499Z"
}
},
"cell_type": "code",
"source": [
"model_output_file = \"/work/gkrzmanc/jetclustering/results/train/Eval_objectness_score_2025_02_12_11_50_03/eval_9.pkl\"\n",
"\n",
"model_clusters_file = None\n",
"\n",
"path = get_path(\"/pnfs/psi.ch/cms/trivcat/store/user/gkrzmanc/jetclustering/preprocessed_data/scouting_PFNano_signals2/SVJ_hadronic_std/s-channel_mMed-900_mDark-20_rinv-0.3\", \"preprocessed_data\")\n",
"dataset = EventDataset.from_directory(path, model_clusters_file=model_clusters_file,\n",
" model_output_file=model_output_file,\n",
" include_model_jets_unfiltered=True)"
],
"id": "8d275fbf162ad4fc",
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/work/gkrzmanc/jetclustering/code/src/utils/utils.py:91: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n",
" return lambda b: torch.load(io.BytesIO(b), map_location='cpu')\n"
]
}
],
"execution_count": 2
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-12T14:32:12.482044Z",
"start_time": "2025-02-12T14:32:12.246175Z"
}
},
"cell_type": "code",
"source": [
"max_events = 1000\n",
"import torch\n",
"all_obj_scores = []\n",
"target_obj_scores = []\n",
"for i in range(len(dataset)):\n",
" if i > max_events:\n",
" break\n",
" event = dataset[i]\n",
" all_obj_scores += torch.sigmoid(event.model_jets.obj_score).tolist()\n",
" assert len(event.model_jets) == len(event.model_jets.obj_score), f\"{len(event.model_jets)} {len(event.model_jets.obj_score)}\"\n",
" target_obj_scores += event.model_jets.target_obj_score.tolist()\n"
],
"id": "b4822c0dc7f98f51",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([ 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2,\n",
" 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, -1, 0, 0, 2,\n",
" 0, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 0, 2, 2, 2,\n",
" 0, 2, 2, 1, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 1, 0,\n",
" 2, 2, 0, 2, 1, 0, 0, 1, -1, 2, 2, 0, 2, 0, 1, 0, -1, 2,\n",
" 2, 0, 2, 0, 2, 2, 1, 2, 0, 0, 2, 1, 2, 2, 2, 2, 0, 2,\n",
" 2, 2, 2, 2, -1, 0, 2, 2, 0, 2, 2, 2, -1, 1, 0, 2, -1, 2,\n",
" 2, -1, 2, -1, 0, 2, 0, 1, -1, 2, 0, 2, -1, 1, 2, 0, 2, -1,\n",
" 2, -1, 1, 0, 0, 0, 2, 0, 1, 0, -1, 1, 0, 2, 2, 2, 2, 2,\n",
" 2, 2, -1, 2, 1, 0, 0, 1, 1, 2, 0, 2, 2, 0, 2, 0, 0, 1,\n",
" 2, 2, 0, 2, 1, -1, -1, 2, -1, -1, -1, 0, 0, 2, 1, 1, 2, 2,\n",
" -1, 1, 0, 2, 2, -1, 0, -1, 0, 0, 2, 2, 2, 2, 0, 1, 0, 2,\n",
" -1, 2, 2, -1, 2, 2, 2, -1, 1, 0, 0])\n",
"Jets pt tensor([315.0177, 24.9858, 306.9994]) obj score tensor([ 2.4366, -4.1073, -1.8993])\n",
"tensor([ 2, 0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2,\n",
" 2, 0, 0, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, -1, 0, 0, 2,\n",
" 0, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 0, 2, 2, 2,\n",
" 0, 2, 2, 1, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 0, 0, 1, 0,\n",
" 2, 2, 0, 2, 1, 0, 0, 1, -1, 2, 2, 0, 2, 0, 1, 0, -1, 2,\n",
" 2, 0, 2, 0, 2, 2, 1, 2, 0, 0, 2, 1, 2, 2, 2, 2, 0, 2,\n",
" 2, 2, 2, 2, -1, 0, 2, 2, 0, 2, 2, 2, -1, 1, 0, 2, -1, 2,\n",
" 2, -1, 2, -1, 0, 2, 0, 1, -1, 2, 0, 2, -1, 1, 2, 0, 2, -1,\n",
" 2, -1, 1, 0, 0, 0, 2, 0, 1, 0, -1, 1, 0, 2, 2, 2, 2, 2,\n",
" 2, 2, -1, 2, 1, 0, 0, 1, 1, 2, 0, 2, 2, 0, 2, 0, 0, 1,\n",
" 2, 2, 0, 2, 1, -1, -1, 2, -1, -1, -1, 0, 0, 2, 1, 1, 2, 2,\n",
" -1, 1, 0, 2, 2, -1, 0, -1, 0, 0, 2, 2, 2, 2, 0, 1, 0, 2,\n",
" -1, 2, 2, -1, 2, 2, 2, -1, 1, 0, 0])\n",
"tensor([4, 4, 4, 4, 4, 5, 5, 3, 5, 5, 5, 4, 5, 5, 3, 5, 5, 5, 3, 5, 4, 5, 4, 5,\n",
" 5, 3, 5, 4, 5, 5, 5, 3, 3, 5, 5, 5, 3, 3, 5, 5, 3, 5, 5, 2, 5, 5, 5, 5,\n",
" 4, 3, 3, 3, 2, 5, 5, 5, 5, 4, 4, 4, 5, 5, 5, 5, 3, 3, 5, 4, 5, 4, 5, 3,\n",
" 4, 5, 5, 3, 5, 5, 5, 4, 5, 2, 5, 5, 3, 5, 5, 4, 3, 4, 5, 2, 2, 5, 5, 3,\n",
" 5, 2, 2, 4, 5, 5, 2, 5, 3, 5, 4, 2, 5, 5, 2, 4, 5, 3, 3, 5, 5, 5, 2, 3,\n",
" 4, 3, 5, 5, 5, 3, 5, 5, 5, 4, 4, 5, 5, 5, 4, 5, 3, 4, 4, 4, 5, 5, 4, 5,\n",
" 5, 3, 4, 3, 5, 3, 3, 3, 2, 3, 4, 4, 2, 5, 5, 3, 4, 3, 5, 2, 3, 3, 4, 4,\n",
" 3, 4, 4, 4, 5, 2, 3, 3, 2, 3, 2, 5, 3, 3, 4, 5, 5, 3, 2, 3, 3, 4, 5, 5,\n",
" 3, 3, 5, 5, 2, 4, 4, 5, 3, 5, 3, 3, 5, 3, 5, 2, 5, 4, 5, 3, 4, 4, 5, 4,\n",
" 3, 3, 2, 5, 5, 4, 4, 5, 5, 3, 3, 5, 5, 5, 4, 3, 4, 5, 3, 2, 3, 5, 3, 4,\n",
" 3, 5, 5, 5, 3, 2, 5, 3, 3, 3, 4, 5, 5, 5, 3, 5, 5, 2, 5, 4, 4, 5, 5, 5,\n",
" 4, 3, 5, 3, 5, 5, 4, 3, 5, 4, 3, 5, 4, 4, 3, 5, 3, 5, 3, 2, 5, 5, 4, 5,\n",
" 5, 5, 5, 5, 5, 3, 5, 3, 2, 4, 3, 4, 5, 3, 4, 4, 5, 3, 4, 4, 5, 5, 4, 5,\n",
" 5, 4, 4, 3, 5, 3, 2, 3, 3, 5, 3, 4, 3, 4, 5, 4, 3, 4, 3, 3, 3, 5, 5])\n",
"Jets pt tensor([ 0.0000, 0.0000, 12.2053, 60.9335, 447.7638, 361.8791]) obj score tensor([-4.4648, -1.0421, 0.6614])\n"
]
},
{
"ename": "AssertionError",
"evalue": "Error! len(obj_score)=3, len(jets_pt)=6",
"output_type": "error",
"traceback": [
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[0;31mAssertionError\u001B[0m Traceback (most recent call last)",
"Cell \u001B[0;32mIn[3], line 8\u001B[0m\n\u001B[1;32m 6\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m i \u001B[38;5;241m>\u001B[39m max_events:\n\u001B[1;32m 7\u001B[0m \u001B[38;5;28;01mbreak\u001B[39;00m\n\u001B[0;32m----> 8\u001B[0m event \u001B[38;5;241m=\u001B[39m \u001B[43mdataset\u001B[49m\u001B[43m[\u001B[49m\u001B[43mi\u001B[49m\u001B[43m]\u001B[49m\n\u001B[1;32m 9\u001B[0m all_obj_scores \u001B[38;5;241m+\u001B[39m\u001B[38;5;241m=\u001B[39m torch\u001B[38;5;241m.\u001B[39msigmoid(event\u001B[38;5;241m.\u001B[39mmodel_jets\u001B[38;5;241m.\u001B[39mobj_score)\u001B[38;5;241m.\u001B[39mtolist()\n\u001B[1;32m 10\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(event\u001B[38;5;241m.\u001B[39mmodel_jets) \u001B[38;5;241m==\u001B[39m \u001B[38;5;28mlen\u001B[39m(event\u001B[38;5;241m.\u001B[39mmodel_jets\u001B[38;5;241m.\u001B[39mobj_score), \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mlen\u001B[39m(event\u001B[38;5;241m.\u001B[39mmodel_jets)\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m \u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mlen\u001B[39m(event\u001B[38;5;241m.\u001B[39mmodel_jets\u001B[38;5;241m.\u001B[39mobj_score)\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m\n",
"File \u001B[0;32m/work/gkrzmanc/jetclustering/code/src/dataset/dataset.py:558\u001B[0m, in \u001B[0;36mEventDataset.__getitem__\u001B[0;34m(self, i)\u001B[0m\n\u001B[1;32m 556\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;21m__getitem__\u001B[39m(\u001B[38;5;28mself\u001B[39m, i):\n\u001B[1;32m 557\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m i \u001B[38;5;241m<\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mn_events, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mIndex out of bounds: \u001B[39m\u001B[38;5;132;01m%d\u001B[39;00m\u001B[38;5;124m >= \u001B[39m\u001B[38;5;132;01m%d\u001B[39;00m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m%\u001B[39m (i, \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mn_events)\n\u001B[0;32m--> 558\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mget_idx\u001B[49m\u001B[43m(\u001B[49m\u001B[43mi\u001B[49m\u001B[43m)\u001B[49m\n",
"File \u001B[0;32m/work/gkrzmanc/jetclustering/code/src/dataset/dataset.py:419\u001B[0m, in \u001B[0;36mEventDataset.get_idx\u001B[0;34m(self, i)\u001B[0m\n\u001B[1;32m 416\u001B[0m result \u001B[38;5;241m=\u001B[39m {key: EventCollection\u001B[38;5;241m.\u001B[39mdeserialize(result[key], batch_number\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m, \u001B[38;5;28mcls\u001B[39m\u001B[38;5;241m=\u001B[39mEvent\u001B[38;5;241m.\u001B[39mevt_collections[key]) \u001B[38;5;28;01mfor\u001B[39;00m\n\u001B[1;32m 417\u001B[0m key \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mattrs}\n\u001B[1;32m 418\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmodel_output \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m--> 419\u001B[0m result[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mmodel_jets\u001B[39m\u001B[38;5;124m\"\u001B[39m], bc_scores_pfcands, bc_labels_pfcands \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mget_model_jets\u001B[49m\u001B[43m(\u001B[49m\u001B[43mi\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mpfcands\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mresult\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mpfcands\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43minclude_target\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdq\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mresult\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mmatrix_element_gen_particles\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 420\u001B[0m result[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mpfcands\u001B[39m\u001B[38;5;124m\"\u001B[39m]\u001B[38;5;241m.\u001B[39mbc_scores_pfcands \u001B[38;5;241m=\u001B[39m bc_scores_pfcands\n\u001B[1;32m 421\u001B[0m result[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mpfcands\u001B[39m\u001B[38;5;124m\"\u001B[39m]\u001B[38;5;241m.\u001B[39mbc_labels_pfcands \u001B[38;5;241m=\u001B[39m bc_labels_pfcands\n",
"File \u001B[0;32m/work/gkrzmanc/jetclustering/code/src/dataset/dataset.py:536\u001B[0m, in \u001B[0;36mEventDataset.get_model_jets\u001B[0;34m(self, i, pfcands, filter, dq, include_target)\u001B[0m\n\u001B[1;32m 534\u001B[0m obj_score \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmodel_output[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mobj_score_pred\u001B[39m\u001B[38;5;124m\"\u001B[39m][(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmodel_output[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mevent_clusters_idx\u001B[39m\u001B[38;5;124m\"\u001B[39m] \u001B[38;5;241m==\u001B[39m i)]\n\u001B[1;32m 535\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mJets pt\u001B[39m\u001B[38;5;124m\"\u001B[39m, jets_pt, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mobj score\u001B[39m\u001B[38;5;124m\"\u001B[39m, obj_score)\n\u001B[0;32m--> 536\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m \u001B[38;5;28mlen\u001B[39m(obj_score) \u001B[38;5;241m==\u001B[39m \u001B[38;5;28mlen\u001B[39m(jets_pt), \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mError! len(obj_score)=\u001B[39m\u001B[38;5;132;01m%d\u001B[39;00m\u001B[38;5;124m, len(jets_pt)=\u001B[39m\u001B[38;5;132;01m%d\u001B[39;00m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m%\u001B[39m (\n\u001B[1;32m 537\u001B[0m \u001B[38;5;28mlen\u001B[39m(obj_score), \u001B[38;5;28mlen\u001B[39m(jets_pt))\n\u001B[1;32m 538\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m include_target:\n\u001B[1;32m 539\u001B[0m target_obj_score \u001B[38;5;241m=\u001B[39m EventDataset\u001B[38;5;241m.\u001B[39mget_target_obj_score(jets_eta, jets_phi, jets_pt, torch\u001B[38;5;241m.\u001B[39mzeros(jets_pt\u001B[38;5;241m.\u001B[39msize(\u001B[38;5;241m0\u001B[39m)), dq\u001B[38;5;241m.\u001B[39meta, dq\u001B[38;5;241m.\u001B[39mphi, torch\u001B[38;5;241m.\u001B[39mzeros(dq\u001B[38;5;241m.\u001B[39meta\u001B[38;5;241m.\u001B[39msize(\u001B[38;5;241m0\u001B[39m)))\n",
"\u001B[0;31mAssertionError\u001B[0m: Error! len(obj_score)=3, len(jets_pt)=6"
]
}
],
"execution_count": 3
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-12T14:30:56.370301947Z",
"start_time": "2025-02-11T12:51:26.851410Z"
}
},
"cell_type": "code",
"source": "dir(event.model_jets)",
"id": "6512f5fdd101ad0a",
"outputs": [
{
"data": {
"text/plain": [
"['E',\n",
" '__class__',\n",
" '__delattr__',\n",
" '__dict__',\n",
" '__dir__',\n",
" '__doc__',\n",
" '__eq__',\n",
" '__format__',\n",
" '__ge__',\n",
" '__getattribute__',\n",
" '__getitem__',\n",
" '__gt__',\n",
" '__hash__',\n",
" '__init__',\n",
" '__init_subclass__',\n",
" '__le__',\n",
" '__len__',\n",
" '__lt__',\n",
" '__module__',\n",
" '__ne__',\n",
" '__new__',\n",
" '__reduce__',\n",
" '__reduce_ex__',\n",
" '__repr__',\n",
" '__setattr__',\n",
" '__sizeof__',\n",
" '__str__',\n",
" '__subclasshook__',\n",
" '__weakref__',\n",
" 'area',\n",
" 'copy',\n",
" 'deserialize',\n",
" 'eta',\n",
" 'init_attrs',\n",
" 'mask',\n",
" 'mass',\n",
" 'obj_score',\n",
" 'p',\n",
" 'phi',\n",
" 'pt',\n",
" 'pxyz',\n",
" 'serialize',\n",
" 'target_obj_score',\n",
" 'theta']"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 4
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-12T14:30:56.389354987Z",
"start_time": "2025-02-11T12:51:26.920277Z"
}
},
"cell_type": "code",
"source": [
"len(all_obj_scores)\n",
"target_obj_scores = torch.tensor(target_obj_scores).int()\n",
"print(len(target_obj_scores))\n",
"print(len(all_obj_scores))\n",
"all_obj_scores = torch.tensor(all_obj_scores)"
],
"id": "75269b8834cec48e",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1679\n",
"1679\n"
]
}
],
"execution_count": 5
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-12T14:30:56.390925882Z",
"start_time": "2025-02-11T12:51:26.979844Z"
}
},
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"fig, ax = plt.subplots()\n",
"ax.hist(all_obj_scores, histtype=\"step\", bins=100, label=\"all\")\n",
"ax.hist(all_obj_scores[target_obj_scores==1], histtype=\"step\", bins=100, color=\"green\", label=\"\")\n",
"ax.hist(all_obj_scores[target_obj_scores==0], histtype=\"step\", bins=100, color=\"gray\")\n",
"ax.set_yscale(\"log\")\n",
"fig.show()"
],
"id": "5ca859cb55f86fe7",
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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v/qV/umf/kmtra1FiHB6yaW/3377bf3iF7/Qn/3Zn+npp59We3u7Pve5zykSiejuu+8uRthlKZe+/uQnP6lgMKiPfvSjMk1Tw8PD+qu/+iv97d/+bTFCnlHS/X7s7e3VwMCAamtrC9LutHtygvLxjW98Q48++qhaWlrkcDhKHc600tfXp23btul73/ue3G53qcOZEUZHR9XU1KSHHnpIK1as0JYtW/TlL39ZDz74YKlDm3YOHTqkr3/96/rud7+r1157TU8++aSeeuop3XPPPaUODXky7Z6cuN1uVVZW6syZMwnbz5w5o/PPPz/lMeeff35W+2NMLn0d9a1vfUvf+MY39Nxzz+mKK64oZJjTQrZ9/dZbb+n3v/+9rr/++ti20dFRSVJVVZXeeOMNXXzxxYUNuozl8t72eDyy2+2qrKyMbWtubtbp06c1NDSk6urqgsZcrnLp67vuukvbtm3TX/7lX0qSLr/8cvX39+u2227Tl7/8ZVVU8Hd3vqT7/Th79uyCPTWRpuGTk+rqaq1YsUIHDhyIbRsdHdWBAwe0Zs2alMesWbMmYX9J+vd///e0+2NMLn0tSd/85jd1zz336JlnntHVV19djFDLXrZ9/aEPfUi//e1v1draGvv/G264QevWrVNra6sWLlxYzPDLTi7v7Y985CNqb2+PJYGS9Oabb8rj8ZCYTCCXvjYMY1wCEk0KTZaLy6uS/X4s6HDbEnn00UfNmpoa85FHHjGPHj1q3nbbbWZDQ4N5+vRp0zRNc9u2beadd94Z2//FF180q6qqzG9961tmW1ubeffddzOVOEPZ9vU3vvENs7q62nziiSfMQCAQ+/++vr5SXULZyLavkzFbJzvZ9ndHR4dZX19v7ty503zjjTfMn/3sZ2ZTU5P5D//wD6W6hLKRbV/ffffdZn19vfnjH//YfPvtt81nn33WvPjii83NmzeX6hLKRl9fn3nkyBHzyJEjpiTzvvvuM48cOWK+8847pmma5p133mlu27Yttn90KvFf//Vfm21tbabf72cq8VR8+9vfNr1er1ldXW2uWrXK/PWvfx372bXXXmtu3749Yf/HH3/cXLJkiVldXW1eeuml5lNPPVXkiMtXNn39gQ98wJQ07v/vvvvu4gdehrJ9X8cjOcletv39H//xH+bq1avNmpoac9GiReY//uM/msPDw0WOujxl09eRSMT8+7//e/Piiy82HQ6HuXDhQvNzn/uc2d3dXfzAy8zBgwdT/hsc7d/t27eb11577bhjli1bZlZXV5uLFi0y//mf/7ngcdpMk2dgAADAOqbdmBMAAFDeSE4AAIClkJwAAABLITkBAACWQnICAAAsheQEAABYCskJAACwFJITAABgKSQnAADAUkhOAACApZCcAAAASyE5AQAAlvL/A7+/DImP9q7CAAAAAElFTkSuQmCC"
},
"metadata": {},
"output_type": "display_data"
}
],
"execution_count": 6
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-12T14:30:56.404842685Z",
"start_time": "2025-02-11T12:51:28.121209Z"
}
},
"cell_type": "code",
"source": "",
"id": "b1d52ebccd4befee",
"outputs": [],
"execution_count": null
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-02-12T14:30:56.415139614Z",
"start_time": "2025-02-11T12:51:28.174332Z"
}
},
"cell_type": "code",
"source": "",
"id": "5052a19722e9e60b",
"outputs": [],
"execution_count": null
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"language": "python",
"display_name": "Python 3 (ipykernel)"
}
},
"nbformat": 5,
"nbformat_minor": 9
}
|