Ok I updated and it connected fine, thanks! I’ll have to get in the habit of updating more frequently.
Now getting another error when actually running my protocol though, with dispensing. This step the dispense volume is set at 0, which has not been a problem before but perhaps something has changed…
(other dispenses before this in the protocol worked fine)
/Users/jonlaurent/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/liquid_handling/liquid_handler.py:278: UserWarning: Extra arguments to backend.aspirate96: {'flow_rates'}
warnings.warn(f"Extra arguments to backend.{method.__name__}: {extra}")
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Cell In[10], line 2
1 ## Run it
----> 2 await growth_cycles(num_cycles)
Cell In[9], line 18, in growth_cycles(cycles)
16 await dispense_reader(read_vol)
17 waste_vol = 0
---> 18 await wash_tips(waste_vol)
19 else:
20 await aspirate_trough(dilute_vol)
Cell In[6], line 39, in wash_tips(vol)
38 async def wash_tips(vol):
---> 39 await lh.dispense_plate(lh.get_resource('bleach_res'), volume=vol)
40 await lh.aspirate_plate(lh.get_resource('bleach_res'), volume=0,
41 homogenization_volume = 8000, homogenization_cycles = 2,
42 speed_of_homogenization = 4000)
43 await lh.aspirate_plate(lh.get_resource('water1_res'), volume=0,
44 homogenization_volume = 8000, homogenization_cycles = 2,
45 speed_of_homogenization = 4000)
File ~/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/liquid_handling/liquid_handler.py:1357, in LiquidHandler.dispense_plate(self, plate, volume, flow_rate, end_delay, blow_out_air_volume, **backend_kwargs)
1354 well.tracker.rollback()
1355 channel.get_tip().tracker.rollback()
-> 1357 self._trigger_callback(
1358 "dispense_plate",
1359 liquid_handler=self,
1360 dispense=dispense_plate,
1361 error=error,
1362 **backend_kwargs,
1363 )
1364 else:
1365 for channel, well in zip(self.head96.values(), plate.get_all_items()):
File ~/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/liquid_handling/liquid_handler.py:1654, in LiquidHandler._trigger_callback(self, method_name, error, *args, **kwargs)
1652 callback(self, *args, error=error, **kwargs)
1653 elif error is not None:
-> 1654 raise error
File ~/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/liquid_handling/liquid_handler.py:1350, in LiquidHandler.dispense_plate(self, plate, volume, flow_rate, end_delay, blow_out_air_volume, **backend_kwargs)
1338 dispense_plate = DispensePlate(
1339 resource=plate,
1340 volume=volume,
(...)
1346 liquids=all_liquids,
1347 )
1349 try:
-> 1350 await self.backend.dispense96(dispense=dispense_plate, **backend_kwargs)
1351 except Exception as error: # pylint: disable=broad-except
1352 for channel, well in zip(self.head96.values(), plate.get_all_items()):
File ~/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/liquid_handling/backends/hamilton/STAR.py:61, in need_iswap_parked.<locals>.wrapper(self, *args, **kwargs)
58 if self.iswap_installed and not self.iswap_parked:
59 await self.park_iswap()
---> 61 result = await method(self, *args, **kwargs) # pylint: disable=not-callable
63 return result
File ~/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/liquid_handling/backends/hamilton/STAR.py:2272, in STAR.dispense96(self, dispense, jet, empty, blow_out, hlc, liquid_height, dispense_mode, air_transport_retract_dist, use_lld, minimum_traverse_height_at_beginning_of_a_command, minimal_end_height, lld_search_height, maximum_immersion_depth, tube_2nd_section_height_measured_from_zm, tube_2nd_section_ratio, immersion_depth, immersion_depth_direction, liquid_surface_sink_distance_at_the_end_of_dispense, transport_air_volume, gamma_lld_sensitivity, swap_speed, settling_time, mixing_volume, mixing_cycles, mixing_position_from_liquid_surface, surface_following_distance_during_mixing, speed_of_mixing, limit_curve_index, cut_off_speed, stop_back_volume)
2262 liquid_height = dispense.resource.get_absolute_location().z + liquid_height
2264 dispense_mode = _dispensing_mode_for_op(empty=empty, jet=jet, blow_out=blow_out)
2266 hlc = hlc or get_star_liquid_class(
2267 tip_volume=tip.maximal_volume,
2268 is_core=True,
2269 is_tip=True,
2270 has_filter=tip.has_filter,
2271 # get last liquid in pipette, first to be dispensed
-> 2272 liquid=dispense.liquids[-1][0][0] or Liquid.WATER,
2273 jet=jet,
2274 blow_out=blow_out, # see comment in method docstring
2275 )
2277 if hlc is not None:
2278 volume = hlc.compute_corrected_volume(dispense.volume)
IndexError: list index out of range