|
| 1 | +""" Greiner plates """ |
| 2 | + |
| 3 | +from pylabrobot.resources.plate import Lid, Plate |
| 4 | +from pylabrobot.resources.utils import create_ordered_items_2d |
| 5 | +from pylabrobot.resources.well import ( |
| 6 | + CrossSectionType, |
| 7 | + Well, |
| 8 | + WellBottomType, |
| 9 | +) |
| 10 | + |
| 11 | +# # # # # # # # # # Greiner_384_wellplate_28ul_Fb # # # # # # # # # # |
| 12 | + |
| 13 | + |
| 14 | +def _compute_volume_from_height_Greiner_384_wellplate_28ul_Fb(h: float) -> float: |
| 15 | + """Estimate liquid volume (µL) from observed liquid height (mm) |
| 16 | + in the Greiner 384 wellplate 28ul Fb, using piecewise linear interpolation. |
| 17 | + """ |
| 18 | + raise NotImplementedError( |
| 19 | + "Computation of volume from height is not currently defined. " |
| 20 | + "It is difficult (perhaps impossible?) to robustly perform liquid " |
| 21 | + "level detection in such a small well AND such low volumes." |
| 22 | + ) |
| 23 | + |
| 24 | + |
| 25 | +def _compute_height_from_volume_Greiner_384_wellplate_28ul_Fb(volume_ul: float) -> float: |
| 26 | + """Estimate liquid height (mm) from known liquid volume (µL) |
| 27 | + in the Greiner 384 wellplate 28ul Fb, using piecewise linear interpolation. |
| 28 | + """ |
| 29 | + raise NotImplementedError( |
| 30 | + "Computation of height from volume is not currently defined. " |
| 31 | + "It is difficult (perhaps impossible?) to robustly perform liquid " |
| 32 | + "level detection in such a small well AND such low volumes." |
| 33 | + ) |
| 34 | + |
| 35 | + |
| 36 | +def Greiner_384_wellplate_28ul_Fb_Lid(name: str) -> Lid: |
| 37 | + raise NotImplementedError("This lid is not currently defined.") |
| 38 | + |
| 39 | + |
| 40 | +#: Greiner_384_wellplate_28ul_Fb |
| 41 | +def Greiner_384_wellplate_28ul_Fb(name: str, with_lid: bool = False) -> Plate: |
| 42 | + """Greiner cat. no.: 784075. |
| 43 | + - Colour: white |
| 44 | + - alternative cat. no.: 784075-25: white; 784076, 784076-25: black; 784101: clear. |
| 45 | + - Material: Polystyrene |
| 46 | + - "shallow-well" |
| 47 | + - Sterilized: No |
| 48 | + - Autoclavable: No |
| 49 | + - Chemical resistance:? |
| 50 | + - Thermal resistance: ? |
| 51 | + - Surface treatment: non-treated |
| 52 | + - Sealing options: ? |
| 53 | + - Cleanliness: "Free of detectable DNase, RNase, human DNA" |
| 54 | + - Automation compatibility: not specifically declared |
| 55 | + - Total volume = 28 ul |
| 56 | + - URL: https://shop.gbo.com/en/england/products/bioscience/microplates/384-well-microplates/384-well-small-volume-hibase-microplates/784075.html |
| 57 | + """ |
| 58 | + return Plate( |
| 59 | + name=name, |
| 60 | + size_x=127.76, |
| 61 | + size_y=85.48, |
| 62 | + size_z=14.4, |
| 63 | + lid=Greiner_384_wellplate_28ul_Fb_Lid(name + "_lid") if with_lid else None, |
| 64 | + model=Greiner_384_wellplate_28ul_Fb.__name__, |
| 65 | + ordered_items=create_ordered_items_2d( |
| 66 | + Well, |
| 67 | + num_items_x=24, |
| 68 | + num_items_y=16, |
| 69 | + dx=10.48 - 0.2, # physical testing shows -0.2mm deviation from OEM technical drawing |
| 70 | + dy=7.34, |
| 71 | + dz=8.9, |
| 72 | + item_dx=4.5, |
| 73 | + item_dy=4.5, |
| 74 | + size_x=3.3, |
| 75 | + size_y=3.3, |
| 76 | + size_z=5.5, |
| 77 | + bottom_type=WellBottomType.FLAT, |
| 78 | + material_z_thickness=0.9, |
| 79 | + cross_section_type=CrossSectionType.CIRCLE, |
| 80 | + # compute_volume_from_height=_compute_volume_from_height_Greiner_384_wellplate_28ul_Fb, |
| 81 | + # compute_height_from_volume=_compute_height_from_volume_Greiner_384_wellplate_28ul_Fb, |
| 82 | + ), |
| 83 | + ) |
0 commit comments