Skip to content

Use GEFF as the main file format of TrackMate - #352

Draft
tinevez wants to merge 58 commits into
v9from
geff-io
Draft

Use GEFF as the main file format of TrackMate#352
tinevez wants to merge 58 commits into
v9from
geff-io

Conversation

@tinevez

@tinevez tinevez commented Jul 23, 2026

Copy link
Copy Markdown
Member

GEFF is the file format for TrackMate v9

See GEFF.

  • Serialize a full TrackMate data to GEFF

    • Model
      • Sphere spots
      • Spots with 2D polygon
      • Spots with 3D mesh
    • Settings
    • DisplaySettings
    • GUI state
    • log
  • Check that a TrackMate GEFF can be read from another software, meaningfully

    • pycellin
    • Mastodon
    • ?
  • Deserialize a GEFF from TrackMate

    • If the GEFF was generated from TrackMate, deserialize everything (Model, Settings, DisplaySettings, GUI state, log)
  • Ensure that we can read a GEFF generated from another software, putting the maximal amount of information back into TrackMate

    • pycellin
    • Mastodon
    • ?

tinevez added 30 commits July 20, 2026 15:31
with a utility to generate OME-Zarr units.
Structure similar to that of the XML writer.
Also: Write log, GUI state and display settings in the
extra / trackmate metadata parameter.
We reorder fields so that the Json is ordered in a logical way.
We also need to add a 'nchannels' field. When we will deserialize,
we will need to know inadvance how many channels has the input
image.
To facilitate Json serialization.
Use the 'lineage' prop, and point it to a node prop.
The reason is that we want to instantiate a Settings object with
a final ImagePlus, that we read elsewhere.
Since we are dealing with a Map< String, Object > Json
that is re returned by the N5Reader, we have some issues with the
Json tree. All numbers are deserialized as doubles, and we need
to convert some of them back to integers, particularly for the
detector and tracker settings. We do this by using the default
settings maps as a template, using the default value types to
properly case numbers.
while we work on serializing their actual names.
Getting close to working new file format. What is missing:

- saving / reading spot names
- saving / reading track names
- saving / reading track features
- saving / reading track visibility
and I think that's it.
tinevez added 27 commits July 21, 2026 17:27
Otherwise everything is serialized as a float64 and the Json is
not valid.
Another geff, called tracks.geff, lives in the first geff. It is made
of nodes only, one node per track. And each node stores the track
features.
Keep them as they are in TrackMate.
I will have to see if there is a price to pay for this downstream.
We did not serialize Z features for the 2D case, but we need to
put them back when reading, because the feature model expects
them to be there. These default values will be overwritten properly
if the edge has a Z feature value.
The GEFF specs do not single them out, except in an example.
We will fuel the edge weight via the corresponding deserialized
feature.
The Blosc thingie was done with the help of Claude Sonnet.
We added it because we needed to know how many channels we had to
properly deserialize a Settings object. But now we update an
existing Settings object, possibly with an imp, so we don't
need this field anymore.
with better messages when the comparison fails.
With the help of Claude Sonnet
This tests for a model that has both SpotRoi and SpotBase. So a few
spots don't have polygons in the model.
@tinevez tinevez mentioned this pull request Jul 24, 2026
@tinevez tinevez moved this to In Progress in Release TrackMate v9 Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant