motile-tracker 3.1.3.dev0__tar.gz → 3.1.4.dev1__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 (131) hide show
  1. motile_tracker-3.1.4.dev1/.github/dependabot.yml +10 -0
  2. motile_tracker-3.1.4.dev1/.github/workflows/deploy.yml +147 -0
  3. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/.gitignore +3 -0
  4. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/.pre-commit-config.yaml +4 -2
  5. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/PKG-INFO +43 -3
  6. motile_tracker-3.1.4.dev1/README.md +71 -0
  7. motile_tracker-3.1.4.dev1/conda_config.yml +12 -0
  8. motile_tracker-3.1.4.dev1/construct.yaml +12 -0
  9. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/conf.py +1 -1
  10. motile_tracker-3.1.4.dev1/install-scripts/finalize-install.sh +8 -0
  11. motile_tracker-3.1.4.dev1/install-scripts/wininstaller.iss +26 -0
  12. motile_tracker-3.1.4.dev1/motile-tracker.spec +122 -0
  13. motile_tracker-3.1.4.dev1/motile_logo.icns +0 -0
  14. motile_tracker-3.1.4.dev1/motile_logo.ico +0 -0
  15. motile_tracker-3.1.4.dev1/pixi.lock +8173 -0
  16. motile_tracker-3.1.4.dev1/pixi.toml +64 -0
  17. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/pyproject.toml +9 -4
  18. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/scripts/run_hela.py +2 -1
  19. motile_tracker-3.1.4.dev1/scripts/set-vs-buildTools-env.ps1 +19 -0
  20. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/scripts/test_edge_selection.py +21 -13
  21. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-OpenGL.py +73 -0
  22. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-fonticon_fa6.py +8 -0
  23. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-freetype.py +5 -0
  24. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-ilpy.py +5 -0
  25. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-ipykernel.py +1 -0
  26. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-motile_tracker.py +5 -0
  27. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-napari.py +19 -0
  28. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-parso.py +5 -0
  29. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-superqt.py +7 -0
  30. motile_tracker-3.1.4.dev1/src/installer_hooks/hook-vispy.py +11 -0
  31. motile_tracker-3.1.4.dev1/src/motile_tracker/__init__.py +5 -0
  32. motile_tracker-3.1.4.dev1/src/motile_tracker/_version.py +21 -0
  33. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/application_menus/editing_menu.py +1 -47
  34. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/application_menus/menu_widget.py +0 -4
  35. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_model/solution_tracks.py +3 -41
  36. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/layers/track_graph.py +6 -70
  37. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/layers/track_labels.py +39 -83
  38. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/layers/track_points.py +20 -103
  39. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/layers/tracks_layer_group.py +51 -67
  40. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/tree_view/tree_widget.py +13 -14
  41. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views_coordinator/node_selection_list.py +0 -11
  42. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views_coordinator/tracks_list.py +3 -8
  43. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views_coordinator/tracks_viewer.py +13 -32
  44. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/import_export/load_tracks.py +6 -6
  45. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/import_export/menus/csv_widget.py +0 -3
  46. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/import_export/menus/import_external_tracks_dialog.py +1 -2
  47. motile_tracker-3.1.4.dev1/src/motile_tracker/launcher.py +62 -0
  48. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/menus/motile_widget.py +1 -3
  49. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/menus/run_viewer.py +1 -3
  50. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker.egg-info/PKG-INFO +43 -3
  51. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker.egg-info/SOURCES.txt +22 -7
  52. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker.egg-info/entry_points.txt +3 -0
  53. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker.egg-info/requires.txt +1 -1
  54. motile_tracker-3.1.4.dev1/src/motile_tracker.egg-info/top_level.txt +2 -0
  55. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/conftest.py +0 -10
  56. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/import_export/test_export_solution_to_csv.py +6 -26
  57. motile_tracker-3.1.3.dev0/.github/workflows/deploy.yml +0 -29
  58. motile_tracker-3.1.3.dev0/README.md +0 -32
  59. motile_tracker-3.1.3.dev0/conda_config.yml +0 -8
  60. motile_tracker-3.1.3.dev0/src/motile_tracker/__init__.py +0 -7
  61. motile_tracker-3.1.3.dev0/src/motile_tracker/data_views/views/layers/contour_labels.py +0 -124
  62. motile_tracker-3.1.3.dev0/src/motile_tracker/data_views/views/view_3d/__init__.py +0 -1
  63. motile_tracker-3.1.3.dev0/src/motile_tracker/data_views/views/view_3d/clipping_plane_sliders.py +0 -455
  64. motile_tracker-3.1.3.dev0/src/motile_tracker/data_views/views/view_3d/layer_dropdown.py +0 -55
  65. motile_tracker-3.1.3.dev0/src/motile_tracker/data_views/views/view_3d/multiple_view_widget.py +0 -711
  66. motile_tracker-3.1.3.dev0/src/motile_tracker/data_views/views/view_3d/view3D.py +0 -79
  67. motile_tracker-3.1.3.dev0/src/motile_tracker/data_views/views_coordinator/collection_widget.py +0 -446
  68. motile_tracker-3.1.3.dev0/src/motile_tracker.egg-info/top_level.txt +0 -1
  69. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/.github/workflows/docs.yml +0 -0
  70. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/.github/workflows/test.yml +0 -0
  71. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/LICENSE +0 -0
  72. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/Makefile +0 -0
  73. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/editing.rst +0 -0
  74. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/getting_started.rst +0 -0
  75. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/images/add_edge.png +0 -0
  76. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/images/add_node.png +0 -0
  77. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/images/break_edge.png +0 -0
  78. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/images/delete_node.png +0 -0
  79. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/images/results_demo_720p.mp4 +0 -0
  80. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/index.rst +0 -0
  81. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/key_bindings.rst +0 -0
  82. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/motile.rst +0 -0
  83. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/docs/source/tree_view.rst +0 -0
  84. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/scripts/hela_example_tracks.csv +0 -0
  85. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/scripts/load_external_points.py +0 -0
  86. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/scripts/view_external_tracks.py +0 -0
  87. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/setup.cfg +0 -0
  88. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/application_menus/__init__.py +0 -0
  89. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/application_menus/main_app.py +0 -0
  90. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_model/__init__.py +0 -0
  91. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_model/action_history.py +0 -0
  92. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_model/actions.py +0 -0
  93. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_model/node_type.py +0 -0
  94. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_model/tracks.py +0 -0
  95. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_model/tracks_controller.py +0 -0
  96. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/__init__.py +0 -0
  97. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/__init__.py +0 -0
  98. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/layers/__init__.py +0 -0
  99. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/tree_view/__init__.py +0 -0
  100. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/tree_view/flip_axes_widget.py +0 -0
  101. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/tree_view/navigation_widget.py +0 -0
  102. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/tree_view/tree_view_feature_widget.py +0 -0
  103. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/tree_view/tree_view_mode_widget.py +0 -0
  104. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views/tree_view/tree_widget_utils.py +0 -0
  105. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/data_views/views_coordinator/__init__.py +0 -0
  106. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/example_data.py +0 -0
  107. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/import_export/__init__.py +0 -0
  108. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/import_export/menus/__init__.py +0 -0
  109. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/import_export/menus/measurement_widget.py +0 -0
  110. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/import_export/menus/metadata_menu.py +0 -0
  111. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/import_export/menus/segmentation_widget.py +0 -0
  112. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/backend/__init__.py +0 -0
  113. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/backend/motile_run.py +0 -0
  114. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/backend/solve.py +0 -0
  115. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/backend/solver_params.py +0 -0
  116. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/menus/__init__.py +0 -0
  117. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/menus/param_values.py +0 -0
  118. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/menus/params_editor.py +0 -0
  119. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/menus/params_viewer.py +0 -0
  120. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/motile/menus/run_editor.py +0 -0
  121. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker/napari.yaml +0 -0
  122. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/src/motile_tracker.egg-info/dependency_links.txt +0 -0
  123. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/data_model/test_action_history.py +0 -0
  124. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/data_model/test_actions.py +0 -0
  125. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/data_model/test_tracks.py +0 -0
  126. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/data_model/test_tracks_controller.py +0 -0
  127. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/import_export/test_import_external_tracks.py +0 -0
  128. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/motile/backend/test_motile_run.py +0 -0
  129. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/motile/backend/test_solver.py +0 -0
  130. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/motile/menus/test_run_editor.py +0 -0
  131. {motile_tracker-3.1.3.dev0 → motile_tracker-3.1.4.dev1}/tests/motile_plugin/utils/test_tree_widget_utils.py +0 -0
@@ -0,0 +1,10 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: /
5
+ schedule:
6
+ interval: monthly
7
+ groups:
8
+ dependencies:
9
+ patterns:
10
+ - "*"
@@ -0,0 +1,147 @@
1
+ name: Deploy
2
+
3
+ on:
4
+ push:
5
+ branches: [deploy] # Change this to run only for push events to main branch
6
+ tags: ["v*"] # Push events to matching v*, i.e. v1.0, v20.15.10
7
+ pull_request: {}
8
+ workflow_dispatch:
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ jobs:
15
+ prepare-matrix:
16
+ # See this SO answer for details on conditional matrices
17
+ # https://stackoverflow.com/a/65434401/3407590
18
+ name: Prepare matrix
19
+ runs-on: ubuntu-latest
20
+ outputs:
21
+ matrix: ${{ steps.set-matrix.outputs.matrix }}
22
+ steps:
23
+ - uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.11"
26
+ - name: Prepare matrix
27
+ id: set-matrix
28
+ shell: python
29
+ # The Python versions chosen below will determine which
30
+ # Python versions the installers will bundle. The general
31
+ # principle is to follow the SPEC-0 recommendation:
32
+ # https://scientific-python.org/specs/spec-0000/
33
+ run: |
34
+ import os
35
+ import json
36
+ elements = [
37
+ {
38
+ "os": "ubuntu-latest",
39
+ "target-platform": "linux-64",
40
+ },
41
+ {
42
+ "os": "macos-14",
43
+ "target-platform": "osx-arm64",
44
+ },
45
+ {
46
+ "os": "windows-latest",
47
+ "target-platform": "win-64",
48
+ },
49
+ ]
50
+ platforms_str = "${{ inputs.installer_platforms || 'linux-64,win-64,osx-arm64' }}"
51
+ platforms = {p.strip() for p in platforms_str.split(",")}
52
+ matrix = {"include": []}
53
+ for element in elements:
54
+ if element["target-platform"] in platforms:
55
+ matrix["include"].append(element)
56
+ with open(os.environ["GITHUB_OUTPUT"], "a") as f:
57
+ f.write(f"matrix={json.dumps(matrix)}\n")
58
+
59
+ create-app-bundle:
60
+ name: Create ${{ matrix.target-platform }} app bundle
61
+ runs-on: ${{ matrix.os }}
62
+ needs: prepare-matrix
63
+ if: startsWith(github.ref, 'refs/tags/') # Only run for tags
64
+ strategy:
65
+ fail-fast: false
66
+ matrix: ${{ fromJSON(needs.prepare-matrix.outputs.matrix) }}
67
+ env:
68
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
69
+ steps:
70
+ - name: Checkout code
71
+ uses: actions/checkout@v4
72
+ with:
73
+ fetch-depth: 0
74
+ path: motile-tracker
75
+
76
+ - name: Install pixi
77
+ uses: prefix-dev/setup-pixi@v0.8.3
78
+ with:
79
+ pixi-version: v0.43.2
80
+ cache: false
81
+ run-install: false
82
+ manifest-path: motile-tracker/pixi.toml
83
+
84
+ - name: Install build tools (Windows only)
85
+ if: runner.os == 'Windows'
86
+ run: |
87
+ $installer = "vs_BuildTools.exe"
88
+
89
+ Invoke-WebRequest -Uri "https://aka.ms/vs/17/release/vs_BuildTools.exe" -OutFile $installer
90
+
91
+ Start-Process -Wait -FilePath .\$installer -ArgumentList `
92
+ "--quiet", `
93
+ "--wait", `
94
+ "--norestart", `
95
+ "--nocache", `
96
+ "--add Microsoft.VisualStudio.Workload.VCTools", `
97
+ "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64", `
98
+ "--add Microsoft.VisualStudio.Component.Windows10SDK.19041", `
99
+ "--includeRecommended"
100
+ shell: pwsh
101
+
102
+ - name: Install app dependencies
103
+ working-directory: motile-tracker
104
+ run: pixi run setup
105
+
106
+ - name: Build the PyPi package (Linux only)
107
+ working-directory: motile-tracker
108
+ if: runner.os == 'Linux'
109
+ run: pixi run build
110
+
111
+ - name: Publish to PyPi (Linux only)
112
+ uses: pypa/gh-action-pypi-publish@release/v1
113
+ if: runner.os == 'Linux'
114
+ with:
115
+ packages-dir: motile-tracker/dist
116
+ password: ${{ secrets.PYPI_API_TOKEN }}
117
+
118
+ - name: Download installer app (Linux only)
119
+ if: runner.os == 'Linux'
120
+ run: |
121
+ sudo apt-get update
122
+ sudo apt-get install -y makeself
123
+
124
+ - name: Download installer app (macOS only)
125
+ if: runner.os == 'macOS'
126
+ run: |
127
+ brew install create-dmg
128
+
129
+ - name: Download installer app (Windows only)
130
+ if: runner.os == 'Windows'
131
+ run: |
132
+ choco install -y innosetup
133
+
134
+ - name: Package native app
135
+ working-directory: motile-tracker
136
+ run: pixi run create-installer
137
+
138
+ - name: Upload app
139
+ uses: softprops/action-gh-release@v2
140
+ if: startsWith(github.ref, 'refs/tags/')
141
+ with:
142
+ files: |
143
+ motile-tracker/dist/MotileTrackerInstaller.*
144
+ generate_release_notes: true
145
+ token: ${{ secrets.GITHUB_TOKEN }}
146
+ draft: ${{ contains(github.ref_name, '-dev') }}
147
+ prerelease: ${{ contains(github.ref_name, '-rc') }}
@@ -8,6 +8,9 @@ __pycache__/
8
8
  # C extensions
9
9
  *.so
10
10
 
11
+ # Backup files
12
+ *~
13
+
11
14
  # Distribution / packaging
12
15
  .Python
13
16
  env/
@@ -1,6 +1,8 @@
1
+ ci:
2
+ autofix_prs: false
1
3
  repos:
2
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v4.2.0
5
+ rev: v5.0.0
4
6
  hooks:
5
7
  - id: check-docstring-first
6
8
  - id: end-of-file-fixer
@@ -8,7 +10,7 @@ repos:
8
10
  exclude: ^\.napari-hub/.*
9
11
  - id: check-yaml # checks for correct yaml syntax for github actions ex.
10
12
  - repo: https://github.com/astral-sh/ruff-pre-commit
11
- rev: v0.4.7
13
+ rev: v0.11.0
12
14
  hooks:
13
15
  - id: ruff
14
16
  args: [--fix]
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: motile-tracker
3
- Version: 3.1.3.dev0
3
+ Version: 3.1.4.dev1
4
4
  Summary: Application for interactive tracking with global optimization
5
5
  Author-email: Caroline Malin-Mayor <malinmayorc@janelia.hhmi.org>
6
6
  License: BSD 3-Clause License
@@ -23,7 +23,7 @@ Requires-Python: >=3.10
23
23
  Description-Content-Type: text/markdown
24
24
  License-File: LICENSE
25
25
  Requires-Dist: napari[all]
26
- Requires-Dist: numpy
26
+ Requires-Dist: numpy<2.1,>=1.26
27
27
  Requires-Dist: magicgui
28
28
  Requires-Dist: qtpy
29
29
  Requires-Dist: scikit-image
@@ -53,6 +53,7 @@ Requires-Dist: ruff; extra == "dev"
53
53
  Requires-Dist: pre-commit; extra == "dev"
54
54
  Provides-Extra: all
55
55
  Requires-Dist: motile-tracker[dev,docs,testing]; extra == "all"
56
+ Dynamic: license-file
56
57
 
57
58
  # Motile Tracker
58
59
 
@@ -81,6 +82,45 @@ conda before installing the plugin with pip.
81
82
  conda install -c conda-forge -c funkelab -c gurobi ilpy
82
83
  pip install motile-tracker
83
84
 
85
+ The conda environment can also be created from the provided conda_config.yml:
86
+
87
+ conda env create -f conda_config.yml
88
+ conda activate motile-tracker
89
+
90
+ Alternatively one can use [pixi](https://pixi.sh/).
91
+
92
+ ## Running Motile Tracker
93
+
94
+ To run the application:
95
+ * activate the conda environment created in the [Installation Step](#installation)
96
+
97
+ conda activate motile-tracker
98
+
99
+ * Run:
100
+
101
+ python -m motile_tracker.launcher
102
+
103
+ If [pixi](https://pixi.sh/) is available, you can run motile-tracker using:
104
+
105
+ pixi run start
106
+
107
+ ## Package the application into an executable and create the installer
108
+
109
+ To create the executab run
110
+
111
+ pixi run create-app
112
+
113
+ This command will create an application (.app) on OSX, an EXE on Windows and an
114
+ ELF executable on Linux.
115
+
116
+ On Windows in order to be able to package the application the ilpy library must be
117
+ properly installed and compiled. This will require [download](https://aka.ms/vs/17/release/vs_BuildTools.exe) and install [Visual Studio Build Tools](https://visualstudio.microsoft.com/downloads/). This comes with a script to set all required environment variables located typically at `"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"` so before you setup the app you need to run this bat file. For powershell run `scripts\scripts/set-vs-buildTools-env.ps1 <fullpathto vcvars64>`.
118
+
119
+ Further to create an installer for the app you will need:
120
+ * InnoSetup on Windows (`scoop install inno-setup` or `winget install "Inno Setup"`)
121
+ * create-dmg on OSX (`brew install create-dmg`)
122
+ * makeself on Linux (`apt install makeself`)
123
+
84
124
  ## Issues
85
125
 
86
126
  If you encounter any problems, please
@@ -0,0 +1,71 @@
1
+ # Motile Tracker
2
+
3
+ [![tests](https://github.com/funkelab/motile_tracker/workflows/tests/badge.svg)](https://github.com/funkelab/motile_tracker/actions)
4
+ [![codecov](https://codecov.io/gh/funkelab/motile_tracker/branch/main/graph/badge.svg)](https://codecov.io/gh/funkelab/motile_tracker)
5
+ [![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/motile_tracker)](https://napari-hub.org/plugins/motile_tracker)
6
+
7
+ The full documentation of the plugin can be found [here](https://funkelab.github.io/motile_tracker/).
8
+
9
+ A plugin for tracking with [motile](https://github.com/funkelab/motile) in napari.
10
+ Motile is a library that makes it easy to solve tracking problems using optimization
11
+ by framing the task as an Integer Linear Program (ILP).
12
+ See the motile [documentation](https://funkelab.github.io/motile)
13
+ for more details on the concepts and method.
14
+
15
+ ----------------------------------
16
+
17
+ ## Installation
18
+
19
+ This plugin depends on [motile](https://github.com/funkelab/motile), which in
20
+ turn depends on gurobi and ilpy. These dependencies must be installed with
21
+ conda before installing the plugin with pip.
22
+
23
+ conda create -n motile-tracker python=3.10
24
+ conda activate motile-tracker
25
+ conda install -c conda-forge -c funkelab -c gurobi ilpy
26
+ pip install motile-tracker
27
+
28
+ The conda environment can also be created from the provided conda_config.yml:
29
+
30
+ conda env create -f conda_config.yml
31
+ conda activate motile-tracker
32
+
33
+ Alternatively one can use [pixi](https://pixi.sh/).
34
+
35
+ ## Running Motile Tracker
36
+
37
+ To run the application:
38
+ * activate the conda environment created in the [Installation Step](#installation)
39
+
40
+ conda activate motile-tracker
41
+
42
+ * Run:
43
+
44
+ python -m motile_tracker.launcher
45
+
46
+ If [pixi](https://pixi.sh/) is available, you can run motile-tracker using:
47
+
48
+ pixi run start
49
+
50
+ ## Package the application into an executable and create the installer
51
+
52
+ To create the executab run
53
+
54
+ pixi run create-app
55
+
56
+ This command will create an application (.app) on OSX, an EXE on Windows and an
57
+ ELF executable on Linux.
58
+
59
+ On Windows in order to be able to package the application the ilpy library must be
60
+ properly installed and compiled. This will require [download](https://aka.ms/vs/17/release/vs_BuildTools.exe) and install [Visual Studio Build Tools](https://visualstudio.microsoft.com/downloads/). This comes with a script to set all required environment variables located typically at `"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"` so before you setup the app you need to run this bat file. For powershell run `scripts\scripts/set-vs-buildTools-env.ps1 <fullpathto vcvars64>`.
61
+
62
+ Further to create an installer for the app you will need:
63
+ * InnoSetup on Windows (`scoop install inno-setup` or `winget install "Inno Setup"`)
64
+ * create-dmg on OSX (`brew install create-dmg`)
65
+ * makeself on Linux (`apt install makeself`)
66
+
67
+ ## Issues
68
+
69
+ If you encounter any problems, please
70
+ [file an issue](https://github.com/funkelab/motile_tracker/issues)
71
+ along with a detailed description.
@@ -0,0 +1,12 @@
1
+ name: motile-tracker
2
+ channels:
3
+ - conda-forge
4
+ - funkelab
5
+ - gurobi
6
+ dependencies:
7
+ - python=3.11.*
8
+ - ilpy=0.4.1
9
+ - scip=9.1.*
10
+ - pip
11
+ - pip:
12
+ - motile-tracker
@@ -0,0 +1,12 @@
1
+ name: motile-tracker
2
+ version: 3.1.3
3
+ extra_files:
4
+ - install-scripts/README.md: README.md
5
+ environment_file: conda_config.yml
6
+ keep_pkgs: false
7
+ installer_type: all
8
+ check_path_spaces: false
9
+ register_envs: false
10
+ post_install: ./install-scripts/postinstall.sh # [unix]
11
+ post_install: ./install-scripts/postinstall.bat # [win]
12
+ license_file: LICENSE
@@ -1,5 +1,5 @@
1
1
  project = "Motile Tracker"
2
- copyright = "2024, Howard Hughes Medical Institute"
2
+ copyright = "2024, Howard Hughes Medical Institute" # noqa: A001
3
3
  author = "Caroline Malin-Mayor"
4
4
 
5
5
  extensions = [
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+
3
+ INSTALL_DIR=$PWD
4
+
5
+ chmod go+rx ${INSTALL_DIR}
6
+
7
+ echo "MotileTracker installed to ${INSTALL_DIR}"
8
+ echo "Run it using: ${INSTALL_DIR}/MotileTracker"
@@ -0,0 +1,26 @@
1
+ #define AppName "MotileTracker"
2
+ #define AppVersion GetFileVersion('dist\MotileTracker\MotileTracker.exe')
3
+ #define AppURL "https://funkelab.github.io/motile_tracker"
4
+
5
+ [Setup]
6
+ AppName={#AppName}
7
+ AppVersion="1.0"
8
+ AppPublisherURL={#AppURL}
9
+ DefaultDirName={commonpf}\{#AppName}
10
+ LicenseFile="..\LICENSE"
11
+ OutputDir="..\dist\"
12
+ OutputBaseFilename={#AppName}Installer
13
+ Compression=lzma
14
+ SolidCompression=yes
15
+
16
+ [Tasks]
17
+ Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
18
+
19
+ [Files]
20
+ Source: "..\dist\{#AppName}\{#AppName}.exe"; DestDir: "{app}"; Flags: ignoreversion
21
+ Source: "..\dist\{#AppName}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
22
+
23
+ [Icons]
24
+ Name: "{group}\{#AppName}"; Filename: "{app}\{#AppName}.exe"
25
+ Name: "{group}\{cm:UninstallProgram,{#AppName}}"; Filename: "{uninstallexe}"
26
+ Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppName}.exe"; Tasks: desktopicon
@@ -0,0 +1,122 @@
1
+ # -*- mode: python ; coding: utf-8 -*-
2
+ import sys
3
+ import napari
4
+ from PyInstaller.building.build_main import Analysis, PYZ, EXE, COLLECT, BUNDLE
5
+
6
+
7
+ sys.setrecursionlimit(sys.getrecursionlimit() * 5)
8
+
9
+ sys.modules["FixTk"] = None
10
+
11
+ NAME = "MotileTracker"
12
+ WINDOWED = True if sys.platform == "darwin" else False
13
+ DEBUG = False
14
+ UPX = False
15
+ BLOCK_CIPHER = None
16
+
17
+
18
+ def get_icon():
19
+ logo_file = "motile_logo.ico" if sys.platform.startswith("win") else "motile_logo.icns"
20
+ return logo_file
21
+
22
+
23
+ def get_version():
24
+ if sys.platform != "win32":
25
+ return None
26
+
27
+ from PyInstaller.utils.win32 import versioninfo as vi
28
+
29
+ ver_str = napari.__version__
30
+ version = ver_str.replace("+", ".").split(".")
31
+ version = [int(x) for x in version if x.isnumeric()]
32
+ version += [0] * (4 - len(version))
33
+ version = tuple(version)[:4]
34
+ return vi.VSVersionInfo(
35
+ ffi=vi.FixedFileInfo(filevers=version, prodvers=version),
36
+ kids=[
37
+ vi.StringFileInfo(
38
+ [
39
+ vi.StringTable(
40
+ "000004b0",
41
+ [
42
+ vi.StringStruct("CompanyName", NAME),
43
+ vi.StringStruct("FileDescription", NAME),
44
+ vi.StringStruct("FileVersion", ver_str),
45
+ vi.StringStruct("LegalCopyright", ""),
46
+ vi.StringStruct("OriginalFileName", NAME + ".exe"),
47
+ vi.StringStruct("ProductName", NAME),
48
+ vi.StringStruct("ProductVersion", ver_str),
49
+ ],
50
+ )
51
+ ]
52
+ ),
53
+ vi.VarFileInfo([vi.VarStruct("Translation", [0, 1200])]),
54
+ ],
55
+ )
56
+
57
+
58
+ a = Analysis(
59
+ ["src/motile_tracker/launcher.py"],
60
+ hookspath=["src/installer_hooks"],
61
+ hiddenimports=[
62
+ "motile_tracker",
63
+ ],
64
+ runtime_hooks=[],
65
+ excludes=[
66
+ "FixTk",
67
+ "tcl",
68
+ "tk",
69
+ "_tkinter",
70
+ "tkinter",
71
+ "Tkinter",
72
+ "matplotlib",
73
+ ],
74
+ noarchive=False,
75
+ optimize=0,
76
+ cipher=BLOCK_CIPHER,
77
+ )
78
+
79
+ pyz = PYZ(a.pure, a.zipped_data, cipher=BLOCK_CIPHER)
80
+
81
+ exe = EXE(
82
+ pyz,
83
+ a.scripts,
84
+ [],
85
+ exclude_binaries=True,
86
+ name=NAME,
87
+ debug=DEBUG,
88
+ bootloader_ignore_signals=False,
89
+ strip=False,
90
+ upx=UPX,
91
+ console=(not WINDOWED),
92
+ disable_windowed_traceback=False,
93
+ icon=get_icon(),
94
+ version=get_version(),
95
+ codesign_identity=None,
96
+ entitlements_file=None,
97
+ )
98
+
99
+ coll = COLLECT(
100
+ exe,
101
+ a.binaries,
102
+ a.zipfiles,
103
+ a.datas,
104
+ upx=UPX,
105
+ upx_exclude=[],
106
+ name=NAME,
107
+ )
108
+
109
+ if sys.platform == "darwin":
110
+ import motile_tracker
111
+
112
+ app = BUNDLE(
113
+ coll,
114
+ name=NAME + ".app",
115
+ icon=get_icon(),
116
+ bundle_identifier=f"com.{NAME}.{NAME}",
117
+ info_plist={
118
+ "CFBundleIdentifier": f"com.{NAME}.{NAME}",
119
+ "CFBundleShortVersionString": motile_tracker.__version__,
120
+ "NSHighResolutionCapable": "True",
121
+ },
122
+ )