Skip to content

Add feature for blop to create JSON requests sent to the qserver rest api #110

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

Open
SeijDeLeon opened this issue Mar 18, 2025 · 6 comments
Assignees

Comments

@SeijDeLeon
Copy link

Blop currently utilizes its own run engine for executing plans. If a beamline wants to only run plans through the Qserver then integrating blop with its full functionality requires going against this approach.

If blop could create a JSON request (eventually sent to the qserver through its REST API) then we could still run all plans through the qserver while keeping the functionality of the blop agent. Blop in this mode would not directly execute the plan through a run engine.

This functionality would readily support future interfaces which are centered around the queue server.

Sample diagram of proposed functionality:

Image

@mrakitin @maffettone @whs92

@maffettone
Copy link
Contributor

This is what we built bluesky-adaptive for.

I believe we made some changes to make this compatible in this PR: #86

@whs92
Copy link
Contributor

whs92 commented Mar 18, 2025

@maffettone are there any elements that blop has that adaptive doesn't have? I am new to both and have no preference

@maffettone
Copy link
Contributor

Good question.

Bluesky adaptive is solely a harness, moving toward an API spec. While it has some example agents (basic bayesopt or sklearn stuff) It is meant to be agnostic to the kinds of logic you are using for your agent, aka bring-your-own agent. So in my view of this, BLOP brings the logic, bluesky-adaptive brings the integration harness.

The design choice to integrate BLOP tightly with an RE or set of ophyd objects puts constrains on how it can be used. Which is fine, because the goal is to meet agent devs where they are at; however, hopefully #86 provides [at least the start of] an operating mode where the logic of BLOP is fully separate from the experimental orchestration.

@whs92
Copy link
Contributor

whs92 commented Mar 20, 2025

When I looked at bluesky-adaptive over a year ago it was just doing the "lockstep" approach. I am looking for an agent which can interact asynchronously with the queueserver at the "interplan" level. Are the changes required for these docs still pending: https://blueskyproject.io/bluesky-adaptive/tutorials/async.html

Or is it ready to try out?

@maffettone
Copy link
Contributor

Ready to try out! I just haven't had the time to write a good tutorial using bluesky pods. Because the async approach requires a bit more stack (tiled, message bus, qserver, etc).

Hopefully this is a good jumping off point. https://blueskyproject.io/bluesky-adaptive/how-to/extend-my-tool.html

We're hiring to get more active development on this, so feel free to be a squeaky wheel where this doesn't meet your needs

@whs92
Copy link
Contributor

whs92 commented Mar 20, 2025

I'll give it a go. We already have all of the rest of the stack in containers, it's easy to deploy. If I have questions I'll get back to you, better if I end up with a demo I'll try and share it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants