-
Notifications
You must be signed in to change notification settings - Fork 50
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
Save custom .attrs
in SpatialElements to disk
#839
Comments
Hi, thanks for reaching out. In principle we could extend the way in which we write spatialdata/src/spatialdata/_io/io_zarr.py Line 141 in 03dbf80
What do you think @giovp @timtreis @melonora? The only issue that I may see is that in our APIs we currently only take care of forwarding the metadata that we define in the format (for instance after cropping an element, the information on the coordinate system are passed to the new cropped object). Not sure if we should ignore the rest of values of |
Also, it is a good idea to explore what libraries like
|
Hey @lucas-diedrich, if I'm not mistaken, SpatialData has an .attrs level at the highest level, so not directly associated with the individual elements, that is persistent (see #711). Until we make a decision on this discussion here, you could probably convert your "metadata" slot into a dict with the key being the element you're annotating and the value being your info. |
Hi Tim, hi Luca, thanks for being so responsive and your input! Thanks, that's a great suggestion, I'll do that in the meantime. |
soo I'm trying to get back in the dev discussion of the ecosystem and this is a first attempt I think if we support the serialization of attrs the way uns does it, we might encounter some challenges in the decision of what we serialize. For adata.uns for example, it supported some serialization, but then issues raised during the years because people started to want more support, or encountered bugs. blobs.images["blobs_image"].attrs["metadata"] = {
"info1": 1,
"info2": "2",
"info3": np.zeros(shape=(3, 3))
} an humble array already raises a bunch of options on how should that be serialized..... so I guess my position is not against it in principle, but we need to undersatnd what we will get into... |
@giovp good point! Maybe we could overcome problems like this by requiring Or in alternative, for the time being, we should maybe endorse the workaround suggested by @timtreis and choose not implement this feature. The rationale for this would be that the serialization of |
I found it, this is the requirement for |
Maybe for context: At least for my specific use case the metadata is indeed expected to be json serializable. For your reference, I attached some example data from two different parsers (carl-zeiss pyCZIlibrw for .czi files, openslide for .mirax data) |
Hi! Thanks for the great package!
I am currently working with
spatialdata
to load and parse microscopy files (particularly in the proprietary Carl Zeiss.czi
format). For this purpose, it would be extremely useful to persistently store metadata related to the acquisition of the microscopy data (e.g. magnification, resolution, etc.) in the.attrs
attribute of theSpatialElement
. While I can manipulate the Elements in memory, it is currently not possible to write them to disk (see example)While it would be possible to write the metadata to a custom tables object, it feels much more natural to have this data directly associated with the image.
Therefore, it would be fantastic if SpatialElements would support writing the
.attrs
keys to disk.Example
The text was updated successfully, but these errors were encountered: