celldetective 1.3.9.post3__tar.gz → 1.5.0b3__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.
Files changed (273) hide show
  1. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/PKG-INFO +24 -16
  2. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/README.md +17 -14
  3. celldetective-1.5.0b3/celldetective/__init__.py +26 -0
  4. celldetective-1.5.0b3/celldetective/__main__.py +85 -0
  5. celldetective-1.5.0b3/celldetective/_version.py +1 -0
  6. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/events.py +2 -4
  7. celldetective-1.5.0b3/celldetective/exceptions.py +11 -0
  8. celldetective-1.5.0b3/celldetective/extra_properties.py +647 -0
  9. celldetective-1.5.0b3/celldetective/filters.py +250 -0
  10. celldetective-1.5.0b3/celldetective/gui/InitWindow.py +594 -0
  11. {celldetective-1.3.9.post3/tests → celldetective-1.5.0b3/celldetective/gui}/__init__.py +0 -0
  12. celldetective-1.5.0b3/celldetective/gui/about.py +53 -0
  13. celldetective-1.5.0b3/celldetective/gui/analyze_block.py +132 -0
  14. celldetective-1.5.0b3/celldetective/gui/base/channel_norm_generator.py +335 -0
  15. celldetective-1.5.0b3/celldetective/gui/base/components.py +270 -0
  16. celldetective-1.5.0b3/celldetective/gui/base/feature_choice.py +92 -0
  17. celldetective-1.5.0b3/celldetective/gui/base/figure_canvas.py +52 -0
  18. celldetective-1.5.0b3/celldetective/gui/base/list_widget.py +133 -0
  19. {celldetective-1.3.9.post3/celldetective/gui → celldetective-1.5.0b3/celldetective/gui/base}/styles.py +92 -35
  20. celldetective-1.5.0b3/celldetective/gui/base/utils.py +33 -0
  21. celldetective-1.5.0b3/celldetective/gui/base_annotator.py +930 -0
  22. celldetective-1.5.0b3/celldetective/gui/classifier_widget.py +656 -0
  23. celldetective-1.5.0b3/celldetective/gui/configure_new_exp.py +798 -0
  24. celldetective-1.5.0b3/celldetective/gui/control_panel.py +655 -0
  25. celldetective-1.5.0b3/celldetective/gui/dynamic_progress.py +449 -0
  26. celldetective-1.5.0b3/celldetective/gui/event_annotator.py +1037 -0
  27. celldetective-1.5.0b3/celldetective/gui/generic_signal_plot.py +1316 -0
  28. celldetective-1.5.0b3/celldetective/gui/gui_utils.py +992 -0
  29. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/neighborhood.json +2 -2
  30. celldetective-1.5.0b3/celldetective/gui/interactions_block.py +688 -0
  31. celldetective-1.5.0b3/celldetective/gui/interactive_timeseries_viewer.py +457 -0
  32. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/json_readers.py +51 -17
  33. celldetective-1.5.0b3/celldetective/gui/layouts/__init__.py +5 -0
  34. celldetective-1.5.0b3/celldetective/gui/layouts/background_model_free_layout.py +537 -0
  35. celldetective-1.5.0b3/celldetective/gui/layouts/channel_offset_layout.py +134 -0
  36. celldetective-1.5.0b3/celldetective/gui/layouts/local_correction_layout.py +91 -0
  37. celldetective-1.5.0b3/celldetective/gui/layouts/model_fit_layout.py +372 -0
  38. celldetective-1.5.0b3/celldetective/gui/layouts/operation_layout.py +68 -0
  39. celldetective-1.5.0b3/celldetective/gui/layouts/protocol_designer_layout.py +96 -0
  40. celldetective-1.5.0b3/celldetective/gui/measure_annotator.py +1064 -0
  41. celldetective-1.5.0b3/celldetective/gui/pair_event_annotator.py +3151 -0
  42. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/plot_measurements.py +602 -281
  43. celldetective-1.5.0b3/celldetective/gui/plot_signals_ui.py +744 -0
  44. celldetective-1.5.0b3/celldetective/gui/preprocessing_block.py +395 -0
  45. celldetective-1.5.0b3/celldetective/gui/process_block.py +1921 -0
  46. celldetective-1.5.0b3/celldetective/gui/seg_model_loader.py +592 -0
  47. celldetective-1.5.0b3/celldetective/gui/settings/_cellpose_model_params.py +181 -0
  48. celldetective-1.5.0b3/celldetective/gui/settings/_event_detection_model_params.py +95 -0
  49. celldetective-1.5.0b3/celldetective/gui/settings/_segmentation_model_params.py +159 -0
  50. celldetective-1.5.0b3/celldetective/gui/settings/_settings_base.py +82 -0
  51. celldetective-1.5.0b3/celldetective/gui/settings/_settings_event_model_training.py +770 -0
  52. celldetective-1.5.0b3/celldetective/gui/settings/_settings_measurements.py +1158 -0
  53. celldetective-1.5.0b3/celldetective/gui/settings/_settings_neighborhood.py +585 -0
  54. celldetective-1.5.0b3/celldetective/gui/settings/_settings_segmentation.py +49 -0
  55. celldetective-1.5.0b3/celldetective/gui/settings/_settings_segmentation_model_training.py +795 -0
  56. celldetective-1.5.0b3/celldetective/gui/settings/_settings_signal_annotator.py +343 -0
  57. celldetective-1.5.0b3/celldetective/gui/settings/_settings_tracking.py +1333 -0
  58. celldetective-1.5.0b3/celldetective/gui/settings/_stardist_model_params.py +98 -0
  59. celldetective-1.5.0b3/celldetective/gui/survival_ui.py +439 -0
  60. celldetective-1.5.0b3/celldetective/gui/tableUI.py +1706 -0
  61. celldetective-1.5.0b3/celldetective/gui/table_ops/_maths.py +295 -0
  62. celldetective-1.5.0b3/celldetective/gui/table_ops/_merge_groups.py +140 -0
  63. celldetective-1.5.0b3/celldetective/gui/table_ops/_merge_one_hot.py +95 -0
  64. celldetective-1.5.0b3/celldetective/gui/table_ops/_query_table.py +43 -0
  65. celldetective-1.5.0b3/celldetective/gui/table_ops/_rename_col.py +44 -0
  66. celldetective-1.5.0b3/celldetective/gui/thresholds_gui.py +917 -0
  67. celldetective-1.5.0b3/celldetective/gui/viewers/base_viewer.py +831 -0
  68. celldetective-1.5.0b3/celldetective/gui/viewers/channel_offset_viewer.py +331 -0
  69. celldetective-1.5.0b3/celldetective/gui/viewers/contour_viewer.py +394 -0
  70. celldetective-1.5.0b3/celldetective/gui/viewers/size_viewer.py +153 -0
  71. celldetective-1.5.0b3/celldetective/gui/viewers/spot_detection_viewer.py +341 -0
  72. celldetective-1.5.0b3/celldetective/gui/viewers/threshold_viewer.py +309 -0
  73. celldetective-1.5.0b3/celldetective/gui/workers.py +432 -0
  74. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/links/zenodo.json +145 -144
  75. celldetective-1.5.0b3/celldetective/log_manager.py +92 -0
  76. celldetective-1.5.0b3/celldetective/measure.py +1924 -0
  77. celldetective-1.5.0b3/celldetective/models/segmentation_effectors/blank +0 -0
  78. celldetective-1.5.0b3/celldetective/models/segmentation_generic/blank +0 -0
  79. celldetective-1.5.0b3/celldetective/models/segmentation_targets/blank +0 -0
  80. celldetective-1.5.0b3/celldetective/models/signal_detection/blank +0 -0
  81. celldetective-1.5.0b3/celldetective/napari/__init__.py +0 -0
  82. celldetective-1.5.0b3/celldetective/napari/utils.py +1035 -0
  83. celldetective-1.5.0b3/celldetective/neighborhood.py +1949 -0
  84. celldetective-1.5.0b3/celldetective/preprocessing.py +1643 -0
  85. celldetective-1.5.0b3/celldetective/processes/__init__.py +0 -0
  86. celldetective-1.5.0b3/celldetective/processes/background_correction.py +271 -0
  87. celldetective-1.5.0b3/celldetective/processes/compute_neighborhood.py +894 -0
  88. celldetective-1.5.0b3/celldetective/processes/detect_events.py +246 -0
  89. celldetective-1.5.0b3/celldetective/processes/downloader.py +137 -0
  90. celldetective-1.5.0b3/celldetective/processes/load_table.py +55 -0
  91. celldetective-1.5.0b3/celldetective/processes/measure_cells.py +591 -0
  92. celldetective-1.5.0b3/celldetective/processes/segment_cells.py +760 -0
  93. celldetective-1.5.0b3/celldetective/processes/track_cells.py +435 -0
  94. celldetective-1.5.0b3/celldetective/processes/train_segmentation_model.py +694 -0
  95. celldetective-1.5.0b3/celldetective/processes/train_signal_model.py +265 -0
  96. celldetective-1.5.0b3/celldetective/processes/unified_process.py +292 -0
  97. celldetective-1.5.0b3/celldetective/regionprops/_regionprops.py +378 -0
  98. celldetective-1.5.0b3/celldetective/relative_measurements.py +1061 -0
  99. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/scripts/analyze_signals.py +4 -1
  100. celldetective-1.5.0b3/celldetective/scripts/measure_cells.py +418 -0
  101. celldetective-1.5.0b3/celldetective/scripts/measure_relative.py +136 -0
  102. celldetective-1.5.0b3/celldetective/scripts/segment_cells.py +252 -0
  103. celldetective-1.5.0b3/celldetective/scripts/segment_cells_thresholds.py +174 -0
  104. celldetective-1.5.0b3/celldetective/scripts/track_cells.py +306 -0
  105. celldetective-1.5.0b3/celldetective/scripts/train_segmentation_model.py +375 -0
  106. celldetective-1.5.0b3/celldetective/scripts/train_signal_model.py +121 -0
  107. celldetective-1.5.0b3/celldetective/segmentation.py +873 -0
  108. celldetective-1.5.0b3/celldetective/signals.py +3599 -0
  109. celldetective-1.5.0b3/celldetective/tracking.py +1380 -0
  110. celldetective-1.5.0b3/celldetective/utils/__init__.py +0 -0
  111. celldetective-1.5.0b3/celldetective/utils/cellpose_utils/__init__.py +133 -0
  112. celldetective-1.5.0b3/celldetective/utils/color_mappings.py +42 -0
  113. celldetective-1.5.0b3/celldetective/utils/data_cleaning.py +630 -0
  114. celldetective-1.5.0b3/celldetective/utils/data_loaders.py +470 -0
  115. celldetective-1.5.0b3/celldetective/utils/dataset_helpers.py +207 -0
  116. celldetective-1.5.0b3/celldetective/utils/downloaders.py +235 -0
  117. celldetective-1.5.0b3/celldetective/utils/event_detection/__init__.py +8 -0
  118. celldetective-1.5.0b3/celldetective/utils/experiment.py +1782 -0
  119. celldetective-1.5.0b3/celldetective/utils/image_augmenters.py +308 -0
  120. celldetective-1.5.0b3/celldetective/utils/image_cleaning.py +74 -0
  121. celldetective-1.5.0b3/celldetective/utils/image_loaders.py +929 -0
  122. celldetective-1.5.0b3/celldetective/utils/image_transforms.py +335 -0
  123. celldetective-1.5.0b3/celldetective/utils/io.py +62 -0
  124. celldetective-1.5.0b3/celldetective/utils/mask_cleaning.py +348 -0
  125. celldetective-1.5.0b3/celldetective/utils/mask_transforms.py +5 -0
  126. celldetective-1.5.0b3/celldetective/utils/masks.py +184 -0
  127. celldetective-1.5.0b3/celldetective/utils/maths.py +364 -0
  128. celldetective-1.5.0b3/celldetective/utils/model_getters.py +325 -0
  129. celldetective-1.5.0b3/celldetective/utils/model_loaders.py +296 -0
  130. celldetective-1.5.0b3/celldetective/utils/normalization.py +380 -0
  131. celldetective-1.5.0b3/celldetective/utils/parsing.py +465 -0
  132. celldetective-1.5.0b3/celldetective/utils/plots/__init__.py +0 -0
  133. celldetective-1.5.0b3/celldetective/utils/plots/regression.py +53 -0
  134. celldetective-1.5.0b3/celldetective/utils/resources.py +34 -0
  135. celldetective-1.5.0b3/celldetective/utils/stardist_utils/__init__.py +104 -0
  136. celldetective-1.5.0b3/celldetective/utils/stats.py +90 -0
  137. celldetective-1.5.0b3/celldetective/utils/types.py +21 -0
  138. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective.egg-info/PKG-INFO +24 -16
  139. celldetective-1.5.0b3/celldetective.egg-info/SOURCES.txt +194 -0
  140. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective.egg-info/requires.txt +4 -0
  141. celldetective-1.5.0b3/setup.py +74 -0
  142. celldetective-1.5.0b3/tests/__init__.py +0 -0
  143. celldetective-1.5.0b3/tests/gui/__init__.py +0 -0
  144. celldetective-1.5.0b3/tests/gui/test_enhancements.py +351 -0
  145. celldetective-1.5.0b3/tests/gui/test_new_project.py +240 -0
  146. celldetective-1.5.0b3/tests/gui/test_project.py +147 -0
  147. celldetective-1.5.0b3/tests/test_filters.py +48 -0
  148. celldetective-1.5.0b3/tests/test_notebooks.py +9 -0
  149. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/tests/test_preprocessing.py +2 -2
  150. celldetective-1.5.0b3/tests/test_tracking.py +445 -0
  151. celldetective-1.5.0b3/tests/test_utils.py +164 -0
  152. celldetective-1.3.9.post3/celldetective/__init__.py +0 -4
  153. celldetective-1.3.9.post3/celldetective/__main__.py +0 -66
  154. celldetective-1.3.9.post3/celldetective/_version.py +0 -1
  155. celldetective-1.3.9.post3/celldetective/extra_properties.py +0 -273
  156. celldetective-1.3.9.post3/celldetective/filters.py +0 -149
  157. celldetective-1.3.9.post3/celldetective/gui/InitWindow.py +0 -434
  158. celldetective-1.3.9.post3/celldetective/gui/__init__.py +0 -21
  159. celldetective-1.3.9.post3/celldetective/gui/about.py +0 -44
  160. celldetective-1.3.9.post3/celldetective/gui/analyze_block.py +0 -81
  161. celldetective-1.3.9.post3/celldetective/gui/btrack_options.py +0 -1154
  162. celldetective-1.3.9.post3/celldetective/gui/classifier_widget.py +0 -572
  163. celldetective-1.3.9.post3/celldetective/gui/configure_new_exp.py +0 -575
  164. celldetective-1.3.9.post3/celldetective/gui/control_panel.py +0 -609
  165. celldetective-1.3.9.post3/celldetective/gui/generic_signal_plot.py +0 -970
  166. celldetective-1.3.9.post3/celldetective/gui/gui_utils.py +0 -1342
  167. celldetective-1.3.9.post3/celldetective/gui/layouts.py +0 -1368
  168. celldetective-1.3.9.post3/celldetective/gui/measurement_options.py +0 -1027
  169. celldetective-1.3.9.post3/celldetective/gui/neighborhood_options.py +0 -502
  170. celldetective-1.3.9.post3/celldetective/gui/plot_signals_ui.py +0 -471
  171. celldetective-1.3.9.post3/celldetective/gui/process_block.py +0 -1753
  172. celldetective-1.3.9.post3/celldetective/gui/processes/downloader.py +0 -108
  173. celldetective-1.3.9.post3/celldetective/gui/processes/measure_cells.py +0 -349
  174. celldetective-1.3.9.post3/celldetective/gui/processes/segment_cells.py +0 -354
  175. celldetective-1.3.9.post3/celldetective/gui/processes/track_cells.py +0 -298
  176. celldetective-1.3.9.post3/celldetective/gui/processes/train_segmentation_model.py +0 -270
  177. celldetective-1.3.9.post3/celldetective/gui/processes/train_signal_model.py +0 -108
  178. celldetective-1.3.9.post3/celldetective/gui/retrain_segmentation_model_options.py +0 -634
  179. celldetective-1.3.9.post3/celldetective/gui/retrain_signal_model_options.py +0 -599
  180. celldetective-1.3.9.post3/celldetective/gui/seg_model_loader.py +0 -526
  181. celldetective-1.3.9.post3/celldetective/gui/signal_annotator.py +0 -2582
  182. celldetective-1.3.9.post3/celldetective/gui/signal_annotator2.py +0 -2658
  183. celldetective-1.3.9.post3/celldetective/gui/signal_annotator_options.py +0 -344
  184. celldetective-1.3.9.post3/celldetective/gui/survival_ui.py +0 -375
  185. celldetective-1.3.9.post3/celldetective/gui/tableUI.py +0 -1713
  186. celldetective-1.3.9.post3/celldetective/gui/thresholds_gui.py +0 -1318
  187. celldetective-1.3.9.post3/celldetective/gui/viewers.py +0 -1289
  188. celldetective-1.3.9.post3/celldetective/gui/workers.py +0 -136
  189. celldetective-1.3.9.post3/celldetective/io.py +0 -3574
  190. celldetective-1.3.9.post3/celldetective/measure.py +0 -1463
  191. celldetective-1.3.9.post3/celldetective/models/segmentation_effectors/ricm_bf_all_last/config_input.json +0 -79
  192. celldetective-1.3.9.post3/celldetective/models/segmentation_effectors/ricm_bf_all_last/ricm_bf_all_last +0 -0
  193. celldetective-1.3.9.post3/celldetective/models/segmentation_effectors/ricm_bf_all_last/training_instructions.json +0 -37
  194. celldetective-1.3.9.post3/celldetective/models/segmentation_effectors/test-transfer/config_input.json +0 -39
  195. celldetective-1.3.9.post3/celldetective/models/segmentation_effectors/test-transfer/test-transfer +0 -0
  196. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/classification_loss.png +0 -0
  197. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/classifier.h5 +0 -0
  198. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/config_input.json +0 -1
  199. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/log_classifier.csv +0 -126
  200. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/log_regressor.csv +0 -282
  201. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/regression_loss.png +0 -0
  202. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/regressor.h5 +0 -0
  203. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/scores.npy +0 -0
  204. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/test_confusion_matrix.png +0 -0
  205. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/test_regression.png +0 -0
  206. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/validation_confusion_matrix.png +0 -0
  207. celldetective-1.3.9.post3/celldetective/models/signal_detection/NucCond/validation_regression.png +0 -0
  208. celldetective-1.3.9.post3/celldetective/neighborhood.py +0 -1409
  209. celldetective-1.3.9.post3/celldetective/preprocessing.py +0 -1222
  210. celldetective-1.3.9.post3/celldetective/regionprops/_regionprops.py +0 -319
  211. celldetective-1.3.9.post3/celldetective/relative_measurements.py +0 -763
  212. celldetective-1.3.9.post3/celldetective/scripts/measure_cells.py +0 -317
  213. celldetective-1.3.9.post3/celldetective/scripts/measure_relative.py +0 -84
  214. celldetective-1.3.9.post3/celldetective/scripts/segment_cells.py +0 -197
  215. celldetective-1.3.9.post3/celldetective/scripts/segment_cells_thresholds.py +0 -146
  216. celldetective-1.3.9.post3/celldetective/scripts/track_cells.py +0 -255
  217. celldetective-1.3.9.post3/celldetective/scripts/train_segmentation_model.py +0 -240
  218. celldetective-1.3.9.post3/celldetective/scripts/train_signal_model.py +0 -79
  219. celldetective-1.3.9.post3/celldetective/segmentation.py +0 -778
  220. celldetective-1.3.9.post3/celldetective/signals.py +0 -2931
  221. celldetective-1.3.9.post3/celldetective/tracking.py +0 -1039
  222. celldetective-1.3.9.post3/celldetective/utils.py +0 -3080
  223. celldetective-1.3.9.post3/celldetective.egg-info/SOURCES.txt +0 -133
  224. celldetective-1.3.9.post3/setup.py +0 -51
  225. celldetective-1.3.9.post3/tests/test_filters.py +0 -24
  226. celldetective-1.3.9.post3/tests/test_qt.py +0 -103
  227. celldetective-1.3.9.post3/tests/test_tracking.py +0 -164
  228. celldetective-1.3.9.post3/tests/test_utils.py +0 -118
  229. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/LICENSE +0 -0
  230. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/datasets/segmentation_annotations/blank +0 -0
  231. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/datasets/signal_annotations/blank +0 -0
  232. /celldetective-1.3.9.post3/celldetective/models/pair_signal_detection/blank → /celldetective-1.5.0b3/celldetective/gui/base/__init__.py +0 -0
  233. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/DL-segmentation-strategy.json +0 -0
  234. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/Threshold-vs-DL.json +0 -0
  235. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/cell-populations.json +0 -0
  236. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/exp-structure.json +0 -0
  237. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/feature-btrack.json +0 -0
  238. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/prefilter-for-segmentation.json +0 -0
  239. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/preprocessing.json +0 -0
  240. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/propagate-classification.json +0 -0
  241. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/track-postprocessing.json +0 -0
  242. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/gui/help/tracking.json +0 -0
  243. /celldetective-1.3.9.post3/celldetective/models/segmentation_effectors/blank → /celldetective-1.5.0b3/celldetective/gui/settings/__init__.py +0 -0
  244. /celldetective-1.3.9.post3/celldetective/models/segmentation_generic/blank → /celldetective-1.5.0b3/celldetective/gui/table_ops/__init__.py +0 -0
  245. /celldetective-1.3.9.post3/celldetective/models/segmentation_targets/blank → /celldetective-1.5.0b3/celldetective/gui/viewers/__init__.py +0 -0
  246. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/logo-large.png +0 -0
  247. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/logo.png +0 -0
  248. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/signals_icon.png +0 -0
  249. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/splash-test.png +0 -0
  250. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/splash.png +0 -0
  251. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/splash0.png +0 -0
  252. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/survival2.png +0 -0
  253. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/vignette_signals2.png +0 -0
  254. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/icons/vignette_signals2.svg +0 -0
  255. {celldetective-1.3.9.post3/celldetective/models/signal_detection → celldetective-1.5.0b3/celldetective/models/pair_signal_detection}/blank +0 -0
  256. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/models/tracking_configs/biased_motion.json +0 -0
  257. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/models/tracking_configs/mcf7.json +0 -0
  258. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/models/tracking_configs/no_z_motion.json +0 -0
  259. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/models/tracking_configs/ricm.json +0 -0
  260. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/models/tracking_configs/ricm2.json +0 -0
  261. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/regionprops/__init__.py +0 -0
  262. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective/regionprops/props.json +0 -0
  263. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective.egg-info/dependency_links.txt +0 -0
  264. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective.egg-info/entry_points.txt +0 -0
  265. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective.egg-info/not-zip-safe +0 -0
  266. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/celldetective.egg-info/top_level.txt +0 -0
  267. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/setup.cfg +0 -0
  268. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/tests/test_events.py +0 -0
  269. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/tests/test_io.py +0 -0
  270. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/tests/test_measure.py +0 -0
  271. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/tests/test_neighborhood.py +0 -0
  272. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/tests/test_segmentation.py +0 -0
  273. {celldetective-1.3.9.post3 → celldetective-1.5.0b3}/tests/test_signals.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: celldetective
3
- Version: 1.3.9.post3
3
+ Version: 1.5.0b3
4
4
  Summary: description
5
5
  Home-page: http://github.com/remyeltorro/celldetective
6
6
  Author: Rémy Torro
@@ -44,12 +44,17 @@ Requires-Dist: h5py
44
44
  Requires-Dist: cliffs_delta
45
45
  Requires-Dist: requests
46
46
  Requires-Dist: trackpy
47
+ Requires-Dist: prettyprint
48
+ Requires-Dist: pandas
49
+ Requires-Dist: matplotlib
50
+ Requires-Dist: prettytable
47
51
  Dynamic: author
48
52
  Dynamic: author-email
49
53
  Dynamic: description
50
54
  Dynamic: description-content-type
51
55
  Dynamic: home-page
52
56
  Dynamic: license
57
+ Dynamic: license-file
53
58
  Dynamic: requires-dist
54
59
  Dynamic: summary
55
60
 
@@ -183,26 +188,29 @@ For more information about how to get started, please check the [documentation](
183
188
  # How to cite?
184
189
 
185
190
  If you use this software in your research, please cite the
186
- [Celldetective](https://www.biorxiv.org/content/10.1101/2024.03.15.585250v3)
187
- paper (currently preprint):
191
+ [Celldetective](https://elifesciences.org/reviewed-preprints/105302)
192
+ paper (currently a reviewed preprint at eLife):
188
193
 
189
194
  ``` raw
190
- @article {Torro2024.03.15.585250,
191
- author = {Torro, R{\'e}my and D{\'\i}az-Bello, Beatriz and Arawi, Dalia El and Dervanova, Ksenija and Ammer, Lorna and Dupuy, Florian and Chames, Patrick and Sengupta, Kheya and Limozin, Laurent},
192
- title = {Celldetective: an AI-enhanced image analysis tool for unraveling dynamic cell interactions},
193
- elocation-id = {2024.03.15.585250},
194
- year = {2024},
195
- doi = {10.1101/2024.03.15.585250},
196
- publisher = {Cold Spring Harbor Laboratory},
197
- abstract = {A current challenge in bioimaging for immunology and immunotherapy research lies in analyzing multimodal and multidimensional data that capture dynamic interactions between diverse cell populations. Here, we introduce Celldetective, an open-source Python-based software designed for high-performance, end-to-end analysis of image-based in vitro immune and immunotherapy assays. Purpose-built for multicondition, 2D multichannel time-lapse microscopy of mixed cell populations, Celldetective is optimized for the needs of immunology assays. The software seamlessly integrates AI-based segmentation, Bayesian tracking, and automated single-cell event detection, all within an intuitive graphical interface that supports interactive visualization, annotation, and training capabilities. We demonstrate its utility with original data on immune effector cell interactions with an activating surface, mediated by bispecific antibodies, and further showcase its potential for analyzing extensive sets of pairwise interactions in antibody-dependent cell cytotoxicity events.Competing Interest StatementThe authors have declared no competing interest.},
198
- URL = {https://www.biorxiv.org/content/early/2024/11/13/2024.03.15.585250},
199
- eprint = {https://www.biorxiv.org/content/early/2024/11/13/2024.03.15.585250.full.pdf},
200
- journal = {bioRxiv}
195
+ @article{torroCelldetectiveAIenhancedImage2025,
196
+ title = {Celldetective: An {{AI-enhanced}} Image Analysis Tool for Unraveling Dynamic Cell Interactions},
197
+ shorttitle = {Celldetective},
198
+ author = {Torro, Rémy and Díaz-Bello, Beatriz and Arawi, Dalia El and Dervanova, Ksenija and Ammer, Lorna and Dupuy, Florian and Chames, Patrick and Sengupta, Kheya and Limozin, Laurent},
199
+ date = {2025-03-10},
200
+ journaltitle = {eLife},
201
+ volume = {14},
202
+ publisher = {eLife Sciences Publications Limited},
203
+ doi = {10.7554/eLife.105302.1},
204
+ url = {https://elifesciences.org/reviewed-preprints/105302},
205
+ urldate = {2025-03-20},
206
+ abstract = {A current challenge in bioimaging for immunology and immunotherapy research lies in analyzing multimodal and multidimensional data that capture dynamic interactions between diverse cell populations. Here, we introduce Celldetective, an open-source Python-based software designed for high-performance, end-to-end analysis of image-based in vitro immune and immunotherapy assays. Purpose-built for multicondition, 2D multichannel time-lapse microscopy of mixed cell populations, Celldetective is optimized for the needs of immunology assays. The software seamlessly integrates AI-based segmentation, Bayesian tracking, and automated single-cell event detection, all within an intuitive graphical interface that supports interactive visualization, annotation, and training capabilities. We demonstrate its utility with original data on immune effector cell interactions with an activating surface, mediated by bispecific antibodies, and further showcase its potential for analyzing extensive sets of pairwise interactions in antibody-dependent cell cytotoxicity events.},
207
+ langid = {english},
208
+ file = {/home/torro/Zotero/storage/VFYBBMQF/Torro et al. - 2025 - Celldetective an AI-enhanced image analysis tool .pdf;/home/torro/Zotero/storage/UGMCKKST/105302.html}
201
209
  }
202
210
  ```
203
211
 
204
212
  Make sure you to cite the papers of any segmentation model (StarDist,
205
- Cellpose) or tracker (bTrack) you used through Celldetective.
213
+ Cellpose) or tracker (bTrack, TrackPy) you used through Celldetective.
206
214
 
207
215
  # Bibliography
208
216
 
@@ -128,26 +128,29 @@ For more information about how to get started, please check the [documentation](
128
128
  # How to cite?
129
129
 
130
130
  If you use this software in your research, please cite the
131
- [Celldetective](https://www.biorxiv.org/content/10.1101/2024.03.15.585250v3)
132
- paper (currently preprint):
131
+ [Celldetective](https://elifesciences.org/reviewed-preprints/105302)
132
+ paper (currently a reviewed preprint at eLife):
133
133
 
134
134
  ``` raw
135
- @article {Torro2024.03.15.585250,
136
- author = {Torro, R{\'e}my and D{\'\i}az-Bello, Beatriz and Arawi, Dalia El and Dervanova, Ksenija and Ammer, Lorna and Dupuy, Florian and Chames, Patrick and Sengupta, Kheya and Limozin, Laurent},
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 challenge in bioimaging for immunology and immunotherapy research lies in analyzing multimodal and multidimensional data that capture dynamic interactions between diverse cell populations. Here, we introduce Celldetective, an open-source Python-based software designed for high-performance, end-to-end analysis of image-based in vitro immune and immunotherapy assays. Purpose-built for multicondition, 2D multichannel time-lapse microscopy of mixed cell populations, Celldetective is optimized for the needs of immunology assays. The software seamlessly integrates AI-based segmentation, Bayesian tracking, and automated single-cell event detection, all within an intuitive graphical interface that supports interactive visualization, annotation, and training capabilities. We demonstrate its utility with original data on immune effector cell interactions with an activating surface, mediated by bispecific antibodies, and further showcase its potential for analyzing extensive sets of pairwise interactions in antibody-dependent cell cytotoxicity events.Competing Interest StatementThe authors have declared no competing interest.},
143
- URL = {https://www.biorxiv.org/content/early/2024/11/13/2024.03.15.585250},
144
- eprint = {https://www.biorxiv.org/content/early/2024/11/13/2024.03.15.585250.full.pdf},
145
- journal = {bioRxiv}
135
+ @article{torroCelldetectiveAIenhancedImage2025,
136
+ title = {Celldetective: An {{AI-enhanced}} Image Analysis Tool for Unraveling Dynamic Cell Interactions},
137
+ shorttitle = {Celldetective},
138
+ author = {Torro, Rémy and Díaz-Bello, Beatriz and Arawi, Dalia El and Dervanova, Ksenija and Ammer, Lorna and Dupuy, Florian and Chames, Patrick and Sengupta, Kheya and Limozin, Laurent},
139
+ date = {2025-03-10},
140
+ journaltitle = {eLife},
141
+ volume = {14},
142
+ publisher = {eLife Sciences Publications Limited},
143
+ doi = {10.7554/eLife.105302.1},
144
+ url = {https://elifesciences.org/reviewed-preprints/105302},
145
+ urldate = {2025-03-20},
146
+ abstract = {A current challenge in bioimaging for immunology and immunotherapy research lies in analyzing multimodal and multidimensional data that capture dynamic interactions between diverse cell populations. Here, we introduce Celldetective, an open-source Python-based software designed for high-performance, end-to-end analysis of image-based in vitro immune and immunotherapy assays. Purpose-built for multicondition, 2D multichannel time-lapse microscopy of mixed cell populations, Celldetective is optimized for the needs of immunology assays. The software seamlessly integrates AI-based segmentation, Bayesian tracking, and automated single-cell event detection, all within an intuitive graphical interface that supports interactive visualization, annotation, and training capabilities. We demonstrate its utility with original data on immune effector cell interactions with an activating surface, mediated by bispecific antibodies, and further showcase its potential for analyzing extensive sets of pairwise interactions in antibody-dependent cell cytotoxicity events.},
147
+ langid = {english},
148
+ file = {/home/torro/Zotero/storage/VFYBBMQF/Torro et al. - 2025 - Celldetective an AI-enhanced image analysis tool .pdf;/home/torro/Zotero/storage/UGMCKKST/105302.html}
146
149
  }
147
150
  ```
148
151
 
149
152
  Make sure you to cite the papers of any segmentation model (StarDist,
150
- Cellpose) or tracker (bTrack) you used through Celldetective.
153
+ Cellpose) or tracker (bTrack, TrackPy) you used through Celldetective.
151
154
 
152
155
  # Bibliography
153
156
 
@@ -0,0 +1,26 @@
1
+ from ._version import __version__
2
+ import os
3
+ from .log_manager import setup_global_logging, get_logger
4
+
5
+ # Define default log path in user home
6
+ USER_LOG_DIR = os.path.join(os.path.expanduser("~"), ".celldetective", "logs")
7
+ GLOBAL_LOG_FILE = os.path.join(USER_LOG_DIR, "celldetective.log")
8
+
9
+ # Setup logging
10
+ setup_global_logging(log_file=GLOBAL_LOG_FILE)
11
+
12
+ # Expose logger
13
+ logger = get_logger()
14
+
15
+
16
+ def get_software_location() -> str:
17
+ """
18
+ Get the installation folder of celldetective.
19
+
20
+ Returns
21
+ -------
22
+ str
23
+ Path to the celldetective installation folder.
24
+ """
25
+
26
+ return rf"{os.path.split(os.path.dirname(os.path.realpath(__file__)))[0]}"
@@ -0,0 +1,85 @@
1
+ #!/usr/bin/env python3
2
+ import sys
3
+ import os
4
+
5
+ os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
6
+
7
+ from PyQt5.QtWidgets import QApplication, QSplashScreen
8
+ from PyQt5.QtGui import QPixmap
9
+ from os import sep
10
+
11
+ # os.environ['QT_DEBUG_PLUGINS'] = '1'
12
+
13
+ if __name__ == "__main__":
14
+
15
+ splash = True
16
+ from celldetective import logger
17
+ from celldetective import get_software_location
18
+
19
+ logger.info("Loading the libraries...")
20
+
21
+ App = QApplication(sys.argv)
22
+ App.setStyle("Fusion")
23
+
24
+ software_location = get_software_location()
25
+
26
+ if splash:
27
+ splash_pix = QPixmap(
28
+ sep.join([software_location, "celldetective", "icons", "splash.png"])
29
+ )
30
+ splash = QSplashScreen(splash_pix)
31
+ splash.setMask(splash_pix.mask())
32
+ splash.show()
33
+ App.processEvents()
34
+
35
+ # Update check in background
36
+ def check_update():
37
+ try:
38
+ import requests
39
+ import re
40
+ from celldetective import __version__
41
+
42
+ package = "celldetective"
43
+ response = requests.get(f"https://pypi.org/pypi/{package}/json", timeout=5)
44
+ latest_version = response.json()["info"]["version"]
45
+
46
+ latest_version_num = re.sub("[^0-9]", "", latest_version)
47
+ current_version_num = re.sub("[^0-9]", "", __version__)
48
+
49
+ if len(latest_version_num) != len(current_version_num):
50
+ max_length = max([len(latest_version_num), len(current_version_num)])
51
+ latest_version_num = int(
52
+ latest_version_num.zfill(max_length - len(latest_version_num))
53
+ )
54
+ current_version_num = int(
55
+ current_version_num.zfill(max_length - len(current_version_num))
56
+ )
57
+
58
+ if latest_version_num > current_version_num:
59
+ logger.warning(
60
+ "Update is available...\nPlease update using `pip install --upgrade celldetective`..."
61
+ )
62
+ except Exception as e:
63
+ logger.error(
64
+ f"Update check failed... Please check your internet connection: {e}"
65
+ )
66
+
67
+ import threading
68
+
69
+ update_thread = threading.Thread(target=check_update)
70
+ update_thread.daemon = True
71
+ update_thread.start()
72
+
73
+ from celldetective.gui.InitWindow import AppInitWindow
74
+
75
+ logger.info("Libraries successfully loaded...")
76
+
77
+ from celldetective.gui.base.utils import center_window
78
+
79
+ window = AppInitWindow(App, software_location=software_location)
80
+ center_window(window)
81
+
82
+ if splash:
83
+ splash.finish(window)
84
+
85
+ sys.exit(App.exec())
@@ -0,0 +1 @@
1
+ __version__ = "1.5.0b3"
@@ -52,7 +52,7 @@ def switch_to_events(classes, event_times, max_times, origin_times=None, left_ce
52
52
  >>> event_times = [5, 10, 15]
53
53
  >>> max_times = [20, 20, 20]
54
54
  >>> origin_times = [0, 0, 5]
55
- >>> events, survival_times = switch_to_events_v2(classes, event_times, max_times, origin_times, FrameToMin=0.5)
55
+ >>> events, survival_times = switch_to_events(classes, event_times, max_times, origin_times, FrameToMin=0.5)
56
56
  # This would process the events considering left censorship and convert survival times to minutes.
57
57
 
58
58
  """
@@ -189,6 +189,7 @@ def compute_survival(df, class_of_interest, t_event, t_reference=None, FrameToMi
189
189
  assert class_of_interest in cols,"The requested class cannot be found in the dataframe..."
190
190
  assert t_event in cols,"The event time cannot be found in the dataframe..."
191
191
  left_censored = False
192
+ first_detections = None
192
193
 
193
194
  if not pairs:
194
195
  groupby_cols = ['position','TRACK_ID']
@@ -209,10 +210,7 @@ def compute_survival(df, class_of_interest, t_event, t_reference=None, FrameToMi
209
210
  assert t_reference in cols,"The reference time cannot be found in the dataframe..."
210
211
  first_detections = df.groupby(groupby_cols)[t_reference].max().values
211
212
 
212
-
213
- print(f"{classes=} {event_times=} {max_times=} {first_detections=}")
214
213
  events, survival_times = switch_to_events(classes, event_times, max_times, origin_times=first_detections, left_censored=left_censored, FrameToMin=FrameToMin, cut_observation_time=cut_observation_time)
215
- print(f"{events=} {survival_times=}")
216
214
 
217
215
  ks = KaplanMeierFitter()
218
216
  if len(events)>0:
@@ -0,0 +1,11 @@
1
+ class QueryError(Exception):
2
+ """Base class for query-related errors."""
3
+
4
+ class EmptyQueryError(QueryError):
5
+ pass
6
+
7
+ class MissingColumnsError(QueryError):
8
+ def __init__(self, missing_cols):
9
+ msg = f"The following columns are missing from the DataFrame: {missing_cols}"
10
+ super().__init__(msg)
11
+ self.missing_cols = missing_cols