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

add nest_1_troughplate_195000uL_Vb and nest_1_troughplate_185000uL_Vb #315

Open
wants to merge 7 commits into
base: main
Choose a base branch
from

Conversation

rickwierenga
Copy link
Member

No description provided.

@ashah03
Copy link

ashah03 commented Nov 21, 2024

Wow, that was fast, thank you! Part numbers should be 360103 and 360104. Will try to test this out in the next two days and let you know if there are any issues.

By the way for clarity, I would say that it's not necessarily 96/384 "holes" but instead there are 96 trapesoidal shapes at the bottom.
image

@mackenziekormann
Copy link

mackenziekormann commented Dec 3, 2024

Hi, Rick! I'm Mackenzie, working with Adit on our Hamilton automation setup. I tested out the 195000 uL trough today (sorry for the delay) and the two furthest tips away from the front (I would say channels 0 and 1) aren't entering the trough, only 2 through 7.

@rickwierenga
Copy link
Member Author

rickwierenga commented Dec 3, 2024

could you add offsets?

lh.aspirate(wells, vols, offsets=[Coordinate(x0, y0, z0), Coordinate(x1, y1, z1), ...])

x,y,z in mm, per channel starting at 0

are there any offsets for which it works?

to be clear: this will help me see where the issue is in the plate, the goal obviously is to be able to operate without offsets

@mackenziekormann
Copy link

Tried a few iterations of offsets and nothing worked. Still getting the error along the lines of ValueError: Minimum distance between two channels is <9mm or something akin to that

@mackenziekormann
Copy link

Wanted to check in here again about the error I was getting. It's happening with the 12 channel trough as well, with the same error. Confused as to why the channels can dispense close together but can't aspirate that closely.

@rickwierenga
Copy link
Member Author

when i use the STARChatterboxBackend (same as STAR, but prints commands instead of sending them), it works:

from pylabrobot.liquid_handling import LiquidHandler
from pylabrobot.liquid_handling.backends.hamilton.STAR_chatterbox import STARChatterboxBackend
from pylabrobot.resources import PLT_CAR_L5PCR, Hamilton_96_adapter_188182, Coordinate, STARLetDeck
lh = LiquidHandler(backend=STARChatterboxBackend(), deck=STARLetDeck())
await lh.setup()

from pylabrobot.resources import HTF
tr = HTF(name="tr")
lh.deck.assign_child_resource(tr, location=Coordinate(0, 0, 0))
await lh.pick_up_tips(tr["A1:H1"])

from pylabrobot.resources import nest_1_troughplate_195000uL_Vb
trough = nest_1_troughplate_195000uL_Vb(name="trough")
lh.deck.assign_child_resource(trough, location=Coordinate(300, 0, 100))
await lh.aspirate(trough["A1"]*8, vols=[100]*8)

from pylabrobot.resources import nest_1_troughplate_185000uL_Vb
trough1 = nest_1_troughplate_185000uL_Vb(name="nest_1_troughplate_185000uL_Vb")
lh.deck.assign_child_resource(trough1, location=Coordinate(600, 0, 100))
await lh.aspirate(trough1["A1"]*8, vols=[100]*8)

(need to sync because of 974073c)

@mackenziekormann
Copy link

IMG_2721

Above is the position of the tips when I attempt to use 7 channels.
Below is the code I used

flat_plt_car = PLT_CAR_L5AC_A00(name="flat_plate_carrier")
flat_plt_car[2] = res_1 = nest_1_troughplate_195000uL_Vb('res_1')

with lh.use_channels([1, 2, 3, 4, 5, 6, 7]):
    await lh.pick_up_tips(lh.deck.get_resource("tips_12")["A7:G7"]) 
    await lh.aspirate(res_1["A1"]*7, [100]*7)
    await lh.dispense(pcr_plate_10["A6:G6"], [100]*7)
    await lh.discard_tips()

This occurred when I used channel 0 as well, but we are having a separate hardware issue with that channel so I opted against using it for this test.

@rickwierenga
Copy link
Member Author

this was dumb. i think i fixed it

@mackenziekormann
Copy link

Thanks for the fix! Unfortunately now running into the issue of the tips running into the bottom of the trough when pipetting and causing an error.

@mackenziekormann
Copy link

I can make a separate issue for this, but ValueError: Minimum distance between two y positions is <9mm: 2369, 2280 (channel 1 and 2) is the error I get when I attempt to use 7 tips in one channel of the 12 channel trough

@mackenziekormann
Copy link

Similarly to the error with pipetting into the 96 wellplate, I'm having issues with tips running into the bottom of the single channel trough. Setting Coordinate=(0, 0, 6) changes the absolute location when checked, but does not effect the tips hitting the bottom of the trough.

@rickwierenga
Copy link
Member Author

there were two issues above causing the 'min position error': 1) nest_1_troughplate_195000uL_Vb, like all plates, is defined in landscape orientation. This means that the robot will try to fit all channels into the well on the narrow side. To fix, we need to rotate the plate:

rom pylabrobot.resources import nest_1_troughplate_195000uL_Vb
trough = nest_1_troughplate_195000uL_Vb(name="trough").rotated(z=90)  # <---
lh.deck.assign_child_resource(trough, location=Coordinate(300, 0, 100))
await lh.aspirate(trough["A1"]*8, vols=[100]*8)

second, LH didn't compute the spacing in rotated resources correctly. fixed with #326

@ashah03
Copy link

ashah03 commented Dec 6, 2024

Not sure I understand why it needed to be rotated - it is the same orientation as most plates (landscape) on the deck. The video Mackenzie sent is going sideways (facing x direction of the robot).

@ashah03
Copy link

ashah03 commented Dec 6, 2024

The goal is to fit the 8 channels on the narrow side, which we thought would work since it's about the same dimensions as a plate. But maybe it's a bit too small to fit 8 channels in?

@rickwierenga
Copy link
Member Author

so you're aspirating from different troughs? in that case you need to use ["A1:H1"] to get all troughs instead of a single ["A1"]

@ashah03
Copy link

ashah03 commented Dec 6, 2024 via email

@rickwierenga
Copy link
Member Author

oh oh this is about the 1 trough plate smh

the y size of the 96-grid version is 72 mm (per drawing - can you caliper reality?), which just isn't big enough to fit 8 channels at 9 mm spacing

@rickwierenga
Copy link
Member Author

mm, it should be big enough actually. each channel would have 9mm of space. we were trying to split into 9mm spacing on the edges as well

@rickwierenga
Copy link
Member Author

sorry for delay, end of year is busy. does #337 fix? may need to tweak the min_spacing_edge variable to 0 for 72mm to work. Just hack around with the value and see what works physically.

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

Successfully merging this pull request may close these issues.

3 participants