Switch off liquid level detection in PLR for Hamilton STAR

Hej All

Is it possible to switch of the the liquid level detection(LLD) on a Hamilton STAR through PyLabRobot?

I am asking as because i am running my plates with a foil seal on to limit the risk of cross contamination.
This only works if LLD is off. I can make it work in Fluent Control and in OT2 API.

Unless specifically turned on with lld_mode (a backend kwarg), this should be turned off by default. Is that not what you’re seeing? (definitely do a water test first)

1 Like

I will try turning it off, by lld_mode=False. It is defiantly turned on to start with as i cannot run a dry run without getting a liquid detection error.

Interesting. I guess that’s more variance between different robots.

Note that lld_mode takes a STAR.LLDMode instead of a bool, eg lh.aspirate(..., lld_mode=[LLDMode.OFF]*8).

1 Like

I am having a problem switching off the LLD. Robot ignores LLDMode.OFF. It runs as if the command is not given.
await lh.pick_up_tips(tiprack300_1[‘A1’])
await lh.aspirate(source_plate[‘A1’], vols=[50.0], lld_mod=[STAR.LLDMode.OFF]*1)

Error shown:
[c:\Users\vikmol\OneDrive\Dokumenter\GitHub\pylabrobot_DALSA\pylabrobot\liquid_handling\liquid_handler.py:284](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/liquid_handler.py:284): UserWarning: Extra arguments to backend.aspirate: {‘lld_mod’} warnings.warn(f"Extra arguments to backend.{method.name}: {extra}")

--------------------------------------------------------------------------- STARFirmwareError Traceback (most recent call last) File [c:\Users\vikmol\OneDrive\Dokumenter\GitHub\pylabrobot_DALSA\pylabrobot\liquid_handling\backends\hamilton\STAR.py:1611](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1611), in STAR.aspirate(self, ops, use_channels, jet, blow_out, lld_search_height, clot_detection_height, pull_out_distance_transport_air, second_section_height, second_section_ratio, minimum_height, immersion_depth, immersion_depth_direction, surface_following_distance, transport_air_volume, pre_wetting_volume, lld_mode, gamma_lld_sensitivity, dp_lld_sensitivity, aspirate_position_above_z_touch_off, detection_height_difference_for_dual_lld, swap_speed, settling_time, homogenization_volume, homogenization_cycles, homogenization_position_from_liquid_surface, homogenization_speed, homogenization_surface_following_distance, limit_curve_index, use_2nd_section_aspiration, retract_height_over_2nd_section_to_empty_tip, dispensation_speed_during_emptying_tip, dosing_drive_speed_during_2nd_section_search, z_drive_speed_during_2nd_section_search, cup_upper_edge, ratio_liquid_rise_to_tip_deep_in, immersion_depth_2nd_section, minimum_traverse_height_at_beginning_of_a_command, min_z_endpos, hamilton_liquid_classes) [1610](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1610) try: → [1611](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1611) return await self.aspirate_pip( [1612](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1612) aspiration_type=[0 for _ in range(n)], [1613](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1613) tip_pattern=channels_involved, [1614](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1614) x_positions=x_positions, [1615](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1615) y_positions=y_positions, [1616](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1616) [1617](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1617) aspiration_volumes=aspiration_volumes, [1618](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1618) lld_search_height=lld_search_height, [1619](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1619) clot_detection_height=clot_detection_height, [1620](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1620) liquid_surface_no_lld=[int(ls * 10) for ls in liquid_surfaces_no_lld], [1621](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1621) pull_out_distance_transport_air=pull_out_distance_transport_air, [1622](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1622) second_section_height=second_section_height, [1623](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1623) second_section_ratio=second_section_ratio, [1624](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1624) minimum_height=minimum_height, [1625](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1625) immersion_depth=immersion_depth, [1626](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1626) immersion_depth_direction=immersion_depth_direction, [1627](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1627) surface_following_distance=surface_following_distance, [1628](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1628) aspiration_speed=aspiration_speed, [1629](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1629) transport_air_volume=transport_air_volume, [1630](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1630) blow_out_air_volume=blow_out_air_volumes, [1631](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1631) pre_wetting_volume=pre_wetting_volume,

[1660](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1660) if plr_e := convert_star_firmware_error_to_plr_error(e): → [1661](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1661) raise plr_e from e [1662](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1662) raise e ChannelizedError: ChannelizedError(errors={0: AspirationError(‘Liquid not correctly aspirated’)}, raw_response=C0ASid0010er99/00 P117/80)

Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings

I think you made a typo: lld_modlld_mode :wink:

1 Like

Oh No so typical xD

1 Like

is it working now?

I am slow on my testing. No there is still a problem.

code:

await lh.aspirate(source_plate[‘A1’], vols=[50.0], lld_mode=[STAR.LLDMode.OFF]*1)

Error:
--------------------------------------------------------------------------- STARFirmwareError Traceback (most recent call last) File [c:\Users\vikmol\OneDrive\Dokumenter\GitHub\pylabrobot_DALSA\pylabrobot\liquid_handling\backends\hamilton\STAR.py:1611](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1611), in STAR.aspirate(self, ops, use_channels, jet, blow_out, lld_search_height, clot_detection_height, pull_out_distance_transport_air, second_section_height, second_section_ratio, minimum_height, immersion_depth, immersion_depth_direction, surface_following_distance, transport_air_volume, pre_wetting_volume, lld_mode, gamma_lld_sensitivity, dp_lld_sensitivity, aspirate_position_above_z_touch_off, detection_height_difference_for_dual_lld, swap_speed, settling_time, homogenization_volume, homogenization_cycles, homogenization_position_from_liquid_surface, homogenization_speed, homogenization_surface_following_distance, limit_curve_index, use_2nd_section_aspiration, retract_height_over_2nd_section_to_empty_tip, dispensation_speed_during_emptying_tip, dosing_drive_speed_during_2nd_section_search, z_drive_speed_during_2nd_section_search, cup_upper_edge, ratio_liquid_rise_to_tip_deep_in, immersion_depth_2nd_section, minimum_traverse_height_at_beginning_of_a_command, min_z_endpos, hamilton_liquid_classes) [1610](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1610) try: → [1611](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1611) return await self.aspirate_pip( [1612](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1612) aspiration_type=[0 for _ in range(n)], [1613](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1613) tip_pattern=channels_involved, [1614](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1614) x_positions=x_positions, [1615](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1615) y_positions=y_positions, [1616](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1616) [1617](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1617) aspiration_volumes=aspiration_volumes, [1618](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1618) lld_search_height=lld_search_height, [1619](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1619) clot_detection_height=clot_detection_height, [1620](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1620) liquid_surface_no_lld=[int(ls * 10) for ls in liquid_surfaces_no_lld], [1621](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1621) pull_out_distance_transport_air=pull_out_distance_transport_air, [1622](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1622) second_section_height=second_section_height, [1623](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1623) second_section_ratio=second_section_ratio, [1624](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1624) minimum_height=minimum_height, [1625](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1625) immersion_depth=immersion_depth, [1626](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1626) immersion_depth_direction=immersion_depth_direction, [1627](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1627) surface_following_distance=surface_following_distance, [1628](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1628) aspiration_speed=aspiration_speed, [1629](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1629) transport_air_volume=transport_air_volume, [1630](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1630) blow_out_air_volume=blow_out_air_volumes, [1631](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1631) pre_wetting_volume=pre_wetting_volume,

[1660](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1660) if plr_e := convert_star_firmware_error_to_plr_error(e): → [1661](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1661) raise plr_e from e [1662](file:///C:/Users/vikmol/OneDrive/Dokumenter/GitHub/pylabrobot_DALSA/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1662) raise e ChannelizedError: ChannelizedError(errors={0: AspirationError(‘Liquid not correctly aspirated’)}, raw_response=C0ASid0013er99/00 P117/80)

This is a good message! It means LLD is working correctly, and reporting an error for a failed aspiration. Is there enough liquid in the well / are you using clean tips?

But i am trying to switch off LLD so it should not give any error.

There is no liquid in the well. I want to have this error silenced so i can control what height it should aspirate at.

Didn’t contrast-switch fully, smh

I’ll check when I’m in lab

1 Like