Skip to content

Conversation

fm3
Copy link
Member

@fm3 fm3 commented Jun 10, 2025

  • Similar to Read Zarr Agglomerate Files #8633 we now support reading mesh files in zarr format. Note that there are also neuroglancerPrecomputed meshes, so this time there are three services the meshFileService delegates to.

  • The frontend no longer needs to specially handle neuroglancerPrecomputed meshes, since the lookUpMeshFileKey function abstracts from that. Because of that, I also simplified the frontend types.

  • Note that zarr meshfiles must be registered in the datasource-properties.json, they are not explored.

  • Also fixed a small error in job result status reporting

  • Also fixed a small error in mag selection for animation job.

Steps to test:

  • Load some precomputed meshes (both zarr, hdf5, neuroglancerPrecomputed; talk to me for example datasets), should show meshes correctly
  • Create animations via wk worker, should also work correctly (I tested this locally)
  • Note that neuroglancerPrecomputed meshes now need to be registered as attachments in the datasource-properties.json. You may need to re-explore the relevant datasets or edit the json.

TODOs:

  • introduce and look up MeshFileKey
  • delegate to zarr, hdf5 or neuroglancer meshfile services
  • explore remote neuroglancer meshes
  • parse new meshfile attributes zarr group format
  • do we still need the null vs none meshfile-mapping attribute?
  • test with frontend (zarr,hdf5,neuro)
  • adapt frontend to no longer need path + fileType for meshfiles
  • clear caches
  • unify fullMeshStl route
  • unify spelling (meshfile vs meshFile)
  • When exploring remote neuroglancer meshes, add credentialId, and use it? (or create follow-up issue)
  • re-add singletons to module after merge of zarr-agglomerate’s latest changes
  • unify function names with zarr-agglomerate’s latest changes

Issues:


fm3 added 30 commits May 19, 2025 10:20
@fm3 fm3 mentioned this pull request Jun 23, 2025
5 tasks
@MichaelBuessemeyer
Copy link
Contributor

Hej, I have a high level question regarding:

The frontend no longer needs to specially handle neuroglancerPrecomputed meshes, since the lookUpMeshFileKey function abstracts from that. Because of that, I also simplified the frontend types.

Does this mean, that the frontend no longer needs to pay attention to the meshfile type? Or is this still relevant and returned by the backend when the meshfiles are requested?

@fm3
Copy link
Member Author

fm3 commented Jun 24, 2025

Does this mean, that the frontend no longer needs to pay attention to the meshfile type?

Correct! And because of that, I removed fileType and path from the ApiMeshFileInfo. formatVersion remains (but only to warn that meshfiles with version <3 are not supported anymore)

Copy link
Contributor

@MichaelBuessemeyer MichaelBuessemeyer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here are my first comments :)

@fm3 fm3 requested a review from MichaelBuessemeyer June 25, 2025 08:00
Copy link
Contributor

@MichaelBuessemeyer MichaelBuessemeyer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is the rest of the review :)

Thanks for implementing all this so fast 🏎️ 💨

…e/services/BinaryDataServiceHolder.scala

Co-authored-by: MichaelBuessemeyer <[email protected]>
Copy link
Contributor

@MichaelBuessemeyer MichaelBuessemeyer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is the rest of the review :)

Thanks for implementing all this so fast 🏎️ 💨

Copy link
Contributor

@MichaelBuessemeyer MichaelBuessemeyer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here are my testing results:

  • I can no longer explore the data gs://fafb-ffn1-20190805/segmentation/ which I think has precomputed meshes.On master (wk.org) this worked. So I thikn this is cause by this PR,
  • The rest works very nicely (hdf5 mesh, ad hoc mesh, zarr mesh)

@fm3
Copy link
Member Author

fm3 commented Jun 26, 2025

Thanks for the detailed testing! Huh, exploring gs://fafb-ffn1-20190805/segmentation/ on this branch works for me, I can then also load its meshes 🤔 Maybe let’s have a look at this together today

Copy link
Contributor

@MichaelBuessemeyer MichaelBuessemeyer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, looks good. The problem I had with dataset gs://fafb-ffn1-20190805/segmentation/ was that I first explored gs://fafb-ffn1-20190805/section_to_section_xcorr/ and then wanted to add gs://fafb-ffn1-20190805/segmentation/. But they seem to have incompatible mags:

Found 1 Neuroglancer Precomputed layers at gs://fafb-ffn1-20190805/segmentation/.
Error when exploring as layer set: Could not extract common voxel size from layers <~ voxel sizes for layers are not uniform, got List(VoxelSize((8.0, 8.0, 40.0),nanometer)) <~ invalid mag: (0, 0, 1). Must all be powers of two

But this is currently expected and the same behaviour as on the master. Therefore, it should not block this pr and can be solved in a later pr or deemed to be expected.

@fm3 fm3 merged commit 96b7158 into master Jun 30, 2025
5 checks passed
@fm3 fm3 deleted the meshfile-zarr branch June 30, 2025 07:21
@coderabbitai coderabbitai bot mentioned this pull request Jun 30, 2025
8 tasks
@coderabbitai coderabbitai bot mentioned this pull request Sep 25, 2025
18 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants