delta-microscopy 3.0.0a0__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 (354) hide show
  1. delta_microscopy-3.0.0a0/.git-blame-ignore-revs +10 -0
  2. delta_microscopy-3.0.0a0/.gitattributes +2 -0
  3. delta_microscopy-3.0.0a0/.gitignore +160 -0
  4. delta_microscopy-3.0.0a0/.gitlab-ci.yml +143 -0
  5. delta_microscopy-3.0.0a0/.pre-commit-config.yaml +61 -0
  6. delta_microscopy-3.0.0a0/.readthedocs.yaml +16 -0
  7. delta_microscopy-3.0.0a0/.typos.toml +15 -0
  8. delta_microscopy-3.0.0a0/CHANGELOG.md +180 -0
  9. delta_microscopy-3.0.0a0/CODE_OF_CONDUCT.md +85 -0
  10. delta_microscopy-3.0.0a0/GOVERNANCE.md +67 -0
  11. delta_microscopy-3.0.0a0/LICENSE +21 -0
  12. delta_microscopy-3.0.0a0/PKG-INFO +101 -0
  13. delta_microscopy-3.0.0a0/README.md +37 -0
  14. delta_microscopy-3.0.0a0/delta/__init__.py +50 -0
  15. delta_microscopy-3.0.0a0/delta/_conversions.py +425 -0
  16. delta_microscopy-3.0.0a0/delta/_version.py +1 -0
  17. delta_microscopy-3.0.0a0/delta/assets.py +195 -0
  18. delta_microscopy-3.0.0a0/delta/cli.py +616 -0
  19. delta_microscopy-3.0.0a0/delta/config.py +588 -0
  20. delta_microscopy-3.0.0a0/delta/data.py +1687 -0
  21. delta_microscopy-3.0.0a0/delta/imgops.py +1091 -0
  22. delta_microscopy-3.0.0a0/delta/lineage.py +872 -0
  23. delta_microscopy-3.0.0a0/delta/model.py +470 -0
  24. delta_microscopy-3.0.0a0/delta/pipeline.py +1573 -0
  25. delta_microscopy-3.0.0a0/delta/utils.py +1162 -0
  26. delta_microscopy-3.0.0a0/docs/Makefile +19 -0
  27. delta_microscopy-3.0.0a0/docs/make.bat +35 -0
  28. delta_microscopy-3.0.0a0/docs/source/_static/DeLTA.png +0 -0
  29. delta_microscopy-3.0.0a0/docs/source/_static/DeLTA_book.pdf +6193 -25
  30. delta_microscopy-3.0.0a0/docs/source/_static/DeLTA_code.svg +16117 -0
  31. delta_microscopy-3.0.0a0/docs/source/_static/DeLTAexample.gif +0 -0
  32. delta_microscopy-3.0.0a0/docs/source/_static/ancestors_delta.png +0 -0
  33. delta_microscopy-3.0.0a0/docs/source/_static/cell_fluo_plot.png +0 -0
  34. delta_microscopy-3.0.0a0/docs/source/_static/cell_length_plot.png +0 -0
  35. delta_microscopy-3.0.0a0/docs/source/_static/css/custom.css +11 -0
  36. delta_microscopy-3.0.0a0/docs/source/_static/moma_generations.png +0 -0
  37. delta_microscopy-3.0.0a0/docs/source/_templates/my_custom_base.rst +5 -0
  38. delta_microscopy-3.0.0a0/docs/source/_templates/my_custom_class.rst +31 -0
  39. delta_microscopy-3.0.0a0/docs/source/api.rst +146 -0
  40. delta_microscopy-3.0.0a0/docs/source/conf.py +95 -0
  41. delta_microscopy-3.0.0a0/docs/source/index.rst +91 -0
  42. delta_microscopy-3.0.0a0/docs/source/usage/analysis.rst +318 -0
  43. delta_microscopy-3.0.0a0/docs/source/usage/contribute.rst +63 -0
  44. delta_microscopy-3.0.0a0/docs/source/usage/installation.rst +369 -0
  45. delta_microscopy-3.0.0a0/docs/source/usage/library/config_desc.rst +90 -0
  46. delta_microscopy-3.0.0a0/docs/source/usage/library/index.rst +21 -0
  47. delta_microscopy-3.0.0a0/docs/source/usage/library/lineage_desc.rst +93 -0
  48. delta_microscopy-3.0.0a0/docs/source/usage/library/pipeline_desc.rst +184 -0
  49. delta_microscopy-3.0.0a0/docs/source/usage/library/scripts.rst +97 -0
  50. delta_microscopy-3.0.0a0/docs/source/usage/library/utils_desc.rst +78 -0
  51. delta_microscopy-3.0.0a0/docs/source/usage/outputs.rst +426 -0
  52. delta_microscopy-3.0.0a0/docs/source/usage/quick_start.rst +85 -0
  53. delta_microscopy-3.0.0a0/docs/source/usage/training_advanced.rst +124 -0
  54. delta_microscopy-3.0.0a0/docs/source/usage/training_quick_start.rst +67 -0
  55. delta_microscopy-3.0.0a0/pixi.lock +6065 -0
  56. delta_microscopy-3.0.0a0/pyproject.toml +241 -0
  57. delta_microscopy-3.0.0a0/scripts/run_pipeline.py +29 -0
  58. delta_microscopy-3.0.0a0/scripts/segmentation.py +99 -0
  59. delta_microscopy-3.0.0a0/scripts/segmentation_rois.py +53 -0
  60. delta_microscopy-3.0.0a0/scripts/tracking.py +94 -0
  61. delta_microscopy-3.0.0a0/scripts/train_rois.py +69 -0
  62. delta_microscopy-3.0.0a0/scripts/train_seg.py +73 -0
  63. delta_microscopy-3.0.0a0/scripts/train_track.py +77 -0
  64. delta_microscopy-3.0.0a0/tests/__init__.py +1 -0
  65. delta_microscopy-3.0.0a0/tests/data/images/angle_+0.53.tif +0 -0
  66. delta_microscopy-3.0.0a0/tests/data/images/angle_-0.32.tif +0 -0
  67. delta_microscopy-3.0.0a0/tests/data/images/complex_mask.png +0 -0
  68. delta_microscopy-3.0.0a0/tests/data/images/complex_weights.png +0 -0
  69. delta_microscopy-3.0.0a0/tests/data/images/complex_weights_2D.png +0 -0
  70. delta_microscopy-3.0.0a0/tests/data/images/moma_segmentation_canary.png +0 -0
  71. delta_microscopy-3.0.0a0/tests/data/images/safe_resizing/img_frame1.tif +0 -0
  72. delta_microscopy-3.0.0a0/tests/data/images/safe_resizing/img_frame2.tif +0 -0
  73. delta_microscopy-3.0.0a0/tests/data/images/safe_resizing/reference.tif +0 -0
  74. delta_microscopy-3.0.0a0/tests/data/movie_2D_nd2/test.nd2 +0 -0
  75. delta_microscopy-3.0.0a0/tests/data/movie_2D_nd2/test_expected_results/Position000000.mat +0 -0
  76. delta_microscopy-3.0.0a0/tests/data/movie_2D_nd2/test_expected_results/Position000000.mp4 +0 -0
  77. delta_microscopy-3.0.0a0/tests/data/movie_2D_nd2/test_expected_results/Position000000.nc +0 -0
  78. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000001.tif +0 -0
  79. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000002.tif +0 -0
  80. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000003.tif +0 -0
  81. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000004.tif +0 -0
  82. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000005.tif +0 -0
  83. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000006.tif +0 -0
  84. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000007.tif +0 -0
  85. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000008.tif +0 -0
  86. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000009.tif +0 -0
  87. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000010.tif +0 -0
  88. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000011.tif +0 -0
  89. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000012.tif +0 -0
  90. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000013.tif +0 -0
  91. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000014.tif +0 -0
  92. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000015.tif +0 -0
  93. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000016.tif +0 -0
  94. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000017.tif +0 -0
  95. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000018.tif +0 -0
  96. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000019.tif +0 -0
  97. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/Position01Channel01Frame000020.tif +0 -0
  98. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/expected_results/Position000001.mat +0 -0
  99. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/expected_results/Position000001.mp4 +0 -0
  100. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/expected_results/Position000001.nc +0 -0
  101. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/expected_results/labels_000.tif +0 -0
  102. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/expected_results/labels_001.tif +0 -0
  103. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/expected_results/labels_002.tif +0 -0
  104. delta_microscopy-3.0.0a0/tests/data/movie_2D_tif/expected_results/labels_003.tif +0 -0
  105. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000001.tif +0 -0
  106. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000002.tif +0 -0
  107. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000003.tif +0 -0
  108. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000004.tif +0 -0
  109. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000005.tif +0 -0
  110. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000006.tif +0 -0
  111. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000007.tif +0 -0
  112. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000008.tif +0 -0
  113. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000009.tif +0 -0
  114. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel01Frames000010.tif +0 -0
  115. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000001.tif +0 -0
  116. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000002.tif +0 -0
  117. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000003.tif +0 -0
  118. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000004.tif +0 -0
  119. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000005.tif +0 -0
  120. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000006.tif +0 -0
  121. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000007.tif +0 -0
  122. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000008.tif +0 -0
  123. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000009.tif +0 -0
  124. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position01Channel02Frames000010.tif +0 -0
  125. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000001.tif +0 -0
  126. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000002.tif +0 -0
  127. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000003.tif +0 -0
  128. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000004.tif +0 -0
  129. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000005.tif +0 -0
  130. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000006.tif +0 -0
  131. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000007.tif +0 -0
  132. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000008.tif +0 -0
  133. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000009.tif +0 -0
  134. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel01Frames000010.tif +0 -0
  135. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000001.tif +0 -0
  136. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000002.tif +0 -0
  137. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000003.tif +0 -0
  138. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000004.tif +0 -0
  139. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000005.tif +0 -0
  140. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000006.tif +0 -0
  141. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000007.tif +0 -0
  142. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000008.tif +0 -0
  143. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000009.tif +0 -0
  144. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/Position02Channel02Frames000010.tif +0 -0
  145. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame001.png +0 -0
  146. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame002.png +0 -0
  147. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame003.png +0 -0
  148. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame004.png +0 -0
  149. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame005.png +0 -0
  150. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame006.png +0 -0
  151. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame007.png +0 -0
  152. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame008.png +0 -0
  153. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame009.png +0 -0
  154. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber01_Frame010.png +0 -0
  155. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame001.png +0 -0
  156. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame002.png +0 -0
  157. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame003.png +0 -0
  158. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame004.png +0 -0
  159. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame005.png +0 -0
  160. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame006.png +0 -0
  161. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame007.png +0 -0
  162. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame008.png +0 -0
  163. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame009.png +0 -0
  164. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber02_Frame010.png +0 -0
  165. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame001.png +0 -0
  166. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame002.png +0 -0
  167. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame003.png +0 -0
  168. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame004.png +0 -0
  169. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame005.png +0 -0
  170. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame006.png +0 -0
  171. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame007.png +0 -0
  172. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame008.png +0 -0
  173. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame009.png +0 -0
  174. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber03_Frame010.png +0 -0
  175. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame001.png +0 -0
  176. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame002.png +0 -0
  177. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame003.png +0 -0
  178. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame004.png +0 -0
  179. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame005.png +0 -0
  180. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame006.png +0 -0
  181. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame007.png +0 -0
  182. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame008.png +0 -0
  183. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame009.png +0 -0
  184. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber04_Frame010.png +0 -0
  185. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame001.png +0 -0
  186. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame002.png +0 -0
  187. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame003.png +0 -0
  188. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame004.png +0 -0
  189. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame005.png +0 -0
  190. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame006.png +0 -0
  191. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame007.png +0 -0
  192. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame008.png +0 -0
  193. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame009.png +0 -0
  194. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber05_Frame010.png +0 -0
  195. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame001.png +0 -0
  196. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame002.png +0 -0
  197. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame003.png +0 -0
  198. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame004.png +0 -0
  199. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame005.png +0 -0
  200. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame006.png +0 -0
  201. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame007.png +0 -0
  202. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame008.png +0 -0
  203. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame009.png +0 -0
  204. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber06_Frame010.png +0 -0
  205. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame001.png +0 -0
  206. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame002.png +0 -0
  207. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame003.png +0 -0
  208. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame004.png +0 -0
  209. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame005.png +0 -0
  210. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame006.png +0 -0
  211. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame007.png +0 -0
  212. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame008.png +0 -0
  213. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame009.png +0 -0
  214. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber07_Frame010.png +0 -0
  215. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame001.png +0 -0
  216. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame002.png +0 -0
  217. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame003.png +0 -0
  218. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame004.png +0 -0
  219. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame005.png +0 -0
  220. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame006.png +0 -0
  221. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame007.png +0 -0
  222. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame008.png +0 -0
  223. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame009.png +0 -0
  224. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber08_Frame010.png +0 -0
  225. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame001.png +0 -0
  226. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame002.png +0 -0
  227. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame003.png +0 -0
  228. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame004.png +0 -0
  229. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame005.png +0 -0
  230. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame006.png +0 -0
  231. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame007.png +0 -0
  232. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame008.png +0 -0
  233. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame009.png +0 -0
  234. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber09_Frame010.png +0 -0
  235. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame001.png +0 -0
  236. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame002.png +0 -0
  237. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame003.png +0 -0
  238. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame004.png +0 -0
  239. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame005.png +0 -0
  240. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame006.png +0 -0
  241. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame007.png +0 -0
  242. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame008.png +0 -0
  243. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame009.png +0 -0
  244. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber10_Frame010.png +0 -0
  245. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame001.png +0 -0
  246. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame002.png +0 -0
  247. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame003.png +0 -0
  248. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame004.png +0 -0
  249. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame005.png +0 -0
  250. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame006.png +0 -0
  251. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame007.png +0 -0
  252. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame008.png +0 -0
  253. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame009.png +0 -0
  254. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber11_Frame010.png +0 -0
  255. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame001.png +0 -0
  256. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame002.png +0 -0
  257. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame003.png +0 -0
  258. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame004.png +0 -0
  259. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame005.png +0 -0
  260. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame006.png +0 -0
  261. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame007.png +0 -0
  262. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame008.png +0 -0
  263. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame009.png +0 -0
  264. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber12_Frame010.png +0 -0
  265. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame001.png +0 -0
  266. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame002.png +0 -0
  267. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame003.png +0 -0
  268. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame004.png +0 -0
  269. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame005.png +0 -0
  270. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame006.png +0 -0
  271. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame007.png +0 -0
  272. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame008.png +0 -0
  273. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame009.png +0 -0
  274. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber13_Frame010.png +0 -0
  275. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame001.png +0 -0
  276. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame002.png +0 -0
  277. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame003.png +0 -0
  278. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame004.png +0 -0
  279. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame005.png +0 -0
  280. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame006.png +0 -0
  281. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame007.png +0 -0
  282. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame008.png +0 -0
  283. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame009.png +0 -0
  284. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber14_Frame010.png +0 -0
  285. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame001.png +0 -0
  286. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame002.png +0 -0
  287. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame003.png +0 -0
  288. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame004.png +0 -0
  289. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame005.png +0 -0
  290. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame006.png +0 -0
  291. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame007.png +0 -0
  292. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame008.png +0 -0
  293. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame009.png +0 -0
  294. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber15_Frame010.png +0 -0
  295. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame001.png +0 -0
  296. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame002.png +0 -0
  297. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame003.png +0 -0
  298. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame004.png +0 -0
  299. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame005.png +0 -0
  300. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame006.png +0 -0
  301. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame007.png +0 -0
  302. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame008.png +0 -0
  303. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame009.png +0 -0
  304. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber16_Frame010.png +0 -0
  305. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame001.png +0 -0
  306. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame002.png +0 -0
  307. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame003.png +0 -0
  308. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame004.png +0 -0
  309. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame005.png +0 -0
  310. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame006.png +0 -0
  311. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame007.png +0 -0
  312. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame008.png +0 -0
  313. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame009.png +0 -0
  314. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber17_Frame010.png +0 -0
  315. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame001.png +0 -0
  316. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame002.png +0 -0
  317. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame003.png +0 -0
  318. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame004.png +0 -0
  319. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame005.png +0 -0
  320. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame006.png +0 -0
  321. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame007.png +0 -0
  322. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame008.png +0 -0
  323. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame009.png +0 -0
  324. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/cropped_rois/Position01_Chamber18_Frame010.png +0 -0
  325. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/Position000001.mat +0 -0
  326. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/Position000001.mp4 +0 -0
  327. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/Position000001.nc +0 -0
  328. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/Position000001.png +0 -0
  329. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/Position000002.mat +0 -0
  330. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/Position000002.mp4 +0 -0
  331. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/Position000002.nc +0 -0
  332. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_000.tif +0 -0
  333. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_001.tif +0 -0
  334. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_002.tif +0 -0
  335. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_003.tif +0 -0
  336. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_004.tif +0 -0
  337. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_005.tif +0 -0
  338. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_006.tif +0 -0
  339. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_007.tif +0 -0
  340. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_008.tif +0 -0
  341. delta_microscopy-3.0.0a0/tests/data/movie_mothermachine_tif/expected_results/labels_009.tif +0 -0
  342. delta_microscopy-3.0.0a0/tests/data/output_files/position_without_shape.nc +0 -0
  343. delta_microscopy-3.0.0a0/tests/test_config.py +28 -0
  344. delta_microscopy-3.0.0a0/tests/test_data.py +172 -0
  345. delta_microscopy-3.0.0a0/tests/test_imgops.py +814 -0
  346. delta_microscopy-3.0.0a0/tests/test_lineage.py +695 -0
  347. delta_microscopy-3.0.0a0/tests/test_model.py +107 -0
  348. delta_microscopy-3.0.0a0/tests/test_pipeline.py +183 -0
  349. delta_microscopy-3.0.0a0/tests/test_run.py +56 -0
  350. delta_microscopy-3.0.0a0/tests/test_seg_track_scripts.py +97 -0
  351. delta_microscopy-3.0.0a0/tests/test_train.py +45 -0
  352. delta_microscopy-3.0.0a0/tests/test_utils.py +656 -0
  353. delta_microscopy-3.0.0a0/tests/test_version.py +7 -0
  354. delta_microscopy-3.0.0a0/tests/utils.py +34 -0
@@ -0,0 +1,10 @@
1
+ # For this file to take effect make sure you use git ^2.23 and
2
+ # add blame.ignoreRevsFile to your git configuration:
3
+ # ```
4
+ # git config --global blame.ignoreRevsFile .git-blame-ignore-revs
5
+ # ```
6
+
7
+ # Renormalize line endings
8
+ 65987a58536562f4e6283d2992ea452ae1764570
9
+ # Run black on the codebase
10
+ 0dad305daa83193a1f4cc8d985b4c8bc46a3865f
@@ -0,0 +1,2 @@
1
+ # SCM syntax highlighting
2
+ pixi.lock linguist-language=YAML linguist-generated=true
@@ -0,0 +1,160 @@
1
+ # Ignore assets folder:
2
+ /delta/assets/
3
+
4
+ # Ignore test results folder:
5
+ /tests/data/**/results
6
+ /tests/data/**/delta_results
7
+ /tests/data/**/roi_masks
8
+ /tests/data/**/segmentation
9
+ /tests/data/**/tracking
10
+ /tests/data/**/test_delta_results
11
+
12
+ # Ignore auto-generated docs pages:
13
+ /docs/source/generated/
14
+ /docs/_generated/
15
+
16
+ # Byte-compiled / optimized / DLL files
17
+ __pycache__/
18
+ *.py[cod]
19
+ *$py.class
20
+
21
+ # C extensions
22
+ *.so
23
+
24
+ # Distribution / packaging
25
+ .Python
26
+ build/
27
+ develop-eggs/
28
+ dist/
29
+ downloads/
30
+ eggs/
31
+ .eggs/
32
+ lib/
33
+ lib64/
34
+ parts/
35
+ sdist/
36
+ var/
37
+ wheels/
38
+ share/python-wheels/
39
+ *.egg-info/
40
+ .installed.cfg
41
+ *.egg
42
+ MANIFEST
43
+
44
+ # PyInstaller
45
+ # Usually these files are written by a python script from a template
46
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
47
+ *.manifest
48
+ *.spec
49
+
50
+ # Installer logs
51
+ pip-log.txt
52
+ pip-delete-this-directory.txt
53
+
54
+ # Unit test / coverage reports
55
+ htmlcov/
56
+ .tox/
57
+ .nox/
58
+ .coverage
59
+ .coverage.*
60
+ .cache
61
+ nosetests.xml
62
+ coverage.xml
63
+ *.cover
64
+ *.py,cover
65
+ .hypothesis/
66
+ .pytest_cache/
67
+ cover/
68
+
69
+ # Translations
70
+ *.mo
71
+ *.pot
72
+
73
+ # Django stuff:
74
+ *.log
75
+ local_settings.py
76
+ db.sqlite3
77
+ db.sqlite3-journal
78
+
79
+ # Flask stuff:
80
+ instance/
81
+ .webassets-cache
82
+
83
+ # Scrapy stuff:
84
+ .scrapy
85
+
86
+ # Sphinx documentation
87
+ docs/_build/
88
+
89
+ # PyBuilder
90
+ .pybuilder/
91
+ target/
92
+
93
+ # Jupyter Notebook
94
+ .ipynb_checkpoints
95
+
96
+ # IPython
97
+ profile_default/
98
+ ipython_config.py
99
+
100
+ # pyenv
101
+ # For a library or package, you might want to ignore these files since the code is
102
+ # intended to run in multiple environments; otherwise, check them in:
103
+ # .python-version
104
+
105
+ # pipenv
106
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
107
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
108
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
109
+ # install all needed dependencies.
110
+ #Pipfile.lock
111
+
112
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
113
+ __pypackages__/
114
+
115
+ # Celery stuff
116
+ celerybeat-schedule
117
+ celerybeat.pid
118
+
119
+ # SageMath parsed files
120
+ *.sage.py
121
+
122
+ # Environments
123
+ .env
124
+ .venv
125
+ env/
126
+ venv/
127
+ ENV/
128
+ env.bak/
129
+ venv.bak/
130
+
131
+ # Spyder project settings
132
+ .spyderproject
133
+ .spyproject
134
+
135
+ # JetBrains IDEs project settings
136
+ .idea
137
+
138
+ # Rope project settings
139
+ .ropeproject
140
+
141
+ # mkdocs documentation
142
+ /site
143
+
144
+ # mypy
145
+ .mypy_cache/
146
+ .dmypy.json
147
+ dmypy.json
148
+
149
+ # Pyre type checker
150
+ .pyre/
151
+
152
+ # pytype static type analyzer
153
+ .pytype/
154
+
155
+ # Cython debug symbols
156
+ cython_debug/
157
+
158
+ # pixi environments
159
+ .pixi
160
+ *.egg-info
@@ -0,0 +1,143 @@
1
+ stages:
2
+ - test
3
+ - publish
4
+
5
+ pre-commit:
6
+ stage: test
7
+
8
+ image: python:latest
9
+
10
+ rules:
11
+ - if: "$CI_MERGE_REQUEST_LABELS =~ /tests::block/"
12
+ when: never
13
+ - if: "$CI_MERGE_REQUEST_LABELS =~ /tests::force/"
14
+ - if: "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH"
15
+ - if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
16
+
17
+ before_script:
18
+ - python --version
19
+ - pip install pre-commit
20
+
21
+ script:
22
+ - pre-commit run --all-files
23
+
24
+ test-notraining:
25
+ stage: test
26
+
27
+ image: python:3.12
28
+
29
+ rules:
30
+ - if: "$CI_MERGE_REQUEST_LABELS =~ /tests::block/"
31
+ when: never
32
+ - if: "$CI_MERGE_REQUEST_LABELS =~ /tests::force/"
33
+ - if: "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH"
34
+ - if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
35
+
36
+ cache:
37
+ # only caching delta data, everything else is reinstalled via pip
38
+ - key: delta-cache
39
+ paths:
40
+ - .cache/delta
41
+
42
+ variables:
43
+ DELTA_ASSETS_CACHE: ".cache/delta"
44
+ PIP_CACHE_DIR: ".cache/pip"
45
+
46
+ before_script:
47
+ - date
48
+ - apt update
49
+ - apt install -y ffmpeg
50
+ - pip install .[jax-cpu]
51
+ - export KERAS_BACKEND=jax
52
+ - curl -Os https://uploader.codecov.io/latest/linux/codecov
53
+ - chmod +x codecov
54
+
55
+ script:
56
+ - date
57
+ # * Removing test_train because they are too long for gitlab CI
58
+ - pytest --verbose --cov=delta -k "not test_train"
59
+ - ./codecov -t $CODECOV_TOKEN
60
+
61
+ after_script:
62
+ - rm -rf .cache/delta/0.0.1/unzipped
63
+
64
+ test-training:
65
+ stage: test
66
+
67
+ tags:
68
+ - saas-linux-medium-amd64
69
+
70
+ image: python:3.12
71
+
72
+ rules:
73
+ - if: "$CI_MERGE_REQUEST_LABELS =~ /tests::block/"
74
+ when: never
75
+ - if: "$CI_MERGE_REQUEST_LABELS =~ /tests::force/"
76
+ - if: "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH"
77
+ - if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
78
+
79
+ cache:
80
+ # only caching delta data, everything else is reinstalled via pip
81
+ - key: delta-cache
82
+ paths:
83
+ - .cache/delta
84
+
85
+ variables:
86
+ DELTA_ASSETS_CACHE: ".cache/delta"
87
+ PIP_CACHE_DIR: ".cache/pip"
88
+
89
+ before_script:
90
+ - date
91
+ - apt update
92
+ - apt install -y ffmpeg
93
+ - pip install .[jax-cpu]
94
+ - export KERAS_BACKEND=jax
95
+ - curl -Os https://uploader.codecov.io/latest/linux/codecov
96
+ - chmod +x codecov
97
+
98
+ script:
99
+ - date
100
+ - python -c "import jax; print(jax.devices())"
101
+ - pytest --verbose --cov=delta -k "test_train"
102
+ - ./codecov -t $CODECOV_TOKEN
103
+
104
+ after_script:
105
+ - rm -rf .cache/delta/0.0.1/unzipped
106
+
107
+ test-build:
108
+ stage: test
109
+
110
+ image: python:latest
111
+
112
+ script:
113
+ - pip install hatch
114
+ - hatch build
115
+
116
+ PyPI-upload:
117
+ stage: publish
118
+
119
+ image: python:latest
120
+
121
+ rules:
122
+ - if: "$CI_COMMIT_TAG"
123
+
124
+ script:
125
+ - pip install hatch
126
+ - hatch build
127
+ - hatch publish
128
+
129
+ GitLab-release:
130
+ stage: publish
131
+
132
+ image: registry.gitlab.com/gitlab-org/release-cli:latest
133
+
134
+ rules:
135
+ - if: "$CI_COMMIT_TAG"
136
+
137
+ script:
138
+ - echo "Running the GitLab release job."
139
+
140
+ release:
141
+ tag_name: $CI_COMMIT_TAG
142
+ name: "Release $CI_COMMIT_TAG"
143
+ description: "Release created using the release-cli."
@@ -0,0 +1,61 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+ repos:
4
+ - repo: https://github.com/pre-commit/pre-commit-hooks
5
+ rev: v6.0.0
6
+ hooks:
7
+ - id: check-ast
8
+ - id: check-merge-conflict
9
+ - id: check-added-large-files
10
+ - id: check-yaml
11
+ - id: check-toml
12
+ - id: end-of-file-fixer
13
+ - id: trailing-whitespace
14
+ - id: mixed-line-ending
15
+ - id: name-tests-test
16
+ args: [--pytest-test-first]
17
+ exclude: "tests/utils.py"
18
+ - repo: https://github.com/pre-commit/pygrep-hooks
19
+ rev: v1.10.0
20
+ hooks:
21
+ - id: python-check-blanket-noqa
22
+ - id: python-check-blanket-type-ignore
23
+ - id: python-check-mock-methods
24
+ - id: python-no-eval
25
+ - id: python-no-log-warn
26
+ - id: python-use-type-annotations
27
+ - id: rst-backticks
28
+ - id: rst-directive-colons
29
+ - id: rst-inline-touching-normal
30
+ - id: text-unicode-replacement-char
31
+ - repo: https://github.com/rbubley/mirrors-prettier
32
+ rev: v3.6.2
33
+ hooks:
34
+ - id: prettier
35
+ types_or: [markdown, rst, toml]
36
+ - repo: https://github.com/adamchainz/blacken-docs
37
+ rev: 1.19.1
38
+ hooks:
39
+ - id: blacken-docs
40
+ additional_dependencies:
41
+ - black==24.8.0
42
+ - repo: https://github.com/sphinx-contrib/sphinx-lint
43
+ rev: v1.0.0
44
+ hooks:
45
+ - id: sphinx-lint
46
+ - repo: https://github.com/crate-ci/typos
47
+ rev: v1.36.1
48
+ hooks:
49
+ - id: typos
50
+ args:
51
+ - --config=.typos.toml
52
+ - repo: https://github.com/astral-sh/ruff-pre-commit
53
+ rev: v0.12.11
54
+ hooks:
55
+ - id: ruff-format
56
+ - id: ruff-check
57
+ args: [--fix, --show-fixes]
58
+ - repo: https://github.com/pre-commit/mirrors-mypy
59
+ rev: v1.17.1
60
+ hooks:
61
+ - id: mypy
@@ -0,0 +1,16 @@
1
+ version: 2
2
+
3
+ sphinx:
4
+ configuration: docs/source/conf.py
5
+
6
+ python:
7
+ install:
8
+ - method: pip
9
+ path: .
10
+ extra_requirements:
11
+ - docs
12
+
13
+ build:
14
+ os: ubuntu-lts-latest
15
+ tools:
16
+ python: "3.12"
@@ -0,0 +1,15 @@
1
+ # Configuration file for the `typos` spell-checker
2
+ # https://github.com/crate-ci/typos
3
+
4
+ [default.extend-words]
5
+ nd = "nd" # for .nd2 files
6
+ nly = "nly" # two occurences in imgops.py
7
+ ome = "ome" # for the OME-TIFF format
8
+ Ba = "Ba" # a random string in an asset url
9
+ GTI = "GTI" # a random string in an asset url
10
+ Comput = "Comput" # abbrevation of PLoS Comput Biol
11
+ setp = "setp" # matplotlib
12
+
13
+ [type.svg]
14
+ extend-glob = ["*.svg"]
15
+ check-file = false
@@ -0,0 +1,180 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## Unreleased
9
+
10
+ ### Added
11
+
12
+ - DeLTA now computes the growth rate of the cells.
13
+ - It is now possible to specify the number of convolution kernels at each
14
+ layer when creating a U-Net.
15
+ - Added support for TensorBoard.
16
+ - The function `delta.data.make_weights` can create all of the weight maps
17
+ for a training dataset.
18
+ - The function `delta.utilities.read_image` reads and normalises png, tif and
19
+ more.
20
+ - The function `load_training_dataset_seg` loads training datasets and allows
21
+ to specify validation and test splits.
22
+ - DeLTA's configuration is now its own `Config` object instead of many
23
+ variables dispersed in `delta.config`. Configuration files are read with
24
+ `Config.read`, and the resulting `config` should be passed to `Pipeline`
25
+ at its creation.
26
+ - Positions can now be loaded with the static method `Position.load`.
27
+ - Methods were added to the class `CroppingBox`: notably `full` (to create a
28
+ box from a whole reference image) and `crop` (to crop an image according to
29
+ the box).
30
+ - Added a commandline interface to DeLTA accessible with `delta`.
31
+ - Added a flag to label the output movie with cellids (`--label-movie`).
32
+ - Added the function `utils.training_callbacks` to simplify training.
33
+ - Added a flag to modify the config on the fly (`-C`).
34
+
35
+ ### Changed
36
+
37
+ - All unet models return now logits, instead of probabilities, to improve
38
+ numerical accuracy.
39
+ - The function `seg_weights` is faster by a factor 20.
40
+ - The function `seg_weights_2D` is faster by a factor 12.
41
+ - Upgraded tensorflow dependency to version 2.7.
42
+ - Upgraded OpenCV dependency to version 4.6.
43
+ - Dropped support for Python 3.7.
44
+ - Switched from `setup.py` to `pyproject.toml`.
45
+ - DeLTA assets (models, training sets, evaluation movies) are downloaded
46
+ automatically and cached, thanks to the python package `pooch`.
47
+ - The function `xpreader.getframes` now only takes one position at a time.
48
+ - The functions `extract_poles` and `getpoles` now return a dictionary instead
49
+ of a list.
50
+ - The function `getrandomcolors` now returns a dictionary instead of a list.
51
+ - The attribute `lineage.cells` is now a dictionary instead of a list.
52
+ - `CroppingBox` is now a `dataclass`, instead of a dictionary.
53
+ - The function `affine_transform` now takes an `angle` argument to perform a
54
+ rotation.
55
+ - The `label_stack` is now created by `process_tracking_outputs`.
56
+ - The function `roi_features` now returns a dictionary instead of a list.
57
+ - The argument `features` was removed from `extract_features` and
58
+ `roi_features`: now, every possible feature is always returned.
59
+ - The `threshold` argument of `binarizerange` is now compulsory, but one can
60
+ still pass `None` to binarize in the middle of the dynamic range.
61
+ - The function `getpoles`'s argument `labels` is now compulsory.
62
+ - No need to specify `features` to `Pipeline.process` anymore: they are
63
+ always all returned.
64
+ - The functions `track_poles` and `division_poles` (from `utilities`), and
65
+ `createcell`, `updatecell` and `update` (from `Lineage`) changed their
66
+ parameters to now take a `CellFeatures` object instead of a couple of poles.
67
+ - The functions `Pipeline.process`, `Position.segment`, `Position.track`,
68
+ `Position.features`, `Position.save`, `Position.results_movie`, and
69
+ `xpreader.getframes` now get an integer argument `nbframes` instead of a list
70
+ `frames`.
71
+ - Renamed `xpreader` into `XPReader`.
72
+ - There are now no more `prototype`, `fileorder`, or `filenamesindexing`
73
+ parameters to `XPReader`, just one `path` which can be templated with `{p}`,
74
+ `{c}` and `{t}`.
75
+ - `python-bioformats` has been replaced by `aicsimageio` and thus removes the
76
+ Java dependency for most image file formats.
77
+ - Replaced the `utils.Lineage` with the new `lineage.Lineage`.
78
+ - Cells are now counted up from 1 instead of 0.
79
+ - Improved and robustify growthrate computation.
80
+ - Renamed `utils.tracking_boxes` to `utils.tracking_box` and make it return only
81
+ one `CroppingBox` (`CroppingBox` having removed the need for a `fillbox`).
82
+ - Split `correct_drift` into two separate functions: `compute_drift` and
83
+ `correct_drift`.
84
+ - Made `affine_transform` take a shift in pixels and not in ratio.
85
+ - The function `utils.poles` now identifies cell poles based on contour
86
+ curvature, not morphological skeletons.
87
+ - The function `utils.cell_width_length` now uses the cell's centerline between
88
+ the two poles to measure cell length and width.
89
+ - The function `utils.find_poles` now takes a single contour, not an image.
90
+
91
+ ### Fixed
92
+
93
+ - Fixed bug in the computation of cell perimeters.
94
+ - Fixed training reproducibility bugs by using seeded random generators.
95
+ - Fixed edge case bugs in 2D image stitching.
96
+ - Fixed edge case bug on pole detection of singular cells.
97
+ - Fixed incorrect numbering of position, channel and frame from input to
98
+ output.
99
+ - Fixed rotate_image behavior to rotate images about their exact center.
100
+ - Fixed `correct_drift` drift computation.
101
+
102
+ ### Removed
103
+
104
+ - The function `trainGenerator_seg` was removed.
105
+ - The function `download_assets` was removed, because assets are now downloaded
106
+ on the fly.
107
+ - The `load_position` was removed in favor of `Position.load`.
108
+ - The function `load_config` was removed, replaced by `config.Config.read` and
109
+ `config.Config.load`.
110
+ - The function `utils.cropbox` was removed, replaced by `CroppingBox.crop`.
111
+ - The function `singlecell_features` was removed because used only once.
112
+ - The method `ROI.extract_features` was removed: features are now extracted
113
+ during tracking.
114
+ - The old commandline behavior was removed, in favor of `python -m delta`.
115
+ - The `use_bioformats` parameter to `XPReader` was removed, now it should guess
116
+ automatically whether bioformats should be used or not.
117
+ - The function `utils.shift_values` was removed.
118
+
119
+ ## \[2.0.5\] - 2022-03-11
120
+
121
+ ### Changed
122
+
123
+ - Adjusted the executable bit of source files
124
+ - Removed tifffile from dependency list
125
+ - Fixed GPU memory crash when training by using cv2.imread in data module
126
+ - Rewrote the `deskew` (detection of rotation) function to be deterministic
127
+ and more accurate
128
+ - Corrected Pipeline reloading bug
129
+
130
+ ## \[2.0.4\] - 2022-02-25
131
+
132
+ ### Changed
133
+
134
+ - Updated assets module to new google drive download API
135
+
136
+ ## \[2.0.3\] - 2022-02-02
137
+
138
+ ### Changed
139
+
140
+ - U-Net "number of levels" now parametrized
141
+ - Corrected bugs with poles tracking
142
+ - Added poles information to legacy MAT savefiles
143
+
144
+ ## \[2.0.2\] - 2022-01-17
145
+
146
+ ### Changed
147
+
148
+ - Rewrote utilities.getrandomcolors to be dependent on cv2 instead of matplotlib
149
+
150
+ ## \[2.0.1\] - 2022-01-12
151
+
152
+ ### Added
153
+
154
+ - Added matploblib to requirements.txt
155
+
156
+ ## \[2.0.0\] - 2022-01-12
157
+
158
+ ### Added
159
+
160
+ - Full-python pipeline for both 2D and mother machine time-lapse analysis
161
+ - [python-bioformats](https://github.com/CellProfiler/python-bioformats) integration
162
+ - [Online documentation](https://delta.readthedocs.io/en/latest/)
163
+ - [PyPI package](https://pypi.org/project/delta2/)
164
+ - [conda-forge package](https://anaconda.org/conda-forge/delta2)
165
+ - [Google Colab notebook](https://colab.research.google.com/drive/1UL9oXmcJFRBAm0BMQy_DMKg4VHYGgtxZ)
166
+ - Example scripts for data analysis and training & evaluation
167
+ - pytest tests suite & systematic testing on dev branch
168
+ - Systematic type hinting & standardization of data types
169
+ - CI/CD pipeline for PyPI deployment
170
+ - Changelog
171
+
172
+ ### Changed
173
+
174
+ - JSON configuration files
175
+ - Automated assets download of [training sets, latest models etc...](https://drive.google.com/drive/u/0/folders/1nTRVo0rPP9CR9F6WUunVXSXrLNMT_zCP)
176
+ - [Black](https://black.readthedocs.io/en/stable/) formatting
177
+
178
+ ### Removed
179
+
180
+ - Matlab-related code
@@ -0,0 +1,85 @@
1
+ # Contributor Covenant 3.0 Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We pledge to make our community welcoming, safe, and equitable for all.
6
+
7
+ We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant.
8
+
9
+ ## Encouraged Behaviors
10
+
11
+ While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language.
12
+
13
+ With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:
14
+
15
+ 1. Respecting the **purpose of our community**, our activities, and our ways of gathering.
16
+ 2. Engaging **kindly and honestly** with others.
17
+ 3. Respecting **different viewpoints** and experiences.
18
+ 4. **Taking responsibility** for our actions and contributions.
19
+ 5. Gracefully giving and accepting **constructive feedback**.
20
+ 6. Committing to **repairing harm** when it occurs.
21
+ 7. Behaving in other ways that promote and sustain the **well-being of our community**.
22
+
23
+ ## Restricted Behaviors
24
+
25
+ We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct.
26
+
27
+ 1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop.
28
+ 2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people.
29
+ 3. **Stereotyping or discrimination.** Characterizing anyone’s personality or behavior on the basis of immutable identities or traits.
30
+ 4. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community.
31
+ 5. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission.
32
+ 6. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group.
33
+ 7. Behaving in other ways that **threaten the well-being** of our community.
34
+
35
+ ### Other Restrictions
36
+
37
+ 1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions.
38
+ 2. **Failing to credit sources.** Not properly crediting the sources of content you contribute.
39
+ 3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community.
40
+ 4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors.
41
+
42
+ ## Reporting an Issue
43
+
44
+ Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm.
45
+
46
+ When an incident does occur, it is important to report it promptly. To report a possible violation, **contact one of the members of the board.**
47
+
48
+ Community Moderators take reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports of code of conduct violations, reviewing messages, logs, and recordings, or interviewing witnesses and other participants. Community Moderators will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution.
49
+
50
+ ## Addressing and Repairing Harm
51
+
52
+ ---
53
+
54
+ If an investigation by the Community Moderators finds that this Code of Conduct has been violated, the following enforcement ladder may be used to determine how best to repair harm, based on the incident's impact on the individuals involved and the community as a whole. Depending on the severity of a violation, lower rungs on the ladder may be skipped.
55
+
56
+ 1. Warning
57
+ 1. Event: A violation involving a single incident or series of incidents.
58
+ 2. Consequence: A private, written warning from the Community Moderators.
59
+ 3. Repair: Examples of repair include a private written apology, acknowledgement of responsibility, and seeking clarification on expectations.
60
+ 2. Temporarily Limited Activities
61
+ 1. Event: A repeated incidence of a violation that previously resulted in a warning, or the first incidence of a more serious violation.
62
+ 2. Consequence: A private, written warning with a time-limited cooldown period designed to underscore the seriousness of the situation and give the community members involved time to process the incident. The cooldown period may be limited to particular communication channels or interactions with particular community members.
63
+ 3. Repair: Examples of repair may include making an apology, using the cooldown period to reflect on actions and impact, and being thoughtful about re-entering community spaces after the period is over.
64
+ 3. Temporary Suspension
65
+ 1. Event: A pattern of repeated violation which the Community Moderators have tried to address with warnings, or a single serious violation.
66
+ 2. Consequence: A private written warning with conditions for return from suspension. In general, temporary suspensions give the person being suspended time to reflect upon their behavior and possible corrective actions.
67
+ 3. Repair: Examples of repair include respecting the spirit of the suspension, meeting the specified conditions for return, and being thoughtful about how to reintegrate with the community when the suspension is lifted.
68
+ 4. Permanent Ban
69
+ 1. Event: A pattern of repeated code of conduct violations that other steps on the ladder have failed to resolve, or a violation so serious that the Community Moderators determine there is no way to keep the community safe with this person as a member.
70
+ 2. Consequence: Access to all community spaces, tools, and communication channels is removed. In general, permanent bans should be rarely used, should have strong reasoning behind them, and should only be resorted to if working through other remedies has failed to change the behavior.
71
+ 3. Repair: There is no possible repair in cases of this severity.
72
+
73
+ This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community.
74
+
75
+ ## Scope
76
+
77
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public or other spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
78
+
79
+ ## Attribution
80
+
81
+ This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/).
82
+
83
+ Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
84
+
85
+ For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). The enforcement ladder was inspired by the work of [Mozilla’s code of conduct team](https://github.com/mozilla/inclusion).