Skip to content

node property dtype not conserved during round trip #19

@georgeoshardo

Description

@georgeoshardo

🐛 Bug Report

We are storing node properties according to the napari tracks features property, which returns a pandas dataframe.
If a user loads in a graph with, say, some nodes missing an integer property, those ints end up getting automatically cast to float64 by pandas because our properties must live on the tracks layer feature dataframe.

💡 Steps to Reproduce

Load up a geff with integer node properties, ensure at least one node is missing that property
Save it out
That node property is now float

💡 Expected Behavior

No response

🌎 Environment

napari: 0.6.3.dev24+gdeb2871c
Platform: macOS-26.0-arm64-arm-64bit
System: MacOS 26.0
Python: 3.10.18 (main, Jun 5 2025, 08:37:47) [Clang 14.0.6 ]
Qt: 5.15.14
PyQt5: 5.15.11
NumPy: 2.2.6
SciPy: 1.15.3
Dask: 2025.7.0
VisPy: 0.15.2
magicgui: 0.10.1
superqt: 0.7.5
in-n-out: 0.2.1
app-model: 0.4.0
psygnal: 0.14.0
npe2: 0.7.9
pydantic: 2.11.7

OpenGL:

  • PyOpenGL: 3.1.9
  • GL version: 2.1 Metal - 90.5
  • MAX_TEXTURE_SIZE: 16384
  • GL_MAX_3D_TEXTURE_SIZE: 2048

Screens:

  • screen 1: resolution 2056x1329, scale 2.0

Optional:

  • numba: 0.61.2
  • triangle: 20250106
  • napari-plugin-manager: 0.1.6
  • bermuda: 0.1.5
  • PartSegCore not installed

Experimental Settings:

  • Async: False
  • Autoswap buffers: False
  • Triangulation backend: Fastest available

Settings path:

  • /Users/georgeos/Library/Application Support/napari/geff_b6efc904579e39268a68ecd3a9a5ce64295996ce/settings.yaml

Launch command:

  • /opt/anaconda3/envs/geff/bin/napari --info

Plugins:

  • napari-geff: 0.1.dev65+gf5e4401.d20250722 (4 contributions)
  • napari-svg: 0.2.1 (2 contributions)
  • napari: 0.6.3.dev24+gdeb2871c (84 contributions)
  • napari-console: 0.1.3 (0 contributions)

💡 Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions