Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error should be raised before transfer attempted if tip length and plate height are incompatible with head type #316

Open
maraxen opened this issue Nov 21, 2024 · 2 comments

Comments

@maraxen
Copy link
Contributor

maraxen commented Nov 21, 2024

Describe the bug

From what I can see, PyLabRobot does not currently validate tip length and head dimensions against plate height, which can lead to the robot attempting to access positions that are physically impossible. This can occur in two main scenarios:

  • 96 Head Transfers: When using a 96 head with tips that are too short, the robot may attempt to lower the head below the minimum safe distance above the plate, potentially causing a crash.
  • Single Channel Transfers: If a single channel pipette descends too far into a well (e.g., to aspirate a small volume at the bottom), the pipette's width might collide with the well walls.

Expected behavior

PyLabRobot should implement comprehensive checks before any transfer is attempted to ensure compatibility between the chosen head, tip length, and target plate:

  • 96 Head: Verify that the tip length is sufficient to reach the well bottom without the head colliding with the plate.
  • Single Channel: If the tip is required to descend below the top of the well, check if the pipette's channel width can be accommodated within the well without collision.

If any incompatibility is detected, PyLabRobot should raise an error with a descriptive message, specifying the cause of the conflict and potential solutions (e.g., use longer tips, adjust aspiration height, use a smaller volume well).

To Reproduce

Scenario 1 (96 Head):

  1. Use a 96 head with tips that are too short for the target plate.
  2. Attempt a transfer.
  3. Observe a crash or failed transfer.

Scenario 2 (Single Channel):

  1. Use a single channel pipette with a wide tip.
  2. Attempt a transfer from a narrow well where the tip needs to descend significantly to reach the liquid.
  3. Observe a crash or failed transfer.

Possible Solution

Implement a pre-pipetting validation function that:

  • Identifies Head Type: Determine if a 96 head or single channel pipette is being used.
  • 96 Head Check: If using a 96 head, calculate the minimum tip length required to reach the well bottom while maintaining a safe distance from the plate. Compare this with the current tip length.
  • Single Channel Check: If using a single channel and the transfer requires descending below the well's top, compare the channel width against the well's inner diameter.
  • Error Handling: If any check fails, raise a descriptive error specifying the conflict and suggesting possible solutions.

Additional context

This comprehensive validation is crucial for preventing damage to expensive lab equipment, ensuring the reliability of automated liquid handling protocols, and minimizing experimental errors caused by failed transfers.

@rickwierenga
Copy link
Member

It is really a function of the minimum height the tip will reach, which will also include liquid height. With LLD it's hard to predict, but in that case we can assume a worst case scenario. I can think about edge cases where the tips diameter increases along its length, but since we don't know the exact geometry, that part may not be something we can implement right now.

Want to work on a pr for this?

@Colinwehrhan
Copy link

Currently Hamilton Venus does not handle for these errors, I think for a number of reasons which are valid for PyLabRobot:

  1. Z stall errors are not catastrophic and rarely hurt the instrument.
  2. What if I want to use a short tip with a short plate but jet dispense into a plate. This gets even harder as Rick mentioned with LLD.
  3. These are really easy things to check in testing irl and are going to be hard to implement to satisfy every customer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants