Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft PR that targets the work done towards TrackMate v8. #263

Draft
wants to merge 264 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
264 commits
Select commit Hold shift + click to select a range
e263f83
The Labkit editor can be launched on all time-points at once.
tinevez Sep 17, 2023
3757a83
Add tooltip for the editor button.
tinevez Sep 17, 2023
f9c0b73
In Labkit editor, labels receive name and color from spots.
tinevez Sep 17, 2023
ee3b86a
Better editor frame title.
tinevez Sep 17, 2023
8aaf763
Properly handle 2D and 3D with or without time in the editor.
tinevez Sep 19, 2023
544b3df
Always start the editor in FUSED mode,
tinevez Sep 19, 2023
48594c2
Don't crash when editing on images with 1 channel.
tinevez Sep 22, 2023
a788cf1
If we crash when launching the editor, unfreeze TrackMate.
tinevez Sep 22, 2023
b503a63
Store labels on ints, not on shorts.
tinevez Sep 22, 2023
4d3a326
Fix reimporting labels with large IDs in 2D.
tinevez Jul 7, 2024
39e16fc
Fix javadoc errors.
tinevez Oct 8, 2023
2d9edce
Make the spot editor work with 1-timepoint images.
tinevez Feb 8, 2024
e4eb1bc
Fix import of spots in LabKit for 2D single time-point images.
tinevez Mar 11, 2024
8c9961b
Protect against weird error caused by empty labels.
tinevez Mar 11, 2024
e65687c
setFont() utility.
tinevez Nov 28, 2023
1d95bea
The detection preview is cancelable.
tinevez Mar 28, 2024
0bd86ec
Fix preview panel size in free-size layouts.
tinevez May 21, 2024
d6fdfb5
Detection preview panel tweak.
tinevez Jul 9, 2024
3b93eed
Merge remote-tracking branch 'origin/master' into labkit-main
tinevez Jul 10, 2024
de5de59
Fixed a difficult bug with the LabKit editor reimporter.
tinevez Jul 10, 2024
2c56943
Another fix for the LabKit reimporter bug.
tinevez Jul 10, 2024
fc19713
Label image to spots: also returns the label corresponding to created…
tinevez Jul 10, 2024
f886b65
Do not execute the LabKit reimporter in the AWT thread.
tinevez Jul 10, 2024
d1ca968
Simplify the LabKit importer.
tinevez Jul 11, 2024
aa9dc52
In LabKit editor, offer to simplify the contour of modified spots.
tinevez Jul 11, 2024
73c85db
Let the user edit a ROI in the image with the LabKit editor.
tinevez Jul 12, 2024
186520e
Fix panning not working when the TrackMate tool is selected.
tinevez Jul 17, 2024
28666c3
In LabKit editor, import spots at the border of the image.
tinevez Jul 18, 2024
faa87b9
Fix bug in LabKit editor: avoid spot ID and label conflicts.
tinevez Jul 18, 2024
8ccd3ee
Custom LabKit frame and segmentation component.
tinevez Jul 19, 2024
2f9583e
Fix another bug with the LabKit importer.
tinevez Jul 19, 2024
72d60f3
Update parent pom version and SNAPSHOT version.
tinevez Apr 13, 2023
64bc4b4
Add ImageJ-Mesh and ImageJ-Mesh-IO as dependencies.
tinevez Apr 13, 2023
d88b61e
WIP: make objects that TrackMate can handle out of 3D masks.
tinevez Apr 13, 2023
d768bd1
WIP: Iterative intersection with a plane.
tinevez Apr 14, 2023
c82ef9e
Unother attempt, using an edge and a face map.
tinevez Apr 14, 2023
d290e93
We actually don't need the vertex list. The edge list is sufficient.
tinevez Apr 14, 2023
b86e7dc
Temporary couple to SNAPSHOT version of the mesh library.
tinevez Apr 16, 2023
0141aa7
Rework the demo of mesh intersection.
tinevez Apr 16, 2023
8eccba4
A simple data structure to store a 3D mesh in a Spot object.
tinevez Apr 17, 2023
72ed47f
Spot objects may have a SpotMesh.
tinevez Apr 17, 2023
6b99872
Utility method for SpotRoi: generate XY coordinates
tinevez Apr 17, 2023
1f215f2
MaskUtils have method to create spots with meshes for 3D masks and la…
tinevez Apr 17, 2023
2d46afb
Mask, label and threshold detectors support creating 3D meshes for th…
tinevez Apr 17, 2023
7bab2dc
Paint 3D meshes in the HyperStackViewer.
tinevez Apr 17, 2023
f0118a2
Outdated interactive tests.
tinevez Apr 17, 2023
0302c28
Fix javadoc.
tinevez Apr 17, 2023
7aebecd
Temporary store meshes in absolute physical coordinates.
tinevez Apr 17, 2023
01f6eaa
Moller-Trumbore algorithm for the intersection of a ray with a triangle.
tinevez Apr 18, 2023
9007614
Non working version of a pixel iterator.
tinevez Apr 18, 2023
94d9f4a
Utility to export meshes to STL for debugging.
tinevez Apr 18, 2023
c7a420d
Make some debugging utilities package visible.
tinevez Apr 18, 2023
68590ff
Utility to sort Trove arrays.
tinevez Apr 19, 2023
c72231f
Demo simple mesh.
tinevez Apr 19, 2023
e848698
Fix back to master branch in the imagej-mesh.
tinevez Apr 19, 2023
e44c9fa
Update the demo with Toby + JY ideas.
tinevez Apr 19, 2023
da9e346
Yeaaahh! Working version of a pixel iterator.
tinevez Apr 19, 2023
b2b4ade
Move mesh utility classes to a dedicated package.
tinevez Apr 20, 2023
3e0b212
An imglib2 cursor that iterates over the pixels inside a mesh.
tinevez Apr 20, 2023
81b5b6a
Update the interactive demo.
tinevez Apr 20, 2023
2717711
Expose mesh volume and radius routines.
tinevez Apr 20, 2023
1406b8d
Implement quality measurement on the 3D object.
tinevez Apr 20, 2023
8cafcc5
Common SpotShape interface for the 2D and 3D different shape objects.
tinevez Apr 20, 2023
e6ac80e
Iterable for a spot mesh.
tinevez Apr 20, 2023
3de035b
Add methods to SpotUtil to return suitable iterables in 2D and 3D.
tinevez Apr 20, 2023
90de0ff
Generalize contrast and SNR feature analyzer to 3D with mesh.
tinevez Apr 20, 2023
1dc136b
Add a TODO for ellipse fit feature.
tinevez Apr 20, 2023
67c8352
Temporary couple to imagej-mesh-io 0.1.3-SNAPSHOT.
tinevez Apr 21, 2023
e5c9232
Serialization and deserialization of spot meshes to file.
tinevez Apr 21, 2023
d157924
Read all spot meshes in one pass.
tinevez Apr 21, 2023
15ebfde
Recompute face normals after loading mesh.
tinevez Apr 21, 2023
4fb0e59
More utility methods to sort Trove arrays.
tinevez Apr 22, 2023
0ecf26d
WIP: Rework the Z-slicing of meshes.
tinevez Apr 22, 2023
17584f7
Tweak interactive tests.
tinevez Apr 22, 2023
28b1da2
Trying to work with the in-development mesh Z-slicer
tinevez Apr 27, 2023
3f2d8d4
When possible use the mearching cube on grayscale to generate meshes.
tinevez Apr 27, 2023
9334c9c
Utility mother class to paint things.
tinevez Apr 27, 2023
ddab834
Rework painting meshes a bit.
tinevez Apr 27, 2023
4d7f326
Update interactive tests.
tinevez Apr 27, 2023
5815d27
Fix skipping painting of meshes if out of window.
tinevez Apr 27, 2023
23ded95
Do not include meshes smaller than 10 pixels.
tinevez Apr 28, 2023
61b665d
Tweak painting of meshes.
tinevez Apr 28, 2023
591b0e1
Update interactive tests.
tinevez Apr 28, 2023
6a95a39
Update mesh painter to the new ZSlicer.
tinevez Apr 29, 2023
6969ba4
Update interactive tests.
tinevez Apr 29, 2023
1c57081
Rework spot mesh iteration.
tinevez May 2, 2023
6ea2074
Remove unused classes.
tinevez May 2, 2023
3670974
Update mesh demos.
tinevez May 2, 2023
1b1a323
Meshes are stored centered at (0,0,0)
tinevez May 2, 2023
f6f8552
Create a proper mask from the input before using the mask detector.
tinevez May 2, 2023
a7ca064
Unify and use the TrackMatePainter hierarchy.
tinevez May 2, 2023
bee190f
Mesh slices can be painted filled.
tinevez May 3, 2023
7acabe5
Code style changes.
tinevez May 3, 2023
b44d73b
Precompute and store a cache of Z-slices for meshes.
tinevez May 4, 2023
55ada3b
Rework a bit the painting of spots.
tinevez May 4, 2023
34f314e
Can manually scale meshes in size.
tinevez May 4, 2023
b559b28
Use ImgLib2 Cast util to wrap an ImagePlus in an ImgPlus.
tinevez May 4, 2023
0c39749
Fix mistake with mesh cursor.
tinevez May 4, 2023
5352cf0
Paint not-filled mesh with polygons, not shapes.
tinevez May 4, 2023
5766a3b
Forgot to commit SpotMesh changes, storing its center.
tinevez May 4, 2023
abf748f
Support making single spots with possibly hollow meshes.
tinevez May 4, 2023
617150a
Demo of the hollow mesh support in TrackMate.
tinevez May 4, 2023
f017db6
Update demo.
tinevez May 4, 2023
9d90aae
Refactor a bit the MaskUtil class, which is becoming too long.
tinevez May 5, 2023
c468c42
Recompute the Z-slices when changing the radius.
tinevez May 5, 2023
b3cf8b5
Rename 2D morphology analyzers.
tinevez May 5, 2023
dc9a6d9
Add flag for detectors that can return 3D shape,
tinevez May 5, 2023
036ddc6
Add ops as a dependency.
tinevez May 5, 2023
fa44f79
Add VOLUME as a dimension.
tinevez May 5, 2023
0c39513
Add basic 3D shape analyzers.
tinevez May 5, 2023
03d63e1
Remove unused class.
tinevez May 6, 2023
b05ed56
WIP: Ellipsoid fitter.
tinevez May 6, 2023
20c2cbf
toString method for the ellipsoid fit.
tinevez May 7, 2023
e1c3e31
JUnit test for the ellipsoid fitter.
tinevez May 7, 2023
6b54c96
Javadoc for the EllipsoidFitter
tinevez May 7, 2023
59ad971
Shape measurement via ellipsoid fit for 3D mesh.
tinevez May 7, 2023
c26debe
Spot is now an interface, with 3 derived class.
tinevez May 8, 2023
0edbc1e
Fix some javadoc errors.
tinevez May 8, 2023
d048129
Implement RealInterval methods in SpotRoi and SpotMesh.
tinevez May 8, 2023
c217b23
Remove unused interfaces.
tinevez May 8, 2023
fba3747
Fix spot meshes not abiding to ROI origin.
tinevez May 11, 2023
075bbd7
Abide to Z ROI settings in the preview.
tinevez May 11, 2023
5447f63
Rework the SpotRoi class.
tinevez May 12, 2023
77c3603
After tracking, set spot color by track index, if spot coloring is de…
tinevez May 12, 2023
4e2769b
Rework the SpotMesh class.
tinevez May 12, 2023
1155b5e
WIP: An action to export all the meshes in a model to a PLY file series.
tinevez May 12, 2023
d3cdbc6
Fix loading of SpotMeshes.
tinevez May 13, 2023
0aaf302
Properly read 3d morphology analyzers declarations.
tinevez May 13, 2023
b07d1c6
Put back default coloring after clearing tracks in the UI if needed.
tinevez May 13, 2023
1966635
Fix meshh series exporter.
tinevez May 13, 2023
cd07ac3
Make a utility method public.
tinevez May 13, 2023
8d7bb4c
Rework the 2D and 3D detection utils.
tinevez May 13, 2023
c78002e
Don't crash the MeshSeriesExporter if the image name is weird.
tinevez May 15, 2023
ed99c4b
Add ui-behaviour as a dependency.
tinevez May 9, 2023
04a1b56
Two new icons.
tinevez May 9, 2023
260f871
FeatureTable, taken from mastodon, to display a list of togglable items.
tinevez May 9, 2023
47bfbf1
A UI tool to build a selection of feature analyzers and save it to disk.
tinevez May 9, 2023
af4d012
Use proper methods in the analyzer selection class.
tinevez May 10, 2023
0f4bf9b
Use the user feature analyzers selection when using the plugin.
tinevez May 10, 2023
00ebafa
Make the feature analyzer selector a IJ2 command.
tinevez May 10, 2023
14d7ca6
Also abides to user spot analyser selection after detection step.
tinevez May 10, 2023
bde9aef
Minor tweak of javadoc and error reporting.
tinevez May 18, 2023
f8fca46
Convenience class to run 2D+Z segmentation algos in 3D.
tinevez May 18, 2023
1c2bc75
Fix bug in analyzer selection.
tinevez Sep 11, 2023
abc68b5
The GUI honors the user selection when computing spot features.
tinevez Sep 11, 2023
8be3b4e
Use again the custom 2D iteration routine for SpotRoi.
tinevez Sep 11, 2023
9bfeed9
Tweak javadoc.
tinevez Sep 11, 2023
4986865
Only propose visible analyzers in the selection to the user.
tinevez Sep 11, 2023
d1994b8
Make sure the user selection of analyzers are added in priority order.
tinevez Sep 11, 2023
a3b4587
Implement quality measurement on the 3D object.
tinevez Apr 20, 2023
edd086c
Spot is now an interface, with 3 derived class.
tinevez May 8, 2023
592ac97
simplify TMUtils.rawWraps
tinevez Sep 11, 2023
e684cc4
WIP show meshes in bvv. requires 'mesh' branch of bvv
tpietzsch Apr 18, 2023
4667f14
Add jogl deps.
tinevez May 21, 2023
fe5692d
Minor tweak of Tobias example.
tinevez May 21, 2023
800bf01
WIP: A new viewer for TrackMate based on the BVV.
tinevez May 22, 2023
4f8a301
Copy of Tobias 'StupidMesh'.
tinevez May 23, 2023
30008d4
The BVV view abides to the spot color settings.
tinevez May 23, 2023
c3c5213
Icosahedron spheres.
tinevez May 23, 2023
6a36f12
Show spots without meshes as icosahedron spheres.
tinevez May 23, 2023
a5a5dd5
Don't crash when loading faulty meshes.
tinevez May 24, 2023
5311e4a
Fix OverlapTracker not working if the first frame was devoid of visib…
tinevez May 24, 2023
ed2b1af
Put a test drive in a try/catch block so that we can get exceptions.
tinevez Jun 2, 2023
584494c
Minor tweak of the demo.
tinevez May 30, 2023
03f2635
Reflect model edits in the TrackMate-BVV.
tinevez Jun 2, 2023
cef0048
TrackMate BVV can focus view on selected spot.
tinevez Jun 2, 2023
39be943
Basic support of selection highlighting in the BVV.
tinevez Jun 2, 2023
bba11ef
Add a button to launch a 3D view on the GUI.
tinevez Jun 3, 2023
ccf59da
Tweak error messages.
tinevez Jun 6, 2023
6f71df7
WIP: rework the 2d + z processor.
tinevez Jun 6, 2023
3c21ae7
Fix a very serious and a very stupid mistake with the move() methods …
tinevez Jun 7, 2023
1e7b473
Make the meshToSpot method public.
tinevez Jun 7, 2023
098be7a
WIP: on Process2DZ, assign quality, work well with ROIs.
tinevez Jun 7, 2023
6b20fe8
Disable GUI when launching BVV.
tinevez Jun 8, 2023
2a695e7
Simplify StupidMesh.
tinevez Jun 9, 2023
a0ecff5
Exposes the BvvHandler of a TrackMate BVV view.
tinevez Jun 9, 2023
3bf50b1
Set frame title of TrackMate BVV views.
tinevez Jun 9, 2023
0bbb6e6
Position the BVV window more or less next to the GUI.
tinevez Jun 9, 2023
70b968a
Better return signature for mesh to spot mesh method.
tinevez Jun 9, 2023
27eee1d
Make sure we have a SpotMesh built with all normals computed.
tinevez Jun 9, 2023
708c9d9
Tweak the Process2DZ detector.
tinevez Jun 9, 2023
4706120
Update to non-SNAPSHOT version of bigvolumeviewer.
tinevez Jul 3, 2023
00b889d
WIP: Trying to implement transparency of meshes.
tinevez Jul 3, 2023
829de7e
Fix cast error
tinevez Sep 11, 2023
19042fa
Spot is now an interface, with 3 derived class.
tinevez May 8, 2023
31468ec
Rework the 2D and 3D detection utils.
tinevez May 13, 2023
a2c4252
WIP show meshes in bvv. requires 'mesh' branch of bvv
tpietzsch Apr 18, 2023
3a985a9
Depend on imglib2-mesh preview, not on net-imagej-mesh.
tinevez Sep 1, 2023
d5a96e4
Use the scale method of the spot interface.
tinevez Sep 12, 2023
10182e2
Don't hide exceptions when launching the BVV.
tinevez Sep 12, 2023
c881229
Try to do without deprecated method.
tinevez Sep 12, 2023
cb1027b
Remove debug main method.
tinevez Sep 12, 2023
fdf16db
Use the new imglib2-mesh master branch in the imglib2 org.
tinevez Sep 19, 2023
80b27ba
Abide to recent changes in imglib2-mesh.
tinevez Oct 8, 2023
2b5b26b
Fix all javadoc warnings.
tinevez Oct 8, 2023
8e7c24b
Fix mistake in calling the translateScale mesh method.
tinevez Oct 8, 2023
bafff8b
Make the mesh of a SpotMesh setable.
tinevez Nov 17, 2023
7e25850
Return the actual BufferMesh class when we expose the mesh of a SpotM…
tinevez Nov 17, 2023
9c2c176
Display the default element in the enum combobox of StyleElements.
tinevez Nov 17, 2023
83925c2
An action to smooth meshes with Tuabin smoothing.
tinevez Nov 17, 2023
346f5d1
Multithread the mesh smoother.
tinevez Nov 19, 2023
536089f
Improve smoothing action.
tinevez Nov 20, 2023
9a7e46a
Mesh smoother can run on all visible spots or only on selection.
tinevez Nov 20, 2023
03411c9
Tweak the mesh smoother panel.
tinevez Nov 20, 2023
06eeb95
Tell the user when we update meshes and features after smoothing meshes.
tinevez Nov 20, 2023
71dae84
Add a toString method to MeshSmootherModel.
tinevez Nov 20, 2023
c515e9c
Add a 'basic' setting panel to the mesh smoother.
tinevez Nov 20, 2023
7cf06fe
The mesh smoother uses the numThreads from the trackmate instance.
tinevez Nov 22, 2023
bb97d01
WIP: Smooth mask or label before generating mesh to smooth it.
tinevez Nov 22, 2023
6a8ecf5
WIP: Implement smoothing in threshold and mask detectors.
tinevez Nov 22, 2023
c6d9b63
Optionally check for the presence of a parameter in a settings map.
tinevez Nov 23, 2023
3366157
Tweak the slider panels.
tinevez Nov 23, 2023
596c57e
fix the PanelSmoothContour.
tinevez Nov 23, 2023
1b27485
Implement smoothing of images before segmentation.
tinevez Nov 23, 2023
65789e2
Implement the smoothing scale in the threshold, mask and label detect…
tinevez Nov 23, 2023
f79151e
setFont() for the slider panels.
tinevez Nov 28, 2023
81d4650
Fix incorrect documentation.
tinevez Nov 29, 2023
c78f094
Fix compile error due to casting error.
tinevez Dec 4, 2023
949ad61
Move the shader files to the resources folder.
tinevez Dec 4, 2023
ca5790b
Handle whether we have or have not channels with the Process2DZ.
tinevez Feb 5, 2024
ef67b22
Fix handling of ROIs in Process2DZ with multiple channels.
tinevez Feb 5, 2024
e021eab
WIP show meshes in bvv. requires 'mesh' branch of bvv
tpietzsch Apr 18, 2023
a2f899d
Add a button to launch LabKit in the configure views panel of the wiz…
tinevez Sep 1, 2023
1d2f2f9
Rework and improve the import method of the spot editor.
tinevez Sep 2, 2023
8f1731a
Try to fix LegacyService error.
tinevez Sep 19, 2023
6acda1e
Fix reimporting labels with large IDs in 2D.
tinevez Sep 22, 2023
408c55a
Don't go out of bounds when measuring spot quality in 2D.
tinevez Oct 5, 2023
4af96fe
Fix the legacy error issue?
tinevez Oct 8, 2023
550acd2
The quality image in from2DThresholdWithROI is of RealType.
tinevez Dec 4, 2023
eaacf0d
All labeling methods now use the double[] origin to reposition spots.
tinevez Dec 4, 2023
ec838c8
Update license blurbs.
tinevez Feb 8, 2024
fad1317
Temporarily disable enforcer checks.
tinevez Feb 8, 2024
1e7f026
The Process2DZ detector is cancelable.
tinevez Mar 28, 2024
6096c52
Keep imagej-legacy out of the dependency tree
ctrueden Mar 28, 2024
3a84a1b
POM: fix the dependencies
ctrueden Mar 28, 2024
4365b76
Fix Javadoc errors
ctrueden Mar 28, 2024
7a6a291
A utility widget to specify a threshold on a probability value.
tinevez May 1, 2024
4f55ac0
Fix minor Eclipse warnings.
tinevez May 1, 2024
8c178da
Fix export label method call with the 2D + Z detector.
tinevez May 7, 2024
093f273
Clamp slider widget values.
tinevez May 21, 2024
3431b7d
Remove duplicate setFont methods.
tinevez Jul 22, 2024
b4ebc58
Add required methods in SpotRoiUtils.
tinevez Jul 22, 2024
b2207c1
Remove unnecessary suppressWarning.
tinevez Jul 22, 2024
19e981a
Don't crash if the saved tracker is unknown to us.
tinevez Jul 22, 2024
ddd2520
Fixed one more bug with the labkit importer.
tinevez Jul 22, 2024
c2823c6
Add a methods to return the map of label to spots in a labeling image.
tinevez Jul 23, 2024
9535eae
Support editing in 3D in the LabKit editor.
tinevez Jul 23, 2024
cb3fc83
Minor typo.
tinevez Jul 23, 2024
12dcb90
Add the smoothing scale param to the 2D labeling methods as well.
tinevez Jul 23, 2024
c075ffc
Remove unused methods.
tinevez Jul 23, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 56 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

<groupId>sc.fiji</groupId>
<artifactId>TrackMate</artifactId>
<version>7.13.3-SNAPSHOT</version>
<version>8.0.0-SNAPSHOT</version>

<name>TrackMate</name>
<description>TrackMate plugin for Fiji.</description>
Expand Down Expand Up @@ -134,6 +134,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 @@ -147,7 +148,8 @@

<fontchooser.version>2.5.2</fontchooser.version>
<javaGeom.version>0.11.1</javaGeom.version>
<imglib2.version>6.1.0</imglib2.version>
<imglib2-mesh.version>1.0.0</imglib2-mesh.version>
<bigvolumeviewer.version>0.3.1</bigvolumeviewer.version>
</properties>

<dependencies>
Expand All @@ -156,6 +158,16 @@
<groupId>sc.fiji</groupId>
<artifactId>fiji-lib</artifactId>
</dependency>
<dependency>
<groupId>sc.fiji</groupId>
<artifactId>labkit-ui</artifactId>
<exclusions>
<exclusion>
<groupId>net.imagej</groupId>
<artifactId>imagej-legacy</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- ImageJ dependencies -->
<dependency>
Expand All @@ -166,6 +178,38 @@
<groupId>net.imagej</groupId>
<artifactId>imagej-common</artifactId>
</dependency>
<dependency>
<groupId>net.imglib2</groupId>
<artifactId>imglib2-mesh</artifactId>
<version>${imglib2-mesh.version}</version>
</dependency>
<dependency>
<groupId>net.imagej</groupId>
<artifactId>imagej-ops</artifactId>
</dependency>
<dependency>
<groupId>sc.fiji</groupId>
<artifactId>bigvolumeviewer</artifactId>
<version>${bigvolumeviewer.version}</version>
</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 @@ -202,16 +246,24 @@
<groupId>org.scijava</groupId>
<artifactId>scijava-listeners</artifactId>
</dependency>
<dependency>
<groupId>org.scijava</groupId>
<artifactId>ui-behaviour</artifactId>
</dependency>

<!-- Other dependencies -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>com.github.vlsi.mxgraph</groupId>
<artifactId>jgraphx</artifactId>
</dependency>
<dependency>
<!--<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
</dependency> -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
Expand Down
9 changes: 7 additions & 2 deletions src/main/java/fiji/plugin/trackmate/Dimension.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,13 @@ 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
Expand Down
12 changes: 7 additions & 5 deletions src/main/java/fiji/plugin/trackmate/LoadTrackMatePlugIn.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import static fiji.plugin.trackmate.gui.Icons.TRACKMATE_ICON;

import java.awt.Color;
import java.awt.Dimension;
import java.io.File;

import javax.swing.JFrame;
Expand Down Expand Up @@ -65,8 +66,6 @@ public class LoadTrackMatePlugIn extends TrackMatePlugIn
@Override
public void run( final String filePath )
{
// GuiUtils.setSystemLookAndFeel();

final Logger logger = Logger.IJ_LOGGER;
File file;
if ( null == filePath || filePath.length() == 0 )
Expand Down Expand Up @@ -215,6 +214,8 @@ public void run( final String filePath )
frame.setIconImage( TRACKMATE_ICON.getImage() );
GuiUtils.positionWindow( frame, settings.imp.getWindow() );
frame.setVisible( true );
final Dimension size = frame.getSize();
frame.setSize( size.width, size.height + 1 );

// Text
final LogPanelDescriptor2 logDescriptor = ( LogPanelDescriptor2 ) sequence.logDescriptor();
Expand All @@ -230,7 +231,7 @@ public void run( final String filePath )
final String warning = reader.getErrorMessage();
if ( !warning.isEmpty() )
{
logger2.log( "Warnings occured during reading the file:\n"
logger2.log( "Warnings occurred during reading the file:\n"
+ "--------------------\n"
+ warning
+ "--------------------\n",
Expand Down Expand Up @@ -292,11 +293,12 @@ protected TmXmlReader createReader( final File lFile )

public static void main( final String[] args )
{
GuiUtils.setSystemLookAndFeel();
ImageJ.main( args );
final LoadTrackMatePlugIn plugIn = new LoadTrackMatePlugIn();
plugIn.run( null );
// 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" );
}
Expand Down
60 changes: 39 additions & 21 deletions src/main/java/fiji/plugin/trackmate/Model.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,13 @@ public class Model
*/
private int updateLevel = 0;

private final HashSet< Spot > spotsAdded = new HashSet< >();
private final HashSet< Spot > spotsAdded = new HashSet<>();

private final HashSet< Spot > spotsRemoved = new HashSet< >();
private final HashSet< Spot > spotsRemoved = new HashSet<>();

private final HashSet< Spot > spotsMoved = new HashSet< >();
private final HashSet< Spot > spotsMoved = new HashSet<>();

private final HashSet< Spot > spotsUpdated = new HashSet< >();
private final HashSet< Spot > spotsUpdated = new HashSet<>();

/**
* The event cache. During a transaction, some modifications might trigger
Expand All @@ -96,15 +96,15 @@ public class Model
* the event ID in this cache in the meantime. The event cache contains only
* the int IDs of the events listed in {@link ModelChangeEvent}, namely
* <ul>
* <li> {@link ModelChangeEvent#SPOTS_COMPUTED}
* <li> {@link ModelChangeEvent#TRACKS_COMPUTED}
* <li> {@link ModelChangeEvent#TRACKS_VISIBILITY_CHANGED}
* <li>{@link ModelChangeEvent#SPOTS_COMPUTED}
* <li>{@link ModelChangeEvent#TRACKS_COMPUTED}
* <li>{@link ModelChangeEvent#TRACKS_VISIBILITY_CHANGED}
* </ul>
* The {@link ModelChangeEvent#MODEL_MODIFIED} cannot be cached this way,
* for it needs to be configured with modification spot and edge targets, so
* it uses a different system (see {@link #flushUpdate()}).
*/
private final HashSet< Integer > eventCache = new HashSet< >();
private final HashSet< Integer > eventCache = new HashSet<>();

// OTHERS

Expand All @@ -120,7 +120,7 @@ public class Model
/**
* The list of listeners listening to model content change.
*/
Set< ModelChangeListener > modelChangeListeners = new LinkedHashSet< >();
Set< ModelChangeListener > modelChangeListeners = new LinkedHashSet<>();

/*
* CONSTRUCTOR
Expand All @@ -130,6 +130,7 @@ public Model()
{
featureModel = createFeatureModel();
trackModel = createTrackModel();
addModelChangeListener( new SpotMeshSliceCacheInvalidator() );
}

/*
Expand All @@ -154,7 +155,7 @@ protected TrackModel createTrackModel()
* <p>
* Subclassers can override this method to have the model work with their
* own subclass of {@link FeatureModel}.
*
*
* @return a new instance of {@link FeatureModel}.
*/
protected FeatureModel createFeatureModel()
Expand Down Expand Up @@ -321,7 +322,7 @@ public void clearTracks( final boolean doNotify )

/**
* Returns the {@link TrackModel} that manages the tracks for this model.
*
*
* @return the track model.
*/
public TrackModel getTrackModel()
Expand Down Expand Up @@ -447,7 +448,7 @@ public void notifyFeaturesComputed()
/**
* Set the logger that will receive the messages from the processes
* occurring within this trackmate.
*
*
* @param logger
* the {@link Logger} to use.
*/
Expand All @@ -458,7 +459,7 @@ public void setLogger( final Logger logger )

/**
* Return the logger currently set for this model.
*
*
* @return the {@link Logger} used.
*/
public Logger getLogger()
Expand Down Expand Up @@ -544,7 +545,7 @@ public synchronized Spot moveSpotFrom( final Spot spotToMove, final Integer from
* model.endUpdate();
* }
* </pre>
*
*
* @param spotToAdd
* the spot to add.
* @param toFrame
Expand Down Expand Up @@ -593,8 +594,9 @@ public synchronized Spot removeSpot( final Spot spotToRemove )
if ( DEBUG )
System.out.println( "[TrackMateModel] Removing spot " + spotToRemove + " from frame " + fromFrame );

trackModel.removeSpot( spotToRemove );
// changes to edges will be caught automatically by the TrackGraphModel
trackModel.removeSpot( spotToRemove );
// changes to edges will be caught automatically by the
// TrackGraphModel
return spotToRemove;
}
if ( DEBUG )
Expand Down Expand Up @@ -626,7 +628,7 @@ public synchronized Spot removeSpot( final Spot spotToRemove )
public synchronized void updateFeatures( final Spot spotToUpdate )
{
spotsUpdated.add( spotToUpdate ); // Enlist for feature update when
// transaction is marked as finished
// transaction is marked as finished
final Set< DefaultWeightedEdge > touchingEdges = trackModel.edgesOf( spotToUpdate );
if ( null != touchingEdges )
{
Expand Down Expand Up @@ -766,7 +768,7 @@ public synchronized boolean setTrackVisibility( final Integer trackID, final boo
* The copy is made of the same spot objects but on a different graph, that
* can be safely edited. The copy does not include the feature values for
* edges and tracks, but the features are declared.
*
*
* @return a new model.
*/
public Model copy()
Expand Down Expand Up @@ -810,7 +812,7 @@ public Model copy()
featureModel.getTrackFeatureShortNames(),
featureModel.getTrackFeatureDimensions(),
featureModel.getTrackFeatureIsInt() );

// Feature values are not copied.
return copy;
}
Expand Down Expand Up @@ -841,7 +843,7 @@ private void flushUpdate()
final int nEdgesToSignal = trackModel.edgesAdded.size() + trackModel.edgesRemoved.size() + trackModel.edgesModified.size();

// Do we have tracks to update?
final HashSet< Integer > tracksToUpdate = new HashSet< >( trackModel.tracksUpdated );
final HashSet< Integer > tracksToUpdate = new HashSet<>( trackModel.tracksUpdated );

// We also want to update the tracks that have edges that were modified
for ( final DefaultWeightedEdge modifiedEdge : trackModel.edgesModified )
Expand All @@ -853,7 +855,7 @@ private void flushUpdate()
final int nSpotsToUpdate = spotsAdded.size() + spotsMoved.size() + spotsUpdated.size();
if ( nSpotsToUpdate > 0 )
{
final HashSet< Spot > spotsToUpdate = new HashSet< >( nSpotsToUpdate );
final HashSet< Spot > spotsToUpdate = new HashSet<>( nSpotsToUpdate );
spotsToUpdate.addAll( spotsAdded );
spotsToUpdate.addAll( spotsMoved );
spotsToUpdate.addAll( spotsUpdated );
Expand Down Expand Up @@ -958,4 +960,20 @@ private void flushUpdate()
}
}

private static class SpotMeshSliceCacheInvalidator implements ModelChangeListener
{

@Override
public void modelChanged( final ModelChangeEvent event )
{
if ( event.getEventID() != ModelChangeEvent.MODEL_MODIFIED )
return;

event.getSpots()
.stream()
.filter( s -> event.getSpotFlag( s ) == ModelChangeEvent.FLAG_SPOT_MODIFIED )
.filter( s -> ( s instanceof SpotMesh ) )
.forEach( s -> ( ( SpotMesh ) s ).resetZSliceCache() );
}
}
}
Loading
Loading