File size: 1,915 Bytes
e5de44a
 
 
d1f247f
e5de44a
 
 
 
 
 
 
d1f247f
e5de44a
 
d1f247f
e5de44a
 
 
 
 
 
 
 
7962d98
e5de44a
 
 
 
8be58cc
7962d98
 
 
 
 
d1f247f
e5de44a
8be58cc
 
e5de44a
 
 
 
 
 
 
 
7962d98
 
 
 
 
 
e5de44a
7962d98
 
e5de44a
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import gradio as gr
import requests
import uuid
import os

def generate_unique_name():
    unique_name = str(uuid.uuid4()) + ".py"
    return unique_name

def send_post_request(payload):
    url = "https://baxin-simulator.hf.space/protocol"
    token = os.environ['HF_TOKEN']
    protocol_name = generate_unique_name()
    data = {"name": protocol_name, "content": payload}
    headers = {"Content-Type": "application/json", 'Authorization': 'Bearer {}'.format(token)}

    response = requests.post(url, json=data, headers=headers)

    if response.status_code != 200:
        print("Error: " + response.text)
        return "Error: " + response.text

    # Check the response before returning it
    # ToDo clean up code
    response_data = response.json()
    if "error_message" in response_data:
        print("Error in response:", response_data["error_message"])
        return response_data["error_message"]
    elif "protocol_name" in response_data:
        # print("Protocol executed successfully. Run log:", response_data["run_log"])
        
        return response_data["run_status"]
        # ToDo if run_log option is on
        # return response_data["run_log"]

    else:
        print("Unexpected response:", response_data)
        return "Unexpected response"

def send_message(text, chatbot):
   # Send POST request and get response
   response = send_post_request(text)
   # Update chatbot with response
   chatbot.append(("opentrons_simulator result", response))
   return chatbot

title = """
<div align="center">
  # OT-2 Simulator: Emulating Opentrons Protocols with Python API
  
</div>
"""
with gr.Blocks() as app:
    gr.Markdown(title)
    textbox = gr.Textbox(label="Enter protocol")
    send_button = gr.Button(value="Send")
    chatbot = gr.Chatbot()
    clear_button = gr.ClearButton([textbox, chatbot])
    send_button.click(send_message, [textbox, chatbot], [chatbot])

app.launch()