diff --git a/Multiwell_MIC_22-June-2021_0-10ng_5x-napari.ipynb b/Multiwell_MIC_22-June-2021_0-10ng_5x-napari.ipynb index 4ebb6eaa627362945f10a3e136e26166b088b99c..e5e7fe331fad04e17f3f7ef490e2730c22a219b7 100644 --- a/Multiwell_MIC_22-June-2021_0-10ng_5x-napari.ipynb +++ b/Multiwell_MIC_22-June-2021_0-10ng_5x-napari.ipynb @@ -2,23 +2,11 @@ "cells": [ { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/_qt/__init__.py:54: UserWarning: \n", - "\n", - "napari was tested with QT library `>=5.12.3`.\n", - "The version installed is 5.9.7. Please report any issues with\n", - "this specific QT version at https://github.com/Napari/napari/issues.\n", - " warn(message=warn_message)\n" - ] - } - ], + "outputs": [], "source": [ + "import aicsimageio\n", "from droplet_growth import register, mic, poisson, fit, count\n", "\n", "from droplet_growth import multiwell as mw\n", @@ -49,16 +37,17 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ + "# !export _JAVA_OPTIONS=\"Xmx4g\"\n", "viewer = Viewer()" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -69,13 +58,20 @@ "\n", "template16, mask16 = tf.imread(template16_path)\n", "\n", + "def load_stack(path):\n", + " if '.tif' in path:\n", + " return tf.imread(path), path\n", + " elif '.nd2' in path:\n", + " return aicsimageio.imread(path)[0,:,0], path\n", + " raise ValueError('Unsupported format! .tif or .nd2 was expected')\n", + "\n", "def align_stack(\n", " path, \n", " template16, \n", " mask2, \n", " plot=False, \n", " binnings=(1,16,2), \n", - " suffix='.aligned.tif', \n", + " suffix='aligned.tif', \n", " progress: widgets.ProgressBar = None\n", "):\n", " '''\n", @@ -89,7 +85,7 @@ " if progress is not None:\n", " progress.increment()\n", " \n", - " stack = tf.imread(path)\n", + " stack, path = load_stack(path)\n", " print(path, stack.shape)\n", "\n", " bf, tritc = stack[:2]\n", @@ -137,7 +133,7 @@ " \n", " aligned_stack = np.stack((aligned_bf, aligned_tritc, mask2)).astype('uint16')\n", "\n", - " tf.imwrite((p:=path.replace('.tif', suffix)), aligned_stack, imagej=True, metadata=register.META_ALIGNED)\n", + " tf.imwrite((p:=path.replace(path.split('.')[-1], suffix)), aligned_stack, imagej=True, metadata=register.META_ALIGNED)\n", " print(f'Saved aligned stack {p}')\n", " \n", " if progress is not None:\n", @@ -203,35 +199,29 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [], "source": [ - "DEFAULT_PATH = r'/home/aaristov/Anchor/Lena/Data/20210705-MIC-0h/'\n", + "global DEFAULT_PATH\n", + "DEFAULT_PATH = r'/home/aaristov/Anchor/Lena/Data/20211220-MIC/'\n", " " ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "counting error\n" - ] - }, { "name": "stderr", "output_type": "stream", "text": [ - "<ipython-input-9-881807eea35c>:55: FutureWarning: \n", + "<ipython-input-5-b9ca827008da>:68: FutureWarning: \n", "\n", "magicgui 0.4.0 will change the way that callbacks are called.\n", "Instead of a single `Event` instance, with an `event.value` attribute,\n", @@ -246,7 +236,22 @@ "*other* than `Event`, e.g. `def callback(x: int): ...`\n", "For details, see: https://github.com/napari/magicgui/issues/255\n", " def align_wrapper(*args):\n", - "<ipython-input-9-881807eea35c>:81: FutureWarning: \n", + "<ipython-input-5-b9ca827008da>:89: FutureWarning: \n", + "\n", + "magicgui 0.4.0 will change the way that callbacks are called.\n", + "Instead of a single `Event` instance, with an `event.value` attribute,\n", + "callbacks will receive the value(s) directly:\n", + "\n", + "@save_count_button.changed.connect\n", + "def my_callback(*args):\n", + " # *args are the value(s) themselves!\n", + "\n", + "To silence this warning you may either provide a callback that has more\n", + "or less than 1 parameter. Or annotate the single parameter as anything\n", + "*other* than `Event`, e.g. `def callback(x: int): ...`\n", + "For details, see: https://github.com/napari/magicgui/issues/255\n", + " def save_detections(DETECTIONS):\n", + "<ipython-input-5-b9ca827008da>:114: FutureWarning: \n", "\n", "magicgui 0.4.0 will change the way that callbacks are called.\n", "Instead of a single `Event` instance, with an `event.value` attribute,\n", @@ -261,7 +266,7 @@ "*other* than `Event`, e.g. `def callback(x: int): ...`\n", "For details, see: https://github.com/napari/magicgui/issues/255\n", " def count_wrapper(*args):\n", - "<ipython-input-9-881807eea35c>:99: FutureWarning: \n", + "<ipython-input-5-b9ca827008da>:133: FutureWarning: \n", "\n", "magicgui 0.4.0 will change the way that callbacks are called.\n", "Instead of a single `Event` instance, with an `event.value` attribute,\n", @@ -276,7 +281,7 @@ "*other* than `Event`, e.g. `def callback(x: int): ...`\n", "For details, see: https://github.com/napari/magicgui/issues/255\n", " def update_view(data):\n", - "<ipython-input-9-881807eea35c>:99: FutureWarning: \n", + "<ipython-input-5-b9ca827008da>:133: FutureWarning: \n", "\n", "magicgui 0.4.0 will change the way that callbacks are called.\n", "Instead of a single `Event` instance, with an `event.value` attribute,\n", @@ -295,12 +300,12 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "<Container (update_flist: NoneType = False, live: NoneType = False, align_button: NoneType = False, count_button: NoneType = False)>" + "<Container (update_flist: NoneType = False, live: NoneType = False, align_button: NoneType = False, count_thr: NoneType = 500, count_button: NoneType = False, save_count_button: NoneType = False)>" ] }, - "execution_count": 9, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, @@ -308,19 +313,62 @@ "name": "stdout", "output_type": "stream", "text": [ - "changed to (PosixPath('/home/aaristov/Anchor/Lena/Data/20210705-MIC-0h/Composites/00ng.aligned-big-labels.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20210705-MIC-0h/Composites/02ng.aligned-big-labels.tif'))\n", - " chosen ['00ng.aligned-big-labels.tif']\n", + "changed to (PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/04ng-Composite.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/00ng-Composite.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/256ng-Composite.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/64ng-Composite.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/08ng-Composite.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/32ng-Composite.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/00ng-Composite.aligned.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/04ng-Composite.aligned.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/08ng-Composite.aligned.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite.aligned.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/256ng-Composite.aligned.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/32ng-Composite.aligned.tif'), PosixPath('/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/64ng-Composite.aligned.tif'))\n", + "update current dir /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1\n", + " chosen ['16ng-Composite.tif']\n", " chosen True\n", - "Opening /home/aaristov/Anchor/Lena/Data/20210705-MIC-0h/Composites/00ng.aligned-big-labels.tif\n", - "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='count_button')),), selections: ['00ng.aligned-big-labels.tif']\n", - "Counting /home/aaristov/Anchor/Lena/Data/20210705-MIC-0h/Composites/00ng.aligned-big-labels.tif\n" + "Opening /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite.tif\n", + "set threshold 507.90784182656273\n", + "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='align_button')),), selections: ['16ng-Composite.tif']\n", + "Aligning /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite.tif\n", + "/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite.tif (2, 7387, 22393)\n", + "/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite.tif {'tvec': array([-175.24340776, -131.74576275]), 'success': 0.008839134057870715, 'angle': -2.315779143010957, 'scale': 0.9965845794550581, 'Dscale': 0.0004759431230088664, 'Dangle': 0.013392857142857142, 'Dt': 0.25, 'timg': None}\n", + "transform (7387, 22393)\n", + "transform (7387, 22393)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: QBasicTimer::start: Timers cannot be started from another thread\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved aligned stack /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite..aligned.tif\n", + "set threshold 472.21524541244605\n", + "Updating flist within /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1\n", + " chosen ['16ng-Composite-up.tif']\n", + "Opening /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up.tif\n", + "set threshold 881.1966799200359\n", + "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='align_button')),), selections: ['16ng-Composite-up.tif']\n", + "Aligning /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up.tif\n", + "/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up.tif (2, 7387, 22393)\n", + "/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up.tif {'tvec': array([ 98.3620109 , -399.21041879]), 'success': 0.011145879286581393, 'angle': -2.3159714286134374, 'scale': 0.9965394394575, 'Dscale': 0.0004759215653088444, 'Dangle': 0.013392857142857142, 'Dt': 0.25, 'timg': None}\n", + "transform (7387, 22393)\n", + "transform (7387, 22393)\n", + "Saved aligned stack /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up..aligned.tif\n", + "set threshold 661.514761484317\n", + "Updating flist within /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1\n", + " chosen ['16ng-Composite-up..aligned.tif']\n", + "Opening /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up..aligned.tif\n", + "set threshold 661.514761484317\n", + "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='count_button')),), selections: ['16ng-Composite-up..aligned.tif']\n", + "Counting /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up..aligned.tif with 661 threshold\n", + "saved detections to /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up..aligned.detections.csv\n", + "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='count_button')),), selections: ['16ng-Composite-up..aligned.tif']\n", + "Counting /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up..aligned.tif with 491 threshold\n", + "saved detections to /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up..aligned.detections.csv\n", + "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='count_button')),), selections: ['16ng-Composite-up..aligned.tif']\n", + "Counting /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up..aligned.tif with 453 threshold\n", + "saved detections to /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1/16ng-Composite-up..aligned.detections.csv\n" ] } ], "source": [ - "@thread_worker\n", - "def load_stack(path):\n", - " return tf.imread(path), path\n", "\n", "def aligner_error(exc):\n", " print (exc.args)\n", @@ -337,34 +385,53 @@ "align_btn = PushButton(label='Align!', name='align_button')\n", "count_btn = PushButton(label='Count!', name='count_button')\n", "live = Checkbox(label='Live preview', name='live', enabled=True)\n", + "count_thr = widgets.Slider(label='Threshold', name='count_thr', min=500, max=600)\n", + "count_save = PushButton(label='Save counts', name='save_count_button', enabled=False)\n", + "save_path = widgets.LineEdit(label='Save path', enabled=False)\n", "select.data_dir=DEFAULT_PATH\n", "\n", + "select.CURRENT_PATH = None\n", + "global DETECTIONS\n", + "\n", "@update.clicked.connect\n", "def update_flist():\n", + " print(f'Updating flist within {select.data_dir}')\n", " select.choices = get_flist(select.data_dir)\n", + " DEFAULT_PATH = select.data_dir\n", "\n", "\n", "def show_stack(stack_path):\n", " stack, path = stack_path\n", - " update_flist()\n", + " select.CURRENT_PATH = path\n", + "# update_flist()\n", " \n", - " [viewer.layers.remove(l.name) for l in viewer.layers for prefix in ['Fluo_', 'BF_', 'Mask_'] if prefix in l.name ] \n", - " [viewer.layers.remove(l.name) for l in viewer.layers for prefix in ['Fluo_', 'BF_', 'Mask_'] if prefix in l.name ] \n", - " [viewer.layers.remove(l.name) for l in viewer.layers for prefix in ['Fluo_', 'BF_', 'Mask_'] if prefix in l.name ] \n", - " viewer.add_image(data=stack[0], name=\"BF_\" + os.path.basename(path), contrast_limits=(1e4,5e4))\n", + " [viewer.layers.remove(l.name) for l in viewer.layers for prefix in ['Fluo_', 'BF_', 'Mask_', 'detections'] if prefix in l.name ] \n", + " [viewer.layers.remove(l.name) for l in viewer.layers for prefix in ['Fluo_', 'BF_', 'Mask_', 'detections'] if prefix in l.name ] \n", + " [viewer.layers.remove(l.name) for l in viewer.layers for prefix in ['Fluo_', 'BF_', 'Mask_', 'detections'] if prefix in l.name ] \n", + " viewer.add_image(data=stack[0], name=\"BF_\" + os.path.basename(path), contrast_limits=(1e4,5e4), colormap='gray_r')\n", " viewer.add_image(data=stack[1], blending='additive', colormap='inferno', name=\"Fluo_\" + os.path.basename(path), contrast_limits=(440,800))\n", " try:\n", " viewer.add_image(data=stack[2], blending='additive', opacity=.2, colormap='blue', name=\"Mask_\" + os.path.basename(path), contrast_limits=(0,501))\n", + " \n", " except IndexError:\n", " pass\n", " \n", "\n", + " count_thr.min = (vmin := stack[1].mean() + 1 * stack[1].std())\n", + " count_thr.max = (vmin := stack[1].mean() + 10 * stack[1].std())\n", + " count_thr.value = (v := stack[1].mean() + 8 * stack[1].std())\n", + " print(f'set threshold {v}')\n", + " if os.path.exists(det:=path.replace('.tif', '.detections.csv')):\n", + " data = pd.read_csv(det, index_col=0)\n", + " show_detections(data.values)\n", + "\n", "\n", "@thread_worker(connect={\"errored\": aligner_error, \"returned\": show_stack})\n", "def aligner(path, progress_bar):\n", " try:\n", " stack = _align(path, progress=progress_bar)\n", " progress_bar.close()\n", + " return stack, path\n", " except Exception as e:\n", " progress_bar.label = progress_bar.label.replace('Aligning', 'ERROR!')\n", " progress_bar.tooltip = e.args\n", @@ -382,15 +449,35 @@ " return \n", "\n", "def show_detections(data):\n", + " [viewer.layers.remove(l.name) for l in viewer.layers for prefix in ['detections',] if prefix in l.name ]\n", " viewer.add_points(data[:,:2], name='detections', size=20, edge_width=3, edge_color=\"#ff00ff\",face_color='#ffff0000', opacity=1)\n", + " count_save.enabled = True\n", + " save_path.enabled = True\n", "\n", + " path = select.CURRENT_PATH.replace('.tif', '.detections.csv')\n", + " save_path.value = path\n", + " \n", + "@count_save.clicked.connect\n", + "def save_detections(DETECTIONS):\n", + " try:\n", + " path = select.CURRENT_PATH.replace('.tif', '.detections.csv')\n", + " save_path.value = path\n", + " if '.detections.csv' in path:\n", + " pd.DataFrame(data=DETECTIONS, columns=('axis-0', 'axis-1', 'label')).to_csv(path)\n", + " print(f'saved detections to {path}')\n", + " else: \n", + " raise ValueError(f'wrong path while saving detections {select.CURRENT_PATH}, expected .aligned.tif')\n", + " except IOError as e:\n", + " print ('Saving failed', e.args)\n", + " count_save.enabled = False\n", "\n", " \n", - "@thread_worker(connect={\"errored\": print('counting error'), \"returned\": show_detections})\n", - "def do_counts():\n", + "@thread_worker(connect={\"returned\": show_detections})\n", + "def do_counts(thr):\n", " fluo = viewer.layers[1].data\n", " labels = viewer.layers[2].data\n", - " detections = count.peak_local_max_labels(fluo[:], labels=labels, threshold_abs=500, min_distance=5)\n", + " detections = count.peak_local_max_labels(fluo[:], labels=labels, threshold_abs=thr, min_distance=5)\n", + " save_detections(detections)\n", " return detections\n", "\n", " \n", @@ -400,9 +487,9 @@ " print(f'click {args}, selections: {select.current_choice}')\n", " for item in select.current_choice:\n", " path = os.path.join(select.data_dir, item)\n", - " print ('Counting ' + path)\n", + " print ('Counting ' + path + f' with {count_thr.value} threshold')\n", " assert os.path.exists(path)\n", - " do_counts()\n", + " do_counts(count_thr.value)\n", " \n", "\n", "@dirr.changed.connect\n", @@ -410,6 +497,7 @@ " print(f'changed to {data}')\n", " select.choices= sorted(list(map(os.path.basename, data)))\n", " select.data_dir = os.path.dirname(dirr.value[0])\n", + " print(f'update current dir {select.data_dir}')\n", " \n", "# @thread_worker\n", "@select.changed.connect\n", @@ -425,22 +513,268 @@ " align_btn.enabled = True\n", " count_btn.enabled = False\n", " except IndexError as e:\n", - " print(f'Error: {e.args}')\n", + " print(f'update_view: select.current_choice Error: {e.args}')\n", " align_btn.enabled = False\n", " \n", " if len(select.current_choice) == 1 and live.value: \n", " path = os.path.join(select.data_dir, select.current_choice[0])\n", " print ('Opening ' + path)\n", - " worker = load_stack(path)\n", - " worker.returned.connect(show_stack)\n", - " worker.start()\n", + " stack, path = load_stack(path)\n", + " show_stack((stack, path))\n", + "# worker.start()\n", "\n", "container = Container(name='Multiwell-Aligner', \n", - " widgets=[dirr, select, update, live, align_btn, count_btn])\n", + " widgets=[dirr, select, update, live, align_btn, count_thr, count_btn, save_path, count_save])\n", "# viewer.window.add_dock_widget(container)\n", "container.show()" ] }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Updating flist within /home/aaristov/Anchor/Lena/Data/20211220-MIC/composites-day1\n" + ] + } + ], + "source": [ + "select.data_dir" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/home/aaristov/Anchor/Lena/Data/20211220-MIC/raw-24h/32ng-BF-TRITC..aligned.nd2'" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "'/home/aaristov/Anchor/Lena/Data/20211220-MIC/raw-24h/32ng-BF-TRITC..aligned.nd2'.replace('.tif', '.counts.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[array([[ 690., 927.],\n", + " [ 668., 901.],\n", + " [ 675., 907.],\n", + " ...,\n", + " [5984., 6812.],\n", + " [6016., 6780.],\n", + " [6017., 6773.]])]" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='count_button')),), selections: ['16ng-BF-TRITC..aligned.tif']\n", + "Counting /home/aaristov/Anchor/Lena/Data/20211220-MIC/raw-24h/16ng-BF-TRITC..aligned.tif with 986 threshold\n", + "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='count_button')),), selections: ['16ng-BF-TRITC..aligned.tif']\n", + "Counting /home/aaristov/Anchor/Lena/Data/20211220-MIC/raw-24h/16ng-BF-TRITC..aligned.tif with 492 threshold\n", + "AICSImageIO: Reader will load image in-memory: False\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Failed to parse XML for the provided file.\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 6\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AICSImageIO: Reader will load image in-memory: False\n", + " chosen False\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING: Traceback (most recent call last):\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/runpy.py\", line 194, in _run_module_as_main\n", + " return _run_code(code, main_globals, None,\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/runpy.py\", line 87, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/ipykernel_launcher.py\", line 16, in <module>\n", + " app.launch_new_instance()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/traitlets/config/application.py\", line 664, in launch_instance\n", + " app.start()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/ipykernel/kernelapp.py\", line 597, in start\n", + " self.io_loop.start()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/tornado/platform/asyncio.py\", line 149, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/asyncio/base_events.py\", line 570, in run_forever\n", + " self._run_once()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/asyncio/base_events.py\", line 1859, in _run_once\n", + " handle._run()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/asyncio/events.py\", line 81, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/tornado/ioloop.py\", line 743, in _run_callback\n", + " ret = callback()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/ipykernel/kernelbase.py\", line 314, in advance_eventloop\n", + " eventloop(self)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/ipykernel/eventloops.py\", line 129, in loop_qt5\n", + " return loop_qt4(kernel)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/ipykernel/eventloops.py\", line 122, in loop_qt4\n", + " _loop_qt(kernel.app)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/ipykernel/eventloops.py\", line 106, in _loop_qt\n", + " app.exec_()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/magicgui/widgets/_bases/value_widget.py\", line 59, in _on_value_change\n", + " self.changed.emit(value)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/magicgui/events.py\", line 85, in _run_emit_loop\n", + " cb(Event(args[0], self.name, self.instance))\n", + " File \"<ipython-input-58-a45efc7e54ad>\", line 145, in update_view\n", + " show_stack((stack, path))\n", + " File \"<ipython-input-58-a45efc7e54ad>\", line 38, in show_stack\n", + " viewer.add_image(data=stack[0], name=\"BF_\" + os.path.basename(path), contrast_limits=(1e4,5e4), colormap='gray_r')\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/components/viewer_model.py\", line 717, in add_image\n", + " self.layers.append(layer)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/_collections_abc.py\", line 962, in append\n", + " self.insert(len(self), value)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/components/layerlist.py\", line 82, in insert\n", + " super().insert(index, new_layer)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/utils/events/containers/_selectable_list.py\", line 63, in insert\n", + " super().insert(index, value)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/utils/events/containers/_evented_list.py\", line 179, in insert\n", + " self.events.inserted(index=index, value=value)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/utils/events/event.py\", line 599, in __call__\n", + " self._invoke_callback(cb, event)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/utils/events/event.py\", line 620, in _invoke_callback\n", + " cb(event)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/_qt/qt_viewer.py\", line 403, in _on_add_layer_change\n", + " self._add_layer(layer)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/napari/_qt/qt_viewer.py\", line 427, in _add_layer\n", + " vispy_layer.node.parent = self.view.scene\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/util/frozen.py\", line 17, in __setattr__\n", + " object.__setattr__(self, key, value)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/scene/node.py\", line 198, in parent\n", + " self._set_canvas(parent.canvas)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/scene/node.py\", line 315, in _set_canvas\n", + " self.transforms.canvas_transform = tr.canvas_transform\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/visuals/transforms/transform_system.py\", line 301, in canvas_transform\n", + " self._canvas_transform.transforms = tr\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/visuals/transforms/chain.py\", line 96, in transforms\n", + " self.update()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/visuals/transforms/base_transform.py\", line 148, in update\n", + " self.changed(*args)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/util/event.py\", line 453, in __call__\n", + " self._invoke_callback(cb, event)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/util/event.py\", line 469, in _invoke_callback\n", + " cb(event)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/util/event.py\", line 453, in __call__\n", + " self._invoke_callback(cb, event)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/util/event.py\", line 471, in _invoke_callback\n", + " _handle_exception(self.ignore_callback_errors,\n", + " << caught exception here: >>\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/util/event.py\", line 469, in _invoke_callback\n", + " cb(event)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/visuals/visual.py\", line 267, in _transform_changed\n", + " self.update()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/scene/node.py\", line 332, in update\n", + " c.update(node=self)\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/scene/canvas.py\", line 201, in update\n", + " super(SceneCanvas, self).update()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/app/canvas.py\", line 448, in update\n", + " self._backend._vispy_update()\n", + " File \"/home/aaristov/miniconda3/envs/nd2/lib/python3.8/site-packages/vispy/app/backends/_qt.py\", line 486, in _vispy_update\n", + " self.update()\n", + "RuntimeError: wrapped C/C++ object of type CanvasBackendDesktop has been deleted\n", + "ERROR: Invoking <bound method BaseVisual._transform_changed of <Image at 0x7f829ea5dc40>> for Event\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " chosen True\n", + "Opening /home/aaristov/Anchor/Lena/Data/20211220-MIC/raw-24h/16ng-BF-TRITC..aligned.tif\n", + "set threshold 986.387747173675\n" + ] + } + ], + "source": [ + "[l.data for l in viewer.layers if l.name == 'detections']" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "a = aicsimageio.imread('/home/aaristov/Anchor/Lena/Data/20211220-MIC/raw-24h/00ng-slide-BF-TRITC.nd2')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2, 7383, 22392)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " chosen ['04ng-BF-TRITC001.nd2']\n", + "Opening /home/aaristov/Anchor/Lena/Data/20211220-MIC/raw-24h/04ng-BF-TRITC001.nd2\n", + "click (Event(value=False, type='changed', source=PushButton(value=False, annotation=None, name='align_button')),), selections: ['04ng-BF-TRITC001.nd2']\n", + "Aligning /home/aaristov/Anchor/Lena/Data/20211220-MIC/raw-24h/04ng-BF-TRITC001.nd2\n" + ] + } + ], + "source": [ + "a[0,:,0].shape" + ] + }, { "cell_type": "code", "execution_count": 16,