Almost-equivalent plate naming convention

question about the plate naming convention:

we use these two plates:

which have the same dimensions/volume etc. (you can nicely find this information on those webpages)

P96-1.5H-N exists in PLR as CellVis_96_wellplate_350uL_Fb. I wanted to add P96-1.5P, but what’s the ideal way to name this?

One compelling option is to allow a free suffix, so we could have:

  • CellVis_96_wellplate_350uL_Fb_Plastic
  • CellVis_96_wellplate_350uL_Fb_Glass
1 Like

We did say we can add a “_miscellaneous” suffix to plates that are otherwise described the same way with the current Plate naming convention


But why do you want to store them as separate resource definition functions?

If 2 resources have identical dimensions they are, from PLR’s current physical modelling perspective, identical.
i.e. different colours or materials would be stored as “variants” (currently in the docstring) of the same resource definition function :slight_smile:

one very minor difference: material_z_height is 0.175 mm for polymer, 0.170 for glass

i will go ahead with this then

2 Likes

I love how PLR has now evolved to discuss decisions on 0.005 mm z-axis dimensional accuracy :flexed_biceps:

(even when I was doing cleanroom work on nano-lithography processes 5 nm was considered “extreme” :eyes:)

So let’s get into it a bit more because there is more to it then might appear on the surface


For people who might ask: “Why does that matter?”:

For most liquid handlers it doesn’t. The STAR systems, for example, round movement of channels or resources to 0.1 mm at the firmware level (even if the motors on the machine have a smaller step size).

But these plates are clearly designed for microscopy/imaging applications!
(?)
And PLR is not just about liquid handling :slight_smile:
So the question is:
@rickwierenga, have you encountered issues with imaging which could be solved by having two separate plate definition functions, with the only difference being a material_z_thickness difference of 5 nm?

Looking at machine capabilities constraining utility of such definition accuracy:

The PLR-integrated Cytation 5 apparently has a z-stack resolution of 0.1 mm too (Agilent white paper page 5).
This means 0.005 mm precision doesn’t make a difference.

But we will integrate more precise imaging systems in the future.
So let’s take a classic Nikon microscope: it achieves z-dimension movement resolutions of 0.05 mm.
The likelihood of 0.005 mm definition difference being important increases but is still very low.

Looking at manufacturer-declared significance of mean dimensions and their variability

The manufacturer sites actually state:

  • cover glass thickness = 0.170±0.005mm
  • glass-like polymer coverslip = 0.175±0.010mm

Quickly modelled out:

Simple analysis:

  • Cohen’s d = 0.63
    → This indicates a moderate to large effect size, meaning the difference between the means is meaningful relative to the spread.
  • Overlap Coefficient (OVL) ≈ 0.61
    → About 61% of the two distributions overlap, suggesting there is considerable but not complete similarity.
  • Kolmogorov–Smirnov (K-S) test
    KS statistic = 0.376, p-value ≈ 2.5e-63
    → This is a highly significant result, indicating that the two distributions are statistically different.

My suggestion

There is a difference between the manufacturer-declared material_z_thickness (i.e. the bottom of the wells that light has to pass through).
But it doesn’t seem like any imaging device would realistically be affected by it.

I therefore believe a single definition with variant information in its metadata should be sufficient.

1 Like

you have proved indisputably that there is no practical difference, for this particular plate

however, for the naming convention, we have to think about the general case

do we require people to run a physical analysis? at what p-level will we accept a shared definition? what statistical test. this gets into scientist territory which is sketchy

also, what if we had 3 plates: A is very similar to B (p<0.05), B to C (p<0.05), but A to C is p>0.05?

1 Like
  1. I am a scientist :eyes: :rofl:
  2. I am also an engineer, and engineers perform, based on personal experience, much more thorough analyses - on average - for their testing. e.g. power analyses are very common in engineering while in science you see them rarely outside of clinical trials
 fun fact: they are valid anywhere

But the point of the significance analysis was more to assess in the first place whether there is a difference based on the variance of the manufacturer-declared dimension of the material_z_thickness. Or in more engineering-y terms, are they within tolerance of each other?

But jokes aside: in practice we should simply distinguish by what actually affects our machines!

If we have 3 plates, all similar in various dimensions by just a little bit, use them and see whether there is a difference in behaviour with specific machines:

  • imager: is there a difference in focal height
  • liquid handler: will the same channel crash when aspirating from the cavity_bottom of wells from the 3 different plates

As a rule of thumb, based on the precision of the STAR and the Cytation 5, I would set a threshold on ± 0.2 mm.

Agreed, an updated naming convention for each resource type would be really helpful for the PLR Resource Library update as well

1 Like

A = 0.1, B = 0.3, C = 0.5. A and B are allowed to share a definition, as do B and C, but it’s only clear that only B is allowed for all after you get C. Introduce D = 0.7 and no definition works.

your argument would imply we can use a single plate definition for all plates, given we can introduce a finite number of ‘intermediary’ plates all ‘equivalent’ to each other!

This is only for pairwise comparison
 after all how likely is it that more than 2 plates vary in this format 
 + all the other dimensions and metadata that would require generation of a new resource definition function?

i.e. as soon as any other dimension isn’t exactly the same this all becomes void and we require separate definitions anyway
Same goes for when the manufacturer changes, the WellBottomType changes, the CrossSectionProfile changes, 


In this incredibly unlikely scenario: we can simply generate clusters of definitions that work together?

no we can’t: how to think about the A, B, C, D example above?

equivalence function without the transitive property :thinking:

not truly any other dimension, same argument applies in x-space

but i concede that i shouldn’t have said “all plates” but rather “all plates for which name X is acceptable”

In the end, what really matters is real-world functionality with minimal maintenance cost and maximal cross-environment readiness:

One possibility:
A = 0.1, B = 0.3, C = 0.5. A, D = 0.7

→ define 0.2 for cluster [A, B]
→ define 0.6 for cluster [C, D]

Then test whether this works?

This is oversimplified as well, because these are just means without tolerances.

I think you are raising a good point, i.e. the main point of this thread:

How do we update our current naming convention, in general, keeping limited namespace in coding in mind and balancing it with human-readability and utility?

Big question, and I think our previous solution has been working well so far but we know it is not bulletproof and we should continue brainstorming and updating when we have a good alternative.

I’ll throw in a contrary view - have a virtual get_unique_name() function on the base class, and have it return "<manufacturer>__<unique_manufacturer_id_for_plate>" in an implementation (ie. in class Plate).

Maybe throw in the well number (96w etc) in there for readability.

PLR is plate-agnostic in the sense that it can use any plate. So it is the user’s responsibility to know what they are doing, or looking for. Taking that to an extreme - Plate definitions should not be in PLR at all, only the classes that describe them (being radical this morning!).

If you try and capture all meta-information in a name, it is going to be a bit Goedel’s theorem at some point. Any description will at some point become incomplete.

Cheers
w