Skip to content

Commit f361568

Browse files
authored
add new corning costar plates (12, 24 and 48 well) (#311)
1 parent a6dfd1e commit f361568

File tree

7 files changed

+183
-72
lines changed

7 files changed

+183
-72
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5151
- `create_carrier_sites`->`create_resources` (`site_size_{x,y}`->`resource_size_{x,y}`) (https://github.com/PyLabRobot/pylabrobot/pull/280)
5252
- `MFXCarrier` takes modules as direct children, instead of having `CarrierSite`s as intermediaries (https://github.com/PyLabRobot/pylabrobot/pull/280)
5353
- `Config.log_dir` is now optional and defaults to None (https://github.com/PyLabRobot/pylabrobot/pull/302)
54+
- Definition of `Cor_6_wellplate_16800ul_Fb` to match the manufacturer spec (https://github.com/PyLabRobot/pylabrobot/pull/311)
5455

5556
### Added
5657

@@ -100,6 +101,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
100101
- `STAR.request_pip_channel_version`
101102
- `STAR.ztouch_probe_z_height_using_channel` for getting z-height by probing without cLLD (https://github.com/PyLabRobot/pylabrobot/pull/260)
102103
- `nest_8_troughplate_22000uL_Vb` and `nest_12_troughplate_15000uL_Vb` (https://github.com/PyLabRobot/pylabrobot/pull/312)
104+
- `Cor_12_wellplate_6900ul_Fb`, `Cor_24_wellplate_3470ul_Fb` and `Cor_48_wellplate_1620ul_Fb` (https://github.com/PyLabRobot/pylabrobot/pull/311)
103105

104106
### Deprecated
105107

@@ -110,6 +112,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
110112
- `Azenta4titudeFrameStar_96_wellplate_skirted` in favor of `Azenta4titudeFrameStar_96_wellplate_200ul_Vb` (https://github.com/PyLabRobot/pylabrobot/pull/205/)
111113
- `Cos_96_DWP_2mL_Vb` in favor of `Cos_96_wellplate_2mL_Vb (https://github.com/PyLabRobot/pylabrobot/pull/205/)`
112114
- Resource definitions with `_L` and `_P`, it is easy enough to use the stem and `.rotated(z=90)` for `_P` (https://github.com/PyLabRobot/pylabrobot/pull/288)
115+
- `Cor_6_wellplate_Fl` (https://github.com/PyLabRobot/pylabrobot/pull/311)
113116

114117
### Fixed
115118

docs/resources/library/corning_costar.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ As of 2014, Corning had five major business sectors: display technologies, envir
1010

1111
| Description | Image | PLR definition |
1212
|--------------------|--------------------|--------------------|
13-
| 'Cos_6_wellplate_16800ul_Fb'<br>Part no.: 3516<br>[manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar%C2%AE-Multiple-Well-Cell-Culture-Plates/p/3516) <br><br>- Material: ? <br>- Cleanliness: 3516: sterilized by gamma irradiation <br>- Nonreversible lids with condensation rings to reduce contamination <br>- Treated for optimal cell attachment <br>- Cell growth area: 9.5 cm² (approx.) <br>- Total volume: 16.8 mL| ![](img/corning_costar/Cos_6_wellplate_16800ul_Fb.jpg) | `Cos_6_wellplate_16800ul_Fb` |
13+
| 'Cos_6_wellplate_16800ul_Fb'<br>Part no.s: <br><ul> <li>[3335 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar%C2%AE-Multiple-Well-Cell-Culture-Plates/p/3335)</li> <li>[3506 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar%C2%AE-Multiple-Well-Cell-Culture-Plates/p/3506)</li> <li>[3516 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar%C2%AE-Multiple-Well-Cell-Culture-Plates/p/3516)</li> <li>[3471 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar%C2%AE-Multiple-Well-Cell-Culture-Plates/p/3471)</li> </ul> <br>- Material: ? <br>- Cleanliness: 3516: sterilized by gamma irradiation <br>- Nonreversible lids with condensation rings to reduce contamination <br>- Treated for optimal cell attachment <br>- Cell growth area: 9.5 cm² (approx.) <br>- Total volume: 16.8 mL | ![](img/corning_costar/Cos_6_wellplate_16800ul_Fb.jpg) | `Cos_6_wellplate_16800ul_Fb` |
14+
| 'Cor_12_wellplate_6900ul_Fb' <br>Part no.s: <br><ul> <li>[3336 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3336)</li> <li>[3512 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3512)</li> <li>[3513 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3513)</li> </ul> <br>- Total volume: 6.9 mL | ![](img/corning_costar/Cor_12_wellplate_6900ul_Fb.jpg) | `Cor_12_wellplate_6900ul_Fb` | | 'Cor_24_wellplate_3470ul_Fb' <br>Part no.s: <br><ul> <li>[3337 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3337)</li> <li>[3524 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3524)</li> <li>[3526 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3526)</li> <li>[3527 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3527)</li> <li>[3473 manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3473)</li> </ul> <br>- Total volume: 3.47 mL | ![](img/corning_costar/Cor_24_wellplate_3470ul_Fb.jpg) | `Cor_24_wellplate_3470ul_Fb` |
15+
| 'Cor_48_wellplate_1620ul_Fb' <br>Part no.: 3548<br>[manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon%C2%AE-96-well-Polystyrene-Microplates/p/3548) <br><br>- Material: TC-treated polystyrene <br>- Cleanliness: sterile <br>- Total volume: 1.62 mL | ![](img/corning_costar/Cor_48_wellplate_1620ul_Fb.jpg) | `Cor_48_wellplate_1620ul_Fb` |
1416
| 'Cos_96_wellplate_2mL_Vb'<br>Part no.: 3516<br>[manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/UK/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar%C2%AE-Multiple-Well-Cell-Culture-Plates/p/3516) <br><br>- Material: Polypropylene <br>- Resistant to many common organic solvents (e.g., DMSO, ethanol, methanol) <br>- 3960: Sterile and DNase- and RNase-free <br>- Total volume: 2 mL <br>- Features uniform skirt heights for greater robotic gripping surface| ![](img/corning_costar/Cos_96_wellplate_2mL_Vb.jpg) | `Cos_96_wellplate_2mL_Vb` |
1517
'Cor_96_wellplate_360ul_Fb' <br>Part no.: 353376<br>[manufacturer website](https://ecatalog.corning.com/life-sciences/b2b/NL/en/Microplates/Assay-Microplates/96-Well-Microplates/Falcon®-96-well-Polystyrene-Microplates/p/353376) <br><br>- Material: TC-treated polystyrene <br> - Cleanliness: sterile <br>- Total volume: 392 uL <br>- Working volume: 25-340 uL | ![](img/corning_costar/Cor_96_wellplate_360ul_Fb.jpg) | `Cor_96_wellplate_360ul_Fb` |
16-
'Cor_6_wellplate_Fl' <br>Part no.: 3471<br>[manufacturer website](https://ecatalog.corning.com/life-sciences/b2c/US/en/Microplates/Assay-Microplates/96-Well-Microplates/Costar®-Multiple-Well-Cell-Culture-Plates/p/3471) | ![](img/corning_costar/Cor_6_wellplate_Fl.jpg) | `Cor_6_wellplate_Fl` |
Loading
Loading
Loading
Binary file not shown.

pylabrobot/resources/corning_costar/plates.py

Lines changed: 177 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -50,39 +50,45 @@ def _compute_height_from_volume_Cos_6_wellplate_16800ul_Fb(
5050
)
5151

5252

53-
def Cos_6_wellplate_16800ul_Fb(name: str, with_lid: bool = True) -> Plate:
54-
"""Corning-Costar 6-well multi-well plate (MWP); product no.: 3516.
55-
- Material: ?
56-
- Cleanliness: 3516: sterilized by gamma irradiation
57-
- Nonreversible lids with condensation rings to reduce contamination
58-
- Treated for optimal cell attachment
59-
- Cell growth area: 9.5 cm² (approx.)
60-
- Total volume: 16.8 mL
53+
def Cor_6_wellplate_16800ul_Fb(name: str, lid: Optional[Lid] = None) -> Plate:
6154
"""
55+
Corning cat. no.s: 3335, 3506, 3516, 3471
56+
"""
57+
BOTTOM_INNER_WELL_RADIUS = 35.43 / 2 # from Corning Product Description
58+
TOP_INNER_WELL_RADIUS = 34.80 / 2 # from Corning Product Description
59+
60+
well_kwargs = {
61+
"size_x": BOTTOM_INNER_WELL_RADIUS * 2,
62+
"size_y": BOTTOM_INNER_WELL_RADIUS * 2,
63+
"size_z": 17.4, # from Corning Product Description
64+
"bottom_type": WellBottomType.FLAT,
65+
"max_volume": 16800, # from Corning Product Description
66+
"compute_volume_from_height": lambda liquid_height: compute_volume_from_height_conical_frustum(
67+
liquid_height, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
68+
),
69+
"compute_height_from_volume": lambda liquid_volume: compute_height_from_volume_conical_frustum(
70+
liquid_volume, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
71+
),
72+
}
73+
6274
return Plate(
6375
name=name,
64-
size_x=127.0,
65-
size_y=86.0,
66-
size_z=20.0,
67-
lid=Cos_6_wellplate_16800ul_Fb_Lid(name=name + "_lid") if with_lid else None,
68-
model="Cos_6_wellplate_16800ul_Fb",
76+
size_x=127.76,
77+
size_y=85.47,
78+
size_z=20.27,
79+
lid=lid,
80+
model=Cor_6_wellplate_16800ul_Fb.__name__,
6981
ordered_items=create_ordered_items_2d(
7082
Well,
7183
num_items_x=3,
7284
num_items_y=2,
73-
dx=7.0,
74-
dy=5.45,
75-
dz=1.35,
76-
item_dx=38.45,
77-
item_dy=38.45,
78-
size_x=35.0,
79-
size_y=35.0,
80-
size_z=17.5,
81-
bottom_type=WellBottomType.FLAT,
82-
material_z_thickness=1.4,
83-
cross_section_type=CrossSectionType.CIRCLE,
84-
compute_volume_from_height=_compute_volume_from_height_Cos_6_wellplate_16800ul_Fb,
85-
compute_height_from_volume=_compute_height_from_volume_Cos_6_wellplate_16800ul_Fb,
85+
dx=24.76 - BOTTOM_INNER_WELL_RADIUS, # from Corning Product Description
86+
dy=23.16 - BOTTOM_INNER_WELL_RADIUS, # from Corning Product Description
87+
dz=2.54, # from Corning Product Description
88+
item_dx=39.12, # from Corning Product Description
89+
item_dy=39.12, # from Corning Product Description
90+
material_z_thickness=1.27, # from Corning Product Description
91+
**well_kwargs,
8692
),
8793
)
8894

@@ -102,6 +108,149 @@ def Cos_6_wellplate_16800ul_Fb_P(name: str, with_lid: bool = True) -> Plate:
102108
)
103109

104110

111+
# # # # # # # # # # Cor_12_wellplate_6900ul_Fb # # # # # # # # # #
112+
113+
114+
def Cor_12_wellplate_6900ul_Fb(name: str, lid: Optional[Lid] = None) -> Plate:
115+
"""
116+
Corning cat. no.s: 3336, 3512, 3513
117+
118+
not validated
119+
"""
120+
BOTTOM_INNER_WELL_RADIUS = 22.73 / 2 # from Corning Product Description
121+
TOP_INNER_WELL_RADIUS = 22.11 / 2 # from Corning Product Description
122+
123+
well_kwargs = {
124+
"size_x": BOTTOM_INNER_WELL_RADIUS * 2,
125+
"size_y": BOTTOM_INNER_WELL_RADIUS * 2,
126+
"size_z": 17.5, # from Corning Product Description
127+
"bottom_type": WellBottomType.FLAT,
128+
"max_volume": 6900, # from Corning Product Description
129+
"compute_volume_from_height": lambda liquid_height: compute_volume_from_height_conical_frustum(
130+
liquid_height, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
131+
),
132+
"compute_height_from_volume": lambda liquid_volume: compute_height_from_volume_conical_frustum(
133+
liquid_volume, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
134+
),
135+
}
136+
137+
return Plate(
138+
name=name,
139+
size_x=127.76, # from Corning Product Description
140+
size_y=85.6, # from Corning Product Description
141+
size_z=20.02, # from Corning Product Description
142+
lid=lid,
143+
model=Cor_12_wellplate_6900ul_Fb.__name__,
144+
ordered_items=create_ordered_items_2d(
145+
Well,
146+
num_items_x=4,
147+
num_items_y=3,
148+
dx=24.94 - TOP_INNER_WELL_RADIUS, # from Corning Product Description
149+
dy=16.79 - TOP_INNER_WELL_RADIUS, # from Corning Product Description
150+
dz=2.16, # from Corning Product Description
151+
item_dx=26.01, # from Corning Product Description
152+
item_dy=26.01, # from Corning Product Description
153+
material_z_thickness=1.27, # from Corning Product Description
154+
**well_kwargs,
155+
),
156+
)
157+
158+
159+
# # # # # # # # # # Cor_24_wellplate_3470ul_Fb # # # # # # # # # #
160+
161+
162+
def Cor_24_wellplate_3470ul_Fb(name: str, lid: Optional[Lid] = None) -> Plate:
163+
"""
164+
Corning cat. no.s: 3337, 3524, 3526, 3527, 3473
165+
https://www.corning.com/catalog/cls/documents/drawings/MD_Microplate_Dimension_Sheets_Multiple_Well.pdf
166+
"""
167+
BOTTOM_INNER_WELL_RADIUS = 16.26 / 2 # from Corning Product Description
168+
TOP_INNER_WELL_RADIUS = 15.62 / 2 # from Corning Product Description
169+
170+
well_kwargs = {
171+
"size_x": BOTTOM_INNER_WELL_RADIUS * 2,
172+
"size_y": BOTTOM_INNER_WELL_RADIUS * 2,
173+
"size_z": 17.4, # from Corning Product Description
174+
"bottom_type": WellBottomType.FLAT,
175+
"max_volume": 3400, # website
176+
"compute_volume_from_height": lambda liquid_height: compute_volume_from_height_conical_frustum(
177+
liquid_height, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
178+
),
179+
"compute_height_from_volume": lambda liquid_volume: compute_height_from_volume_conical_frustum(
180+
liquid_volume, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
181+
),
182+
}
183+
184+
return Plate(
185+
name=name,
186+
size_x=127.76, # from Corning Product Description
187+
size_y=85.47, # from Corning Product Description
188+
size_z=20.27, # from Corning Product Description
189+
lid=lid,
190+
model=Cor_24_wellplate_3470ul_Fb.__name__,
191+
ordered_items=create_ordered_items_2d(
192+
Well,
193+
num_items_x=6,
194+
num_items_y=4,
195+
dx=17.46 - TOP_INNER_WELL_RADIUS, # from Corning Product Description
196+
dy=13.78 - TOP_INNER_WELL_RADIUS, # from Corning Product Description
197+
dz=2.54, # from Corning Product Description
198+
item_dx=19.3, # from Corning Product Description
199+
item_dy=19.3, # from Corning Product Description
200+
material_z_thickness=1.27, # from Corning Product Description
201+
**well_kwargs,
202+
),
203+
)
204+
205+
206+
# # # # # # # # # # Cor_48_wellplate_1620ul_Fb # # # # # # # # # #
207+
208+
209+
def Cor_48_wellplate_1620ul_Fb(name: str, lid: Optional[Lid] = None) -> Plate:
210+
"""
211+
Corning cat. no.s: 3548
212+
213+
not validated
214+
"""
215+
BOTTOM_INNER_WELL_RADIUS = 11.56 / 2 # from Corning Product Description
216+
TOP_INNER_WELL_RADIUS = 11.05 / 2 # from Corning Product Description
217+
218+
well_kwargs = {
219+
"size_x": BOTTOM_INNER_WELL_RADIUS * 2,
220+
"size_y": BOTTOM_INNER_WELL_RADIUS * 2,
221+
"size_z": 17.4, # from Corning Product Description
222+
"bottom_type": WellBottomType.FLAT,
223+
"max_volume": 1620, # from Corning Product Description
224+
"compute_volume_from_height": lambda liquid_height: compute_volume_from_height_conical_frustum(
225+
liquid_height, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
226+
),
227+
"compute_height_from_volume": lambda liquid_volume: compute_height_from_volume_conical_frustum(
228+
liquid_volume, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
229+
),
230+
}
231+
232+
return Plate(
233+
name=name,
234+
size_x=127.76, # from Corning Product Description
235+
size_y=85.6, # from Corning Product Description
236+
size_z=20.02, # from Corning Product Description
237+
lid=lid,
238+
model=Cor_48_wellplate_1620ul_Fb.__name__,
239+
ordered_items=create_ordered_items_2d(
240+
Well,
241+
num_items_x=8,
242+
num_items_y=6,
243+
dx=18.16 - TOP_INNER_WELL_RADIUS, # from Corning Product Description
244+
dy=10.08 - TOP_INNER_WELL_RADIUS, # from Corning Product Description
245+
dz=2.87, # from Corning Product Description
246+
item_dx=13.08, # from Corning Product Description
247+
item_dy=13.08, # from Corning Product Description
248+
material_z_thickness=1.27, # from Corning Product Description
249+
**well_kwargs,
250+
),
251+
)
252+
253+
105254
# # # # # # # # # # Cos_96_wellplate_2mL_Vb # # # # # # # # # #
106255

107256

@@ -281,48 +430,6 @@ def Cor_96_wellplate_360ul_Fb(name: str, with_lid: bool = False) -> Plate:
281430
)
282431

283432

284-
# # # # # # # # # # Cor_6_wellplate_Fl # # # # # # # # # #
285-
286-
287433
def Cor_6_wellplate_Fl(name: str, lid: Optional[Lid] = None) -> Plate:
288-
"""
289-
Corning cat. no.: 3471
290-
- Material: Polystyrene
291-
- Tissue culture treated: No
292-
"""
293-
BOTTOM_INNER_WELL_RADIUS = 34.798 / 2 # from Corning Product Description
294-
TOP_INNER_WELL_RADIUS = 35.433 / 2 # from Corning Product Description
295-
296-
well_kwargs = {
297-
"size_x": BOTTOM_INNER_WELL_RADIUS * 2,
298-
"size_y": BOTTOM_INNER_WELL_RADIUS * 2,
299-
"size_z": 17.399, # from Corning Product Description
300-
"bottom_type": WellBottomType.FLAT,
301-
"max_volume": 16.850, # calculated
302-
"compute_volume_from_height": lambda liquid_height: compute_volume_from_height_conical_frustum(
303-
liquid_height, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
304-
),
305-
"compute_height_from_volume": lambda liquid_volume: compute_height_from_volume_conical_frustum(
306-
liquid_volume, BOTTOM_INNER_WELL_RADIUS, TOP_INNER_WELL_RADIUS
307-
),
308-
}
309-
310-
return Plate(
311-
name=name,
312-
size_x=127.762, # from Corning Product Description
313-
size_y=85.471, # from Corning Product Description
314-
size_z=22.6314, # from Corning Product Description
315-
lid=lid,
316-
model=Cor_6_wellplate_Fl.__name__,
317-
ordered_items=create_ordered_items_2d(
318-
Well,
319-
num_items_x=3,
320-
num_items_y=2,
321-
dx=7.5, # measured
322-
dy=6.3, # measured
323-
dz=1.8, # calibrated manually by z-stepping down using a pipette.
324-
item_dx=39, # measured
325-
item_dy=39, # measured
326-
**well_kwargs,
327-
),
328-
)
434+
# https://github.com/PyLabRobot/pylabrobot/issues/313
435+
raise NotImplementedError("deprecated. use Cor_6_wellplate_16800ul_Fb instead")

0 commit comments

Comments
 (0)