Open
Conversation
josephhanrahan
approved these changes
Mar 11, 2026
1e849b4 to
a9e4817
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refactors the bluesky-queueserver integration to be more modular.
Closes #265
User-facing Changes
blop.queueserver.ConsumerCallbacknow checks for a "blop_correlation_uid" key in the start document so we can properly filter queue items and get only the Bluesky run UID that we care about. Before, we did the same injection but left the filtering up to the evaluation function via searching the Tiled catalog.blop.ax.QueueserverAgenthas arunmethod for running the standard optimization loop for multiple iterationsblop.ax.QueueserverAgenthas asubmit_suggestionsmethod for sampling specific points manuallyTechnical Changes
blop/queueserver.pywhich specifies aQueueserverClient,ConsumerCallback, andQueueserverOptimizationRunnerQueueserverClienthandles theREManagerAPIinstance, ZMQ remote disptach, and the callback threadQueueserverOptimizationRunnercontains the optimization loop and tracks state, using the client to submit suggestions to runConsumerCallbackfilters to find the appropriateRunStartandRunStopdocument of the submitted planblop/tests/test_queueserver,pyfor unit testsQueueserverAgenttoblop/ax/agent.pywhich provides a nicer interface for Ax-based optimization with queueserverQueueserverAgenttoblop/tests/ax/test_agent.py_AxAgentMixinto provide common Ax functionality across Agentsblop.protocols.BaseOptimizationProblemabstraction to enforce type-safety using in-process vs out-of-process device and plan referencesblop.protocols.OptimizationProblemshould be used for in-process Blop with theRunEngineblop.protocols.QueueserverOptimizationProblemshould be used for Blop with queueserverOther Changes
Actuatorto beMovableHasNameinstead ofNamedMovable. The distinction is documented in the code. This is required due to ophyd-async not requiringHasHintsfor signals.Follow-up Work