motile-tracker 3.1.5.dev0__tar.gz → 3.2.1.dev0__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.
- motile_tracker-3.2.1.dev0/.github/dependabot.yml +10 -0
- motile_tracker-3.2.1.dev0/.github/workflows/deploy.yml +16 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/.gitignore +3 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/.pre-commit-config.yaml +4 -2
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/PKG-INFO +51 -9
- motile_tracker-3.2.1.dev0/README.md +74 -0
- motile_tracker-3.2.1.dev0/conda_config.yml +12 -0
- motile_tracker-3.2.1.dev0/construct.yaml +12 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/conf.py +1 -1
- motile_tracker-3.2.1.dev0/install-scripts/finalize-install.sh +8 -0
- motile_tracker-3.2.1.dev0/install-scripts/wininstaller.iss +26 -0
- motile_tracker-3.2.1.dev0/motile-tracker.spec +121 -0
- motile_tracker-3.2.1.dev0/motile_logo.icns +0 -0
- motile_tracker-3.2.1.dev0/motile_logo.ico +0 -0
- motile_tracker-3.2.1.dev0/pixi.lock +8022 -0
- motile_tracker-3.2.1.dev0/pixi.toml +65 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/pyproject.toml +15 -9
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/scripts/run_hela.py +2 -1
- motile_tracker-3.2.1.dev0/scripts/set-vs-buildTools-env.ps1 +19 -0
- motile_tracker-3.2.1.dev0/src/installer_hooks/hook-OpenGL.py +73 -0
- motile_tracker-3.2.1.dev0/src/installer_hooks/hook-finn.py +12 -0
- motile_tracker-3.2.1.dev0/src/installer_hooks/hook-fonticon_fa6.py +8 -0
- motile_tracker-3.2.1.dev0/src/installer_hooks/hook-ilpy.py +12 -0
- motile_tracker-3.2.1.dev0/src/installer_hooks/hook-motile_tracker.py +5 -0
- motile_tracker-3.2.1.dev0/src/installer_hooks/hook-superqt.py +7 -0
- motile_tracker-3.2.1.dev0/src/installer_hooks/hook-vispy.py +11 -0
- motile_tracker-3.2.1.dev0/src/motile_tracker/__init__.py +5 -0
- motile_tracker-3.2.1.dev0/src/motile_tracker/__main__.py +22 -0
- motile_tracker-3.2.1.dev0/src/motile_tracker/_version.py +21 -0
- motile_tracker-3.2.1.dev0/src/motile_tracker/launcher.py +51 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/backend/motile_run.py +1 -2
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/menus/motile_widget.py +6 -8
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/menus/run_editor.py +12 -12
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/menus/run_viewer.py +2 -4
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker.egg-info/PKG-INFO +51 -9
- motile_tracker-3.2.1.dev0/src/motile_tracker.egg-info/SOURCES.txt +68 -0
- motile_tracker-3.2.1.dev0/src/motile_tracker.egg-info/entry_points.txt +5 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker.egg-info/requires.txt +5 -4
- motile_tracker-3.2.1.dev0/src/motile_tracker.egg-info/top_level.txt +2 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/tests/conftest.py +0 -10
- motile_tracker-3.1.5.dev0/.github/workflows/deploy.yml +0 -29
- motile_tracker-3.1.5.dev0/README.md +0 -32
- motile_tracker-3.1.5.dev0/conda_config.yml +0 -8
- motile_tracker-3.1.5.dev0/scripts/test_edge_selection.py +0 -152
- motile_tracker-3.1.5.dev0/src/motile_tracker/__init__.py +0 -7
- motile_tracker-3.1.5.dev0/src/motile_tracker/application_menus/__init__.py +0 -3
- motile_tracker-3.1.5.dev0/src/motile_tracker/application_menus/editing_menu.py +0 -146
- motile_tracker-3.1.5.dev0/src/motile_tracker/application_menus/main_app.py +0 -26
- motile_tracker-3.1.5.dev0/src/motile_tracker/application_menus/menu_widget.py +0 -44
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_model/__init__.py +0 -4
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_model/action_history.py +0 -66
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_model/actions.py +0 -327
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_model/node_type.py +0 -11
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_model/solution_tracks.py +0 -230
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_model/tracks.py +0 -706
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_model/tracks_controller.py +0 -602
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/__init__.py +0 -7
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/__init__.py +0 -0
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/layers/__init__.py +0 -0
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/layers/contour_labels.py +0 -120
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/layers/track_graph.py +0 -197
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/layers/track_labels.py +0 -504
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/layers/track_points.py +0 -312
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/layers/tracks_layer_group.py +0 -171
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/tree_view/__init__.py +0 -0
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/tree_view/flip_axes_widget.py +0 -29
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/tree_view/navigation_widget.py +0 -186
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/tree_view/tree_view_feature_widget.py +0 -60
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/tree_view/tree_view_mode_widget.py +0 -57
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/tree_view/tree_widget.py +0 -750
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/tree_view/tree_widget_utils.py +0 -247
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/view_3d/__init__.py +0 -1
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/view_3d/clipping_plane_sliders.py +0 -455
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/view_3d/cross_widget.py +0 -121
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/view_3d/layer_dropdown.py +0 -55
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/view_3d/multiple_view_widget.py +0 -468
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/view_3d/orthogonal_views.py +0 -28
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views/view_3d/view3D.py +0 -85
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views_coordinator/__init__.py +0 -0
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views_coordinator/collection_widget.py +0 -446
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views_coordinator/node_selection_list.py +0 -76
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views_coordinator/tracks_list.py +0 -244
- motile_tracker-3.1.5.dev0/src/motile_tracker/data_views/views_coordinator/tracks_viewer.py +0 -265
- motile_tracker-3.1.5.dev0/src/motile_tracker/example_data.py +0 -284
- motile_tracker-3.1.5.dev0/src/motile_tracker/import_export/__init__.py +0 -2
- motile_tracker-3.1.5.dev0/src/motile_tracker/import_export/load_tracks.py +0 -271
- motile_tracker-3.1.5.dev0/src/motile_tracker/import_export/menus/__init__.py +0 -0
- motile_tracker-3.1.5.dev0/src/motile_tracker/import_export/menus/csv_widget.py +0 -216
- motile_tracker-3.1.5.dev0/src/motile_tracker/import_export/menus/import_external_tracks_dialog.py +0 -217
- motile_tracker-3.1.5.dev0/src/motile_tracker/import_export/menus/measurement_widget.py +0 -100
- motile_tracker-3.1.5.dev0/src/motile_tracker/import_export/menus/metadata_menu.py +0 -58
- motile_tracker-3.1.5.dev0/src/motile_tracker/import_export/menus/segmentation_widget.py +0 -193
- motile_tracker-3.1.5.dev0/src/motile_tracker/napari.yaml +0 -46
- motile_tracker-3.1.5.dev0/src/motile_tracker.egg-info/SOURCES.txt +0 -104
- motile_tracker-3.1.5.dev0/src/motile_tracker.egg-info/entry_points.txt +0 -2
- motile_tracker-3.1.5.dev0/src/motile_tracker.egg-info/top_level.txt +0 -1
- motile_tracker-3.1.5.dev0/tests/data_model/test_action_history.py +0 -60
- motile_tracker-3.1.5.dev0/tests/data_model/test_actions.py +0 -129
- motile_tracker-3.1.5.dev0/tests/data_model/test_tracks.py +0 -192
- motile_tracker-3.1.5.dev0/tests/data_model/test_tracks_controller.py +0 -306
- motile_tracker-3.1.5.dev0/tests/import_export/test_export_solution_to_csv.py +0 -47
- motile_tracker-3.1.5.dev0/tests/import_export/test_import_external_tracks.py +0 -270
- motile_tracker-3.1.5.dev0/tests/motile_plugin/utils/test_tree_widget_utils.py +0 -29
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/.github/workflows/docs.yml +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/.github/workflows/test.yml +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/LICENSE +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/Makefile +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/editing.rst +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/getting_started.rst +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/images/add_edge.png +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/images/add_node.png +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/images/break_edge.png +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/images/delete_node.png +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/images/results_demo_720p.mp4 +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/index.rst +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/key_bindings.rst +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/motile.rst +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/docs/source/tree_view.rst +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/scripts/hela_example_tracks.csv +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/scripts/load_external_points.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/scripts/view_external_tracks.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/setup.cfg +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/backend/__init__.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/backend/solve.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/backend/solver_params.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/menus/__init__.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/menus/param_values.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/menus/params_editor.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker/motile/menus/params_viewer.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/src/motile_tracker.egg-info/dependency_links.txt +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/tests/motile/backend/test_motile_run.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/tests/motile/backend/test_solver.py +0 -0
- {motile_tracker-3.1.5.dev0 → motile_tracker-3.2.1.dev0}/tests/motile/menus/test_run_editor.py +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
packaging:
|
|
11
|
+
permissions:
|
|
12
|
+
contents: write
|
|
13
|
+
uses: funkelab/motile_tracker_bundled_app/.github/workflows/bundle_app.yml@main
|
|
14
|
+
secrets: inherit
|
|
15
|
+
with:
|
|
16
|
+
event_name: ${{ github.event_name }}
|
|
@@ -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:
|
|
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.
|
|
13
|
+
rev: v0.11.9
|
|
12
14
|
hooks:
|
|
13
15
|
- id: ruff
|
|
14
16
|
args: [--fix]
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: motile-tracker
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.2.1.dev0
|
|
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
|
|
7
7
|
Project-URL: Bug Tracker, https://github.com/funkelab/motile_tracker/issues
|
|
8
8
|
Project-URL: Documentation, https://funkelab.github.io/motile_tracker/
|
|
9
9
|
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
-
Classifier: Framework :: napari
|
|
11
10
|
Classifier: Intended Audience :: Developers
|
|
12
11
|
Classifier: Intended Audience :: End Users/Desktop
|
|
13
12
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -22,8 +21,10 @@ Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
|
22
21
|
Requires-Python: >=3.10
|
|
23
22
|
Description-Content-Type: text/markdown
|
|
24
23
|
License-File: LICENSE
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
24
|
+
Requires-Dist: finn-viewer>=0.2
|
|
25
|
+
Requires-Dist: funtracks
|
|
26
|
+
Requires-Dist: appdirs
|
|
27
|
+
Requires-Dist: numpy<2.1,>=1.26
|
|
27
28
|
Requires-Dist: magicgui
|
|
28
29
|
Requires-Dist: qtpy
|
|
29
30
|
Requires-Dist: scikit-image
|
|
@@ -34,10 +35,9 @@ Requires-Dist: tifffile[all]
|
|
|
34
35
|
Requires-Dist: tqdm
|
|
35
36
|
Requires-Dist: dask[array]>=2021.10.0
|
|
36
37
|
Requires-Dist: fonticon-fontawesome6
|
|
38
|
+
Requires-Dist: PyQt5
|
|
37
39
|
Requires-Dist: pyqtgraph
|
|
38
|
-
Requires-Dist: lxml_html_clean
|
|
39
40
|
Provides-Extra: testing
|
|
40
|
-
Requires-Dist: napari; extra == "testing"
|
|
41
41
|
Requires-Dist: pyqt5; extra == "testing"
|
|
42
42
|
Requires-Dist: pytest; extra == "testing"
|
|
43
43
|
Requires-Dist: pytest-cov; extra == "testing"
|
|
@@ -59,11 +59,10 @@ Dynamic: license-file
|
|
|
59
59
|
|
|
60
60
|
[](https://github.com/funkelab/motile_tracker/actions)
|
|
61
61
|
[](https://codecov.io/gh/funkelab/motile_tracker)
|
|
62
|
-
[](https://napari-hub.org/plugins/motile_tracker)
|
|
63
62
|
|
|
64
63
|
The full documentation of the plugin can be found [here](https://funkelab.github.io/motile_tracker/).
|
|
65
64
|
|
|
66
|
-
|
|
65
|
+
An application for interactive tracking with [motile](https://github.com/funkelab/motile)
|
|
67
66
|
Motile is a library that makes it easy to solve tracking problems using optimization
|
|
68
67
|
by framing the task as an Integer Linear Program (ILP).
|
|
69
68
|
See the motile [documentation](https://funkelab.github.io/motile)
|
|
@@ -73,7 +72,7 @@ for more details on the concepts and method.
|
|
|
73
72
|
|
|
74
73
|
## Installation
|
|
75
74
|
|
|
76
|
-
This
|
|
75
|
+
This application depends on [motile](https://github.com/funkelab/motile), which in
|
|
77
76
|
turn depends on gurobi and ilpy. These dependencies must be installed with
|
|
78
77
|
conda before installing the plugin with pip.
|
|
79
78
|
|
|
@@ -82,6 +81,49 @@ conda before installing the plugin with pip.
|
|
|
82
81
|
conda install -c conda-forge -c funkelab -c gurobi ilpy
|
|
83
82
|
pip install motile-tracker
|
|
84
83
|
|
|
84
|
+
The conda environment can also be created from the provided conda_config.yml:
|
|
85
|
+
|
|
86
|
+
conda env create -f conda_config.yml
|
|
87
|
+
conda activate motile-tracker
|
|
88
|
+
|
|
89
|
+
Alternatively one can use [pixi](https://pixi.sh/).
|
|
90
|
+
|
|
91
|
+
## Running Motile Tracker
|
|
92
|
+
|
|
93
|
+
To run the application:
|
|
94
|
+
* activate the conda environment created in the [Installation Step](#installation)
|
|
95
|
+
|
|
96
|
+
conda activate motile-tracker
|
|
97
|
+
|
|
98
|
+
* Run:
|
|
99
|
+
|
|
100
|
+
python -m motile_tracker
|
|
101
|
+
|
|
102
|
+
or
|
|
103
|
+
|
|
104
|
+
motile_tracker
|
|
105
|
+
|
|
106
|
+
If [pixi](https://pixi.sh/) is available, you can run motile-tracker using:
|
|
107
|
+
|
|
108
|
+
pixi run start
|
|
109
|
+
|
|
110
|
+
## Package the application into an executable and create the installer
|
|
111
|
+
|
|
112
|
+
To create the executab run
|
|
113
|
+
|
|
114
|
+
pixi run create-app
|
|
115
|
+
|
|
116
|
+
This command will create an application (.app) on OSX, an EXE on Windows and an
|
|
117
|
+
ELF executable on Linux.
|
|
118
|
+
|
|
119
|
+
On Windows in order to be able to package the application the ilpy library must be
|
|
120
|
+
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>`.
|
|
121
|
+
|
|
122
|
+
Further to create an installer for the app you will need:
|
|
123
|
+
* InnoSetup on Windows (`scoop install inno-setup` or `winget install "Inno Setup"`)
|
|
124
|
+
* create-dmg on OSX (`brew install create-dmg`)
|
|
125
|
+
* makeself on Linux (`apt install makeself`)
|
|
126
|
+
|
|
85
127
|
## Issues
|
|
86
128
|
|
|
87
129
|
If you encounter any problems, please
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Motile Tracker
|
|
2
|
+
|
|
3
|
+
[](https://github.com/funkelab/motile_tracker/actions)
|
|
4
|
+
[](https://codecov.io/gh/funkelab/motile_tracker)
|
|
5
|
+
|
|
6
|
+
The full documentation of the plugin can be found [here](https://funkelab.github.io/motile_tracker/).
|
|
7
|
+
|
|
8
|
+
An application for interactive tracking with [motile](https://github.com/funkelab/motile)
|
|
9
|
+
Motile is a library that makes it easy to solve tracking problems using optimization
|
|
10
|
+
by framing the task as an Integer Linear Program (ILP).
|
|
11
|
+
See the motile [documentation](https://funkelab.github.io/motile)
|
|
12
|
+
for more details on the concepts and method.
|
|
13
|
+
|
|
14
|
+
----------------------------------
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
This application depends on [motile](https://github.com/funkelab/motile), which in
|
|
19
|
+
turn depends on gurobi and ilpy. These dependencies must be installed with
|
|
20
|
+
conda before installing the plugin with pip.
|
|
21
|
+
|
|
22
|
+
conda create -n motile-tracker python=3.10
|
|
23
|
+
conda activate motile-tracker
|
|
24
|
+
conda install -c conda-forge -c funkelab -c gurobi ilpy
|
|
25
|
+
pip install motile-tracker
|
|
26
|
+
|
|
27
|
+
The conda environment can also be created from the provided conda_config.yml:
|
|
28
|
+
|
|
29
|
+
conda env create -f conda_config.yml
|
|
30
|
+
conda activate motile-tracker
|
|
31
|
+
|
|
32
|
+
Alternatively one can use [pixi](https://pixi.sh/).
|
|
33
|
+
|
|
34
|
+
## Running Motile Tracker
|
|
35
|
+
|
|
36
|
+
To run the application:
|
|
37
|
+
* activate the conda environment created in the [Installation Step](#installation)
|
|
38
|
+
|
|
39
|
+
conda activate motile-tracker
|
|
40
|
+
|
|
41
|
+
* Run:
|
|
42
|
+
|
|
43
|
+
python -m motile_tracker
|
|
44
|
+
|
|
45
|
+
or
|
|
46
|
+
|
|
47
|
+
motile_tracker
|
|
48
|
+
|
|
49
|
+
If [pixi](https://pixi.sh/) is available, you can run motile-tracker using:
|
|
50
|
+
|
|
51
|
+
pixi run start
|
|
52
|
+
|
|
53
|
+
## Package the application into an executable and create the installer
|
|
54
|
+
|
|
55
|
+
To create the executab run
|
|
56
|
+
|
|
57
|
+
pixi run create-app
|
|
58
|
+
|
|
59
|
+
This command will create an application (.app) on OSX, an EXE on Windows and an
|
|
60
|
+
ELF executable on Linux.
|
|
61
|
+
|
|
62
|
+
On Windows in order to be able to package the application the ilpy library must be
|
|
63
|
+
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>`.
|
|
64
|
+
|
|
65
|
+
Further to create an installer for the app you will need:
|
|
66
|
+
* InnoSetup on Windows (`scoop install inno-setup` or `winget install "Inno Setup"`)
|
|
67
|
+
* create-dmg on OSX (`brew install create-dmg`)
|
|
68
|
+
* makeself on Linux (`apt install makeself`)
|
|
69
|
+
|
|
70
|
+
## Issues
|
|
71
|
+
|
|
72
|
+
If you encounter any problems, please
|
|
73
|
+
[file an issue](https://github.com/funkelab/motile_tracker/issues)
|
|
74
|
+
along with a detailed description.
|
|
@@ -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
|
|
@@ -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,121 @@
|
|
|
1
|
+
# -*- mode: python ; coding: utf-8 -*-
|
|
2
|
+
import sys
|
|
3
|
+
import motile_tracker
|
|
4
|
+
|
|
5
|
+
from PyInstaller.building.build_main import Analysis, PYZ, EXE, COLLECT, BUNDLE
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
sys.setrecursionlimit(sys.getrecursionlimit() * 5)
|
|
9
|
+
|
|
10
|
+
sys.modules["FixTk"] = None
|
|
11
|
+
|
|
12
|
+
NAME = "MotileTracker"
|
|
13
|
+
WINDOWED = True if sys.platform == "darwin" else False
|
|
14
|
+
DEBUG = False
|
|
15
|
+
UPX = False
|
|
16
|
+
BLOCK_CIPHER = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def get_icon():
|
|
20
|
+
logo_file = "motile_logo.ico" if sys.platform.startswith("win") else "motile_logo.icns"
|
|
21
|
+
return logo_file
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def get_version():
|
|
25
|
+
if sys.platform != "win32":
|
|
26
|
+
return None
|
|
27
|
+
|
|
28
|
+
from PyInstaller.utils.win32 import versioninfo as vi
|
|
29
|
+
|
|
30
|
+
ver_str = motile_tracker.__version__
|
|
31
|
+
version = ver_str.replace("+", ".").split(".")
|
|
32
|
+
version = [int(x) for x in version if x.isnumeric()]
|
|
33
|
+
version += [0] * (4 - len(version))
|
|
34
|
+
version = tuple(version)[:4]
|
|
35
|
+
return vi.VSVersionInfo(
|
|
36
|
+
ffi=vi.FixedFileInfo(filevers=version, prodvers=version),
|
|
37
|
+
kids=[
|
|
38
|
+
vi.StringFileInfo(
|
|
39
|
+
[
|
|
40
|
+
vi.StringTable(
|
|
41
|
+
"000004b0",
|
|
42
|
+
[
|
|
43
|
+
vi.StringStruct("CompanyName", NAME),
|
|
44
|
+
vi.StringStruct("FileDescription", NAME),
|
|
45
|
+
vi.StringStruct("FileVersion", ver_str),
|
|
46
|
+
vi.StringStruct("LegalCopyright", ""),
|
|
47
|
+
vi.StringStruct("OriginalFileName", NAME + ".exe"),
|
|
48
|
+
vi.StringStruct("ProductName", NAME),
|
|
49
|
+
vi.StringStruct("ProductVersion", ver_str),
|
|
50
|
+
],
|
|
51
|
+
)
|
|
52
|
+
]
|
|
53
|
+
),
|
|
54
|
+
vi.VarFileInfo([vi.VarStruct("Translation", [0, 1200])]),
|
|
55
|
+
],
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
a = Analysis(
|
|
60
|
+
["src/motile_tracker/launcher.py"],
|
|
61
|
+
hookspath=["src/installer_hooks"],
|
|
62
|
+
hiddenimports=[
|
|
63
|
+
"motile_tracker",
|
|
64
|
+
],
|
|
65
|
+
runtime_hooks=[],
|
|
66
|
+
excludes=[
|
|
67
|
+
"FixTk",
|
|
68
|
+
"tcl",
|
|
69
|
+
"tk",
|
|
70
|
+
"_tkinter",
|
|
71
|
+
"tkinter",
|
|
72
|
+
"Tkinter",
|
|
73
|
+
"matplotlib",
|
|
74
|
+
],
|
|
75
|
+
noarchive=False,
|
|
76
|
+
optimize=0,
|
|
77
|
+
cipher=BLOCK_CIPHER,
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
pyz = PYZ(a.pure, a.zipped_data, cipher=BLOCK_CIPHER)
|
|
81
|
+
|
|
82
|
+
exe = EXE(
|
|
83
|
+
pyz,
|
|
84
|
+
a.scripts,
|
|
85
|
+
[],
|
|
86
|
+
exclude_binaries=True,
|
|
87
|
+
name=NAME,
|
|
88
|
+
debug=DEBUG,
|
|
89
|
+
bootloader_ignore_signals=False,
|
|
90
|
+
strip=False,
|
|
91
|
+
upx=UPX,
|
|
92
|
+
console=(not WINDOWED),
|
|
93
|
+
disable_windowed_traceback=False,
|
|
94
|
+
icon=get_icon(),
|
|
95
|
+
version=get_version(),
|
|
96
|
+
codesign_identity=None,
|
|
97
|
+
entitlements_file=None,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
coll = COLLECT(
|
|
101
|
+
exe,
|
|
102
|
+
a.binaries,
|
|
103
|
+
a.zipfiles,
|
|
104
|
+
a.datas,
|
|
105
|
+
upx=UPX,
|
|
106
|
+
upx_exclude=[],
|
|
107
|
+
name=NAME,
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
if sys.platform == "darwin":
|
|
111
|
+
app = BUNDLE(
|
|
112
|
+
coll,
|
|
113
|
+
name=NAME + ".app",
|
|
114
|
+
icon=get_icon(),
|
|
115
|
+
bundle_identifier=f"com.{NAME}.{NAME}",
|
|
116
|
+
info_plist={
|
|
117
|
+
"CFBundleIdentifier": f"com.{NAME}.{NAME}",
|
|
118
|
+
"CFBundleShortVersionString": motile_tracker.__version__,
|
|
119
|
+
"NSHighResolutionCapable": "True",
|
|
120
|
+
},
|
|
121
|
+
)
|
|
Binary file
|
|
Binary file
|