Skip to content

Conversation

@BioCam
Copy link
Collaborator

@BioCam BioCam commented Dec 2, 2025

No description provided.

@BioCam BioCam requested a review from rickwierenga December 2, 2025 18:32
Comment on lines +15 to +49
# _Greiner_384_wellplate_28ul_Fb_height_to_volume_measurements = {
# 0.0: 0.0, # height in mm : volume in µL
# 2.2: 3.0,
# 3.5: 5.0,
# 4.0: 8.0,
# 4.7: 11.0,
# 5.2: 15.0,
# 5.6: 20.0,
# 6.0: 25.0,
# 5.5: 28.0,
# }
# _Greiner_384_wellplate_28ul_Fb_volume_to_height_measurements = {
# v: k for k, v in _Greiner_384_wellplate_28ul_Fb_height_to_volume_measurements.items()
# }


def _compute_volume_from_height_Greiner_384_wellplate_28ul_Fb(h: float) -> float:
"""Estimate liquid volume (µL) from observed liquid height (mm)
in the Greiner 384 wellplate 28ul Fb, using piecewise linear interpolation.
"""
# if h < 0:
# raise ValueError("Height must be ≥ 0 mm.")
# if h > 5.5 * 1.05:
# raise ValueError(f"Height {h} is too large for Greiner_384_wellplate_28ul_Fb.")

# vol_ul = interpolate_1d(
# h, _Greiner_384_wellplate_28ul_Fb_height_to_volume_measurements, bounds_handling="error"
# )
# return round(max(0.0, vol_ul), 3)
raise NotImplementedError(
"Computation of volume from height is not currently defined. "
"It is difficult (perhaps impossible?) to robustly perform liquid "
"level detection in such a small well AND such low volumes."
)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it defined or not?

Copy link
Collaborator Author

@BioCam BioCam Dec 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is defined but the cLLD capabilities of the STAR keep failing - I take at least 3 cLLD measurements for each point at the calibration curve, occasionally our STAR manages to take one measurement down to 8uL, and fails in the repeats - interpretation: the well geometry and low volume together create a "charge dissipation" target that is not being recognised by the charge sensor.

Keeping this commented out code, would mean others can try as well and test whether their system is more sensitive, and compare.

This might be interesting to see with the Zeus X1 pipettes 👀

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we should be checking in uncommented code because it is very vague what the purpose of it is, and it's not discoverable. does that mean the measurements are also inaccurate? if so, we should not have this code. if not, why not have it as real code and then have a warning saying "clld on star does not work on this container"? that way people can use/debug as they like

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah fair enough, I wanted to highlight somehow that someone has previously tried cLLD on this well instance and found the STAR is not capable of detecting it - fighting people's tendency to leave out very useful negative data.

But if it's not clear then, I agree, there's no point 😅

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah fair enough, I wanted to highlight somehow that someone has previously tried cLLD on this well instance and found the STAR is not capable of detecting it - fighting people's tendency to leave out very useful negative data.

But if it's not clear then, I agree, there's no point 😅

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove it?

Comment on lines +69 to +80
def Greiner_384_wellplate_28ul_Fb_Lid(name: str) -> Lid:
raise NotImplementedError("This lid is not currently defined.")
# See https://github.com/PyLabRobot/pylabrobot/pull/161.
# return Lid(
# name=name,
# size_x=127.76,
# size_y=85.48,
# size_z=None, # measure the total z height
# nesting_z_height=None, # measure overlap between lid and plate
# model="Greiner_384_wellplate_28ul_Fb_Lid",
# )

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why have this commented out def?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that is actually just the copy from all definitions - I am not sure why I found them like this originally a long time ago, but I assumed it's for information purposes?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not all, but many are commented out because we know the part that exists is correct but they were missing the nesting_z_height parameter which you added in #161 . are the size x and y correct here? if so we can keep it in anticipation of someone adding the missing parameters

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.

2 participants