Skip to content

Establish Single Point of Truth (SPOT) read/write rules between NeXus, DataCats, and Tiled. #389

Open

Description

@Relm-Arrowny

Part of #373 Backend Integration/ Experiment Manifest / Post Collection Tagging/ Pocessed Data

Implement a standardized data hierarchy defining where data reads and writes occur among NeXus, DataCats, and Tile

Goals

Acceptance criteria : What journeys should the user be able to complete to consider your feature done
Be as specific as you can, check them off once they work. Add more if you find more requirements during development. Issue should only be considered done after all of them are checked

  • Unified Data Querying: The UI, analysis scripts, and workflows retrieve consistent, verified run metadata from a SPOT.

Tasks

base on the goals, deduce the tasks required. check them off once they're done

Caution

We need to know where to read raw data and where to write processed data including tagging.

  • Pipeline Standardization: Restructure data pipeline readers/writers around this standard

Activity

  1. DanPorter commented on Sep 16, 2026

    @DanPorter
    Collaborator

    My current understanding is:

    • Get experiment data from Tiled (ideally via supergraph or websocket to detector data on disk)
    • Get processed data from Workflows (ideally via supergraph to data in S3 or websocket to processed data on disk)
    • save interface metadata to ???

    I have raised this in various forums multiple times and most recently with the architect, so will add more details as I find them out.

  2. NKatti2011 commented on Sep 16, 2026

    @NKatti2011
    Collaborator

    Below include notes from meeting from @EmsArnold.

    Decision

    • Tiled is the single point of truth.

    Mechanism

    • A NeXus writer is being developed that sits behind Tiled: you ask Tiled to write the NeXus file you want, rather than writing it directly (being developed by core).
    • Working assumption is that workflow and processing pipeline outputs also go through this NeXus writer. Until that exists, processing outputs are written to the dataset's HDF5 file. The same applies to data tagging.

    Open questions

    • Coordinate frame and offset metadata: see the persistence note in Reference Frame Coordinate Transformations #379. What needs storing is a correction model plus its inputs at a point in time, not a single matrix, and we need to confirm whether Tiled holds that (likely).
  3. NKatti2011 commented on Sep 16, 2026

    @NKatti2011
    Collaborator

    Recommended can you confirm @EmsArnold?:

    1. Device readback for devices come from PVWS as in VISR
    2. Data and images come from Tiled (data displayed via Davidia client, maybe images displayed by some other display, not yet evaluated).
    3. If data transform needs to happen then there needs to be a layer that sits below or bolted onto the Davidia server which applies transform to data coming from Tiled - unknown needs to be evaluated.
    4. Live data potentially coming from Tiled websocket through Davidia server/client? - unknown.
    5. Processing status to come from Workflows websocket (not currently available on supergraph websocket).
    6. Writing metadata (inc data tagging through nexus writer - currently being developed by Core).
  4. EmsArnold commented on Sep 16, 2026

    @EmsArnold
    1. Device readback for devices come from PVWS as in VISR
    

    Not ViSR, but currently I15-1. We're using the package in the atlas monorepo for this, and getting readback for various things (synchrotron current, sample loaded on robot, hutch interlock status, etc.). This should be very easy to adopt into p99 by following the instructions & example in the README.

    2. Data and images come from Tiled (data displayed via Davidia client, maybe images displayed by some other display, not yet evaluated).
    

    I don't know if this has been accomplished yet, but I believe this is the intended behaviour for Tiled.

    3. If data transform needs to happen then there needs to be a layer that sits below or bolted onto the Davidia server which applies transform to data coming from Tiled - unknown needs to be evaluated.
    

    Yes, this should likely be the same "maths as a service" idea which serves all acquisition which needs it.

    4. Live data potentially coming from Tiled websocket through Davidia server/client? - unknown.
    

    Potentially similar to 2? Reliant on ensuring Tiled + Davidia is performant enough to handle serving live data quickly enough.

    5. Processing status to come from Workflows websocket (not currently available on supergraph websocket).
    

    This is correct, though is liable to change in the near future.

    6. Writing metadata (inc data tagging through nexus writer - currently being developed by Core).
    

    Yes, though I'm not sure of timescales for this. There has recently been active discussion on this in the athena-components slack channel.

  5. NKatti2011 commented on Sep 16, 2026

    @NKatti2011
    Collaborator

    Thanks @EmsArnold for the clarity and info :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Decision neededDecision is required before this is ready to be scopedcore dependencyMore needed to know before we can fully scope this work.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions