diff --git a/multiwell align count dec-jan 2022.ipynb b/multiwell align count dec-jan 2022.ipynb index bdeb89179e6d64654b7233e37fc8e00dd09a162d..2773e4ce01731ac8e6691c6b5de81628dc0a6ee7 100644 --- a/multiwell align count dec-jan 2022.ipynb +++ b/multiwell align count dec-jan 2022.ipynb @@ -2,10 +2,19 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "id": "53a4f1b5-8cc1-4f9a-82db-be5b7d3a19cd", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ "import asyncio\n", "from aicsimageio import imread, imread_dask\n", @@ -14,6 +23,7 @@ "import tifffile as tf\n", "import numpy as np\n", "import os\n", + "import pandas as pd\n", "from threading import Thread\n", "import re\n", "%load_ext autoreload\n", @@ -23,6 +33,37 @@ { "cell_type": "code", "execution_count": 34, + "id": "75cf35eb-e0e9-470e-894d-1b1d2d144d92", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x0000017569913250>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/tables/\n", + "WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x0000017569913790>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/tables/\n", + "WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x0000017569913910>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/tables/\n", + "WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x0000017569913A90>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/tables/\n", + "WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x0000017569913C10>, 'Connection to pypi.org timed out. (connect timeout=15)')': /simple/tables/\n", + "ERROR: Could not find a version that satisfies the requirement tables (from versions: none)\n", + "ERROR: No matching distribution found for tables\n" + ] + } + ], + "source": [ + "!pip install tables" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "5e952cf6-c393-487d-a843-558a28689c6d", "metadata": {}, "outputs": [ @@ -32,7 +73,7 @@ "(818, 2612)" ] }, - "execution_count": 34, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -45,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 3, "id": "20d30f56-539b-4491-8e01-23a4a4506c1d", "metadata": {}, "outputs": [], @@ -75,12 +116,12 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 5, "id": "e17feda0-0cf8-4f4c-8f48-383048572f4b", "metadata": {}, "outputs": [], "source": [ - "def align2D(path_nd2_bf_tritc, regex='(\\d+)ug'):\n", + "def align2D(path_nd2_bf_tritc, regex='(\\d+)ng'):\n", " try:\n", " ng = re.compile(regex).findall(path_nd2_bf_tritc)[0]\n", " print (int(ng), 'ug')\n", @@ -92,7 +133,7 @@ " counts = mic.get_cell_numbers(aligned[1], aligned[2], threshold_abs=2, plot=False, bf=aligned[0])\n", " \n", " counts.loc[:,'ng'] = int(ng)\n", - " l = poisson.fit(counts.query('n_cells < 10').n_cells, title=f'automatic {ng}ug')\n", + " l = poisson.fit(counts.query('n_cells < 10').n_cells, title=f'automatic {ng}ng')\n", " poisson.plt.show()\n", " counts.loc[:, 'poisson fit'] = l\n", " \n", @@ -102,21 +143,494 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 19, "id": "40d21c33-f77d-4396-9a8d-4e0df7c6891a", "metadata": {}, "outputs": [], "source": [ - "def align3D(path_BF, path_TRITC, path_to_save):\n", + "def align3D(path_BF, path_TRITC, path_to_save, regex='(\\d+)ng'):\n", + " try:\n", + " ng = re.compile(regex).findall(path_BF)[0]\n", + " print (int(ng), 'ng')\n", + " except IndexError:\n", + " print('concentration not found')\n", + " return\n", + " if not os.path.exists(path_to_save):\n", + " BF = imread(path_BF)[0,0,0]\n", + " fluo = imread(path_TRITC)[0,0].max(axis=0)\n", + "\n", + " aligned, tvec = register.align_stack_nd(stack=np.array((BF, fluo)), path=None, template16=template16, mask2=big_labels, binnings=(2,16,2))\n", + " tf.imwrite(path_to_save, aligned, dtype='uint16', imagej=True, metadata=register.META_ALIGNED)\n", + " else:\n", + " print('Already aligned')\n", + " aligned = imread(path_to_save)[0,:,0]\n", + " print(aligned.shape)\n", + " counts = mic.get_cell_numbers(aligned[1], aligned[2], threshold_abs=2, plot=False, bf=aligned[0])\n", " \n", - " BF = imread(path_BF)[0,0,0]\n", - " fluo = imread(path_TRITC)[0,0].max(axis=0)\n", + " counts.loc[:,'ng'] = int(ng)\n", + " l = poisson.fit(counts.query('n_cells < 10').n_cells, title=f'automatic {ng}ug')\n", + " poisson.plt.show()\n", + " counts.loc[:, 'poisson fit'] = l\n", " \n", - " aligned, tvec = register.align_stack_nd(stack=np.array((BF, fluo)), path=None, template16=template16, mask2=big_labels, binnings=(2,16,2))\n", - " tf.imwrite(path_to_save, aligned, dtype='uint16', imagej=True, metadata=register.META_ALIGNED)\n", + " counts.to_csv((cp := path_to_save.replace('.tif', '-counts.csv')), index=None)\n", + " print(f'Saving count to {cp}')\n", " return aligned" ] }, + { + "cell_type": "code", + "execution_count": 28, + "id": "eb5e9886-28f7-43b7-be93-d53d89b6284c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "64 ng\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\nikon\\AppData\\Local\\Temp/ipykernel_14660/2211652258.py:12: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.\n", + " aligned, tvec = register.align_stack_nd(stack=np.array((BF, fluo)), path=None, template16=template16, mask2=big_labels, binnings=(2,16,2))\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Aligning None: \n", + " bf: (7383, 22392), 2\n", + " tmp: (818, 2612), 16\n", + " mask: (6544, 20896), 2\n", + "\n", + "{'tvec': array([143.16637983, 63.18095375]), 'success': 0.045464008929561664, 'angle': -5.556934827875381, 'scale': 0.9993398785133398, 'Dscale': 0.0004774761996094207, 'Dangle': 0.013400833829660513, 'Dt': 0.25, 'timg': None}\n", + "transform (8878, 22386)\n", + "transform (7383, 22392)\n", + "(3, 6544, 20896)\n" + ] + }, + { + "data": { + "image/png": "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Lglf3LddPIrV49qRI6mprgagevNmrh05Mqb71zALkswyMzNZsGABixYtokOHDkyYMKHedU899VRuueWWNkwHs2fP5qCDDmL+/PmMGDGCmTNnkpOT02BxnzNnDh07dmTGjBlNOt7vfvc7rrvuOpYuXUpubi6PPPJInevtvffeLFiwgAULFuzyPWuKhC/uK1aswN1j9rjvjTdIy8wAImch973xRkz3v2JFvb8WFmlzFfPns/bBh1rlG+qIESNYunQpJSUlnHbaaRx88MEcdthhLFy4EIDHH3+cq6++GoDnnnuOgQMHMmjQII488kgAPvvsM4YOHUp+fj4HH3wwS5YsAWD8+PEMHDiQgQMHct999wGRs9/999+fyy+/nAMPPJDjjz+ezZs3/yjPggULuPnmm3nppZfIz89n8+bN9OvXj7Vr13LLLbewbNky8vPzuemmm+p8PSeddBJPPfVUo1+/uzNnzhzGjBkDwIUXXsi0adMavX1LNdgV0swygHeAjsH6z7v77WbWH5hMZMzoecD57l5pZh2BJ4AhRG7zNdbdl7dS/pjLGjyYPR97jOJ776Pio49I79kz7EgiTfbDXXexdfEXu1ynZuNGtn7xBbiDGR1/+lNSO3eud/2O+/+U3W67rVHHr66u5pVXXuHEE0/k9ttvZ/DgwUybNo05c+ZwwQUXsGDBgh+tf+edd/Laa6/Rp08fysrKAJgwYQLXXHMN5557LpWVldTU1DBv3jwee+wxPvzwQ9ydYcOGcdRRR5Gbm8uSJUt45plnmDhxImeffTZTp07lvPPO236M/Px87rzzTubOncvf/va3Hx3/7rvvZtGiRTvlijZ58mTmzZvH+vXryc7OZsOGDYwYMaLOdZ9++ml69uxJTk4OaWmRMtu3b19Wrar7nu7ffPMNgwcPJjs7mz/84Q/17rcpGnPmvhU41t0HEblZ74lmdhhwD3Cvu+9D5B6QlwbrXwqUBvPvDdZLKFmDB7P7H+8CM0qfe67hDUQSUO369ZHCDuAeed5CmzdvJj8/n4KCAvbcc08uvfRS3nvvPc4//3wg0na9bt061u9wrOHDh3PRRRcxceJEampqADj88MO56667uOeee1ixYgWZmZm89957nH766XTq1InOnTtzxhln8O677wLQv39/8vPzARgyZAjLly9v8evZ5tNPP6W8vJxzzjmHqVMj9zjv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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saving count to E:/Andrey/20220118-MIC-cipro-resistant/day1/composites/064ng-counts.csv\n" + ] + } + ], + "source": [ + "ng=64\n", + "Thread(target=align3D, args=(f'E:/Andrey/20220118-MIC-cipro-resistant/day1/raw/{ng:03d}ng-BF.nd2',\n", + " f'E:/Andrey/20220118-MIC-cipro-resistant/day1/raw/{ng:03d}ng-TRITC.nd2',\n", + " f'E:/Andrey/20220118-MIC-cipro-resistant/day1/composites/{ng:03d}ng.tif',)).start()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "647e28a9-7630-4ed7-84fd-3701a15d89a7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\\\000ng-BF-TRITC.nd2',\n", + " 'E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\\\032ng-BF-TRITC.nd2',\n", + " 'E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\\\096ng-BF-TRITC.nd2',\n", + " 'E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\\\128ng-BF-TRITC.nd2',\n", + " 'E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\\\192ng-BF-TRITC.nd2',\n", + " 'E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\\\256ng-BF-TRITC.nd2']" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "paths = glob('E:Andrey/20220118-MIC-cipro-resistant/day2/raw/*ng-BF-TRITC.nd2')\n", + "paths" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "abf620ed-b02a-4b8a-8568-9a263d1c0987", + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 ug\n", + "32 96 ug\n", + "ug\n", + "128 ug\n", + "192 ug\n", + "256 ug\n", + "Aligning E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\032ng-BF-TRITC.nd2: \n", + " bf: (8878, 22386), 2\n", + " tmp: (818, 2612), 16\n", + " mask: (6544, 20896), 2\n", + "\n", + "Aligning E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\000ng-BF-TRITC.nd2: \n", + " bf: (8878, 22386), 2\n", + " tmp: (818, 2612), 16\n", + " mask: (6544, 20896), 2\n", + "\n", + "Aligning E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\192ng-BF-TRITC.nd2: \n", + " bf: (8878, 22386), 2\n", + " tmp: (818, 2612), 16\n", + " mask: (6544, 20896), 2\n", + "\n", + "Aligning E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\128ng-BF-TRITC.nd2: \n", + " bf: (8878, 22386), 2\n", + " tmp: (818, 2612), 16\n", + " mask: (6544, 20896), 2\n", + "\n", + "Aligning E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\096ng-BF-TRITC.nd2: \n", + " bf: (8878, 22386), 2\n", + " tmp: (818, 2612), 16\n", + " mask: (6544, 20896), 2\n", + "\n", + "Aligning E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\256ng-BF-TRITC.nd2: \n", + " bf: (8878, 22386), 2\n", + " tmp: (818, 2612), 16\n", + " mask: (6544, 20896), 2\n", + "\n", + "{'tvec': array([ 17.74043206, -81.78606124]), 'success': 0.021730222150385524, 'angle': -2.6898205797898243, 'scale': 0.9996702506742179, 'Dscale': 0.0004914313620703765, 'Dangle': 0.013400833829660513, 'Dt': 0.25, 'timg': None}\n", + "transform (8878, 22386)\n", + "{'tvec': array([151.20316411, -88.14456159]), 'success': 0.038535965124869044, 'angle': -0.8439093592218683, 'scale': 0.9998521433399404, 'Dscale': 0.0004915207793161196, 'Dangle': 0.013400833829660513, 'Dt': 0.25, 'timg': None}\n", + "transform (8878, 22386)\n", + "{'tvec': array([ 149.9188894 , -576.18459112]), 'success': 0.07547106651366141, 'angle': -2.2890127735244334, 'scale': 0.9994160772606592, 'Dscale': 0.0004913064120813746, 'Dangle': 0.013400833829660513, 'Dt': 0.25, 'timg': None}\n", + "transform (8878, 22386)\n", + "{'tvec': array([160.12202253, 48.61542111]), 'success': 0.030041858892629166, 'angle': -1.865457029903979, 'scale': 0.9998117388158432, 'Dscale': 0.0004915009167161297, 'Dangle': 0.013400833829660513, 'Dt': 0.25, 'timg': None}\n", + "transform (8878, 22386)\n", + "{'tvec': array([64.2188064, 79.7229307]), 'success': 0.0387483283605787, 'angle': -0.9722580233374742, 'scale': 0.9997681458385859, 'Dscale': 0.0004914794866934039, 'Dangle': 0.013400833829660513, 'Dt': 0.25, 'timg': None}\n", + "transform (8878, 22386)\n", + "{'tvec': array([ 128.04585963, -159.70608637]), 'success': 0.022292114173627232, 'angle': -4.010284823024364, 'scale': 0.9950235952890625, 'Dscale': 0.0004891470966503957, 'Dangle': 0.013400833829660513, 'Dt': 0.25, 'timg': None}\n", + "transform (8878, 22386)\n", + "transform (8878, 22386)\n", + "transform (8878, 22386)\n", + "transform (8878, 22386)\n", + "transform (8878, 22386)transform (8878, 22386)\n", + "\n", + "transform (8878, 22386)\n", + "Saved aligned stack E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\032ng-BF-TRITC.aligned.tif\n", + "Saved aligned stack E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\256ng-BF-TRITC.aligned.tif\n", + "Saved aligned stack E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\128ng-BF-TRITC.aligned.tif\n", + "Saved aligned stack E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\000ng-BF-TRITC.aligned.tif\n", + "Saved aligned stack E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\192ng-BF-TRITC.aligned.tif\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved aligned stack E:Andrey/20220118-MIC-cipro-resistant/day2/raw\\096ng-BF-TRITC.aligned.tif\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEWCAYAAACdaNcBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAvkklEQVR4nO3deXwU9f348dc7m4uQYwNEwHAErwqiJBoBD6jYapEqh0LWagVFi7Zq1bYqtt9W21qrbT3qr7UotUotVS5RKqKlIBWtBZISOUQFhEA4w5GLJJDj/ftjB11iINduJtl9Px+PfezMZz4z854c7539zMznI6qKMcaY8BLldgDGGGOCz5K7McaEIUvuxhgThiy5G2NMGLLkbowxYciSuzHGhCFL7sY0QkQWicgkt+MwpjksuZt2R0SWicgtLu37IRH5W2CZql6hqjNasK1fishaEakRkYfqLfumiLwnIsUisltE/iwiSQHLu4jILBHZLyL7RGSmiCS3+MBMxLHkbkzobALuAxY2sCwFeBg4GegPpAO/DVj+MJAK9ANOBboDD4UwVhNmLLmbkBCRqSKyWUTKROQjERkXsOyYs2MRyRARFZFoEfkVMAz4g4iUi8gfnDoXisgqESlx3i8MWH+ZiDwsIv9x1vmHiHR1znZLnfoZAfV/LyLbnWV5IjLMKR8J/BjwOdv5MGD7twSs/x0R2RBwbOc29DNQ1Rmquggoa2DZ31X1LVWtUNWDwHTgooAq/YDXVLVUVUuA+cBZATGoiNwmIhuds/8/iog4yzwi8rhzxr9FRO44+vNt/DdnwoUldxMqm/En6RTg58DfRKRnYyup6k+A5cAdqpqoqneISBf8Z79PA12BJ4CFItI1YNVrgRvwnwGfCnwAvAB0ATYADwbUXQVkOsv+DswRkXhVfQt4BJjl7HtQ/fhEZAL+M+iJQDIwGtjflB9II4YD6wPm/whcKSKpIpIKXAMsqrfOlcD5wDlADvANp/w7wBXOMZ4LjA1CfKaDseRuQkJV56jqTlWtU9VZwEZgcAs3901go6q+pKo1qvoy8DFwVUCdF1R1s3OWuwjYrKr/UtUaYA6QFRDb31R1v7Otx4E44CtNjOUW4Dequkr9NqlqQQuPCwARuQyYBPwsoPh/QCz+D479QC3wTL1VH1XVYlXdBryDP5mDP9H/XlULnW8Fj7YmPtMxWXI3ISEiE0Uk32kyKAYGAt1auLmTgfoJtAD/WfpRewKmKxuYTwyI7UdOs0qJE1tKM2Lrjf9bSVCIyFD83x7Gq+qnAYtmA58CSfi/IWwG/lZv9d0B0xV8cYwnA9sDlgVOmwhhyd0EnYj0xd+GfAfQVVW9wDpAnCqHgISAVXrU20T9rkp3An3rlfUBdrQgtmH4L3LmAKlObCUBsTXWTep2/M0+rSYiWcACYLKqLqm3OBN4VlUPqWo5MA0Y1cRN7wJ6Bcz3bm2spuOx5G5CoTP+JFkEICI34T9zPyofGC4ifUQkBXig3vp7gFMC5t8EzhCR65yLrj5gAPBGC2JLAmqc2KJF5Gf4z4wD950hIsf73/gz8CMROU/8TnM+zL5ERGJEJB7//1m0iMSLiMdZNhB4C7hTVf/RwOqrgFtEpJOIdAKmAGuaeIyzgbtEJF1EvMD9TVzPhBFL7iboVPUj4HH8FzX3AGcD7wcsXwzMwp+s8vhykv49MF5EDorI06q6H//Fwx/ib3++D7hSVfe1ILy38SfVT/E37VRxbLPFHOd9v4j8r4FjmwP8Cn9TShnwGv4Lsw2Zjr9J6FvAT5zpG5xlPwTSgOedO3PKRSTwgupkIAMoxP8N5RT87fJNMR34J/6f72r8H441+NvtTYQQG6zDmPAmIlcA01S1wW8YJjzZmbsxYcZpyhnlNGGl478NdL7bcZm2ZWfuxoQZEUkA/g2cib8paCFwl6qWuhqYaVNNTu7OhaBcYIeqXiki/YBX8D9UkgfcoKpHRCQO+CtwHv72UZ+qbg1F8MYYYxrWnGaZu/A/6XfUY8CTqnoacBC42Sm/GTjolD/p1DPGGNOGmnTmLiK9gBn47xL4Af4nA4uAHqpaIyIXAA+p6jdE5G1n+gOnL4vdQJqeYEfdunXTjIyM1h+NMcZEkLy8vH2qmtbQsqZ2JPQU/tvPjnZJ2hUodh7tBv/tWkefFkzHubXMSfwlTv1jblsTkSn4792lT58+5ObmNjEUY4wxACJy3K4vGm2WEZErgb2qmhfMoFT1OVXNVtXstLQGP3iMMca0UFPO3C8CRovIKCAe/9N8vwe8IhLtnL334otHwXfgf9y50GmWSSE4veYZY4xpokbP3FX1AVXtpaoZ+LtVXaqq1+PvhW68U20S8LozvYAvnqQb79S3+y2NMaYNtabz/vuBV0TkYfyPOD/vlD8PvCQim4AD+D8QjDEhVl1dTWFhIVVVVW6HYoIsPj6eXr16ERMT0+R1mpXcVXUZsMyZ/owG+udW1SpgQnO2a4xpvcLCQpKSksjIyMAZlMmEAVVl//79FBYW0q9fvyavZ90PGBMmqqqq6Nq1qyX2MCMidO3atdnfyCy5GxNGLLGHp5b8Xi25t9ChlSsp+v3vqVi92u1QjDHmSyy5t0DFqlVsmziJfX+axrabJluCN8bh8XjIzMxk4MCBTJgwgYqKiuPWXbBgAY8+2rbDuxYVFTFkyBCysrJYvnw5o0aNori4mOLiYp55pv4QtV+49NJLGTVqFNXV1c3a35YtWxgyZAinnXYaPp+PI0eOfKnOypUryczMJDMzk0GDBjF/fnA68LTk3gIV//simWt1NRUrV7kYjTHtR6dOncjPz2fdunXExsYybdq049YdPXo0U6dObcPoYMmSJZx99tmsXr2aYcOG8eabb+L1ehtN7kuXLiUuLo6FCxc2a3/3338/99xzD5s2bSI1NZXnn3/+S3UGDhxIbm4u+fn5vPXWW9x6663U1NQ0sLXmseTeAgmDz0diY/0zUVEkDD7f3YCMaaGK1avZ9+xzIfn2OWzYMDZt2sSBAwcYO3Ys55xzDkOHDmXNGv9ogS+++CJ33HEHAHPmzGHgwIEMGjSI4cOHA7B+/XoGDx5MZmYm55xzDhs3bgTgiSeeYODAgQwcOJCnnnoKgK1bt9K/f3++853vcNZZZ3H55ZdTWVl5TDz5+fncd999vP7662RmZlJZWUlGRgb79u1j6tSpbN68mczMTO69994Gj+eKK65g5syZTT5+VWXp0qWMH+9/HGjSpEm89tprX6qXkJBAdLT/xsWqqqqgXTdpzX3uESshK4s+L75I4R134OmSSkJWltshGXOM3Y88wuENH5+wTm15OYc//hhUQYS4M8/Ek5h43Ppx/c+kx49/3KT919TUsGjRIkaOHMmDDz5IVlYWr732GkuXLmXixInk5+cfU/8Xv/gFb7/9Nunp6RQXFwMwbdo07rrrLq6//nqOHDlCbW0teXl5vPDCC6xYsQJVZciQIXz1q18lNTWVjRs38vLLLzN9+nRycnKYN28e3/72tz/fR2ZmJr/4xS/Izc3lD3/4wzH7f/TRR1m3bt2X4gr0yiuvkJeXR2lpKcnJyZSVlTFs2LAG6/7973/npJNOwuv1fp64e/XqxY4dDY/pvmLFCiZPnkxBQQEvvfTS5+u0hp25t1DCuVl0u+1WjmzaTNXHJ/4nMqY9qist9Sd2AFX/fCtVVlaSmZlJdnY2ffr04eabb+a9997jhhv8Q8deeuml7N+/n9J6+7rooou48cYbmT59OrW1/qFeL7jgAh555BEee+wxCgoK6NSpE++99x7jxo2jc+fOJCYmcvXVV7N8+XIA+vXrR2ZmJgDnnXceW7dubfXxHLV27VpKSkq47rrrmDdvHgBJSUnk5+c3+BowYECztj9kyBDWr1/PqlWr+PWvfx2UB9E6/Jl7RkYGBQXH7RgtpJKjolh26mk88tVL+OXePW223759+wb1D9eEn6acYVesXs22myaj1dVITAwn/+63rf4WerTNvbmmTZvGihUrWLhwIeeddx55eXlcd911DBkyhIULFzJq1CieffbZE24jLi7u82mPx/OlZpnWeOqpp7jnnnvo168fDz74IDfddFOjZ+79+/enuLiYmpoaoqOjKSwsJD09vcH6R/Xv35/ExETWrVtHdnZ2q2Lu8Mm9oKAAN7uu2Xn/VK7/17946LPNRHXu3Cb7tHuZTTAkZGXR54W/ULFyFQmDzw9Z8+KwYcOYOXMmP/3pT1m2bBndunUjOTn5mDqbN29myJAhDBkyhEWLFrF9+3ZKSko45ZRT+P73v8+2bdtYs2YNw4cP58Ybb2Tq1KmoKvPnz+ell15qdYxJSUmUlZU1uKyoqIh///vfTJs2jZiYGAoKCti5cycnn3xyox9kI0aMYO7cuVx77bXMmDGDMWPGfKnOli1b6N27N9HR0RQUFPDxxx8TjPEtrFmmlbw+H3WHDlHy5ptuh2JMsyVkZdHt1ikhvW700EMPkZeXxznnnMPUqVOZMWPGl+rce++9nH322QwcOJALL7yQQYMGMXv2bAYOHEhmZibr1q1j4sSJnHvuudx4440MHjyYIUOGcMstt5AVhNi7du3KRRddxMCBA790QfXZZ5/llltu+bxfl29961u88sorTdruY489xhNPPMFpp53G/v37uflm/4B1CxYs4Gc/+xkA7733HoMGDSIzM5Nx48bxzDPP0K1bt1YfU7sYIDs7O1tbOliHiLh65q6qbBk9BomLo9/cOW2yT7eP2bRPGzZsoH///m6HYUKkod+viOSpaoPtN3bm3koigtfno2rdOirXr3c7HGOMASy5B0XK6KuQ+HiKZ812OxRjjAEsuQeFJzmZ5FGjKH3jDWrLD7kdjolg1lwXnlrye7XkHiSpvhzqKioofeMNt0MxESo+Pp79+/dbgg8zR/tzj4+Pb9Z6Hf5WyPYi/pxziPvKVzg4exZeX47drmjaXK9evSgsLKSoqMjtUEyQHR2JqTksuQeJ/8JqDnt+8Uuq1q2j09lnux2SiTAxMTHNGqnHhLdGm2VEJF5EVorIhyKyXkR+7pS/KCJbRCTfeWU65SIiT4vIJhFZIyLnhvgY2o2Uq65COnXi4KxZbodijIlwTWlzPwxcqqqDgExgpIgMdZbdq6qZzivfKbsCON15TQH+FNyQ2y9PUhLJ3xxF6cI3qT3O027GGNMWGk3u6lfuzMY4rxNdsRkD/NVZ77+AV0R6tj7UjiHV50MrKyn5xz/cDsUYE8GadLeMiHhEJB/YCyxW1RXOol85TS9PisjRXnvSge0Bqxc6ZfW3OUVEckUkN5wuAMUPHEjcgP4Uz5ptdy0YY1zTpOSuqrWqmgn0AgaLyEDgAeBM4HygC3B/c3asqs+paraqZqelpTUv6nZMREjN8XH4k0+o+vBDt8MxxkSoZt3nrqrFwDvASFXd5TS9HAZeAAY71XYAvQNW6+WURYzkK68kKiGBg/bEqjHGJU25WyZNRLzOdCfgMuDjo+3o4r+heyywzlllATDRuWtmKFCiqrtCEHu75UnsTPKVV1K6aBG1QRgAwRhjmqspZ+49gXdEZA2wCn+b+xvATBFZC6wFugEPO/XfBD4DNgHTge8FPeoOwOvLQauqKHl9gduhGGMikHX5G0Jbxk9AD1fRb8GCoD6x2p6P2RjTdqzLX5d4fTkc3riJyhCMLG+MMSdiyT2EUkaNIqpzZ4rtiVVjTBuz5B5CUZ07kzz6KkoXvUVtcbHb4RhjIogl9xBL9fnQI0coWWAXVo0xbceSe4jFn3km8YPO4aA9sWqMaUOW3NtAao6PI5s3U5mX53YoxpgIYcm9DSSPuoKopCR7YtUY02YsubeBqE6dSBk9mrK336bm4EG3wzHGRABL7m3E68vxX1h97XW3QzHGRABL7m0k/owz6JSVRfFsu7BqjAk9S+5tyOvL4ciWLVSsXOV2KMaYMGfJvQ0ljxxJVEqKPbFqjAk5S+5tKCo+npQxoyldvJiaAwfcDscYE8YsubexVJ8PqqspmT/f7VCMMWHMknsbizv1VDpln8fB2bPRujq3wzHGhClL7i5I9fmoLthGxYoVjVc2xpgWsOTugqTLL8eTkmJPrBpjQsaSuwui4uJIGTuWsn/9i5p9+9wOxxgThpoyQHa8iKwUkQ9FZL2I/Nwp7yciK0Rkk4jMEpFYpzzOmd/kLM8I8TF0SF5fDtTUUPyqXVg1xgRfU87cDwOXquogIBMYKSJDgceAJ1X1NOAgcLNT/2bgoFP+pFPP1BN3yikknH8+xXPm2IVVY0zQNZrc1a/cmY1xXgpcCsx1ymcAY53pMc48zvKvSTBHhw4jXp+P6u3bOfSfD9wOxRgTZprU5i4iHhHJB/YCi4HNQLGq1jhVCoF0Zzod2A7gLC8BujawzSkikisiuUVFRa06iI4q6fLL8KSm2hOrxpiga1JyV9VaVc0EegGDgTNbu2NVfU5Vs1U1Oy0trbWb65CiYmNJGTeOsqVLqd671+1wjDFhpFl3y6hqMfAOcAHgFZFoZ1EvYIczvQPoDeAsTwH2ByPYcJSaMwFqayl59VW3QzHGhJGm3C2TJiJeZ7oTcBmwAX+SH+9UmwQc7ah8gTOPs3ypWh+3xxWbkUHC0KEUz56D1ta6HY4xJkw05cy9J/COiKwBVgGLVfUN4H7gByKyCX+b+vNO/eeBrk75D4CpwQ87vKT6cqjeuZND77/vdijGmDAR3VgFVV0DZDVQ/hn+9vf65VXAhKBEFyGSvvY1PF27cnDWbBKHD3c7HGNMGLAnVNsBiY3Fe/U4ypcto3rPHrfDMcaEAUvu7YR3gv/CavHcuY1XNsaYRlhybydi+/Sh84UXUjx3nl1YNca0miX3dsTr81Gzaxfly5e7HYoxpoOz5N6OJF06Ak9aN4qtK2BjTCtZcm9HJCYG79XXUP7vf1O9a5fb4RhjOjBL7u2Md8IEUKV47jy3QzHGdGCW3NuZ2F7pdL74YornzkVrahpfwRhjGmDJvR1K9eVQs2cP5e++63YoxpgOypJ7O5R4ySVEn3QSB60rYGNMC1lyb4ckOhrv+Gs49O5yqnfsaHwFY4ypx5J7O+UdPx5EOGhPrBpjWsCSezsVc/LJJA4bRsnceWh1tdvhGGM6GEvu7ZjX56OmqIiyZcvcDsUY08FYcm/HEocPI7pHD3ti1RjTbJbc2zH/hdXxHHr/fY4UFrodjjGmA7Hk3s55x18DIhTPnuN2KMaYDsSSezsX06MHiZdcQvGrr9qFVWNMkzVlgOzeIvKOiHwkIutF5C6n/CER2SEi+c5rVMA6D4jIJhH5RES+EcoDiATenAnU7ttH2ZKlbodijOkgGh1DFagBfqiq/xORJCBPRBY7y55U1d8FVhaRAcC1wFnAycC/ROQMVbURKFoocdgwok/uSfHsWSSPtM9KY0zjGj1zV9Vdqvo/Z7oM2ACkn2CVMcArqnpYVbcAm2hgIG3TdOLx+C+s/ucDjhQUuB2OMaYDaFabu4hkAFnACqfoDhFZIyJ/EZFUpywd2B6wWiEn/jAwTeC9Zjx4PBTPsQurxpjGNTm5i0giMA+4W1VLgT8BpwKZwC7g8ebsWESmiEiuiOQWFRU1Z9WIFNP9JBJHXELxq/OJcTsYY0y716TkLiIx+BP7TFV9FUBV96hqrarWAdP5oullB9A7YPVeTtkxVPU5Vc1W1ey0tLTWHEPESPX5qD1wgK8lJbkdijGmnWvK3TICPA9sUNUnAsp7BlQbB6xzphcA14pInIj0A04HVgYv5MjV+aKLiElPJyfF63Yoxph2riln7hcBNwCX1rvt8TcislZE1gAjgHsAVHU9MBv4CHgLuN3ulAkOiYrCO2ECQzt35vCWLW6HY4xpx0RV3Y6B7Oxszc3NbdG6IkJ7OIa2UlNUxEcXD6P75Ml0v/8+t8MxxrhIRPJUNbuhZfaEagcTnZbG0vIySubPp+7wYbfDMca0U5bcO6DZxcXUFhdT9s/FjVc2xkQkS+4d0H8rKojp3ZtiG2PVGHMcltw7IMXf30xFbi6HP/vM7XCMMe2QJfcOynv11RATYwN5GGMaZMm9g4ru2pWkr3+NktdeswurxpgvseTegaX6fNSWlFD29ttuh2KMaWcsuXdgCUOGENu3LwetacYYU48l9w5MRPDm5FCZl8fhjRvdDscY045Ycu/gUq4eh8TEcNDGWDXGBLDk3sFFp6aSdPnllLz+OnVVVW6HY4xpJyy5hwGvL4e60lJKF73ldijGmHbCknsYSDj/fGJPOcWeWDXGfM6SexjwX1idQGV+PlWffOp2OMaYdsCSe5jwjh2LxMba2bsxBrDkHjY8Xi9JI79ByYIF1FVUuB2OMcZlltzDSKrPR115OaWLFrkdijHGZZbcw0inc88l9rRT7YlVY0yTBsjuLSLviMhHIrJeRO5yyruIyGIR2ei8pzrlIiJPi8gmEVkjIueG+iCMn4iQmuOjas0aqjZscDscY4yLmnLmXgP8UFUHAEOB20VkADAVWKKqpwNLnHmAK4DTndcU4E9Bj9ocV8qY0UhcHAftwqoxEa3R5K6qu1T1f850GbABSAfGADOcajOAsc70GOCv6vdfwCsiPYMduGmYJyWF5JEjKf3HG9QdOuR2OMYYlzSrzV1EMoAsYAXQXVV3OYt2A92d6XRge8BqhU6ZaSNen4+6Q4coWbjQ7VCMMS5pcnIXkURgHnC3qpYGLlNVxT/6W5OJyBQRyRWR3KKiouasahrRKSuTuNNPt1GajIlgTUruIhKDP7HPVNVXneI9R5tbnPe9TvkOoHfA6r2csmOo6nOqmq2q2WlpaS2N3zRARPD6fFStX0/luvVuh2OMcUFT7pYR4Hlgg6o+EbBoATDJmZ4EvB5QPtG5a2YoUBLQfGPaSMroq5D4eHti1ZgI1ZQz94uAG4BLRSTfeY0CHgUuE5GNwNedeYA3gc+ATcB04HvBD9s0xpOcTPKoUZQsXEhtebnb4Rhj2lh0YxVU9T1AjrP4aw3UV+D2VsZlgiDVl0PJq69S+sYbpF57rdvhGGPakD2hGsbizzmHuDPP5OCs2fg/c40xkcKSexgTEVJ9ORzesIGqtWvdDscY04YsuYe55KuuQhIS7IlVYyKMJfcw50lMJOWboyh9cxG1ZWVuh2OMaSOW3COAN8eHVlZS8o9/uB2KMaaNWHKPAJ3OHkj8gAEU24VVYyKGJfcI4fX5OPzJJ1R9+KHboRhj2oAl9wiR/M1vEpWQYAN5GBMhLLlHCE9iZ5KvuorSRYuoLS1tfAVjTIdmyT2CpPpy0KoqSl5f4HYoxpgQs+QeQeIHDCD+7LMpnj3LLqwaE+YsuUeYVF8OhzduonL1ardDMcaEkCX3CJM8ahRRiYnWFbAxYc6Se4SJSkggZfRVlC56i9riYrfDMcaEiCX3COT1+dAjRyh5/fXGKxtjOiRL7hEo/itfodOgQdYVsDFhzJJ7hPL6fBz57DMqc3PdDsUYEwKW3CNU8hUjiUpKsidWjQlTTRkg+y8isldE1gWUPSQiO+qNqXp02QMisklEPhGRb4QqcNM6UZ06kTJmDGVvv03NwYNuh2OMCbKmnLm/CIxsoPxJVc10Xm8CiMgA4FrgLGedZ0TEE6xgTXB5cyag1dWUzH/N7VCMMUHWaHJX1XeBA03c3hjgFVU9rKpbgE3A4FbEZ0Io/owz6JSVRfFsu7BqTLhpTZv7HSKyxmm2SXXK0oHtAXUKnTLTTnl9ORzZupWKFSvdDsUYE0QtTe5/Ak4FMoFdwOPN3YCITBGRXBHJLSoqamEYprWSR44kKiWF4tn2xKox4aRFyV1V96hqrarWAdP5oullB9A7oGovp6yhbTynqtmqmp2WltaSMEwQRMXHkzJmNKWL/0XN/v1uh2OMCZIWJXcR6RkwOw44eifNAuBaEYkTkX7A6YB932/nUn0+qK6mZP58t0MxxgRJU26FfBn4APiKiBSKyM3Ab0RkrYisAUYA9wCo6npgNvAR8BZwu6rWhix6ExRxp55Kp+zzODh7DlpX53Y4xpggiG6sgqp+q4Hi509Q/1fAr1oTlGl7qT4fO++9j4r//pfOF17odjjGmFayJ1QNAEmXX47H67UnVo0JE5bcDQBRcXGkjB1L2ZIl1NjdS8Z0eJbczee8OTlQU0Pxq3Zh1ZiOzpK7+VzcKf1IGDyY4jl2YdWYjs6SuzmG15dDdWEhh/7zgduhGGNawZK7OUbSZZfhSU21MVaN6eAsuZtjRMXGknL1OMqWLqV67163wzHGtJAld/MlqTk5UFtLyauvuh2KMaaFLLmbL4nt25eEC4ZSPHsOWmsPGBvTEVlyNw1K9fmo3rmTQ++/73YoxpgWsORuGpR06aV4una1J1aN6aAsuZsGSWws3quvpnzZMqr37HE7HGNMM1lyN8flzZkAtbUUz53rdijGmGay5G6OK7Z3bzpfdBHFc+fZhVVjOhhL7uaEvL4canbtovzdd90OxRjTDJbczQkljRiBJ60bxXZh1ZgOxZK7OSGJicF7zTWUv/su1bt2uR2OMaaJLLmbRqVOmACqFM+xC6vGdBSNDrNnTEx6Op2HXczBl19GYmJIGDqEhKwst8MyxpxAUwbI/ouI7BWRdQFlXURksYhsdN5TnXIRkadFZJOIrBGRc0MZvGk7CeefT+3BgxQ9/TTbbppMxerVbodkjDmBpjTLvAiMrFc2FViiqqcDS5x5gCuA053XFOBPwQnTuK7GuRVSFT18mIoVK92NxxhzQo0md1V9FzhQr3gMMMOZngGMDSj/q/r9F/CKSM8gxWpclDB0CBIX559RpXz5cmrLytwNyhhzXC29oNpdVY/eOrEb6O5MpwPbA+oVOmVfIiJTRCRXRHKLbEDmdi8hK4s+L75A2j13kzppEpUffsjWCTkc3rTJ7dCMMQ1o9d0yqqqAtmC951Q1W1Wz09LSWhuGaQMJWVl0u/VWejwwlb4vvkBteTlbcnyUvvW226EZY+ppaXLfc7S5xXk/OmTPDqB3QL1eTpkJMwnZ2fSbN5f4009nx913s/fxx62LAmPakZYm9wXAJGd6EvB6QPlE566ZoUBJQPONCTMx3bvT56W/4vX52D/9z2z/zhRqDh50OyxjDE27FfJl4APgKyJSKCI3A48Cl4nIRuDrzjzAm8BnwCZgOvC9kERt2o2o2Fh6/vwhej78SypWrWLr+AlUffSR22EZE/HE32TuruzsbM3NzW3RuiJCeziGttRej7lyzRoKv38XtQcP0vOXvyBl9Gi3QzImrIlInqpmN7TMuh/ooESk3b0SBg1i6HvLWXHwIDvvu58fd+9OTJC2nZGR4faP3JgOxZJ7B6Wq7fK1v6aGiZs30WXSRG5I7cKm679NdVFRq7dbUFDg9o/cmA7FkrsJOomJofsDD3Dyb39L5bp1bLn6Girz890Oy5iIYsndhEzKVVeS8crLSGwsBTdMtMG2jWlDltxNSMWfeSb95s4hYcgQdj/4ILt++lPqjhxxOyxjwp4ldxNyHq+X3s9Oo+ttt1I8Zy4F376B6t273Q7LmLBmyd20CfF4OOnuu0n/f09zZPNmtlwznkMrrWdJY0LFkrtpU8mXXUbGnNl4kpPZdtNkDsyY0S7v2Temo7Pkbtpc3CmnkDFnNokjLmHPrx9l5733UVdZ6XZYxoQVS+7GFZ7ERHo9/TRpd99F6cKFbP3WdRzZvr3xFY0xTWLJ3bhGoqLodttt9H52GtU7d7Jl/ATKl7/ndljGhAVL7sZ1icOH02/uHGK6d2f7lCnse/Y5a4c3ppUsuZt2IbZPHzJeeZnkUaMoevJJdnz/+9SWH3I7LGM6LEvupt2ISkjg5N/9lpOm3k/Z0nfYmpPD4c+2uB2WMR2SJXfTrogIXW+8kT7PP09tcTFbJ0ygbMkSt8MypsOx5G7apc5Dh9Bv3lxi+/Wj8PY7uLNrNxvGz5hmsORu2q2Ynj3pO/NvpFxzNd/t1o3t3/0utSUlbodlTIdgyd20a1FxcfR8+GF+vns3hz74L1sm5FD1yaduh2VMu9eq5C4iW0VkrYjki0iuU9ZFRBaLyEbnPTU4oZpIJSLMKimm719noJWVbL32WkoWLnQ7LGPatWCcuY9Q1cyAcfymAktU9XRgiTNvTKslZGWRMW8u8f37s/OHP2LPY79Ba2rcDsuYdikUzTJjgBnO9AxgbAj2YSJUzEkn0ffFF0i9/noOvPAC226+hZoDB9wOy5h2p7XJXYF/ikieiExxyrqr6i5nejfQvaEVRWSKiOSKSG5RUVErwzCRRGJj6fHT/6Pnr39NZX4+W64ZT+XadW6HZUy70trkfrGqngtcAdwuIsMDF6r/GfIGnyNX1edUNVtVs9PS0loZholE3nFj6fv3mSBQcP31FM+b53ZIxrQbrUruqrrDed8LzAcGA3tEpCeA8763tUEaczydzjqLfvPm0em8c9n1k/9j10MPoTaMnzEtT+4i0llEko5OA5cD64AFwCSn2iTg9dYGacyJRKem0mf6dLrcPJniV2ZRMHES1XvsnMJEttacuXcH3hORD4GVwEJVfQt4FLhMRDYCX3fmjQkpiY6m+733kv7kE1R9+ilbxl9DRV6e22EZ4xppD12rZmdna25ubovWFZGI6x7WjvnEqj79lMI776R6x066PzCV1OuuQ0RCHKExbU9E8gJuQz+GPaFqwk78GWfQb84cEi++mD2/fJhdD/yYuqoqt8Mypk1ZcjdhyZOcTK9n/ki322+n5LXXKLjueqp37HA7LGPajCV3E7YkKoq0O++g15+e4ci2bWy5ZjyHPvjA7bCMaROW3E3YSxoxgn5z5+Dp1pVtN9/C/uefj7hrFibyWHI3ESE2I4N+s2aRdNll7P3t79jxgx9Qd8iG8TPhy5K7iRhRnTuT/tSTnPSjH1L29j/Zeu23OFJQ4HZYxoSEJXcTUUSErrfcQu/pz1Gzdy9bxk+gbNkyt8MyJuii3Q7AmKYK9r3qJ0fH8HR6OjW33sYf9+9j2v79DXeE5JK+ffuydetWt8MwHZSduZsOQ1WD+tpRfYRxH28gdewY7uyWRsFt36WmtDTo+2npq8CajEwrWHI3ES0qPp6ejz5K95/8hPLly9k6fgKHN250OyxjWs2Su4l4IkKXG75N3xdfoPbQIbb4rqX0rbfdDsuYVrHkbowjITubfvPmEn/66ey4+272Pv44FXl57Hv2OSpWr3Y7PGOaxToO64DsmEOr7sgR9vzqEYpnzYKoKFBFYmI4+be/IXHECKJiY9skjkj8PZvmOVHHYXa3jDH1RMXG0vPnD1F7YD9li/8FgB45wo677gbA07UrMT16EN2zBzE9ehLTozvRPXoS07MH0d17ENP9JCQmxsUjMMaSuzHH1WXyZMrfXY5WVyMeD10mT0biYqnZtZvq3bupLthGxYqV1JWVHbuiCNHduhHdsycx3bs3/CGQloZE27+fCR376zLmOBKysujz4gtUrFxFwuDzScjKarBebfkhanbvonr3Hv/7rt1U79lNza7dHP7sMw69/z51FRXHrhQVRXRamvMNoN6HQM8eRPfoYRfETKtYm3sHZMfcsagqdeXlVO/aRc1u/1l/ze7d/g+B3buo2b2H6t270crKY9arVqWopobdNdXsrq73XlPD7upq9tfWtqsHr1rLHtxqHmtzN8ZFIoInKQlPUhKccUaDdVSVupISf3OPk/x/fued3Df5Zk7b/cWHgB4+fOyKMTHEnHRSw00/PXoQ06MHni5dOsxIVB0lzo4gZGfuIjIS+D3gAf6sqscdS9XO3JvHjjky1D9mVaW2uJiaXbu++BDYFfBNwHnX6upjtxMb60/09Zt+uvf4/EPA4/UiIlSsXt1oM1QoReLvuTXa/MxdRDzAH4HLgEJglYgsUNWPQrE/YyKBiBCdmkp0airxAwY0WEfr6qg9cODY9v+App/K3DxK9+6Fmppjtx0fj8frpWbvXqirA4+HxK8OJzrtJMQTBRIFnigkygNRUQ2UCeLxQJQHiRI4WhblcepE+ZcFrufxgBy7rRGdEyl7552Gt+Vx9h24ragoJ56AbR2tE1jm8fi/FTRQVrl2LRWrcl37QAuVkJy5i8gFwEOq+g1n/gEAVf11Q/XtzL157JgjQ6iOWevqqNm370vt/+Xvv8eRT7/oeiGqc2ekUyeorYW6OrSuDmpr/THV1vrnj77CQFVdHTdt38aHbTzebmuuM7jR5p4ObA+YLwSG1AtqCjDFmS0XkU9aujMX2+m6Afvc2LEdc5uKiGPuHBXVuW9MzBn4n1yvK6iu/vRQXV1Yj2jSPTq6R1dPdLoAiur+2tqdwO62jKGgoKA1v+e+x1vg2gVVVX0OeM6t/QeDiOQe71MzXNkxh79IO14Iz2MO1a20O4DeAfO9nDJjjDFtIFTJfRVwuoj0E5FY4FpgQYj2ZYwxpp6QNMuoao2I3AG8jf9WyL+o6vpQ7MtlHbpZqYXsmMNfpB0vhOExt4snVI0xxgSXdV9hjDFhyJK7McaEIUvuLSAiI0XkExHZJCJT3Y6nLYjIX0Rkr4isczuWtiAivUXkHRH5SETWi8hdbscUaiISLyIrReRD55h/7nZMbUVEPCKyWkTecDuWYLHk3kwBXStcAQwAviUiDT8LHl5eBEa6HUQbqgF+qKoDgKHA7RHwez4MXKqqg4BMYKSIDHU3pDZzF7DB7SCCyZJ78w0GNqnqZ6p6BHgFGONyTCGnqu8CB9yOo62o6i5V/Z8zXYb/Hz/d3ahCS/3KndkY5xX2d1yISC/gm8Cf3Y4lmCy5N19DXSuE9T99pBORDCALWOFyKCHnNE/kA3uBxaoa9scMPAXcB4RHJzkOS+7GnICIJALzgLtVtdTteEJNVWtVNRP/U+WDRWSgyyGFlIhcCexV1Ty3Ywk2S+7NZ10rRAgRicGf2Geq6qtux9OWVLUYeIfwv85yETBaRLbib2K9VET+5m5IwWHJvfmsa4UIIP5u+p4HNqjqE27H0xZEJE1EvM50J/zjMXzsalAhpqoPqGovVc3A/7+8VFW/7XJYQWHJvZlUtQY42rXCBmB2mHatcAwReRn4APiKiBSKyM1uxxRiFwE34D+Ty3deo9wOKsR6Au+IyBr8JzGLVTVsbg2MNNb9gDHGhCE7czfGmDBkyd0YY8KQJXdjjAlDltyNMSYMWXI3xpgwZMndBI2IlDehzp+PdsAlIj+ut+w/wdhHMInIMhEJ+cDJIvJ9EdkgIjNbuZ0XRWS8M90msZv2yZK7aVOqeouqfuTM/rjesgtdCClkRKQ5w1h+D7hMVa8PVTwmslhyN0EnIpc4Z41zReRjEZnpPPH5+dmkiDwKdHIeDprpLCt33hNFZImI/E9E1orICXvdFJEM56x3utMP+T+dJyyPOXsVkW7OY+aIyI0i8pqILBaRrSJyh4j8wOnT+78i0iVgFzc4ca4TkcHO+p2dPu5XOuuMCdjuAhFZCixpINYfONtZJyJ3O2XTgFOARSJyT736HhH5nVN/jYjc6ZSfJyL/FpE8EXlbRHqe4Ofjcc7o1zk/z3uOV9eEEVW1l72C8gLKnfdLgBL8/e5E4X+y9WJn2TIgO7B+A+tHA8nOdDdgE188cFfewH4z8Pe/nunMzwa+3cD+ugFbnekbne0mAWlOvLc5y57E31HY0fWnO9PDgXXO9CMB+/ACnwKdne0WAl0aiPM8YK1TLxFYD2Q5y7YC3RpY57vAXCDame+Cvyve/wBpTpkP/yD04O93f3zgsTv7XRywTa/bfyv2Cv2rOV8bjWmOlapaCOB0IZsBvNfEdQV4RESG4++GNR3oDuw+wTpbVDXfmc5z9teYd9TfV3uZiJQA/3DK1wLnBNR7Gfx92otIstP/yuX4O5z6kVMnHujjTC9W1Yb6vr8YmK+qhwBE5FVgGLD6BDF+HZim/m4vUNUDTk+NA4HFzhciD7DrBNv4DDhFRP4fsBD45wnqmjBhyd2EyuGA6Vqa97d2Pf6z6fNUtdppSolv5v46OdM1fNH8WH8bgevUBczX1Yu3fh8div8D6BpV/SRwgYgMAQ41EmtrCbBeVS9oSmVVPSgig4BvALcBOcDkEMZn2gFrczduqna61a0vBX8f29UiMgLo24p9bMXfLAEwvoXb8AGIyMVAiaqW4O847s6AawlZTdjOcmCsiCSISGdgnFN2IouBW49enHWuBXwCpInIBU5ZjIicdbwNiEg3IEpV5wH/B5zbhFhNB2fJ3bjpOWBNA7f/zQSyRWQtMJHWdTv7O+C7IrIaf5t7S1Q5608DjvaG+Uv8bd9rRGS9M39C6h+270VgJf5Rnf6sqidqkgH/0G/bnP18CFyn/uEdxwOPOWX5wInuNEoHljnNY38DHmgsVtPxWa+QxhgThuzM3RhjwpAld2OMCUOW3I0xJgxZcjfGmDBkyd0YY8KQJXdjjAlDltyNMSYM/X8Z99H0V7sz6gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\nikon\\miniconda3\\envs\\nd2\\lib\\site-packages\\scipy\\optimize\\minpack.py:833: OptimizeWarning: Covariance of the parameters could not be estimated\n", + " warnings.warn('Covariance of the parameters could not be estimated',\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEWCAYAAACdaNcBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAkxElEQVR4nO3deZRU5bnv8e8DDYiIDIITqGBsrA0qKmgYNCbgCESTFW/iceJEDRo1R6NZxuGcRJMbg4kkUc+98SoqqJjJxCNpjLMYzxFFcMZdEUTCjDJIABFp+rl/7Ldj0TT0WL2rd/8+a9WqPdZ+qqB/vfutvd/X3B0REcmWdmkXICIizU/hLiKSQQp3EZEMUriLiGSQwl1EJIMU7iIiGaRwF6mDmf3FzManXYdIQyjcpeSY2UwzuyilY99oZg8WLnP309x9aiNe68dm9paZVZrZjTXWmZndYGaLzewfZvZbM9uzYP2tZjbfzDaYWd7Mzm/0m5I2SeEuUjwLgGuAGbWsOx84DxgJ7A90Bu4oWL8J+DLQDRgP3GZmI4parWSKwl2KwsyuNbP3wpnnO2b21YJ1250dm1k/M3MzKzOznwDHA/9pZhvN7D/DNiPM7BUzWx+eRxTsP9PM/reZvRj2+bOZ7WVm08JZ8Stm1q9g+9vMbElYN9fMjg/LTwWuB74RXueNgte/qGD/b5lZXPDejq7tM3D3qe7+F2BDLau/DNzj7kvcfSNwSzju7mHfH7p73t2r3P1l4AVgeI3Pa3w4819tZjcU1NfZzKaa2bpQ5zVmtrR+/3KSFQp3KZb3SEK6G3AT8KCZ7VfXTu5+A0mQXe7ue7j75WbWk+Ts93ZgL+AXwAwz26tg17NIzoT7AJ8DZgH3AT2BGPhhwbavAEeGdQ8BfzCz3dz9ceBm4Hfh2INr1mdm/wu4keTMe0/gdGBNfT6QWliN6U5AeS3H7AwcA8yrseo44FBgNPADM4vC8h8C/YCDgZOAcxtZn7RiCncpCnf/g7svD2eevwPmA8c28uXGAvPd/QF3r3T33wB5krPfave5+3vuvh74C/Ceuz/t7pXAH4CjCmp70N3XhNeaRBKqh9azlouAn7n7K55Y4O5/b8R7ehy4KJyFdwO+H5bvXsu2dwJvAE/UWH6Tu2929zfC+upfRl8Hbnb3de6+lOSXorQxCncpCjM738xeN7OPzOwj4DCgVyNfbn+gZoD+neQsvdqqgunNtczvUVDb90JzxfpQW7cG1HYAyV8lTXUv8BtgJskZ+XNh+XbNJ2b2c5LP7uu+Yy9/KwumP+az97g/sKRgXeG0tBEKd2l2ZnYQcDdwObCXu3cH3uazZohNbH+Gum+Nl6gZYsuBg2osOxBY1ojajif5kvPrQI9Q2/qC2urqJnUJSbNPk4S/aH7o7v3cvS9JwC+j4D2Z2U3AacDJ7v6PBrz8CqBvwfwBTa1XWh+FuxRDF5KQ/BDAzL5JcvZZ7XXgC2Z2YGiSuK7G/qtI2ourPQYMMLOzw5eu3wAGAhWNqK0rUBlqKzOzH5C0nRceu5+Z7exnYzLwPTMbEi5nPCT8MtuBmXUws91Ifs7KzGw3M2sf1vU0s8+F1xhI8j3Cj9y9Kqy/DjgbONHdG9qm/3vgOjPrYWZ9SH7JShujcJdm5+7vAJNIvtRcBRwO/E/B+qeA3wFvAnPZMaRvA84MV3vcHsJtHHA1yZeX1wDj3H11I8p7gqS9+12Spp1P2L7Z4g/heY2ZvVrLe/sD8BOSL2I3AP9F8sVsbe4maRL6F+CGMH1eWNeL5JfWJpLvCO5197sK9r2Z5K+TBeHKnY1mdn093+OPSJp33geeBh4GttRzX8kI02AdItlmZt8GznL3E9KuRVqOztxFMsbM9jOzkWbWzswOJfmL55G065KWVZZ2ASLS7DoC/w/oD3wE/Bb4v2kWJC1PzTIiIhmkZhkRkQwqiWYZM/uQHW9SERGRXTvI3XvXtqIkwh34u7sPTbsIEZHWxMzm7GydmmVERDJI4S4ikkEKdxGRDCqVNncRaaK5c+fuXVZWNpmkHx+duGVHFfB2ZWXlRUOGDPmgvjsp3EUyoqysbPK+++4b9e7de127du10A0tGVFVV2Ycffjhw5cqVk0kGh6kX/XYXyY7Devfu/Q8Fe7a0a9fOe/fuvZ7te1ate7/6bGRmiywZxf316ktvQpelT1kyQvtTZtYjLDczu93MFpjZmzsbX1JEml07BXs2hX/XBp2MN2TjL7n7kQXXo18LPOPu5cAzYR6SwQXKw2MC8OuGFCQiIk3XlGaZM4CpYXoq8JWC5feH8SVfArrXZ2BkEWn92rdvPySXyw0sLy8fdNpppx28YcOGnWbMtGnTul1//fU1R+EqquXLl5cdccQRuSiKBj7++ON7nHDCCYesXr26/erVq9tPnDix1js9AYYNGzbghBNOOGTLli22s21qk8/nOx5xxBG5Aw888LCxY8ce/Mknn+yw/yOPPLLnoEGDogEDBgwcNGhQNH369K6NeW811TfcHXjSzOaa2YSwbB93XxGmVwL7hOk+bD/4wVK2H+sSADObYGZzQjNPY8fWFJES0qlTp6p8Pv/O/Pnz53Xo0MEnTZq008A855xz1t98880rd7a+GCoqKrpGUbQ5juN3Tj311I3PP//8gl69em1bs2ZN+3vuuWfvne330ksvvduxY0f//e9/360hx7vqqqv6Xn755asWL178drdu3Spvu+22HbJu77333jpjxowF77777jtTpkx5/6KLLurfmPdWU33D/Th3P5qkyeUyM/tC4cowcG+D2vrc/S53HxqaeRozoo6INNGmF2d1+WDSL/bd9OKsLs392scdd9zGBQsWdFq1alX7E0888XMDBgwYOHjw4NzLL7/cGeD222/f6/zzzz8Q4N577+1RXl4+6NBDDx04dOjQQwHmzJmz2+GHHx7lcrmBAwYMGPjWW291Arjxxhv3KS8vH1ReXj7oRz/60d4Af/vb3zoefPDBg84666yDDjnkkEEjR44s37hx43ZnyS+++GLnH/7wh32ffPLJ7rlcbuDGjRutT58+h69YsaLs6quv7rtkyZJOuVxu4MUXX9yXWpxyyinrH3rooZ2NurWDqqoqZs2a1fWb3/zmOoALLrhgzZ///OfuNbcbOXLk5n79+m0FGDJkyCdbtmxpt3nz5gb9hVCbel0K6e7LwvMHZvYIcCywysz2c/cVodml+vrLZWw/IG9fGjGQsYg03vLrbzhgy/z5u+9qm6pNm9p9+v77u+POmsmT6di//8ftunSp2tn2ncrLP97/5p8s2dn6Qlu3buWJJ57Y8+STT/7HNddcs//gwYM/fvrpp9+bPn161/Hjx/fP5/PvFG4/ceLE/Z588sl3+/fvv3X16tXtAe64447el1566apvf/vbaz/55BOrrKzkhRde2P2hhx7aa+7cubG7M2TIkGj06NEbevXqtW3x4sW7PfjggwtHjBjx9zFjxhx8//3397j00kvXVh9jxIgRm6+77rrlc+bM6XL//fcvLjz+pEmTlo4bN65zzboKPfzwwz3nzZu3+9q1a9v17Nmzat26de2GDx+eq23badOmLdx///0ru3btuq1Dhw4A9OvX79NVq1Z13NXnNnXq1B6DBg36uHPnzk3+YrzOM3cz62JmXaungZNJRrKfDowPm40HHg3T04Hzw1Uzw4D1Bc03IlIiqjZtKqN6PAf3ZL6JtmzZ0i6Xyw08/PDDB/bt2/fTK664YvXs2bO7XnjhhWsATj/99A0fffRR2dq1a7fLnqFDh24855xz+k2aNKlXZWUlAMOHD980adKk/W644YZ958+f33GPPfbwmTNn7jFmzJiP9txzz6pu3bpVjR07dt1zzz3XFaBPnz5bRowYsRngqKOO+njRokWdmvp+qs2ePbvzhg0b2p9++ulrH3jggR4APXr0qMrn8+/U9hgyZMgnDT3GnDlzdvvBD37Q5+67726WHnLr84+5D/CImVVv/5C7P25mrwC/N7MLSbrr/XrY/jFgDLAA+Bj4ZnMUKiL1V58z7E0vzuqy5JJLBnhlZTsrK6va/6c/XdhlxPBNTTludZt7Q/d76KGHFj/77LNdpk+f3m3IkCED586d+84ll1yy9vjjj9/0yCOPdBs3blz5HXfcscvQ69ix4z/Pdtu3b++bN29utvt4br311r0vu+yyVYcccsiWG2+8sc8VV1yxpq4z96OOOuqTDRs2tN+6dSsdOnRg0aJFHffZZ59Pa9v+vffe63DmmWcecs8997w/aNCgZhnMvM5wd/eFwOBalq8BRtey3IHLmqM4ESmeLiOGbzrgzjvf3TRrVtcuw4dvaGqw78znP//5Dffdd99eP//5z1dUVFR07dGjR2XPnj23a/6ZN29ep1GjRm0aNWrUpqeffrrbwoULO65du3ZbFEVbBg0a9MHixYs7vv76651HjRq18YILLuj34x//eKW789hjj/WYMmXKwqbW2K1bt22bNm2q9ZfB8uXLy1566aWuDzzwwOJOnTr5t771rY6LFi3q0K9fv611/SIbNmzYhvvuu6/HhAkT1t177717jRs37qOa26xevbr9mDFjym+66aalJ598crP9G+gOVZE2rMuI4Zv2vvqqlcUKdoBbbrll+Wuvvbb7gAEDBt5www19pkyZ8n7Nbb773e/2HTBgwMDy8vJBxxxzzMZhw4ZtfvDBB3sOGDBgUC6XGxjHceeLL754zXHHHffx2Wefveboo4+OhgwZEp133nkfjhw5cnNTa9x33323DRkyZGN5efmgml+o/upXv+p97rnnru7UqZMDfPWrX107ZcqUen2xOmnSpKV33HHHvgceeOBh69atK7viiitWQ3IZ6JVXXrk/wM9+9rO9Fy9e3OmnP/3p/rlcbmAulxu4bNmyJjeRlcQYqmY2R4N1iDTNG2+8sWjw4MG68iyj3njjjV6DBw/uV7hsV9mpM3cRkQxSuIuIZJDCXSQ7qqqqqpp884uUnvDvutN7EGqjcBfJjrc//PDDbgr4bAn9uXcjub+o3jRYh0hGVFZWXrRy5crJK1eu1EhM2fLPkZgaspOulhERaaV0tYyISBujcBcRySCFu4hIBincRUQySOEuIpJBCncRkQxSuIuIZJDCXUQkgxTuIiIZpHAXEckghbuISAYp3EVEMkjhLiKSQQp3EZEMUriLiGSQwl1EJIMU7iIiGaRwFxHJIIW7iEgGKdxFRDJI4S4ikkEKdxGRDFK4i4hkkMJdRCSD6h3uZtbezF4zs4ow39/MXjazBWb2OzPrGJZ3CvMLwvp+RapdRER2oiFn7lcAccH8LcAv3f0QYB1wYVh+IbAuLP9l2E5ERFpQvcLdzPoCY4HJYd6AUcDDYZOpwFfC9BlhnrB+dNheRERaSH3P3H8FXANUhfm9gI/cvTLMLwX6hOk+wBKAsH592H47ZjbBzOaY2RygV6OqFxGRWtUZ7mY2DvjA3ec254Hd/S53H+ruQ4HVzfnaIiJtXVk9thkJnG5mY4DdgD2B24DuZlYWzs77AsvC9suAA4ClZlYGdAPWNHvlIiKyU3Weubv7de7e1937AWcBz7r7OcBzwJlhs/HAo2F6epgnrH/W3b1ZqxYRkV1qynXu3weuMrMFJG3q94Tl9wB7heVXAdc2rUQREWkoK4WTajObE9reRUSknnaVnbpDVUQkgxTuIiIZpHAXEckghbuISAYp3EVEMkjhLiKSQQp3EZEMUriLiGSQwl1EJIMU7iIiGaRwFxHJIIW7iEgGKdxFRDKoPoN1ZFqci4YDXwb+HOXjWWnXIyLSHNr0mXsI9ueB64BnwryISKvXpsMd+CKffQadwryISKvX1sN9JvBpmPYwLyLS6rXpcA9t7KOBV4FNwOx0KxIRaR5tOtzhnwE/EdgTGJZyOSIizaLNh3vwJFAJjEu7EBGR5qBwB6J8vB54AYW7iGSEwv0zFcBhcS46KO1CRESaSuH+mYrwPDbVKkREmoHCPYjy8bvAAtQ0IyIZoHDfXgUwKs5FXdIuRESkKRTu26sguVN1VNqFiIg0hcJ9ey8AG1DTjIi0cgr3AlE+/pTkmvexcS6ytOsREWkshfuOKoA+wOC0CxERaSyF+47+QtKJmJpmRKTVUrjXEOXjVcArKNxFpBVTuNeuAjg2zkV7p12IiEhjKNxrVwEYcFrahYiINEad4W5mu5nZbDN7w8zmmdlNYXl/M3vZzBaY2e/MrGNY3inMLwjr+xX5PRTD68By1DQjIq1Ufc7ctwCj3H0wcCRwqpkNA24BfunuhwDrgAvD9hcC68LyX4btWpUoHzswAzglzkUd065HRKSh6gx3T2wMsx3Cw0nu4nw4LJ8KfCVMnxHmCetHm1lrvGa8AugKHJ92ISIiDVWvNncza29mrwMfAE8B7wEfuXtl2GQpybXhhOclAGH9emCvWl5zgpnNMbM5QK+mvIkieYbkrxb1EikirU69wt3dt7n7kUBf4Fgg19QDu/td7j7U3YcCq5v6es0tysebgGdRu7uItEINulrG3T8CngOGA93NrCys6gssC9PLgAMAwvpuwJrmKDYFM4DyOBcNSLsQEZGGqM/VMr3NrHuY7gycBMQkIX9m2Gw88GiYnh7mCeufdXdvxppb0ozwrKYZEWlV6nPmvh/wnJm9SXLn5lPuXgF8H7jKzBaQtKnfE7a/B9grLL8KuLb5y24ZUT5eBLyNmmZEpJWxUjipNrM5oe295MS5aCJwNdArDKQtIlISdpWdukO1bhVAGXBy2oWIiNSXwr1uLwFrUbu7iLQiCvc6RPm4kqQb4DFxLmqfdj0iIvWhcK+fGUBv4Ji0CxERqQ+Fe/08AWxDV82ISCuhcK+HKB+vBf4HtbuLSCuhcK+/CuDIOBf1TbsQEZG6KNzrT3erikiroXCvvxh4H4W7iLQCCvd6CgN4VAAnxrmoc9r1iIjsisK9YSqAzsCX0i5ERGRXFO4N8zywCV0SKSIlTuHeAFE+3kIyEtXYOBe1xqEDRaSNULg3XAVwIHBY2oWIiOyMwr3hHgvPapoRkZKlcG+gKB+vAOaicBeREqZwb5wKYFici3qlXYiISG0U7o1TQfLZnZp2ISIitVG4N86rwCrUNCMiJUrh3ghRPq4i6WvmlDgXdUi7HhGRmhTujVcBdAdGpFyHiMgOFO6N9zTwKWqaEZESpHBvpCgfbyDpjkDhLiIlR+HeNBVALs5Fn0u7EBGRQgr3ptEAHiJSkhTuTRDl4/eAPGqaEZESo3Bvugrgi3Eu6pp2ISIi1RTuTVcBdABOTLsQEZFqCvemexH4CDXNiEgJUbg3UZSPtwJPkAzgoc9TREqCwqh5VAD7AEenXYiICCjcm8vjQBVqmhGRElFnuJvZAWb2nJm9Y2bzzOyKsLynmT1lZvPDc4+w3MzsdjNbYGZvmlnmz2ajfLwamIXCXURKRH3O3CuBq919IDAMuMzMBgLXAs+4eznwTJgHOA0oD48JwK+bverSNAMYEuei/dIuRESkznB39xXu/mqY3gDEQB/gDGBq2Gwq8JUwfQZwvydeArqbWVsIvIrwPCbVKkREaGCbu5n1A44CXgb2cfcVYdVKki8UIQn+JQW7LQ3Lar7WBDObY2ZzgCwMV/c2sBg1zYhICah3uJvZHsAfgSvd/R+F69zdAW/Igd39Lncf6u5DgdUN2bcURfnYSc7eT4pz0W5p1yMibVu9wt3MOpAE+zR3/1NYvKq6uSU8fxCWLwMOKNi9b1jWFswAugAnpF2IiLRt9blaxoB7gNjdf1GwajowPkyPBx4tWH5+uGpmGLC+oPkm654DNqNeIkUkZfU5cx8JnAeMMrPXw2MMMBE4yczmk/SrMjFs/xiwEFgA3A1c2vxll6YoH28mGaFpXJyLLO16RKTtKqtrA3f/b2BnQTW6lu0duKyJdbVmM4AvAxHwTsq1iEgbpTtUm58G8BCR1Cncm1mUj5cCr6NLIkUkRQr34qgARsa5qGfahYhI26RwL44ZQHvglLQLEZG2SeFeHK8AH6J2dxFJicK9CKJ8vI3kktDT4lxU5xVJIiLNTeFePBVAT5KeNEVEWpTCvXieIukuWVfNiEiLU7gXSZSP1wN/Re3uIpIChXtxVQCHxbmoX9qFiEjbonAvLt2tKiKpULgXUZSP3wXmo3AXkRamcC++CmBUnIu6pF2IiLQdCvfiqwA6UUsPmiIixaJwL77/BjagSyJFpAUp3IssysefAk8AYzWAh4i0FIV7y6gA9geOTLkOEWkjFO4t4y+Ao6YZEWkhCvcWEOXjD4DZ6JJIEWkhCveWUwEcG+eifdIuRESyT+HecipIBho/Le1CRCT7FO4t5w1gGWp3F5EWoHBvIVE+dpK+Zk6Oc1HHtOsRkWxTuLesCqArcHzahYhItincW9YzwCeoaUZEikzh3oKifPwx8BwKdxEpMoV7y6sADolz0YC0CxGR7FK4t7zqATx09i4iRaNwb2FRPv478BYKdxEpIoV7OmYAx8e5qFvahYhINinc01EBlAEnp12IiGSTwj0dLwFrUdOMiBRJneFuZvea2Qdm9nbBsp5m9pSZzQ/PPcJyM7PbzWyBmb1pZkcXs/jWKsrH24DHgDFxLmqfdj0ikj31OXOfApxaY9m1wDPuXk5yY861YflpQHl4TAB+3TxlZtIMoBdwTNqFiEj21Bnu7v5XkiaEQmcAU8P0VOArBcvv98RLQHcz26+Zas2aJ4BtqGlGRIqgsW3u+7j7ijC9Eqjuo7wPsKRgu6Vh2Q7MbIKZzTGzOSRnsG1KlI/XkQyerXAXkWbX5C9U3d1JhpBr6H53uftQdx8KrG5qHa3UDGBwnIsOSLsQEcmWxob7qurmlvD8QVi+DCgMqr5hmdSuIjyPSbUKEcmcxob7dGB8mB4PPFqw/Pxw1cwwYH1B843sKA8sRE0zItLM6nMp5G+AWcChZrbUzC4EJgInmdl84MQwD8nlfQuBBcDdwKVFqTojwgAeFcDoOBd1TrseEcmOsro2cPd/2cmq0bVs68BlTS2qjZkB/BvwJZJfjiIiTaY7VNP3PLAJNc2ISDNSuKcsysdbgCeBcXEusrTrEZFsULiXhgqSq4wOT7sQEckGhXtpqG5r/1mci4anWomIZILCvTT0B6qAU4BnFPAi0lQK99LwxYLpziR99IiINJrCvTTMBLaQdCQGMCHORcenV46ItHYK9xIQ5eNZJPcN/AdwFvAh8Gyciy5OtTARabUsue8o5SLM5oQOxASIc1F3YBpJnzN3AldE+fjTVIsSkZKzq+zUmXsJivLxR8DpJN06XAI8FeeivVMtSkRaFYV7iYry8bYoH18HnA0cC7wS56KjUi5LRFoJhXuJi/Lxb4DjSP6t/ifORd9IuSQRaQUU7q1AlI/nAkOBV4HfxrnoJ3Eu0r+diOyUAqKViPLxKmAUSVfK1wOPxrmoW7pViUipUri3IuGKmYtJ+sk/FXgpzkXl6VYlIqVI4d7KRPnYo3z8a5JBUnoBs+NcdErKZYlIiVG4t1JRPn4eOAb4O/BYnIu+py6DRaSawr0Vi/LxImAk8Efg58D9Gq5PREDh3upF+XgT8A3g34Fzgb/GuahvulWJSNoU7hkQ2uF/QtKb5KHAnDgXjUi5LBFJkcI9Q6J8PB0YBmwAZsa56MKUSxKRlCjcMybKx++QdFfwHDA5zkW3x7moQ8pliUgLU7hnUJSP1wFjgUnAd4An4lzUK92qRKQlKdwzKsrHlVE+/h5wPjCCpOMxDcAt0kYo3DMuyscPAF8AOgKz4lz0tZRLEpEWoHBvA6J8PJuk47G3gIfjXHSTOh4TyTb9gLcRUT5eQTIQ933AD4A/xrmoa6pFiUjRKNzbkCgfbwEuBK4AvkzSTPO5dKsSkWJQuLcx4Yan24FTgP1Ivmg9MeWyRKSZKdzbqCgfP0PS8dgykkslr1THYyLZoXBvw6J8vBAYDjwK/BK4N85Fu6VblYg0B3P3tGvAzOa4+9C062irwpUz/wHcCMwjubv1MeCJKB9XpViaiOzCrrJT4S7/FOei7wMTCxZtAz4EVhU8PqgxX/34MMrHlS1asEgbt6vsLCviQU8FbgPaA5PdfWIdu0j62pEEenugCvgr8B6wT3gcGp5ra7rxOBetofbgr/n4IAwZKCJFUpRwN7P2wP8BTgKWAq+Y2XR3f6cYx5NmMxP4FOgAbAVuiPLxrMINwpeuXfks8Gs+9g7Px4bnPWo7UJyL1rHrXwC9gcHAbOA1wEl+4VQVazrKxzv8GRvnouEk9wfMrPlZtJRSqEF1lG4dO1OUZhkzGw7c6O6nhPnrANz9pzvZXs0yJaK5/8PGuagLnwV+XY9uTT1eMygMfSfptqHalrB8Vxr6A1XX9u2AwtG1Pq5HDcXQDthddexQhwOfAKPTCPg0mmX6AEsK5pcCn69R1ARgQpg91MzmFKmW+ugFrE7x+KWmF/A1rMWujNwQHgDsU1a2717ty/oY4Liv2bZt+arKypUtVcwu6ljd0nXUUsO6FD+L3VXHDnWY47ut2bbtD6vMWrwO4KCdrSham3td3P0u4K60jl9IfzlsT5/H9vR5fEafxfZK+fMo1nXuy4ADCub7hmUiItICihXurwDlZtbfzDoCZwHTi3QsERGpoSjNMu5eaWaXA0+QXFZ3r7vPK8axmklJNA+VEH0e29Pn8Rl9Ftsr2c+jJG5iEhGR5qW+ZUREMkjhLiKSQW0+3M3sVDP7m5ktMLNr064nTWZ2gJk9Z2bvmNk8M7si7ZrSZmbtzew1M6tIu5a0mVl3M3vYzPJmFoebFdskM/tu+Bl528x+Y2Yl15tqmw73gm4STgMGAv9iZgPTrSpVlcDV7j4QGAZc1sY/D0hGrYrTLqJE3AY87u45kq4h2uTnYmZ9gH8Dhrr7YSQXjZyVblU7atPhTtL/yQJ3X+junwK/Bc5IuabUuPsKd381TG8g+eHtk25V6TGzvsBYYHLataTNzLoBXwDuAXD3T939o1SLSlcZ0NnMyki6IViecj07aOvhXls3CW02zAqZWT/gKODllEtJ06+Aa0in75JS05+k++f7QjPVZDPrknZRaXD3ZcCtwGJgBbDe3Z9Mt6odtfVwl1qY2R7AH4Er3f0fadeTBjMbB3zg7nPTrqVElAFHA79296OATUCb/I7KzHqQ/IXfH9gf6GJm56Zb1Y7aerirm4QazKwDSbBPc/c/pV1PikYCp5vZIpLmulFm9mC6JaVqKbDU3av/knuYJOzbohOB9939Q3ffCvwJGJFyTTto6+GubhIKmJmRtKnG7v6LtOtJk7tf5+593b0fyf+LZ9295M7OWoq7rwSWmNmhYdFooK2Oz7AYGGZmu4efmdGU4JfLqfUKWQpaYTcJxTYSOA94y8xeD8uud/fH0itJSsh3gGnhRGgh8M2U60mFu79sZg8Dr5JcYfYaJdgNgbofEBHJoLbeLCMikkkKdxGRDFK4i4hkkMJdRCSDFO4iIhmkcJdmY2Yb67HN5OrOyMzs+hrrXmyOYzQnM5tpZkUfANnM/i30tDitia8zxczODNMtUruUJoW7tCh3v8jdq29+ub7GupK7y68pQqdS9XUpcJK7n1OseqRtUbhLszOzL4azxuq+v6eFO/n+eTZpZhNJetV7vfpstfqs3Mz2MLNnzOxVM3vLzHbZU6eZ9QtnvXeHPrafNLPOhccL071CdwKY2b+a2X+Z2VNmtsjMLjezq0KnWC+ZWc+CQ5wX6nzbzI4N+3cxs3vNbHbY54yC151uZs8Cz9RS61Xhdd42syvDsjuBg4G/mNl3a2zf3sxuDdu/aWbfCcuHmNnzZjbXzJ4ws/128fm0D2f0b4fP87s721YyxN310KNZHsDG8PxFYD1JXz3tgFnAcWHdTJJ+sP+5fS37lwF7hulewAI+u+FuYy3H7Udyp+CRYf73wLm1HK8XsChM/2t43a5A71DvJWHdL0k6Tave/+4w/QXg7TB9c8ExugPvAl3C6y4FetZS5xDgrbDdHsA84KiwbhHQq5Z9vk3Sj0tZmO8JdABeBHqHZd8gubsaYApwZuF7D8d9quA1u6f9f0WP4j/adPcDUlSz3X0pQOjKoB/w3/Xc14CbzewLJN3t9gH2AVbuYp/33f31MD03HK8uz3nSb/0GM1sP/Dksfws4omC73wC4+1/NbE8z6w6cTNKx2PfCNrsBB4bpp9x9bS3HOw54xN03AZjZn4DjSW5f35kTgTvdvTLUsNbMDgMOA54KfxC1J+l6dmcWAgeb2R3ADKDkuqeV5qdwl2LZUjC9jYb9XzuH5Gx6iLtvDU0pdQ1jVvN4ncN0JZ81P9Z8jcJ9qgrmq2rUW7OPDif5BfQ1d/9b4Qoz+zxJd7jFZMA8d6/XMHfuvs7MBgOnAJcAXwcuKGJ9UgLU5i5p2hq6GK6pG0lf6lvN7EvAQU04xiKSZgmAMxv5Gt8AMLPjSAZmWE/S2dx3Cr5LOKoer/MC8JXQm2AX4Kth2a48BVxc/eVs+C7gb0BvC2OYmlkHMxu0sxcws15AO3f/I/DvtN2uetsUhbuk6S7gzVou/5sGDDWzt4DzgXwTjnEr8G0ze42kzb0xPgn73wlcGJb9mKTt+00zmxfmd8mTIQynALNJRria7O67apKBZIi/xeE4bwBnezIk5JnALWHZ6+y6P/E+wMzQPPYgcF1dtUrrp14hRUQySGfuIiIZpHAXEckghbuISAYp3EVEMkjhLiKSQQp3EZEMUriLiGTQ/wdqi/nSFqNR0gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEWCAYAAACdaNcBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAnzUlEQVR4nO3deXxU9b3/8dcnO8mwJrhA0KBYBaMmgERlyahtr9Jet5+idbdY721r69Jbpe3vurX16m2v1V7botaFtlRcqEvrVn8iLrWyCSKoLagsQVSIbCEBsnx+f8xBhxDIJJnkTCbv5+Mxj5zle875zEDec/KdM99j7o6IiKSXjLALEBGR5FO4i4ikIYW7iEgaUriLiKQhhbuISBpSuIuIpCGFu0grzOwZM7so7DpE2kLhLinHzGab2aUhHfsGM/tD/DJ3P9ndp7VjXz82s7fMrMHMbmi2zszsR2a2ysw2m9kMM+sTt/7nZrbMzLaY2btmdmG7n5T0SAp3kc6zHLgGeKqFdRcCFwBjgUFAL+B/49ZvBf4V6AtcBNxhZsd1arWSVhTu0inMbIqZvReceb5tZqfHrdvl7NjMSszMzSzLzH4KjAfuNLMaM7szaHOcmc0zs03Bz+Pitp9tZj8xs9eCbf5sZoVmNj04K55nZiVx7e8ws9XBugVmNj5YfhLwQ+DsYD9vxu3/0rjtv2Fm78Q9t5EtvQbuPs3dnwG2tLD6X4F73X21u9cAtwbHzQ+2vd7d33X3JnefA7wCHNvs9booOPNfb2Y/iquvl5lNM7MNQZ3XmFlVYv9yki4U7tJZ3iMW0n2BG4E/mNn+rW3k7j8iFmSXu3vE3S83swHEzn5/CRQCtwFPmVlh3KbnEDsTHgwcDPwduB8YALwDXB/Xdh5QFqz7I/CImeW5+7PAzcBDwbGPal6fmZ0F3EDszLsPcApQncgL0gJrNp0LHNLCMXsBRwNLm60aBxwKnAhcZ2bDg+XXAyXAQcCXgPPbWZ90Ywp36RTu/oi7fxiceT4ELAPGtHN3XwGWufvv3b3B3R8E3iV29rvT/e7+nrtvAp4B3nP3/+fuDcAjQHlcbX9w9+pgX/9DLFQPTbCWS4H/dvd5HrPc3Ve24zk9C1wanIX3Ba4Nlue30HYq8CbwXLPlN7p7nbu/Gazf+WY0CbjZ3Te4exWxN0XpYRTu0inM7EIzW2RmG81sI1AKFLVzd4OA5gG6kthZ+k4fx03XtTAfiavtP4Luik1BbX3bUNsQYn+VdNR9wIPAbGJn5C8Gy3fpPjGznxF77Sb57qP8fRQ3Xcvnz3EQsDpuXfy09BAKd0k6MzsQuAe4HCh0937AEj7vhtjKrmeo+zXbRfMQ+xA4sNmyA4A17ahtPLEPOScB/YPaNsXV1towqauJdft0SPAXzfXuXuLuxcQCfg1xz8nMbgROBr7s7pvbsPu1QHHc/JCO1ivdj8JdOkMBsZBcB2BmlxA7+9xpETDBzA4IuiR+0Gz7j4n1F+/0NPAFMzs3+ND1bGAE8Jd21NYbaAhqyzKz64j1nccfu8TM9vS78VvgP8xsVHA547DgzWw3ZpZtZnnEfs+yzCzPzDKDdQPM7OBgHyOIfY5wk7s3Bet/AJwLfNHd29qn/zDwAzPrb2aDib3JSg+jcJekc/e3gf8h9qHmx8ARwN/i1j8PPAQsBhawe0jfAZwZXO3xyyDcvgp8j9iHl9cAX3X39e0o7zli/d3/JNa1s41duy0eCX5Wm9kbLTy3R4CfEvsgdgvwOLEPZltyD7Euoa8BPwqmLwjWFRF709pK7DOC+9z97rhtbyb218ny4MqdGjP7YYLP8SZi3TsfAP8PeBTYnuC2kiZMN+sQSW9m9k3gHHevDLsW6To6cxdJM2a2v5mNNbMMMzuU2F88j4Vdl3StrLALEJGkywHuAoYCG4EZwK/DLEi6nrplRETSkLplRETSUEp0yxQVFXlJSUnYZYiIdCsLFixY7+4DW1qXEuFeUlLC/Pnzwy5DRKRbMbM9Dn2hbhkRkTSkcBcRSUMKdxGRNJQSfe4i0nH19fVUVVWxbdu2sEuRJMvLy6O4uJjs7OyEt1G4i6SJqqoqevfuTUlJCWbW+gbSLbg71dXVVFVVMXTo0IS3U7eMSJrYtm0bhYWFCvY0Y2YUFha2+S+yhMLdzFZY7C7ui8xsfrBsgJk9b7E7tD9vZv2D5WZmvzSz5Wa2eE/3lxSR5FOwp6f2/Lu25cz9eHcvc/fRwfwU4AV3PwR4IZiH2M0FDgkelwG/aXNVXah24ULW33U3tQsXhl2KiEjSdKRb5lRgWjA9DTgtbvnvgvtLvg70S+TGyGGoXbiQVZd8nXV33MGqS76ugBfpoMzMTMrKyigtLeWss86itrZ2j22ffPJJbrnlli6sDtatW0dFRQXl5eW88sorTJw4kY0bN7Jx40Z+/es9j612wgknMHHiROrr69t0vA8++ICKigqGDRvG2WefzY4dO3Zr8/zzzzNq1CiOOOIIRo0axaxZs9r8vFqSaLg78FczW2BmlwXL9nX3tcH0R8C+wfRgdr35QRW73usSADO7zMzmm9n8devWtaP0jqudOw/fsQOamvD6emrnzgulDpF00atXLxYtWsSSJUvIyclh6tSpe2x7yimnMGXKlD2u7wwvvPACRxxxBAsXLmT8+PE8/fTT9OvXr9VwnzVrFrm5uTz11FNtOt61117LVVddxfLly+nfvz/33nvvbm2Kior485//zFtvvcW0adO44IILWthT2yUa7uPcfSSxLpdvm9mE+JXBjXvbNLyku9/t7qPdffTAgS0OjZCQnVcGtOfxxSuvoK6hgQZ36urr+eKVV7R7XxobR7qjzuyWHD9+PMuXL+fTTz/ltNNO48gjj+SYY45h8eLFADzwwANcfnnsDoCPPPIIpaWlHHXUUUyYEIuXpUuXMmbMGMrKyjjyyCNZtmwZALfddhulpaWUlpZy++23A7BixQqGDx/ON77xDQ4//HC+/OUvU1dXt0s9ixYt4pprruGJJ56grKyMuro6SkpKWL9+PVOmTOG9996jrKyM73//+y0+n5NPPpnp06cn/PzdnVmzZnHmmWcCcNFFF/H444/v1q68vJxBgwYBcPjhh1NXV8f27R2/cVZCl0K6+5rg5ydm9hgwBvjYzPZ397VBt8snQfM17HpD3mLacSPjRK1cuZKODFtcu3AhtXPnkT/maBaVl7d7P/ogS1LJRzffzPZ33t1rm8aaGra/+y64gxm5hx1GZiSyx/a5ww9jvx8mdqe/hoYGnnnmGU466SSuv/56ysvLefzxx5k1axYXXnghixYt2qX9TTfdxHPPPcfgwYPZuHEjAFOnTuWKK67gvPPOY8eOHTQ2NrJgwQLuv/9+5syZg7tTUVFBZWUl/fv3Z9myZTz44IPcc889TJo0iZkzZ3L++ed/doyysjJuuukm5s+fz5133rnL8W+55RaWLFmyW13xZsyYwYIFC9i8eTN9+vRhy5YtjB8/vsW2f/zjH9lnn33o168fWVmxmC0uLmbNmr1H4cyZMxk5ciS5ubl7bZeIVsPdzAqADHffEkx/mdg9Gp8ELgJuCX4+EWzyJHC5mc0AKoBNcd03KSe/vJz8DoS6SHfVtHlzLNgB3GnavHmv4Z6Iuro6ysrKgNiZ++TJk6moqGDmzJlArO+6urqazZs377Ld2LFjufjii5k0aRJnnHEGAMceeyw//elPqaqq4owzzuCQQw7h1Vdf5fTTT6egoACAM844g1deeYVTTjmFoUOHfnbsUaNGsWLFig49l3hvvfUWmzZt4txzz2XmzJlccskl9O7de69vBuvXt+0Wv0uXLuXaa6/lr3/9awerjUnkzH1f4LHgzDQL+KO7P2tm84CHzWwysRsNTwraPw1MBJYDtcAlSalURBKWyBn2zgsKvL4ey85m0M9/1uETnZ197m01depU5syZw1NPPcWoUaNYsGAB5557LhUVFTz11FNMnDiRu+66a6/7iD/bzczM3K1bpiNuv/12rrrqKoYOHcr111/PJZdc0uqZ+/Dhw9m4cSMNDQ1kZWVRVVXF4MG7ffwIxL6Advrpp/O73/2Ogw8+OCk1txru7v4+cFQLy6uBE1tY7sC3k1KdiHSa/PJyDrj/vs+6JTvrL9jx48czffp0/vM//5PZs2dTVFREnz59dmnz3nvvUVFRQUVFBc888wyrV69m06ZNHHTQQXz3u99l1apVLF68mAkTJnDxxRczZcoU3J3HHnuM3//+9x2usXfv3mzZsqXFdevWreOll15i6tSpZGdns3LlSj788EMGDRrU6hvZ8ccfz6OPPso555zDtGnTOPXUU3drs3HjRr7yla9wyy23MHbs2A4/l530DVWRHiy/vJyif7usU7smb7jhBhYsWMCRRx7JlClTmDZt2m5tvv/973PEEUdQWlrKcccdx1FHHcXDDz9MaWkpZWVlLFmyhAsvvJCRI0dy8cUXM2bMGCoqKrj00kspT0LthYWFjB07ltLS0t0+UL3rrru49NJLPxvX5Wtf+xozZsxIaL+33nort912G8OGDaO6uprJkycDsctAr7vuOgDuvPNOli9fzk033URZWRllZWV88skne9ttQlLiHqqjR4/29t6sw8w69IFqsqRKHdJzvfPOOwwfPjzsMqSTtPTva2YL4r5YuguduYuIpCGFu4hIGlK4i4ikIYW7iEgaUriLiKQhhbuISBpSuItI0mjI310lMuQvwH/9138xbNgwDj30UJ577rk2HWNPFO4ikjQa8ndXiQz5+/bbbzNjxgyWLl3Ks88+y7e+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\n", + "text/plain": [ + "<Figure size 375.2x278.84 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "_ = [Thread(target=align2D, args=(p,)).start() for p in paths]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2f595774-7b96-45bd-8aeb-8a567b691245", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[None, None, None, None, None, None]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "_" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "12dd3437-238e-4491-b326-8d4cef1c6692", + "metadata": {}, + "outputs": [], + "source": [ + "import h5py" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "e87791f8-eff5-442e-833e-52a3dc6415bb", + "metadata": {}, + "outputs": [], + "source": [ + "with h5py.File('F:/Andrey/20220118-MIC-cipro-resistant.h5','w') as f:\n", + " f.create_dataset('mask', data=big_labels, dtype='uint16')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "aa0a8c48-0821-41f7-be26-4b03f81c1a8f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "000ng\n", + "032ng\n", + "096ng\n", + "128ng\n", + "192ng\n", + "256ng\n" + ] + } + ], + "source": [ + "with h5py.File('F:/Andrey/20220118-MIC-cipro-resistant.h5','a') as f:\n", + " d1 = f.create_group('day2')\n", + " for p in glob('E:Andrey/20220118-MIC-cipro-resistant/day2/composites/*ng-BF-TRITC.aligned.tif'):\n", + " ng = re.compile('(\\d+ng)').findall(p)[0]\n", + " print(ng)\n", + " bf, fluo, _ = tf.imread(p)\n", + " c = d1.create_group(ng)\n", + " c.create_dataset('bf', data=bf, dtype=bf.dtype)\n", + " c.create_dataset('fluo', data=fluo, dtype=fluo.dtype)\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "2d366adb-d40b-43aa-aa8a-fc2dfa972d46", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "000ng\n", + "032ng\n", + "064ng\n", + "096ng\n", + "128ng\n", + "192ng\n", + "256ng\n" + ] + } + ], + "source": [ + "with h5py.File('F:/Andrey/20220118-MIC-cipro-resistant.h5','a') as f:\n", + " d1 = f.create_group('day1')\n", + " for p in glob('Y:Lena/Data/20220118-MIC-cipro-resistant/day1/composites/*ng.tif'):\n", + " ng = re.compile('(\\d+ng)').findall(p)[0]\n", + " print(ng)\n", + " bf, fluo, _ = tf.imread(p)\n", + " c = d1.create_group(ng)\n", + " c.create_dataset('bf', data=bf, dtype=bf.dtype)\n", + " c.create_dataset('fluo', data=fluo, dtype=fluo.dtype)\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "3304bd16-6228-4947-9776-6ae421d95452", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "000ng\n" + ] + }, + { + "ename": "ImportError", + "evalue": "Missing optional dependency 'tables'. Use pip or conda to install tables.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_13756/1856559773.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mng\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mre\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'(\\d+ng)'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfindall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mng\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mp\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_hdf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'F:/Andrey/20220118-MIC-cipro-resistant.h5'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34mf'day2/{ng}'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'a'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36mto_hdf\u001b[1;34m(self, path_or_buf, key, mode, complevel, complib, append, format, index, min_itemsize, nan_rep, dropna, data_columns, errors, encoding)\u001b[0m\n\u001b[0;32m 2701\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mio\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpytables\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2702\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2703\u001b[1;33m pytables.to_hdf(\n\u001b[0m\u001b[0;32m 2704\u001b[0m \u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2705\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\pandas\\io\\pytables.py\u001b[0m in \u001b[0;36mto_hdf\u001b[1;34m(path_or_buf, key, value, mode, complevel, complib, append, format, index, min_itemsize, nan_rep, dropna, data_columns, errors, encoding)\u001b[0m\n\u001b[0;32m 309\u001b[0m \u001b[0mpath_or_buf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstringify_path\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath_or_buf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 310\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 311\u001b[1;33m with HDFStore(\n\u001b[0m\u001b[0;32m 312\u001b[0m \u001b[0mpath_or_buf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcomplevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcomplevel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcomplib\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcomplib\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 313\u001b[0m ) as store:\n", + "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\pandas\\io\\pytables.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, path, mode, complevel, complib, fletcher32, **kwargs)\u001b[0m\n\u001b[0;32m 570\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"format is not a defined argument for HDFStore\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 571\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 572\u001b[1;33m \u001b[0mtables\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimport_optional_dependency\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"tables\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 573\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 574\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcomplib\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mcomplib\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mtables\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfilters\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mall_complibs\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\pandas\\compat\\_optional.py\u001b[0m in \u001b[0;36mimport_optional_dependency\u001b[1;34m(name, extra, errors, min_version)\u001b[0m\n\u001b[0;32m 116\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 117\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0merrors\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"raise\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 118\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 119\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 120\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mImportError\u001b[0m: Missing optional dependency 'tables'. Use pip or conda to install tables." + ] + } + ], + "source": [ + "for p in glob('E:Andrey/20220118-MIC-cipro-resistant/day2/composites/*ng-BF-TRITC-counts.csv'):\n", + " ng = re.compile('(\\d+ng)').findall(p)[0]\n", + " print(ng)\n", + " pd.read_csv(p).to_hdf('F:/Andrey/20220118-MIC-cipro-resistant.h5', f'day2/{ng}', 'a',)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "2a3a738b-5bd1-44e4-9d36-6dc382c72d62", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "<KeysViewHDF5 []>\n" + ] + } + ], + "source": [ + "with h5py.File('F:/Andrey/20220118-MIC-cipro-resistant.h5','r') as f:\n", + " print(f.keys())\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "da725546-91ac-49c8-9920-cd1b88ed56d0", + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "\"Unable to open object (object 'day1' doesn't exist)\"", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_13756/2212118693.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mh5py\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mFile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'F:/Andrey/20220118-MIC-cipro-resistant.h5'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'w'\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'day1'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'day2'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mh5py\\_objects.pyx\u001b[0m in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mh5py\\_objects.pyx\u001b[0m in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\h5py\\_hl\\group.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 262\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Invalid HDF5 object reference\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 263\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 264\u001b[1;33m \u001b[0moid\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh5o\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mid\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_e\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlapl\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_lapl\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 265\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 266\u001b[0m \u001b[0motype\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mh5i\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_type\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moid\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mh5py\\_objects.pyx\u001b[0m in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mh5py\\_objects.pyx\u001b[0m in \u001b[0;36mh5py._objects.with_phil.wrapper\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mh5py\\h5o.pyx\u001b[0m in \u001b[0;36mh5py.h5o.open\u001b[1;34m()\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: \"Unable to open object (object 'day1' doesn't exist)\"" + ] + } + ], + "source": [ + "with h5py.File('F:/Andrey/20220118-MIC-cipro-resistant.h5','w') as f:\n", + " f['day1'].name = 'day2'\n", + " " + ] + }, { "cell_type": "code", "execution_count": 6, @@ -508,7 +1022,13 @@ "cell_type": "code", "execution_count": 70, "id": "f5ac3c9d-3016-4950-9ec5-ea1410f8d634", - "metadata": {}, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "tags": [] + }, "outputs": [ { "name": "stdout", @@ -710,7 +1230,13 @@ "cell_type": "code", "execution_count": 75, "id": "5e859532-2f2b-459c-b77d-64d8c3c63ed2", - "metadata": {}, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "tags": [] + }, "outputs": [ { "name": "stdout", @@ -806,7 +1332,13 @@ "cell_type": "code", "execution_count": 79, "id": "fd6c3580-aeee-4d8b-b041-56c3e3b38bf5", - "metadata": {}, + "metadata": { + "collapsed": true, + "jupyter": { + "outputs_hidden": true + }, + "tags": [] + }, "outputs": [ { "name": "stdout", @@ -930,17 +1462,17 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 3, "id": "727cab2e-b2df-49be-a2e7-7ed958e7eee9", "metadata": {}, "outputs": [], "source": [ - "timelapse = imread_dask('E:Andrey/20220111-MIC-resistant/timelapse-30min/0ng-TRITC-19h.nd2')" + "timelapse = imread_dask('Y:Lena/Data//20220111-MIC-resistant/timelapse-30min/0ng-TRITC-19h.nd2')" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 4, "id": "9ada8adb-0e39-4d55-8b74-16c888080c58", "metadata": {}, "outputs": [], @@ -950,7 +1482,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 5, "id": "cf3e5d5d-5e3e-4840-ac39-ad30cb0f2517", "metadata": {}, "outputs": [ @@ -1196,7 +1728,7 @@ "dask.array<rechunk-merge, shape=(39, 1, 25, 7383, 22392), dtype=uint16, chunksize=(1, 1, 1, 1000, 1000), chunktype=numpy.ndarray>" ] }, - "execution_count": 11, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -1246,36 +1778,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "id": "0b9e35dd-7cdc-47fe-8e28-b3d502abaeb5", "metadata": { - "collapsed": true, - "jupyter": { - "outputs_hidden": true - }, "tags": [] }, - "outputs": [ - { - "ename": "MemoryError", - "evalue": "Unable to allocate 48.0 GiB for an array with shape (39, 1, 7383, 22392) and data type float64", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mMemoryError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_11096/827520790.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmean_proj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtimelapse\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\aicsimageio\\utils\\dask_proxy.py\u001b[0m in \u001b[0;36mcompute\u001b[1;34m(self, **kwargs)\u001b[0m\n\u001b[0;32m 63\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcompute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mAny\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 64\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_file_ctx\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_file_ctx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclosed\u001b[0m \u001b[1;32melse\u001b[0m \u001b[0mnullcontext\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# type: ignore\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 65\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__wrapped__\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 66\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 67\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__array__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mstr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mAny\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\dask\\base.py\u001b[0m in \u001b[0;36mcompute\u001b[1;34m(self, **kwargs)\u001b[0m\n\u001b[0;32m 286\u001b[0m \u001b[0mdask\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbase\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcompute\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 287\u001b[0m \"\"\"\n\u001b[1;32m--> 288\u001b[1;33m \u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcompute\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtraverse\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 289\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 290\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\dask\\base.py\u001b[0m in \u001b[0;36mcompute\u001b[1;34m(traverse, optimize_graph, scheduler, get, *args, **kwargs)\u001b[0m\n\u001b[0;32m 570\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 571\u001b[0m \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mschedule\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdsk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkeys\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 572\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mrepack\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0ma\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpostcomputes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 573\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 574\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\dask\\base.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 570\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 571\u001b[0m \u001b[0mresults\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mschedule\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdsk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkeys\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 572\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mrepack\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0ma\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpostcomputes\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 573\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 574\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\dask\\array\\core.py\u001b[0m in \u001b[0;36mfinalize\u001b[1;34m(results)\u001b[0m\n\u001b[0;32m 1162\u001b[0m \u001b[1;32mwhile\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresults2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtuple\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1163\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresults2\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1164\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mconcatenate3\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresults\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1165\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1166\u001b[0m \u001b[0mresults2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mresults2\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\miniconda3\\envs\\nd2\\lib\\site-packages\\dask\\array\\core.py\u001b[0m in \u001b[0;36mconcatenate3\u001b[1;34m(arrays)\u001b[0m\n\u001b[0;32m 5001\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5002\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 5003\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mempty\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdeepfirst\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marrays\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5004\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5005\u001b[0m for (idx, arr) in zip(\n", - "\u001b[1;31mMemoryError\u001b[0m: Unable to allocate 48.0 GiB for an array with shape (39, 1, 7383, 22392) and data type float64" - ] - } - ], + "outputs": [], "source": [ - "mean_proj = timelapse.mean(axis=2).compute()" + "mean_proj = timelapse.mean(axis=2, dtype='float32').compute()" ] }, { @@ -1290,12 +1800,12 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 8, "id": "6837db08-bb45-47ee-9864-7f3459f07752", "metadata": {}, "outputs": [], "source": [ - "tf.imwrite('E:Andrey/20220111-MIC-resistant/timelapse-30min/0ng-TRITC-19h_meanIP.tif', mean_proj)" + "tf.imwrite('Y:Lena/Data//20220111-MIC-resistant/timelapse-30min/0ng-TRITC-19h_meanIP.tif', mean_proj)" ] }, { @@ -1339,27 +1849,6 @@ "v = napari.Viewer()" ] }, - { - "cell_type": "code", - "execution_count": 8, - "id": "c04d25a6-7eaf-4d68-bb33-ec65001d3470", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<Image layer 'fluo' at 0x1a3d83ff4c0>" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "v.add_image(fluo, contrast_limits=(400,600))" - ] - }, { "cell_type": "code", "execution_count": 3, @@ -1414,7 +1903,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "{'tvec': array([-131.95049998, 367.1073057 ]), 'success': 0.0007202691664457523, 'angle': -0.0005945250071590635, 'scale': 1.047794112867297, 'Dscale': 8.279302929971457e-05, 'Dangle': 0.0016747301823595087, 'Dt': 0.25, 'timg': None}\n", + "{'tvec': array([-15.72473317, 20.36454919]), 'success': 0.03702985214889686, 'angle': -2.7811090559223715, 'scale': 0.9929738758061613, 'Dscale': 0.00047443457698964815, 'Dangle': 0.013400833829660513, 'Dt': 0.25, 'timg': None}\n", "transform (7383, 22392)\n", "transform (7383, 22392)\n", "transform (7383, 22392)\n", @@ -1465,46 +1954,49 @@ { "cell_type": "code", "execution_count": 12, - "id": "804294e8-f8ea-4075-8b6f-2d48bd151b6a", + "id": "6d356482-babe-4d4d-8e4f-51649c5cd698", + "metadata": {}, + "outputs": [], + "source": [ + "fluo = np.array(aligned_maxIP[1]).reshape((39, 1, 1, 6544, 20896))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "eb75199b-6c80-431b-a99b-5e75b3ea37fc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(39, 6544, 20896)" + "(39, 1, 1, 6544, 20896)" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "np.array(aligned_maxIP[1]).shape" + "fluo.shape" ] }, { "cell_type": "code", - "execution_count": 16, - "id": "78f90d3a-93d7-4aaf-974c-01c2a0425895", + "execution_count": 14, + "id": "c04d25a6-7eaf-4d68-bb33-ec65001d3470", "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "Failed to parse XML for the provided file.\n", - "not well-formed (invalid token): line 1, column 0\n", - "Failed to parse XML for the provided file.\n", - "not well-formed (invalid token): line 1, column 0\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "AICSImageIO: Reader will load image in-memory: False\n" - ] + "data": { + "text/plain": [ + "<Image layer 'fluo' at 0x22856006190>" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" }, { "name": "stderr", @@ -1522,15 +2014,55 @@ "text": [ "AICSImageIO: Reader will load image in-memory: False\n" ] - }, + } + ], + "source": [ + "v.add_image(fluo, contrast_limits=(400,600))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27e68d22-54d2-419a-be7c-20ad0dd67253", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "804294e8-f8ea-4075-8b6f-2d48bd151b6a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(39, 6544, 20896)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array(aligned_maxIP[1]).shape" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "78f90d3a-93d7-4aaf-974c-01c2a0425895", + "metadata": {}, + "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Failed to parse XML for the provided file.\n", - "not well-formed (invalid token): line 1, column 0\n", + "not well-formed (invalid token): line 1, column 6\n", "Failed to parse XML for the provided file.\n", - "not well-formed (invalid token): line 1, column 0\n" + "not well-formed (invalid token): line 1, column 6\n" ] }, { @@ -1542,7 +2074,7 @@ } ], "source": [ - "tf.imwrite('E:Andrey/20220111-MIC-resistant/timelapse-30min/0ng-TRITC-19h_maxIP.aligned.tif', np.array(aligned_maxIP[1]).reshape((39, 1, 1, 6544, 20896)))" + "tf.imwrite('Y:Lena/Data/20220111-MIC-resistant//timelapse-30min/0ng-TRITC-19h_maxIP.aligned.tif', fluo)" ] }, {