motile-tracker 0.0.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-0.0.1.dev0/.github/dependabot.yml +10 -0
- motile_tracker-0.0.1.dev0/.github/workflows/deploy.yml +29 -0
- motile_tracker-0.0.1.dev0/.github/workflows/docs.yml +54 -0
- motile_tracker-0.0.1.dev0/.github/workflows/publish.yml +137 -0
- motile_tracker-0.0.1.dev0/.github/workflows/test.yml +54 -0
- motile_tracker-0.0.1.dev0/.gitignore +89 -0
- motile_tracker-0.0.1.dev0/.pre-commit-config.yaml +23 -0
- motile_tracker-0.0.1.dev0/LICENSE +28 -0
- motile_tracker-0.0.1.dev0/PKG-INFO +128 -0
- motile_tracker-0.0.1.dev0/README.md +71 -0
- motile_tracker-0.0.1.dev0/conda_config.yml +12 -0
- motile_tracker-0.0.1.dev0/construct.yaml +12 -0
- motile_tracker-0.0.1.dev0/docs/Makefile +20 -0
- motile_tracker-0.0.1.dev0/docs/source/conf.py +21 -0
- motile_tracker-0.0.1.dev0/docs/source/editing.rst +73 -0
- motile_tracker-0.0.1.dev0/docs/source/getting_started.rst +96 -0
- motile_tracker-0.0.1.dev0/docs/source/images/add_edge.png +0 -0
- motile_tracker-0.0.1.dev0/docs/source/images/add_node.png +0 -0
- motile_tracker-0.0.1.dev0/docs/source/images/break_edge.png +0 -0
- motile_tracker-0.0.1.dev0/docs/source/images/delete_node.png +0 -0
- motile_tracker-0.0.1.dev0/docs/source/images/results_demo_720p.mp4 +0 -0
- motile_tracker-0.0.1.dev0/docs/source/index.rst +31 -0
- motile_tracker-0.0.1.dev0/docs/source/key_bindings.rst +95 -0
- motile_tracker-0.0.1.dev0/docs/source/motile.rst +54 -0
- motile_tracker-0.0.1.dev0/docs/source/tree_view.rst +63 -0
- motile_tracker-0.0.1.dev0/install-scripts/README.md +8 -0
- motile_tracker-0.0.1.dev0/install-scripts/create-dmg.sh +7 -0
- motile_tracker-0.0.1.dev0/install-scripts/finalize-install.sh +8 -0
- motile_tracker-0.0.1.dev0/install-scripts/wininstaller.iss +26 -0
- motile_tracker-0.0.1.dev0/logo.icns +0 -0
- motile_tracker-0.0.1.dev0/logo.ico +0 -0
- motile_tracker-0.0.1.dev0/motile-tracker.spec +123 -0
- motile_tracker-0.0.1.dev0/pixi.lock +8173 -0
- motile_tracker-0.0.1.dev0/pixi.toml +72 -0
- motile_tracker-0.0.1.dev0/pyproject.toml +105 -0
- motile_tracker-0.0.1.dev0/scripts/hela_example_tracks.csv +8602 -0
- motile_tracker-0.0.1.dev0/scripts/load_external_points.py +39 -0
- motile_tracker-0.0.1.dev0/scripts/run_hela.py +41 -0
- motile_tracker-0.0.1.dev0/scripts/set-vs-buildTools-env.ps1 +19 -0
- motile_tracker-0.0.1.dev0/scripts/test_edge_selection.py +160 -0
- motile_tracker-0.0.1.dev0/scripts/view_external_tracks.py +47 -0
- motile_tracker-0.0.1.dev0/setup.cfg +4 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-OpenGL.py +73 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-fonticon_fa6.py +8 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-freetype.py +4 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-ilpy.py +5 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-ipykernel.py +1 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-motile_tracker.py +5 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-napari.py +19 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-parso.py +5 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-superqt.py +7 -0
- motile_tracker-0.0.1.dev0/src/installer_hooks/hook-vispy.py +11 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/__init__.py +5 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/_version.py +21 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/application_menus/__init__.py +3 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/application_menus/editing_menu.py +100 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/application_menus/main_app.py +26 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/application_menus/menu_widget.py +32 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_model/__init__.py +4 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_model/action_history.py +66 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_model/actions.py +327 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_model/node_type.py +11 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_model/solution_tracks.py +186 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_model/tracks.py +706 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_model/tracks_controller.py +602 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/__init__.py +7 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/__init__.py +0 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/layers/__init__.py +0 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/layers/track_graph.py +133 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/layers/track_labels.py +460 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/layers/track_points.py +237 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/layers/tracks_layer_group.py +168 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/tree_view/__init__.py +0 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/tree_view/flip_axes_widget.py +29 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/tree_view/navigation_widget.py +186 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/tree_view/tree_view_feature_widget.py +60 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/tree_view/tree_view_mode_widget.py +57 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/tree_view/tree_widget.py +749 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views/tree_view/tree_widget_utils.py +247 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views_coordinator/__init__.py +0 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views_coordinator/node_selection_list.py +65 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views_coordinator/tracks_list.py +239 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/data_views/views_coordinator/tracks_viewer.py +246 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/example_data.py +284 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/import_export/__init__.py +2 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/import_export/load_tracks.py +271 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/import_export/menus/__init__.py +0 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/import_export/menus/csv_widget.py +213 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/import_export/menus/import_external_tracks_dialog.py +216 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/import_export/menus/measurement_widget.py +100 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/import_export/menus/metadata_menu.py +58 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/import_export/menus/segmentation_widget.py +193 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/launcher.py +91 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/backend/__init__.py +3 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/backend/motile_run.py +281 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/backend/solve.py +127 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/backend/solver_params.py +50 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/menus/__init__.py +1 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/menus/motile_widget.py +185 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/menus/param_values.py +76 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/menus/params_editor.py +183 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/menus/params_viewer.py +124 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/menus/run_editor.py +255 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/motile/menus/run_viewer.py +152 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker/napari.yaml +46 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker.egg-info/PKG-INFO +128 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker.egg-info/SOURCES.txt +120 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker.egg-info/dependency_links.txt +1 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker.egg-info/entry_points.txt +5 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker.egg-info/requires.txt +35 -0
- motile_tracker-0.0.1.dev0/src/motile_tracker.egg-info/top_level.txt +2 -0
- motile_tracker-0.0.1.dev0/tests/conftest.py +174 -0
- motile_tracker-0.0.1.dev0/tests/data_model/test_action_history.py +60 -0
- motile_tracker-0.0.1.dev0/tests/data_model/test_actions.py +129 -0
- motile_tracker-0.0.1.dev0/tests/data_model/test_tracks.py +192 -0
- motile_tracker-0.0.1.dev0/tests/data_model/test_tracks_controller.py +306 -0
- motile_tracker-0.0.1.dev0/tests/import_export/test_export_solution_to_csv.py +27 -0
- motile_tracker-0.0.1.dev0/tests/import_export/test_import_external_tracks.py +270 -0
- motile_tracker-0.0.1.dev0/tests/motile/backend/test_motile_run.py +29 -0
- motile_tracker-0.0.1.dev0/tests/motile/backend/test_solver.py +17 -0
- motile_tracker-0.0.1.dev0/tests/motile/menus/test_run_editor.py +9 -0
- motile_tracker-0.0.1.dev0/tests/motile_plugin/utils/test_tree_widget_utils.py +29 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Deploy
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ["*"]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build-n-publish:
|
|
10
|
+
name: Build and publish Python 🐍 distributions 📦 to PyPI
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
if: contains(github.ref, 'tags')
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
- uses: actions/setup-python@v5
|
|
16
|
+
with:
|
|
17
|
+
python-version: "3.x"
|
|
18
|
+
- name: Build a binary wheel and a source tarball
|
|
19
|
+
run: |
|
|
20
|
+
python -m pip install -U pip
|
|
21
|
+
python -m pip install -U setuptools setuptools_scm build
|
|
22
|
+
python -m build --sdist --wheel --outdir dist/
|
|
23
|
+
- name: Publish to PyPI
|
|
24
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
25
|
+
with:
|
|
26
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
27
|
+
- uses: softprops/action-gh-release@v2
|
|
28
|
+
with:
|
|
29
|
+
generate_release_notes: true
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Docs build
|
|
2
|
+
|
|
3
|
+
# build the documentation whenever there are new commits on main
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
# security: restrict permissions for CI jobs.
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
# Build the documentation and upload the static HTML files as an artifact.
|
|
16
|
+
build:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
- uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: '3.10'
|
|
23
|
+
- name: Install conda dependencies
|
|
24
|
+
uses: conda-incubator/setup-miniconda@v3
|
|
25
|
+
with:
|
|
26
|
+
python-version: '3.10'
|
|
27
|
+
environment-file: conda_config.yml
|
|
28
|
+
channel-priority: true
|
|
29
|
+
- name: Install pip dependencies
|
|
30
|
+
shell: bash -el {0} # this is necessary to activate the conda env
|
|
31
|
+
run: |
|
|
32
|
+
pip install ".[docs]"
|
|
33
|
+
- name: Build docs
|
|
34
|
+
shell: bash -el {0}
|
|
35
|
+
run: |
|
|
36
|
+
cd docs/
|
|
37
|
+
make html
|
|
38
|
+
- uses: actions/upload-pages-artifact@v3
|
|
39
|
+
with:
|
|
40
|
+
path: docs/build/html
|
|
41
|
+
|
|
42
|
+
# Deploy the artifact to GitHub pages.
|
|
43
|
+
deploy:
|
|
44
|
+
needs: build
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
permissions:
|
|
47
|
+
pages: write
|
|
48
|
+
id-token: write
|
|
49
|
+
environment:
|
|
50
|
+
name: github-pages
|
|
51
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
52
|
+
steps:
|
|
53
|
+
- id: deployment
|
|
54
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
name: publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [deploy]
|
|
6
|
+
tags: ["v*"] # Push events to matching v*, i.e. v1.0, v20.15.10
|
|
7
|
+
paths:
|
|
8
|
+
- '.github/workflows/publish.yml' # this file
|
|
9
|
+
pull_request: {}
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
|
|
12
|
+
concurrency:
|
|
13
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
14
|
+
cancel-in-progress: true
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
prepare-matrix:
|
|
18
|
+
# See this SO answer for details on conditional matrices
|
|
19
|
+
# https://stackoverflow.com/a/65434401/3407590
|
|
20
|
+
name: Prepare matrix
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
outputs:
|
|
23
|
+
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.11"
|
|
28
|
+
- name: Prepare matrix
|
|
29
|
+
id: set-matrix
|
|
30
|
+
shell: python
|
|
31
|
+
# The Python versions chosen below will determine which
|
|
32
|
+
# Python versions the installers will bundle. The general
|
|
33
|
+
# principle is to follow the SPEC-0 recommendation:
|
|
34
|
+
# https://scientific-python.org/specs/spec-0000/
|
|
35
|
+
run: |
|
|
36
|
+
import os
|
|
37
|
+
import json
|
|
38
|
+
elements = [
|
|
39
|
+
{
|
|
40
|
+
"os": "ubuntu-latest",
|
|
41
|
+
"target-platform": "linux-64",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"os": "macos-14",
|
|
45
|
+
"target-platform": "osx-arm64",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"os": "windows-latest",
|
|
49
|
+
"target-platform": "win-64",
|
|
50
|
+
},
|
|
51
|
+
]
|
|
52
|
+
platforms_str = "${{ inputs.installer_platforms || 'linux-64,win-64,osx-arm64' }}"
|
|
53
|
+
platforms = {p.strip() for p in platforms_str.split(",")}
|
|
54
|
+
matrix = {"include": []}
|
|
55
|
+
for element in elements:
|
|
56
|
+
if element["target-platform"] in platforms:
|
|
57
|
+
matrix["include"].append(element)
|
|
58
|
+
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
|
|
59
|
+
f.write(f"matrix={json.dumps(matrix)}\n")
|
|
60
|
+
|
|
61
|
+
create-app-bundle:
|
|
62
|
+
name: Create ${{ matrix.target-platform }} app bundle
|
|
63
|
+
runs-on: ${{ matrix.os }}
|
|
64
|
+
needs: prepare-matrix
|
|
65
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
66
|
+
strategy:
|
|
67
|
+
fail-fast: false
|
|
68
|
+
matrix: ${{ fromJSON(needs.prepare-matrix.outputs.matrix) }}
|
|
69
|
+
env:
|
|
70
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
71
|
+
steps:
|
|
72
|
+
- name: Checkout code
|
|
73
|
+
uses: actions/checkout@v4
|
|
74
|
+
with:
|
|
75
|
+
fetch-depth: 0
|
|
76
|
+
path: motile-tracker
|
|
77
|
+
|
|
78
|
+
- name: Install pixi
|
|
79
|
+
uses: prefix-dev/setup-pixi@v0.8.3
|
|
80
|
+
with:
|
|
81
|
+
pixi-version: v0.43.2
|
|
82
|
+
cache: false
|
|
83
|
+
run-install: false
|
|
84
|
+
manifest-path: motile-tracker/pixi.toml
|
|
85
|
+
|
|
86
|
+
- name: Install build tools (Windows only)
|
|
87
|
+
if: runner.os == 'Windows'
|
|
88
|
+
run: |
|
|
89
|
+
$installer = "vs_BuildTools.exe"
|
|
90
|
+
|
|
91
|
+
Invoke-WebRequest -Uri "https://aka.ms/vs/17/release/vs_BuildTools.exe" -OutFile $installer
|
|
92
|
+
|
|
93
|
+
Start-Process -Wait -FilePath .\$installer -ArgumentList `
|
|
94
|
+
"--quiet", `
|
|
95
|
+
"--wait", `
|
|
96
|
+
"--norestart", `
|
|
97
|
+
"--nocache", `
|
|
98
|
+
"--add Microsoft.VisualStudio.Workload.VCTools", `
|
|
99
|
+
"--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64", `
|
|
100
|
+
"--add Microsoft.VisualStudio.Component.Windows10SDK.19041", `
|
|
101
|
+
"--includeRecommended"
|
|
102
|
+
shell: pwsh
|
|
103
|
+
|
|
104
|
+
- name: Install app dependencies
|
|
105
|
+
working-directory: motile-tracker
|
|
106
|
+
run: pixi run setup
|
|
107
|
+
|
|
108
|
+
- name: Download installer app (Linux only)
|
|
109
|
+
if: runner.os == 'Linux'
|
|
110
|
+
run: |
|
|
111
|
+
sudo apt-get update
|
|
112
|
+
sudo apt-get install -y makeself
|
|
113
|
+
|
|
114
|
+
- name: Download installer app (macOS only)
|
|
115
|
+
if: runner.os == 'macOS'
|
|
116
|
+
run: |
|
|
117
|
+
brew install create-dmg
|
|
118
|
+
|
|
119
|
+
- name: Download installer app (Windows only)
|
|
120
|
+
if: runner.os == 'Windows'
|
|
121
|
+
run: |
|
|
122
|
+
choco install -y innosetup
|
|
123
|
+
|
|
124
|
+
- name: Package native app
|
|
125
|
+
working-directory: motile-tracker
|
|
126
|
+
run: pixi run create-installer
|
|
127
|
+
|
|
128
|
+
- name: Upload app
|
|
129
|
+
uses: softprops/action-gh-release@v2
|
|
130
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
131
|
+
with:
|
|
132
|
+
files: |
|
|
133
|
+
motile-tracker/dist/MotileTrackerInstaller.{dmg|exe|run}
|
|
134
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
135
|
+
draft: false
|
|
136
|
+
prerelease: false
|
|
137
|
+
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
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
|
+
test:
|
|
16
|
+
name: ${{ matrix.platform }} py${{ matrix.python-version }}
|
|
17
|
+
runs-on: ${{ matrix.platform }}
|
|
18
|
+
strategy:
|
|
19
|
+
matrix:
|
|
20
|
+
platform: [ubuntu-latest, macos-latest] # windows-latest, temporarily disabled until ilpy is fixed
|
|
21
|
+
python-version: ["3.10", "3.11"]
|
|
22
|
+
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v3
|
|
25
|
+
|
|
26
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
27
|
+
uses: actions/setup-python@v4
|
|
28
|
+
with:
|
|
29
|
+
python-version: ${{ matrix.python-version }}
|
|
30
|
+
|
|
31
|
+
# note: if you need dependencies from conda, considering using
|
|
32
|
+
# setup-miniconda: https://github.com/conda-incubator/setup-miniconda
|
|
33
|
+
- name: Install conda dependencies
|
|
34
|
+
uses: conda-incubator/setup-miniconda@v3
|
|
35
|
+
with:
|
|
36
|
+
python-version: ${{ matrix.python-version }}
|
|
37
|
+
environment-file: conda_config.yml
|
|
38
|
+
channel-priority: true
|
|
39
|
+
|
|
40
|
+
- name: Install pip dependencies
|
|
41
|
+
shell: bash -el {0} # this is necessary to activate the conda env
|
|
42
|
+
run: |
|
|
43
|
+
pip install ".[testing]"
|
|
44
|
+
|
|
45
|
+
- name: Test with pytest
|
|
46
|
+
shell: bash -el {0}
|
|
47
|
+
run: |
|
|
48
|
+
pytest --color=yes --cov=motile-tracker --cov-report=xml --cov-report=term-missing tests
|
|
49
|
+
|
|
50
|
+
- name: Coverage
|
|
51
|
+
uses: codecov/codecov-action@v4
|
|
52
|
+
with:
|
|
53
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
54
|
+
slug: funkelab/motile-tracker
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
scripts/
|
|
2
|
+
|
|
3
|
+
# Byte-compiled / optimized / DLL files
|
|
4
|
+
__pycache__/
|
|
5
|
+
*.py[cod]
|
|
6
|
+
*$py.class
|
|
7
|
+
|
|
8
|
+
# C extensions
|
|
9
|
+
*.so
|
|
10
|
+
|
|
11
|
+
# Backup files
|
|
12
|
+
*~
|
|
13
|
+
|
|
14
|
+
# Distribution / packaging
|
|
15
|
+
.Python
|
|
16
|
+
env/
|
|
17
|
+
build/
|
|
18
|
+
develop-eggs/
|
|
19
|
+
dist/
|
|
20
|
+
downloads/
|
|
21
|
+
eggs/
|
|
22
|
+
.eggs/
|
|
23
|
+
lib/
|
|
24
|
+
lib64/
|
|
25
|
+
parts/
|
|
26
|
+
sdist/
|
|
27
|
+
var/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
|
|
32
|
+
# PyInstaller
|
|
33
|
+
# Usually these files are written by a python script from a template
|
|
34
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
35
|
+
*.manifest
|
|
36
|
+
*.spec
|
|
37
|
+
|
|
38
|
+
# Installer logs
|
|
39
|
+
pip-log.txt
|
|
40
|
+
pip-delete-this-directory.txt
|
|
41
|
+
|
|
42
|
+
# Unit test / coverage reports
|
|
43
|
+
htmlcov/
|
|
44
|
+
.tox/
|
|
45
|
+
.coverage
|
|
46
|
+
.coverage.*
|
|
47
|
+
.cache
|
|
48
|
+
nosetests.xml
|
|
49
|
+
coverage.xml
|
|
50
|
+
*,cover
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.napari_cache
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
|
|
62
|
+
# Flask instance folder
|
|
63
|
+
instance/
|
|
64
|
+
|
|
65
|
+
# Sphinx documentation
|
|
66
|
+
docs/_build/
|
|
67
|
+
|
|
68
|
+
# MkDocs documentation
|
|
69
|
+
/site/
|
|
70
|
+
|
|
71
|
+
# PyBuilder
|
|
72
|
+
target/
|
|
73
|
+
|
|
74
|
+
# Pycharm and VSCode
|
|
75
|
+
.idea/
|
|
76
|
+
venv/
|
|
77
|
+
.vscode/
|
|
78
|
+
|
|
79
|
+
# IPython Notebook
|
|
80
|
+
.ipynb_checkpoints
|
|
81
|
+
|
|
82
|
+
# pyenv
|
|
83
|
+
.python-version
|
|
84
|
+
|
|
85
|
+
# OS
|
|
86
|
+
.DS_Store
|
|
87
|
+
|
|
88
|
+
# written by setuptools_scm
|
|
89
|
+
**/_version.py
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
ci:
|
|
2
|
+
autofix_prs: false
|
|
3
|
+
repos:
|
|
4
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
5
|
+
rev: v5.0.0
|
|
6
|
+
hooks:
|
|
7
|
+
- id: check-docstring-first
|
|
8
|
+
- id: end-of-file-fixer
|
|
9
|
+
- id: trailing-whitespace
|
|
10
|
+
exclude: ^\.napari-hub/.*
|
|
11
|
+
- id: check-yaml # checks for correct yaml syntax for github actions ex.
|
|
12
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
13
|
+
rev: v0.11.0
|
|
14
|
+
hooks:
|
|
15
|
+
- id: ruff
|
|
16
|
+
args: [--fix]
|
|
17
|
+
- id: ruff-format
|
|
18
|
+
# https://mypy.readthedocs.io/en/stable/introduction.html
|
|
19
|
+
# you may wish to add this as well!
|
|
20
|
+
# - repo: https://github.com/pre-commit/mirrors-mypy
|
|
21
|
+
# rev: v0.910-1
|
|
22
|
+
# hooks:
|
|
23
|
+
# - id: mypy
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
|
|
2
|
+
Copyright (c) 2023, Howard Hughes Medical Institute
|
|
3
|
+
All rights reserved.
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
* Neither the name of copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: motile-tracker
|
|
3
|
+
Version: 0.0.1.dev0
|
|
4
|
+
Summary: Application for interactive tracking with global optimization
|
|
5
|
+
Author-email: Caroline Malin-Mayor <malinmayorc@janelia.hhmi.org>
|
|
6
|
+
License: BSD 3-Clause License
|
|
7
|
+
Project-URL: Bug Tracker, https://github.com/funkelab/motile_tracker/issues
|
|
8
|
+
Project-URL: Documentation, https://funkelab.github.io/motile_tracker/
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Framework :: napari
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: napari[all]
|
|
26
|
+
Requires-Dist: numpy<2.1,>=1.26
|
|
27
|
+
Requires-Dist: magicgui
|
|
28
|
+
Requires-Dist: qtpy
|
|
29
|
+
Requires-Dist: scikit-image
|
|
30
|
+
Requires-Dist: motile>=0.3
|
|
31
|
+
Requires-Dist: motile_toolbox==0.4.0
|
|
32
|
+
Requires-Dist: pydantic
|
|
33
|
+
Requires-Dist: tifffile[all]
|
|
34
|
+
Requires-Dist: tqdm
|
|
35
|
+
Requires-Dist: dask[array]>=2021.10.0
|
|
36
|
+
Requires-Dist: fonticon-fontawesome6
|
|
37
|
+
Requires-Dist: pyqtgraph
|
|
38
|
+
Requires-Dist: lxml_html_clean
|
|
39
|
+
Provides-Extra: testing
|
|
40
|
+
Requires-Dist: napari; extra == "testing"
|
|
41
|
+
Requires-Dist: pyqt5; extra == "testing"
|
|
42
|
+
Requires-Dist: pytest; extra == "testing"
|
|
43
|
+
Requires-Dist: pytest-cov; extra == "testing"
|
|
44
|
+
Requires-Dist: pytest-qt; extra == "testing"
|
|
45
|
+
Provides-Extra: docs
|
|
46
|
+
Requires-Dist: myst-parser; extra == "docs"
|
|
47
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
48
|
+
Requires-Dist: sphinx-autoapi; extra == "docs"
|
|
49
|
+
Requires-Dist: sphinx_rtd_theme; extra == "docs"
|
|
50
|
+
Requires-Dist: sphinxcontrib-video; extra == "docs"
|
|
51
|
+
Provides-Extra: dev
|
|
52
|
+
Requires-Dist: ruff; extra == "dev"
|
|
53
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
54
|
+
Provides-Extra: all
|
|
55
|
+
Requires-Dist: motile-tracker[dev,docs,testing]; extra == "all"
|
|
56
|
+
Dynamic: license-file
|
|
57
|
+
|
|
58
|
+
# Motile Tracker
|
|
59
|
+
|
|
60
|
+
[](https://github.com/funkelab/motile_tracker/actions)
|
|
61
|
+
[](https://codecov.io/gh/funkelab/motile_tracker)
|
|
62
|
+
[](https://napari-hub.org/plugins/motile_tracker)
|
|
63
|
+
|
|
64
|
+
The full documentation of the plugin can be found [here](https://funkelab.github.io/motile_tracker/).
|
|
65
|
+
|
|
66
|
+
A plugin for tracking with [motile](https://github.com/funkelab/motile) in napari.
|
|
67
|
+
Motile is a library that makes it easy to solve tracking problems using optimization
|
|
68
|
+
by framing the task as an Integer Linear Program (ILP).
|
|
69
|
+
See the motile [documentation](https://funkelab.github.io/motile)
|
|
70
|
+
for more details on the concepts and method.
|
|
71
|
+
|
|
72
|
+
----------------------------------
|
|
73
|
+
|
|
74
|
+
## Installation
|
|
75
|
+
|
|
76
|
+
This plugin depends on [motile](https://github.com/funkelab/motile), which in
|
|
77
|
+
turn depends on gurobi and ilpy. These dependencies must be installed with
|
|
78
|
+
conda before installing the plugin with pip.
|
|
79
|
+
|
|
80
|
+
conda create -n motile-tracker python=3.10
|
|
81
|
+
conda activate motile-tracker
|
|
82
|
+
conda install -c conda-forge -c funkelab -c gurobi ilpy
|
|
83
|
+
pip install motile-tracker
|
|
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
|
+
|
|
124
|
+
## Issues
|
|
125
|
+
|
|
126
|
+
If you encounter any problems, please
|
|
127
|
+
[file an issue](https://github.com/funkelab/motile_tracker/issues)
|
|
128
|
+
along with a detailed description.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Motile Tracker
|
|
2
|
+
|
|
3
|
+
[](https://github.com/funkelab/motile_tracker/actions)
|
|
4
|
+
[](https://codecov.io/gh/funkelab/motile_tracker)
|
|
5
|
+
[](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
|
+
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,20 @@
|
|
|
1
|
+
# Minimal makefile for Sphinx documentation
|
|
2
|
+
#
|
|
3
|
+
|
|
4
|
+
# You can set these variables from the command line, and also
|
|
5
|
+
# from the environment for the first two.
|
|
6
|
+
SPHINXOPTS ?=
|
|
7
|
+
SPHINXBUILD ?= sphinx-build
|
|
8
|
+
SOURCEDIR = source
|
|
9
|
+
BUILDDIR = build
|
|
10
|
+
|
|
11
|
+
# Put it first so that "make" without argument is like "make help".
|
|
12
|
+
help:
|
|
13
|
+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
14
|
+
|
|
15
|
+
.PHONY: help Makefile
|
|
16
|
+
|
|
17
|
+
# Catch-all target: route all unknown targets to Sphinx using the new
|
|
18
|
+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
|
19
|
+
%: Makefile
|
|
20
|
+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|