bluesky / ophyd-async

Hardware abstraction for bluesky written using asyncio
https://blueskyproject.io/ophyd-async
BSD 3-Clause "New" or "Revised" License
8 stars 24 forks source link

from ophyd v1 to ophyd-async (was v2?) #479

Open mguijarr opened 1 month ago

mguijarr commented 1 month ago

Hi !

Prior to try ophyd-async, and prior to embarking into some heavy development, I am wondering if any guide / tutorial / documentation / notes exist to tell how to do a transition from Ophyd v1 to the new version.

What are the differences ? (apart from the asynchronous execution model) What is compatible ? What is incompatible ? What has to be changed ?

Thanks in advance for some hints.

mguijarr commented 1 month ago

Some explanation about "why ophyd-async ?" would be useful, too ; what problem does it solve, that was impossible to solve with the original version ?

coretl commented 1 month ago

I will answer the questions here now, then leave this ticket open so we can transfer the answers into the docs before we make the 1.0 release later this year.

What are the differences ? (apart from the asynchronous execution model) Some explanation about "why ophyd-async ?" would be useful, too ; what problem does it solve, that was impossible to solve with the original version ? What is compatible ? What is incompatible ? What has to be changed ?

This should go on the top level README.

The main differences from ophyd (sync) are:

It was written with the aim of implementing flyscanning in a generic and extensible way with highly customizable devices like PandABox and the Delta Tau PMAC products. Using async code makes it possible to do the "put 3 PVs in parallel, then get from another PV" logic that is common in flyscanning without the performance and complexity overhead of multiple threads.

Devices from both ophyd and ophyd-async can be used in the same RunEngine and even in the same scan. This allows a per-device migration where devices are reimplemented in ophyd-async one by one.

Then somewhere in the docs should be a how-to guide on reimplementing an ophyd device in ophyd-async...