Skip to content
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

Protocol Engine milestone: Upload and run basic Python protocols #7844

Closed
3 tasks
SyntaxColoring opened this issue May 27, 2021 · 0 comments · Fixed by #8032
Closed
3 tasks

Protocol Engine milestone: Upload and run basic Python protocols #7844

SyntaxColoring opened this issue May 27, 2021 · 0 comments · Fixed by #8032
Labels
protocol-engine Ticket related to the Protocol Engine project and associated HTTP APIs robot-svcs Falls under the purview of the Robot Services squad (formerly CPX, Core Platform Experience).
Milestone

Comments

@SyntaxColoring
Copy link
Contributor

SyntaxColoring commented May 27, 2021

User story

As a 3rd-party developer, I want to programmatically upload and run a basic Python APIv3 protocol on the OT-2.

Acceptance criteria

  • Using an HTTP API, I can upload a "basic" Python APIv3 protocol to the OT-2.
    • "Basic" means single-file, excluding modules, 8-Channel pipettes, and so on.
  • Using an HTTP API, I can execute that protocol and make the robot move.
    • Execution must happen through Protocol Engine.
    • For the purposes of this story, we're going straight to execution. We don't care about calibration, metadata inspection, requirements inspection, or run log generation.
  • If a protocol is already running, I'm disallowed from starting a new one.
    • Bonus points: also don't let me start calibration or other stuff that would interfere.

We've punted running APIv2 protocols out of this sprint. For now, we can assume that all protocols coming through the new HTTP API are APIv3.

Implementation suggestions

It could work like this (courtesy @sanni-t):

  • An endpoint like POST /protocols takes the protocol file as form data.
  • The robot-server, upon receiving the request with the file, sends the file to Python Protocol Runner, which may simulate and extract metadata (or these may be stubbed).
  • Appropriate response to robot-server should include:
    • Metadata w/ Labware, modules, pipettes (empty fields)
    • Simulation result & warnings? (empty fields)
    • Handles to get:
      • Labware definitions
      • Protocol steps (Run log)
      • Create session
  • A create_session endpoint uses the file runner to build (get?) protocol context and fetches the PE client to execute commands using PE. (File runner details in separate PR)

See also #7647.

@SyntaxColoring SyntaxColoring added the robot-svcs Falls under the purview of the Robot Services squad (formerly CPX, Core Platform Experience). label May 27, 2021
@mattwelch mattwelch added this to the CPX Sprint 34 milestone Jun 2, 2021
@SyntaxColoring SyntaxColoring added the protocol-engine Ticket related to the Protocol Engine project and associated HTTP APIs label Jun 15, 2021
mcous added a commit that referenced this issue Jul 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
protocol-engine Ticket related to the Protocol Engine project and associated HTTP APIs robot-svcs Falls under the purview of the Robot Services squad (formerly CPX, Core Platform Experience).
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants