examples/binning.ipynb
{
"cells": [
{
"cell_type": "markdown",
"id": "763f597e",
"metadata": {},
"source": [
"# Binning\n",
"\n",
"This example shows how LiberTEM can be used for fast binning of a large dataset."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "3f022ae6",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:14.933683Z",
"iopub.status.busy": "2023-06-29T12:46:14.933552Z",
"iopub.status.idle": "2023-06-29T12:46:15.233209Z",
"shell.execute_reply": "2023-06-29T12:46:15.232606Z"
}
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a7990d5f",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:15.235565Z",
"iopub.status.busy": "2023-06-29T12:46:15.235364Z",
"iopub.status.idle": "2023-06-29T12:46:15.797267Z",
"shell.execute_reply": "2023-06-29T12:46:15.796642Z"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"import sparse\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from libertem.api import Context\n",
"from libertem.udf.masks import ApplyMasksUDF"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5a0f3575",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:15.799811Z",
"iopub.status.busy": "2023-06-29T12:46:15.799666Z",
"iopub.status.idle": "2023-06-29T12:46:17.204923Z",
"shell.execute_reply": "2023-06-29T12:46:17.204293Z"
}
},
"outputs": [],
"source": [
"ctx = Context()"
]
},
{
"cell_type": "markdown",
"id": "76f4c9d7",
"metadata": {},
"source": [
"## Generate test data\n",
"Just a folded linear gradient for illustration"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "c7b3bbd1",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:17.207184Z",
"iopub.status.busy": "2023-06-29T12:46:17.207041Z",
"iopub.status.idle": "2023-06-29T12:46:17.210133Z",
"shell.execute_reply": "2023-06-29T12:46:17.209666Z"
}
},
"outputs": [],
"source": [
"shape = (17, 19, 23, 29)\n",
"data = np.linspace(0, 1, np.prod(shape, dtype=np.int64)).reshape(shape)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "09b0a029",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:17.211781Z",
"iopub.status.busy": "2023-06-29T12:46:17.211498Z",
"iopub.status.idle": "2023-06-29T12:46:17.230883Z",
"shell.execute_reply": "2023-06-29T12:46:17.230376Z"
}
},
"outputs": [],
"source": [
"ds = ctx.load('memory', data=data)"
]
},
{
"cell_type": "markdown",
"id": "49d56fc5",
"metadata": {},
"source": [
"## Define the binning factor and determine target shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "8d7edcb0",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:17.232810Z",
"iopub.status.busy": "2023-06-29T12:46:17.232367Z",
"iopub.status.idle": "2023-06-29T12:46:17.235307Z",
"shell.execute_reply": "2023-06-29T12:46:17.234759Z"
}
},
"outputs": [],
"source": [
"bin_factor = 4"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "5cb59344",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:17.237056Z",
"iopub.status.busy": "2023-06-29T12:46:17.236661Z",
"iopub.status.idle": "2023-06-29T12:46:17.239563Z",
"shell.execute_reply": "2023-06-29T12:46:17.239026Z"
}
},
"outputs": [],
"source": [
"# ceil() to include output bins that only fit partially into the\n",
"# source frame\n",
"size_y = int(np.ceil(ds.shape.sig[0] / bin_factor))\n",
"size_x = int(np.ceil(ds.shape.sig[1] / bin_factor))"
]
},
{
"cell_type": "markdown",
"id": "698b2e6b",
"metadata": {},
"source": [
"## Create a sparse matrix for binning\n",
"Each layer corresponds to an output bin. We calculate which pixels are in each output bin."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "2000c674",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:17.241269Z",
"iopub.status.busy": "2023-06-29T12:46:17.240945Z",
"iopub.status.idle": "2023-06-29T12:46:17.250929Z",
"shell.execute_reply": "2023-06-29T12:46:17.250457Z"
}
},
"outputs": [],
"source": [
"bin_matrix_layers = []\n",
"for y in range(size_y):\n",
" for x in range(size_x):\n",
" layer = np.zeros(ds.shape.sig)\n",
" start_y = y * bin_factor\n",
" stop_y = (y + 1) * bin_factor\n",
" start_x = x * bin_factor\n",
" stop_x = (x + 1) * bin_factor\n",
" layer[start_y:stop_y, start_x:stop_x] = 1\n",
" layer /= np.sum(layer)\n",
" bin_matrix_layers.append(sparse.COO(layer))\n",
"bin_matrix = sparse.stack(bin_matrix_layers)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "415eeb91",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:17.253089Z",
"iopub.status.busy": "2023-06-29T12:46:17.252951Z",
"iopub.status.idle": "2023-06-29T12:46:17.255326Z",
"shell.execute_reply": "2023-06-29T12:46:17.254893Z"
}
},
"outputs": [],
"source": [
"def mask_factory():\n",
" return bin_matrix"
]
},
{
"cell_type": "markdown",
"id": "cb27f219",
"metadata": {},
"source": [
"## Apply the matrix"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "aeac970e",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:17.257126Z",
"iopub.status.busy": "2023-06-29T12:46:17.256736Z",
"iopub.status.idle": "2023-06-29T12:46:18.212280Z",
"shell.execute_reply": "2023-06-29T12:46:18.211826Z"
}
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "724fca5615884e04b6206e01e238ee21",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Partitions 0/24, Frames: 0%| | 0/323 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"udf = ApplyMasksUDF(mask_factories=mask_factory)\n",
"result = ctx.run_udf(dataset=ds, udf=udf, progress=True)"
]
},
{
"cell_type": "markdown",
"id": "aee221ec",
"metadata": {},
"source": [
"## Reshape and show result"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "f72bf444",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:18.213980Z",
"iopub.status.busy": "2023-06-29T12:46:18.213843Z",
"iopub.status.idle": "2023-06-29T12:46:18.216490Z",
"shell.execute_reply": "2023-06-29T12:46:18.216079Z"
}
},
"outputs": [],
"source": [
"reshaped_result = result['intensity'].raw_data.reshape(*ds.shape.nav, size_y, size_x)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "87587e92",
"metadata": {
"execution": {
"iopub.execute_input": "2023-06-29T12:46:18.218207Z",
"iopub.status.busy": "2023-06-29T12:46:18.217849Z",
"iopub.status.idle": "2023-06-29T12:46:18.412926Z",
"shell.execute_reply": "2023-06-29T12:46:18.412518Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f9da468b250>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAADgCAYAAACjBgQ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAfHElEQVR4nO3dfXBU5fn/8c/macNDshgwCSmJxor4gIBAiBnUwZoS81VGKmOV0TYwjk7phhozjjX9VhBrjZVpm6oxWMYCjiLKH9HWahhNIbQOQYhliqOkYjNDLGxAf02W5AsLZM/vD8u2K3kgOXsesnm/Zs4Me/Y8XOfeJFx7n/u+jscwDEMAAAA2SXA6AAAAMLqQfAAAAFuRfAAAAFuRfAAAAFuRfAAAAFuRfAAAAFuRfAAAAFuRfAAAAFuRfAAAAFslOR3A14XDYR0+fFhpaWnyeDxOhwOMSoZh6Pjx48rJyVFCAt9RAMSWZclHbW2t1q5dq0AgoJkzZ+rZZ5/VvHnzBt3v8OHDys3NtSosAEPQ3t6uKVOmOB0GgDhjSfLx2muvqbKyUuvWrVNhYaFqampUUlKi1tZWZWZmDrhvWlqaJOk6/Y+SlBz74KzuTfEM/1uiJ8G9sQ3KZOyWfixmv7lbGZyFvQpmeg7PGKfUdPz1yO8jAMSSx4oHyxUWFqqgoEDPPfecpK9upeTm5mrlypV65JFHBtw3GAzK5/NpgW5TkofkI6ZcnXy4+D94N8c2ALPJR2PwZXV1dSk9PT2GUQGABQNOT506pZaWFhUXF//nJAkJKi4u1q5du87ZPhQKKRgMRi0AACB+xfy2yxdffKHe3l5lZWVFrc/KytKBAwfO2b66ulpr1qyJdRgARhkGqwPOGspAdcdnu1RVVamysjLyOhgMMuAUwJAxWB1wh/MZqB7z5GPSpElKTExUR0dH1PqOjg5lZ2efs73X65XX6411GABGGcsHq/fF5h4WT2KireeTJNl8Tts7rey+Pic+Q6vHE/7bGeOUmrpeO6+B6jFPPlJSUjRnzhw1NjZq8eLFkr7qDm1sbFR5eXmsTwcAkv4zwDZJydYMVu/7pPacJ3I6B/7jsvmctt8ys/36nPgM7f45Hfx8ltx2qaysVFlZmebOnat58+appqZGPT09Wr58+XkfI3FCuhI9KbEPzuyMDyszSBfPxLE6czb1B8fqdrOyyJbZ2C26dk84JDH2G4BFLEk+7rzzTh07dkyrVq1SIBDQrFmz1NDQcM4gVAAAMPpYNuC0vLyc2ywAAOAcPLQBAADYiuQDAADYiuQDAADYiuQDAADYiuQDgGvU1tbq4osvVmpqqgoLC/XBBx84HRIACzheXr0/nvQ0eRKGWfnUyroPLj624eYaJIPsb+rRypbX+XBxDRITxzcG2Dfca1ORrv/y2muvqbKyUuvWrVNhYaFqampUUlKi1tZWZWZm2h4PAOvQ8wHAFX71q1/pvvvu0/Lly3XllVdq3bp1Gjt2rH73u985HRqAGCP5AOC4U6dOqaWlRcXFxZF1CQkJKi4u1q5du/rcJxQKKRgMRi0ARgaSDwCO++KLL9Tb23tOFeSsrCwFAoE+96murpbP54ssPNEWGDlIPgCMSFVVVerq6oos7e3tTocE4Dy5dsApgNFj0qRJSkxMVEdHR9T6jo4OZWdn97mP1+uV1zvMQekAHEXPBwDHpaSkaM6cOWpsbIysC4fDamxsVFFRkYORAbCCa3s+wuPHKZw4zG81VqZULn0EujTw1Mnz4uZ2s/DYhpWzYU1Ofzb9mQ5kgEP3njE1+XlYKisrVVZWprlz52revHmqqalRT0+Pli9fbnssAKzl2uQDwOhy55136tixY1q1apUCgYBmzZqlhoaGcwahAhj5SD4AuEZ5ebnKy8udDgOAxRjzAQAAbEXyAQAAbEXyAQAAbEXyAQAAbEXyAQAAbOXa2S69aSnyJA2zzoepx4wPe9fzY6Zug8WpolM1JQZjaVySydhiF0afTNYJGchAsZ8502vZeQHAtckHAAxH7w0z5UlKteVclifGXz+fA33VRqLd12jv+cx8+RgO269Psu0az5w+Kb1zftty2wUAANiK5AMAANiK5AMAANiK5AMAANiK5AMAANiK5AMAANgq5lNtH3vsMa1ZsyZq3bRp03TgwIEhHed0WrKMpOS+37Rwepvpug1WTmmyeLqUqWmDFsZmenqhlbHFaQ2SM6cTh78zAAzCkjofV111ld57773/nCSJciIAAOArlmQFSUlJys7OtuLQAABghLNkzMenn36qnJwcXXLJJbr77rt16NChfrcNhUIKBoNRCwAAiF8xTz4KCwu1ceNGNTQ0qK6uTm1tbbr++ut1/PjxPrevrq6Wz+eLLLm5ubEOCcAIsHPnTi1atEg5OTnyeDx64403nA4JgEVinnyUlpbqjjvu0IwZM1RSUqK3335bnZ2dev311/vcvqqqSl1dXZGlvb091iEBGAF6eno0c+ZM1dbWOh0KAItZPhJ0woQJuuyyy3Tw4ME+3/d6vfJ6h/n0WgBxo7S0VKWlpU6HAcAGltf56O7u1meffabJkydbfSoAADACxLzn46GHHtKiRYt00UUX6fDhw1q9erUSExO1dOnSIR3n9LhEGcn91BpwqPbBeRmlNUjiOraBmDy2pXVCTBy695T76w+GQiGFQqHIawarAyNHzP/CfP7551q6dKmmTZum7373u5o4caKam5t14YUXxvpUAEYxBqsDI1fMez62bNkS60MCwDmqqqpUWVkZeR0MBklAgBGC0qMARiQGqwMjF8kHAFfo7u6OmhXX1tamffv2KSMjQ3l5eQ5GBiDWSD4AuMLevXt14403Rl6fvaVSVlamjRs3OhQVACuQfABwhQULFsgwDKfDAGAD1yYfp8clKJxiwXQ/yx9Lb2LnURybq6fajsLYepOtOS4ASDYUGQMAAPhvJB8AAMBWJB8AAMBWJB8AAMBWJB8AAMBWJB8AAMBWrp1qCwDDcfSaVCV6U205l2H31zerp7z3wfIngX/9fHHeprZfn2TbNfaeTJLeOb9tXZt8nB7nUTjFghZzaV0Fyb01HyQb/gC5uAaJm+ujWPW59CY58L8cgFGD2y4AAMBWJB8AAMBWJB8AAMBWJB8AAMBWJB8AAMBWJB8AAMBWJB8AAMBWrq3zcWasZHiHubOb6124OTYrufm6rWw3N9f5GGDf3kQTxwWAQdDzAcBx1dXVKigoUFpamjIzM7V48WK1trY6HRYAi5B8AHBcU1OT/H6/mpub9e677+r06dNauHChenp6nA4NgAVce9sFwOjR0NAQ9Xrjxo3KzMxUS0uLbrjhBoeiAmAVej4AuE5XV5ckKSMjw+FIAFiBng8ArhIOh1VRUaH58+dr+vTp/W4XCoUUCoUir4PBoB3hAYgBej4AuIrf79dHH32kLVu2DLhddXW1fD5fZMnNzbUpQgBmkXwAcI3y8nK99dZb2r59u6ZMmTLgtlVVVerq6oos7e3tNkUJwKwh33bZuXOn1q5dq5aWFh05ckT19fVavHhx5H3DMLR69WqtX79enZ2dmj9/vurq6jR16tQhnefMGMlIHWp0/2ai9oHltTI8hmWHjtd6F9Z/Ju49tnU/LRowtnCCpWc+h2EYWrlyperr67Vjxw7l5+cPuo/X65XXO9xiQACcNOSej56eHs2cOVO1tbV9vv/000/rmWee0bp167R7926NGzdOJSUlOnnypOlgAcQnv9+vl19+WZs3b1ZaWpoCgYACgYBOnDjhdGgALDDkno/S0lKVlpb2+Z5hGKqpqdFPf/pT3XbbbZKkl156SVlZWXrjjTd01113mYsWQFyqq6uTJC1YsCBq/YYNG7Rs2TL7AwJgqZjOdmlra1MgEFBxcXFknc/nU2FhoXbt2tVn8sGIdQCGYe9tHgDOiumA00AgIEnKysqKWp+VlRV57+sYsQ4AwOji+GwXRqwDADC6xDT5yM7OliR1dHREre/o6Ii893Ver1fp6elRCwAAiF8xTT7y8/OVnZ2txsbGyLpgMKjdu3erqKgolqcCAAAj1JAHnHZ3d+vgwYOR121tbdq3b58yMjKUl5eniooKPfHEE5o6dary8/P16KOPKicnJ6oWyPnoHWvISO1nEJqFdRlcXefD4thMXbuLa2UMxtx1WzxQ0qF2DSeELTwxgNFuyMnH3r17deONN0ZeV1ZWSpLKysq0ceNGPfzww+rp6dH999+vzs5OXXfddWpoaFBq6nArhgEAgHgy5ORjwYIFA06L83g8evzxx/X444+bCgwAAMQnnmoLIK6cmH5CCWPtqRvisbkMvdV3hfs8p8234BJsblPbz2f1rdo+eOz6wfm/0ODb/JvjU20BAMDoQvIBAABsRfIBAABs5doxH71jwzLG9HOv0dKptibvx43gKaemWHkf0+x1W/qZuHiqrYl9DU+viRMDwMDo+QAAALYi+QAAALYi+QAAALYi+QAAALYi+QAAALYi+QAAALYi+QDguLq6Os2YMUPp6elKT09XUVGR3nnnHafDAmAR19b5MMb2yhjTT60BE7UVBqtxb7okhIvrXXhcHVtswuj74NZdt+kSJJZ+JsM/dlinYhjI4KZMmaKnnnpKU6dOlWEY2rRpk2677Tb99a9/1VVXXWVrLACs59rkA8DosWjRoqjXP//5z1VXV6fm5maSDyAOkXwAcJXe3l5t3bpVPT09Kioq6ne7UCikUOg/T9EMBoN2hAcgBhjzAcAV9u/fr/Hjx8vr9eoHP/iB6uvrdeWVV/a7fXV1tXw+X2TJzc21MVoAZpB8AHCFadOmad++fdq9e7dWrFihsrIyffzxx/1uX1VVpa6ursjS3t5uY7QAzOC2CwBXSElJ0aWXXipJmjNnjvbs2aPf/OY3euGFF/rc3uv1yuv12hkigBih5wOAK4XD4agxHQDiBz0fABxXVVWl0tJS5eXl6fjx49q8ebN27Nihbdu2OR0aAAu4NvlIGXtKCWNj3zFjaV0FmatXYX1s1tVHMcvKazd7bCsvPcFsbBa1W6/NdT6OHj2q73//+zpy5Ih8Pp9mzJihbdu26dvf/ratcQCwh2uTDwCjx4svvuh0CABsxJgPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgqyFPtd25c6fWrl2rlpYWHTlyRPX19Vq8eHHk/WXLlmnTpk1R+5SUlKihoWFI5xk3NqTEsUONbnAJJos2WFmPwq01HyTzsQ3GzMdidWxmjm917Rarrv2MMXIri94y7SN5xyfbcq6khLAt5zkr2dNr6/kkKdET39cY7+eTpASbPsOT3Wf0v+e57ZB7Pnp6ejRz5kzV1tb2u83NN9+sI0eORJZXX311qKcBAABxasg9H6WlpSotLR1wG6/Xq+zs7GEHBQAA4pclYz527NihzMxMTZs2TStWrNCXX37Z77ahUEjBYDBqAQAA8SvmycfNN9+sl156SY2NjfrFL36hpqYmlZaWqre37/tc1dXV8vl8kSU3NzfWIQEAABeJ+bNd7rrrrsi/r776as2YMUPf/OY3tWPHDt10003nbF9VVaXKysrI62AwSAICAEAcs3yq7SWXXKJJkybp4MGDfb7v9XqVnp4etQAAgPhlefLx+eef68svv9TkyZOtPhUAABgBhnzbpbu7O6oXo62tTfv27VNGRoYyMjK0Zs0aLVmyRNnZ2frss8/08MMP69JLL1VJScmQznPBmBNKGju8uckJsq62gtm6DVbWpHDzsa38TMzOYXdzu1l5/IE+k9PhU8M+LgAMZsjJx969e3XjjTdGXp8dr1FWVqa6ujr97W9/06ZNm9TZ2amcnBwtXLhQP/vZz+T1emMXNQAAGLGGnHwsWLBAhtH/N6Zt27aZCggAAMQ3nu0CwHWeeuopeTweVVRUOB0KAAuQfABwlT179uiFF17QjBkznA4FgEVIPgC4Rnd3t+6++26tX79eF1xwgdPhALAIyQcA1/D7/brllltUXFw86LY8mgEYuWJe4TRWJqX2KDn19LD2NTX90OJHDydaOa3T5HRWa6ecDr9drWwzafROA05U/7GFzgzvd8+MLVu26MMPP9SePXvOa/vq6mqtWbPG4qgAWIGeDwCOa29v1wMPPKBXXnlFqamp57VPVVWVurq6Ikt7e7vFUQKIFdf2fAAYPVpaWnT06FHNnj07sq63t1c7d+7Uc889p1AopMTExKh9vF4v9YOAEYrkA4DjbrrpJu3fvz9q3fLly3X55Zfrxz/+8TmJB4CRjeQDgOPS0tI0ffr0qHXjxo3TxIkTz1kPYORjzAcAALAVPR8AXGnHjh1OhwDAIvR8AAAAW7m25yPLG5Q3NbnP90byI9AHqq0wGMtjM1GTwspaGWbiOh9mYrc8NjP1UUxc18nTZ4a9LwAMhp4PAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgK9fOdgGA4fBPel9pafZ8r0rxeGw5z1nJsvd8kpRg+zXaW0o/2WPv+RIc+AwTPfb8PgSTwvrf89yWng8AAGAr1/Z85Hi7lOrtOzwztQ8GY6Y2gmR1bOaObWWdELOxDXhsk22aYGls5trUynYz87P4f8m9MYwEAKLR8wEAAGxF8gEAAGxF8gEAAGxF8gEAAGxF8gEAAGxF8gEAAGw1pOSjurpaBQUFSktLU2ZmphYvXqzW1taobU6ePCm/36+JEydq/PjxWrJkiTo6OmIaNAAAGLmGVOejqalJfr9fBQUFOnPmjH7yk59o4cKF+vjjjzVu3DhJ0oMPPqg//vGP2rp1q3w+n8rLy3X77bfr/fffH1JgOcn/T2NT+q48Z6YWh9maEYMxU1PC6tjM1jAZiNlaGlZeezzXbhn42MO/7p4ka38Wv+6xxx7TmjVrotZNmzZNBw4csDUOAPYYUvLR0NAQ9Xrjxo3KzMxUS0uLbrjhBnV1denFF1/U5s2b9a1vfUuStGHDBl1xxRVqbm7WtddeG7vIAcSVq666Su+9917kdVKSa2sgAjDJ1G93V1eXJCkjI0OS1NLSotOnT6u4uDiyzeWXX668vDzt2rWL5ANAv5KSkpSdne10GABsMOzkIxwOq6KiQvPnz9f06dMlSYFAQCkpKZowYULUtllZWQoEAn0eJxQKKRQKRV4Hg8HhhgRgBPv000+Vk5Oj1NRUFRUVqbq6Wnl5ef1uz98OYOQa9mwXv9+vjz76SFu2bDEVQHV1tXw+X2TJzc01dTwAI09hYaE2btyohoYG1dXVqa2tTddff72OHz/e7z787QBGrmElH+Xl5Xrrrbe0fft2TZkyJbI+Oztbp06dUmdnZ9T2HR0d/XanVlVVqaurK7K0t7cPJyQAI1hpaanuuOMOzZgxQyUlJXr77bfV2dmp119/vd99+NsBjFxDuu1iGIZWrlyp+vp67dixQ/n5+VHvz5kzR8nJyWpsbNSSJUskSa2trTp06JCKior6PKbX65XX6x1m+ADi0YQJE3TZZZfp4MGD/W7D3w5g5BpS8uH3+7V582a9+eabSktLi4zj8Pl8GjNmjHw+n+69915VVlYqIyND6enpWrlypYqKioY82PSi5C81Ljn2NdDMTru0dLqqhY+8l8zFnmDhdUvmHk1v5WciWVuJL9Fjbn+rYjtu81Tbr+vu7tZnn32m733ve47GAcAaQ0o+6urqJEkLFiyIWr9hwwYtW7ZMkvTrX/9aCQkJWrJkiUKhkEpKSvT888/HJFgA8emhhx7SokWLdNFFF+nw4cNavXq1EhMTtXTpUqdDA2CBId92GUxqaqpqa2tVW1s77KAAjC6ff/65li5dqi+//FIXXnihrrvuOjU3N+vCCy90OjQAFqCKDwDHmZ01B2Bk4cFyAADAViQfAADAViQfAADAViQfAADAVq4dcPqNxJDSEoeXGyV6TBZPGIClNR9kLu4EC6870eSVJ1jYclZ+3pK52BNMfqaDSfRY067BpLCko5YcGwDo+QAAALZybc8HAAzF2TpE3d32VWdNsbjX7euSLe5J64snzq8x2ebrs7o3tC9mKymfr+C/f/fOpyYYyQeAuHD2CbjXzvvC4UiA0e348ePy+XwDbkPyASAu5OTkqL29XWlpaUP6th4MBpWbm6v29nalp6dbGKEz4v36pPi/xpFyfYZh6Pjx48rJyRl0W5IPAHEhISFBU6ZMGfb+6enprv7Dbla8X58U/9c4Eq5vsB6PsxhwCgAAbOW6no9YDBobrVNtrRwYZnoacIzi6Iv1U23N7Gv1VFtrjjuUgWMAMFSuSz7ODhorYNAY4LjzGTg20nm9Xq1evVper9fpUCwR79cnxf81xuP1eQyXfbUJh8M6fPhwZNDYSBlo4za02/DQbl/574FjCQncnQUQW67r+ehv0NhIGGjjRrTb8NBu5z9wDACGiq80AADAViQfAADAVq5PPuJxoI0daLfhod0AwHojIvl47LHH+M9giGi34aHdRpfa2lpdfPHFSk1NVWFhoT744AOnQ4qZ6upqFRQUKC0tTZmZmVq8eLFaW1udDssyTz31lDwejyoqKpwOJab++c9/6p577tHEiRM1ZswYXX311dq7d6/TYZnm+uQDAKzw2muvqbKyUqtXr9aHH36omTNnqqSkREePHnU6tJhoamqS3+9Xc3Oz3n33XZ0+fVoLFy5UT0+P06HF3J49e/TCCy9oxowZTocSU//61780f/58JScn65133tHHH3+sX/7yl7rgggucDs001021BQA7FBYWqqCgQM8995ykr6b55+bmauXKlXrkkUccji72jh07pszMTDU1NemGG25wOpyY6e7u1uzZs/X888/riSee0KxZs1RTU+N0WDHxyCOP6P3339ef//xnp0OJOXo+AIw6p06dUktLi4qLiyPrEhISVFxcrF27djkYmXW6urokSRkZGQ5HElt+v1+33HJL1GcZL37/+99r7ty5uuOOO5SZmalrrrlG69evdzqsmCD5ADDqfPHFF+rt7VVWVlbU+qysLAUCAYeisk44HFZFRYXmz5+v6dOnOx1OzGzZskUffvihqqurnQ7FEv/4xz9UV1enqVOnatu2bVqxYoV+9KMfadOmTU6HZprrk494HhAWCzt37tSiRYuUk5Mjj8ejN954I+p9wzC0atUqTZ48WWPGjFFxcbE+/fRTZ4J1ifMZiHfy5En5/X5NnDhR48eP15IlS9TR0eFQxIA5fr9fH330kbZs2eJ0KDHT3t6uBx54QK+88opSU1OdDscS4XBYs2fP1pNPPqlrrrlG999/v+677z6tW7fO6dBMc3XyEe8DwmKhp6dHM2fOVG1tbZ/vP/3003rmmWe0bt067d69W+PGjVNJSYlOnjxpc6TucT4D8R588EH94Q9/0NatW9XU1KTDhw/r9ttvdzBqxNKkSZOUmJh4TkLZ0dGh7Oxsh6KyRnl5ud566y1t3769z+rRI1VLS4uOHj2q2bNnKykpSUlJSWpqatIzzzyjpKQk9fb2Oh2iaZMnT9aVV14Zte6KK67QoUOHHIoohgwXmzdvnuH3+yOve3t7jZycHKO6utrBqNxLklFfXx95HQ6HjezsbGPt2rWRdZ2dnYbX6zVeffVVByJ0p6NHjxqSjKamJsMwvmqj5ORkY+vWrZFtPvnkE0OSsWvXLqfCRIzNmzfPKC8vj7zu7e01vvGNb8TN35dwOGz4/X4jJyfH+Pvf/+50ODEXDAaN/fv3Ry1z58417rnnHmP//v1OhxcTS5cuNa677rqodRUVFUZRUZFDEcWOa3s+RuOAsFhra2tTIBCIakOfz6fCwkLa8L98fSBeS0uLTp8+HdVul19+ufLy8mi3OFJZWan169dr06ZN+uSTT7RixQr19PRo+fLlTocWE36/Xy+//LI2b96stLQ0BQIBBQIBnThxwunQYiItLU3Tp0+PWsaNG6eJEyfGzbiWBx98UM3NzXryySd18OBBbd68Wb/97W/l9/udDs001z1Y7qyBBoQdOHDAoahGlrMD50bLoLrh6GsgXiAQUEpKiiZMmBC1Le0WX+68804dO3ZMq1atUiAQ0KxZs9TQ0HDO78tIVVdXJ0lasGBB1PoNGzZo2bJl9geEISsoKFB9fb2qqqr0+OOPKz8/XzU1Nbr77rudDs001yYfgB3ODsT7y1/+4nQocEB5ebnKy8udDsMSxigs4bRjxw6nQ4i5W2+9VbfeeqvTYcSca2+7jKYBYVY52060Yd/6G4iXnZ2tU6dOqbOzM2p72g0AYsO1yUdKSormzJmjxsbGyLpwOKzGxkYVFRU5GNnIkZ+fr+zs7Kg2DAaD2r1796huQ8MwVF5ervr6ev3pT39Sfn5+1Ptz5sxRcnJyVLu1trbq0KFDo7rdACBWXH3bpbKyUmVlZZo7d67mzZunmpqauBoQFgvd3d06ePBg5HVbW5v27dunjIwM5eXlqaKiQk888YSmTp2q/Px8Pfroo8rJydHixYudC9phfr9fmzdv1ptvvhkZiCd9NRh3zJgx8vl8uvfee1VZWamMjAylp6dr5cqVKioq0rXXXutw9AAQB5yebjOYZ5991sjLyzNSUlKMefPmGc3NzU6H5Crbt283JJ2zlJWVGYbx1XS7Rx991MjKyjK8Xq9x0003Ga2trc4G7bC+2kuSsWHDhsg2J06cMH74wx8aF1xwgTF27FjjO9/5jnHkyBHnggaAOMKD5QAAgK1cO+YDAADEJ5IPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgK5IPAABgq/8PX2sSVbdRmEcAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, axes = plt.subplots(1, 2)\n",
"axes[0].imshow(data[0, 0])\n",
"axes[1].imshow(reshaped_result[0, 0])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e482d845",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python (libertem39)",
"language": "python",
"name": "libertem39"
},
"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.8"
},
"vscode": {
"interpreter": {
"hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
}
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {
"015426d25bbb457aa96e88ef011eb255": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "2.0.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "2.0.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border_bottom": null,
"border_left": null,
"border_right": null,
"border_top": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"12abef09eef04b77af778d45e2cdf333": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "2.0.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "2.0.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "2.0.0",
"_view_name": "HTMLView",
"description": "",
"description_allow_html": false,
"layout": "IPY_MODEL_1e4e85d4e474496fbe8993128c43336b",
"placeholder": "",
"style": "IPY_MODEL_42d3a586561c42908f593f90a2d63398",
"tabbable": null,
"tooltip": null,
"value": " 323/323 [00:00<00:00, 534.15it/s]"
}
},
"1e4e85d4e474496fbe8993128c43336b": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "2.0.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "2.0.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border_bottom": null,
"border_left": null,
"border_right": null,
"border_top": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"2647c492540441c6b5c3d285ac72095e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "2.0.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "2.0.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "2.0.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_allow_html": false,
"layout": "IPY_MODEL_99d525bc00a749ff92c255b2e03f3707",
"max": 323.0,
"min": 0.0,
"orientation": "horizontal",
"style": "IPY_MODEL_37f6bc1b92bb4aa0849b344b56bcbea6",
"tabbable": null,
"tooltip": null,
"value": 323.0
}
},
"37f6bc1b92bb4aa0849b344b56bcbea6": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "2.0.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "2.0.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "2.0.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"42d3a586561c42908f593f90a2d63398": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "2.0.0",
"model_name": "HTMLStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "2.0.0",
"_model_name": "HTMLStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "2.0.0",
"_view_name": "StyleView",
"background": null,
"description_width": "",
"font_size": null,
"text_color": null
}
},
"724fca5615884e04b6206e01e238ee21": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "2.0.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "2.0.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "2.0.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_afbc0d9f52d64859970db0df110ecbfe",
"IPY_MODEL_2647c492540441c6b5c3d285ac72095e",
"IPY_MODEL_12abef09eef04b77af778d45e2cdf333"
],
"layout": "IPY_MODEL_015426d25bbb457aa96e88ef011eb255",
"tabbable": null,
"tooltip": null
}
},
"960dce948944407b967890c6c8b01770": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "2.0.0",
"model_name": "HTMLStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "2.0.0",
"_model_name": "HTMLStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "2.0.0",
"_view_name": "StyleView",
"background": null,
"description_width": "",
"font_size": null,
"text_color": null
}
},
"99d525bc00a749ff92c255b2e03f3707": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "2.0.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "2.0.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border_bottom": null,
"border_left": null,
"border_right": null,
"border_top": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"a08d900a08bd4a088369699bb72cbe24": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "2.0.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "2.0.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "2.0.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border_bottom": null,
"border_left": null,
"border_right": null,
"border_top": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"afbc0d9f52d64859970db0df110ecbfe": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "2.0.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "2.0.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "2.0.0",
"_view_name": "HTMLView",
"description": "",
"description_allow_html": false,
"layout": "IPY_MODEL_a08d900a08bd4a088369699bb72cbe24",
"placeholder": "",
"style": "IPY_MODEL_960dce948944407b967890c6c8b01770",
"tabbable": null,
"tooltip": null,
"value": "Partitions 24/24, Frames: 100%"
}
}
},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}