small-fish-gui 1.8.1__py3-none-any.whl → 1.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- small_fish_gui/__init__.py +1 -1
- small_fish_gui/gui/{napari.py → napari_visualiser.py} +159 -21
- small_fish_gui/gui/prompts.py +1 -1
- small_fish_gui/gui/testing.ipynb +422 -0
- small_fish_gui/interface/inoutput.py +59 -1
- small_fish_gui/pipeline/_colocalisation.py +66 -41
- small_fish_gui/pipeline/actions.py +34 -24
- small_fish_gui/pipeline/detection.py +66 -15
- small_fish_gui/pipeline/main.py +7 -7
- small_fish_gui/pipeline/segmentation.py +1 -1
- small_fish_gui/pipeline/spots.py +7 -0
- small_fish_gui/pipeline/testing.ipynb +2067 -0
- {small_fish_gui-1.8.1.dist-info → small_fish_gui-1.9.0.dist-info}/METADATA +3 -2
- {small_fish_gui-1.8.1.dist-info → small_fish_gui-1.9.0.dist-info}/RECORD +16 -14
- {small_fish_gui-1.8.1.dist-info → small_fish_gui-1.9.0.dist-info}/WHEEL +1 -1
- {small_fish_gui-1.8.1.dist-info → small_fish_gui-1.9.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"metadata": {},
|
|
6
|
+
"source": [
|
|
7
|
+
"# Testing re-clustering after napari"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"cell_type": "code",
|
|
12
|
+
"execution_count": 31,
|
|
13
|
+
"metadata": {},
|
|
14
|
+
"outputs": [],
|
|
15
|
+
"source": [
|
|
16
|
+
"import matplotlib.pyplot as plt\n",
|
|
17
|
+
"import numpy as np\n",
|
|
18
|
+
"\n",
|
|
19
|
+
"def show_spots(images) :\n",
|
|
20
|
+
"\n",
|
|
21
|
+
" if isinstance(images, np.ndarray) :\n",
|
|
22
|
+
" images = [images]\n",
|
|
23
|
+
" if len(images) > 1 :\n",
|
|
24
|
+
" fig, axes = plt.subplots(1, len(images))\n",
|
|
25
|
+
" elif len(images) == 1 :\n",
|
|
26
|
+
" fig = plt.figure()\n",
|
|
27
|
+
" axes = [fig.gca()]\n",
|
|
28
|
+
"\n",
|
|
29
|
+
" for ax, im in zip(axes, images) :\n",
|
|
30
|
+
" ax.imshow(im)\n",
|
|
31
|
+
" plt.show()"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"cell_type": "markdown",
|
|
36
|
+
"metadata": {},
|
|
37
|
+
"source": [
|
|
38
|
+
"## Initializing spots"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"cell_type": "code",
|
|
43
|
+
"execution_count": 76,
|
|
44
|
+
"metadata": {},
|
|
45
|
+
"outputs": [
|
|
46
|
+
{
|
|
47
|
+
"data": {
|
|
48
|
+
"image/png": "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",
|
|
49
|
+
"text/plain": [
|
|
50
|
+
"<Figure size 640x480 with 1 Axes>"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"metadata": {},
|
|
54
|
+
"output_type": "display_data"
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"source": [
|
|
58
|
+
"import numpy as np\n",
|
|
59
|
+
"from sklearn.cluster import DBSCAN\n",
|
|
60
|
+
"from sklearn.neighbors import NearestNeighbors\n",
|
|
61
|
+
"\n",
|
|
62
|
+
"SEED = 1\n",
|
|
63
|
+
"random_generator = np.random.default_rng(seed=SEED)\n",
|
|
64
|
+
"\n",
|
|
65
|
+
"SHAPE = (20,20)\n",
|
|
66
|
+
"SPOTS_NUM = 40\n",
|
|
67
|
+
"CLUSTER_RADIUS = 2\n",
|
|
68
|
+
"MIN_SPOT = 4\n",
|
|
69
|
+
"\n",
|
|
70
|
+
"image = np.zeros(SHAPE + (3,), dtype=np.uint8)\n",
|
|
71
|
+
"spots = random_generator.integers([0]*len(SHAPE),SHAPE, (SPOTS_NUM,len(SHAPE)))\n",
|
|
72
|
+
"\n",
|
|
73
|
+
"spot_image = image.copy()\n",
|
|
74
|
+
"spot_image[tuple(list(zip(*spots)))] = 255\n",
|
|
75
|
+
"show_spots([spot_image])"
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"cell_type": "markdown",
|
|
80
|
+
"metadata": {},
|
|
81
|
+
"source": [
|
|
82
|
+
"## Computing clusters"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"cell_type": "code",
|
|
87
|
+
"execution_count": 83,
|
|
88
|
+
"metadata": {},
|
|
89
|
+
"outputs": [
|
|
90
|
+
{
|
|
91
|
+
"name": "stdout",
|
|
92
|
+
"output_type": "stream",
|
|
93
|
+
"text": [
|
|
94
|
+
"2 clusters found.\n"
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"source": [
|
|
99
|
+
"dbscan_model = DBSCAN(CLUSTER_RADIUS, min_samples=MIN_SPOT)\n",
|
|
100
|
+
"dbscan_model.fit(spots)\n",
|
|
101
|
+
"\n",
|
|
102
|
+
"spots_labels = dbscan_model.labels_.reshape(len(spots),1)\n",
|
|
103
|
+
"\n",
|
|
104
|
+
"spots_first_clustering = np.concatenate([spots, spots_labels], axis=1)\n",
|
|
105
|
+
"cluster_number = len(np.unique(spots_first_clustering[:,-1])) - 1\n",
|
|
106
|
+
"print(\"{0} clusters found.\".format(cluster_number))"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"cell_type": "markdown",
|
|
111
|
+
"metadata": {},
|
|
112
|
+
"source": [
|
|
113
|
+
"### Visualisation with clustered spots in red"
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"cell_type": "code",
|
|
118
|
+
"execution_count": 82,
|
|
119
|
+
"metadata": {},
|
|
120
|
+
"outputs": [
|
|
121
|
+
{
|
|
122
|
+
"name": "stdout",
|
|
123
|
+
"output_type": "stream",
|
|
124
|
+
"text": [
|
|
125
|
+
"((9, 15, 16, 9, 14, 8, 8, 15), (10, 19, 18, 9, 19, 10, 12, 18))\n",
|
|
126
|
+
"[[255 0 0]\n",
|
|
127
|
+
" [255 0 0]\n",
|
|
128
|
+
" [255 0 0]\n",
|
|
129
|
+
" [255 0 0]\n",
|
|
130
|
+
" [255 0 0]\n",
|
|
131
|
+
" [255 0 0]\n",
|
|
132
|
+
" [255 0 0]\n",
|
|
133
|
+
" [255 0 0]]\n"
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"data": {
|
|
138
|
+
"image/png": "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",
|
|
139
|
+
"text/plain": [
|
|
140
|
+
"<Figure size 640x480 with 1 Axes>"
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
"metadata": {},
|
|
144
|
+
"output_type": "display_data"
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"source": [
|
|
148
|
+
"clustered_spots_index = tuple(list(zip(*spots_first_clustering[:,:-1][spots_first_clustering[:,-1] != -1])))\n",
|
|
149
|
+
"\n",
|
|
150
|
+
"spot_image[clustered_spots_index] = [255,0,0]\n",
|
|
151
|
+
"\n",
|
|
152
|
+
"print(clustered_spots_index)\n",
|
|
153
|
+
"print(spot_image[clustered_spots_index])\n",
|
|
154
|
+
"show_spots(spot_image)"
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"cell_type": "markdown",
|
|
159
|
+
"metadata": {},
|
|
160
|
+
"source": [
|
|
161
|
+
"## Adding a new cluster"
|
|
162
|
+
]
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"cell_type": "code",
|
|
166
|
+
"execution_count": 84,
|
|
167
|
+
"metadata": {},
|
|
168
|
+
"outputs": [
|
|
169
|
+
{
|
|
170
|
+
"data": {
|
|
171
|
+
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAENCAYAAAAsbz7nAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAgrUlEQVR4nO3df2yV9fn/8ddp4ZwSQ091SNuDpfxQYBJoHFs7ljA36SzMIKjTSpiWqegMLlkYmbKIRbekTszyidjgEqfd4gQ1EciiIYOOHwMKbPzIEBxpWaU1cEogcE6LoyXt+/uH8/g9ctqeuz13z/s+fT6SK+Gc+75Pr/s+57xycc59zvEZY4wAAAAslpXuBgAAAPrDwAIAAKzHwAIAAKzHwAIAAKzHwAIAAKzHwAIAAKzHwAIAAKzHwAIAAKw3It0NpEJPT4/OnDmj0aNHy+fzpbsdYFgyxqi9vV2hUEhZWd74vxDZAaSXk9zIiIHlzJkzKioqSncbACS1trbqpptuSncbSSE7ADskkxuu/TeotrZWEyZMUE5OjsrKynTw4ME+13/vvfc0bdo05eTkaMaMGfrwww+T/lujR48ebLt9ikQiSRfQGyePIy8/lgbzfBzK3Bhsr8kYDvc33DccsiOp56JxwcaNG43f7zdvvPGGOX78uFm2bJnJy8szbW1tCdffu3evyc7ONi+99JI5ceKEefbZZ83IkSPNsWPHkvp7kUjESHKtnHCzD8rb5VS6+x1oRSIRx/tqzNDnhjFkB+WNcird/Q6kkskNVwaW0tJSs3z58tjl7u5uEwqFTE1NTcL1H3jgAXPXXXfFXVdWVmaeeOKJpP4eoUN5oZxKd78DrYEOLEOdG8aQHZQ3yql09zuQSiY3Uv6WUFdXlw4dOqTy8vLYdVlZWSovL1dDQ0PCbRoaGuLWl6SKiope1+/s7FQ0Go0rAN41FLkhkR2Al6V8YDl//ry6u7uVn58fd31+fr7C4XDCbcLhsKP1a2pqFAwGY8VJc4C3DUVuSGQH4GXe+OzhV6xatSruBKPW1tZ0twTAA8gOwLtS/rHmMWPGKDs7W21tbXHXt7W1qaCgIOE2BQUFjtYPBAIKBAKpaRhA2g1FbkhkB+BlKX+Fxe/3a9asWaqvr49d19PTo/r6es2ePTvhNrNnz45bX5K2bdvW6/oAMgu5AaBfjk8/TsLGjRtNIBAwdXV15sSJE+bxxx83eXl5JhwOG2OMeeihh8wzzzwTW3/v3r1mxIgR5uWXXzYff/yxqa6u5mPNVMaVU+nud6A1mI81D2VuGEN2UN4op9Ld70AqbR9rNsaYdevWmfHjxxu/329KS0vN/v37Y8tuv/12U1VVFbf+u+++a6ZMmWL8fr+ZPn26+eCDD5L+W1+ETrJBme47hgds5hT3ybU10IHFmKHNDWPIjkzZRy8W90l8JfMc9P3vYHhaNBpVMBhUJBJRbm5uv+t78TdDnN5NXtxHL3JyvwyX+yTZ56ENyI5reXEfvYjsiJfMc9CTnxICAADDCwMLAACwHgMLAACwHgMLAACwHgMLAACwHgMLAACwHgMLAACwHgMLAACwHgMLAACwHgMLAACw3oh0N5BKwWAw3S24xulXM9vytc+29OEWL/bsVLL34Rdfc+9FXu07Gc4fo06+yp/sGCgv9uxUMvehk9zgFRYAAGA9BhYAAGA9BhYAAGA9BhYAAGA9BhYAAGA9BhYAAGC9lA8sNTU1+ta3vqXRo0dr7NixWrRokU6ePNnnNnV1dfL5fHGVk5OT6tYAWIrcANCflA8su3bt0vLly7V//35t27ZNV69e1Z133qnLly/3uV1ubq7Onj0bq9OnT6e6NQCWIjcA9CflXxy3devWuMt1dXUaO3asDh06pO9+97u9bufz+VRQUJDqdgB4ALkBoD+un8MSiUQkSTfccEOf63V0dKi4uFhFRUVauHChjh8/7nZrACxFbgD4Kp9x8v3HDvX09Ojuu+/WpUuXtGfPnl7Xa2hoUGNjo2bOnKlIJKKXX35Zu3fv1vHjx3XTTTdds35nZ6c6Oztjl6PRqIqKilzZBwDORCIR5ebmDnh7t3JDIjsAWyWVG8ZFP/3pT01xcbFpbW11tF1XV5eZPHmyefbZZxMur66uNvr8By8oirKsIpGIlblBdlCUvZVMbrj2CstTTz2lLVu2aPfu3Zo4caLj7e+//36NGDFCGzZsuGYZ/0sC7DWYV1jczA2J7ABslUxupPykW2OMfvazn2nTpk3auXPngEKnu7tbx44d0w9/+MOEywOBgAKBwGBbBWCJocgNiewAvCzlA8vy5cv19ttva8uWLRo9erTC4bCkz3++fdSoUZKkhx9+WOPGjVNNTY0k6YUXXtC3v/1t3Xzzzbp06ZLWrl2r06dP67HHHkt1ewAsRG4A6E/KB5b169dLkr73ve/FXf/mm29q6dKlkqSWlhZlZX35AaWLFy9q2bJlCofDuv766zVr1izt27dPt956a6rbA2AhcgNAf1z9lNBQiUajCgaD6W4DgAb/KaGhRHYAdkgmN/gtIQAAYD0GFgAAYD0GFgAAYD0GFgAAYL2Uf0oIdnByLrXP53OxEwBeQnbAVrzCAgAArMfAAgAArMfAAgAArMfAAgAArMfAAgAArMfAAgAArMfAAgAArMfAAgAArMfAAgAArMfAAgAArMdX8yfBi19V7VYfTo6F0z68eJzdxPHwPi/eh2SH92Xq8eAVFgAAYD0GFgAAYL2UDyxr1qyRz+eLq2nTpvW5zXvvvadp06YpJydHM2bM0IcffpjqtgBYjNwA0B9XXmGZPn26zp49G6s9e/b0uu6+ffu0ePFiPfroozpy5IgWLVqkRYsW6aOPPnKjNQCWIjcA9MmkWHV1tSkpKUl6/QceeMDcddddcdeVlZWZJ554IunbiEQiRpJr5YSbfdhQTnGch9/jLhKJOOrdmPTkhjFkh62PZ6fHg+Ps/eORTG648gpLY2OjQqGQJk2apCVLlqilpaXXdRsaGlReXh53XUVFhRoaGnrdprOzU9FoNK4AeJvbuSGRHYCXpXxgKSsrU11dnbZu3ar169erublZc+bMUXt7e8L1w+Gw8vPz467Lz89XOBzu9W/U1NQoGAzGqqioKKX7AGBoDUVuSGQH4GmOXjsagIsXL5rc3Fzz+uuvJ1w+cuRI8/bbb8ddV1tba8aOHdvrbV65csVEIpFYtba28vKahS81Oj0eHOfMOB4DeUvoq9zIDWPIDq88np0eD46z949HMrnh+hfH5eXlacqUKWpqakq4vKCgQG1tbXHXtbW1qaCgoNfbDAQCCgQCKe0TgD3cyA2J7AC8zPXvYeno6NCpU6dUWFiYcPns2bNVX18fd922bds0e/Zst1sDYClyA8A1HL12lIRf/OIXZufOnaa5udns3bvXlJeXmzFjxphz584ZY4x56KGHzDPPPBNbf+/evWbEiBHm5ZdfNh9//LGprq42I0eONMeOHUv6b3Kmv50vNTo9HhznzDgeA3lLKB25YQzZYevj2enx4Dh7/3gkkxspH1gqKytNYWGh8fv9Zty4caaystI0NTXFlt9+++2mqqoqbpt3333XTJkyxfj9fjN9+nTzwQcfOPqbbocORQ3ncvo8HMjAko7c+P97pigq9eXkOZhMbviMcfiLVBaKRqMKBoPpbgPISMlGxBfPw0gkotzcXJe7Sg2yA3BPMtnhJDf4LSEAAGA9BhYAAGA9BhYAAGA9BhYAAGA9BhYAAGA9BhYAAGA9BhYAAGA9BhYAAGA9BhYAAGA913+t2UZOv9zX5/O51In3ePXYOenblp5twfH4klcf/zbw6rEjOwYu1ceDV1gAAID1GFgAAID1GFgAAID1GFgAAID1GFgAAID1GFgAAID1GFgAAID1Uj6wTJgwQT6f75pavnx5wvXr6uquWTcnJyfVbQGwHNkBoC8p/+K4f/zjH+ru7o5d/uijj/SDH/xA999/f6/b5Obm6uTJk7HLfPkOMPyQHQD6kvKB5cYbb4y7/OKLL2ry5Mm6/fbbe93G5/OpoKAg1a0A8BCyA0BfXD2HpaurS2+99ZYeeeSRPv/n09HRoeLiYhUVFWnhwoU6fvx4n7fb2dmpaDQaV5IUiURkjOm3Er3s3FfhS24eO+OgBtB48oW0IzsyD9mBwXJ1YNm8ebMuXbqkpUuX9rrO1KlT9cYbb2jLli1666231NPTo+985zv69NNPe92mpqZGwWAwVkVFRS50DyBdyA4AX+UzTn+RyoGKigr5/X795S9/SXqbq1ev6utf/7oWL16sX//61wnX6ezsVGdnZ+xyNBpVUVGRIpGIcnNz+/0b/M/HTk4eiE7vQTdvG/GSfR72heyAE2SH9yXzHHTt15pPnz6t7du36/3333e03ciRI3Xbbbepqamp13UCgYACgcBgWwRgIbIDQCKuvSX05ptvauzYsbrrrrscbdfd3a1jx46psLDQpc4A2IzsAJCIKwNLT0+P3nzzTVVVVWnEiPgXcR5++GGtWrUqdvmFF17QX//6V/3nP//R4cOH9eMf/1inT5/WY4895kZrACxGdgDojStvCW3fvl0tLS165JFHrlnW0tKirKwv56SLFy9q2bJlCofDuv766zVr1izt27dPt956qxutAbAY2QGgN66edDtUotGogsEgJ855HCfOZYZUnHQ7VMiOzEB2eF8yz0F+SwgAAFiPgQUAAFiPgQUAAFiPgQUAAFjPtS+OS4dgMJjuFvAVtpzRbcPJcE7Pb+cEz6FDdtiH7PgS2fE5XmEBAADWY2ABAADWY2ABAADWY2ABAADWY2ABAADWY2ABAADWY2ABAADWY2ABAADWY2ABAADWY2ABAADWy6iv5s9kXv1qZju6sIMt9wmGF7LD+2y5T9KNV1gAAID1HA8su3fv1oIFCxQKheTz+bR58+a45cYYPffccyosLNSoUaNUXl6uxsbGfm+3trZWEyZMUE5OjsrKynTw4EGnrQGwFLkBYLAcDyyXL19WSUmJamtrEy5/6aWX9Morr+i1117TgQMHdN1116miokJXrlzp9TbfeecdrVixQtXV1Tp8+LBKSkpUUVGhc+fOOW0PgIXIDQCDZgZBktm0aVPsck9PjykoKDBr166NXXfp0iUTCATMhg0ber2d0tJSs3z58tjl7u5uEwqFTE1NTVJ9RCIRo89/jTxjayD3DUWloyKRSL+PTRtywxiyI5F090sNz+ovN4wxJqXnsDQ3NyscDqu8vDx2XTAYVFlZmRoaGhJu09XVpUOHDsVtk5WVpfLy8l636ezsVDQajSsA3jRUuSGRHYCXpXRgCYfDkqT8/Py46/Pz82PLvur8+fPq7u52tE1NTY2CwWCsioqKUtA9gHQYqtyQyA7Ayzz5KaFVq1YpEonEqrW1Nd0tAfAAsgPwrpQOLAUFBZKktra2uOvb2tpiy75qzJgxys7OdrRNIBBQbm5uXAHwpqHKDYnsALwspQPLxIkTVVBQoPr6+th10WhUBw4c0OzZsxNu4/f7NWvWrLhtenp6VF9f3+s2ADIHuQEgKU7PIG9vbzdHjhwxR44cMZLM7373O3PkyBFz+vRpY4wxL774osnLyzNbtmwx//rXv8zChQvNxIkTzX//+9/Ybdxxxx1m3bp1scsbN240gUDA1NXVmRMnTpjHH3/c5OXlmXA4nFRPnOl/rXT3Sw3fSnS2v425QXaQHZQ9lcynhBw/mnfs2JHwj1VVVRljPv+I4urVq01+fr4JBAJm7ty55uTJk3G3UVxcbKqrq+OuW7dunRk/frzx+/2mtLTU7N+/P+mehkPoUJRXKlHw2JgbZAdF2VPJDCw+Yxz+0ISFotGogsFgutsAICkSiXjm3BCyA7BDMrnhyU8JAQCA4YWBBQAAWI+BBQAAWI+BBQAAWI+BBQAAWI+BBQAAWI+BBQAAWI+BBQAAWI+BBQAAWI+BBQAAWG9EuhsAvuDkVyJ8Pp+LnQDwErJjeOAVFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD3HA8vu3bu1YMEChUIh+Xw+bd68Obbs6tWrevrppzVjxgxdd911CoVCevjhh3XmzJk+b3PNmjXy+XxxNW3aNMc7A8BO5AaAwXI8sFy+fFklJSWqra29Ztlnn32mw4cPa/Xq1Tp8+LDef/99nTx5UnfffXe/tzt9+nSdPXs2Vnv27HHaGgBLkRsABsvxF8fNnz9f8+fPT7gsGAxq27Ztcde9+uqrKi0tVUtLi8aPH997IyNGqKCgwGk7ADyA3AAwWK6fwxKJROTz+ZSXl9fneo2NjQqFQpo0aZKWLFmilpaWXtft7OxUNBqNKwCZw43ckMgOwMtcHViuXLmip59+WosXL1Zubm6v65WVlamurk5bt27V+vXr1dzcrDlz5qi9vT3h+jU1NQoGg7EqKipyaxcwhL56PkJfhczlVm5IZEemIjuGCTMIksymTZsSLuvq6jILFiwwt912m4lEIo5u9+LFiyY3N9e8/vrrCZdfuXLFRCKRWLW2thpJFEVZUP0936X05AbZQVH2VjLPd1d+/PDq1at64IEHdPr0af3tb3/r839JieTl5WnKlClqampKuDwQCCgQCKSiVQCWcDs3JLID8LKUvyX0Reg0NjZq+/bt+trXvub4Njo6OnTq1CkVFhamuj0AFiI3APTH8cDS0dGho0eP6ujRo5Kk5uZmHT16VC0tLbp69ap+9KMf6Z///Kf+/Oc/q7u7W+FwWOFwWF1dXbHbmDt3rl599dXY5ZUrV2rXrl365JNPtG/fPt1zzz3Kzs7W4sWLB7+HANKO3AAwaI7eJDbG7NixI+H7T1VVVaa5ubnX96d27NgRu43i4mJTXV0du1xZWWkKCwuN3+8348aNM5WVlaapqSnpniKRSNrff6Mo6vNK9F60jblBdlCUPZXMOSw+Y4yRx0WjUQWDwXS3AUCffyTZ6fkn6UJ2AHZIJjf4LSEAAGA9BhYAAGA9BhYAAGA9BhYAAGA9V744bjhzcg4zXxMdj2Nnp2TvlagkTl8dOB7/A8exs1My94qT3OAVFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD0GFgAAYD2+mj/F+NrngePYDY3kv8QcQ4nH/8Bx7IZGurODV1gAAID1HA8su3fv1oIFCxQKheTz+bR58+a45UuXLpXP54urefPm9Xu7tbW1mjBhgnJyclRWVqaDBw86bQ2ApcgNAIPleGC5fPmySkpKVFtb2+s68+bN09mzZ2O1YcOGPm/znXfe0YoVK1RdXa3Dhw+rpKREFRUVOnfunNP2AFiI3AAwaGYQJJlNmzbFXVdVVWUWLlzo6HZKS0vN8uXLY5e7u7tNKBQyNTU1SW0fiUSMPn97jaKofsq4VJH/3X4kEvFEbhhDdlCUkzIuVLK5YYwxrpzDsnPnTo0dO1ZTp07Vk08+qQsXLvS6bldXlw4dOqTy8vLYdVlZWSovL1dDQ4Mb7QGwELkBoC8p/5TQvHnzdO+992rixIk6deqUfvWrX2n+/PlqaGhQdnb2NeufP39e3d3dys/Pj7s+Pz9f//73vxP+jc7OTnV2dsYuR6PR1O4EgCE1FLkhkR2Al6V8YHnwwQdj/54xY4ZmzpypyZMna+fOnZo7d25K/kZNTY2ef/75lNwWgPQbityQyA7Ay1z/WPOkSZM0ZswYNTU1JVw+ZswYZWdnq62tLe76trY2FRQUJNxm1apVikQisWptbU153wDSx43ckMgOwMtcH1g+/fRTXbhwQYWFhQmX+/1+zZo1S/X19bHrenp6VF9fr9mzZyfcJhAIKDc3N64AZA43ckMiOwBPc3RavjGmvb3dHDlyxBw5csRIMr/73e/MkSNHzOnTp017e7tZuXKlaWhoMM3NzWb79u3mG9/4hrnlllvMlStXYrdxxx13mHXr1sUub9y40QQCAVNXV2dOnDhhHn/8cZOXl2fC4TBn+lNUisu4VH2d7W9jbpAdFOWsjAvl5FNCjgeWHTt2JNyRqqoq89lnn5k777zT3HjjjWbkyJGmuLjYLFu27JoAKS4uNtXV1XHXrVu3zowfP974/X5TWlpq9u/fn3RPhA5FJV/GpeoreGzMDbKDopyVcaGcDCw+Y4yRx0WjUQWDwXS3YRUnd6stv8PhxZ69yOkT3umRjkQinnmrhey4lhefh17s2YvczI5kcoPfEgIAANZjYAEAANZjYAEAANZjYAEAANZjYAEAANZjYAEAANZjYAEAANZjYAEAANZjYAEAANZjYAEAANYbke4G4A63vn7azV9yyPSvzHZ67Nw6Hpl9lDFYZId9yI7P8QoLAACwHgMLAACwHgMLAACwHgMLAACwHgMLAACwHgMLAACwnuOBZffu3VqwYIFCoZB8Pp82b94ct9zn8yWstWvX9nqba9asuWb9adOmOd4ZAHYiNwAMluOB5fLlyyopKVFtbW3C5WfPno2rN954Qz6fT/fdd1+ftzt9+vS47fbs2eO0NQCWIjcADJbjL46bP3++5s+f3+vygoKCuMtbtmzR97//fU2aNKnvRkaMuGZbAJmB3AAwWK6ew9LW1qYPPvhAjz76aL/rNjY2KhQKadKkSVqyZIlaWlrcbA2ApcgNAIm4+tX8f/zjHzV69Gjde++9fa5XVlamuro6TZ06VWfPntXzzz+vOXPm6KOPPtLo0aOvWb+zs1OdnZ2xy9FoNOW9DwUvflV1pn8Ftps4dslxKzcksiMZZId9OHb/YwZBktm0aVOvy6dOnWqeeuopx7d78eJFk5uba15//fWEy6urq40kz5eb0r1v1PCtSCTS72MzHblhDNmRjHTvGzU8q7/cMMYY194S+vvf/66TJ0/qsccec7xtXl6epkyZoqampoTLV61apUgkEqvW1tbBtgvAAm7mhkR2AF7m2sDyhz/8QbNmzVJJSYnjbTs6OnTq1CkVFhYmXB4IBJSbmxtXALzPzdyQyA7AyxwPLB0dHTp69KiOHj0qSWpubtbRo0fjTnaLRqN67733ev1f0ty5c/Xqq6/GLq9cuVK7du3SJ598on379umee+5Rdna2Fi9e7LQ9ABYiNwAMmtP3N3fs2JHw/aeqqqrYOr///e/NqFGjzKVLlxLeRnFxsamuro5drqysNIWFhcbv95tx48aZyspK09TUlHRPkUgk7e+/DaTclO59o4ZvJXov2sbcMIbsSCTd+0YNz0rmHBbf/x6gnhaNRhUMBtPdhmNuHnrOKke6RCIRz7zVQnZci+xAOiSTG/yWEAAAsB4DCwAAsB4DCwAAsB4DCwAAsB4DCwAAsJ6rvyWUKZycke/kDHvOxgcyG9kBpA6vsAAAAOsxsAAAAOsxsAAAAOsxsAAAAOsxsAAAAOsxsAAAAOsxsAAAAOsxsAAAAOsxsAAAAOtlxDfdOvk2yYGIRqOu3j6QSdx+PqYS2QHYIZnnYkYMLO3t7a7efjAYdPX2gUzS3t7umecM2QHYIZnc8Bkv/XeoFz09PTpz5oxGjx4d9xsb0WhURUVFam1tVW5ubho7dEem75+U+fuYSftnjFF7e7tCoZCysrzxbjPZwf55Vabso5PcyIhXWLKysnTTTTf1ujw3N9fTd2h/Mn3/pMzfx0zZP6+9okB2sH9elwn7mGxueOO/QQAAYFhjYAEAANbL6IElEAiourpagUAg3a24ItP3T8r8fcz0/fOqTL9f2D/vGw77+FUZcdItAADIbBn9CgsAAMgMDCwAAMB6DCwAAMB6DCwAAMB6GT2w1NbWasKECcrJyVFZWZkOHjyY7pZSYs2aNfL5fHE1bdq0dLc1KLt379aCBQsUCoXk8/m0efPmuOXGGD333HMqLCzUqFGjVF5ersbGxvQ0OwD97d/SpUuvuU/nzZuXnmaHuUzNDSnzsoPcGF65kbEDyzvvvKMVK1aourpahw8fVklJiSoqKnTu3Ll0t5YS06dP19mzZ2O1Z8+edLc0KJcvX1ZJSYlqa2sTLn/ppZf0yiuv6LXXXtOBAwd03XXXqaKiQleuXBniTgemv/2TpHnz5sXdpxs2bBjCDiFlfm5ImZUd5MYwyw2ToUpLS83y5ctjl7u7u00oFDI1NTVp7Co1qqurTUlJSbrbcI0ks2nTptjlnp4eU1BQYNauXRu77tKlSyYQCJgNGzakocPB+er+GWNMVVWVWbhwYVr6wZcyOTeMyezsIDcyX0a+wtLV1aVDhw6pvLw8dl1WVpbKy8vV0NCQxs5Sp7GxUaFQSJMmTdKSJUvU0tKS7pZc09zcrHA4HHd/BoNBlZWVZcz9KUk7d+7U2LFjNXXqVD355JO6cOFCulsaVoZDbkjDJzvIjcyTkQPL+fPn1d3drfz8/Ljr8/PzFQ6H09RV6pSVlamurk5bt27V+vXr1dzcrDlz5qi9vT3drbnii/ssU+9P6fOXdf/0pz+pvr5ev/3tb7Vr1y7Nnz9f3d3d6W5t2Mj03JCGV3aQG5knI36tebiZP39+7N8zZ85UWVmZiouL9e677+rRRx9NY2cYqAcffDD27xkzZmjmzJmaPHmydu7cqblz56axM2QSsiOzDLfcyMhXWMaMGaPs7Gy1tbXFXd/W1qaCgoI0deWevLw8TZkyRU1NTeluxRVf3GfD5f6UpEmTJmnMmDEZe5/aaLjlhpTZ2UFuZJ6MHFj8fr9mzZql+vr62HU9PT2qr6/X7Nmz09iZOzo6OnTq1CkVFhamuxVXTJw4UQUFBXH3ZzQa1YEDBzLy/pSkTz/9VBcuXMjY+9RGwy03pMzODnIj82TsW0IrVqxQVVWVvvnNb6q0tFT/93//p8uXL+snP/lJulsbtJUrV2rBggUqLi7WmTNnVF1drezsbC1evDjdrQ1YR0dH3P8KmpubdfToUd1www0aP368fv7zn+s3v/mNbrnlFk2cOFGrV69WKBTSokWL0te0A33t3w033KDnn39e9913nwoKCnTq1Cn98pe/1M0336yKioo0dj38ZHJuSJmXHeTGMMuNdH9MyU3r1q0z48ePN36/35SWlpr9+/enu6WUqKysNIWFhcbv95tx48aZyspK09TUlO62BmXHjh1G0jVVVVVljPn8I4qrV682+fn5JhAImLlz55qTJ0+mt2kH+tq/zz77zNx5553mxhtvNCNHjjTFxcVm2bJlJhwOp7vtYSlTc8OYzMsOcmN45YbPGGOGdkQCAABwJiPPYQEAAJmFgQUAAFiPgQUAAFiPgQUAAFiPgQUAAFiPgQUAAFiPgQUAAFiPgQUAAFiPgQUAAFiPgQUAAFiPgQUAAFiPgQUAAFjv/wF+0ffWN+JtbQAAAABJRU5ErkJggg==",
|
|
172
|
+
"text/plain": [
|
|
173
|
+
"<Figure size 640x480 with 2 Axes>"
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
"metadata": {},
|
|
177
|
+
"output_type": "display_data"
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
"source": [
|
|
181
|
+
"NEW_CLUSTER_COORDINATES = (2,6) # Shown in blue; in software this is picked by user during Napari correction.\n",
|
|
182
|
+
"corrected_image = spot_image.copy()\n",
|
|
183
|
+
"corrected_image[NEW_CLUSTER_COORDINATES] = [0,0,255]\n",
|
|
184
|
+
"show_spots([spot_image, corrected_image])"
|
|
185
|
+
]
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"cell_type": "markdown",
|
|
189
|
+
"metadata": {},
|
|
190
|
+
"source": [
|
|
191
|
+
"### Using sklearn.NearestNeighbours to find spots in radius of new cluster"
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"cell_type": "code",
|
|
196
|
+
"execution_count": 121,
|
|
197
|
+
"metadata": {},
|
|
198
|
+
"outputs": [
|
|
199
|
+
{
|
|
200
|
+
"name": "stdout",
|
|
201
|
+
"output_type": "stream",
|
|
202
|
+
"text": [
|
|
203
|
+
"[array([ 4, 14, 21])]\n"
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"data": {
|
|
208
|
+
"image/png": "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",
|
|
209
|
+
"text/plain": [
|
|
210
|
+
"<Figure size 640x480 with 1 Axes>"
|
|
211
|
+
]
|
|
212
|
+
},
|
|
213
|
+
"metadata": {},
|
|
214
|
+
"output_type": "display_data"
|
|
215
|
+
}
|
|
216
|
+
],
|
|
217
|
+
"source": [
|
|
218
|
+
"NearestNeighbors_model = NearestNeighbors(radius=CLUSTER_RADIUS)\n",
|
|
219
|
+
"NearestNeighbors_model.fit(spots)\n",
|
|
220
|
+
"query = NearestNeighbors_model.radius_neighbors(np.array([NEW_CLUSTER_COORDINATES], dtype=int), return_distance=False)\n",
|
|
221
|
+
"neighbours = spots[query[0]]\n",
|
|
222
|
+
"indexer = tuple(list(\n",
|
|
223
|
+
" zip(*neighbours)\n",
|
|
224
|
+
"))\n",
|
|
225
|
+
"corrected_image[indexer] = [0,255,0]\n",
|
|
226
|
+
"show_spots(corrected_image)"
|
|
227
|
+
]
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"cell_type": "markdown",
|
|
231
|
+
"metadata": {},
|
|
232
|
+
"source": [
|
|
233
|
+
"## Changing weights so that 2nd round of DBSCAN add the new cluster and only that one."
|
|
234
|
+
]
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"cell_type": "code",
|
|
238
|
+
"execution_count": 108,
|
|
239
|
+
"metadata": {},
|
|
240
|
+
"outputs": [
|
|
241
|
+
{
|
|
242
|
+
"name": "stdout",
|
|
243
|
+
"output_type": "stream",
|
|
244
|
+
"text": [
|
|
245
|
+
"[1. 1. 1. 1. 1.33333333 1.\n",
|
|
246
|
+
" 1. 1. 1. 1. 1. 1.\n",
|
|
247
|
+
" 1. 1. 1.33333333 1. 1. 1.\n",
|
|
248
|
+
" 1. 1. 1. 1.33333333 1. 1.\n",
|
|
249
|
+
" 1. 1. 1. 1. 1. 1.\n",
|
|
250
|
+
" 1. 1. 1. 1. 1. 1.\n",
|
|
251
|
+
" 1. 1. 1. 1. ]\n"
|
|
252
|
+
]
|
|
253
|
+
}
|
|
254
|
+
],
|
|
255
|
+
"source": [
|
|
256
|
+
"weights = np.ones(len(spots), dtype=float) \n",
|
|
257
|
+
"number_in_radius = len(neighbours)\n",
|
|
258
|
+
"weights[query[0]] = MIN_SPOT/number_in_radius # >1\n",
|
|
259
|
+
"print(weights)"
|
|
260
|
+
]
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"cell_type": "code",
|
|
264
|
+
"execution_count": 114,
|
|
265
|
+
"metadata": {},
|
|
266
|
+
"outputs": [],
|
|
267
|
+
"source": [
|
|
268
|
+
"second_dbscan = DBSCAN(CLUSTER_RADIUS, min_samples=MIN_SPOT)\n",
|
|
269
|
+
"second_dbscan.fit(spots, sample_weight= weights)\n",
|
|
270
|
+
"spots_labels = second_dbscan.labels_.reshape(len(spots),1)\n",
|
|
271
|
+
"spots_second_clustering = np.concatenate([spots, spots_labels], axis=1)\n"
|
|
272
|
+
]
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"cell_type": "markdown",
|
|
276
|
+
"metadata": {},
|
|
277
|
+
"source": [
|
|
278
|
+
"### Visualisation with clustered spots in red"
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"cell_type": "code",
|
|
283
|
+
"execution_count": 117,
|
|
284
|
+
"metadata": {},
|
|
285
|
+
"outputs": [
|
|
286
|
+
{
|
|
287
|
+
"data": {
|
|
288
|
+
"image/png": "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",
|
|
289
|
+
"text/plain": [
|
|
290
|
+
"<Figure size 640x480 with 1 Axes>"
|
|
291
|
+
]
|
|
292
|
+
},
|
|
293
|
+
"metadata": {},
|
|
294
|
+
"output_type": "display_data"
|
|
295
|
+
}
|
|
296
|
+
],
|
|
297
|
+
"source": [
|
|
298
|
+
"clustered_spots_index = tuple(list(zip(*spots_second_clustering[:,:-1][spots_second_clustering[:,-1] != -1])))\n",
|
|
299
|
+
"corrected_image[clustered_spots_index] = [255,0,0]\n",
|
|
300
|
+
"show_spots(corrected_image)\n",
|
|
301
|
+
"\n",
|
|
302
|
+
"from bigfish.detection import cluster_detection"
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"cell_type": "markdown",
|
|
307
|
+
"metadata": {},
|
|
308
|
+
"source": [
|
|
309
|
+
"# Points layer feature and default features"
|
|
310
|
+
]
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"cell_type": "code",
|
|
314
|
+
"execution_count": 1,
|
|
315
|
+
"metadata": {},
|
|
316
|
+
"outputs": [],
|
|
317
|
+
"source": [
|
|
318
|
+
"import napari\n",
|
|
319
|
+
"import numpy as np"
|
|
320
|
+
]
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"cell_type": "markdown",
|
|
324
|
+
"metadata": {},
|
|
325
|
+
"source": [
|
|
326
|
+
"## Init spots"
|
|
327
|
+
]
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"cell_type": "code",
|
|
331
|
+
"execution_count": 6,
|
|
332
|
+
"metadata": {},
|
|
333
|
+
"outputs": [],
|
|
334
|
+
"source": [
|
|
335
|
+
"SEED = 1\n",
|
|
336
|
+
"random_generator = np.random.default_rng(seed=SEED)\n",
|
|
337
|
+
"\n",
|
|
338
|
+
"SHAPE = (100,100)\n",
|
|
339
|
+
"SPOTS_NUM = 600\n",
|
|
340
|
+
"CLUSTER_RADIUS = 2\n",
|
|
341
|
+
"MIN_SPOT = 4\n",
|
|
342
|
+
"\n",
|
|
343
|
+
"image = np.zeros(SHAPE + (3,), dtype=np.uint8)\n",
|
|
344
|
+
"spots = random_generator.integers([0]*len(SHAPE),SHAPE, (SPOTS_NUM,len(SHAPE)))\n",
|
|
345
|
+
"spots_id = np.arange(len(spots))\n"
|
|
346
|
+
]
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"cell_type": "markdown",
|
|
350
|
+
"metadata": {},
|
|
351
|
+
"source": [
|
|
352
|
+
"## Init Viewer"
|
|
353
|
+
]
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"cell_type": "code",
|
|
357
|
+
"execution_count": 13,
|
|
358
|
+
"metadata": {},
|
|
359
|
+
"outputs": [],
|
|
360
|
+
"source": [
|
|
361
|
+
"Viewer = napari.Viewer()\n",
|
|
362
|
+
"point_layer = Viewer.add_points(\n",
|
|
363
|
+
" spots,\n",
|
|
364
|
+
" size= 2,\n",
|
|
365
|
+
" features={\"id\" : spots_id},\n",
|
|
366
|
+
" feature_defaults={\"id\" : -1}\n",
|
|
367
|
+
")\n",
|
|
368
|
+
"napari.run()"
|
|
369
|
+
]
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"cell_type": "code",
|
|
373
|
+
"execution_count": 19,
|
|
374
|
+
"metadata": {},
|
|
375
|
+
"outputs": [
|
|
376
|
+
{
|
|
377
|
+
"data": {
|
|
378
|
+
"text/plain": [
|
|
379
|
+
"array([[47, 51, 0],\n",
|
|
380
|
+
" [75, 95, 1],\n",
|
|
381
|
+
" [ 3, 14, 2],\n",
|
|
382
|
+
" ...,\n",
|
|
383
|
+
" [27, 62, -1],\n",
|
|
384
|
+
" [28, 64, -1],\n",
|
|
385
|
+
" [30, 69, -1]])"
|
|
386
|
+
]
|
|
387
|
+
},
|
|
388
|
+
"execution_count": 19,
|
|
389
|
+
"metadata": {},
|
|
390
|
+
"output_type": "execute_result"
|
|
391
|
+
}
|
|
392
|
+
],
|
|
393
|
+
"source": [
|
|
394
|
+
"new_spots_ids = point_layer.features.to_numpy()\n",
|
|
395
|
+
"new_spots_coord = np.round(point_layer.data).astype(int)\n",
|
|
396
|
+
"new_spots = np.concatenate([new_spots_coord, new_spots_ids], axis=1)\n",
|
|
397
|
+
"new_spots "
|
|
398
|
+
]
|
|
399
|
+
}
|
|
400
|
+
],
|
|
401
|
+
"metadata": {
|
|
402
|
+
"kernelspec": {
|
|
403
|
+
"display_name": "cellpose",
|
|
404
|
+
"language": "python",
|
|
405
|
+
"name": "python3"
|
|
406
|
+
},
|
|
407
|
+
"language_info": {
|
|
408
|
+
"codemirror_mode": {
|
|
409
|
+
"name": "ipython",
|
|
410
|
+
"version": 3
|
|
411
|
+
},
|
|
412
|
+
"file_extension": ".py",
|
|
413
|
+
"mimetype": "text/x-python",
|
|
414
|
+
"name": "python",
|
|
415
|
+
"nbconvert_exporter": "python",
|
|
416
|
+
"pygments_lexer": "ipython3",
|
|
417
|
+
"version": "3.8.16"
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
"nbformat": 4,
|
|
421
|
+
"nbformat_minor": 2
|
|
422
|
+
}
|
|
@@ -12,6 +12,65 @@ def _cast_spot_to_tuple(spot) :
|
|
|
12
12
|
def _cast_spots_to_tuple(spots) :
|
|
13
13
|
return tuple(list(map(_cast_spot_to_tuple, spots)))
|
|
14
14
|
|
|
15
|
+
def write_list_of_results(
|
|
16
|
+
result_list : list,
|
|
17
|
+
path : str,
|
|
18
|
+
filename : str,
|
|
19
|
+
do_excel = True,
|
|
20
|
+
do_feather = False,
|
|
21
|
+
do_csv = False,
|
|
22
|
+
) :
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# FORMAT CHECKING
|
|
26
|
+
if len(result_list) == 0 : return True
|
|
27
|
+
if not do_excel and not do_feather and not do_csv :
|
|
28
|
+
return False
|
|
29
|
+
elif do_feather and not do_csv and not do_excel:
|
|
30
|
+
print("WARNING : cell_to_cell colocalisation : .feather is depreciated saving as csv instead.")
|
|
31
|
+
do_csv = True
|
|
32
|
+
elif do_feather :
|
|
33
|
+
print("WARNING : cell_to_cell colocalisation : .feather is depreciated will be removed in future version.")
|
|
34
|
+
|
|
35
|
+
#PATH CHECKING
|
|
36
|
+
if not path.endswith('/') : path +='/'
|
|
37
|
+
assert os.path.isdir(path)
|
|
38
|
+
|
|
39
|
+
#NO OVERWRITE CHECKING
|
|
40
|
+
new_filename = filename
|
|
41
|
+
|
|
42
|
+
i= 1
|
|
43
|
+
while new_filename + '.xlsx' in os.listdir(path) or new_filename + '.csv' in os.listdir(path) :
|
|
44
|
+
new_filename = filename + '_{0}'.format(i)
|
|
45
|
+
i+=1
|
|
46
|
+
|
|
47
|
+
if do_excel :
|
|
48
|
+
start_row = 0
|
|
49
|
+
sheet_number = 1
|
|
50
|
+
sheet_name = "Sheet" + str(sheet_number)
|
|
51
|
+
with pd.ExcelWriter(path + new_filename + '.xlsx', engine='openpyxl') as writer:
|
|
52
|
+
for df in result_list :
|
|
53
|
+
|
|
54
|
+
if start_row + len(df) > 1e6 : #Excel limit of 1 milion line.
|
|
55
|
+
print("To many excel lines, changing excel sheet.")
|
|
56
|
+
sheet_number += 1
|
|
57
|
+
sheet_name = "Sheet" + str(sheet_number)
|
|
58
|
+
start_row = 0
|
|
59
|
+
|
|
60
|
+
#writing
|
|
61
|
+
df.to_excel(writer, sheet_name=sheet_name, startrow=start_row)
|
|
62
|
+
start_row += len(df) + 5
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
if do_csv :
|
|
66
|
+
with open(path + new_filename + '.csv', 'w') as f:
|
|
67
|
+
for df in result_list :
|
|
68
|
+
df.to_csv(f)
|
|
69
|
+
f.write("\n\n") # Add 2 lines in between DataFrames.
|
|
70
|
+
|
|
71
|
+
return True
|
|
72
|
+
|
|
73
|
+
|
|
15
74
|
def write_results(dataframe: pd.DataFrame, path:str, filename:str, do_excel= True, do_feather= False, do_csv=False, overwrite=False, reset_index=True) :
|
|
16
75
|
check_parameter(dataframe= pd.DataFrame, path= str, filename = str, do_excel = bool, do_feather = bool)
|
|
17
76
|
|
|
@@ -33,7 +92,6 @@ def write_results(dataframe: pd.DataFrame, path:str, filename:str, do_excel= Tru
|
|
|
33
92
|
|
|
34
93
|
new_filename = filename
|
|
35
94
|
i= 1
|
|
36
|
-
|
|
37
95
|
if not overwrite :
|
|
38
96
|
while new_filename + '.xlsx' in os.listdir(path) or new_filename + '.parquet' in os.listdir(path) or new_filename + '.csv' in os.listdir(path) :
|
|
39
97
|
new_filename = filename + '_{0}'.format(i)
|