cellfinder 1.1.3__tar.gz → 1.3.0rc0__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.

Potentially problematic release.


This version of cellfinder might be problematic. Click here for more details.

Files changed (233) hide show
  1. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/.github/workflows/test_and_deploy.yml +36 -19
  2. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/.github/workflows/test_include_guard.yaml +9 -7
  3. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/.gitignore +0 -5
  4. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/PKG-INFO +11 -11
  5. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/README.md +7 -7
  6. cellfinder-1.3.0rc0/cellfinder/__init__.py +33 -0
  7. cellfinder-1.3.0rc0/cellfinder/__pycache__/__init__.cpython-310.pyc +0 -0
  8. cellfinder-1.3.0rc0/cellfinder/__pycache__/__init__.cpython-311.pyc +0 -0
  9. cellfinder-1.3.0rc0/cellfinder/__pycache__/__init__.cpython-312.pyc +0 -0
  10. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/__init__.cpython-310.pyc +0 -0
  11. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/__init__.cpython-311.pyc +0 -0
  12. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/__init__.cpython-312.pyc +0 -0
  13. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/main.cpython-310.pyc +0 -0
  14. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/main.cpython-311.pyc +0 -0
  15. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/main.cpython-312.pyc +0 -0
  16. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/types.cpython-310.pyc +0 -0
  17. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/types.cpython-311.pyc +0 -0
  18. cellfinder-1.3.0rc0/cellfinder/core/__pycache__/types.cpython-312.pyc +0 -0
  19. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/__init__.cpython-310.pyc +0 -0
  20. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/__init__.cpython-311.pyc +0 -0
  21. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/__init__.cpython-312.pyc +0 -0
  22. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/augment.cpython-310.pyc +0 -0
  23. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/augment.cpython-311.pyc +0 -0
  24. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/augment.cpython-312.pyc +0 -0
  25. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/classify.cpython-310.pyc +0 -0
  26. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/classify.cpython-311.pyc +0 -0
  27. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/classify.cpython-312.pyc +0 -0
  28. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/cube_generator.cpython-310.pyc +0 -0
  29. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/cube_generator.cpython-311.pyc +0 -0
  30. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/cube_generator.cpython-312.pyc +0 -0
  31. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/resnet.cpython-310.pyc +0 -0
  32. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/resnet.cpython-311.pyc +0 -0
  33. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/resnet.cpython-312.pyc +0 -0
  34. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/tools.cpython-310.pyc +0 -0
  35. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/tools.cpython-311.pyc +0 -0
  36. cellfinder-1.3.0rc0/cellfinder/core/classify/__pycache__/tools.cpython-312.pyc +0 -0
  37. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/classify/classify.py +5 -6
  38. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/classify/cube_generator.py +25 -9
  39. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/classify/resnet.py +9 -6
  40. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/classify/tools.py +13 -11
  41. cellfinder-1.3.0rc0/cellfinder/core/config/cellfinder.conf.custom +3 -0
  42. cellfinder-1.3.0rc0/cellfinder/core/detect/__pycache__/__init__.cpython-310.pyc +0 -0
  43. cellfinder-1.3.0rc0/cellfinder/core/detect/__pycache__/__init__.cpython-311.pyc +0 -0
  44. cellfinder-1.3.0rc0/cellfinder/core/detect/__pycache__/__init__.cpython-312.pyc +0 -0
  45. cellfinder-1.3.0rc0/cellfinder/core/detect/__pycache__/detect.cpython-310.pyc +0 -0
  46. cellfinder-1.3.0rc0/cellfinder/core/detect/__pycache__/detect.cpython-311.pyc +0 -0
  47. cellfinder-1.3.0rc0/cellfinder/core/detect/__pycache__/detect.cpython-312.pyc +0 -0
  48. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/detect.py +12 -1
  49. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/__pycache__/__init__.cpython-310.pyc +0 -0
  50. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/__pycache__/__init__.cpython-311.pyc +0 -0
  51. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/__pycache__/__init__.cpython-312.pyc +0 -0
  52. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/__pycache__/setup_filters.cpython-310.pyc +0 -0
  53. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/__pycache__/setup_filters.cpython-311.pyc +0 -0
  54. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/__pycache__/setup_filters.cpython-312.pyc +0 -0
  55. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/__init__.cpython-310.pyc +0 -0
  56. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/__init__.cpython-311.pyc +0 -0
  57. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/__init__.cpython-312.pyc +0 -0
  58. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/classical_filter.cpython-310.pyc +0 -0
  59. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/classical_filter.cpython-311.pyc +0 -0
  60. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/classical_filter.cpython-312.pyc +0 -0
  61. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/plane_filter.cpython-310.pyc +0 -0
  62. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/plane_filter.cpython-311.pyc +0 -0
  63. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/plane_filter.cpython-312.pyc +0 -0
  64. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/tile_walker.cpython-310.pyc +0 -0
  65. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/tile_walker.cpython-311.pyc +0 -0
  66. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/plane/__pycache__/tile_walker.cpython-312.pyc +0 -0
  67. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/__init__.cpython-310.pyc +0 -0
  68. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/__init__.cpython-311.pyc +0 -0
  69. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/__init__.cpython-312.pyc +0 -0
  70. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-199.py310.1.nbc +0 -0
  71. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-199.py310.nbi +0 -0
  72. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py310.1.nbc +0 -0
  73. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py310.2.nbc +0 -0
  74. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py310.nbi +0 -0
  75. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py311.1.nbc +0 -0
  76. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py311.2.nbc +0 -0
  77. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py311.nbi +0 -0
  78. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py312.1.nbc +0 -0
  79. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py312.2.nbc +0 -0
  80. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter._cube_overlaps-263.py312.nbi +0 -0
  81. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter.cpython-310.pyc +0 -0
  82. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter.cpython-311.pyc +0 -0
  83. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/ball_filter.cpython-312.pyc +0 -0
  84. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/structure_detection.cpython-310.pyc +0 -0
  85. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/structure_detection.cpython-311.pyc +0 -0
  86. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/structure_detection.cpython-312.pyc +0 -0
  87. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/structure_splitting.cpython-310.pyc +0 -0
  88. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/structure_splitting.cpython-311.pyc +0 -0
  89. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/structure_splitting.cpython-312.pyc +0 -0
  90. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/volume_filter.cpython-310.pyc +0 -0
  91. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/volume_filter.cpython-311.pyc +0 -0
  92. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/__pycache__/volume_filter.cpython-312.pyc +0 -0
  93. cellfinder-1.3.0rc0/cellfinder/core/detect/filters/volume/ball_filter.py +417 -0
  94. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/volume/structure_detection.py +105 -41
  95. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/volume/structure_splitting.py +1 -1
  96. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/volume/volume_filter.py +48 -49
  97. cellfinder-1.3.0rc0/cellfinder/core/download/__pycache__/__init__.cpython-310.pyc +0 -0
  98. cellfinder-1.3.0rc0/cellfinder/core/download/__pycache__/__init__.cpython-311.pyc +0 -0
  99. cellfinder-1.3.0rc0/cellfinder/core/download/__pycache__/__init__.cpython-312.pyc +0 -0
  100. cellfinder-1.3.0rc0/cellfinder/core/download/__pycache__/cli.cpython-310.pyc +0 -0
  101. cellfinder-1.3.0rc0/cellfinder/core/download/__pycache__/cli.cpython-312.pyc +0 -0
  102. cellfinder-1.3.0rc0/cellfinder/core/download/__pycache__/download.cpython-310.pyc +0 -0
  103. cellfinder-1.3.0rc0/cellfinder/core/download/__pycache__/download.cpython-311.pyc +0 -0
  104. cellfinder-1.3.0rc0/cellfinder/core/download/__pycache__/download.cpython-312.pyc +0 -0
  105. cellfinder-1.3.0rc0/cellfinder/core/download/cli.py +79 -0
  106. cellfinder-1.3.0rc0/cellfinder/core/download/download.py +120 -0
  107. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/main.py +52 -67
  108. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/IO.cpython-310.pyc +0 -0
  109. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/__init__.cpython-310.pyc +0 -0
  110. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/__init__.cpython-311.pyc +0 -0
  111. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/__init__.cpython-312.pyc +0 -0
  112. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/array_operations.cpython-310.pyc +0 -0
  113. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/array_operations.cpython-311.pyc +0 -0
  114. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/array_operations.cpython-312.pyc +0 -0
  115. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/geometry.cpython-310.pyc +0 -0
  116. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/geometry.cpython-311.pyc +0 -0
  117. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/geometry.cpython-312.pyc +0 -0
  118. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/image_processing.cpython-310.pyc +0 -0
  119. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/image_processing.cpython-312.pyc +0 -0
  120. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/prep.cpython-310.pyc +0 -0
  121. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/prep.cpython-311.pyc +0 -0
  122. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/prep.cpython-312.pyc +0 -0
  123. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/source_files.cpython-310.pyc +0 -0
  124. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/source_files.cpython-311.pyc +0 -0
  125. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/source_files.cpython-312.pyc +0 -0
  126. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/system.cpython-310.pyc +0 -0
  127. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/system.cpython-312.pyc +0 -0
  128. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/tf.cpython-310.pyc +0 -0
  129. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/tiff.cpython-310.pyc +0 -0
  130. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/tiff.cpython-312.pyc +0 -0
  131. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/tools.cpython-310.pyc +0 -0
  132. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/tools.cpython-311.pyc +0 -0
  133. cellfinder-1.3.0rc0/cellfinder/core/tools/__pycache__/tools.cpython-312.pyc +0 -0
  134. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/prep.py +12 -20
  135. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/source_files.py +5 -3
  136. cellfinder-1.3.0rc0/cellfinder/core/train/__pycache__/__init__.cpython-310.pyc +0 -0
  137. cellfinder-1.3.0rc0/cellfinder/core/train/__pycache__/__init__.cpython-311.pyc +0 -0
  138. cellfinder-1.3.0rc0/cellfinder/core/train/__pycache__/__init__.cpython-312.pyc +0 -0
  139. cellfinder-1.3.0rc0/cellfinder/core/train/__pycache__/train_yml.cpython-310.pyc +0 -0
  140. cellfinder-1.3.0rc0/cellfinder/core/train/__pycache__/train_yml.cpython-311.pyc +0 -0
  141. cellfinder-1.3.0rc0/cellfinder/core/train/__pycache__/train_yml.cpython-312.pyc +0 -0
  142. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/train/train_yml.py +29 -27
  143. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/__init__.cpython-310.pyc +0 -0
  144. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/__init__.cpython-311.pyc +0 -0
  145. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/__init__.cpython-312.pyc +0 -0
  146. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/curation.cpython-310.pyc +0 -0
  147. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/curation.cpython-312.pyc +0 -0
  148. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/input_container.cpython-310.pyc +0 -0
  149. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/input_container.cpython-311.pyc +0 -0
  150. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/input_container.cpython-312.pyc +0 -0
  151. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/sample_data.cpython-310.pyc +0 -0
  152. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/sample_data.cpython-312.pyc +0 -0
  153. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/utils.cpython-310.pyc +0 -0
  154. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/utils.cpython-311.pyc +0 -0
  155. cellfinder-1.3.0rc0/cellfinder/napari/__pycache__/utils.cpython-312.pyc +0 -0
  156. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/__init__.cpython-310.pyc +0 -0
  157. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/__init__.cpython-311.pyc +0 -0
  158. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/__init__.cpython-312.pyc +0 -0
  159. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/detect.cpython-310.pyc +0 -0
  160. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/detect.cpython-311.pyc +0 -0
  161. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/detect.cpython-312.pyc +0 -0
  162. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/detect_containers.cpython-310.pyc +0 -0
  163. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/detect_containers.cpython-311.pyc +0 -0
  164. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/detect_containers.cpython-312.pyc +0 -0
  165. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/thread_worker.cpython-310.pyc +0 -0
  166. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/thread_worker.cpython-311.pyc +0 -0
  167. cellfinder-1.3.0rc0/cellfinder/napari/detect/__pycache__/thread_worker.cpython-312.pyc +0 -0
  168. cellfinder-1.3.0rc0/cellfinder/napari/detect/detect.py +428 -0
  169. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/detect/detect_containers.py +9 -1
  170. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/detect/thread_worker.py +14 -0
  171. cellfinder-1.3.0rc0/cellfinder/napari/train/__pycache__/__init__.cpython-310.pyc +0 -0
  172. cellfinder-1.3.0rc0/cellfinder/napari/train/__pycache__/__init__.cpython-312.pyc +0 -0
  173. cellfinder-1.3.0rc0/cellfinder/napari/train/__pycache__/train.cpython-310.pyc +0 -0
  174. cellfinder-1.3.0rc0/cellfinder/napari/train/__pycache__/train.cpython-312.pyc +0 -0
  175. cellfinder-1.3.0rc0/cellfinder/napari/train/__pycache__/train_containers.cpython-310.pyc +0 -0
  176. cellfinder-1.3.0rc0/cellfinder/napari/train/__pycache__/train_containers.cpython-312.pyc +0 -0
  177. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/train/train.py +2 -9
  178. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/train/train_containers.py +3 -3
  179. cellfinder-1.3.0rc0/cellfinder/napari/utils.py +133 -0
  180. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder.egg-info/PKG-INFO +11 -11
  181. cellfinder-1.3.0rc0/cellfinder.egg-info/SOURCES.txt +220 -0
  182. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder.egg-info/requires.txt +3 -7
  183. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/pyproject.toml +9 -7
  184. cellfinder-1.1.3/cellfinder/__init__.py +0 -24
  185. cellfinder-1.1.3/cellfinder/core/detect/filters/volume/ball_filter.py +0 -332
  186. cellfinder-1.1.3/cellfinder/core/download/cli.py +0 -72
  187. cellfinder-1.1.3/cellfinder/core/download/download.py +0 -132
  188. cellfinder-1.1.3/cellfinder/core/download/models.py +0 -49
  189. cellfinder-1.1.3/cellfinder/core/tools/IO.py +0 -48
  190. cellfinder-1.1.3/cellfinder/core/tools/tf.py +0 -46
  191. cellfinder-1.1.3/cellfinder/napari/detect/detect.py +0 -233
  192. cellfinder-1.1.3/cellfinder/napari/images/brainglobe.png +0 -0
  193. cellfinder-1.1.3/cellfinder/napari/utils.py +0 -92
  194. cellfinder-1.1.3/cellfinder.egg-info/SOURCES.txt +0 -72
  195. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/.napari/config.yml +0 -0
  196. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/CITATION.cff +0 -0
  197. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/LICENSE +0 -0
  198. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/MANIFEST.in +1 -1
  199. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/cli_migration_warning.py +0 -0
  200. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/__init__.py +0 -0
  201. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/classify/__init__.py +0 -0
  202. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/classify/augment.py +0 -0
  203. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/config/__init__.py +0 -0
  204. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/config/cellfinder.conf +0 -0
  205. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/__init__.py +0 -0
  206. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/__init__.py +0 -0
  207. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/plane/__init__.py +0 -0
  208. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/plane/classical_filter.py +0 -0
  209. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/plane/plane_filter.py +0 -0
  210. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/plane/tile_walker.py +0 -0
  211. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/setup_filters.py +0 -0
  212. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/detect/filters/volume/__init__.py +0 -0
  213. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/download/__init__.py +0 -0
  214. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/__init__.py +0 -0
  215. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/array_operations.py +0 -0
  216. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/geometry.py +0 -0
  217. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/image_processing.py +0 -0
  218. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/system.py +0 -0
  219. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/tiff.py +0 -0
  220. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/tools/tools.py +0 -0
  221. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/train/__init__.py +0 -0
  222. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/core/types.py +0 -0
  223. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/__init__.py +0 -0
  224. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/curation.py +0 -0
  225. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/detect/__init__.py +0 -0
  226. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/input_container.py +0 -0
  227. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/napari.yaml +0 -0
  228. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/sample_data.py +0 -0
  229. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder/napari/train/__init__.py +0 -0
  230. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder.egg-info/dependency_links.txt +0 -0
  231. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder.egg-info/entry_points.txt +0 -0
  232. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/cellfinder.egg-info/top_level.txt +0 -0
  233. {cellfinder-1.1.3 → cellfinder-1.3.0rc0}/setup.cfg +0 -0
@@ -37,25 +37,31 @@ jobs:
37
37
  name: Run package tests
38
38
  timeout-minutes: 60
39
39
  runs-on: ${{ matrix.os }}
40
+ env:
41
+ KERAS_BACKEND: torch
42
+ CELLFINDER_TEST_DEVICE: cpu
40
43
  strategy:
41
44
  matrix:
42
45
  # Run all supported Python versions on linux
43
46
  os: [ubuntu-latest]
44
- python-version: ["3.9", "3.10"]
45
- # Include one windows, one macos run
47
+ python-version: ["3.9", "3.10", "3.11"]
48
+ # Include one windows and two macOS (intel based and arm based) runs
46
49
  include:
47
- - os: macos-latest
48
- python-version: "3.10"
49
- - os: windows-latest
50
- python-version: "3.10"
50
+ - os: macos-13
51
+ python-version: "3.10"
52
+ - os: macos-latest
53
+ python-version: "3.10"
54
+ - os: windows-latest
55
+ python-version: "3.10"
51
56
 
52
57
  steps:
53
- # Cache the tensorflow model so we don't have to remake it every time
54
- - name: Cache tensorflow model
58
+ - name: Cache brainglobe directory
55
59
  uses: actions/cache@v3
56
60
  with:
57
- path: "~/.cellfinder"
58
- key: models-${{ hashFiles('~/.cellfinder/**') }}
61
+ path: | # ensure we don't cache any interrupted atlas download and extraction, if e.g. we cancel the workflow manually
62
+ ~/.brainglobe
63
+ !~/.brainglobe/atlas.tar.gz
64
+ key: brainglobe
59
65
  # Setup pyqt libraries
60
66
  - name: Setup qtpy libraries
61
67
  uses: tlambert03/setup-qt-libs@v1
@@ -65,21 +71,25 @@ jobs:
65
71
  - uses: neuroinformatics-unit/actions/test@v2
66
72
  with:
67
73
  python-version: ${{ matrix.python-version }}
74
+ secret-codecov-token: ${{ secrets.CODECOV_TOKEN }}
68
75
  use-xvfb: true
69
76
 
70
77
  test_numba_disabled:
71
78
  needs: [linting, manifest]
72
79
  name: Run tests with numba disabled
80
+ timeout-minutes: 60
73
81
  runs-on: ubuntu-latest
74
82
  env:
75
83
  NUMBA_DISABLE_JIT: "1"
76
84
 
77
85
  steps:
78
- - name: Cache tensorflow model
86
+ - name: Cache brainglobe directory
79
87
  uses: actions/cache@v3
80
88
  with:
81
- path: "~/.cellfinder"
82
- key: models-${{ hashFiles('~/.cellfinder/**') }}
89
+ path: | # ensure we don't cache any interrupted atlas download and extraction, if e.g. we cancel the workflow manually
90
+ ~/.brainglobe
91
+ !~/.brainglobe/atlas.tar.gz
92
+ key: brainglobe
83
93
  # Setup pyqt libraries
84
94
  - name: Setup qtpy libraries
85
95
  uses: tlambert03/setup-qt-libs@v1
@@ -89,6 +99,7 @@ jobs:
89
99
  - uses: neuroinformatics-unit/actions/test@v2
90
100
  with:
91
101
  python-version: "3.10"
102
+ secret-codecov-token: ${{ secrets.CODECOV_TOKEN }}
92
103
  codecov-flags: "numba"
93
104
 
94
105
  # Run brainglobe-workflows brainmapper-CLI tests to check for
@@ -96,14 +107,19 @@ jobs:
96
107
  test_brainmapper_cli:
97
108
  needs: [linting, manifest]
98
109
  name: Run brainmapper tests to check for breakages
110
+ timeout-minutes: 60
99
111
  runs-on: ubuntu-latest
112
+ env:
113
+ KERAS_BACKEND: torch
114
+ CELLFINDER_TEST_DEVICE: cpu
100
115
  steps:
101
- - name: Cache tensorflow model
116
+ - name: Cache brainglobe directory
102
117
  uses: actions/cache@v3
103
118
  with:
104
- path: "~/.cellfinder"
105
- key: models-${{ hashFiles('~/.cellfinder/**') }}
106
-
119
+ path: | # ensure we don't cache any interrupted atlas download and extraction, if e.g. we cancel the workflow manually
120
+ ~/.brainglobe
121
+ !~/.brainglobe/atlas.tar.gz
122
+ key: brainglobe
107
123
  - name: Checkout brainglobe-workflows
108
124
  uses: actions/checkout@v3
109
125
  with:
@@ -117,8 +133,9 @@ jobs:
117
133
  - name: Install test dependencies
118
134
  run: |
119
135
  python -m pip install --upgrade pip wheel
120
- # Install latest SHA on this brainglobe-workflows branch
121
- python -m pip install git+$GITHUB_SERVER_URL/$GITHUB_REPOSITORY@$GITHUB_SHA
136
+ # Install cellfinder from the latest SHA on this branch
137
+ python -m pip install "cellfinder @ git+$GITHUB_SERVER_URL/$GITHUB_REPOSITORY@$GITHUB_SHA"
138
+
122
139
  # Install checked out copy of brainglobe-workflows
123
140
  python -m pip install .[dev]
124
141
 
@@ -1,5 +1,5 @@
1
- name: Test Tensorflow include guards
2
- # These tests check that the include guards checking for tensorflow's availability
1
+ name: Test Keras include guards
2
+ # These tests check that the include guards checking for Keras availability
3
3
  # behave as expected on ubuntu and macOS.
4
4
 
5
5
  on:
@@ -9,7 +9,7 @@ on:
9
9
  - main
10
10
 
11
11
  jobs:
12
- tensorflow_guards:
12
+ keras_guards:
13
13
  name: Test include guards
14
14
  strategy:
15
15
  matrix:
@@ -24,19 +24,21 @@ jobs:
24
24
  with:
25
25
  python-version: '3.10'
26
26
 
27
- - name: Install via pip
28
- run: python -m pip install -e .
27
+ - name: Install cellfinder via pip
28
+ run: python -m pip install -e "."
29
29
 
30
30
  - name: Test (working) import
31
31
  uses: jannekem/run-python-script-action@v1
32
+ env:
33
+ KERAS_BACKEND: torch
32
34
  with:
33
35
  fail-on-error: true
34
36
  script: |
35
37
  import cellfinder.core
36
38
  import cellfinder.napari
37
39
 
38
- - name: Uninstall tensorflow
39
- run: python -m pip uninstall -y tensorflow
40
+ - name: Uninstall keras
41
+ run: python -m pip uninstall -y keras
40
42
 
41
43
  - name: Test (broken) import
42
44
  id: broken_import
@@ -130,11 +130,6 @@ mprofile*.dat
130
130
 
131
131
  *.DS_Store
132
132
 
133
- # asv
134
- .asv
135
- benchmarks/results
136
- benchmarks/html
137
- benchmarks/env
138
133
 
139
134
  # OS
140
135
  .DS_Store
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cellfinder
3
- Version: 1.1.3
3
+ Version: 1.3.0rc0
4
4
  Summary: Automated 3D cell detection in large microscopy images
5
5
  Author-email: "Adam Tyson, Christian Niedworok, Charly Rousseau" <code@adamltyson.com>
6
6
  License: BSD-3-Clause
@@ -22,7 +22,7 @@ Classifier: Topic :: Scientific/Engineering :: Image Recognition
22
22
  Requires-Python: >=3.9
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
- Requires-Dist: brainglobe-utils>=0.4.2
25
+ Requires-Dist: brainglobe-utils>=0.5.0
26
26
  Requires-Dist: brainglobe-napari-io>=0.3.4
27
27
  Requires-Dist: dask[array]
28
28
  Requires-Dist: fancylog>=0.0.7
@@ -31,8 +31,8 @@ Requires-Dist: numba
31
31
  Requires-Dist: numpy
32
32
  Requires-Dist: scikit-image
33
33
  Requires-Dist: scikit-learn
34
- Requires-Dist: tensorflow-macos<2.12.0,>=2.5.0; platform_system == "Darwin" and platform_machine == "arm64"
35
- Requires-Dist: tensorflow<2.12.0,>=2.5.0; platform_system != "Darwin" or platform_machine != "arm64"
34
+ Requires-Dist: keras>=3.0.0
35
+ Requires-Dist: torch>=2.1.0
36
36
  Requires-Dist: tifffile
37
37
  Requires-Dist: tqdm
38
38
  Provides-Extra: dev
@@ -54,17 +54,17 @@ Requires-Dist: napari[pyqt5]; extra == "napari"
54
54
  Requires-Dist: pooch>=1; extra == "napari"
55
55
  Requires-Dist: qtpy; extra == "napari"
56
56
 
57
- [![Python Version](https://img.shields.io/pypi/pyversions/cellfinder-core.svg)](https://pypi.org/project/cellfinder)
58
- [![PyPI](https://img.shields.io/pypi/v/cellfinder-core.svg)](https://pypi.org/project/cellfinder)
59
- [![Downloads](https://pepy.tech/badge/cellfinder-core)](https://pepy.tech/project/cellfinder)
60
- [![Wheel](https://img.shields.io/pypi/wheel/cellfinder-core.svg)](https://pypi.org/project/cellfinder)
61
- [![Development Status](https://img.shields.io/pypi/status/cellfinder-core.svg)](https://github.com/brainglobe/cellfinder)
57
+ [![Python Version](https://img.shields.io/pypi/pyversions/cellfinder.svg)](https://pypi.org/project/cellfinder)
58
+ [![PyPI](https://img.shields.io/pypi/v/cellfinder.svg)](https://pypi.org/project/cellfinder)
59
+ [![Downloads](https://pepy.tech/badge/cellfinder)](https://pepy.tech/project/cellfinder)
60
+ [![Wheel](https://img.shields.io/pypi/wheel/cellfinder.svg)](https://pypi.org/project/cellfinder)
61
+ [![Development Status](https://img.shields.io/pypi/status/cellfinder.svg)](https://github.com/brainglobe/cellfinder)
62
62
  [![Tests](https://img.shields.io/github/actions/workflow/status/brainglobe/cellfinder/test_and_deploy.yml?branch=main)](https://github.com/brainglobe/cellfinder/actions)
63
- [![codecov](https://codecov.io/gh/brainglobe/cellfinder-core/branch/main/graph/badge.svg?token=nx1lhNI7ox)](https://codecov.io/gh/brainglobe/cellfinder)
63
+ [![codecov](https://codecov.io/gh/brainglobe/cellfinder/branch/main/graph/badge.svg?token=nx1lhNI7ox)](https://codecov.io/gh/brainglobe/cellfinder)
64
64
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)
65
65
  [![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)
66
66
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
67
- [![Contributions](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](https://brainglobe.info/developers/index.html)
67
+ [![Contributions](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](https://brainglobe.info/community/developers/index.html)
68
68
  [![Twitter](https://img.shields.io/twitter/follow/brain_globe?style=social)](https://twitter.com/brain_globe)
69
69
 
70
70
  # cellfinder
@@ -1,14 +1,14 @@
1
- [![Python Version](https://img.shields.io/pypi/pyversions/cellfinder-core.svg)](https://pypi.org/project/cellfinder)
2
- [![PyPI](https://img.shields.io/pypi/v/cellfinder-core.svg)](https://pypi.org/project/cellfinder)
3
- [![Downloads](https://pepy.tech/badge/cellfinder-core)](https://pepy.tech/project/cellfinder)
4
- [![Wheel](https://img.shields.io/pypi/wheel/cellfinder-core.svg)](https://pypi.org/project/cellfinder)
5
- [![Development Status](https://img.shields.io/pypi/status/cellfinder-core.svg)](https://github.com/brainglobe/cellfinder)
1
+ [![Python Version](https://img.shields.io/pypi/pyversions/cellfinder.svg)](https://pypi.org/project/cellfinder)
2
+ [![PyPI](https://img.shields.io/pypi/v/cellfinder.svg)](https://pypi.org/project/cellfinder)
3
+ [![Downloads](https://pepy.tech/badge/cellfinder)](https://pepy.tech/project/cellfinder)
4
+ [![Wheel](https://img.shields.io/pypi/wheel/cellfinder.svg)](https://pypi.org/project/cellfinder)
5
+ [![Development Status](https://img.shields.io/pypi/status/cellfinder.svg)](https://github.com/brainglobe/cellfinder)
6
6
  [![Tests](https://img.shields.io/github/actions/workflow/status/brainglobe/cellfinder/test_and_deploy.yml?branch=main)](https://github.com/brainglobe/cellfinder/actions)
7
- [![codecov](https://codecov.io/gh/brainglobe/cellfinder-core/branch/main/graph/badge.svg?token=nx1lhNI7ox)](https://codecov.io/gh/brainglobe/cellfinder)
7
+ [![codecov](https://codecov.io/gh/brainglobe/cellfinder/branch/main/graph/badge.svg?token=nx1lhNI7ox)](https://codecov.io/gh/brainglobe/cellfinder)
8
8
  [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)
9
9
  [![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)
10
10
  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
11
- [![Contributions](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](https://brainglobe.info/developers/index.html)
11
+ [![Contributions](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](https://brainglobe.info/community/developers/index.html)
12
12
  [![Twitter](https://img.shields.io/twitter/follow/brain_globe?style=social)](https://twitter.com/brain_globe)
13
13
 
14
14
  # cellfinder
@@ -0,0 +1,33 @@
1
+ import os
2
+ from importlib.metadata import PackageNotFoundError, version
3
+ from pathlib import Path
4
+
5
+ # Check cellfinder is installed
6
+ try:
7
+ __version__ = version("cellfinder")
8
+ except PackageNotFoundError as e:
9
+ raise PackageNotFoundError("cellfinder package not installed") from e
10
+
11
+ # If Keras is not present, tools cannot be used.
12
+ # Throw an error in this case to prevent invocation of functions.
13
+ try:
14
+ KERAS_VERSION = version("keras")
15
+ except PackageNotFoundError as e:
16
+ raise PackageNotFoundError(
17
+ f"cellfinder tools cannot be invoked without Keras. "
18
+ f"Please install Keras with a backend into your environment "
19
+ f"to use cellfinder tools. "
20
+ f"For more information on Keras backends, please see "
21
+ f"https://keras.io/getting_started/#installing-keras-3."
22
+ f"For more information on brainglobe, please see "
23
+ f"https://github.com/brainglobe/brainglobe-meta#readme."
24
+ ) from e
25
+
26
+
27
+ # Set the Keras backend to torch
28
+ os.environ["KERAS_BACKEND"] = "torch"
29
+
30
+ __author__ = "Adam Tyson, Christian Niedworok, Charly Rousseau"
31
+ __license__ = "BSD-3-Clause"
32
+
33
+ DEFAULT_CELLFINDER_DIRECTORY = Path.home() / ".brainglobe" / "cellfinder"
@@ -1,10 +1,10 @@
1
1
  import os
2
2
  from typing import Any, Callable, Dict, List, Optional, Tuple
3
3
 
4
+ import keras
4
5
  import numpy as np
5
6
  from brainglobe_utils.cells.cells import Cell
6
7
  from brainglobe_utils.general.system import get_num_processes
7
- from tensorflow import keras
8
8
 
9
9
  from cellfinder.core import logger, types
10
10
  from cellfinder.core.classify.cube_generator import CubeGeneratorFromFile
@@ -48,9 +48,7 @@ def main(
48
48
  callbacks = None
49
49
 
50
50
  # Too many workers doesn't increase speed, and uses huge amounts of RAM
51
- workers = get_num_processes(
52
- min_free_cpu_cores=n_free_cpus, n_max_processes=max_workers
53
- )
51
+ workers = get_num_processes(min_free_cpu_cores=n_free_cpus)
54
52
 
55
53
  logger.debug("Initialising cube generator")
56
54
  inference_generator = CubeGeneratorFromFile(
@@ -63,6 +61,8 @@ def main(
63
61
  cube_width=cube_width,
64
62
  cube_height=cube_height,
65
63
  cube_depth=cube_depth,
64
+ use_multiprocessing=False,
65
+ workers=workers,
66
66
  )
67
67
 
68
68
  model = get_model(
@@ -73,10 +73,9 @@ def main(
73
73
  )
74
74
 
75
75
  logger.info("Running inference")
76
+ # in Keras 3.0 multiprocessing params are specified in the generator
76
77
  predictions = model.predict(
77
78
  inference_generator,
78
- use_multiprocessing=True,
79
- workers=workers,
80
79
  verbose=True,
81
80
  callbacks=callbacks,
82
81
  )
@@ -2,13 +2,13 @@ from pathlib import Path
2
2
  from random import shuffle
3
3
  from typing import Dict, List, Optional, Tuple, Union
4
4
 
5
+ import keras
5
6
  import numpy as np
6
- import tensorflow as tf
7
7
  from brainglobe_utils.cells.cells import Cell, group_cells_by_z
8
8
  from brainglobe_utils.general.numerical import is_even
9
+ from keras.utils import Sequence
9
10
  from scipy.ndimage import zoom
10
11
  from skimage.io import imread
11
- from tensorflow.keras.utils import Sequence
12
12
 
13
13
  from cellfinder.core import types
14
14
  from cellfinder.core.classify.augment import AugmentationParameters, augment
@@ -56,7 +56,14 @@ class CubeGeneratorFromFile(Sequence):
56
56
  translate: Tuple[float, float, float] = (0.05, 0.05, 0.05),
57
57
  shuffle: bool = False,
58
58
  interpolation_order: int = 2,
59
+ *args,
60
+ **kwargs,
59
61
  ):
62
+ # pass any additional arguments not specified in signature to the
63
+ # constructor of the superclass (e.g.: `use_multiprocessing` or
64
+ # `workers`)
65
+ super().__init__(*args, **kwargs)
66
+
60
67
  self.points = points
61
68
  self.signal_array = signal_array
62
69
  self.background_array = background_array
@@ -218,10 +225,10 @@ class CubeGeneratorFromFile(Sequence):
218
225
 
219
226
  if self.train:
220
227
  batch_labels = [cell.type - 1 for cell in cell_batch]
221
- batch_labels = tf.keras.utils.to_categorical(
228
+ batch_labels = keras.utils.to_categorical(
222
229
  batch_labels, num_classes=self.classes
223
230
  )
224
- return images, batch_labels
231
+ return images, batch_labels.astype(np.float32)
225
232
  elif self.extract:
226
233
  batch_info = self.__get_batch_dict(cell_batch)
227
234
  return images, batch_info
@@ -252,7 +259,8 @@ class CubeGeneratorFromFile(Sequence):
252
259
  (number_images,)
253
260
  + (self.cube_height, self.cube_width, self.cube_depth)
254
261
  + (self.channels,)
255
- )
262
+ ),
263
+ dtype=np.float32,
256
264
  )
257
265
 
258
266
  for idx, cell in enumerate(cell_batch):
@@ -350,7 +358,14 @@ class CubeGeneratorFromDisk(Sequence):
350
358
  translate: Tuple[float, float, float] = (0.2, 0.2, 0.2),
351
359
  train: bool = False, # also return labels
352
360
  interpolation_order: int = 2,
361
+ *args,
362
+ **kwargs,
353
363
  ):
364
+ # pass any additional arguments not specified in signature to the
365
+ # constructor of the superclass (e.g.: `use_multiprocessing` or
366
+ # `workers`)
367
+ super().__init__(*args, **kwargs)
368
+
354
369
  self.im_shape = shape
355
370
  self.batch_size = batch_size
356
371
  self.labels = labels
@@ -410,10 +425,10 @@ class CubeGeneratorFromDisk(Sequence):
410
425
 
411
426
  if self.train and self.labels is not None:
412
427
  batch_labels = [self.labels[k] for k in indexes]
413
- batch_labels = tf.keras.utils.to_categorical(
428
+ batch_labels = keras.utils.to_categorical(
414
429
  batch_labels, num_classes=self.classes
415
430
  )
416
- return images, batch_labels
431
+ return images, batch_labels.astype(np.float32)
417
432
  else:
418
433
  return images
419
434
 
@@ -424,7 +439,8 @@ class CubeGeneratorFromDisk(Sequence):
424
439
  ) -> np.ndarray:
425
440
  number_images = len(list_signal_tmp)
426
441
  images = np.empty(
427
- ((number_images,) + self.im_shape + (self.channels,))
442
+ ((number_images,) + self.im_shape + (self.channels,)),
443
+ dtype=np.float32,
428
444
  )
429
445
 
430
446
  for idx, signal_im in enumerate(list_signal_tmp):
@@ -433,7 +449,7 @@ class CubeGeneratorFromDisk(Sequence):
433
449
  images, idx, signal_im, background_im
434
450
  )
435
451
 
436
- return images.astype(np.float16)
452
+ return images
437
453
 
438
454
  def __populate_array_with_cubes(
439
455
  self,
@@ -1,9 +1,11 @@
1
1
  from typing import Callable, Dict, List, Literal, Optional, Tuple, Union
2
2
 
3
- from tensorflow import Tensor
4
- from tensorflow.keras import Model
5
- from tensorflow.keras.initializers import Initializer
6
- from tensorflow.keras.layers import (
3
+ from keras import (
4
+ KerasTensor as Tensor,
5
+ )
6
+ from keras import Model
7
+ from keras.initializers import Initializer
8
+ from keras.layers import (
7
9
  Activation,
8
10
  Add,
9
11
  BatchNormalization,
@@ -14,7 +16,7 @@ from tensorflow.keras.layers import (
14
16
  MaxPooling3D,
15
17
  ZeroPadding3D,
16
18
  )
17
- from tensorflow.keras.optimizers import Adam, Optimizer
19
+ from keras.optimizers import Adam, Optimizer
18
20
 
19
21
  #####################################################################
20
22
  # Define the types of ResNet
@@ -113,7 +115,7 @@ def non_residual_block(
113
115
  activation: str = "relu",
114
116
  use_bias: bool = False,
115
117
  bn_epsilon: float = 1e-5,
116
- pooling_padding: str = "same",
118
+ pooling_padding: str = "valid",
117
119
  axis: int = 3,
118
120
  ) -> Tensor:
119
121
  """
@@ -131,6 +133,7 @@ def non_residual_block(
131
133
  )(x)
132
134
  x = BatchNormalization(axis=axis, epsilon=bn_epsilon, name="conv1_bn")(x)
133
135
  x = Activation(activation, name="conv1_activation")(x)
136
+
134
137
  x = MaxPooling3D(
135
138
  max_pool_size,
136
139
  strides=strides,
@@ -1,9 +1,10 @@
1
1
  import os
2
- from typing import List, Optional, Sequence, Tuple, Union
2
+ from collections.abc import Sequence
3
+ from typing import List, Optional, Tuple, Union
3
4
 
5
+ import keras
4
6
  import numpy as np
5
- import tensorflow as tf
6
- from tensorflow.keras import Model
7
+ from keras import Model
7
8
 
8
9
  from cellfinder.core import logger
9
10
  from cellfinder.core.classify.resnet import build_model, layer_type
@@ -17,8 +18,7 @@ def get_model(
17
18
  inference: bool = False,
18
19
  continue_training: bool = False,
19
20
  ) -> Model:
20
- """
21
- Returns the correct model based on the arguments passed
21
+ """Returns the correct model based on the arguments passed
22
22
  :param existing_model: An existing, trained model. This is returned if it
23
23
  exists
24
24
  :param model_weights: This file is used to set the model weights if it
@@ -30,29 +30,31 @@ def get_model(
30
30
  by using the default one
31
31
  :param continue_training: If True, will ensure that a trained model
32
32
  exists. E.g. by using the default one
33
- :return: A tf.keras model
33
+ :return: A keras model
34
34
 
35
35
  """
36
36
  if existing_model is not None or network_depth is None:
37
37
  logger.debug(f"Loading model: {existing_model}")
38
- return tf.keras.models.load_model(existing_model)
38
+ return keras.models.load_model(existing_model)
39
39
  else:
40
40
  logger.debug(f"Creating a new instance of model: {network_depth}")
41
41
  model = build_model(
42
- network_depth=network_depth, learning_rate=learning_rate
42
+ network_depth=network_depth,
43
+ learning_rate=learning_rate,
43
44
  )
44
45
  if inference or continue_training:
45
46
  logger.debug(
46
- f"Setting model weights according to: {model_weights}"
47
+ f"Setting model weights according to: {model_weights}",
47
48
  )
48
49
  if model_weights is None:
49
- raise IOError("`model_weights` must be provided")
50
+ raise OSError("`model_weights` must be provided")
50
51
  model.load_weights(model_weights)
51
52
  return model
52
53
 
53
54
 
54
55
  def make_lists(
55
- tiff_files: Sequence, train: bool = True
56
+ tiff_files: Sequence,
57
+ train: bool = True,
56
58
  ) -> Union[Tuple[List, List], Tuple[List, List, np.ndarray]]:
57
59
  signal_list = []
58
60
  background_list = []
@@ -0,0 +1,3 @@
1
+ [model]
2
+ model_path = '/home/adam/.cellfinder/model_weights/resnet50_tv.h5'
3
+ model_type = '50-layer'