diff --git a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
index 5dae80017da0519cea7136740ac5334546911389..bd867ae23db81ee0c1e16781caa773e2179509f6 100644
--- a/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
+++ b/notebooks/REMI/REMI_Digitize_and_Transform.ipynb
@@ -712,9 +712,21 @@
     "            \n",
     "    with timing(f'find_edges, {det_name}'):\n",
     "        psh.map(find_edges, dc.select(det_sourcekeys))\n",
+    "        \n",
+    "    # Properly offset edges to their trigger offset and convert to time.\n",
+    "    # This is not done earlier to preserve the information for plotting.\n",
+    "    edges += triggers['offset'][:, None, None]\n",
+    "    edges *= remi.get_time_calibration()\n",
+    "    \n",
+    "    det_data[det_name] = {\n",
+    "        'edges': edges,\n",
+    "        'amplitudes': amplitudes,\n",
+    "        'avg_trace': avg_traces.sum(axis=0) / len(dc.train_ids)\n",
+    "    }\n",
     "    \n",
     "    if not np.isfinite(edges).any():\n",
     "        warning(f'No edges found for {det_name}')\n",
+    "        continue\n",
     "    \n",
     "    fig, (ux, bx) = plt.subplots(num=f'digitize_result_{det_name}', ncols=1, nrows=2, figsize=(9.5, 8), clear=True,\n",
     "                                 gridspec_kw=dict(left=0.1, right=0.98, top=0.98, bottom=0.1, hspace=0.25))\n",
@@ -748,18 +760,7 @@
     "    bx.set_xlabel('Edge positions - ⌊edge positions⌋')\n",
     "    bx.set_yscale('log')\n",
     "    bx.set_xlim(-0.05, 1.2)\n",
-    "    bx.legend()\n",
-    "    \n",
-    "    # Properly offset edges to their trigger offset and convert to time.\n",
-    "    # This is not done earlier to preserve the information for plotting.\n",
-    "    edges += triggers['offset'][:, None, None]\n",
-    "    edges *= remi.get_time_calibration()\n",
-    "    \n",
-    "    det_data[det_name] = {\n",
-    "        'edges': edges,\n",
-    "        'amplitudes': amplitudes,\n",
-    "        'avg_trace': avg_traces.sum(axis=0) / len(dc.train_ids)\n",
-    "    }"
+    "    bx.legend()"
    ]
   },
   {
@@ -881,10 +882,13 @@
     "    fig = plt.figure(num=f'digitized_spectra_{det_name}', figsize=(9.5, 6))\n",
     "    \n",
     "    edges = det_data[det_name]['edges']\n",
-    "    amplitudes = det_data[det_name]['amplitudes']\n",
     "    \n",
     "    min_edge = np.nanmin(edges)\n",
     "    max_edge = np.nanmax(edges)\n",
+    "    \n",
+    "    if np.isnan(min_edge):\n",
+    "        warning(f'No edges found for {det_name}')\n",
+    "        continue\n",
     "\n",
     "    grid = fig.add_gridspec(ncols=3, nrows=3, left=0.08, right=0.98, top=0.95, hspace=0.4)\n",
     "\n",
@@ -965,6 +969,10 @@
     "    min_edge = np.nanmin(edges)\n",
     "    max_edge = np.nanmax(edges)\n",
     "    \n",
+    "    if np.isnan(min_edge):\n",
+    "        warning(f'No edges found for {det_name}')\n",
+    "        continue\n",
+    "    \n",
     "    max_amplitude = np.nanmax(amplitudes)\n",
     "\n",
     "    for edge_idx, edge_name in enumerate(['u1', 'u2', 'v1', 'v2', 'w1', 'w2', 'mcp']):\n",
@@ -982,9 +990,11 @@
     "\n",
     "        flat_edges = finite_flattened_slice(edges, np.s_[:, edge_idx, :])\n",
     "        flat_amplitudes = finite_flattened_slice(amplitudes, np.s_[:, edge_idx, :])\n",
-    "        ax.hist2d(flat_edges, flat_amplitudes,\n",
-    "                  bins=[tof_bins, 512], norm=LogNorm(),\n",
-    "                  range=[[min_edge, max_edge], [0, max_amplitude]])\n",
+    "        \n",
+    "        if flat_edges.size > 1:\n",
+    "            ax.hist2d(flat_edges, flat_amplitudes,\n",
+    "                      bins=[tof_bins, 512], norm=LogNorm(),\n",
+    "                      range=[[min_edge, max_edge], [0, max_amplitude]])\n",
     "        \n",
     "        if edge_idx == 6:\n",
     "            ax.set_ylabel('Pulse height')\n",
@@ -1025,7 +1035,8 @@
     "                                     sum_shifts=sum_shifts)\n",
     "    \n",
     "    if not is_valid.any():\n",
-    "        warning(f'No valid preliminary edge combinations found for {det_name}')\n",
+    "        warning(f'No preliminary edge combinations found for {det_name}')\n",
+    "        continue\n",
     "    \n",
     "    signals, sums = remi.get_signals_and_sums(edges, indices=sort.channel_indices, sum_shifts=sum_shifts,\n",
     "                                              mask=is_valid)\n",
@@ -1118,6 +1129,10 @@
     "    num_hits = num_hits.reshape(-1, agg_window).mean(axis=1)\n",
     "    max_num_hits = max(max_num_hits, num_hits.max())\n",
     "    \n",
+    "    if max_num_hits == 0:\n",
+    "        warning(f'No hits found for {det_name}')\n",
+    "        continue\n",
+    "\n",
     "    ax.plot(np.arange(0, (num_pulses // agg_window) * agg_window, agg_window), num_hits,\n",
     "            lw=1, label=det_name.upper())\n",
     "        \n",
@@ -1177,14 +1192,14 @@
     "for det_name in remi['detector'].keys():\n",
     "    hits = det_data[det_name]['hits']\n",
     "    \n",
+    "    if not (hits['m'] >= 0).any():\n",
+    "        warning(f'No hits found for {det_name}')\n",
+    "        continue    \n",
+    "    \n",
     "    fig, ax = plt.subplots(num=f'reconstruction_methods_{det_name}', figsize=(9.5, 5), ncols=1, clear=True,\n",
     "                           gridspec_kw=dict(left=0.08, right=0.91, top=0.8))\n",
     "    \n",
     "    fig.text(0.02, 0.98, det_name.upper(), rotation=90, ha='left', va='top', size='x-large')\n",
-    "    \n",
-    "    if not (hits['m'] >= 0).any():\n",
-    "        warning(f'No hits found for {det_name}')\n",
-    "        continue\n",
     "\n",
     "    method_bins = np.bincount(hits['m'][hits['m'] >= 0], minlength=20)\n",
     "    ax.bar(np.arange(20), method_bins, width=0.5)\n",
@@ -1258,6 +1273,10 @@
     "    flat_hits = flat_hits[np.isfinite(flat_hits[:]['x'])]\n",
     "    flat_hits = flat_hits[flat_hits['m'] <= 10]\n",
     "\n",
+    "    if flat_hits.size == 0:\n",
+    "        warning(f'No hits found for {det_name}')\n",
+    "        continue    \n",
+    "    \n",
     "    fig = plt.figure(num=f'detector_results_{det_name}', figsize=(9, 10.5))\n",
     "    \n",
     "    fig.text(0.02, 0.98, det_name.upper(), rotation=90, ha='left', va='top', size='x-large')\n",
@@ -1267,10 +1286,6 @@
     "    txp = fig.add_axes([0.1, 0.27, 0.85, 0.23])\n",
     "    typ = fig.add_axes([0.1, 0.02, 0.85, 0.23])\n",
     "    \n",
-    "    if flat_hits.size == 0:\n",
-    "        warning(f'No hits found for {det_name}')\n",
-    "        continue\n",
-    "    \n",
     "    mcp_radius = remi['detector'][det_name]['mcp_radius']\n",
     "    im_radius = mcp_radius * 1.1\n",
     "    \n",