From e44d776cc392faf838a84eeff3cade15bf51ea3d Mon Sep 17 00:00:00 2001 From: harley-pioneer Date: Tue, 20 Jan 2026 16:26:04 -0800 Subject: [PATCH 1/6] add plate definition for nalgene reservoir --- pylabrobot/resources/thermo_fisher/plates.py | 32 ++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/pylabrobot/resources/thermo_fisher/plates.py b/pylabrobot/resources/thermo_fisher/plates.py index 1126af5dc4a..e1cbf71155e 100644 --- a/pylabrobot/resources/thermo_fisher/plates.py +++ b/pylabrobot/resources/thermo_fisher/plates.py @@ -421,3 +421,35 @@ def thermo_nunc_1_wellplate_90000uL_Fb_omnitray(name: str) -> Plate: # compute_height_from_volume=None, ), ) + + +def Thermo_TS_Nalgene_reservoir_300mL_Fb(name: str) -> Plate: + """Thermo Fisher Scientific Nalgene 300mL Flat Bottom Reservoir + - Product Number: 12001300 (non-sterile), 12001301 (sterile) + - 1-well reservoir with SBS footprint + - Max Volume: 300 mL + - manufacturer_link: https://www.fishersci.com/shop/products/nalgene-disposable-polypropylene-robotic-reservoirs/12565572 + - Spec sheet info: https://assets.fishersci.com/TFS-Assets/LCD/Schematics-&-Diagrams/120013XX_0405.PDF + """ + return Plate( + name=name, + size_x=127.8, #from spec + size_y=85.5, #from spec + size_z=39.9, #from spec + model="Thermo_TS_Nalgene_reservoir_300mL_Fb", + ordered_items=create_ordered_items_2d(Well, + num_items_x=1, #from spec + num_items_y=1, #from spec + dx=(127.8-123.8)/2, #from spec + dy=(85.5-82.1)/2, #from spec + dz=3.3, #from spec + item_dx=0, #from spec + item_dy=0, #from spec + size_x=123.8, #from spec + size_y=82.1, #from spec + size_z=39.9, #from spec + bottom_type=WellBottomType.FLAT, #from spec + cross_section_type=CrossSectionType.RECTANGLE, #rectangle wells + material_z_thickness=1.15 #measured. + ), + ) From 60d5e621fc909abd37728f56020e3c6c70fb8484 Mon Sep 17 00:00:00 2001 From: harley-pioneer Date: Tue, 20 Jan 2026 16:27:53 -0800 Subject: [PATCH 2/6] added header to plates.py for organization --- pylabrobot/resources/thermo_fisher/plates.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pylabrobot/resources/thermo_fisher/plates.py b/pylabrobot/resources/thermo_fisher/plates.py index e1cbf71155e..afa338c0c16 100644 --- a/pylabrobot/resources/thermo_fisher/plates.py +++ b/pylabrobot/resources/thermo_fisher/plates.py @@ -423,6 +423,9 @@ def thermo_nunc_1_wellplate_90000uL_Fb_omnitray(name: str) -> Plate: ) +# # # # # # # # # # Thermo_TS_Nalgene_reservoir_300mL_Fb # # # # # # # # # # + + def Thermo_TS_Nalgene_reservoir_300mL_Fb(name: str) -> Plate: """Thermo Fisher Scientific Nalgene 300mL Flat Bottom Reservoir - Product Number: 12001300 (non-sterile), 12001301 (sterile) From fce5bca0d497249bc946db2589d074febfbd17ad Mon Sep 17 00:00:00 2001 From: harley-pioneer Date: Tue, 20 Jan 2026 16:37:34 -0800 Subject: [PATCH 3/6] added picture and info to resource library --- .../Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg | Bin 0 -> 37185 bytes docs/resources/library/thermo_fisher.md | 1 + 2 files changed, 1 insertion(+) create mode 100644 docs/resources/library/img/thermo_fisher/Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg diff --git a/docs/resources/library/img/thermo_fisher/Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg b/docs/resources/library/img/thermo_fisher/Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c4b6ea5222cdcc2e755b13c0dc462a83a4ea48e6 GIT binary patch literal 37185 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 literal 0 HcmV?d00001 diff --git a/docs/resources/library/thermo_fisher.md b/docs/resources/library/thermo_fisher.md index 5e3d30c3cd0..6e778e5b8df 100644 --- a/docs/resources/library/thermo_fisher.md +++ b/docs/resources/library/thermo_fisher.md @@ -34,6 +34,7 @@ Thermo Fisher Scientific Inc. (TFS, aka "Thermo") | 'thermo_AB_96_wellplate_300ul_Vb_MicroAmp'
Part no.: N8010560/4316813 (w/o barcode)
Part no.: 4306737/4326659 (with barcode) | ![](img/thermo_fisher/thermo_AB_96_wellplate_300ul_Vb_MicroAmp.webp) | `thermo_AB_96_wellplate_300ul_Vb_MicroAmp` | | 'thermo_AB_384_wellplate_40uL_Vb_MicroAmp'
Part no.: 4309849, 4326270, 4343814 (with barcode), 4343370 (w/o barcode). | ![](img/thermo_fisher/thermo_AB_384_wellplate_40uL_Vb_MicroAmp.jpg) | `thermo_AB_384_wellplate_40uL_Vb_MicroAmp` | | 'thermo_nunc_1_wellplate_90000uL_Fb_omnitray'
Part no.: 165218, 140156, 242811, 264728 | ![](img/thermo_fisher/thermo_nunc_1_wellplate_90000uL_Fb_omnitray.jpg.avif) | `thermo_nunc_1_wellplate_90000uL_Fb_omnitray` | +| 'Thermo_TS_Nalgene_reservoir_300mL_Fb'
Part no.: 12001300 (non-sterile), 12001301 (sterile)
[manufacturer website](https://www.fishersci.com/shop/products/nalgene-disposable-polypropylene-robotic-reservoirs/12565571)| ![](img/thermo_fisher/Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg) | `Thermo_TS_Nalgene_reservoir_300mL_Fb` | ## Troughs From 28ab43fe278b123f42e808ee4ab83313c2428c7c Mon Sep 17 00:00:00 2001 From: harley-pioneer Date: Tue, 20 Jan 2026 16:45:51 -0800 Subject: [PATCH 4/6] reformat with ruff --- pylabrobot/resources/thermo_fisher/plates.py | 35 ++++++++++---------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/pylabrobot/resources/thermo_fisher/plates.py b/pylabrobot/resources/thermo_fisher/plates.py index afa338c0c16..1576b6e2684 100644 --- a/pylabrobot/resources/thermo_fisher/plates.py +++ b/pylabrobot/resources/thermo_fisher/plates.py @@ -436,23 +436,24 @@ def Thermo_TS_Nalgene_reservoir_300mL_Fb(name: str) -> Plate: """ return Plate( name=name, - size_x=127.8, #from spec - size_y=85.5, #from spec - size_z=39.9, #from spec + size_x=127.8, # from spec + size_y=85.5, # from spec + size_z=39.9, # from spec model="Thermo_TS_Nalgene_reservoir_300mL_Fb", - ordered_items=create_ordered_items_2d(Well, - num_items_x=1, #from spec - num_items_y=1, #from spec - dx=(127.8-123.8)/2, #from spec - dy=(85.5-82.1)/2, #from spec - dz=3.3, #from spec - item_dx=0, #from spec - item_dy=0, #from spec - size_x=123.8, #from spec - size_y=82.1, #from spec - size_z=39.9, #from spec - bottom_type=WellBottomType.FLAT, #from spec - cross_section_type=CrossSectionType.RECTANGLE, #rectangle wells - material_z_thickness=1.15 #measured. + ordered_items=create_ordered_items_2d( + Well, + num_items_x=1, # from spec + num_items_y=1, # from spec + dx=(127.8 - 123.8) / 2, # from spec + dy=(85.5 - 82.1) / 2, # from spec + dz=3.3, # from spec + item_dx=0, # from spec + item_dy=0, # from spec + size_x=123.8, # from spec + size_y=82.1, # from spec + size_z=39.9, # from spec + bottom_type=WellBottomType.FLAT, # from spec + cross_section_type=CrossSectionType.RECTANGLE, # rectangle wells + material_z_thickness=1.15, # measured. ), ) From 1fedc77ff8da9ee7bea0695d07671d10c9a7f041 Mon Sep 17 00:00:00 2001 From: harley-pioneer Date: Wed, 21 Jan 2026 15:52:11 -0800 Subject: [PATCH 5/6] updated size_z --- pylabrobot/resources/thermo_fisher/plates.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pylabrobot/resources/thermo_fisher/plates.py b/pylabrobot/resources/thermo_fisher/plates.py index 1576b6e2684..065272be09a 100644 --- a/pylabrobot/resources/thermo_fisher/plates.py +++ b/pylabrobot/resources/thermo_fisher/plates.py @@ -451,7 +451,7 @@ def Thermo_TS_Nalgene_reservoir_300mL_Fb(name: str) -> Plate: item_dy=0, # from spec size_x=123.8, # from spec size_y=82.1, # from spec - size_z=39.9, # from spec + size_z=39.9 - 3.3 - 1.15, # from spec/calculated bottom_type=WellBottomType.FLAT, # from spec cross_section_type=CrossSectionType.RECTANGLE, # rectangle wells material_z_thickness=1.15, # measured. From b2f7c67116a478ae880d01813b925069c65df11f Mon Sep 17 00:00:00 2001 From: harley-pioneer Date: Thu, 22 Jan 2026 08:51:35 -0800 Subject: [PATCH 6/6] changed from reservoir to troughplate based on naming convention, reformatted file, updated resource library docs --- ...hermo_TS_Nalgene_1_troughplate_300000uL_Fb.jpeg} | Bin docs/resources/library/thermo_fisher.md | 2 +- pylabrobot/resources/thermo_fisher/plates.py | 8 +++++--- 3 files changed, 6 insertions(+), 4 deletions(-) rename docs/resources/library/img/thermo_fisher/{Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg => Thermo_TS_Nalgene_1_troughplate_300000uL_Fb.jpeg} (100%) diff --git a/docs/resources/library/img/thermo_fisher/Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg b/docs/resources/library/img/thermo_fisher/Thermo_TS_Nalgene_1_troughplate_300000uL_Fb.jpeg similarity index 100% rename from docs/resources/library/img/thermo_fisher/Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg rename to docs/resources/library/img/thermo_fisher/Thermo_TS_Nalgene_1_troughplate_300000uL_Fb.jpeg diff --git a/docs/resources/library/thermo_fisher.md b/docs/resources/library/thermo_fisher.md index d8c1603fa7b..c2761f5354c 100644 --- a/docs/resources/library/thermo_fisher.md +++ b/docs/resources/library/thermo_fisher.md @@ -34,7 +34,7 @@ Thermo Fisher Scientific Inc. (TFS, aka "Thermo") | 'thermo_AB_96_wellplate_300ul_Vb_MicroAmp'
Part no.: N8010560/4316813 (w/o barcode)
Part no.: 4306737/4326659 (with barcode) | ![](img/thermo_fisher/thermo_AB_96_wellplate_300ul_Vb_MicroAmp.webp) | `thermo_AB_96_wellplate_300ul_Vb_MicroAmp` | | 'thermo_AB_384_wellplate_40uL_Vb_MicroAmp'
Part no.: 4309849, 4326270, 4343814 (with barcode), 4343370 (w/o barcode). | ![](img/thermo_fisher/thermo_AB_384_wellplate_40uL_Vb_MicroAmp.jpg) | `thermo_AB_384_wellplate_40uL_Vb_MicroAmp` | | 'thermo_nunc_1_wellplate_90000uL_Fb_omnitray'
Part no.: 165218, 140156, 242811, 264728 | ![](img/thermo_fisher/thermo_nunc_1_wellplate_90000uL_Fb_omnitray.jpg.avif) | `thermo_nunc_1_wellplate_90000uL_Fb_omnitray` | -| 'Thermo_TS_Nalgene_reservoir_300mL_Fb'
Part no.: 12001300 (non-sterile), 12001301 (sterile)
[manufacturer website](https://www.fishersci.com/shop/products/nalgene-disposable-polypropylene-robotic-reservoirs/12565571)| ![](img/thermo_fisher/Thermo_TS_Nalgene_reservoir_300mL_Fb.jpeg) | `Thermo_TS_Nalgene_reservoir_300mL_Fb` | +| 'Thermo_TS_Nalgene_1_troughplate_300000uL_Fb'
Part no.: 12001300 (non-sterile), 12001301 (sterile)
[manufacturer website](https://www.fishersci.com/shop/products/nalgene-disposable-polypropylene-robotic-reservoirs/12565571)| ![](img/thermo_fisher/Thermo_TS_Nalgene_1_troughplate_300000uL_Fb.jpeg) | `Thermo_TS_Nalgene_1_troughplate_300000uL_Fb` | ## Troughs diff --git a/pylabrobot/resources/thermo_fisher/plates.py b/pylabrobot/resources/thermo_fisher/plates.py index 3d516c5394a..912438e16c3 100644 --- a/pylabrobot/resources/thermo_fisher/plates.py +++ b/pylabrobot/resources/thermo_fisher/plates.py @@ -423,10 +423,10 @@ def thermo_nunc_1_troughplate_90000uL_Fb_omnitray(name: str) -> Plate: ) -# # # # # # # # # # Thermo_TS_Nalgene_reservoir_300mL_Fb # # # # # # # # # # +# # # # # # # # # # Thermo_TS_Nalgene_1_troughplate_300000uL_Fb # # # # # # # # # # -def Thermo_TS_Nalgene_reservoir_300mL_Fb(name: str) -> Plate: +def Thermo_TS_Nalgene_1_troughplate_300000uL_Fb(name: str) -> Plate: """Thermo Fisher Scientific Nalgene 300mL Flat Bottom Reservoir - Product Number: 12001300 (non-sterile), 12001301 (sterile) - 1-well reservoir with SBS footprint @@ -439,7 +439,7 @@ def Thermo_TS_Nalgene_reservoir_300mL_Fb(name: str) -> Plate: size_x=127.8, # from spec size_y=85.5, # from spec size_z=39.9, # from spec - model="Thermo_TS_Nalgene_reservoir_300mL_Fb", + model=Thermo_TS_Nalgene_1_troughplate_300000uL_Fb.__name__, ordered_items=create_ordered_items_2d( Well, num_items_x=1, # from spec @@ -457,6 +457,8 @@ def Thermo_TS_Nalgene_reservoir_300mL_Fb(name: str) -> Plate: material_z_thickness=1.15, # measured. ), ) + + def thermo_nunc_1_wellplate_90000uL_Fb_omnitray(name: str) -> Plate: """Deprecated. Use :func:`thermo_nunc_1_troughplate_90000uL_Fb_omnitray` instead.""" import warnings