Update Corning 3603 with empirical cLLD height_volume_data#948
Merged
BioCam merged 4 commits intoPyLabRobot:mainfrom Mar 20, 2026
Merged
Conversation
Replace geometry-based compute functions with a pre-calculated `height_volume_data` dict derived from the tech drawing frustum (6.35→6.86 mm taper). Volumes chosen for easy pipetting; heights to be replaced with empirical LLD measurements next
Replace pre-calculated frustum geometry with empirical cLLD measurements for the Corning 3603 96-well plate. Dead volume comment clarified. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Member
|
back link to original PR: #722 |
rickwierenga
approved these changes
Mar 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Migrate
Cor_96_wellplate_360ul_Fb(Corning 3603) from the old geometry-basedcompute_volume_from_height/compute_height_from_volumeclosure functions to a first-classheight_volume_datadict (introduced in #938), populated with empirical cLLD measurements taken on a Hamilton STAR.The Problem
The previous model used
calculate_liquid_volume_container_1segment_round_fbottom— a pure cylinder approximation with constant diameterd=6.86 mm. According to the Corning tech drawing (DWG00121 Rev D), the well actually tapers from ⌀6.35 mm (bottom) to ⌀6.86 mm (top) over a 10.67 mm depth — a frustum, not a cylinder.Even the geometrically correct frustum model overestimates volume by +2 to +16 µL across the working range compared to empirical measurements. This is expected: injection-molded polystyrene wells don't follow perfect mathematical geometry — wall draft angles, fillet radii at the bottom-wall junction, and material shrinkage all contribute to deviations that no closed-form model can capture.
The Corning 3603 is actually a good case study because the well geometry is theoretically perfectly understood (frustum of a cone with known top/bottom diameters), yet still shows systematic deviation from the physical reality. The cylinder model (old) overestimates by +12 to +45 µL (+12–25%), while the frustum cross-reference overestimates by +2 to +16 µL (+4–8%). Only empirical calibration data can close this gap.
There may be small measurement errors in the empirical data (cLLD detection edge, meniscus effects at low volumes), but piecewise-linear interpolation over 9 calibration points at pipettable volumes provides far better accuracy than any geometric model.
PR Content/Solution
_compute_*_Cor_96_wellplate_360ul_Fbclosure functions and unusedcalculate_liquid_*_1segment_round_fbottomimports._cor_96_wellplate_360ul_Fb_height_volume_datadict with 10 empirical calibration points (height mm → volume µL) measured via cLLD on a Hamilton STAR:height_volume_data=to theWellconstructor, leveraging the auto-generation from Addheight_volume_dataattribute toContainerwith piecewise-linear interpolation #938.Cylinder vs Frustum vs Empirical comparison
🤖 Generated with Claude Code