celldetective 1.2.2.post1__tar.gz → 1.2.2.post2__tar.gz
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.
- celldetective-1.2.2.post2/PKG-INFO +215 -0
- celldetective-1.2.2.post2/README.md +173 -0
- celldetective-1.2.2.post2/celldetective/__main__.py +40 -0
- celldetective-1.2.2.post1/celldetective/__main__.py → celldetective-1.2.2.post2/celldetective/gui/InitWindow.py +17 -59
- celldetective-1.2.2.post2/celldetective/gui/help/DL-segmentation-strategy.json +41 -0
- celldetective-1.2.2.post2/celldetective/gui/help/Threshold-vs-DL.json +26 -0
- celldetective-1.2.2.post2/celldetective/gui/help/cell-populations.json +11 -0
- celldetective-1.2.2.post2/celldetective/gui/help/exp-structure.json +36 -0
- celldetective-1.2.2.post2/celldetective/gui/help/feature-btrack.json +11 -0
- celldetective-1.2.2.post2/celldetective/gui/help/neighborhood.json +16 -0
- celldetective-1.2.2.post2/celldetective/gui/help/prefilter-for-segmentation.json +16 -0
- celldetective-1.2.2.post2/celldetective/gui/help/preprocessing.json +51 -0
- celldetective-1.2.2.post2/celldetective/gui/help/propagate-classification.json +16 -0
- celldetective-1.2.2.post2/celldetective/gui/help/track-postprocessing.json +46 -0
- celldetective-1.2.2.post2/celldetective/gui/help/tracking.json +11 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/io.py +60 -23
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/utils.py +5 -4
- celldetective-1.2.2.post2/celldetective.egg-info/PKG-INFO +215 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective.egg-info/SOURCES.txt +13 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective.egg-info/requires.txt +2 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/setup.py +2 -2
- celldetective-1.2.2.post2/tests/test_qt.py +101 -0
- celldetective-1.2.2.post1/PKG-INFO +0 -313
- celldetective-1.2.2.post1/README.md +0 -273
- celldetective-1.2.2.post1/celldetective.egg-info/PKG-INFO +0 -313
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/LICENSE +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/__init__.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/datasets/segmentation_annotations/blank +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/datasets/signal_annotations/blank +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/events.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/extra_properties.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/filters.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/__init__.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/about.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/analyze_block.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/btrack_options.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/classifier_widget.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/configure_new_exp.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/control_panel.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/generic_signal_plot.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/gui_utils.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/json_readers.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/layouts.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/measurement_options.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/neighborhood_options.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/plot_measurements.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/plot_signals_ui.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/process_block.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/retrain_segmentation_model_options.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/retrain_signal_model_options.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/seg_model_loader.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/signal_annotator.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/signal_annotator2.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/signal_annotator_options.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/styles.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/survival_ui.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/tableUI.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/thresholds_gui.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/gui/viewers.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/logo-large.png +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/logo.png +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/signals_icon.png +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/splash-test.png +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/splash.png +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/splash0.png +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/survival2.png +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/vignette_signals2.png +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/icons/vignette_signals2.svg +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/links/zenodo.json +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/measure.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/models/pair_signal_detection/blank +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/models/segmentation_effectors/blank +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/models/segmentation_generic/blank +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/models/segmentation_targets/blank +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/models/signal_detection/blank +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/models/tracking_configs/mcf7.json +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/models/tracking_configs/ricm.json +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/models/tracking_configs/ricm2.json +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/neighborhood.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/preprocessing.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/relative_measurements.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/scripts/analyze_signals.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/scripts/measure_cells.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/scripts/measure_relative.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/scripts/segment_cells.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/scripts/segment_cells_thresholds.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/scripts/track_cells.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/scripts/train_segmentation_model.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/scripts/train_signal_model.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/segmentation.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/signals.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective/tracking.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective.egg-info/dependency_links.txt +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective.egg-info/entry_points.txt +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective.egg-info/not-zip-safe +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/celldetective.egg-info/top_level.txt +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/setup.cfg +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/__init__.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_events.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_filters.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_io.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_measure.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_neighborhood.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_preprocessing.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_segmentation.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_signals.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_tracking.py +0 -0
- {celldetective-1.2.2.post1 → celldetective-1.2.2.post2}/tests/test_utils.py +0 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: celldetective
|
|
3
|
+
Version: 1.2.2.post2
|
|
4
|
+
Summary: description
|
|
5
|
+
Home-page: http://github.com/remyeltorro/celldetective
|
|
6
|
+
Author: Rémy Torro
|
|
7
|
+
Author-email: remy.torro@inserm.fr
|
|
8
|
+
License: GPL-3.0
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Dist: wheel
|
|
12
|
+
Requires-Dist: nbsphinx
|
|
13
|
+
Requires-Dist: nbsphinx_link
|
|
14
|
+
Requires-Dist: sphinx_rtd_theme
|
|
15
|
+
Requires-Dist: sphinx
|
|
16
|
+
Requires-Dist: jinja2
|
|
17
|
+
Requires-Dist: ipykernel
|
|
18
|
+
Requires-Dist: stardist
|
|
19
|
+
Requires-Dist: cellpose<3
|
|
20
|
+
Requires-Dist: scikit-learn
|
|
21
|
+
Requires-Dist: btrack
|
|
22
|
+
Requires-Dist: tensorflow~=2.15.0
|
|
23
|
+
Requires-Dist: napari
|
|
24
|
+
Requires-Dist: tqdm
|
|
25
|
+
Requires-Dist: mahotas
|
|
26
|
+
Requires-Dist: fonticon-materialdesignicons6
|
|
27
|
+
Requires-Dist: art
|
|
28
|
+
Requires-Dist: lifelines
|
|
29
|
+
Requires-Dist: setuptools
|
|
30
|
+
Requires-Dist: scipy
|
|
31
|
+
Requires-Dist: seaborn
|
|
32
|
+
Requires-Dist: opencv-python-headless==4.7.0.72
|
|
33
|
+
Requires-Dist: liblapack
|
|
34
|
+
Requires-Dist: gputools
|
|
35
|
+
Requires-Dist: lmfit
|
|
36
|
+
Requires-Dist: superqt[cmap]
|
|
37
|
+
Requires-Dist: setuptools
|
|
38
|
+
Requires-Dist: matplotlib_scalebar
|
|
39
|
+
Requires-Dist: numpy==1.26.4
|
|
40
|
+
Requires-Dist: pytest
|
|
41
|
+
Requires-Dist: pytest-qt
|
|
42
|
+
|
|
43
|
+
# Celldetective
|
|
44
|
+
|
|
45
|
+
<embed>
|
|
46
|
+
<p align="center">
|
|
47
|
+
<img src="https://github.com/remyeltorro/celldetective/blob/main/celldetective/icons/logo-large.png" width="33%" />
|
|
48
|
+
</p>
|
|
49
|
+
</embed>
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+

|
|
53
|
+

|
|
54
|
+

|
|
55
|
+

|
|
56
|
+

|
|
57
|
+

|
|
58
|
+

|
|
59
|
+

|
|
60
|
+
|
|
61
|
+
Celldetective is a python package and graphical user interface to perform single-cell
|
|
62
|
+
analysis on multimodal time lapse microscopy images.
|
|
63
|
+
|
|
64
|
+
- [Check the full documentation](https://celldetective.readthedocs.io)
|
|
65
|
+
- [Report a bug or request a new feature](https://github.com/remyeltorro/celldetective/issues/new/choose)
|
|
66
|
+
- [Explore the datasets, models and demos](https://zenodo.org/records/10650279)
|
|
67
|
+
|
|
68
|
+
## Overview
|
|
69
|
+
|
|
70
|
+

|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
Celldetective was designed to analyze time-lapse microscopy images in difficult situations: mixed cell populations that are only separable through multimodal information. This software provides a toolkit for the analysis of cell population interactions.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
**Key features**:
|
|
77
|
+
- Achieve single-cell description (segment / track / measure) for up to two populations of interest
|
|
78
|
+
- Signal annotation and traditional or Deep learning automation
|
|
79
|
+
- Mask annotation in napari[^5] and retraining of Deep learning models
|
|
80
|
+
- Neighborhood linking within and across populations and interaction annotations
|
|
81
|
+
- Everything is done graphically, no coding is required!
|
|
82
|
+
|
|
83
|
+
Check out the [highlights](https://celldetective.readthedocs.io/en/latest/overview.html#description) in the documentation!
|
|
84
|
+
|
|
85
|
+
Instead of reinventing the wheel and out of respect for the amazing work done by these teams, we chose to build around StarDist[^1] & Cellpose[^2][^3] (BSD-3 license) for the Deep-learning segmentation and the Bayesian tracker bTrack[^4] (MIT license) for tracking. If you use these models or methods in your Celldetective workflow, don't forget to cite the respective papers!
|
|
86
|
+
|
|
87
|
+
**Target Audience**: The software is targeted to scientists who are interested in quantifying dynamically (or not) cell populations from microscopy images. Experimental scientists who produce such images can also analyze their data, thanks to the graphical interface, that completely removes the need for coding, and the many helper functions that guide the user in the analysis steps. Finally, the modular structure of Celldetective welcomes users with a partial need.
|
|
88
|
+
|
|
89
|
+

|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# System requirements
|
|
93
|
+
|
|
94
|
+
## Hardware requirements
|
|
95
|
+
|
|
96
|
+
The software was tested on several machines, including:
|
|
97
|
+
|
|
98
|
+
- An Intel(R) Core(TM) i9-10850K CPU @ 3.60GHz, with a single NVIDIA
|
|
99
|
+
GeForce RTX 3070 (8 Gb of memory) and 16 Gb of memory
|
|
100
|
+
- An Intel(R) Core(TM) i7-9750H CPU @ 2.60 GHz, with 16 Gb of memory
|
|
101
|
+
|
|
102
|
+
In GPU mode, succesive segmentation and DL signal analysis could be
|
|
103
|
+
performed without saturating the GPU memory thanks to the subprocess
|
|
104
|
+
formulation for the different modules. The GPU can be disabled in the
|
|
105
|
+
startup window. The software does not require a GPU (but model inference
|
|
106
|
+
will be longer).
|
|
107
|
+
|
|
108
|
+
A typical analysis of a single movie with a GPU takes
|
|
109
|
+
between 3 to 15 minutes. Depending on the number of cells and frames on
|
|
110
|
+
the images, this computation time can increase to the order of half an
|
|
111
|
+
hour on a CPU.
|
|
112
|
+
|
|
113
|
+
Processing is performed frame by frame, therefore the memory requirement is extremely low. The main bottleneck is in the visualization of segmentation and tracking output. Whole stacks (typically 1-9 Gb) have to be loaded in memory at once to be viewed in napari.
|
|
114
|
+
|
|
115
|
+
## Software requirements
|
|
116
|
+
|
|
117
|
+
The software was developed simulateously on Ubuntu 20.04 and Windows 11.
|
|
118
|
+
It was tested on MacOS, but Tensorflow installation can require extra
|
|
119
|
+
steps.
|
|
120
|
+
|
|
121
|
+
- Linux: Ubuntu 20.04.6 LTS (Focal Fossa)
|
|
122
|
+
- Windows: Windows 11 Home 23H2
|
|
123
|
+
|
|
124
|
+
To use the software, you must install python, *e.g.* through
|
|
125
|
+
[Anaconda](https://www.anaconda.com/download). Celldetective is routinely tested on both Ubuntu and Windows for Python versions 3.9, 3.10 and 3.11.
|
|
126
|
+
|
|
127
|
+
# Installation
|
|
128
|
+
|
|
129
|
+
## Stable release
|
|
130
|
+
|
|
131
|
+
Celldetective requires a version of Python between 3.9 and 3.11 (included). If your Python version is older or more recent, consider using `conda` to create an environment as described below.
|
|
132
|
+
|
|
133
|
+
With the proper Python version, Celldetective can be directly installed with `pip`:
|
|
134
|
+
|
|
135
|
+
``` bash
|
|
136
|
+
pip install celldetective
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
We recommend that you create an environment to use Celldetective, to protect your package versions and fix the Python version *e.g.*
|
|
140
|
+
with `conda`:
|
|
141
|
+
|
|
142
|
+
``` bash
|
|
143
|
+
conda create -n celldetective python=3.11 pyqt
|
|
144
|
+
conda activate celldetective
|
|
145
|
+
pip install celldetective
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Need an update? Simply type the following in the terminal (in your
|
|
149
|
+
environment):
|
|
150
|
+
|
|
151
|
+
``` bash
|
|
152
|
+
pip install --upgrade celldetective
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
For more installation options, please check the [documentation](https://celldetective.readthedocs.io/en/latest/get-started.html#installation).
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
# Quick start
|
|
159
|
+
|
|
160
|
+
You can launch the GUI by 1) opening a terminal and 2) typing the
|
|
161
|
+
following:
|
|
162
|
+
|
|
163
|
+
``` bash
|
|
164
|
+
# conda activate celldetective
|
|
165
|
+
python -m celldetective
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
For more information about how to get started, please check the [documentation](https://celldetective.readthedocs.io/en/latest/get-started.html#launching-the-gui).
|
|
169
|
+
|
|
170
|
+
# How to cite?
|
|
171
|
+
|
|
172
|
+
If you use this software in your research, please cite the
|
|
173
|
+
[Celldetective](https://www.biorxiv.org/content/10.1101/2024.03.15.585250v1)
|
|
174
|
+
paper (currently preprint):
|
|
175
|
+
|
|
176
|
+
``` raw
|
|
177
|
+
@article {Torro2024.03.15.585250,
|
|
178
|
+
author = {R{\'e}my Torro and Beatriz D{\`\i}az-Bello and Dalia El Arawi and Lorna Ammer and Patrick Chames and Kheya Sengupta and Laurent Limozin},
|
|
179
|
+
title = {Celldetective: an AI-enhanced image analysis tool for unraveling dynamic cell interactions},
|
|
180
|
+
elocation-id = {2024.03.15.585250},
|
|
181
|
+
year = {2024},
|
|
182
|
+
doi = {10.1101/2024.03.15.585250},
|
|
183
|
+
publisher = {Cold Spring Harbor Laboratory},
|
|
184
|
+
abstract = {A current key challenge in bioimaging is the analysis of multimodal and multidimensional data reporting dynamic interactions between diverse cell populations. We developed Celldetective, a software that integrates AI-based segmentation and tracking algorithms and automated signal analysis into a user-friendly graphical interface. It offers complete interactive visualization, annotation, and training capabilities. We demonstrate it by analyzing original experimental data of spreading immune effector cells as well as antibody-dependent cell cytotoxicity events using multimodal fluorescence microscopy.Competing Interest StatementThe authors have declared no competing interest.},
|
|
185
|
+
URL = {https://www.biorxiv.org/content/early/2024/03/17/2024.03.15.585250},
|
|
186
|
+
eprint = {https://www.biorxiv.org/content/early/2024/03/17/2024.03.15.585250.full.pdf},
|
|
187
|
+
journal = {bioRxiv}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Make sure you to cite the papers of any segmentation model (StarDist,
|
|
192
|
+
Cellpose) or tracker (bTrack) you used through Celldetective.
|
|
193
|
+
|
|
194
|
+
# Bibliography
|
|
195
|
+
|
|
196
|
+
[^1]: Schmidt, U., Weigert, M., Broaddus, C. & Myers, G. Cell Detection
|
|
197
|
+
with Star-Convex Polygons. in Medical Image Computing and Computer
|
|
198
|
+
Assisted Intervention -- MICCAI 2018 (eds. Frangi, A. F., Schnabel,
|
|
199
|
+
J. A., Davatzikos, C., Alberola-López, C. & Fichtinger, G.) 265--273
|
|
200
|
+
(Springer International Publishing, Cham, 2018).
|
|
201
|
+
<doi:10.1007/978-3-030-00934-2_30>.
|
|
202
|
+
|
|
203
|
+
[^2]: Stringer, C., Wang, T., Michaelos, M. & Pachitariu, M. Cellpose: a
|
|
204
|
+
generalist algorithm for cellular segmentation. Nat Methods 18,
|
|
205
|
+
100--106 (2021).
|
|
206
|
+
|
|
207
|
+
[^3]: Pachitariu, M. & Stringer, C. Cellpose 2.0: how to train your own
|
|
208
|
+
model. Nat Methods 19, 1634--1641 (2022).
|
|
209
|
+
|
|
210
|
+
[^4]: Ulicna, K., Vallardi, G., Charras, G. & Lowe, A. R. Automated Deep
|
|
211
|
+
Lineage Tree Analysis Using a Bayesian Single Cell Tracking
|
|
212
|
+
Approach. Frontiers in Computer Science 3, (2021).
|
|
213
|
+
|
|
214
|
+
[^5]: Ahlers, J. et al. napari: a multi-dimensional image viewer for
|
|
215
|
+
Python. Zenodo <https://doi.org/10.5281/zenodo.8115575> (2023).
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Celldetective
|
|
2
|
+
|
|
3
|
+
<embed>
|
|
4
|
+
<p align="center">
|
|
5
|
+
<img src="https://github.com/remyeltorro/celldetective/blob/main/celldetective/icons/logo-large.png" width="33%" />
|
|
6
|
+
</p>
|
|
7
|
+
</embed>
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+

|
|
11
|
+

|
|
12
|
+

|
|
13
|
+

|
|
14
|
+

|
|
15
|
+

|
|
16
|
+

|
|
17
|
+

|
|
18
|
+
|
|
19
|
+
Celldetective is a python package and graphical user interface to perform single-cell
|
|
20
|
+
analysis on multimodal time lapse microscopy images.
|
|
21
|
+
|
|
22
|
+
- [Check the full documentation](https://celldetective.readthedocs.io)
|
|
23
|
+
- [Report a bug or request a new feature](https://github.com/remyeltorro/celldetective/issues/new/choose)
|
|
24
|
+
- [Explore the datasets, models and demos](https://zenodo.org/records/10650279)
|
|
25
|
+
|
|
26
|
+
## Overview
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
Celldetective was designed to analyze time-lapse microscopy images in difficult situations: mixed cell populations that are only separable through multimodal information. This software provides a toolkit for the analysis of cell population interactions.
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
**Key features**:
|
|
35
|
+
- Achieve single-cell description (segment / track / measure) for up to two populations of interest
|
|
36
|
+
- Signal annotation and traditional or Deep learning automation
|
|
37
|
+
- Mask annotation in napari[^5] and retraining of Deep learning models
|
|
38
|
+
- Neighborhood linking within and across populations and interaction annotations
|
|
39
|
+
- Everything is done graphically, no coding is required!
|
|
40
|
+
|
|
41
|
+
Check out the [highlights](https://celldetective.readthedocs.io/en/latest/overview.html#description) in the documentation!
|
|
42
|
+
|
|
43
|
+
Instead of reinventing the wheel and out of respect for the amazing work done by these teams, we chose to build around StarDist[^1] & Cellpose[^2][^3] (BSD-3 license) for the Deep-learning segmentation and the Bayesian tracker bTrack[^4] (MIT license) for tracking. If you use these models or methods in your Celldetective workflow, don't forget to cite the respective papers!
|
|
44
|
+
|
|
45
|
+
**Target Audience**: The software is targeted to scientists who are interested in quantifying dynamically (or not) cell populations from microscopy images. Experimental scientists who produce such images can also analyze their data, thanks to the graphical interface, that completely removes the need for coding, and the many helper functions that guide the user in the analysis steps. Finally, the modular structure of Celldetective welcomes users with a partial need.
|
|
46
|
+
|
|
47
|
+

|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# System requirements
|
|
51
|
+
|
|
52
|
+
## Hardware requirements
|
|
53
|
+
|
|
54
|
+
The software was tested on several machines, including:
|
|
55
|
+
|
|
56
|
+
- An Intel(R) Core(TM) i9-10850K CPU @ 3.60GHz, with a single NVIDIA
|
|
57
|
+
GeForce RTX 3070 (8 Gb of memory) and 16 Gb of memory
|
|
58
|
+
- An Intel(R) Core(TM) i7-9750H CPU @ 2.60 GHz, with 16 Gb of memory
|
|
59
|
+
|
|
60
|
+
In GPU mode, succesive segmentation and DL signal analysis could be
|
|
61
|
+
performed without saturating the GPU memory thanks to the subprocess
|
|
62
|
+
formulation for the different modules. The GPU can be disabled in the
|
|
63
|
+
startup window. The software does not require a GPU (but model inference
|
|
64
|
+
will be longer).
|
|
65
|
+
|
|
66
|
+
A typical analysis of a single movie with a GPU takes
|
|
67
|
+
between 3 to 15 minutes. Depending on the number of cells and frames on
|
|
68
|
+
the images, this computation time can increase to the order of half an
|
|
69
|
+
hour on a CPU.
|
|
70
|
+
|
|
71
|
+
Processing is performed frame by frame, therefore the memory requirement is extremely low. The main bottleneck is in the visualization of segmentation and tracking output. Whole stacks (typically 1-9 Gb) have to be loaded in memory at once to be viewed in napari.
|
|
72
|
+
|
|
73
|
+
## Software requirements
|
|
74
|
+
|
|
75
|
+
The software was developed simulateously on Ubuntu 20.04 and Windows 11.
|
|
76
|
+
It was tested on MacOS, but Tensorflow installation can require extra
|
|
77
|
+
steps.
|
|
78
|
+
|
|
79
|
+
- Linux: Ubuntu 20.04.6 LTS (Focal Fossa)
|
|
80
|
+
- Windows: Windows 11 Home 23H2
|
|
81
|
+
|
|
82
|
+
To use the software, you must install python, *e.g.* through
|
|
83
|
+
[Anaconda](https://www.anaconda.com/download). Celldetective is routinely tested on both Ubuntu and Windows for Python versions 3.9, 3.10 and 3.11.
|
|
84
|
+
|
|
85
|
+
# Installation
|
|
86
|
+
|
|
87
|
+
## Stable release
|
|
88
|
+
|
|
89
|
+
Celldetective requires a version of Python between 3.9 and 3.11 (included). If your Python version is older or more recent, consider using `conda` to create an environment as described below.
|
|
90
|
+
|
|
91
|
+
With the proper Python version, Celldetective can be directly installed with `pip`:
|
|
92
|
+
|
|
93
|
+
``` bash
|
|
94
|
+
pip install celldetective
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
We recommend that you create an environment to use Celldetective, to protect your package versions and fix the Python version *e.g.*
|
|
98
|
+
with `conda`:
|
|
99
|
+
|
|
100
|
+
``` bash
|
|
101
|
+
conda create -n celldetective python=3.11 pyqt
|
|
102
|
+
conda activate celldetective
|
|
103
|
+
pip install celldetective
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Need an update? Simply type the following in the terminal (in your
|
|
107
|
+
environment):
|
|
108
|
+
|
|
109
|
+
``` bash
|
|
110
|
+
pip install --upgrade celldetective
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
For more installation options, please check the [documentation](https://celldetective.readthedocs.io/en/latest/get-started.html#installation).
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
# Quick start
|
|
117
|
+
|
|
118
|
+
You can launch the GUI by 1) opening a terminal and 2) typing the
|
|
119
|
+
following:
|
|
120
|
+
|
|
121
|
+
``` bash
|
|
122
|
+
# conda activate celldetective
|
|
123
|
+
python -m celldetective
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
For more information about how to get started, please check the [documentation](https://celldetective.readthedocs.io/en/latest/get-started.html#launching-the-gui).
|
|
127
|
+
|
|
128
|
+
# How to cite?
|
|
129
|
+
|
|
130
|
+
If you use this software in your research, please cite the
|
|
131
|
+
[Celldetective](https://www.biorxiv.org/content/10.1101/2024.03.15.585250v1)
|
|
132
|
+
paper (currently preprint):
|
|
133
|
+
|
|
134
|
+
``` raw
|
|
135
|
+
@article {Torro2024.03.15.585250,
|
|
136
|
+
author = {R{\'e}my Torro and Beatriz D{\`\i}az-Bello and Dalia El Arawi and Lorna Ammer and Patrick Chames and Kheya Sengupta and Laurent Limozin},
|
|
137
|
+
title = {Celldetective: an AI-enhanced image analysis tool for unraveling dynamic cell interactions},
|
|
138
|
+
elocation-id = {2024.03.15.585250},
|
|
139
|
+
year = {2024},
|
|
140
|
+
doi = {10.1101/2024.03.15.585250},
|
|
141
|
+
publisher = {Cold Spring Harbor Laboratory},
|
|
142
|
+
abstract = {A current key challenge in bioimaging is the analysis of multimodal and multidimensional data reporting dynamic interactions between diverse cell populations. We developed Celldetective, a software that integrates AI-based segmentation and tracking algorithms and automated signal analysis into a user-friendly graphical interface. It offers complete interactive visualization, annotation, and training capabilities. We demonstrate it by analyzing original experimental data of spreading immune effector cells as well as antibody-dependent cell cytotoxicity events using multimodal fluorescence microscopy.Competing Interest StatementThe authors have declared no competing interest.},
|
|
143
|
+
URL = {https://www.biorxiv.org/content/early/2024/03/17/2024.03.15.585250},
|
|
144
|
+
eprint = {https://www.biorxiv.org/content/early/2024/03/17/2024.03.15.585250.full.pdf},
|
|
145
|
+
journal = {bioRxiv}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Make sure you to cite the papers of any segmentation model (StarDist,
|
|
150
|
+
Cellpose) or tracker (bTrack) you used through Celldetective.
|
|
151
|
+
|
|
152
|
+
# Bibliography
|
|
153
|
+
|
|
154
|
+
[^1]: Schmidt, U., Weigert, M., Broaddus, C. & Myers, G. Cell Detection
|
|
155
|
+
with Star-Convex Polygons. in Medical Image Computing and Computer
|
|
156
|
+
Assisted Intervention -- MICCAI 2018 (eds. Frangi, A. F., Schnabel,
|
|
157
|
+
J. A., Davatzikos, C., Alberola-López, C. & Fichtinger, G.) 265--273
|
|
158
|
+
(Springer International Publishing, Cham, 2018).
|
|
159
|
+
<doi:10.1007/978-3-030-00934-2_30>.
|
|
160
|
+
|
|
161
|
+
[^2]: Stringer, C., Wang, T., Michaelos, M. & Pachitariu, M. Cellpose: a
|
|
162
|
+
generalist algorithm for cellular segmentation. Nat Methods 18,
|
|
163
|
+
100--106 (2021).
|
|
164
|
+
|
|
165
|
+
[^3]: Pachitariu, M. & Stringer, C. Cellpose 2.0: how to train your own
|
|
166
|
+
model. Nat Methods 19, 1634--1641 (2022).
|
|
167
|
+
|
|
168
|
+
[^4]: Ulicna, K., Vallardi, G., Charras, G. & Lowe, A. R. Automated Deep
|
|
169
|
+
Lineage Tree Analysis Using a Bayesian Single Cell Tracking
|
|
170
|
+
Approach. Frontiers in Computer Science 3, (2021).
|
|
171
|
+
|
|
172
|
+
[^5]: Ahlers, J. et al. napari: a multi-dimensional image viewer for
|
|
173
|
+
Python. Zenodo <https://doi.org/10.5281/zenodo.8115575> (2023).
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
import sys
|
|
3
|
+
from PyQt5.QtWidgets import QApplication, QSplashScreen
|
|
4
|
+
from PyQt5.QtGui import QPixmap
|
|
5
|
+
from os import sep
|
|
6
|
+
from celldetective.utils import get_software_location
|
|
7
|
+
from time import time, sleep
|
|
8
|
+
#os.environ['QT_DEBUG_PLUGINS'] = '1'
|
|
9
|
+
|
|
10
|
+
if __name__ == "__main__":
|
|
11
|
+
|
|
12
|
+
splash=True
|
|
13
|
+
print('Loading the libraries...')
|
|
14
|
+
|
|
15
|
+
App = QApplication(sys.argv)
|
|
16
|
+
App.setStyle("Fusion")
|
|
17
|
+
|
|
18
|
+
if splash:
|
|
19
|
+
start = time()
|
|
20
|
+
splash_pix = QPixmap(sep.join([get_software_location(),'celldetective','icons','splash.png']))
|
|
21
|
+
splash = QSplashScreen(splash_pix)
|
|
22
|
+
splash.setMask(splash_pix.mask())
|
|
23
|
+
splash.show()
|
|
24
|
+
#App.processEvents(QEventLoop.AllEvents, 300)
|
|
25
|
+
while time() - start < 1:
|
|
26
|
+
sleep(0.001)
|
|
27
|
+
App.processEvents()
|
|
28
|
+
|
|
29
|
+
from PyQt5.QtWidgets import QFileDialog, QWidget, QVBoxLayout, QCheckBox, QHBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox, QMenu, QAction
|
|
30
|
+
from PyQt5.QtGui import QIcon, QDesktopServices, QIntValidator
|
|
31
|
+
from celldetective.gui.InitWindow import AppInitWindow
|
|
32
|
+
|
|
33
|
+
print('Libraries successfully loaded...')
|
|
34
|
+
|
|
35
|
+
window = AppInitWindow(App)
|
|
36
|
+
|
|
37
|
+
if splash:
|
|
38
|
+
splash.finish(window)
|
|
39
|
+
|
|
40
|
+
sys.exit(App.exec())
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
import sys
|
|
3
|
-
from PyQt5.QtWidgets import QApplication, QSplashScreen, QMainWindow
|
|
4
|
-
from PyQt5.QtGui import QPixmap
|
|
5
|
-
from os import sep
|
|
1
|
+
from PyQt5.QtWidgets import QApplication, QMainWindow
|
|
6
2
|
from celldetective.utils import get_software_location
|
|
7
|
-
#from PyQt5.QtCore import QEventLoop
|
|
8
|
-
from time import time, sleep
|
|
9
3
|
import os
|
|
10
|
-
|
|
4
|
+
from PyQt5.QtWidgets import QFileDialog, QWidget, QVBoxLayout, QCheckBox, QHBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox, QMenu, QAction
|
|
5
|
+
from PyQt5.QtCore import Qt, QUrl
|
|
6
|
+
from PyQt5.QtGui import QIcon, QDesktopServices, QIntValidator
|
|
7
|
+
from glob import glob
|
|
8
|
+
from superqt.fonticon import icon
|
|
9
|
+
from fonticon_mdi6 import MDI6
|
|
10
|
+
import gc
|
|
11
|
+
from celldetective.gui import Styles, ControlPanel, ConfigNewExperiment
|
|
12
|
+
from celldetective.gui.gui_utils import center_window
|
|
13
|
+
import subprocess
|
|
14
|
+
import os
|
|
15
|
+
from celldetective.gui.about import AboutWidget
|
|
16
|
+
from celldetective.io import correct_annotation
|
|
17
|
+
import psutil
|
|
18
|
+
import subprocess
|
|
19
|
+
import json
|
|
11
20
|
|
|
12
21
|
class AppInitWindow(QMainWindow):
|
|
13
22
|
|
|
@@ -389,54 +398,3 @@ class AppInitWindow(QMainWindow):
|
|
|
389
398
|
if returnValue == QMessageBox.Ok:
|
|
390
399
|
self.experiment_path_selection.setText('')
|
|
391
400
|
return None
|
|
392
|
-
|
|
393
|
-
if __name__ == "__main__":
|
|
394
|
-
|
|
395
|
-
# import ctypes
|
|
396
|
-
# myappid = 'mycompany.myproduct.subproduct.version' # arbitrary string
|
|
397
|
-
# ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)
|
|
398
|
-
splash=True
|
|
399
|
-
print('Loading the libraries...')
|
|
400
|
-
|
|
401
|
-
App = QApplication(sys.argv)
|
|
402
|
-
#App.setWindowIcon(QIcon(os.sep.join([get_software_location(),'celldetective','icons','mexican-hat.png'])))
|
|
403
|
-
App.setStyle("Fusion")
|
|
404
|
-
|
|
405
|
-
if splash:
|
|
406
|
-
start = time()
|
|
407
|
-
splash_pix = QPixmap(sep.join([get_software_location(),'celldetective','icons','splash.png']))
|
|
408
|
-
splash = QSplashScreen(splash_pix)
|
|
409
|
-
splash.setMask(splash_pix.mask())
|
|
410
|
-
splash.show()
|
|
411
|
-
#App.processEvents(QEventLoop.AllEvents, 300)
|
|
412
|
-
while time() - start < 1:
|
|
413
|
-
sleep(0.001)
|
|
414
|
-
App.processEvents()
|
|
415
|
-
|
|
416
|
-
from PyQt5.QtWidgets import QFileDialog, QWidget, QVBoxLayout, QCheckBox, QHBoxLayout, QLabel, QLineEdit, QPushButton, QMessageBox, QMenu, QAction
|
|
417
|
-
from PyQt5.QtCore import Qt, QUrl
|
|
418
|
-
from PyQt5.QtGui import QIcon, QDesktopServices, QIntValidator
|
|
419
|
-
from glob import glob
|
|
420
|
-
from superqt.fonticon import icon
|
|
421
|
-
from fonticon_mdi6 import MDI6
|
|
422
|
-
import gc
|
|
423
|
-
from celldetective.gui import Styles, ControlPanel, ConfigNewExperiment
|
|
424
|
-
from celldetective.gui.gui_utils import center_window
|
|
425
|
-
import subprocess
|
|
426
|
-
import os
|
|
427
|
-
from celldetective.gui.about import AboutWidget
|
|
428
|
-
from celldetective.io import correct_annotation
|
|
429
|
-
import psutil
|
|
430
|
-
import subprocess
|
|
431
|
-
import json
|
|
432
|
-
# import matplotlib
|
|
433
|
-
# matplotlib.rcParams.update({'font.size': 8})
|
|
434
|
-
|
|
435
|
-
print('Libraries successfully loaded...')
|
|
436
|
-
|
|
437
|
-
window = AppInitWindow(App)
|
|
438
|
-
|
|
439
|
-
if splash:
|
|
440
|
-
splash.finish(window)
|
|
441
|
-
|
|
442
|
-
sys.exit(App.exec())
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Blob-like cell": {
|
|
3
|
+
"yes": {
|
|
4
|
+
"Fluorescence image": {
|
|
5
|
+
"yes": {
|
|
6
|
+
"Mixture of population": {
|
|
7
|
+
"yes": "train custom StarDist model",
|
|
8
|
+
"no": {
|
|
9
|
+
"Cells can be identified from a single channel": {
|
|
10
|
+
"yes": "Use StarDist versatile fluorescence",
|
|
11
|
+
"no" : "train custom StarDist model"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"no": "train custom StarDist model"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"no": {
|
|
20
|
+
"Mixture of population": {
|
|
21
|
+
"yes": "train custom cellpose model",
|
|
22
|
+
"no": {
|
|
23
|
+
"Heterogeneity in cell sizes": {
|
|
24
|
+
"yes": "train custom cellpose model",
|
|
25
|
+
"no": {
|
|
26
|
+
"Cells can be identified from at most 2-channels (one cyto-like and one nucleus-like)": {
|
|
27
|
+
"yes": {
|
|
28
|
+
"cyto-like channel is brightfield": {
|
|
29
|
+
"yes": "cellpose livecell",
|
|
30
|
+
"no" : "cellpose cyto3"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"no": "train custom cellpose model"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Cell masks can be extracted from a single channel": {
|
|
3
|
+
"yes": {
|
|
4
|
+
"Rare cell-cell contacts": {
|
|
5
|
+
"yes": {
|
|
6
|
+
"Non-cell objects easily separable": {
|
|
7
|
+
"yes": {
|
|
8
|
+
"Background heterogeneities": {
|
|
9
|
+
"yes": {
|
|
10
|
+
"Correction possible": {
|
|
11
|
+
"yes": "Threshold pipeline",
|
|
12
|
+
"no" : "DL"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"no": "Threshold pipeline"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"no": "DL"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"no": "DL"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"no": "DL"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Do you have more than one cell population of interest in the images?": {
|
|
3
|
+
"yes": {
|
|
4
|
+
"Do you have more than two cell populations of interest?": {
|
|
5
|
+
"yes": "The study of interactions between more than two cell populations is not currently supported in celldetective. Either study the cell populations two-by-two or group several populations into one (e.g. all effector-like cells vs all target-like cells). You can use the classification tools of celldetective to decompose the responses per cell population at a later stage.",
|
|
6
|
+
"no": "Identify the effector-like population (effects some changes on the other population) and the target-like population. If this characterization is ill-defined, choose a convention and stick to it. Beware, the available non-generalist Deep-learning models differ slightly for the two populations."
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
"no": "Pass your cell population as either EFFECTORS or TARGETS and stick with the convention. Beware, the available non-generalist Deep-learning model differs slightly for the two populations."
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Did you test different biological conditions?": {
|
|
3
|
+
"yes": {
|
|
4
|
+
"Did you image several positions (tiles) per biological condition?": {
|
|
5
|
+
"yes": {
|
|
6
|
+
"Did you record a time-lapse?": {
|
|
7
|
+
"yes": "Set N wells for the N biological conditions. Set M positions per well. Put the respective time-lapse stack in each generated position folder.",
|
|
8
|
+
"no": "Set N wells for the N biological conditions. Set a single position per well. Assemble all the tiles into a single stack per condition."
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"no": {
|
|
12
|
+
"Did you record a time-lapse?": {
|
|
13
|
+
"yes": "Set N wells for the N biological conditions. Set a single position per well. Put the respective time-lapse stack in each generated position folder.",
|
|
14
|
+
"no": "There is not enough data to create a valid stack. Consider merging different experiments to generate several positions."
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"no": {
|
|
20
|
+
"Did you image several positions (tiles)?": {
|
|
21
|
+
"yes": {
|
|
22
|
+
"Did you record a time-lapse?": {
|
|
23
|
+
"yes": "Set a single well. Set N positions. Put the respective time-lapse stack in each generated position folder.",
|
|
24
|
+
"no": "Set a single well. Set a single position. Assemble all the tiles into a single stack and put it in this position folder."
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"no": {
|
|
28
|
+
"Did you record a time-lapse?": {
|
|
29
|
+
"yes": "Set a single well and a single position. Put the time-lapse stack in the generated position folder.",
|
|
30
|
+
"no": "There is not enough data to create a valid stack. Consider merging different experiments to generate several positions."
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Are morphological, tonal or textural features critical to follow the cells of interest?": {
|
|
3
|
+
"yes": {
|
|
4
|
+
"Are the values of these features constant or slowly changing?": {
|
|
5
|
+
"yes": "You may pass features to bTrack. Both motion and feature information will be combined to perform tracking.",
|
|
6
|
+
"no": "Abrupt transitions in the features may perturb bTrack's performance and truncate trajectories prematurely. Avoid passing features. "
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
"no": "No need to pass features. The tracking will rely exclusively on the cell positions. Skip this step."
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Do you want to relate target and effector populations?": {
|
|
3
|
+
"yes": {
|
|
4
|
+
"Do you have the complete cell shape for both populations of interest?": {
|
|
5
|
+
"yes": "You may compute a mask-contact neighborhood. Set the reference and neighbor populations. Use the tolerance parameter to be more or less sensitive about the reference-cell / neighbor-cell contact.",
|
|
6
|
+
"no": "You may use an isotropic distance threshold. Set the reference and neighbor populations. Use a radius r > (R_ref + 1/2 * R_neigh) with R_ref the average reference cell radius and R_neigh the average neighbor cell radius."
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
"no": {
|
|
10
|
+
"Do you have the complete cell shape for the population of interest?": {
|
|
11
|
+
"yes": "You may compute a mask-contact neighborhood. Set the same reference and neighbor population. Use the tolerance parameter to be more or less sensitive about the cell-cell contact.",
|
|
12
|
+
"no": "You may use an isotropic distance threshold. Set the same reference and neighbor population. Use a radius r > 1.5*R with R the average cell radius."
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|