driftlessmap 1.4.0__tar.gz → 1.6.0__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 (282) hide show
  1. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/CITATION.cff +2 -1
  2. driftlessmap-1.6.0/CONTRIBUTING.md +59 -0
  3. driftlessmap-1.6.0/MANIFEST.in +28 -0
  4. driftlessmap-1.6.0/MANUAL.md +1828 -0
  5. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/ORIGINS.md +7 -0
  6. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/PKG-INFO +33 -9
  7. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/README.md +30 -7
  8. driftlessmap-1.6.0/UpdateLog.md +111 -0
  9. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/WhatsNew.md +211 -0
  10. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/about.py +1 -1
  11. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/allen_downloader.py +50 -46
  12. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/app.py +1783 -1703
  13. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_downloader.py +42 -21
  14. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_loader.py +29 -144
  15. driftlessmap-1.6.0/driftlessmap/atlas_matching.py +558 -0
  16. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_processor.py +104 -134
  17. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_transform.py +1 -1
  18. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_view.py +25 -30
  19. driftlessmap-1.6.0/driftlessmap/auto_registration.py +215 -0
  20. driftlessmap-1.6.0/driftlessmap/background.py +72 -0
  21. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/czi_reader.py +72 -100
  22. driftlessmap-1.6.0/driftlessmap/download_utils.py +175 -0
  23. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/image_curves.py +22 -21
  24. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/image_reader.py +69 -3
  25. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/image_stacks.py +18 -21
  26. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/image_view.py +111 -83
  27. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/label_tree.py +15 -8
  28. driftlessmap-1.6.0/driftlessmap/landmarks.py +125 -0
  29. driftlessmap-1.6.0/driftlessmap/layer_geometry.py +36 -0
  30. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/layers_control.py +22 -63
  31. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/main_window.ui +19 -17
  32. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/movable_points.py +9 -109
  33. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/obj_items.py +22 -7
  34. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/object_control.py +122 -22
  35. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/persistence.py +238 -13
  36. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/probe_csv.py +3 -1
  37. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/probe_reconstruction.py +40 -4
  38. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/probe_utiles.py +166 -63
  39. driftlessmap-1.6.0/driftlessmap/project_io.py +88 -0
  40. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/provenance.py +37 -5
  41. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/roi_analysis.py +13 -5
  42. driftlessmap-1.6.0/driftlessmap/section_suggestion_dialog.py +177 -0
  43. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/slice_stacks.py +5 -8
  44. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/toolbox.py +37 -7
  45. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/triangulation.py +52 -17
  46. driftlessmap-1.4.0/driftlessmap/uuuuuu.py → driftlessmap-1.6.0/driftlessmap/utils.py +58 -388
  47. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/version.py +1 -1
  48. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/widgets_utils.py +14 -7
  49. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/wtiles.py +144 -141
  50. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/PKG-INFO +33 -9
  51. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/SOURCES.txt +29 -8
  52. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/requires.txt +2 -1
  53. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/pyproject.toml +45 -3
  54. driftlessmap-1.6.0/tests/atlas_fixture.py +69 -0
  55. driftlessmap-1.6.0/tests/run_test_suite.py +42 -0
  56. driftlessmap-1.6.0/tests/test_atlas_cache_integrity.py +53 -0
  57. driftlessmap-1.6.0/tests/test_atlas_matching.py +246 -0
  58. driftlessmap-1.6.0/tests/test_atlas_workers.py +100 -0
  59. driftlessmap-1.6.0/tests/test_auto_registration.py +119 -0
  60. driftlessmap-1.6.0/tests/test_background.py +37 -0
  61. driftlessmap-1.6.0/tests/test_czi_reader.py +107 -0
  62. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_download_utils.py +49 -0
  63. driftlessmap-1.6.0/tests/test_editing_tools.py +43 -0
  64. driftlessmap-1.6.0/tests/test_histogram_data.py +25 -0
  65. driftlessmap-1.6.0/tests/test_image_geometry.py +50 -0
  66. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_image_reader.py +47 -0
  67. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_label_tree.py +19 -0
  68. driftlessmap-1.6.0/tests/test_landmarks.py +67 -0
  69. driftlessmap-1.6.0/tests/test_layer_transforms.py +47 -0
  70. driftlessmap-1.6.0/tests/test_mesh_cache.py +71 -0
  71. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_object_control.py +64 -2
  72. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_packaging_metadata.py +9 -0
  73. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_persistence.py +101 -0
  74. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_probe_csv.py +2 -0
  75. driftlessmap-1.6.0/tests/test_probe_dialogs.py +115 -0
  76. driftlessmap-1.6.0/tests/test_probe_mapping.py +327 -0
  77. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_probe_reconstruction.py +48 -18
  78. driftlessmap-1.6.0/tests/test_project_io.py +34 -0
  79. driftlessmap-1.6.0/tests/test_project_persistence.py +883 -0
  80. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_provenance.py +63 -0
  81. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_roi_analysis.py +18 -2
  82. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_runtime_paths.py +1 -2
  83. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_triangulation.py +44 -0
  84. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_version.py +1 -1
  85. driftlessmap-1.6.0/tests/test_widgets.py +68 -0
  86. driftlessmap-1.4.0/MANIFEST.in +0 -33
  87. driftlessmap-1.4.0/driftlessmap/data/WHS_atlas_labels.pkl +0 -0
  88. driftlessmap-1.4.0/driftlessmap/data/allen_mice_atlas_labels.pkl +0 -0
  89. driftlessmap-1.4.0/driftlessmap/download_utils.py +0 -85
  90. driftlessmap-1.4.0/driftlessmap/herbs.png +0 -0
  91. driftlessmap-1.4.0/driftlessmap/images_reader.py +0 -5
  92. driftlessmap-1.4.0/driftlessmap/popup_message.py +0 -16
  93. driftlessmap-1.4.0/driftlessmap/triangulation_points.py +0 -108
  94. driftlessmap-1.4.0/tests/test_probe_mapping.py +0 -165
  95. driftlessmap-1.4.0/tests/test_project_persistence.py +0 -163
  96. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/AUTHOR.txt +0 -0
  97. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/CONTRIBUTORS.md +0 -0
  98. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/LICENSE.txt +0 -0
  99. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/THANKS.txt +0 -0
  100. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/__init__.py +0 -0
  101. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/__main__.py +0 -0
  102. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/cell_detection.py +0 -0
  103. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/coordinate_validation.py +0 -0
  104. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/data/atlas_labels.pkl +0 -0
  105. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/data/query.csv +0 -0
  106. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/app/driftlessmap.icns +0 -0
  107. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/app/driftlessmap.ico +0 -0
  108. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/app/driftlessmap.png +0 -0
  109. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/backward.svg +0 -0
  110. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/dot.svg +0 -0
  111. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/down-arrow.svg +0 -0
  112. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/fast_backward.svg +0 -0
  113. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/fast_forward.svg +0 -0
  114. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/forward.svg +0 -0
  115. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/add.png +0 -0
  116. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/ai.png +0 -0
  117. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/eye_off.png +0 -0
  118. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/eye_on.png +0 -0
  119. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/eye_white.png +0 -0
  120. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/hi.png +0 -0
  121. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/trash.png +0 -0
  122. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/object.svg +0 -0
  123. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/add.png +0 -0
  124. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/atlascontrol.png +0 -0
  125. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/atlascontrol.svg +0 -0
  126. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/bnd.svg +0 -0
  127. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/c_section.png +0 -0
  128. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/c_section2.png +0 -0
  129. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/cell.svg +0 -0
  130. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/check.svg +0 -0
  131. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/compare.svg +0 -0
  132. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/contour.svg +0 -0
  133. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/h_section.png +0 -0
  134. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/info.svg +0 -0
  135. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/layers.png +0 -0
  136. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/layers.svg +0 -0
  137. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/line.svg +0 -0
  138. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/link.svg +0 -0
  139. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/link_off.svg +0 -0
  140. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/merge.svg +0 -0
  141. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/object.svg +0 -0
  142. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/probe.png +0 -0
  143. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/probe.svg +0 -0
  144. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/rotation_horizontal.svg +0 -0
  145. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/rotation_vertical.svg +0 -0
  146. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/s_section.png +0 -0
  147. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/tool.png +0 -0
  148. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/tool.svg +0 -0
  149. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/trash.png +0 -0
  150. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/tree_checked.svg +0 -0
  151. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/treeview.png +0 -0
  152. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/treeview.svg +0 -0
  153. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/treeview2.png +0 -0
  154. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/virus.svg +0 -0
  155. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/tdown.svg +0 -0
  156. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/accept.svg +0 -0
  157. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/accept2.svg +0 -0
  158. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/aim.svg +0 -0
  159. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/aim_not.svg +0 -0
  160. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/anchor.svg +0 -0
  161. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/anticlockwise_rotation.svg +0 -0
  162. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/atlas_icon.png +0 -0
  163. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/boundary_register.svg +0 -0
  164. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/cancel.svg +0 -0
  165. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/cell_select.svg +0 -0
  166. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/cell_select_not.svg +0 -0
  167. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/check.svg +0 -0
  168. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/clockwise_rotation.svg +0 -0
  169. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/closed_path.svg +0 -0
  170. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/closed_path2 copy.svg +0 -0
  171. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/closed_path2.svg +0 -0
  172. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/eraser.png +0 -0
  173. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/eraser.svg +0 -0
  174. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/eye.svg +0 -0
  175. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/eye_closed.svg +0 -0
  176. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/fill.svg +0 -0
  177. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/gps.svg +0 -0
  178. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/h_flip.png +0 -0
  179. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/handle.png +0 -0
  180. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/image_icon.png +0 -0
  181. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/image_icon.svg +0 -0
  182. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/info.svg +0 -0
  183. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/inpart.png +0 -0
  184. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/inpart.svg +0 -0
  185. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/lasso.png +0 -0
  186. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/lasso.svg +0 -0
  187. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/left90.png +0 -0
  188. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/line.svg +0 -0
  189. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/line_sites.svg +0 -0
  190. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/linear_silicon.png +0 -0
  191. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/linear_silicon.svg +0 -0
  192. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/list.svg +0 -0
  193. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/location.svg +0 -0
  194. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/magic-wand.svg +0 -0
  195. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/magic_white.png +0 -0
  196. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/mask.svg +0 -0
  197. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/match.svg +0 -0
  198. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/matchbnd.svg +0 -0
  199. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/matching.svg +0 -0
  200. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/merge.svg +0 -0
  201. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/move_down.png +0 -0
  202. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/move_left.png +0 -0
  203. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/move_right.png +0 -0
  204. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/move_up.png +0 -0
  205. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/moving.png +0 -0
  206. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/multi-probe.svg +0 -0
  207. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/multi_pencil.svg +0 -0
  208. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/multi_probe.png +0 -0
  209. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/object.svg +0 -0
  210. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/open_path.svg +0 -0
  211. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/outpart.png +0 -0
  212. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/outpart.svg +0 -0
  213. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/pencil.png +0 -0
  214. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/pencil.svg +0 -0
  215. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/plasso.png +0 -0
  216. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/probe.svg +0 -0
  217. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/radar.svg +0 -0
  218. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/rotation.svg +0 -0
  219. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/rotation_clockwise.svg +0 -0
  220. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/rotation_counter_clockwise.svg +0 -0
  221. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/ruler.svg +0 -0
  222. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/separate_sites.svg +0 -0
  223. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/single_pencil.svg +0 -0
  224. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toa.svg +0 -0
  225. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toa_delete.svg +0 -0
  226. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toaa.svg +0 -0
  227. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toh.svg +0 -0
  228. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toh_delete.svg +0 -0
  229. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/tohh.svg +0 -0
  230. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/trans.png +0 -0
  231. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/trans.svg +0 -0
  232. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/triangulation.svg +0 -0
  233. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/two_window.png +0 -0
  234. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/unmerge.svg +0 -0
  235. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/v_flip.png +0 -0
  236. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/virus.svg +0 -0
  237. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/virus_register.svg +0 -0
  238. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/vis2d.svg +0 -0
  239. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/window2.png +0 -0
  240. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/window3.png +0 -0
  241. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/window4.png +0 -0
  242. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/tree_close.svg +0 -0
  243. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/tree_open.svg +0 -0
  244. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/up-arrow.svg +0 -0
  245. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/layer_validation.py +0 -0
  246. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/atlas_view_group_box.qss +0 -0
  247. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/box_label.qss +0 -0
  248. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/channel_selector.qss +0 -0
  249. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/color_combo.qss +0 -0
  250. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/decor_label.qss +0 -0
  251. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/dialogs.qss +0 -0
  252. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/hidden_line_edit.qss +0 -0
  253. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/label_tree.qss +0 -0
  254. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/main_window.qss +0 -0
  255. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/menu_bar.qss +0 -0
  256. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/multi_handle_slider.qss +0 -0
  257. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/obj_ctrl_bottom_button.qss +0 -0
  258. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/object_text_button.qss +0 -0
  259. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/page_control.qss +0 -0
  260. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/rotation_button.qss +0 -0
  261. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/side_bar.qss +0 -0
  262. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/spinbox.qss +0 -0
  263. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/tabs.qss +0 -0
  264. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/tool_bar.qss +0 -0
  265. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/resources.py +0 -0
  266. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/run_driftlessmap.py +0 -0
  267. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/slice_validation.py +0 -0
  268. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/user_settings.py +0 -0
  269. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/dependency_links.txt +0 -0
  270. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/entry_points.txt +0 -0
  271. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/top_level.txt +0 -0
  272. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/setup.cfg +0 -0
  273. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/setup.py +0 -0
  274. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_allen_downloader.py +0 -0
  275. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_atlas_loader.py +0 -0
  276. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_atlas_transform.py +0 -0
  277. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_atlas_view.py +0 -0
  278. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_cell_detection.py +0 -0
  279. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_coordinate_validation.py +0 -0
  280. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_layer_validation.py +0 -0
  281. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_layers_control.py +0 -0
  282. {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_slice_validation.py +0 -0
@@ -4,7 +4,8 @@ message: >-
4
4
  HERBS paper listed under references.
5
5
  title: DriftlessMap
6
6
  type: software
7
- version: 1.4.0
7
+ version: 1.6.0
8
+ date-released: 2026-09-27
8
9
  authors:
9
10
  - name: Mohebi & Associates
10
11
  website: https://www.mohebi-associates.org/
@@ -0,0 +1,59 @@
1
+ # Contributing to DriftlessMap
2
+
3
+ Thank you for helping improve DriftlessMap. This guide covers what you need to
4
+ change the code safely. Read `AGENTS.md` (identical to `CLAUDE.md`) for the
5
+ architecture map and the persistence contract before larger changes.
6
+
7
+ ## Set up
8
+
9
+ Use Python 3.10–3.14 (3.13 or earlier if you need CZI support):
10
+
11
+ ```bash
12
+ python -m venv .venv
13
+ source .venv/bin/activate # Windows: .venv\Scripts\activate
14
+ python -m pip install --editable ".[test]"
15
+ ```
16
+
17
+ ## Check your change
18
+
19
+ Run all three before opening a pull request; CI runs the same checks:
20
+
21
+ ```bash
22
+ python -m pytest
23
+ python -m ruff check .
24
+ python -m mypy
25
+ ```
26
+
27
+ GUI tests need a display. On a headless Linux machine, run them under
28
+ `xvfb-run` with `QT_QPA_PLATFORM=xcb`; on macOS and Windows the offscreen
29
+ platform works: `QT_QPA_PLATFORM=offscreen python -m pytest`. Offscreen OpenGL
30
+ warnings are expected.
31
+
32
+ ## Ground rules
33
+
34
+ - **Never load user files with unrestricted `pickle`.** Use the restricted
35
+ readers in `driftlessmap/persistence.py`; new files are written as safe ZIP
36
+ archives.
37
+ - **Identify inputs by content, not by path.** Use the SHA-256 references in
38
+ `driftlessmap/provenance.py`.
39
+ - **New persisted state** needs validation, a default for older files, a
40
+ round-trip test, and documentation in `MANUAL.md`.
41
+ - **Keep older files readable.** DriftlessMap and legacy HERBS files must
42
+ keep opening.
43
+ - **Scientific changes** that alter reported numbers need a test that pins
44
+ the corrected behaviour, and a release note saying which outputs to
45
+ regenerate.
46
+ - **Keep long work off the GUI thread.** Use `run_in_background` in
47
+ `driftlessmap/background.py` for hashing, large writes or warps. Never touch
48
+ widgets from that work.
49
+ - **Do not commit large binaries** (videos, PDFs, sample datasets). Attach
50
+ them to a GitHub release and link to them instead.
51
+ - **Keep `AGENTS.md` and `CLAUDE.md` identical.** CI compares them.
52
+
53
+ ## Releases
54
+
55
+ Every release updates the version in `driftlessmap/version.py`,
56
+ `CITATION.cff`, `tests/test_version.py`, `README.md`, `MANUAL.md`, `AGENTS.md`
57
+ and `CLAUDE.md`. It also adds an entry at the top of `WhatsNew.md` and
58
+ `UpdateLog.md`. Publishing a GitHub release runs the test suite, then builds
59
+ the PyPI distributions and the Windows and macOS desktop bundles.
@@ -0,0 +1,28 @@
1
+ # Files added to the source distribution beyond the package itself.
2
+ # Package data installed with DriftlessMap is declared in pyproject.toml.
3
+ include AUTHOR.txt
4
+ include CITATION.cff
5
+ include CONTRIBUTING.md
6
+ include CONTRIBUTORS.md
7
+ include LICENSE.txt
8
+ include MANIFEST.in
9
+ include MANUAL.md
10
+ include ORIGINS.md
11
+ include pyproject.toml
12
+ include README.md
13
+ include setup.py
14
+ include THANKS.txt
15
+ include UpdateLog.md
16
+ include WhatsNew.md
17
+
18
+ include driftlessmap/main_window.ui
19
+ include driftlessmap/data/query.csv
20
+ include driftlessmap/data/atlas_labels.pkl
21
+
22
+ recursive-include driftlessmap/icons *.svg *.png *.ico *.icns
23
+ recursive-include driftlessmap/qss *.qss
24
+
25
+ # The regression suite, so the sdist can be tested after download.
26
+ recursive-include tests *.py
27
+
28
+ global-exclude .DS_Store *.py[cod]