From 3ce8f69ed773ada28572305256beff2541ccebc2 Mon Sep 17 00:00:00 2001 From: Philipp Schmidt <philipp.schmidt@xfel.eu> Date: Fri, 13 May 2022 21:24:22 +0200 Subject: [PATCH] Make constant axis ordering configurable and adjust based on calibration type --- notebooks/LPD/LPD_Correct_Fast.ipynb | 36 +++++++++++++++++++++------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/notebooks/LPD/LPD_Correct_Fast.ipynb b/notebooks/LPD/LPD_Correct_Fast.ipynb index 91fe5d360..f624f5fae 100644 --- a/notebooks/LPD/LPD_Correct_Fast.ipynb +++ b/notebooks/LPD/LPD_Correct_Fast.ipynb @@ -306,39 +306,57 @@ "metadata": {}, "outputs": [], "source": [ + "# These are intended in order cell, X, Y, gain\n", "ccv_offsets = {}\n", "ccv_gains = {}\n", "ccv_masks = {}\n", "\n", + "ccv_shape = (mem_cells, 256, 256, 3)\n", + "\n", + "constant_order = {\n", + " 'Offset': (1, 0, 2, 3),\n", + " 'BadPixelsDark': (1, 0, 2, 3),\n", + " 'RelativeGain': (1, 0, 2, 3),\n", + " 'FFMap': (0, 1, 2, 3),\n", + " 'BadPixelsFF': (0, 1, 2, 3),\n", + " 'GainAmpMap': (0, 1, 2, 3),\n", + "}\n", + "\n", "def prepare_constants(wid, index, aggregator):\n", " consts = {calibration_name: entry['data']\n", " for (aggregator_, calibration_name), entry\n", " in const_data.items()\n", " if aggregator == aggregator_}\n", " \n", + " def _prepare_data(calibration_name, dtype):\n", + " return consts[calibration_name] \\\n", + " .transpose(constant_order[calibration_name]) \\\n", + " .astype(dtype, copy=True) # Make sure array is contiguous.\n", + " \n", " if offset_corr and 'Offset' in consts:\n", - " ccv_offsets[aggregator] = consts['Offset'].astype(np.float32)\n", + " ccv_offsets[aggregator] = _prepare_data('Offset', np.float32)\n", " else:\n", - " ccv_offsets[aggregator] = np.zeros((256, 256, mem_cells, 3), dtype=np.float32)\n", + " ccv_offsets[aggregator] = np.zeros(ccv_shape, dtype=np.float32)\n", " \n", - " ccv_gains[aggregator] = np.ones((256, 256, mem_cells, 3), dtype=np.float32)\n", + " ccv_gains[aggregator] = np.ones(ccv_shape, dtype=np.float32)\n", " \n", " if 'BadPixelsDark' in consts:\n", - " ccv_masks[aggregator] = consts['BadPixelsDark'].astype(np.uint32)\n", + " ccv_masks[aggregator] = _prepare_data('BadPixelsDark', np.uint32)\n", " else:\n", - " ccv_masks[aggregator] = np.zeros((256, 256, mem_cells, 3), dtype=np.uint32)\n", + " ccv_masks[aggregator] = np.zeros(ccv_shape, dtype=np.uint32)\n", " \n", " if rel_gain and 'RelativeGain' in consts:\n", - " ccv_gains[aggregator] *= consts['RelativeGain']\n", + " ccv_gains[aggregator] *= _prepare_data('RelativeGain', np.float32)\n", " \n", " if ff_map and 'FFMap' in consts:\n", - " ccv_gains[aggregator] *= consts['FFMap']\n", + " ccv_gains[aggregator] *= _prepare_data('FFMap', np.float32)\n", " \n", " if 'BadPixelsFF' in consts:\n", - " np.bitwise_or(ccv_masks[aggregator], consts['BadPixelsFF'], out=ccv_masks[aggregator])\n", + " np.bitwise_or(ccv_masks[aggregator], _prepare_data('BadPixelsFF', np.uint32),\n", + " out=ccv_masks[aggregator])\n", " \n", " if gain_amp_map and 'GainAmpMap' in consts:\n", - " ccv_gains[aggregator] *= consts['GainAmpMap']\n", + " ccv_gains[aggregator] *= _prepare_data('GainAmpMap', np.float32)\n", " \n", " print('.', end='', flush=True)\n", " \n", -- GitLab