The skirt vs non-skirt situation is becoming increasingly an issue:
I’m exposing MFX modules atm for PLR use.
A MFX module I have come across a lot is the MFX_DWP_module
:
→ as can be seen here the MFX_DWP_module
does not have a skirt, as opposed to the standard plate_carrier next to it.
Using the z-probing function I receive a mean z-height for this module of 178.73 mm.
The precise origin of the MFX_DWP_module
’s MFXSite
can then be easily tested out.
Next I placed a standard Cos_96_rd
plate on the MFX_DWP_module
’s MFXSite
:
However, aspirating from the bottom of a well of this plate, i.e. lld_mode(0), crashes the tip into the bottom.
It appears that at least this plate’s PLR’s labware definitions has been using the wrong dz
value:
To ensure we are talking about the same labware definitions, here is an infographic I made a while ago:
→ dz
= marks the distance between the bottom of the plate and the bottom of a well/container
The PLR definition of Cos_96_Rd
:
def Cos_96_Rd(name: str, with_lid: bool = False) -> Plate:
""" Cos_96_Rd """
return Plate(
name=name,
size_x=127.0,
size_y=86.0,
size_z=14.5,
with_lid=with_lid,
model="Cos_96_Rd",
lid_height=10,
items=create_equally_spaced(Well,
num_items_x=12,
num_items_y=8,
dx=10.55,
dy=8.05,
dz=0.75,
item_dx=9.0,
item_dy=9.0,
size_x=6.9,
size_y=6.9,
size_z=11.3,
bottom_type=WellBottomType.U,
cross_section_type=CrossSectionType.CIRCLE,
compute_volume_from_height=_compute_volume_from_height_Cos_96_Rd,
),
)
→ dz
= 0.75 mm
Looking into the VENUS definition this arises from I tried to figure out where this number is coming from as it seems very low when looking at the plate:

→ the only number that corresponds with what PLR believes to be dz
is actually the “Thickness of container base”.
Looking further into the definition of the entire rack:
- plate_height = 14.5 mm
- well/container_height_segment_1 = 10.7
- well/container_height_segment_2 = 0.6
→ plate_height - container_height = 14.5 - (10.7+0.6) = 3.2 mm ← the actual dz
value
(which includes the height/thickness_of_container_base (0.75mm) and a clearance underneath the well of 2.45 mm.
Can we please assess how many of the already defined PLR labware might be facing the same issue?
I also think I figured out why this hasn’t caused any issues so far:
Because so far only plate_carrier_sites with a skirt have been defined and used in PLR.
Looking at the same plate on one of those sites…
…the gap between the bottom of the plate and the carrier_site_level_1 becomes visible,
and now knowing that the plate_carrier_w_skirt top is actually the surface of the top layer, the dz = 0.75mm
makes sense - only in this special circumstance - because there is indeed only the thickness of the plastic_bottom of the well in between the surface of the carrier_site and the bottom of the well.
This is not the true dz
though as defined above, and hence all labware that uses its “thickness of container base” as its dz
will cause crashes when placed on anything but a carrier_site with a skirt.
Changing the dz
of Cos_96_Rd
to 3.2mm leads to perfect aspirations/dispensation when placed on a flat surface such as the MFX_DWP_module
.
I am not quite sure yet how to permanently correct this issue in PLR.
I do believe though that the dz
value, defined as the distance between the bottom of the plate and the bottom of a well/container, is useful.
But if we keep it we have to add a true thickness_of_container_base variable to every labware that has been generated and add a logic function to plate_carriers_w_a_skirt to calculate the “skirt_adjusted_dz”.
Otherwise this issue will limit the use of PLR to skirted carrier_sites, and require specialised offsets for all other use cases because it will actually use wrong definitions for anything else.