From 204370a2e4769482feec2de28f8be7eb67554c08 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Mon, 26 Aug 2024 13:17:58 +0200 Subject: [PATCH 1/5] added notebook for batch analysis --- .../demo_analyze_everything_batch.ipynb | 1312 +++++++++++++++++ 1 file changed, 1312 insertions(+) create mode 100644 docs/01_code_usage/01_toolboxes/demo_analyze_everything_batch.ipynb diff --git a/docs/01_code_usage/01_toolboxes/demo_analyze_everything_batch.ipynb b/docs/01_code_usage/01_toolboxes/demo_analyze_everything_batch.ipynb new file mode 100644 index 00000000..acac2c4f --- /dev/null +++ b/docs/01_code_usage/01_toolboxes/demo_analyze_everything_batch.ipynb @@ -0,0 +1,1312 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "75bf2599-5a29-4dfc-b0b0-7cecc3c7ab33", + "metadata": {}, + "source": [ + "(toolboxes:analyze_everything)=\n", + "# Analyze everything\n", + "\n", + "This notebook demonstrates how to run a complete STRESS analysis in a batched way. This requires you to assemble a list of complete filenames and then submit all of them for processing. It is strongly required to do this on a sufficiently powerful processing PC.\n", + "\n", + "## Additional dependencies\n", + "\n", + "In case you want to work with proprietory file formats (e.g., czi, nd2, etc), you'll need to install some packages that can handle them. As a one-fits-all solution, install the bioio package. To find out exactly what extension of bioio you need, [check the documentation](https://pypi.org/project/bioio/). For instance, for working with czi images you'll need these dependencies:\n", + "\n", + "```bash\n", + "pip install bioio bioio-czi\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "92cdbcda-ad6d-4048-a1eb-f2a452969326", + "metadata": {}, + "outputs": [], + "source": [ + "import napari\n", + "import numpy as np\n", + "from napari_stress import reconstruction, measurements, TimelapseConverter, utils, stress_backend\n", + "import os\n", + "from pathlib import Path\n", + "import datetime\n", + "from bioio import BioImage\n", + "\n", + "from dask.distributed import Client, get_client\n", + "\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "from skimage import io\n", + "import napari_vedo_bridge as nvb" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e440ed15-c9bd-454f-8583-2aaa071142bb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Assistant skips harvesting pyclesperanto as it's not installed.\n" + ] + } + ], + "source": [ + "viewer = napari.Viewer(ndisplay=3)" + ] + }, + { + "cell_type": "markdown", + "id": "c5fa4385", + "metadata": {}, + "source": [ + "## Set up parallelization\n", + "\n", + "IT's important to set this up beforehand. The process may require a lot of memory - and if you don't set it here, napari-stress will set it for you, which may not be suitable for the load we will be working with in this usecase." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "11e4c0cb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Link to progress dashboard: http://127.0.0.1:8787/status\n" + ] + } + ], + "source": [ + "try:\n", + " client = get_client()\n", + "except Exception:\n", + " client = Client(n_workers=8, memory_limit='32GB')\n", + "print('Link to progress dashboard: ', client.dashboard_link)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "87a6fa3c-9eae-48cd-8eca-52dd0cbaed49", + "metadata": {}, + "source": [ + "## Collect data to be analyzed\n", + "\n", + "The easiest way to find samples in a given root folder is to use `os.walk`. In essence, it recursively walks all subdirectories of a given folder, which allows you to look for files that are matching a specific pattern:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "09557687", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + " | path | \n", + "pixel_size_z | \n", + "pixel_size_y | \n", + "pixel_size_x | \n", + "
---|---|---|---|---|
0 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.37 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
1 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.38 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
2 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.38 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
3 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.38 | \n", + "0.094164 | \n", + "0.094164 | \n", + "
4 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.38 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
5 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.38 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
6 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.38 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
7 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.38 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
8 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.38 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
9 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.37 | \n", + "0.090070 | \n", + "0.090070 | \n", + "
10 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
11 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.37 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
12 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E8.... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
13 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
14 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
15 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
16 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
17 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
18 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
19 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
20 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.129475 | \n", + "0.129475 | \n", + "
21 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
22 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
23 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.38 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
24 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.37 | \n", + "0.147972 | \n", + "0.147972 | \n", + "
25 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.37 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
26 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.37 | \n", + "0.138107 | \n", + "0.138107 | \n", + "
27 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.37 | \n", + "0.172634 | \n", + "0.172634 | \n", + "
28 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.37 | \n", + "0.138107 | \n", + "0.138107 | \n", + "
29 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.37 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
30 | \n", + "D:\\Marc\\Marc_mouse_embryo_droplets_Aug2024\\E9.... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
31 | \n", + "D:\\Marc\\Marc_genistein_droplets_Aug2024\\F1G4 d... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
32 | \n", + "D:\\Marc\\Marc_genistein_droplets_Aug2024\\F1G4 d... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
33 | \n", + "D:\\Marc\\Marc_genistein_droplets_Aug2024\\F1G4 d... | \n", + "0.37 | \n", + "0.094164 | \n", + "0.094164 | \n", + "
34 | \n", + "D:\\Marc\\Marc_genistein_droplets_Aug2024\\GFP-NL... | \n", + "0.40 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
35 | \n", + "D:\\Marc\\Marc_genistein_droplets_Aug2024\\GFP-NL... | \n", + "0.40 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
36 | \n", + "D:\\Marc\\Marc_genistein_droplets_Aug2024\\GFP-NL... | \n", + "0.40 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
37 | \n", + "D:\\Marc\\Marc_genistein_droplets_Aug2024\\GFP-NL... | \n", + "0.40 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
38 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.48 | \n", + "0.079677 | \n", + "0.079677 | \n", + "
39 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
40 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
41 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.094164 | \n", + "0.094164 | \n", + "
42 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
43 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.109032 | \n", + "0.109032 | \n", + "
44 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.115089 | \n", + "0.115089 | \n", + "
45 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
46 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
47 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
48 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\F1G4... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
49 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
50 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
51 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
52 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
53 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
54 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
55 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
56 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
57 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
58 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
59 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.073986 | \n", + "0.073986 | \n", + "
60 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.094164 | \n", + "0.094164 | \n", + "
61 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.37 | \n", + "0.073986 | \n", + "0.073986 | \n", + "
62 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
63 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.103580 | \n", + "0.103580 | \n", + "
64 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.073986 | \n", + "0.073986 | \n", + "
65 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
66 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
67 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
68 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.082864 | \n", + "0.082864 | \n", + "
69 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.076726 | \n", + "0.076726 | \n", + "
70 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
71 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
72 | \n", + "D:\\Marc\\Marc_mouse_timepoint_data_Aug2024\\GFP-... | \n", + "0.40 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
73 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.073986 | \n", + "0.073986 | \n", + "
74 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
75 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.073986 | \n", + "0.073986 | \n", + "
76 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
77 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
78 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
79 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.076726 | \n", + "0.076726 | \n", + "
80 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
81 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
82 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\48h ... | \n", + "0.37 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
83 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\60h ... | \n", + "0.66 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
84 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\60h ... | \n", + "0.66 | \n", + "0.069054 | \n", + "0.069054 | \n", + "
85 | \n", + "D:\\Marc\\Marc_human_timepoint_data_Aug2024\\60h ... | \n", + "0.66 | \n", + "0.069054 | \n", + "0.069054 | \n", + "