Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
376 commits
Select commit Hold shift + click to select a range
f94d305
Show spots without meshes as icosahedron spheres.
tinevez May 23, 2023
20265b2
Don't crash when loading faulty meshes.
tinevez May 24, 2023
a87b605
Fix OverlapTracker not working if the first frame was devoid of visib…
tinevez May 24, 2023
97fdb8b
Put a test drive in a try/catch block so that we can get exceptions.
tinevez Jun 2, 2023
6738b29
Minor tweak of the demo.
tinevez May 30, 2023
1d615a9
Reflect model edits in the TrackMate-BVV.
tinevez Jun 2, 2023
41cf2cb
TrackMate BVV can focus view on selected spot.
tinevez Jun 2, 2023
5979ad3
Basic support of selection highlighting in the BVV.
tinevez Jun 2, 2023
c463b8e
Add a button to launch a 3D view on the GUI.
tinevez Jun 3, 2023
785ea9c
Tweak error messages.
tinevez Jun 6, 2023
8746328
WIP: rework the 2d + z processor.
tinevez Jun 6, 2023
425db02
Fix a very serious and a very stupid mistake with the move() methods …
tinevez Jun 7, 2023
47b6e77
Make the meshToSpot method public.
tinevez Jun 7, 2023
4fafc65
WIP: on Process2DZ, assign quality, work well with ROIs.
tinevez Jun 7, 2023
95557bd
Disable GUI when launching BVV.
tinevez Jun 8, 2023
e5d9f51
Simplify StupidMesh.
tinevez Jun 9, 2023
a0d0bf5
Exposes the BvvHandler of a TrackMate BVV view.
tinevez Jun 9, 2023
b30793a
Set frame title of TrackMate BVV views.
tinevez Jun 9, 2023
ffabe88
Position the BVV window more or less next to the GUI.
tinevez Jun 9, 2023
d992fb9
Better return signature for mesh to spot mesh method.
tinevez Jun 9, 2023
7148c33
Make sure we have a SpotMesh built with all normals computed.
tinevez Jun 9, 2023
b5f78b8
Tweak the Process2DZ detector.
tinevez Jun 9, 2023
47d0429
Update to non-SNAPSHOT version of bigvolumeviewer.
tinevez Jul 3, 2023
812c2ab
WIP: Trying to implement transparency of meshes.
tinevez Jul 3, 2023
2e54332
Fix cast error
tinevez Sep 11, 2023
52938c8
Spot is now an interface, with 3 derived class.
tinevez May 8, 2023
cc2cf0c
Rework the 2D and 3D detection utils.
tinevez May 13, 2023
7b72c8b
WIP show meshes in bvv. requires 'mesh' branch of bvv
tpietzsch Apr 18, 2023
395834a
Depend on imglib2-mesh preview, not on net-imagej-mesh.
tinevez Sep 1, 2023
4be3e46
Use the scale method of the spot interface.
tinevez Sep 12, 2023
1c96be7
Don't hide exceptions when launching the BVV.
tinevez Sep 12, 2023
619a43d
Try to do without deprecated method.
tinevez Sep 12, 2023
89ed861
Remove debug main method.
tinevez Sep 12, 2023
82b6363
Use the new imglib2-mesh master branch in the imglib2 org.
tinevez Sep 19, 2023
9aa5b4a
Abide to recent changes in imglib2-mesh.
tinevez Oct 8, 2023
0f00eb2
Fix all javadoc warnings.
tinevez Oct 8, 2023
98b7797
Fix mistake in calling the translateScale mesh method.
tinevez Oct 8, 2023
ce14c2c
Make the mesh of a SpotMesh setable.
tinevez Nov 17, 2023
72cde37
Return the actual BufferMesh class when we expose the mesh of a SpotM…
tinevez Nov 17, 2023
802f410
Display the default element in the enum combobox of StyleElements.
tinevez Nov 17, 2023
e51487e
An action to smooth meshes with Tuabin smoothing.
tinevez Nov 17, 2023
b20c366
Multithread the mesh smoother.
tinevez Nov 19, 2023
32b6d10
Improve smoothing action.
tinevez Nov 20, 2023
8d7c819
Mesh smoother can run on all visible spots or only on selection.
tinevez Nov 20, 2023
1cf63d5
Tweak the mesh smoother panel.
tinevez Nov 20, 2023
cfc8018
Tell the user when we update meshes and features after smoothing meshes.
tinevez Nov 20, 2023
6bce463
Add a toString method to MeshSmootherModel.
tinevez Nov 20, 2023
16b881c
Add a 'basic' setting panel to the mesh smoother.
tinevez Nov 20, 2023
778911a
The mesh smoother uses the numThreads from the trackmate instance.
tinevez Nov 22, 2023
7fcf063
WIP: Smooth mask or label before generating mesh to smooth it.
tinevez Nov 22, 2023
5a86bba
WIP: Implement smoothing in threshold and mask detectors.
tinevez Nov 22, 2023
4c5eb62
Optionally check for the presence of a parameter in a settings map.
tinevez Nov 23, 2023
3e8e882
Tweak the slider panels.
tinevez Nov 23, 2023
0ca14df
fix the PanelSmoothContour.
tinevez Nov 23, 2023
f7e5ee4
Implement smoothing of images before segmentation.
tinevez Nov 23, 2023
9fc05e9
Implement the smoothing scale in the threshold, mask and label detect…
tinevez Nov 23, 2023
4d3af54
setFont() for the slider panels.
tinevez Nov 28, 2023
21ce5db
Fix incorrect documentation.
tinevez Nov 29, 2023
b0d6725
Fix compile error due to casting error.
tinevez Dec 4, 2023
bb1a244
Move the shader files to the resources folder.
tinevez Dec 4, 2023
2f20b80
Handle whether we have or have not channels with the Process2DZ.
tinevez Feb 5, 2024
b9ccb2c
Fix handling of ROIs in Process2DZ with multiple channels.
tinevez Feb 5, 2024
4d23401
WIP show meshes in bvv. requires 'mesh' branch of bvv
tpietzsch Apr 18, 2023
abb645f
Add a button to launch LabKit in the configure views panel of the wiz…
tinevez Sep 1, 2023
f4efef8
Try to fix LegacyService error.
tinevez Sep 19, 2023
b2bee96
Fix reimporting labels with large IDs in 2D.
tinevez Sep 22, 2023
3a80cef
Don't go out of bounds when measuring spot quality in 2D.
tinevez Oct 5, 2023
da483ba
Fix the legacy error issue?
tinevez Oct 8, 2023
9b86355
The quality image in from2DThresholdWithROI is of RealType.
tinevez Dec 4, 2023
c0a9fad
All labeling methods now use the double[] origin to reposition spots.
tinevez Dec 4, 2023
7b4d0db
Update license blurbs.
tinevez Feb 8, 2024
ec6246c
Temporarily disable enforcer checks.
tinevez Feb 8, 2024
195d762
The Process2DZ detector is cancelable.
tinevez Mar 28, 2024
1cacb59
POM: fix the dependencies
ctrueden Mar 28, 2024
b9ba926
Fix Javadoc errors
ctrueden Mar 28, 2024
91d254d
A utility widget to specify a threshold on a probability value.
tinevez May 1, 2024
dd073a3
Clamp slider widget values.
tinevez May 21, 2024
e977d06
Add required methods in SpotRoiUtils.
tinevez Jul 22, 2024
061da4d
Don't crash if the saved tracker is unknown to us.
tinevez Jul 22, 2024
f8a41cd
Add a methods to return the map of label to spots in a labeling image.
tinevez Jul 23, 2024
cde3735
Add the smoothing scale param to the 2D labeling methods as well.
tinevez Jul 23, 2024
331da00
Remove unused methods.
tinevez Jul 23, 2024
bce24f4
Update devel TrackMate major version number to 9.
tinevez Apr 8, 2025
dae89ef
Protect is someone asks the nD (n>2) bounds of a 2D spots.
tinevez Oct 27, 2025
587fe8e
Put back the createROIInterval method that went with the big rebase.
tinevez Oct 27, 2025
0a645c2
Fix the spot boundingBox method in the Labkit editor.
tinevez Oct 27, 2025
e8f2857
Fix the spot iteration for Labkit model.
tinevez Oct 27, 2025
a222848
Fix the MaskUtils.fromThresholdWithROI calls with TrackMate v9
tinevez Oct 27, 2025
56742af
Fix javadoc warnings and errors.
tinevez Oct 27, 2025
ab48d71
Fix the mask, threshold and label image detector config panel layout.
tinevez Oct 27, 2025
ec38635
Put back missing clearEnvMap() method.
tinevez Jun 29, 2026
90c8597
Remove unused dependencies
tinevez Jun 29, 2026
f62a522
Update parent to pom-scijava v45.0.0
tinevez Jun 29, 2026
10ff313
Allow de/serializing enum parameters.
tinevez Jul 1, 2026
3722de3
Add config-ui as a dependency.
tinevez Jul 2, 2026
5e4e2ab
An intermediate class For TrackMate modules using Configurator.
tinevez Jul 2, 2026
1c4edb7
A generic detector config panel using config-ui Configurator.
tinevez Jul 2, 2026
1872632
Generic config panel with configurator for detectors and trackers.
tinevez Jul 4, 2026
e3e0f85
Base interface for detector and tracker factories using the Configurator
tinevez Jul 4, 2026
1c8b83b
Interfaces for detector and tracker factories that use a Configurator.
tinevez Jul 5, 2026
dfd1393
The LoG, DoG and Hessian detector now use the new Configurator.
tinevez Jul 5, 2026
26dc982
Remove the CLI Configorator classes of TrackMate v8.
tinevez Jul 5, 2026
a5fdda0
Don't crash the generic config panel if there are no icon.
tinevez Jul 5, 2026
297d931
Use reorder in the Hessian detector Configurator.
tinevez Jul 5, 2026
cdd0279
Don't limit the size of the info display in generic config panel.
tinevez Jul 5, 2026
bd2abb6
Fix th configs for the LoG, DoG and Hessian detector.
tinevez Jul 5, 2026
0a035c7
Fix smoothing scale being ignored for 2D images.
tinevez Jul 7, 2026
ed46c9f
Move the units() method to the Dimension class.
tinevez Jul 19, 2026
a6b3e82
Try a visitor pattern with the Spot classes.
tinevez Jul 19, 2026
63f2216
Add Geff-Java as a dep.
tinevez Jul 19, 2026
b9a5dcf
WIP: A code to play with a GEFF writer for TrackMate file.
tinevez Jul 19, 2026
5f6b6d7
Don't add a MouseAndKeyHandler twice.
tinevez Jul 26, 2026
f9505b0
Interface for commands with undo / redo
tinevez Jul 26, 2026
14d1839
Code style changes.
tinevez Jul 26, 2026
8db8fa8
Use TMImageLabelingModel when we can.
tinevez Jul 26, 2026
e968b0c
Undo / redo for the edits made with the brush.
tinevez Jul 26, 2026
ec6b63f
Use the TMImageLabelingModel type in flood fill controller
tinevez Jul 26, 2026
d18d119
D'oh! Method signature should be for Interval not FinalInterval.
tinevez Jul 26, 2026
11d9ab2
A modification of imglib2 FloodFill to return the the bounding-box of…
tinevez Jul 26, 2026
f7ba04d
Undo / redo for the flood fill operations.
tinevez Jul 26, 2026
77b01c1
Fix editor bugs with ROI editing and editing outside the image.
tinevez Jul 26, 2026
723b2f5
Ensure undo process consistency.
tinevez Jul 27, 2026
2cbe923
Message the user about undo / redo.
tinevez Jul 27, 2026
bdf07f6
D'oh!
tinevez Jul 27, 2026
b0be5c6
Fix performance issue when removing with the brush.
tinevez Jul 27, 2026
a1dbc03
WIP: Testing undo / redo for the main Model.
tinevez Jul 28, 2026
d09349a
Don't record undo when loading a model.
tinevez Jul 28, 2026
64c1eb1
Plug undo / redo into the ImageJ view.
tinevez Jul 28, 2026
1ad5272
Allow modifying the polygon of a SpotRoi.
tinevez Jul 28, 2026
60044a4
Undo / redo can restore spot position and radius.
tinevez Jul 28, 2026
faa068a
Undo / redo also restores feature of edges that were modified
tinevez Jul 28, 2026
a1138c2
Implement undo / redo in the TrackScheme JFrame.
tinevez Jul 28, 2026
fe62430
Undo / redo spot name changes.
tinevez Jul 29, 2026
57fc946
Simplify flagging a spot for update.
tinevez Jul 30, 2026
84d4231
Add undo / redo on all views and wizard window.
tinevez Jul 30, 2026
bc373f5
Undo / redo only follow model modification events.
tinevez Jul 30, 2026
7cca8bf
Release constraint on getSpotAt() method of SpotCollection.
tinevez Jul 30, 2026
db038ad
The scale() method of Spot also updates the RADIUS feature.
tinevez Jul 30, 2026
1290d9f
Try to build a 'thing' that adapt ui-behaviour to AWT canvas.
tinevez Jul 30, 2026
38d54c1
WIP: Toy with the UI behaviour framework in the HyperstackDisplayer.
tinevez Jul 30, 2026
07e385a
Code style changes.
tinevez Jul 31, 2026
1e0c283
Create a reversed DFS for the track model.
tinevez Jul 31, 2026
e01cecc
Add methods to navigate to a root an to a leaf of a track.
tinevez Jul 31, 2026
eead567
Move the spot edit bahviour classes inside a utility class.
tinevez Jul 31, 2026
4c72244
Move the AbstractSpotEditBehaviour to its own class.
tinevez Jul 31, 2026
89f300f
A drag behaviour, to toggle links between spots.
tinevez Jul 31, 2026
309e5af
Add and register behaviours to add, delete and link spots.
tinevez Jul 31, 2026
024e912
Add actions that for several edit actions.
tinevez Jul 31, 2026
2ab2c90
Actions to change timepoints.
tinevez Jul 31, 2026
4b9498a
Spot selection and semi-auto tracking.
tinevez Jul 31, 2026
7e73ae8
Select spots with the FreehandRoi, no need for a special IJ tool.
tinevez Jul 31, 2026
bb4f368
Remove duplicate class.
tinevez Jul 31, 2026
b27fe30
Make key bindings documented and editable via a Preferences dialog.
tinevez Aug 1, 2026
79b221e
A specific KeymapManager for TrackMate.
tinevez Aug 1, 2026
b729662
Refactor: a class that adapts ui-behaviour to an ImagePlus.
tinevez Aug 1, 2026
ee4053b
Store the TrackMateKeymapManager as a static instance.
tinevez Aug 1, 2026
1efb628
Refactor: use the new ui-behaviour classes in the main view.
tinevez Aug 1, 2026
8bc69b1
Remove the old spot edit tool 🥳
tinevez Aug 1, 2026
def7ae6
Put all key config contexts and scope in one file.
tinevez Aug 1, 2026
67a4041
Extract general actions to a class.
tinevez Aug 1, 2026
08c5cac
Serialize keymaps.
tinevez Aug 1, 2026
5aef0d3
Also remove the old ModelEditActions
tinevez Aug 2, 2026
5ca11c2
Remove the editingSpot from the overlay.
tinevez Aug 2, 2026
02f44df
Remove the solo undo / redo keybinding.
tinevez Aug 2, 2026
2753205
Put the TrackMateKeymapManager singleton instance in TrackMateKeymapM…
tinevez Aug 2, 2026
6662d3c
Add a runOnClose() facility to the AbstractTrackMateModelViews
tinevez Aug 2, 2026
e8bd344
Abstract class for views based on a JFrame.
tinevez Aug 2, 2026
b05eacd
Rewrite the TrackScheme actions with the ui-behaviour framework.
tinevez Aug 2, 2026
1a5d981
Add command descriptions for TrackScheme actions.
tinevez Aug 2, 2026
39bbf47
Move the TrackMateConfigDialog to a common package.
tinevez Aug 2, 2026
8660c4b
Add pref dialog action to TrackScheme.
tinevez Aug 2, 2026
8d0515a
A GUI model class to store all info required by the full app.
tinevez Aug 3, 2026
b13ad32
A WindowManager class.
tinevez Aug 3, 2026
dd551d5
Use the new GuiModel and WindowManager in TrackMate.
tinevez Aug 3, 2026
e6408b2
Remove the unused ViewFactory framework.
tinevez Aug 3, 2026
15abd9f
Remove the unused TrackMateConfigDialog
tinevez Aug 3, 2026
f5e4f91
A class to intercept user closing an ImagePlus.
tinevez Aug 3, 2026
928731e
A new 64x64 TrackMate icon.
tinevez Aug 3, 2026
bce640e
Set the main view apart in the WindowManager.
tinevez Aug 3, 2026
b72466a
Hook up onClose() actions on the main view.
tinevez Aug 3, 2026
9a9c1e5
Ask for confirmation when user closes the main view of the wizard.
tinevez Aug 3, 2026
9bf6d9d
Add the mouse and key proxies to the ImagePlus canvas AND window.
tinevez Aug 4, 2026
bd17af6
GuiModel has fields for the preferences of the spot editor.
tinevez Aug 4, 2026
b60e167
The main preferences dialog can configure the spot editor.
tinevez Aug 4, 2026
3cc7355
Tweak the link spot behavior.
tinevez Aug 4, 2026
959cfe4
A new action to add and or link new spots.
tinevez Aug 4, 2026
d5fbe7c
Change the default shortcut for semi-automatic tracking.
tinevez Aug 4, 2026
f3ea996
Put back the default add spot action, but make it not mapped.
tinevez Aug 4, 2026
f32c666
Add and register selectAll() commands.
tinevez Aug 4, 2026
c1831e0
Semi auto tracking params is now a Configurator class.
tinevez Aug 4, 2026
002c4ff
Properly implements cancel and apply in the SpotEditToolSettingsPage.
tinevez Aug 4, 2026
becd066
Make the SemiAutoTrackingParams automatically de/serializes from/to J…
tinevez Aug 4, 2026
4e517f6
Use the config-ui JSon facility.
tinevez Aug 5, 2026
ffabce4
Let DisplaySettings implements Style< DisplaySettings >
tinevez Aug 5, 2026
cb3b4d5
Refactor the DisplaySettingsPanel
tinevez Aug 5, 2026
2a0603d
DisplaySettingsIO has methods to write / read specified files.
tinevez Aug 5, 2026
aa1d049
A SelectAndEditProfileSettingsPage for DisplaySettings.
tinevez Aug 5, 2026
01e14e4
The DisplaySettingsManager can be set to modify a specific instance.
tinevez Aug 5, 2026
eb2d182
The GuiModel has a DisplaySettingsManager,
tinevez Aug 5, 2026
68b56cf
Add the display settings config page to the preferences.
tinevez Aug 5, 2026
22f03c4
Remove the old tool to configure display settings.
tinevez Aug 6, 2026
815a300
In the wizard, make spots visible when filtering them if they are inv…
tinevez Aug 6, 2026
320b724
Remove the TrackMate style element classes and resources.
tinevez Aug 6, 2026
e7c4186
Depend on config-ui 0.0.1
tinevez Aug 7, 2026
e286f8e
Merge pull request #359 from trackmate-sc/displaysettings-in-settings…
tinevez Aug 8, 2026
2cafe3a
Fix bug in AddAndLinkSpotBehaviour.
tinevez Aug 8, 2026
89e3172
Merge pull request #357 from trackmate-sc/configurable-keys
tinevez Aug 8, 2026
bb9e931
Add Assertj dep to test scope.
tinevez Jul 23, 2026
2967c05
Make TrackModel.setVisibility() public.
tinevez Aug 8, 2026
9f5b933
Make setting track name undoable.
tinevez Aug 8, 2026
4709c16
Put calls to set track names between beingUpdate() / endUpdate()
tinevez Aug 8, 2026
fe1e34b
JUnit test for track name undo / redo.
tinevez Aug 8, 2026
cedbcca
Edge case when listening to spot added and removed.
tinevez Aug 8, 2026
5383f9b
Fixes the old GraphTest utility.
tinevez Aug 8, 2026
a446681
A utility to test for TrackMate objects equality.
tinevez Aug 8, 2026
6546103
Undo / redo tests.
tinevez Aug 8, 2026
fe2fe86
Optimize storage of undo states.
tinevez Aug 8, 2026
f91432b
More JUnit tests for undo / redo.
tinevez Aug 8, 2026
d2f7441
Fix regression in undo / redo
tinevez Aug 8, 2026
a72928f
Merge pull request #356 from trackmate-sc/model-undo-redo-2
tinevez Aug 8, 2026
b4261d2
Merge pull request #355 from trackmate-sc/editor-undo-redo
tinevez Aug 8, 2026
ca70b68
Depend on config-ui v0.0.6
tinevez Aug 8, 2026
7a54586
Merge branch 'v9' of github.com:trackmate-sc/TrackMate into v9
tinevez Aug 8, 2026
a894d1c
Fix CI headless test failure
tinevez Aug 8, 2026
4ea440b
Fix CI headless test failure
tinevez Aug 8, 2026
94a2034
Default to control when we cannot get the toolkit getMenuShortcutKeyM…
tinevez Aug 8, 2026
c7f5188
Fix CI: skip GUI test in headless mode
tinevez Aug 8, 2026
a73b0dc
Fix CI: skip GUI test in headless environment
tinevez Aug 8, 2026
280947d
Simplify and fix the SpotMesh.scale() method.
tinevez Aug 9, 2026
4f24915
Undo / redo for SpotMesh modifications.
tinevez Aug 9, 2026
407024f
JUnit test for the method that tests for mesh equality.
tinevez Aug 9, 2026
4527982
Undo / redo test for SpotMesh
tinevez Aug 9, 2026
cd84e3c
Actually don't test for direct mesh modification.
tinevez Aug 9, 2026
70efb68
Depend on imglib2-mesh 1.2.0
tinevez Aug 10, 2026
c99c6b5
Depend on imglib2 and bdv versions defined upstream.
tinevez Aug 10, 2026
7eec17e
SpotMesh returns a read-ony view of the mesh it wraps.
tinevez Aug 10, 2026
c68100a
Use methods of imglib2-mesh v1.2.0 in the undo/redo stack.
tinevez Aug 10, 2026
f70a0a0
Simplify the mesh smoother tool.
tinevez Aug 10, 2026
1bc6372
An abstract class for TrackMate views that are based on BVV.
tinevez Aug 10, 2026
68603da
Use the abstract BVV view class with the TrackMate BVV
tinevez Aug 10, 2026
2f2fc60
The BVV view uses BigVolumeViewer rather than the BVVHandle
tinevez Aug 10, 2026
2b6ca37
Don't use a static instance in TrackMateKeymapManager.
tinevez Aug 10, 2026
d9d4313
Integrate BVV context in the keymap config page.
tinevez Aug 10, 2026
d01d64f
Disable BVV button while a BVV is being launched.
tinevez Aug 10, 2026
268e613
Add BDV and BVV scope to key config discovery.
tinevez Aug 11, 2026
b53b333
Add separate BVVKeymapManager for 3D view key bindings
tinevez Aug 11, 2026
331c959
Add BVV keymap page to preferences dialog
tinevez Aug 11, 2026
bdd72b8
Wire the BVV view to use its own keymap manager
tinevez Aug 11, 2026
c001f41
Share KeyPressedManager across windows
tinevez Aug 11, 2026
bc5d960
A demo to reproduce the nighmare with the bvv keybindings.
tinevez Aug 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ jobs:
- name: Execute the build
run: .github/build.sh
env:
MAVEN_OPTS: -Djava.awt.headless=true
GPG_KEY_NAME: ${{ secrets.GPG_KEY_NAME }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
MAVEN_USER: ${{ secrets.MAVEN_USER }}
Expand Down
88 changes: 66 additions & 22 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.scijava</groupId>
<artifactId>pom-scijava</artifactId>
<version>43.0.0</version>
<version>45.0.0</version>
<relativePath />
</parent>

<groupId>sc.fiji</groupId>
<artifactId>TrackMate</artifactId>
<version>8.1.7-SNAPSHOT</version>
<version>9.0.0-SNAPSHOT</version>

<name>TrackMate</name>
<description>TrackMate plugin for Fiji.</description>
Expand Down Expand Up @@ -164,6 +166,7 @@
</ciManagement>

<properties>
<enforcer.skip>true</enforcer.skip>
<package-name>fiji.plugin.trackmate</package-name>
<license.licenseName>gpl_v3</license.licenseName>
<license.copyrightOwners>TrackMate developers.</license.copyrightOwners>
Expand All @@ -176,28 +179,42 @@
(https://github.com/scijava/scijava-coding-style) -->
<scijava.coding-style>imglib2</scijava.coding-style>

<fontchooser.version>2.5.2</fontchooser.version>
<javaGeom.version>0.11.1</javaGeom.version>
<imglib2.version>8.0.0</imglib2.version>
<bigdataviewer-core.version>10.6.7</bigdataviewer-core.version>
<imglib2-mesh.version>1.2.0</imglib2-mesh.version>

<!-- TrackMate >=8 requires Java 21 -->
<scijava.jvm.version>21</scijava.jvm.version>
<scijava.jvm.build.version>[21,)</scijava.jvm.build.version>
<scijava.javadoc.url.java>https://docs.oracle.com/en/java/javase/21/docs/api/</scijava.javadoc.url.java>
<!-- If we don't do this, mvn javadoc:javadoc fails because of
<!-- TrackMate >=8 requires Java 21 -->
<scijava.jvm.version>21</scijava.jvm.version>
<scijava.jvm.build.version>[21,)</scijava.jvm.build.version>
<scijava.javadoc.url.java>
https://docs.oracle.com/en/java/javase/21/docs/api/</scijava.javadoc.url.java>
<!-- If we don't do this, mvn javadoc:javadoc fails because of
Anisotropic_Diffusion_2D (bad naming, does not like the '2D' at the end),
which is a depdency of Labkit.' -->
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
which is a depdency of Labkit.' -->
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
</properties>

<dependencies>

<!-- Config UI -->
<dependency>
<groupId>org.scijava</groupId>
<artifactId>config-ui</artifactId>
<version>0.0.6</version>
</dependency>

<!-- Logging dependencies -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</dependency>

<!-- Geff dependency for IO -->
<dependency>
<groupId>org.litt</groupId>
<artifactId>geff</artifactId>
<version>1.1.1-SNAPSHOT</version>
</dependency>

<!-- Fiji dependencies -->
<dependency>
<groupId>sc.fiji</groupId>
Expand Down Expand Up @@ -231,6 +248,32 @@
<groupId>net.imagej</groupId>
<artifactId>imagej-common</artifactId>
</dependency>
<dependency>
<groupId>net.imglib2</groupId>
<artifactId>imglib2-mesh</artifactId>
</dependency>
<dependency>
<groupId>sc.fiji</groupId>
<artifactId>bigvolumeviewer</artifactId>
</dependency>
<dependency>
<groupId>org.jogamp.jogl</groupId>
<artifactId>jogl-all</artifactId>
</dependency>
<dependency>
<groupId>org.jogamp.gluegen</groupId>
<artifactId>gluegen-rt</artifactId>
</dependency>
<dependency>
<groupId>org.jogamp.gluegen</groupId>
<artifactId>gluegen-rt</artifactId>
<classifier>${scijava.natives.classifier.gluegen}</classifier>
</dependency>
<dependency>
<groupId>org.jogamp.jogl</groupId>
<artifactId>jogl-all</artifactId>
<classifier>${scijava.natives.classifier.jogl}</classifier>
</dependency>

<!-- ImgLib2 dependencies -->
<dependency>
Expand Down Expand Up @@ -271,16 +314,16 @@
<groupId>org.scijava</groupId>
<artifactId>scijava-listeners</artifactId>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>ui-behaviour</artifactId>
</dependency>

<!-- Other dependencies -->
<dependency>
<groupId>com.github.vlsi.mxgraph</groupId>
<artifactId>jgraphx</artifactId>
</dependency>
<!--<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency> -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
Expand Down Expand Up @@ -346,18 +389,19 @@
<artifactId>javaGeom</artifactId>
<version>${javaGeom.version}</version>
</dependency>
<dependency>
<groupId>org.drjekyll</groupId>
<artifactId>fontchooser</artifactId>
<version>${fontchooser.version}</version>
</dependency>

<!-- Test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.27.7</version>
<scope>test</scope>
</dependency>
</dependencies>

<repositories>
Expand Down
57 changes: 55 additions & 2 deletions src/main/java/fiji/plugin/trackmate/Dimension.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,64 @@ public enum Dimension
POSITION,
VELOCITY,
LENGTH,
AREA, TIME, ANGLE, RATE, // count per frames
ANGLE_RATE, STRING; // for non-numeric features
AREA,
VOLUME,
TIME,
ANGLE,
RATE, // count per frames
ANGLE_RATE,
STRING; // for non-numeric features

/*
* We separated length and position so that x,y,z are plotted on a different
* graph from spot sizes.
*/

/**
* Returns a String unit for the given dimension. When suitable, the unit is
* taken from the settings field, which contains the spatial and time units.
* Otherwise, default units are used.
*
* @param spaceUnits
* the space units.
* @param timeUnits
* the time units.
* @return the units for the specified dimension.
*/
public String units( final String spaceUnits, final String timeUnits )
{
switch ( this )
{
case ANGLE:
return "radians";
case INTENSITY:
return "counts";
case INTENSITY_SQUARED:
return "counts^2";
case NONE:
return "";
case POSITION:
case LENGTH:
return spaceUnits;
case AREA:
return spaceUnits + "^2";
case VOLUME:
return spaceUnits + "^3";
case QUALITY:
return "quality";
case COST:
return "cost";
case TIME:
return timeUnits;
case VELOCITY:
return spaceUnits + "/" + timeUnits;
case RATE:
return "/" + timeUnits;
case ANGLE_RATE:
return "rad/" + timeUnits;
default:
case STRING:
return null;
}
}
}
46 changes: 24 additions & 22 deletions src/main/java/fiji/plugin/trackmate/LoadTrackMatePlugIn.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import fiji.plugin.trackmate.features.edges.EdgeAnalyzer;
import fiji.plugin.trackmate.features.spot.SpotAnalyzerFactoryBase;
import fiji.plugin.trackmate.features.track.TrackAnalyzer;
import fiji.plugin.trackmate.gui.GuiModel;
import fiji.plugin.trackmate.gui.GuiUtils;
import fiji.plugin.trackmate.gui.components.LogPanel;
import fiji.plugin.trackmate.gui.displaysettings.DisplaySettings;
Expand All @@ -45,9 +46,7 @@
import fiji.plugin.trackmate.io.SettingsPersistence;
import fiji.plugin.trackmate.io.TmXmlReader;
import fiji.plugin.trackmate.util.TMUtils;
import fiji.plugin.trackmate.visualization.TrackMateModelView;
import fiji.plugin.trackmate.visualization.ViewUtils;
import fiji.plugin.trackmate.visualization.hyperstack.HyperStackDisplayer;
import ij.IJ;
import ij.ImageJ;
import ij.ImagePlus;
Expand Down Expand Up @@ -135,7 +134,7 @@ public void run( final String filePath )

ImagePlus imp = reader.readImage();
if ( null == imp )
imp = ViewUtils.makeEmpytImagePlus( model );
imp = ViewUtils.makeEmptyImagePlus( model );

/*
* Read settings.
Expand Down Expand Up @@ -180,20 +179,17 @@ public void run( final String filePath )
analyzer.getFeatureDimensions(),
analyzer.getIsIntFeature() );

// Display settings.
final DisplaySettings displaySettings = reader.getDisplaySettings();

/*
* Create TrackMate.
* Create GuiModel.
*/

final TrackMate trackmate = createTrackMate( model, settings );
final GuiModel guiModel = new GuiModel( model, settings, displaySettings );

// Hook actions
postRead( trackmate );

// Display settings.
final DisplaySettings displaySettings = reader.getDisplaySettings();

// Selection model.
final SelectionModel selectionModel = new SelectionModel( model );
postRead( guiModel );

if ( !reader.isReadingOk() )
{
Expand All @@ -202,8 +198,7 @@ public void run( final String filePath )
}

// Main view.
final TrackMateModelView displayer = new HyperStackDisplayer( model, selectionModel, settings.imp, displaySettings );
displayer.render();
guiModel.getWindowManager().createHyperStackDisplayer();

// GUI state
String panelIdentifier = reader.getGUIState();
Expand All @@ -212,7 +207,7 @@ public void run( final String filePath )
panelIdentifier = ConfigureViewsDescriptor.KEY;

// Wizard.
final WizardSequence sequence = createSequence( trackmate, selectionModel, displaySettings );
final WizardSequence sequence = createSequence( guiModel );
sequence.setCurrent( panelIdentifier );
final JFrame frame = sequence.run( "TrackMate on " + settings.imp.getShortTitle() );
frame.setIconImage( TRACKMATE_ICON.getImage() );
Expand Down Expand Up @@ -268,13 +263,13 @@ public void run( final String filePath )

/**
* Hook for subclassers:<br>
* The {@link TrackMate} object is loaded and properly configured. This
* The {@link guiModel} object is loaded and properly configured. This
* method is called just before the controller and GUI are launched.
*
* @param trackmate
* the {@link TrackMate} instance that was fledged after loading.
* the {@link guiModel} instance that was fledged after loading.
*/
protected void postRead( final TrackMate trackmate )
protected void postRead( final GuiModel guiModel )
{}

/**
Expand All @@ -297,13 +292,20 @@ protected TmXmlReader createReader( final File lFile )

public static void main( final String[] args )
{
GuiUtils.setSystemLookAndFeel();
ImageJ.main( args );
final LoadTrackMatePlugIn plugIn = new LoadTrackMatePlugIn();
try
{
GuiUtils.setSystemLookAndFeel();
ImageJ.main( args );
final LoadTrackMatePlugIn plugIn = new LoadTrackMatePlugIn();
// plugIn.run( null );
// plugIn.run( "samples/FakeTracks.xml" );
plugIn.run( "samples/MAX_Merged.xml" );
plugIn.run( "samples/MAX_Merged.xml" );
// plugIn.run( "c:/Users/tinevez/Development/TrackMateWS/TrackMate-Cellpose/samples/R2_multiC.xml" );
// plugIn.run( "/Users/tinevez/Desktop/230901_DeltaRcsB-ZipA-mCh_timestep5min_Stage9_reg/230901_DeltaRcsB-ZipA-mCh_timestep5min_Stage9_reg_merge65.xml" );
}
catch ( final Throwable t )
{
t.printStackTrace();
}
}
}
Loading
Loading