Autoload error (I don't have autoload)

I just tried connecting to one of my STARlets with PLR and am getting the below error.

If it’s helpful, I just got done moving the instrument to a new location, and this is the first time reconnecting since moving. It looks like it’s related to autoload either being present or not - my instrument does not have an autoload, nor has it ever, nor has it ever thrown any similar error when using PLR previously.

I did open the rear of the gantry to look for the LED cables, and something weird happened with one of the ribbon cables that may be related, but having it plugged in or not gives me the same error.

Edit: didn’t include the whole error trace at first, now it does.

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Cell In[3], line 2
      1 ## Connect to robot
----> 2 await lh.setup()

File ~/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/liquid_handling/liquid_handler.py:114, in LiquidHandler.setup(self)
    111 if self.setup_finished:
    112   raise RuntimeError("The setup has already finished. See `LiquidHandler.stop`.")
--> 114 await super().setup()
    116 self.head = {c: TipTracker(thing=f"Channel {c}") for c in range(self.backend.num_channels)}
    117 self.head96 = {c: TipTracker(thing=f"Channel {c}") for c in range(96)}

File ~/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/machine.py:63, in Machine.setup(self)
     62 async def setup(self):
---> 63   await self.backend.setup()
     64   self._setup_finished = True

File ~/Documents/Lab/PyLabRobot/pylabrobot/pylabrobot/liquid_handling/backends/hamilton/STAR.py:1230, in STAR.setup(self)
   1227 left_x_drive_configuration_byte_1 = left_x_drive_configuration_byte_1 + \
   1228   "0" * (16 - len(left_x_drive_configuration_byte_1))
   1229 left_x_drive_configuration_byte_1 = left_x_drive_configuration_byte_1[2:]
-> 1230 autoload_configuration_byte = bin(conf["kb"]).split("b")[-1][-3]
   1231 # Identify installations
   1232 self.autoload_installed = autoload_configuration_byte == "1"

IndexError: string index out of range

Could you share the value of conf? You can simply add a print to the setup method or share the log file titled pylabrobot-2024xxx.log.

Here’s the log.

2024-03-05 11:12:00,868 - pylabrobot - INFO - Finding USB device...
2024-03-05 11:12:00,894 - pylabrobot - INFO - Found USB device.
2024-03-05 11:12:00,894 - pylabrobot - INFO - Found endpoints. 
Write:
       ENDPOINT 0x2: Bulk OUT ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :    0x2 OUT
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0 
Read:
       ENDPOINT 0x81: Bulk IN ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :   0x81 IN
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0
2024-03-05 11:12:04,215 - pylabrobot - INFO - Sent command: C0RTid0001
2024-03-05 11:12:04,216 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:12:04,258 - pylabrobot - DEBUG - Received data: bytearray(b'C0RTid0001er00/00rt0 0 0 0 0 0 0 0')
2024-03-05 11:12:04,259 - pylabrobot - INFO - Received response: C0RTid0001er00/00rt0 0 0 0 0 0 0 0
2024-03-05 11:12:04,273 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:12:04,274 - pylabrobot - INFO - Sent command: C0RMid0002
2024-03-05 11:12:04,275 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:12:04,337 - pylabrobot - DEBUG - Received data: bytearray(b'C0RMid0002er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000')
2024-03-05 11:12:04,337 - pylabrobot - INFO - Received response: C0RMid0002er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000
2024-03-05 11:12:04,338 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:12:04,339 - pylabrobot - INFO - Sent command: C0QMid0003
2024-03-05 11:12:04,340 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:12:04,377 - pylabrobot - DEBUG - Received data: bytearray(b'C0QMid0003er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360')
2024-03-05 11:12:04,377 - pylabrobot - INFO - Received response: C0QMid0003er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360
2024-03-05 11:12:04,377 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:15:42,865 - pylabrobot - INFO - Sent command: C0RTid0004
2024-03-05 11:15:42,866 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:15:42,909 - pylabrobot - DEBUG - Received data: bytearray(b'C0RTid0004er00/00rt0 0 0 0 0 0 0 0')
2024-03-05 11:15:42,910 - pylabrobot - INFO - Received response: C0RTid0004er00/00rt0 0 0 0 0 0 0 0
2024-03-05 11:15:42,911 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:15:42,912 - pylabrobot - INFO - Sent command: C0RMid0005
2024-03-05 11:15:42,912 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:15:42,974 - pylabrobot - DEBUG - Received data: bytearray(b'C0RMid0005er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000')
2024-03-05 11:15:42,976 - pylabrobot - INFO - Received response: C0RMid0005er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000
2024-03-05 11:15:42,979 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:15:42,980 - pylabrobot - INFO - Sent command: C0QMid0006
2024-03-05 11:15:42,981 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:15:43,016 - pylabrobot - DEBUG - Received data: bytearray(b'C0QMid0006er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360')
2024-03-05 11:15:43,018 - pylabrobot - INFO - Received response: C0QMid0006er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360
2024-03-05 11:15:43,020 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:16:19,074 - pylabrobot - INFO - Finding USB device...
2024-03-05 11:16:19,087 - pylabrobot - INFO - Found USB device.
2024-03-05 11:16:19,087 - pylabrobot - INFO - Found endpoints. 
Write:
       ENDPOINT 0x2: Bulk OUT ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :    0x2 OUT
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0 
Read:
       ENDPOINT 0x81: Bulk IN ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :   0x81 IN
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0
2024-03-05 11:16:22,450 - pylabrobot - INFO - Sent command: C0RTid0001
2024-03-05 11:16:22,451 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:16:22,493 - pylabrobot - DEBUG - Received data: bytearray(b'C0RTid0001er00/00rt0 0 0 0 0 0 0 0')
2024-03-05 11:16:22,494 - pylabrobot - INFO - Received response: C0RTid0001er00/00rt0 0 0 0 0 0 0 0
2024-03-05 11:16:22,505 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:16:22,506 - pylabrobot - INFO - Sent command: C0RMid0002
2024-03-05 11:16:22,506 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:16:22,569 - pylabrobot - DEBUG - Received data: bytearray(b'C0RMid0002er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000')
2024-03-05 11:16:22,569 - pylabrobot - INFO - Received response: C0RMid0002er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000
2024-03-05 11:16:22,570 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:16:22,571 - pylabrobot - INFO - Sent command: C0QMid0003
2024-03-05 11:16:22,571 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:16:22,607 - pylabrobot - DEBUG - Received data: bytearray(b'C0QMid0003er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360')
2024-03-05 11:16:22,607 - pylabrobot - INFO - Received response: C0QMid0003er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360
2024-03-05 11:16:22,608 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:31:53,535 - pylabrobot - INFO - Finding USB device...
2024-03-05 11:31:53,542 - pylabrobot - INFO - Found USB device.
2024-03-05 11:31:53,542 - pylabrobot - INFO - Found endpoints. 
Write:
       ENDPOINT 0x2: Bulk OUT ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :    0x2 OUT
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0 
Read:
       ENDPOINT 0x81: Bulk IN ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :   0x81 IN
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0
2024-03-05 11:31:56,914 - pylabrobot - INFO - Sent command: C0RTid0001
2024-03-05 11:31:56,915 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:31:56,958 - pylabrobot - DEBUG - Received data: bytearray(b'C0RTid0001er00/00rt0 0 0 0 0 0 0 0')
2024-03-05 11:31:56,959 - pylabrobot - INFO - Received response: C0RTid0001er00/00rt0 0 0 0 0 0 0 0
2024-03-05 11:31:56,969 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:31:56,970 - pylabrobot - INFO - Sent command: C0RMid0002
2024-03-05 11:31:56,970 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:31:57,032 - pylabrobot - DEBUG - Received data: bytearray(b'C0RMid0002er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000')
2024-03-05 11:31:57,032 - pylabrobot - INFO - Received response: C0RMid0002er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000
2024-03-05 11:31:57,032 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:31:57,033 - pylabrobot - INFO - Sent command: C0QMid0003
2024-03-05 11:31:57,034 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:31:57,069 - pylabrobot - DEBUG - Received data: bytearray(b'C0QMid0003er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360')
2024-03-05 11:31:57,070 - pylabrobot - INFO - Received response: C0QMid0003er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360
2024-03-05 11:31:57,070 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:35:37,204 - pylabrobot - INFO - Sent command: C0RTid0004
2024-03-05 11:35:37,205 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:35:37,247 - pylabrobot - DEBUG - Received data: bytearray(b'C0RTid0004er00/00rt0 0 0 0 0 0 0 0')
2024-03-05 11:35:37,248 - pylabrobot - INFO - Received response: C0RTid0004er00/00rt0 0 0 0 0 0 0 0
2024-03-05 11:35:37,249 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:35:37,249 - pylabrobot - INFO - Sent command: C0RMid0005
2024-03-05 11:35:37,250 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:35:37,312 - pylabrobot - DEBUG - Received data: bytearray(b'C0RMid0005er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000')
2024-03-05 11:35:37,314 - pylabrobot - INFO - Received response: C0RMid0005er00/00kb01kp08 C00000 X00000 P10000 P20000 P30000 P40000 P50000 P60000 P70000 P80000 H00000
2024-03-05 11:35:37,315 - pylabrobot - DEBUG - Reading thread stopped.
2024-03-05 11:35:37,316 - pylabrobot - INFO - Sent command: C0QMid0006
2024-03-05 11:35:37,318 - pylabrobot - DEBUG - Starting reading thread...
2024-03-05 11:35:37,353 - pylabrobot - DEBUG - Received data: bytearray(b'C0QMid0006er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360')
2024-03-05 11:35:37,355 - pylabrobot - INFO - Received response: C0QMid0006er00/00ka000003xt30xa30xw08000xl05xr00xm03500xx11400ys090xu3700xv3700yu0060kl360kc0yx0060ke00000000xn00xo00ym6065kr0km360
2024-03-05 11:35:37,362 - pylabrobot - DEBUG - Reading thread stopped.

Probably the same issue as this Error initializing Hamilton Star

Are you on the latest version of main?

I last updated something like 10 days ago. I’ll update and try it again.

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

good to hear!

The second error was fixed with zero volume liquid handling on hamilton · PyLabRobot/pylabrobot@b17c46c · GitHub

1 Like