celldetective 1.2.1__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 (255) hide show
  1. celldetective-1.5.0b3/PKG-INFO +236 -0
  2. celldetective-1.5.0b3/README.md +176 -0
  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.5.0b3/celldetective/events.py +222 -0
  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.2.1/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.5.0b3/celldetective/gui/base/styles.py +335 -0
  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.5.0b3/celldetective/gui/help/DL-segmentation-strategy.json +41 -0
  30. celldetective-1.5.0b3/celldetective/gui/help/Threshold-vs-DL.json +26 -0
  31. celldetective-1.5.0b3/celldetective/gui/help/cell-populations.json +11 -0
  32. celldetective-1.5.0b3/celldetective/gui/help/exp-structure.json +36 -0
  33. celldetective-1.5.0b3/celldetective/gui/help/feature-btrack.json +11 -0
  34. celldetective-1.5.0b3/celldetective/gui/help/neighborhood.json +16 -0
  35. celldetective-1.5.0b3/celldetective/gui/help/prefilter-for-segmentation.json +16 -0
  36. celldetective-1.5.0b3/celldetective/gui/help/preprocessing.json +51 -0
  37. celldetective-1.5.0b3/celldetective/gui/help/propagate-classification.json +16 -0
  38. celldetective-1.5.0b3/celldetective/gui/help/track-postprocessing.json +46 -0
  39. celldetective-1.5.0b3/celldetective/gui/help/tracking.json +11 -0
  40. celldetective-1.5.0b3/celldetective/gui/interactions_block.py +688 -0
  41. celldetective-1.5.0b3/celldetective/gui/interactive_timeseries_viewer.py +457 -0
  42. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/gui/json_readers.py +53 -23
  43. celldetective-1.5.0b3/celldetective/gui/layouts/__init__.py +5 -0
  44. celldetective-1.5.0b3/celldetective/gui/layouts/background_model_free_layout.py +537 -0
  45. celldetective-1.5.0b3/celldetective/gui/layouts/channel_offset_layout.py +134 -0
  46. celldetective-1.5.0b3/celldetective/gui/layouts/local_correction_layout.py +91 -0
  47. celldetective-1.5.0b3/celldetective/gui/layouts/model_fit_layout.py +372 -0
  48. celldetective-1.5.0b3/celldetective/gui/layouts/operation_layout.py +68 -0
  49. celldetective-1.5.0b3/celldetective/gui/layouts/protocol_designer_layout.py +96 -0
  50. celldetective-1.5.0b3/celldetective/gui/measure_annotator.py +1064 -0
  51. celldetective-1.5.0b3/celldetective/gui/pair_event_annotator.py +3151 -0
  52. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/gui/plot_measurements.py +606 -306
  53. celldetective-1.5.0b3/celldetective/gui/plot_signals_ui.py +744 -0
  54. celldetective-1.5.0b3/celldetective/gui/preprocessing_block.py +395 -0
  55. celldetective-1.5.0b3/celldetective/gui/process_block.py +1921 -0
  56. celldetective-1.5.0b3/celldetective/gui/seg_model_loader.py +592 -0
  57. celldetective-1.5.0b3/celldetective/gui/settings/_cellpose_model_params.py +181 -0
  58. celldetective-1.5.0b3/celldetective/gui/settings/_event_detection_model_params.py +95 -0
  59. celldetective-1.5.0b3/celldetective/gui/settings/_segmentation_model_params.py +159 -0
  60. celldetective-1.5.0b3/celldetective/gui/settings/_settings_base.py +82 -0
  61. celldetective-1.5.0b3/celldetective/gui/settings/_settings_event_model_training.py +770 -0
  62. celldetective-1.2.1/celldetective/gui/measurement_options.py → celldetective-1.5.0b3/celldetective/gui/settings/_settings_measurements.py +560 -412
  63. celldetective-1.5.0b3/celldetective/gui/settings/_settings_neighborhood.py +585 -0
  64. celldetective-1.5.0b3/celldetective/gui/settings/_settings_segmentation.py +49 -0
  65. celldetective-1.5.0b3/celldetective/gui/settings/_settings_segmentation_model_training.py +795 -0
  66. celldetective-1.5.0b3/celldetective/gui/settings/_settings_signal_annotator.py +343 -0
  67. celldetective-1.5.0b3/celldetective/gui/settings/_settings_tracking.py +1333 -0
  68. celldetective-1.5.0b3/celldetective/gui/settings/_stardist_model_params.py +98 -0
  69. celldetective-1.5.0b3/celldetective/gui/survival_ui.py +439 -0
  70. celldetective-1.5.0b3/celldetective/gui/tableUI.py +1706 -0
  71. celldetective-1.5.0b3/celldetective/gui/table_ops/_maths.py +295 -0
  72. celldetective-1.5.0b3/celldetective/gui/table_ops/_merge_groups.py +140 -0
  73. celldetective-1.5.0b3/celldetective/gui/table_ops/_merge_one_hot.py +95 -0
  74. celldetective-1.5.0b3/celldetective/gui/table_ops/_query_table.py +43 -0
  75. celldetective-1.5.0b3/celldetective/gui/table_ops/_rename_col.py +44 -0
  76. celldetective-1.5.0b3/celldetective/gui/thresholds_gui.py +917 -0
  77. celldetective-1.5.0b3/celldetective/gui/viewers/base_viewer.py +831 -0
  78. celldetective-1.5.0b3/celldetective/gui/viewers/channel_offset_viewer.py +331 -0
  79. celldetective-1.5.0b3/celldetective/gui/viewers/contour_viewer.py +394 -0
  80. celldetective-1.5.0b3/celldetective/gui/viewers/size_viewer.py +153 -0
  81. celldetective-1.5.0b3/celldetective/gui/viewers/spot_detection_viewer.py +341 -0
  82. celldetective-1.5.0b3/celldetective/gui/viewers/threshold_viewer.py +309 -0
  83. celldetective-1.5.0b3/celldetective/gui/workers.py +432 -0
  84. celldetective-1.5.0b3/celldetective/links/zenodo.json +906 -0
  85. celldetective-1.5.0b3/celldetective/log_manager.py +92 -0
  86. celldetective-1.5.0b3/celldetective/measure.py +1924 -0
  87. celldetective-1.5.0b3/celldetective/models/segmentation_effectors/blank +0 -0
  88. celldetective-1.5.0b3/celldetective/models/segmentation_generic/blank +0 -0
  89. celldetective-1.5.0b3/celldetective/models/segmentation_targets/blank +0 -0
  90. celldetective-1.5.0b3/celldetective/models/signal_detection/blank +0 -0
  91. celldetective-1.5.0b3/celldetective/models/tracking_configs/biased_motion.json +68 -0
  92. celldetective-1.5.0b3/celldetective/models/tracking_configs/no_z_motion.json +202 -0
  93. celldetective-1.5.0b3/celldetective/napari/__init__.py +0 -0
  94. celldetective-1.5.0b3/celldetective/napari/utils.py +1035 -0
  95. celldetective-1.5.0b3/celldetective/neighborhood.py +1949 -0
  96. celldetective-1.5.0b3/celldetective/preprocessing.py +1643 -0
  97. celldetective-1.5.0b3/celldetective/processes/__init__.py +0 -0
  98. celldetective-1.5.0b3/celldetective/processes/background_correction.py +271 -0
  99. celldetective-1.5.0b3/celldetective/processes/compute_neighborhood.py +894 -0
  100. celldetective-1.5.0b3/celldetective/processes/detect_events.py +246 -0
  101. celldetective-1.5.0b3/celldetective/processes/downloader.py +137 -0
  102. celldetective-1.5.0b3/celldetective/processes/load_table.py +55 -0
  103. celldetective-1.5.0b3/celldetective/processes/measure_cells.py +591 -0
  104. celldetective-1.5.0b3/celldetective/processes/segment_cells.py +760 -0
  105. celldetective-1.5.0b3/celldetective/processes/track_cells.py +435 -0
  106. celldetective-1.5.0b3/celldetective/processes/train_segmentation_model.py +694 -0
  107. celldetective-1.5.0b3/celldetective/processes/train_signal_model.py +265 -0
  108. celldetective-1.5.0b3/celldetective/processes/unified_process.py +292 -0
  109. celldetective-1.5.0b3/celldetective/regionprops/__init__.py +1 -0
  110. celldetective-1.5.0b3/celldetective/regionprops/_regionprops.py +378 -0
  111. celldetective-1.5.0b3/celldetective/regionprops/props.json +63 -0
  112. celldetective-1.5.0b3/celldetective/relative_measurements.py +1061 -0
  113. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/scripts/analyze_signals.py +4 -2
  114. celldetective-1.5.0b3/celldetective/scripts/measure_cells.py +418 -0
  115. celldetective-1.5.0b3/celldetective/scripts/measure_relative.py +136 -0
  116. celldetective-1.5.0b3/celldetective/scripts/segment_cells.py +252 -0
  117. celldetective-1.5.0b3/celldetective/scripts/segment_cells_thresholds.py +174 -0
  118. celldetective-1.5.0b3/celldetective/scripts/track_cells.py +306 -0
  119. celldetective-1.5.0b3/celldetective/scripts/train_segmentation_model.py +375 -0
  120. celldetective-1.5.0b3/celldetective/scripts/train_signal_model.py +121 -0
  121. celldetective-1.5.0b3/celldetective/segmentation.py +873 -0
  122. celldetective-1.5.0b3/celldetective/signals.py +3599 -0
  123. celldetective-1.5.0b3/celldetective/tracking.py +1380 -0
  124. celldetective-1.5.0b3/celldetective/utils/__init__.py +0 -0
  125. celldetective-1.5.0b3/celldetective/utils/cellpose_utils/__init__.py +133 -0
  126. celldetective-1.5.0b3/celldetective/utils/color_mappings.py +42 -0
  127. celldetective-1.5.0b3/celldetective/utils/data_cleaning.py +630 -0
  128. celldetective-1.5.0b3/celldetective/utils/data_loaders.py +470 -0
  129. celldetective-1.5.0b3/celldetective/utils/dataset_helpers.py +207 -0
  130. celldetective-1.5.0b3/celldetective/utils/downloaders.py +235 -0
  131. celldetective-1.5.0b3/celldetective/utils/event_detection/__init__.py +8 -0
  132. celldetective-1.5.0b3/celldetective/utils/experiment.py +1782 -0
  133. celldetective-1.5.0b3/celldetective/utils/image_augmenters.py +308 -0
  134. celldetective-1.5.0b3/celldetective/utils/image_cleaning.py +74 -0
  135. celldetective-1.5.0b3/celldetective/utils/image_loaders.py +929 -0
  136. celldetective-1.5.0b3/celldetective/utils/image_transforms.py +335 -0
  137. celldetective-1.5.0b3/celldetective/utils/io.py +62 -0
  138. celldetective-1.5.0b3/celldetective/utils/mask_cleaning.py +348 -0
  139. celldetective-1.5.0b3/celldetective/utils/mask_transforms.py +5 -0
  140. celldetective-1.5.0b3/celldetective/utils/masks.py +184 -0
  141. celldetective-1.5.0b3/celldetective/utils/maths.py +364 -0
  142. celldetective-1.5.0b3/celldetective/utils/model_getters.py +325 -0
  143. celldetective-1.5.0b3/celldetective/utils/model_loaders.py +296 -0
  144. celldetective-1.5.0b3/celldetective/utils/normalization.py +380 -0
  145. celldetective-1.5.0b3/celldetective/utils/parsing.py +465 -0
  146. celldetective-1.5.0b3/celldetective/utils/plots/__init__.py +0 -0
  147. celldetective-1.5.0b3/celldetective/utils/plots/regression.py +53 -0
  148. celldetective-1.5.0b3/celldetective/utils/resources.py +34 -0
  149. celldetective-1.5.0b3/celldetective/utils/stardist_utils/__init__.py +104 -0
  150. celldetective-1.5.0b3/celldetective/utils/stats.py +90 -0
  151. celldetective-1.5.0b3/celldetective/utils/types.py +21 -0
  152. celldetective-1.5.0b3/celldetective.egg-info/PKG-INFO +236 -0
  153. celldetective-1.5.0b3/celldetective.egg-info/SOURCES.txt +194 -0
  154. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective.egg-info/requires.txt +18 -6
  155. celldetective-1.5.0b3/setup.py +74 -0
  156. celldetective-1.5.0b3/tests/__init__.py +0 -0
  157. celldetective-1.5.0b3/tests/gui/__init__.py +0 -0
  158. celldetective-1.5.0b3/tests/gui/test_enhancements.py +351 -0
  159. celldetective-1.5.0b3/tests/gui/test_new_project.py +240 -0
  160. celldetective-1.5.0b3/tests/gui/test_project.py +147 -0
  161. celldetective-1.5.0b3/tests/test_filters.py +48 -0
  162. celldetective-1.5.0b3/tests/test_notebooks.py +9 -0
  163. {celldetective-1.2.1 → celldetective-1.5.0b3}/tests/test_preprocessing.py +2 -2
  164. {celldetective-1.2.1 → celldetective-1.5.0b3}/tests/test_segmentation.py +5 -4
  165. celldetective-1.5.0b3/tests/test_tracking.py +445 -0
  166. celldetective-1.5.0b3/tests/test_utils.py +164 -0
  167. celldetective-1.2.1/PKG-INFO +0 -306
  168. celldetective-1.2.1/README.md +0 -267
  169. celldetective-1.2.1/celldetective/__init__.py +0 -3
  170. celldetective-1.2.1/celldetective/__main__.py +0 -435
  171. celldetective-1.2.1/celldetective/events.py +0 -107
  172. celldetective-1.2.1/celldetective/extra_properties.py +0 -138
  173. celldetective-1.2.1/celldetective/filters.py +0 -116
  174. celldetective-1.2.1/celldetective/gui/__init__.py +0 -21
  175. celldetective-1.2.1/celldetective/gui/about.py +0 -44
  176. celldetective-1.2.1/celldetective/gui/analyze_block.py +0 -591
  177. celldetective-1.2.1/celldetective/gui/btrack_options.py +0 -899
  178. celldetective-1.2.1/celldetective/gui/classifier_widget.py +0 -491
  179. celldetective-1.2.1/celldetective/gui/configure_new_exp.py +0 -529
  180. celldetective-1.2.1/celldetective/gui/control_panel.py +0 -528
  181. celldetective-1.2.1/celldetective/gui/gui_utils.py +0 -773
  182. celldetective-1.2.1/celldetective/gui/layouts.py +0 -1002
  183. celldetective-1.2.1/celldetective/gui/neighborhood_options.py +0 -514
  184. celldetective-1.2.1/celldetective/gui/plot_signals_ui.py +0 -1071
  185. celldetective-1.2.1/celldetective/gui/process_block.py +0 -1653
  186. celldetective-1.2.1/celldetective/gui/retrain_segmentation_model_options.py +0 -622
  187. celldetective-1.2.1/celldetective/gui/retrain_signal_model_options.py +0 -598
  188. celldetective-1.2.1/celldetective/gui/seg_model_loader.py +0 -464
  189. celldetective-1.2.1/celldetective/gui/signal_annotator.py +0 -2499
  190. celldetective-1.2.1/celldetective/gui/signal_annotator2.py +0 -2708
  191. celldetective-1.2.1/celldetective/gui/signal_annotator_options.py +0 -344
  192. celldetective-1.2.1/celldetective/gui/styles.py +0 -232
  193. celldetective-1.2.1/celldetective/gui/survival_ui.py +0 -940
  194. celldetective-1.2.1/celldetective/gui/tableUI.py +0 -1182
  195. celldetective-1.2.1/celldetective/gui/thresholds_gui.py +0 -1343
  196. celldetective-1.2.1/celldetective/gui/viewers.py +0 -743
  197. celldetective-1.2.1/celldetective/io.py +0 -2467
  198. celldetective-1.2.1/celldetective/links/zenodo.json +0 -561
  199. celldetective-1.2.1/celldetective/measure.py +0 -988
  200. celldetective-1.2.1/celldetective/models/segmentation_effectors/primNK_cfse/config_input.json +0 -29
  201. celldetective-1.2.1/celldetective/models/segmentation_effectors/primNK_cfse/cp-cfse-transfer +0 -0
  202. celldetective-1.2.1/celldetective/models/segmentation_effectors/primNK_cfse/training_instructions.json +0 -37
  203. celldetective-1.2.1/celldetective/models/segmentation_effectors/ricm-bimodal/config_input.json +0 -130
  204. celldetective-1.2.1/celldetective/models/segmentation_effectors/ricm-bimodal/ricm-bimodal +0 -0
  205. celldetective-1.2.1/celldetective/models/segmentation_effectors/ricm-bimodal/training_instructions.json +0 -37
  206. celldetective-1.2.1/celldetective/neighborhood.py +0 -1332
  207. celldetective-1.2.1/celldetective/preprocessing.py +0 -1055
  208. celldetective-1.2.1/celldetective/relative_measurements.py +0 -648
  209. celldetective-1.2.1/celldetective/scripts/measure_cells.py +0 -307
  210. celldetective-1.2.1/celldetective/scripts/measure_relative.py +0 -103
  211. celldetective-1.2.1/celldetective/scripts/segment_cells.py +0 -237
  212. celldetective-1.2.1/celldetective/scripts/segment_cells_thresholds.py +0 -140
  213. celldetective-1.2.1/celldetective/scripts/track_cells.py +0 -220
  214. celldetective-1.2.1/celldetective/scripts/train_segmentation_model.py +0 -241
  215. celldetective-1.2.1/celldetective/scripts/train_signal_model.py +0 -82
  216. celldetective-1.2.1/celldetective/segmentation.py +0 -759
  217. celldetective-1.2.1/celldetective/signals.py +0 -3128
  218. celldetective-1.2.1/celldetective/tracking.py +0 -980
  219. celldetective-1.2.1/celldetective/utils.py +0 -2438
  220. celldetective-1.2.1/celldetective.egg-info/PKG-INFO +0 -306
  221. celldetective-1.2.1/celldetective.egg-info/SOURCES.txt +0 -95
  222. celldetective-1.2.1/setup.py +0 -40
  223. celldetective-1.2.1/tests/test_filters.py +0 -24
  224. celldetective-1.2.1/tests/test_tracking.py +0 -164
  225. celldetective-1.2.1/tests/test_utils.py +0 -118
  226. {celldetective-1.2.1 → celldetective-1.5.0b3}/LICENSE +0 -0
  227. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/datasets/segmentation_annotations/blank +0 -0
  228. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/datasets/signal_annotations/blank +0 -0
  229. /celldetective-1.2.1/celldetective/models/pair_signal_detection/blank → /celldetective-1.5.0b3/celldetective/gui/base/__init__.py +0 -0
  230. /celldetective-1.2.1/celldetective/models/segmentation_effectors/blank → /celldetective-1.5.0b3/celldetective/gui/settings/__init__.py +0 -0
  231. /celldetective-1.2.1/celldetective/models/segmentation_generic/blank → /celldetective-1.5.0b3/celldetective/gui/table_ops/__init__.py +0 -0
  232. /celldetective-1.2.1/celldetective/models/segmentation_targets/blank → /celldetective-1.5.0b3/celldetective/gui/viewers/__init__.py +0 -0
  233. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/logo-large.png +0 -0
  234. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/logo.png +0 -0
  235. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/signals_icon.png +0 -0
  236. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/splash-test.png +0 -0
  237. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/splash.png +0 -0
  238. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/splash0.png +0 -0
  239. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/survival2.png +0 -0
  240. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/vignette_signals2.png +0 -0
  241. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/icons/vignette_signals2.svg +0 -0
  242. {celldetective-1.2.1/celldetective/models/signal_detection → celldetective-1.5.0b3/celldetective/models/pair_signal_detection}/blank +0 -0
  243. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/models/tracking_configs/mcf7.json +0 -0
  244. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/models/tracking_configs/ricm.json +0 -0
  245. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective/models/tracking_configs/ricm2.json +0 -0
  246. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective.egg-info/dependency_links.txt +0 -0
  247. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective.egg-info/entry_points.txt +0 -0
  248. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective.egg-info/not-zip-safe +0 -0
  249. {celldetective-1.2.1 → celldetective-1.5.0b3}/celldetective.egg-info/top_level.txt +0 -0
  250. {celldetective-1.2.1 → celldetective-1.5.0b3}/setup.cfg +0 -0
  251. {celldetective-1.2.1 → celldetective-1.5.0b3}/tests/test_events.py +0 -0
  252. {celldetective-1.2.1 → celldetective-1.5.0b3}/tests/test_io.py +0 -0
  253. {celldetective-1.2.1 → celldetective-1.5.0b3}/tests/test_measure.py +0 -0
  254. {celldetective-1.2.1 → celldetective-1.5.0b3}/tests/test_neighborhood.py +0 -0
  255. {celldetective-1.2.1 → celldetective-1.5.0b3}/tests/test_signals.py +0 -0
@@ -0,0 +1,236 @@
1
+ Metadata-Version: 2.4
2
+ Name: celldetective
3
+ Version: 1.5.0b3
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<0.6.0
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: PyQt5
34
+ Requires-Dist: liblapack
35
+ Requires-Dist: gputools
36
+ Requires-Dist: lmfit
37
+ Requires-Dist: superqt[cmap]
38
+ Requires-Dist: setuptools
39
+ Requires-Dist: matplotlib_scalebar
40
+ Requires-Dist: numpy==1.26.4
41
+ Requires-Dist: pytest
42
+ Requires-Dist: pytest-qt
43
+ Requires-Dist: h5py
44
+ Requires-Dist: cliffs_delta
45
+ Requires-Dist: requests
46
+ Requires-Dist: trackpy
47
+ Requires-Dist: prettyprint
48
+ Requires-Dist: pandas
49
+ Requires-Dist: matplotlib
50
+ Requires-Dist: prettytable
51
+ Dynamic: author
52
+ Dynamic: author-email
53
+ Dynamic: description
54
+ Dynamic: description-content-type
55
+ Dynamic: home-page
56
+ Dynamic: license
57
+ Dynamic: license-file
58
+ Dynamic: requires-dist
59
+ Dynamic: summary
60
+
61
+ # Celldetective
62
+
63
+ <embed>
64
+ <p align="center">
65
+ <img src="https://github.com/remyeltorro/celldetective/blob/main/celldetective/icons/logo-large.png" width="33%" />
66
+ </p>
67
+ </embed>
68
+
69
+ ![ico1](https://img.shields.io/readthedocs/celldetective?link=https%3A%2F%2Fcelldetective.readthedocs.io%2Fen%2Flatest%2Findex.html)
70
+ ![ico17](https://github.com/remyeltorro/celldetective/actions/workflows/test.yml/badge.svg)
71
+ ![ico4](https://img.shields.io/pypi/v/celldetective)
72
+ ![ico6](https://img.shields.io/github/downloads/remyeltorro/celldetective/total)
73
+ ![ico5](https://img.shields.io/pypi/dm/celldetective)
74
+ ![GitHub repo size](https://img.shields.io/github/repo-size/remyeltorro/celldetective)
75
+ ![GitHub License](https://img.shields.io/github/license/remyeltorro/celldetective?link=https%3A%2F%2Fgithub.com%2Fremyeltorro%2Fcelldetective%2Fblob%2Fmain%2FLICENSE)
76
+ ![ico2](https://img.shields.io/github/forks/remyeltorro/celldetective?link=https%3A%2F%2Fgithub.com%2Fremyeltorro%2Fcelldetective%2Fforks)
77
+ ![ico3](https://img.shields.io/github/stars/remyeltorro/celldetective?link=https%3A%2F%2Fgithub.com%2Fremyeltorro%2Fcelldetective%2Fstargazers)
78
+
79
+ Celldetective is a python package and graphical user interface to perform single-cell
80
+ analysis on multimodal time lapse microscopy images.
81
+
82
+ - [Check the full documentation](https://celldetective.readthedocs.io)
83
+ - [Report a bug or request a new feature](https://github.com/remyeltorro/celldetective/issues/new/choose)
84
+ - [Explore the datasets, models and demos](https://zenodo.org/records/10650279)
85
+
86
+ ## Overview
87
+
88
+ ![Pipeline](https://github.com/celldetective/celldetective/raw/main/docs/source/_static/celldetective-blocks.png)
89
+
90
+
91
+ 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.
92
+
93
+
94
+ **Key features**:
95
+ - Achieve single-cell description (segment / track / measure) for up to two populations of interest
96
+ - Signal annotation and traditional or Deep learning automation
97
+ - Mask annotation in napari[^5] and retraining of Deep learning models
98
+ - Neighborhood linking within and across populations and interaction annotations
99
+ - Everything is done graphically, no coding is required!
100
+
101
+ Check out the [highlights](https://celldetective.readthedocs.io/en/latest/overview.html#description) in the documentation!
102
+
103
+ 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!
104
+
105
+ **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.
106
+
107
+ ![Signal analysis](https://github.com/celldetective/celldetective/raw/main/docs/source/_static/signal-annotator.gif)
108
+
109
+
110
+ # System requirements
111
+
112
+ ## Hardware requirements
113
+
114
+ The software was tested on several machines, including:
115
+
116
+ - An Intel(R) Core(TM) i9-10850K CPU @ 3.60GHz, with a single NVIDIA
117
+ GeForce RTX 3070 (8 Gb of memory) and 16 Gb of memory
118
+ - An Intel(R) Core(TM) i7-9750H CPU @ 2.60 GHz, with 16 Gb of memory
119
+
120
+ In GPU mode, succesive segmentation and DL signal analysis could be
121
+ performed without saturating the GPU memory thanks to the subprocess
122
+ formulation for the different modules. The GPU can be disabled in the
123
+ startup window. The software does not require a GPU (but model inference
124
+ will be longer).
125
+
126
+ A typical analysis of a single movie with a GPU takes
127
+ between 3 to 15 minutes. Depending on the number of cells and frames on
128
+ the images, this computation time can increase to the order of half an
129
+ hour on a CPU.
130
+
131
+ 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.
132
+
133
+ ## Software requirements
134
+
135
+ The software was developed simulateously on Ubuntu 20.04 and Windows 11.
136
+ It was tested on MacOS, but Tensorflow installation can require extra
137
+ steps.
138
+
139
+ - Linux: Ubuntu 20.04.6 LTS (Focal Fossa)
140
+ - Windows: Windows 11 Home 23H2
141
+
142
+ To use the software, you must install python, *e.g.* through
143
+ [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.
144
+
145
+ # Installation
146
+
147
+ ## Stable release
148
+
149
+ 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.
150
+
151
+ With the proper Python version, Celldetective can be directly installed with `pip`:
152
+
153
+ ``` bash
154
+ pip install celldetective
155
+ ```
156
+
157
+ We recommend that you create an environment to use Celldetective, to protect your package versions and fix the Python version *e.g.*
158
+ with `conda`:
159
+
160
+ ``` bash
161
+ conda create -n celldetective python=3.11 pyqt
162
+ conda activate celldetective
163
+ pip install celldetective
164
+ ```
165
+
166
+ Need an update? Simply type the following in the terminal (in your
167
+ environment):
168
+
169
+ ``` bash
170
+ pip install --upgrade celldetective
171
+ ```
172
+
173
+ For more installation options, please check the [documentation](https://celldetective.readthedocs.io/en/latest/get-started.html#installation).
174
+
175
+
176
+ # Quick start
177
+
178
+ You can launch the GUI by 1) opening a terminal and 2) typing the
179
+ following:
180
+
181
+ ``` bash
182
+ # conda activate celldetective
183
+ python -m celldetective
184
+ ```
185
+
186
+ For more information about how to get started, please check the [documentation](https://celldetective.readthedocs.io/en/latest/get-started.html#launching-the-gui).
187
+
188
+ # How to cite?
189
+
190
+ If you use this software in your research, please cite the
191
+ [Celldetective](https://elifesciences.org/reviewed-preprints/105302)
192
+ paper (currently a reviewed preprint at eLife):
193
+
194
+ ``` raw
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}
209
+ }
210
+ ```
211
+
212
+ Make sure you to cite the papers of any segmentation model (StarDist,
213
+ Cellpose) or tracker (bTrack, TrackPy) you used through Celldetective.
214
+
215
+ # Bibliography
216
+
217
+ [^1]: Schmidt, U., Weigert, M., Broaddus, C. & Myers, G. Cell Detection
218
+ with Star-Convex Polygons. in Medical Image Computing and Computer
219
+ Assisted Intervention -- MICCAI 2018 (eds. Frangi, A. F., Schnabel,
220
+ J. A., Davatzikos, C., Alberola-López, C. & Fichtinger, G.) 265--273
221
+ (Springer International Publishing, Cham, 2018).
222
+ <doi:10.1007/978-3-030-00934-2_30>.
223
+
224
+ [^2]: Stringer, C., Wang, T., Michaelos, M. & Pachitariu, M. Cellpose: a
225
+ generalist algorithm for cellular segmentation. Nat Methods 18,
226
+ 100--106 (2021).
227
+
228
+ [^3]: Pachitariu, M. & Stringer, C. Cellpose 2.0: how to train your own
229
+ model. Nat Methods 19, 1634--1641 (2022).
230
+
231
+ [^4]: Ulicna, K., Vallardi, G., Charras, G. & Lowe, A. R. Automated Deep
232
+ Lineage Tree Analysis Using a Bayesian Single Cell Tracking
233
+ Approach. Frontiers in Computer Science 3, (2021).
234
+
235
+ [^5]: Ahlers, J. et al. napari: a multi-dimensional image viewer for
236
+ Python. Zenodo <https://doi.org/10.5281/zenodo.8115575> (2023).
@@ -0,0 +1,176 @@
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
+ ![ico1](https://img.shields.io/readthedocs/celldetective?link=https%3A%2F%2Fcelldetective.readthedocs.io%2Fen%2Flatest%2Findex.html)
10
+ ![ico17](https://github.com/remyeltorro/celldetective/actions/workflows/test.yml/badge.svg)
11
+ ![ico4](https://img.shields.io/pypi/v/celldetective)
12
+ ![ico6](https://img.shields.io/github/downloads/remyeltorro/celldetective/total)
13
+ ![ico5](https://img.shields.io/pypi/dm/celldetective)
14
+ ![GitHub repo size](https://img.shields.io/github/repo-size/remyeltorro/celldetective)
15
+ ![GitHub License](https://img.shields.io/github/license/remyeltorro/celldetective?link=https%3A%2F%2Fgithub.com%2Fremyeltorro%2Fcelldetective%2Fblob%2Fmain%2FLICENSE)
16
+ ![ico2](https://img.shields.io/github/forks/remyeltorro/celldetective?link=https%3A%2F%2Fgithub.com%2Fremyeltorro%2Fcelldetective%2Fforks)
17
+ ![ico3](https://img.shields.io/github/stars/remyeltorro/celldetective?link=https%3A%2F%2Fgithub.com%2Fremyeltorro%2Fcelldetective%2Fstargazers)
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
+ ![Pipeline](https://github.com/celldetective/celldetective/raw/main/docs/source/_static/celldetective-blocks.png)
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
+ ![Signal analysis](https://github.com/celldetective/celldetective/raw/main/docs/source/_static/signal-annotator.gif)
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://elifesciences.org/reviewed-preprints/105302)
132
+ paper (currently a reviewed preprint at eLife):
133
+
134
+ ``` raw
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}
149
+ }
150
+ ```
151
+
152
+ Make sure you to cite the papers of any segmentation model (StarDist,
153
+ Cellpose) or tracker (bTrack, TrackPy) you used through Celldetective.
154
+
155
+ # Bibliography
156
+
157
+ [^1]: Schmidt, U., Weigert, M., Broaddus, C. & Myers, G. Cell Detection
158
+ with Star-Convex Polygons. in Medical Image Computing and Computer
159
+ Assisted Intervention -- MICCAI 2018 (eds. Frangi, A. F., Schnabel,
160
+ J. A., Davatzikos, C., Alberola-López, C. & Fichtinger, G.) 265--273
161
+ (Springer International Publishing, Cham, 2018).
162
+ <doi:10.1007/978-3-030-00934-2_30>.
163
+
164
+ [^2]: Stringer, C., Wang, T., Michaelos, M. & Pachitariu, M. Cellpose: a
165
+ generalist algorithm for cellular segmentation. Nat Methods 18,
166
+ 100--106 (2021).
167
+
168
+ [^3]: Pachitariu, M. & Stringer, C. Cellpose 2.0: how to train your own
169
+ model. Nat Methods 19, 1634--1641 (2022).
170
+
171
+ [^4]: Ulicna, K., Vallardi, G., Charras, G. & Lowe, A. R. Automated Deep
172
+ Lineage Tree Analysis Using a Bayesian Single Cell Tracking
173
+ Approach. Frontiers in Computer Science 3, (2021).
174
+
175
+ [^5]: Ahlers, J. et al. napari: a multi-dimensional image viewer for
176
+ Python. Zenodo <https://doi.org/10.5281/zenodo.8115575> (2023).
@@ -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"