-
Notifications
You must be signed in to change notification settings - Fork 186
Open
Labels
Description
Overview
When running in simulation, can't load an absorbance reader (works when running in a protocol run)
Steps to reproduce
import re
import os
SIMULATION_MODE = os.getenv("SIMULATION_MODE", "true").lower() == "true"
if SIMULATION_MODE:
print("Running in simulation mode.")
import opentrons.simulate
protocol = opentrons.simulate.get_protocol_api("2.21")
else:
print("WARNING: Running on physical hardware.")
import opentrons.execute
protocol = opentrons.execute.get_protocol_api("2.21")
print(f"Protocol API {protocol.api_version} loaded.")
# NOTE: 2.16 tested with https://github.com/AccelerationConsortium/ac-training-lab/blob/3988313d80d3d9b1f2a795ceb8701194af00d8e3/src/ac_training_lab/ot-2/_scripts/OT2mqtt.py # noqa: E501
# protocol = opentrons.execute.get_protocol_api("2.16")
pr_mod = protocol.load_module(module_name="absorbanceReaderV1", location="C3")
pr_mod.close_lid()
pr_mod.initialize(
mode="single", wavelengths=[600]
) # can add (reference_wavelength=) for normalization (reference wavelenth data will be subtracted from wavelength indicated)
pr_data = pr_mod.read()
print(pr_data)
pr_data[600]["A1"]
pr_data = pr_mod.read(export_filename="raw_absorbance_in") # CSV fileCurrent behavior
Exception has occurred: ProtocolCommandFailedError (note: full exception trace is shown but execution is paused at: _run_module_as_main)
Error 4000 GENERAL_ERROR (ProtocolCommandFailedError): PythonException: ValueError: A absorbanceReaderType cannot be loaded into slot 6
File "/opt/anaconda3/envs/opentrons/lib/python3.12/site-packages/opentrons/protocol_engine/clients/transports.py", line 84, in execute_command
original_error=error,
message=f"{error.errorType}: {error.detail}",
)
File "/opt/anaconda3/envs/opentrons/lib/python3.12/site-packages/opentrons/protocol_engine/clients/sync_client.py", line 126, in execute_command_without_recovery
return self._transport.execute_command(create_request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/opentrons/lib/python3.12/site-packages/opentrons/protocol_api/core/engine/protocol.py", line 724, in load_module
cmd.LoadModuleParams(
model=EngineModuleModel(model),
location=DeckSlotLocation(slotName=normalized_deck_slot),
)
)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/opentrons/lib/python3.12/site-packages/opentrons/protocol_api/protocol_context.py", line 1035, in load_module
model=requested_model,
deck_slot=deck_slot,
configuration=configuration,
)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/opentrons/lib/python3.12/site-packages/opentrons/protocols/api_support/util.py", line 389, in _check_version_wrapper
return decorated_obj(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/zeqingbao/Documents/GitHub/drug_surfactant/experiments/20250912-Plate Interpretation/absorbance_sim_reproducer.py", line 22, in <module>
pr_mod = protocol.load_module(module_name="absorbanceReaderV1", location="C3")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/opentrons/lib/python3.12/runpy.py", line 88, in _run_code
exec(code, run_globals)
File "/opt/anaconda3/envs/opentrons/lib/python3.12/runpy.py", line 198, in _run_module_as_main (Current frame)
return _run_code(code, main_globals, None,
opentrons.protocol_engine.errors.error_occurrence.ProtocolCommandFailedError: Error 4000 GENERAL_ERROR (ProtocolCommandFailedError): PythonException: ValueError: A absorbanceReaderType cannot be loaded into slot 6Expected behavior
Allow the initialization at that slot
Operating system
None
System and robot setup or anything else?
Running directly on an OT-Flex via SSH:
python absorbance_sim_reproducer.py