diff --git a/Boxesplot.ipynb b/Boxesplot.ipynb new file mode 100644 index 0000000..bda6e10 --- /dev/null +++ b/Boxesplot.ipynb @@ -0,0 +1,450 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "id": "86c10f63-066f-4c39-833a-8bd65b6255c7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "39\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "left\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "up\n", + "up\n", + "up\n", + "up\n", + "up\n", + "up\n", + "up\n", + "up\n", + "up\n", + "up\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "down\n", + "down\n", + "down\n", + "down\n", + "down\n", + "right\n", + "right\n", + "right\n", + "right\n", + "left\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "left\n", + "left\n", + "left\n", + "right\n", + "right\n", + "left\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "right\n", + "left\n", + "right\n", + "right\n", + "right\n", + "right\n", + "left\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "left\n", + "left\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "left\n", + "left\n", + "left\n", + "left\n", + "left\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n", + "right\n" + ] + } + ], + "source": [ + "from skimage.measure import regionprops, label\n", + "import skimage.io\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.patches import Rectangle as drawrect\n", + "import numpy as np\n", + "\n", + "%matplotlib qt\n", + "\n", + "z =5 # int(input(\"how many z slices do you have in your movie?\"))\n", + "t = 64 #int(input(\"how many time slices do you have in your movie?\"))\n", + "masks_list = []\n", + "labels = []\n", + "Regions = []\n", + "\n", + "for j in range(t):\n", + " Regions_temp = []\n", + " masks_list_temp = []\n", + " labels_temp = []\n", + " for i in range(1, z+1):\n", + " mask = skimage.io.imread(\"C1-movie-%i_cp_masks.tif\" % (int(i)))\n", + " masks_list_temp.append(mask[j])\n", + " labelled = label(mask[j])\n", + " labels_temp.append(labelled)\n", + " Regions_temp.append(regionprops(labelled))\n", + " Regions.append(Regions_temp)\n", + " masks_list.append(masks_list_temp)\n", + " labels.append(labels_temp)\n", + "\n", + "\n", + "\n", + "\n", + "print(len(Regions[0][1]))\n", + "\n", + "\n", + "# Regions = np.reshape(Regions, (64, 5))\n", + "# masks_list = np.reshape(masks_list, (64, 5))\n", + "# labels = np.reshape(labels, (64, 5))\n", + "\n", + "\n", + "data = skimage.io.imread(\"movie.tif\")\n", + "\n", + "# this just requires you to load the movie\n", + "\n", + "data = np.moveaxis(data, 3, 0)\n", + "data = np.moveaxis(data, 4, 1)\n", + "\n", + "cells = data[:,:,:,:,0]\n", + "\n", + "Areas = []\n", + "BBoxes = []\n", + "Centroids = []\n", + "\n", + "for i in range(t):\n", + " Areas_temp = []\n", + " BBoxes_temp = []\n", + " Centroids_temp = []\n", + " for j in range(z):\n", + " Areas_temp.append([thisRegion.area for thisRegion in Regions[i][j]])\n", + " BBoxes_temp.append([thisRegion.bbox for thisRegion in Regions[i][j]])\n", + " Centroids_temp.append([thisRegion.centroid for thisRegion in Regions[i][j]])\n", + " Areas.append(Areas_temp)\n", + " BBoxes.append(BBoxes_temp)\n", + " Centroids.append(Centroids_temp)\n", + "\n", + "\n", + "np.random.seed(19680801)\n", + "\n", + "class IndexTracker:\n", + " def __init__(self, ax, X, areas, bboxes, centroids):\n", + " self.ax = ax\n", + " ax.set_title(\"use arrow keys. up/down = scroll z-stack, left/right = scroll time series\")\n", + "\n", + " self.X = X\n", + " self.areas = areas\n", + " self.bboxes = bboxes\n", + " self.centroids = centroids\n", + " rows, cols, self.tslices, self.zslices = X.shape\n", + " self.zind = self.zslices // 2\n", + " self.tind = self.tslices // 2\n", + "\n", + " # requires [x, y, t, z] shape\n", + " self.im = ax.imshow(self.X[:, :, self.tind, self.zind])\n", + " self.update()\n", + "\n", + " def on_key_press(self, event):\n", + " print(\"%s\" % (event.key))\n", + " if event.key == 'up':\n", + " self.zind = (self.zind + 1) % self.zslices\n", + " if event.key == 'down':\n", + " self.zind = (self.zind - 1) % self.zslices\n", + " if event.key == 'left':\n", + " self.tind = (self.tind - 1) % self.tslices\n", + " if event.key == 'right':\n", + " self.tind = (self.tind + 1) % self.tslices\n", + " # add try except here to account for not necessarily having all 3 channels\n", + " self.ax.clear()\n", + " self.update()\n", + "\n", + " def update(self):\n", + " ax.set_title(\"use arrow keys. up/down = scroll z-stack, left/right = scroll time series\")\n", + " self.im.set_data(self.X[:, :, self.tind, self.zind])\n", + " self.im = ax.imshow(self.X[:, :, self.tind, self.zind])\n", + " self.ax.set_ylabel('z-slice %s, t-slice %s' % (self.zind, self.tind))\n", + " for (bb, area, centroid) in zip(self.bboxes[self.tind][self.zind], self.areas[self.tind][self.zind], self.centroids[self.tind][self.zind]):\n", + " r = drawrect((float(bb[1] - 1), float(bb[0] - 1)), bb[3] - bb[1], bb[2] - bb[0], edgecolor='r', facecolor='none')\n", + " self.ax.add_patch(r)\n", + " plt.scatter(centroid[1] - 1, centroid[0] - 1, c='r', s=2)\n", + " self.im.axes.figure.canvas.draw()\n", + "\n", + "fig, ax = plt.subplots(1, 1)\n", + "\n", + "\n", + "\n", + "tracker = IndexTracker(ax, cells, Areas, BBoxes, Centroids)\n", + "\n", + "fig.canvas.mpl_connect('key_press_event', tracker.on_key_press)\n", + "plt.show()\n", + "\n", + "\n", + "# Areas = [thisRegion.area for thisRegion in Regions]\n", + "# BBs = [thisRegion.bbox for thisRegion in Regions]\n", + "# Centroids = [thisRegion.centroid for thisRegion in Regions]\n", + "# fig, ax = plt.subplots()\n", + "# ax.imshow(cells)\n", + "# ax.axis('off')\n", + "# for (bb,area,centroid) in zip(BBs,Areas,Centroids):\n", + "# r = drawrect((float(bb[1]-1),float(bb[0]-1)), bb[3]-bb[1],bb[2]-bb[0], edgecolor='r', facecolor='none')\n", + "# ax.add_patch(r)\n", + "# plt.scatter(centroid[1]-1, centroid[0]-1, c='r', s=2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "80478a0e-1d62-4209-96a1-bd7de3c874ce", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}