{ "cells": [ { "cell_type": "markdown", "id": "459912ac", "metadata": {}, "source": [ "## Higgs_idx Debug Notebook" ] }, { "cell_type": "markdown", "id": "8a66423b", "metadata": {}, "source": [ "### auxiliary" ] }, { "cell_type": "code", "execution_count": 1, "id": "483bfebc", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:05:35.902982Z", "start_time": "2023-03-01T21:05:34.001988Z" } }, "outputs": [], "source": [ "import logging\n", "from pathlib import Path\n", "\n", "import awkward as ak\n", "import click\n", "import h5py\n", "import numpy as np\n", "import uproot\n", "import vector\n", "\n", "from src.data.delphes.matching import (\n", " match_fjet_to_jet,\n", " match_higgs_to_fjet,\n", " match_higgs_to_jet,\n", ")" ] }, { "cell_type": "code", "execution_count": 2, "id": "909fcd5f", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:05:35.908522Z", "start_time": "2023-03-01T21:05:35.905284Z" } }, "outputs": [], "source": [ "vector.register_awkward()\n", "vector.register_numba()\n", "ak.numba.register()\n", "\n", "logging.basicConfig(level=logging.INFO)\n", "\n", "N_JETS = 10\n", "N_FJETS = 3\n", "MIN_JET_PT = 20\n", "MIN_FJET_PT = 200\n", "MIN_JETS = 6\n", "PROJECT_DIR = Path.cwd().resolve().parents[3]" ] }, { "cell_type": "code", "execution_count": 3, "id": "78b6e83c", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:05:35.911879Z", "start_time": "2023-03-01T21:05:35.909704Z" } }, "outputs": [], "source": [ "def to_np_array(ak_array, max_n=10, pad=0):\n", " return ak.fill_none(ak.pad_none(ak_array, max_n, clip=True, axis=-1), pad).to_numpy()" ] }, { "cell_type": "markdown", "id": "4c16f147", "metadata": {}, "source": [ "#### Mimicing main() in this notebook" ] }, { "cell_type": "code", "execution_count": 4, "id": "607eaef0", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:05:36.245069Z", "start_time": "2023-03-01T21:05:35.913784Z" } }, "outputs": [], "source": [ "in_files = Path(\"/hhh-vol/data/delphes/v2/GF_HHH_SM_c3_0_d4_0_14TeV/\").glob(\"sample_*.root\")\n", "in_files = [str(p) for p in in_files]\n", "out_file = \"/hhh-vol/data/delphes/v2/hhh_testing.h5\"\n", "train_frac = 0.95" ] }, { "cell_type": "code", "execution_count": 5, "id": "f0ae3490", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:06:07.955143Z", "start_time": "2023-03-01T21:05:47.056217Z" } }, "outputs": [], "source": [ "file_name = in_files[0]\n", "in_file = uproot.open(file_name)\n", "events = in_file[\"Delphes\"]\n", "num_entries = events.num_entries\n", "if \"training\" in out_file:\n", " entry_start = None\n", " entry_stop = int(train_frac * num_entries)\n", "else:\n", " entry_start = int(train_frac * num_entries)\n", " entry_stop = None\n", "\n", "keys = (\n", " [key for key in events.keys() if \"Particle/Particle.\" in key and \"fBits\" not in key]\n", " + [key for key in events.keys() if \"Jet/Jet.\" in key]\n", " + [key for key in events.keys() if \"FatJet/FatJet.\" in key and \"fBits\" not in key]\n", ")\n", "arrays = events.arrays(keys, entry_start=entry_start, entry_stop=entry_stop)\n", " \n", " " ] }, { "cell_type": "code", "execution_count": 6, "id": "bcd1ac7c", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:07:23.876611Z", "start_time": "2023-03-01T21:07:21.748113Z" } }, "outputs": [], "source": [ "part_pid = arrays[\"Particle/Particle.PID\"] # PDG ID\n", "part_m1 = arrays[\"Particle/Particle.M1\"]\n", "# note: see some +/-15 PDG ID particles (taus) so h->tautau is turned on\n", "# explicitly mask these events out, just keeping hhh6b events\n", "condition_hhh6b = np.logical_and(np.abs(part_pid) == 5, part_pid[part_m1] == 25)\n", "mask_hhh6b = ak.count(part_pid[condition_hhh6b], axis=-1) == 6\n", "part_pid = part_pid[mask_hhh6b]\n", "part_pt = arrays[\"Particle/Particle.PT\"][mask_hhh6b]\n", "part_eta = arrays[\"Particle/Particle.Eta\"][mask_hhh6b]\n", "part_phi = arrays[\"Particle/Particle.Phi\"][mask_hhh6b]\n", "part_mass = arrays[\"Particle/Particle.Mass\"][mask_hhh6b]\n", "part_m1 = arrays[\"Particle/Particle.M1\"][mask_hhh6b]\n", "part_d1 = arrays[\"Particle/Particle.D1\"][mask_hhh6b]\n", "\n", "# small-radius jet info\n", "pt = arrays[\"Jet/Jet.PT\"][mask_hhh6b]\n", "eta = arrays[\"Jet/Jet.Eta\"][mask_hhh6b]\n", "phi = arrays[\"Jet/Jet.Phi\"][mask_hhh6b]\n", "mass = arrays[\"Jet/Jet.Mass\"][mask_hhh6b]\n", "btag = arrays[\"Jet/Jet.BTag\"][mask_hhh6b]\n", "flavor = arrays[\"Jet/Jet.Flavor\"][mask_hhh6b]\n", "\n", "# large-radius jet info\n", "fj_pt = arrays[\"FatJet/FatJet.PT\"][mask_hhh6b]\n", "fj_eta = arrays[\"FatJet/FatJet.Eta\"][mask_hhh6b]\n", "fj_phi = arrays[\"FatJet/FatJet.Phi\"][mask_hhh6b]\n", "fj_mass = arrays[\"FatJet/FatJet.Mass\"][mask_hhh6b]\n", "fj_sdp4 = arrays[\"FatJet/FatJet.SoftDroppedP4[5]\"][mask_hhh6b]\n", "# first entry (i = 0) is the total SoftDropped Jet 4-momenta\n", "# from i = 1 to 4 are the pruned subjets 4-momenta\n", "fj_sdmass = np.sqrt(\n", " fj_sdp4.fE[..., 0] ** 2 - fj_sdp4.fP.fX[..., 0] ** 2 - fj_sdp4.fP.fY[..., 0] ** 2 - fj_sdp4.fP.fZ[..., 0] ** 2\n", ")\n", "fj_nsub = arrays[\"FatJet/FatJet.NSubJetsSoftDropped\"][mask_hhh6b]\n", "fj_taus = arrays[\"FatJet/FatJet.Tau[5]\"][mask_hhh6b]\n", "# just saving just tau21 and tau32, can save others if useful\n", "fj_tau21 = fj_taus[..., 1] / fj_taus[..., 0]\n", "fj_tau32 = fj_taus[..., 2] / fj_taus[..., 1]\n", "fj_areap4 = arrays[\"FatJet/FatJet.Area\"][mask_hhh6b]\n", "fj_area = np.hypot(fj_areap4.fP.fX, fj_areap4.fP.fY)\n", "fj_charge = arrays[\"FatJet/FatJet.Charge\"][mask_hhh6b]\n", "fj_ptd = arrays[\"FatJet/FatJet.PTD\"][mask_hhh6b]\n", "fj_ehadovereem = arrays[\"FatJet/FatJet.EhadOverEem\"][mask_hhh6b]\n", "fj_neutralenergyfrac = arrays[\"FatJet/FatJet.NeutralEnergyFraction\"][mask_hhh6b]\n", "fj_chargedenergyfrac = arrays[\"FatJet/FatJet.ChargedEnergyFraction\"][mask_hhh6b]\n", "fj_nneutral = arrays[\"FatJet/FatJet.NNeutrals\"][mask_hhh6b]\n", "fj_ncharged = arrays[\"FatJet/FatJet.NCharged\"][mask_hhh6b]\n", "\n", "particles = ak.zip(\n", " {\n", " \"pt\": part_pt,\n", " \"eta\": part_eta,\n", " \"phi\": part_phi,\n", " \"mass\": part_mass,\n", " \"pid\": part_pid,\n", " \"m1\": part_m1,\n", " \"d1\": part_d1,\n", " \"idx\": ak.local_index(part_pid),\n", " },\n", " with_name=\"Momentum4D\",\n", ")\n", "\n", "higgs_condition = np.logical_and(particles.pid == 25, np.abs(particles.pid[particles.d1]) == 5)\n", "higgses = ak.to_regular(particles[higgs_condition], axis=1)\n", "bquark_condition = np.logical_and(np.abs(particles.pid) == 5, particles.pid[particles.m1] == 25)\n", "bquarks = ak.to_regular(particles[bquark_condition], axis=1)\n", "\n", "jets = ak.zip(\n", " {\n", " \"pt\": pt,\n", " \"eta\": eta,\n", " \"phi\": phi,\n", " \"mass\": mass,\n", " \"flavor\": flavor,\n", " \"idx\": ak.local_index(pt),\n", " },\n", " with_name=\"Momentum4D\",\n", ")\n", "\n", "fjets = ak.zip(\n", " {\n", " \"pt\": fj_pt,\n", " \"eta\": fj_eta,\n", " \"phi\": fj_phi,\n", " \"mass\": fj_mass,\n", " \"idx\": ak.local_index(fj_pt),\n", " },\n", " with_name=\"Momentum4D\",\n", ")\n", "\n", "higgs_idx = match_higgs_to_jet(higgses, bquarks, jets, ak.ArrayBuilder()).snapshot()\n", "matched_fj_idx = match_fjet_to_jet(fjets, jets, ak.ArrayBuilder()).snapshot()\n", "fj_higgs_idx = match_higgs_to_fjet(higgses, bquarks, fjets, ak.ArrayBuilder()).snapshot()\n" ] }, { "cell_type": "code", "execution_count": 11, "id": "cd081bff", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:14:43.849139Z", "start_time": "2023-03-01T21:14:43.802115Z" } }, "outputs": [], "source": [ "higgs_all = ak.flatten(higgs_idx)" ] }, { "cell_type": "code", "execution_count": 12, "id": "84abc9cf", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:15:03.480975Z", "start_time": "2023-03-01T21:15:03.043052Z" } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 13, "id": "1a83c343", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T21:15:11.185169Z", "start_time": "2023-03-01T21:15:10.975873Z" }, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "(array([5851., 0., 0., 0., 0., 3616., 0., 3953., 0.,\n", " 4246.]),\n", " array([-1. , -0.6, -0.2, 0.2, 0.6, 1. , 1.4, 1.8, 2.2, 2.6, 3. ]),\n", " )" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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AADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACwEhEDAACsRMQAAAArETEAAMBKRAwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArBQ30AsAAADS3SvfGOglxOzDNY8M6NfnSgwAALASEQMAAKxExAAAACsRMQAAwEpEDAAAsBIRAwAArETEAAAAKxExAADASkQMAACw0ueKmLKyMnk8HhUXF7vHjDEqKSlRamqqhg0bpqlTp+rYsWNRz+vo6NCSJUs0ZswYjRgxQoWFhTp9+nTUTDgcViAQkOM4chxHgUBA586d+zzLBQAAg0ifI6aurk5btmzRxIkTo46vXbtW69atU3l5uerq6uTz+TRjxgy1tbW5M8XFxaqsrFRFRYX27dun8+fPq6CgQJcuXXJnioqK1NDQoGAwqGAwqIaGBgUCgb4uFwAADDJ9ipjz58/r8ccf19atWzVq1Cj3uDFGGzZs0OrVqzVnzhxlZWVpx44d+vTTT7V7925JUiQS0bZt2/Tiiy9q+vTpmjRpknbu3KkjR47orbfekiSdOHFCwWBQP/7xj+X3++X3+7V161b913/9l06ePHkDtg0AAGzXp4h56qmn9Mgjj2j69OlRxxsbGxUKhZSfn+8e83q9mjJlivbv3y9Jqq+v18WLF6NmUlNTlZWV5c7U1NTIcRzl5OS4M7m5uXIcx50BAABfbDH/FuuKigr993//t+rq6ro8FgqFJEkpKSlRx1NSUvTRRx+5MwkJCVFXcK7MXHl+KBRScnJyl9dPTk52Z67W0dGhjo4O935ra2sMuwIAALaJ6UpMU1OT/vEf/1E7d+7U0KFDrznn8Xii7htjuhy72tUz3c339DplZWXum4Adx1FaWlqPXw8AANgtpoipr69XS0uLsrOzFRcXp7i4OFVXV+tf//VfFRcX516BufpqSUtLi/uYz+dTZ2enwuFwjzNnzpzp8vXPnj3b5SrPFatWrVIkEnFvTU1NsWwNAABYJqa/Tpo2bZqOHDkSdezv/u7vdM899+j73/++vvzl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ElFeXl6vv94nn3yipqamqHC72RISEpSdna2qqir99V//tXu8qqpKjz32WLfP8fv9+vnPfx51bM+ePZo8ebLi4+P7db190Zc9dufw4cMDeq5uJNvO4Y1wK58/Y4yWLFmiyspK7d27V+np6dd9jk3nsC/7686tfA67Y4y55tsFBuz89evbhgeJjz76yBw+fNg8//zz5vbbbzeHDx82hw8fNm1tbe5MZmamee2119z7a9asMY7jmNdee80cOXLEfOc73zFjx441ra2tA7GF65o1a5aZOHGiqampMTU1NWbChAmmoKAgauaP99jW1maWLVtm9u/fbxobG83bb79t/H6/+ZM/+ZMB32NFRYWJj48327ZtM8ePHzfFxcVmxIgR5sMPPzTGGLNy5UoTCATc+Q8++MAMHz7cfO973zPHjx8327ZtM/Hx8eY//uM/BmoL1xXrHtevX28qKyvNb37zG3P06FGzcuVKI8m8+uqrA7WFHrW1tbn/nEky69atM4cPHzYfffSRMcb+cxjr/mw7f0888YRxHMfs3bvXNDc3u7dPP/3UnbH5HPZlf7adw1WrVpl33nnHNDY2mnfffdc8++yz5rbbbjN79uwxxtw654+I6YV58+YZSV1ub7/9tjsjybz88svu/cuXL5vnnnvO+Hw+4/V6zUMPPWSOHDly8xffS5988ol5/PHHTWJioklMTDSPP/54l48C/vEeP/30U5Ofn2/uuOMOEx8fb+666y4zb948c+rUqZu/+G7827/9mxk3bpxJSEgwX/3qV6M++jhv3jwzZcqUqPm9e/eaSZMmmYSEBHP33XebTZs23eQVxy6WPb7wwgvmT//0T83QoUPNqFGjzAMPPGDeeOONAVh171z5OOrVt3nz5hlj7D+Hse7PtvPX3d6u/nekzeewL/uz7Rz+/d//vfvvlzvuuMNMmzbNDRhjbp3z5zHm/73zBgAAwCJ8xBoAAFiJiAEAAFYiYgAAgJWIGAAAYCUiBgAAWImIAQAAViJiAACAlYgYAABgJSIGAABYiYgBAABWImIAAICViBgAAGCl/wO91UeSBHYX3AAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(higgs_all)" ] }, { "cell_type": "code", "execution_count": 40, "id": "88c86ab5", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T22:51:00.397863Z", "start_time": "2023-03-01T22:51:00.296706Z" } }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def get_n_features_v2(arrays, n):\n", " result = []\n", " for array in arrays:\n", " if ak.num(array, axis=0) > n:\n", " result.append(array[0:n])\n", " else:\n", " result.append(array)\n", " return ak.Array(result)" ] }, { "cell_type": "code", "execution_count": 41, "id": "96764b54", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T22:52:43.242748Z", "start_time": "2023-03-01T22:52:42.719274Z" } }, "outputs": [], "source": [ "# keep events with >= MIN_JETS small-radius jets\n", "mask_minjets = ak.num(pt[pt > MIN_JET_PT]) >= MIN_JETS\n", "# sort by btag first, then pt\n", "sorted_by_pt = ak.argsort(pt, ascending=False, axis=-1)\n", "sorted = ak.concatenate([sorted_by_pt[btag == 1], sorted_by_pt[btag == 0]], axis=-1)\n", "btag = btag[sorted][mask_minjets]\n", "pt = pt[sorted][mask_minjets]\n", "eta = eta[sorted][mask_minjets]\n", "phi = phi[sorted][mask_minjets]\n", "higgs_idx = higgs_idx[sorted][mask_minjets]\n", "matched_fj_idx = matched_fj_idx[sorted][mask_minjets]\n", "\n", "btag = get_n_features_v2(btag, N_JETS)\n", "pt = get_n_features_v2(pt, N_JETS)\n", "eta = get_n_features_v2(eta, N_JETS)\n", "phi = get_n_features_v2(phi, N_JETS)\n", "higgs_idx = get_n_features_v2(higgs_idx, N_JETS)\n", "matched_fj_idx = get_n_features_v2(matched_fj_idx, N_JETS)\n", "\n", "# sort by btag first, then pt\n", "sorted_by_fj_pt = ak.argsort(fj_pt, ascending=False, axis=-1)\n", "fj_pt = fj_pt[sorted_by_fj_pt][mask_minjets]\n", "fj_eta = fj_eta[sorted_by_fj_pt][mask_minjets]\n", "fj_phi = fj_phi[sorted_by_fj_pt][mask_minjets]\n", "fj_mass = fj_mass[sorted_by_fj_pt][mask_minjets]\n", "fj_sdmass = fj_sdmass[sorted_by_fj_pt][mask_minjets]\n", "fj_nsub = fj_nsub[sorted_by_fj_pt][mask_minjets]\n", "fj_tau21 = fj_tau21[sorted_by_fj_pt][mask_minjets]\n", "fj_tau32 = fj_tau32[sorted_by_fj_pt][mask_minjets]\n", "fj_area = fj_area[sorted_by_fj_pt][mask_minjets]\n", "fj_charge = fj_charge[sorted_by_fj_pt][mask_minjets]\n", "fj_ptd = fj_ptd[sorted_by_fj_pt][mask_minjets]\n", "fj_ehadovereem = fj_ehadovereem[sorted_by_fj_pt][mask_minjets]\n", "fj_neutralenergyfrac = fj_neutralenergyfrac[sorted_by_fj_pt][mask_minjets]\n", "fj_chargedenergyfrac = fj_chargedenergyfrac[sorted_by_fj_pt][mask_minjets]\n", "fj_nneutral = fj_nneutral[sorted_by_fj_pt][mask_minjets]\n", "fj_ncharged = fj_ncharged[sorted_by_fj_pt][mask_minjets]\n", "fj_higgs_idx = fj_higgs_idx[sorted_by_fj_pt][mask_minjets]\n" ] }, { "cell_type": "code", "execution_count": 43, "id": "d786b3c8", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T22:56:45.167710Z", "start_time": "2023-03-01T22:56:45.157078Z" } }, "outputs": [], "source": [ "# mask to define zero-padded small-radius jets\n", "mask = pt > MIN_JET_PT\n", "\n", "# mask to define zero-padded large-radius jets\n", "fj_mask = fj_pt > MIN_FJET_PT\n", "\n", "# index of small-radius jet if Higgs is reconstructed\n", "h1_bs = ak.local_index(higgs_idx)[higgs_idx == 1]\n", "h2_bs = ak.local_index(higgs_idx)[higgs_idx == 2]\n", "h3_bs = ak.local_index(higgs_idx)[higgs_idx == 3]\n", "\n", "# index of large-radius jet if Higgs is reconstructed\n", "h1_bb = ak.local_index(fj_higgs_idx)[fj_higgs_idx == 1]\n", "h2_bb = ak.local_index(fj_higgs_idx)[fj_higgs_idx == 2]\n", "h3_bb = ak.local_index(fj_higgs_idx)[fj_higgs_idx == 3]\n" ] }, { "cell_type": "code", "execution_count": 44, "id": "1c4c5d23", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T22:56:59.260143Z", "start_time": "2023-03-01T22:56:59.245237Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:root:some Higgs bosons match to 3 small-radius jets! Check truth\n" ] } ], "source": [ "# check/fix small-radius jet truth (ensure max 2 small-radius jets per higgs)\n", "check = (\n", " np.unique(ak.count(h1_bs, axis=-1)).to_list()\n", " + np.unique(ak.count(h2_bs, axis=-1)).to_list()\n", " + np.unique(ak.count(h3_bs, axis=-1)).to_list()\n", ")\n", "if 3 in check:\n", " logging.warning(\"some Higgs bosons match to 3 small-radius jets! Check truth\")\n", "\n", "# check/fix large-radius jet truth (ensure max 1 large-radius jet per higgs)\n", "fj_check = (\n", " np.unique(ak.count(h1_bb, axis=-1)).to_list()\n", " + np.unique(ak.count(h2_bb, axis=-1)).to_list()\n", " + np.unique(ak.count(h3_bb, axis=-1)).to_list()\n", ")\n", "if 2 in fj_check:\n", " logging.warning(\"some Higgs bosons match to 2 large-radius jets! Check truth\")\n", "\n", "h1_bs = ak.fill_none(ak.pad_none(h1_bs, 2, clip=True), -1)\n", "h2_bs = ak.fill_none(ak.pad_none(h2_bs, 2, clip=True), -1)\n", "h3_bs = ak.fill_none(ak.pad_none(h3_bs, 2, clip=True), -1)\n", "\n", "h1_bb = ak.fill_none(ak.pad_none(h1_bb, 1, clip=True), -1)\n", "h2_bb = ak.fill_none(ak.pad_none(h2_bb, 1, clip=True), -1)\n", "h3_bb = ak.fill_none(ak.pad_none(h3_bb, 1, clip=True), -1)\n", "\n", "h1_b1, h1_b2 = h1_bs[:, 0], h1_bs[:, 1]\n", "h2_b1, h2_b2 = h2_bs[:, 0], h2_bs[:, 1]\n", "h3_b1, h3_b2 = h3_bs[:, 0], h3_bs[:, 1]\n", "\n", "# mask whether Higgs can be reconstructed as 2 small-radius jet\n", "h1_mask = ak.all(h1_bs != -1, axis=-1)\n", "h2_mask = ak.all(h2_bs != -1, axis=-1)\n", "h3_mask = ak.all(h3_bs != -1, axis=-1)\n", "\n", "# mask whether Higgs can be reconstructed as 1 large-radius jet\n", "h1_fj_mask = ak.all(h1_bb != -1, axis=-1)\n", "h2_fj_mask = ak.all(h2_bb != -1, axis=-1)\n", "h3_fj_mask = ak.all(h3_bb != -1, axis=-1)" ] }, { "cell_type": "code", "execution_count": 46, "id": "8c17760f", "metadata": { "ExecuteTime": { "end_time": "2023-03-01T22:57:28.796722Z", "start_time": "2023-03-01T22:57:28.689226Z" } }, "outputs": [ { "data": { "text/plain": [ "(array([128., 610., 528., 358., 247., 117., 74., 32., 15., 3.]),\n", " array([-1. , -0.1, 0.8, 1.7, 2.6, 3.5, 4.4, 5.3, 6.2, 7.1, 8. ]),\n", " )" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(h1_b1)" ] }, { "cell_type": "code", "execution_count": null, "id": "b8f31c9b", "metadata": {}, "outputs": [], "source": [] } ], "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.6" } }, "nbformat": 4, "nbformat_minor": 5 }