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.
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/CITATION.cff +2 -1
- driftlessmap-1.6.0/CONTRIBUTING.md +59 -0
- driftlessmap-1.6.0/MANIFEST.in +28 -0
- driftlessmap-1.6.0/MANUAL.md +1828 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/ORIGINS.md +7 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/PKG-INFO +33 -9
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/README.md +30 -7
- driftlessmap-1.6.0/UpdateLog.md +111 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/WhatsNew.md +211 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/about.py +1 -1
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/allen_downloader.py +50 -46
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/app.py +1783 -1703
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_downloader.py +42 -21
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_loader.py +29 -144
- driftlessmap-1.6.0/driftlessmap/atlas_matching.py +558 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_processor.py +104 -134
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_transform.py +1 -1
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/atlas_view.py +25 -30
- driftlessmap-1.6.0/driftlessmap/auto_registration.py +215 -0
- driftlessmap-1.6.0/driftlessmap/background.py +72 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/czi_reader.py +72 -100
- driftlessmap-1.6.0/driftlessmap/download_utils.py +175 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/image_curves.py +22 -21
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/image_reader.py +69 -3
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/image_stacks.py +18 -21
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/image_view.py +111 -83
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/label_tree.py +15 -8
- driftlessmap-1.6.0/driftlessmap/landmarks.py +125 -0
- driftlessmap-1.6.0/driftlessmap/layer_geometry.py +36 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/layers_control.py +22 -63
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/main_window.ui +19 -17
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/movable_points.py +9 -109
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/obj_items.py +22 -7
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/object_control.py +122 -22
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/persistence.py +238 -13
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/probe_csv.py +3 -1
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/probe_reconstruction.py +40 -4
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/probe_utiles.py +166 -63
- driftlessmap-1.6.0/driftlessmap/project_io.py +88 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/provenance.py +37 -5
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/roi_analysis.py +13 -5
- driftlessmap-1.6.0/driftlessmap/section_suggestion_dialog.py +177 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/slice_stacks.py +5 -8
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/toolbox.py +37 -7
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/triangulation.py +52 -17
- driftlessmap-1.4.0/driftlessmap/uuuuuu.py → driftlessmap-1.6.0/driftlessmap/utils.py +58 -388
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/version.py +1 -1
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/widgets_utils.py +14 -7
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/wtiles.py +144 -141
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/PKG-INFO +33 -9
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/SOURCES.txt +29 -8
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/requires.txt +2 -1
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/pyproject.toml +45 -3
- driftlessmap-1.6.0/tests/atlas_fixture.py +69 -0
- driftlessmap-1.6.0/tests/run_test_suite.py +42 -0
- driftlessmap-1.6.0/tests/test_atlas_cache_integrity.py +53 -0
- driftlessmap-1.6.0/tests/test_atlas_matching.py +246 -0
- driftlessmap-1.6.0/tests/test_atlas_workers.py +100 -0
- driftlessmap-1.6.0/tests/test_auto_registration.py +119 -0
- driftlessmap-1.6.0/tests/test_background.py +37 -0
- driftlessmap-1.6.0/tests/test_czi_reader.py +107 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_download_utils.py +49 -0
- driftlessmap-1.6.0/tests/test_editing_tools.py +43 -0
- driftlessmap-1.6.0/tests/test_histogram_data.py +25 -0
- driftlessmap-1.6.0/tests/test_image_geometry.py +50 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_image_reader.py +47 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_label_tree.py +19 -0
- driftlessmap-1.6.0/tests/test_landmarks.py +67 -0
- driftlessmap-1.6.0/tests/test_layer_transforms.py +47 -0
- driftlessmap-1.6.0/tests/test_mesh_cache.py +71 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_object_control.py +64 -2
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_packaging_metadata.py +9 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_persistence.py +101 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_probe_csv.py +2 -0
- driftlessmap-1.6.0/tests/test_probe_dialogs.py +115 -0
- driftlessmap-1.6.0/tests/test_probe_mapping.py +327 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_probe_reconstruction.py +48 -18
- driftlessmap-1.6.0/tests/test_project_io.py +34 -0
- driftlessmap-1.6.0/tests/test_project_persistence.py +883 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_provenance.py +63 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_roi_analysis.py +18 -2
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_runtime_paths.py +1 -2
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_triangulation.py +44 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_version.py +1 -1
- driftlessmap-1.6.0/tests/test_widgets.py +68 -0
- driftlessmap-1.4.0/MANIFEST.in +0 -33
- driftlessmap-1.4.0/driftlessmap/data/WHS_atlas_labels.pkl +0 -0
- driftlessmap-1.4.0/driftlessmap/data/allen_mice_atlas_labels.pkl +0 -0
- driftlessmap-1.4.0/driftlessmap/download_utils.py +0 -85
- driftlessmap-1.4.0/driftlessmap/herbs.png +0 -0
- driftlessmap-1.4.0/driftlessmap/images_reader.py +0 -5
- driftlessmap-1.4.0/driftlessmap/popup_message.py +0 -16
- driftlessmap-1.4.0/driftlessmap/triangulation_points.py +0 -108
- driftlessmap-1.4.0/tests/test_probe_mapping.py +0 -165
- driftlessmap-1.4.0/tests/test_project_persistence.py +0 -163
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/AUTHOR.txt +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/CONTRIBUTORS.md +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/LICENSE.txt +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/THANKS.txt +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/__init__.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/__main__.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/cell_detection.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/coordinate_validation.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/data/atlas_labels.pkl +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/data/query.csv +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/app/driftlessmap.icns +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/app/driftlessmap.ico +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/app/driftlessmap.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/backward.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/dot.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/down-arrow.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/fast_backward.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/fast_forward.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/forward.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/add.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/ai.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/eye_off.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/eye_on.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/eye_white.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/hi.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/layers/trash.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/object.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/add.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/atlascontrol.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/atlascontrol.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/bnd.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/c_section.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/c_section2.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/cell.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/check.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/compare.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/contour.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/h_section.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/info.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/layers.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/layers.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/line.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/link.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/link_off.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/merge.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/object.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/probe.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/probe.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/rotation_horizontal.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/rotation_vertical.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/s_section.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/tool.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/tool.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/trash.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/tree_checked.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/treeview.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/treeview.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/treeview2.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/sidebar/virus.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/tdown.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/accept.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/accept2.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/aim.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/aim_not.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/anchor.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/anticlockwise_rotation.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/atlas_icon.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/boundary_register.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/cancel.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/cell_select.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/cell_select_not.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/check.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/clockwise_rotation.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/closed_path.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/closed_path2 copy.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/closed_path2.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/eraser.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/eraser.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/eye.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/eye_closed.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/fill.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/gps.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/h_flip.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/handle.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/image_icon.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/image_icon.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/info.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/inpart.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/inpart.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/lasso.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/lasso.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/left90.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/line.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/line_sites.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/linear_silicon.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/linear_silicon.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/list.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/location.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/magic-wand.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/magic_white.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/mask.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/match.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/matchbnd.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/matching.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/merge.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/move_down.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/move_left.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/move_right.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/move_up.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/moving.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/multi-probe.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/multi_pencil.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/multi_probe.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/object.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/open_path.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/outpart.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/outpart.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/pencil.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/pencil.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/plasso.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/probe.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/radar.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/rotation.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/rotation_clockwise.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/rotation_counter_clockwise.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/ruler.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/separate_sites.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/single_pencil.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toa.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toa_delete.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toaa.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toh.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/toh_delete.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/tohh.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/trans.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/trans.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/triangulation.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/two_window.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/unmerge.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/v_flip.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/virus.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/virus_register.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/vis2d.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/window2.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/window3.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/toolbar/window4.png +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/tree_close.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/tree_open.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/icons/up-arrow.svg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/layer_validation.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/atlas_view_group_box.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/box_label.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/channel_selector.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/color_combo.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/decor_label.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/dialogs.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/hidden_line_edit.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/label_tree.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/main_window.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/menu_bar.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/multi_handle_slider.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/obj_ctrl_bottom_button.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/object_text_button.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/page_control.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/rotation_button.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/side_bar.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/spinbox.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/tabs.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/qss/tool_bar.qss +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/resources.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/run_driftlessmap.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/slice_validation.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap/user_settings.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/dependency_links.txt +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/entry_points.txt +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/driftlessmap.egg-info/top_level.txt +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/setup.cfg +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/setup.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_allen_downloader.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_atlas_loader.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_atlas_transform.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_atlas_view.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_cell_detection.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_coordinate_validation.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_layer_validation.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_layers_control.py +0 -0
- {driftlessmap-1.4.0 → driftlessmap-1.6.0}/tests/test_slice_validation.py +0 -0
|
@@ -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]
|