cellprofiler-core-nightly 5.0.0.dev65__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. cellprofiler_core/__init__.py +1 -0
  2. cellprofiler_core/__main__.py +55 -0
  3. cellprofiler_core/_version.py +16 -0
  4. cellprofiler_core/analysis/__init__.py +32 -0
  5. cellprofiler_core/analysis/_analysis.py +109 -0
  6. cellprofiler_core/analysis/_runner.py +738 -0
  7. cellprofiler_core/analysis/event/__init__.py +5 -0
  8. cellprofiler_core/analysis/event/_finished.py +4 -0
  9. cellprofiler_core/analysis/event/_paused.py +2 -0
  10. cellprofiler_core/analysis/event/_progress.py +3 -0
  11. cellprofiler_core/analysis/event/_resumed.py +2 -0
  12. cellprofiler_core/analysis/event/_started.py +2 -0
  13. cellprofiler_core/analysis/reply/__init__.py +12 -0
  14. cellprofiler_core/analysis/reply/_ack.py +6 -0
  15. cellprofiler_core/analysis/reply/_debug_cancel.py +7 -0
  16. cellprofiler_core/analysis/reply/_dictionary_request.py +5 -0
  17. cellprofiler_core/analysis/reply/_exception_please_debug.py +8 -0
  18. cellprofiler_core/analysis/reply/_image_set_success.py +6 -0
  19. cellprofiler_core/analysis/reply/_image_set_success_with_dictionary.py +8 -0
  20. cellprofiler_core/analysis/reply/_interaction.py +5 -0
  21. cellprofiler_core/analysis/reply/_no_work.py +5 -0
  22. cellprofiler_core/analysis/reply/_omero_login.py +6 -0
  23. cellprofiler_core/analysis/reply/_server_exited.py +5 -0
  24. cellprofiler_core/analysis/reply/_shared_dictionary.py +9 -0
  25. cellprofiler_core/analysis/reply/_work.py +5 -0
  26. cellprofiler_core/analysis/request/__init__.py +15 -0
  27. cellprofiler_core/analysis/request/_analysis_cancel.py +5 -0
  28. cellprofiler_core/analysis/request/_debug_complete.py +5 -0
  29. cellprofiler_core/analysis/request/_debug_waiting.py +8 -0
  30. cellprofiler_core/analysis/request/_display.py +5 -0
  31. cellprofiler_core/analysis/request/_display_post_group.py +16 -0
  32. cellprofiler_core/analysis/request/_display_post_run.py +8 -0
  33. cellprofiler_core/analysis/request/_exception_report.py +29 -0
  34. cellprofiler_core/analysis/request/_initial_measurements.py +5 -0
  35. cellprofiler_core/analysis/request/_interaction.py +5 -0
  36. cellprofiler_core/analysis/request/_measurements_report.py +10 -0
  37. cellprofiler_core/analysis/request/_omero_login.py +5 -0
  38. cellprofiler_core/analysis/request/_pipeline_preferences.py +5 -0
  39. cellprofiler_core/analysis/request/_shared_dictionary.py +6 -0
  40. cellprofiler_core/analysis/request/_work.py +5 -0
  41. cellprofiler_core/bioformats/__init__.py +1 -0
  42. cellprofiler_core/bioformats/formatreader.py +19 -0
  43. cellprofiler_core/bioformats/formatwriter.py +104 -0
  44. cellprofiler_core/bioformats/omexml.py +3 -0
  45. cellprofiler_core/commands/__init__.py +0 -0
  46. cellprofiler_core/commands/_pipeline_command.py +40 -0
  47. cellprofiler_core/commands/_worker_command.py +15 -0
  48. cellprofiler_core/constants/__init__.py +0 -0
  49. cellprofiler_core/constants/image.py +173 -0
  50. cellprofiler_core/constants/measurement.py +116 -0
  51. cellprofiler_core/constants/module/__init__.py +225 -0
  52. cellprofiler_core/constants/module/_identify.py +28 -0
  53. cellprofiler_core/constants/modules/__init__.py +36 -0
  54. cellprofiler_core/constants/modules/images.py +7 -0
  55. cellprofiler_core/constants/modules/load_data.py +34 -0
  56. cellprofiler_core/constants/modules/metadata.py +31 -0
  57. cellprofiler_core/constants/modules/namesandtypes.py +197 -0
  58. cellprofiler_core/constants/object.py +1 -0
  59. cellprofiler_core/constants/pipeline.py +139 -0
  60. cellprofiler_core/constants/preferences.py +0 -0
  61. cellprofiler_core/constants/reader/__init__.py +17 -0
  62. cellprofiler_core/constants/setting.py +84 -0
  63. cellprofiler_core/constants/worker.py +13 -0
  64. cellprofiler_core/constants/workspace.py +4 -0
  65. cellprofiler_core/image/__init__.py +17 -0
  66. cellprofiler_core/image/_grayscale_image.py +23 -0
  67. cellprofiler_core/image/_image.py +396 -0
  68. cellprofiler_core/image/_image_set.py +148 -0
  69. cellprofiler_core/image/_image_set_list.py +144 -0
  70. cellprofiler_core/image/_rgb_image.py +17 -0
  71. cellprofiler_core/image/abstract_image/__init__.py +12 -0
  72. cellprofiler_core/image/abstract_image/_abstract_image.py +32 -0
  73. cellprofiler_core/image/abstract_image/_callback_image.py +21 -0
  74. cellprofiler_core/image/abstract_image/_vanilla_image.py +22 -0
  75. cellprofiler_core/image/abstract_image/file/__init__.py +9 -0
  76. cellprofiler_core/image/abstract_image/file/_file_image.py +425 -0
  77. cellprofiler_core/image/abstract_image/file/_flex_frame_image.py +11 -0
  78. cellprofiler_core/image/abstract_image/file/_movie_frame_image.py +11 -0
  79. cellprofiler_core/image/abstract_image/file/_stk_frame_image.py +17 -0
  80. cellprofiler_core/image/abstract_image/file/url/__init__.py +5 -0
  81. cellprofiler_core/image/abstract_image/file/url/_color_image.py +31 -0
  82. cellprofiler_core/image/abstract_image/file/url/_mask_image.py +26 -0
  83. cellprofiler_core/image/abstract_image/file/url/_monochrome_image.py +42 -0
  84. cellprofiler_core/image/abstract_image/file/url/_objects_image.py +100 -0
  85. cellprofiler_core/image/abstract_image/file/url/_url_image.py +37 -0
  86. cellprofiler_core/measurement/__init__.py +3 -0
  87. cellprofiler_core/measurement/_measurements.py +1763 -0
  88. cellprofiler_core/measurement/_metadata_group.py +21 -0
  89. cellprofiler_core/measurement/_relationship_key.py +6 -0
  90. cellprofiler_core/module/__init__.py +4 -0
  91. cellprofiler_core/module/_identify.py +71 -0
  92. cellprofiler_core/module/_image_processing.py +82 -0
  93. cellprofiler_core/module/_module.py +978 -0
  94. cellprofiler_core/module/_plugin_importer.py +37 -0
  95. cellprofiler_core/module/image_segmentation/__init__.py +2 -0
  96. cellprofiler_core/module/image_segmentation/_image_segmentation.py +184 -0
  97. cellprofiler_core/module/image_segmentation/_object_processing.py +156 -0
  98. cellprofiler_core/modules/__init__.py +11 -0
  99. cellprofiler_core/modules/align.py +833 -0
  100. cellprofiler_core/modules/groups.py +717 -0
  101. cellprofiler_core/modules/images.py +384 -0
  102. cellprofiler_core/modules/inject_objects.py +44 -0
  103. cellprofiler_core/modules/injectimage.py +120 -0
  104. cellprofiler_core/modules/loaddata.py +1493 -0
  105. cellprofiler_core/modules/measurementfixture.py +22 -0
  106. cellprofiler_core/modules/metadata.py +1325 -0
  107. cellprofiler_core/modules/namesandtypes.py +2079 -0
  108. cellprofiler_core/modules/setting_validation.py +32 -0
  109. cellprofiler_core/object/__init__.py +3 -0
  110. cellprofiler_core/object/_object_set.py +88 -0
  111. cellprofiler_core/object/_objects.py +376 -0
  112. cellprofiler_core/object/_segmentation.py +161 -0
  113. cellprofiler_core/pipeline/__init__.py +35 -0
  114. cellprofiler_core/pipeline/_image_file.py +240 -0
  115. cellprofiler_core/pipeline/_image_plane.py +175 -0
  116. cellprofiler_core/pipeline/_image_set_channel_descriptor.py +23 -0
  117. cellprofiler_core/pipeline/_listener.py +22 -0
  118. cellprofiler_core/pipeline/_pipeline.py +2740 -0
  119. cellprofiler_core/pipeline/dependency/__init__.py +4 -0
  120. cellprofiler_core/pipeline/dependency/_dependency.py +53 -0
  121. cellprofiler_core/pipeline/dependency/_image_dependency.py +26 -0
  122. cellprofiler_core/pipeline/dependency/_measurement_dependency.py +50 -0
  123. cellprofiler_core/pipeline/dependency/_object_dependency.py +26 -0
  124. cellprofiler_core/pipeline/event/__init__.py +20 -0
  125. cellprofiler_core/pipeline/event/_end_run.py +8 -0
  126. cellprofiler_core/pipeline/event/_event.py +27 -0
  127. cellprofiler_core/pipeline/event/_file_walk_ended.py +6 -0
  128. cellprofiler_core/pipeline/event/_file_walk_started.py +6 -0
  129. cellprofiler_core/pipeline/event/_ipd_load_exception.py +17 -0
  130. cellprofiler_core/pipeline/event/_load_exception.py +17 -0
  131. cellprofiler_core/pipeline/event/_module_added.py +17 -0
  132. cellprofiler_core/pipeline/event/_module_disabled.py +19 -0
  133. cellprofiler_core/pipeline/event/_module_edited.py +17 -0
  134. cellprofiler_core/pipeline/event/_module_enabled.py +19 -0
  135. cellprofiler_core/pipeline/event/_module_moved.py +18 -0
  136. cellprofiler_core/pipeline/event/_module_removed.py +17 -0
  137. cellprofiler_core/pipeline/event/_module_show_window.py +15 -0
  138. cellprofiler_core/pipeline/event/_pipeline_cleared.py +15 -0
  139. cellprofiler_core/pipeline/event/_pipeline_loaded.py +15 -0
  140. cellprofiler_core/pipeline/event/_prepare_run_error.py +15 -0
  141. cellprofiler_core/pipeline/event/_urls_added.py +10 -0
  142. cellprofiler_core/pipeline/event/_urls_cleared.py +9 -0
  143. cellprofiler_core/pipeline/event/_urls_removed.py +10 -0
  144. cellprofiler_core/pipeline/event/run_exception/__init__.py +3 -0
  145. cellprofiler_core/pipeline/event/run_exception/_post_run_exception.py +8 -0
  146. cellprofiler_core/pipeline/event/run_exception/_prepare_run_exception.py +8 -0
  147. cellprofiler_core/pipeline/event/run_exception/_run_exception.py +21 -0
  148. cellprofiler_core/pipeline/io/__init__.py +18 -0
  149. cellprofiler_core/pipeline/io/_v5.py +63 -0
  150. cellprofiler_core/pipeline/io/_v6.py +70 -0
  151. cellprofiler_core/preferences/__init__.py +2111 -0
  152. cellprofiler_core/preferences/_headless_configuration.py +45 -0
  153. cellprofiler_core/reader/__init__.py +131 -0
  154. cellprofiler_core/reader/_reader.py +224 -0
  155. cellprofiler_core/readers/__init__.py +0 -0
  156. cellprofiler_core/readers/bioformats_reader.py +321 -0
  157. cellprofiler_core/readers/gcs_reader.py +112 -0
  158. cellprofiler_core/readers/imageio_reader.py +187 -0
  159. cellprofiler_core/readers/ngff_reader.py +347 -0
  160. cellprofiler_core/setting/__init__.py +23 -0
  161. cellprofiler_core/setting/_binary.py +43 -0
  162. cellprofiler_core/setting/_binary_matrix.py +46 -0
  163. cellprofiler_core/setting/_color.py +182 -0
  164. cellprofiler_core/setting/_coordinates.py +61 -0
  165. cellprofiler_core/setting/_data_types.py +52 -0
  166. cellprofiler_core/setting/_delete_setting_event.py +3 -0
  167. cellprofiler_core/setting/_divider.py +11 -0
  168. cellprofiler_core/setting/_do_things.py +58 -0
  169. cellprofiler_core/setting/_figure_subscriber.py +18 -0
  170. cellprofiler_core/setting/_file_collection_display.py +346 -0
  171. cellprofiler_core/setting/_hidden_count.py +39 -0
  172. cellprofiler_core/setting/_html_text.py +21 -0
  173. cellprofiler_core/setting/_image_plane.py +129 -0
  174. cellprofiler_core/setting/_joiner.py +98 -0
  175. cellprofiler_core/setting/_measurement.py +335 -0
  176. cellprofiler_core/setting/_path_list_display.py +14 -0
  177. cellprofiler_core/setting/_regexp_text.py +37 -0
  178. cellprofiler_core/setting/_setting.py +172 -0
  179. cellprofiler_core/setting/_settings_group.py +31 -0
  180. cellprofiler_core/setting/_structuring_element.py +83 -0
  181. cellprofiler_core/setting/_table.py +168 -0
  182. cellprofiler_core/setting/_tree_choice.py +102 -0
  183. cellprofiler_core/setting/_validation_error.py +20 -0
  184. cellprofiler_core/setting/change_setting_event/__init__.py +3 -0
  185. cellprofiler_core/setting/change_setting_event/_after_change_setting_event.py +10 -0
  186. cellprofiler_core/setting/change_setting_event/_before_change_setting_event.py +24 -0
  187. cellprofiler_core/setting/change_setting_event/_change_setting_event.py +19 -0
  188. cellprofiler_core/setting/choice/__init__.py +3 -0
  189. cellprofiler_core/setting/choice/_choice.py +73 -0
  190. cellprofiler_core/setting/choice/_colormap.py +13 -0
  191. cellprofiler_core/setting/choice/_custom_choice.py +23 -0
  192. cellprofiler_core/setting/do_something/__init__.py +5 -0
  193. cellprofiler_core/setting/do_something/_do_something.py +27 -0
  194. cellprofiler_core/setting/do_something/_image_set_display.py +12 -0
  195. cellprofiler_core/setting/do_something/_path_list_extract_button.py +14 -0
  196. cellprofiler_core/setting/do_something/_path_list_refresh_button.py +14 -0
  197. cellprofiler_core/setting/do_something/_remove_setting_button.py +10 -0
  198. cellprofiler_core/setting/filter/__init__.py +11 -0
  199. cellprofiler_core/setting/filter/_compound_filter_predicate.py +7 -0
  200. cellprofiler_core/setting/filter/_directory_predicate.py +59 -0
  201. cellprofiler_core/setting/filter/_does_not_predicate.py +17 -0
  202. cellprofiler_core/setting/filter/_does_predicate.py +17 -0
  203. cellprofiler_core/setting/filter/_extension_predicate.py +102 -0
  204. cellprofiler_core/setting/filter/_file_predicate.py +65 -0
  205. cellprofiler_core/setting/filter/_filter.py +285 -0
  206. cellprofiler_core/setting/filter/_filter_predicate.py +41 -0
  207. cellprofiler_core/setting/filter/_image_predicate.py +99 -0
  208. cellprofiler_core/setting/filter/_metadata_predicate.py +85 -0
  209. cellprofiler_core/setting/filter/_regexp_filter_predicate.py +21 -0
  210. cellprofiler_core/setting/multichoice/__init__.py +6 -0
  211. cellprofiler_core/setting/multichoice/_image_name_subscriber_multichoice.py +13 -0
  212. cellprofiler_core/setting/multichoice/_measurement_multichoice.py +72 -0
  213. cellprofiler_core/setting/multichoice/_multichoice.py +82 -0
  214. cellprofiler_core/setting/multichoice/_object_subscriber_multichoice.py +13 -0
  215. cellprofiler_core/setting/multichoice/_subdirectory_filter.py +48 -0
  216. cellprofiler_core/setting/multichoice/_subscriber_multichoice.py +50 -0
  217. cellprofiler_core/setting/range/__init__.py +4 -0
  218. cellprofiler_core/setting/range/_float_range.py +25 -0
  219. cellprofiler_core/setting/range/_range.py +154 -0
  220. cellprofiler_core/setting/range/integer_range/__init__.py +2 -0
  221. cellprofiler_core/setting/range/integer_range/_integer_or_unbounded_range.py +146 -0
  222. cellprofiler_core/setting/range/integer_range/_integer_range.py +25 -0
  223. cellprofiler_core/setting/subscriber/__init__.py +10 -0
  224. cellprofiler_core/setting/subscriber/_grid_subscriber.py +20 -0
  225. cellprofiler_core/setting/subscriber/_label_subscriber.py +20 -0
  226. cellprofiler_core/setting/subscriber/_subscriber.py +73 -0
  227. cellprofiler_core/setting/subscriber/image_subscriber/__init__.py +4 -0
  228. cellprofiler_core/setting/subscriber/image_subscriber/_crop_image_subscriber.py +22 -0
  229. cellprofiler_core/setting/subscriber/image_subscriber/_file_image_subscriber.py +22 -0
  230. cellprofiler_core/setting/subscriber/image_subscriber/_image_subscriber.py +19 -0
  231. cellprofiler_core/setting/subscriber/image_subscriber/_outline_image_subscriber.py +23 -0
  232. cellprofiler_core/setting/subscriber/list_subscriber/__init__.py +3 -0
  233. cellprofiler_core/setting/subscriber/list_subscriber/_image_list_subscriber.py +20 -0
  234. cellprofiler_core/setting/subscriber/list_subscriber/_label_list_subscriber.py +20 -0
  235. cellprofiler_core/setting/subscriber/list_subscriber/_list_subscriber.py +64 -0
  236. cellprofiler_core/setting/text/__init__.py +21 -0
  237. cellprofiler_core/setting/text/_directory.py +229 -0
  238. cellprofiler_core/setting/text/_filename.py +39 -0
  239. cellprofiler_core/setting/text/_text.py +13 -0
  240. cellprofiler_core/setting/text/alphanumeric/__init__.py +10 -0
  241. cellprofiler_core/setting/text/alphanumeric/_alphanumeric.py +56 -0
  242. cellprofiler_core/setting/text/alphanumeric/_character.py +17 -0
  243. cellprofiler_core/setting/text/alphanumeric/name/__init__.py +8 -0
  244. cellprofiler_core/setting/text/alphanumeric/name/_grid_name.py +10 -0
  245. cellprofiler_core/setting/text/alphanumeric/name/_label_name.py +21 -0
  246. cellprofiler_core/setting/text/alphanumeric/name/_name.py +37 -0
  247. cellprofiler_core/setting/text/alphanumeric/name/image_name/__init__.py +5 -0
  248. cellprofiler_core/setting/text/alphanumeric/name/image_name/_crop_image_name.py +17 -0
  249. cellprofiler_core/setting/text/alphanumeric/name/image_name/_external_image_name.py +17 -0
  250. cellprofiler_core/setting/text/alphanumeric/name/image_name/_file_image_name.py +17 -0
  251. cellprofiler_core/setting/text/alphanumeric/name/image_name/_image_name.py +10 -0
  252. cellprofiler_core/setting/text/alphanumeric/name/image_name/_outline_image_name.py +10 -0
  253. cellprofiler_core/setting/text/number/__init__.py +4 -0
  254. cellprofiler_core/setting/text/number/_float.py +16 -0
  255. cellprofiler_core/setting/text/number/_number.py +103 -0
  256. cellprofiler_core/setting/text/number/integer/__init__.py +2 -0
  257. cellprofiler_core/setting/text/number/integer/_integer.py +19 -0
  258. cellprofiler_core/setting/text/number/integer/_odd_integer.py +12 -0
  259. cellprofiler_core/setting/text/pathname/__init__.py +2 -0
  260. cellprofiler_core/setting/text/pathname/_pathname.py +29 -0
  261. cellprofiler_core/setting/text/pathname/_url.py +19 -0
  262. cellprofiler_core/utilities/__init__.py +0 -0
  263. cellprofiler_core/utilities/analysis.py +89 -0
  264. cellprofiler_core/utilities/channel_hasher.py +63 -0
  265. cellprofiler_core/utilities/core/__init__.py +0 -0
  266. cellprofiler_core/utilities/core/module/__init__.py +0 -0
  267. cellprofiler_core/utilities/core/module/identify.py +114 -0
  268. cellprofiler_core/utilities/core/modules/__init__.py +182 -0
  269. cellprofiler_core/utilities/core/modules/load_data.py +200 -0
  270. cellprofiler_core/utilities/core/modules.py +0 -0
  271. cellprofiler_core/utilities/core/object.py +131 -0
  272. cellprofiler_core/utilities/core/pipeline.py +359 -0
  273. cellprofiler_core/utilities/core/plugins.py +122 -0
  274. cellprofiler_core/utilities/core/workspace.py +17 -0
  275. cellprofiler_core/utilities/grid.py +29 -0
  276. cellprofiler_core/utilities/hdf5_dict.py +2680 -0
  277. cellprofiler_core/utilities/image.py +349 -0
  278. cellprofiler_core/utilities/java.py +64 -0
  279. cellprofiler_core/utilities/legacy.py +35 -0
  280. cellprofiler_core/utilities/measurement.py +190 -0
  281. cellprofiler_core/utilities/pathname.py +29 -0
  282. cellprofiler_core/utilities/utf16encode.py +32 -0
  283. cellprofiler_core/utilities/zmq/__init__.py +384 -0
  284. cellprofiler_core/utilities/zmq/_analysis_context.py +77 -0
  285. cellprofiler_core/utilities/zmq/_boundary.py +296 -0
  286. cellprofiler_core/utilities/zmq/communicable/__init__.py +1 -0
  287. cellprofiler_core/utilities/zmq/communicable/_communicable.py +77 -0
  288. cellprofiler_core/utilities/zmq/communicable/reply/__init__.py +3 -0
  289. cellprofiler_core/utilities/zmq/communicable/reply/_lock_status_reply.py +14 -0
  290. cellprofiler_core/utilities/zmq/communicable/reply/_reply.py +13 -0
  291. cellprofiler_core/utilities/zmq/communicable/reply/_upstream_exit.py +5 -0
  292. cellprofiler_core/utilities/zmq/communicable/reply/upstream_exit/__init__.py +2 -0
  293. cellprofiler_core/utilities/zmq/communicable/reply/upstream_exit/_boundary_exited.py +7 -0
  294. cellprofiler_core/utilities/zmq/communicable/reply/upstream_exit/_upstream_exit.py +5 -0
  295. cellprofiler_core/utilities/zmq/communicable/request/__init__.py +3 -0
  296. cellprofiler_core/utilities/zmq/communicable/request/_analysis_request.py +17 -0
  297. cellprofiler_core/utilities/zmq/communicable/request/_lock_status_request.py +12 -0
  298. cellprofiler_core/utilities/zmq/communicable/request/_request.py +57 -0
  299. cellprofiler_core/worker/__init__.py +330 -0
  300. cellprofiler_core/worker/_pipeline_event_listener.py +33 -0
  301. cellprofiler_core/worker/_worker.py +488 -0
  302. cellprofiler_core/workspace/__init__.py +2 -0
  303. cellprofiler_core/workspace/_disposition_changed_event.py +3 -0
  304. cellprofiler_core/workspace/_workspace.py +598 -0
  305. cellprofiler_core_nightly-5.0.0.dev65.dist-info/LICENSE +41 -0
  306. cellprofiler_core_nightly-5.0.0.dev65.dist-info/METADATA +101 -0
  307. cellprofiler_core_nightly-5.0.0.dev65.dist-info/RECORD +309 -0
  308. cellprofiler_core_nightly-5.0.0.dev65.dist-info/WHEEL +5 -0
  309. cellprofiler_core_nightly-5.0.0.dev65.dist-info/top_level.txt +1 -0
@@ -0,0 +1 @@
1
+ from cellprofiler_core._version import __version__
@@ -0,0 +1,55 @@
1
+ import os
2
+ import pathlib
3
+
4
+ import click
5
+
6
+ import cellprofiler_core.commands
7
+
8
+ CONTEXT_SETTINGS = dict(auto_envvar_prefix="COMPLEX")
9
+
10
+
11
+ class Command(click.MultiCommand):
12
+ def get_command(self, context, name):
13
+ try:
14
+ name = f"cellprofiler_core.commands._{name}_command"
15
+
16
+ imported_module = __import__(name, None, None, ["command"])
17
+ except ImportError:
18
+ return
19
+
20
+ return imported_module.command
21
+
22
+ def list_commands(self, context):
23
+ command_names = []
24
+
25
+ commands_pathname = cellprofiler_core.commands.__file__
26
+
27
+ commands_directory = pathlib.Path(commands_pathname).parent
28
+
29
+ for filename in os.listdir(commands_directory):
30
+ if filename.endswith("_command.py") and filename.startswith("_"):
31
+ command_name = filename[1:-11]
32
+
33
+ command_names += [command_name]
34
+
35
+ command_names.sort()
36
+
37
+ return command_names
38
+
39
+
40
+ class Environment:
41
+ def __init__(self):
42
+ pass
43
+
44
+
45
+ pass_environment = click.make_pass_decorator(Environment, ensure=True)
46
+
47
+
48
+ @click.command(cls=Command, context_settings=CONTEXT_SETTINGS)
49
+ @pass_environment
50
+ def main(context):
51
+ pass
52
+
53
+
54
+ if __name__ == "__main__":
55
+ main({})
@@ -0,0 +1,16 @@
1
+ # file generated by setuptools_scm
2
+ # don't change, don't track in version control
3
+ TYPE_CHECKING = False
4
+ if TYPE_CHECKING:
5
+ from typing import Tuple, Union
6
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
7
+ else:
8
+ VERSION_TUPLE = object
9
+
10
+ version: str
11
+ __version__: str
12
+ __version_tuple__: VERSION_TUPLE
13
+ version_tuple: VERSION_TUPLE
14
+
15
+ __version__ = version = '5.0.0.dev65'
16
+ __version_tuple__ = version_tuple = (5, 0, 0, 'dev65')
@@ -0,0 +1,32 @@
1
+ """
2
+ Run pipelines on imagesets to produce measurements.
3
+ """
4
+
5
+ import sys
6
+
7
+
8
+ use_analysis = True
9
+
10
+ DEBUG = "DEBUG"
11
+ ANNOUNCE_DONE = "DONE"
12
+
13
+
14
+ ###############################
15
+ # Request, Replies, Events
16
+ ###############################
17
+
18
+
19
+ if sys.platform == "darwin":
20
+ pass
21
+
22
+ if __name__ == "__main__":
23
+ # This is an ugly hack, but it's necesary to unify the Request/Reply
24
+ # classes above, so that regardless of whether this is the current module,
25
+ # or a separately imported one, they see the same classes.
26
+ import cellprofiler_core.analysis
27
+ from ._runner import Runner
28
+
29
+ globals().update(cellprofiler_core.analysis.__dict__)
30
+
31
+ Runner.start_workers(2)
32
+ Runner.stop_workers()
@@ -0,0 +1,109 @@
1
+ import gc
2
+ import threading
3
+ import uuid
4
+
5
+ from ._runner import Runner
6
+ from ..measurement import Measurements
7
+
8
+
9
+ class Analysis:
10
+ """An Analysis is the application of a particular pipeline of modules to a
11
+ set of images to produce measurements.
12
+
13
+ Multiprocessing for analyses is handled by multiple layers of threads and
14
+ processes, to keep the GUI responsive and simplify the code. Threads and
15
+ processes are organized as below. Display/Interaction requests and
16
+ Exceptions are sent directly to the pipeline listener.
17
+
18
+ +------------------------------------------------+
19
+ | CellProfiler GUI/WX thread |
20
+ | |
21
+ +- Analysis() methods down, Events/Requests up -+
22
+ | |
23
+ | AnalysisRunner.interface() thread |
24
+ | |
25
+ +---------------- Queues ----------------------+
26
+ | |
27
+ | AnalysisRunner.jobserver()/announce() threads |
28
+ | |
29
+ +----------------------------------------------- +
30
+ | zmqrequest.Boundary() |
31
+ +---------------+----------------+---------------+
32
+ | Worker | Worker | Worker |
33
+ +---------------+----------------+---------------+
34
+
35
+ Workers are managed by class variables in the AnalysisRunner.
36
+ """
37
+
38
+ def __init__(self, pipeline, initial_measurements=None):
39
+ """create an Analysis applying pipeline to a set of images, writing out
40
+ to measurements_filename, optionally starting with previous
41
+ measurements."""
42
+ self.pipeline = pipeline
43
+ initial_measurements = Measurements(copy=initial_measurements)
44
+ self.initial_measurements_buf = initial_measurements.file_contents()
45
+ initial_measurements.close()
46
+ self.debug_mode = False
47
+ self.analysis_in_progress = False
48
+ self.runner = None
49
+
50
+ self.runner_lock = threading.Lock() # defensive coding purposes
51
+
52
+ def start(self, analysis_event_callback, num_workers=None, overwrite=True):
53
+ """Start the analysis runner
54
+
55
+ analysis_event_callback - callback from runner to UI thread for
56
+ event progress and UI handlers
57
+
58
+ num_workers - # of worker processes to instantiate, default is # of cores
59
+
60
+ overwrite - True (default) to process all image sets, False to only
61
+ process incomplete ones (or incomplete groups if grouping)
62
+ """
63
+ with self.runner_lock:
64
+ assert not self.analysis_in_progress
65
+ self.analysis_in_progress = uuid.uuid1().hex
66
+
67
+ self.runner = Runner(
68
+ self.analysis_in_progress,
69
+ self.pipeline,
70
+ self.initial_measurements_buf,
71
+ analysis_event_callback,
72
+ )
73
+ self.runner.start(num_workers=num_workers, overwrite=overwrite)
74
+ return self.analysis_in_progress
75
+
76
+ def pause(self):
77
+ with self.runner_lock:
78
+ assert self.analysis_in_progress
79
+ self.runner.pause()
80
+
81
+ def resume(self):
82
+ with self.runner_lock:
83
+ assert self.analysis_in_progress
84
+ self.runner.resume()
85
+
86
+ def cancel(self):
87
+ with self.runner_lock:
88
+ if not self.analysis_in_progress:
89
+ return
90
+ self.analysis_in_progress = False
91
+ self.runner.cancel()
92
+ self.runner = None
93
+ """
94
+ Explicitly call GC here so that the old runner's threads and
95
+ queues get deleted before any new analysis can be started.
96
+ On rare occasions CP can hang when threads get GC'd during a run
97
+ """
98
+ gc.collect()
99
+
100
+ def check_running(self):
101
+ """Verify that an analysis is running, allowing the GUI to recover even
102
+ if the AnalysisRunner fails in some way.
103
+
104
+ Returns True if analysis is still running (threads are still alive).
105
+ """
106
+ with self.runner_lock:
107
+ if self.analysis_in_progress:
108
+ return self.runner.check()
109
+ return False