Skip to content
Merged
9 changes: 7 additions & 2 deletions pylabrobot/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
CarrierSite,
PlateCarrier,
TipCarrier,
MFXCarrier,
create_homogeneous_carrier_sites,
create_carrier_sites
)
Expand All @@ -19,10 +20,14 @@
from .tip_tracker import TipTracker, does_tip_tracking, no_tip_tracking, set_tip_tracking
from .volume_tracker import VolumeTracker, does_volume_tracking, no_volume_tracking, set_volume_tracking

from .resource_stack import ResourceStack

# labware manufacturers and suppliers
from .corning_costar import *
from .revvity import *

# liquid handling companies
from .hamilton import HamiltonDeck, STARLetDeck, STARDeck
from .ml_star import *
from .opentrons import *
from .resource_stack import ResourceStack

from .tecan import *
16 changes: 16 additions & 0 deletions pylabrobot/resources/carrier.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,22 @@ def __init__(
sites,category=category, model=model)


class MFXCarrier(Carrier):
""" Base class for multiflex carriers
(i.e. carriers with mixed-use and/or specialized sites). """
def __init__(
self,
name: str,
size_x: float,
size_y: float,
size_z: float,
sites: Optional[List[CarrierSite]] = None,
category="mfx_carrier",
model: Optional[str] = None):
super().__init__(name, size_x, size_y, size_z,
sites,category=category, model=model)


def create_carrier_sites(
locations: List[Coordinate],
site_size_x: List[float],
Expand Down
1 change: 1 addition & 0 deletions pylabrobot/resources/corning_costar/plates.py
Original file line number Diff line number Diff line change
Expand Up @@ -787,3 +787,4 @@ def Cos_96_Vb_L(name: str, with_lid: bool = False) -> Plate:
#: Cos_96_Vb_P
def Cos_96_Vb_P(name: str, with_lid: bool = False) -> Plate:
return Cos_96_Vb(name=name, with_lid=with_lid).rotated(90)

12 changes: 12 additions & 0 deletions pylabrobot/resources/revvity/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

## Resource defintions: Revvity

Company wikipedia: [Revvity, Inc. (formerly PerkinElmer, Inc.)](https://en.wikipedia.org/wiki/Revvity)

> In 2022, a split of PerkinElmer resulted in one part, comprising its applied, food and enterprise services businesses, being sold to the private equity firm New Mountain Capital for $2.45 billion and thus no longer being public but keeping the PerkinElmer name. The other part, comprised of the life sciences and diagnostics businesses, remained public but required a new name, which in 2023 was announced as Revvity, Inc. From the perspective of Revvity, the goal of creating a separate company was that its businesses might show greater profit margins and more in the way of growth potential. An associated goal was to have more financial flexibility moving forward. On May 16, 2023, the PerkinElmer stock symbol PKI was replaced by the new symbol RVTY.

### Currently defined labware:

| Description | Image |
|--------------------|--------------------|
| 'Revvity_ProxiPlate_384Plus'<br>Part no.: 6008280<br>[manufacturer website](https://www.perkinelmer.com/uk/Product/proxiplate-384-plus-50w-6008280) | <img src="ims/revvity_ProxiPlate-384-Plus-White-384-shallow-well-Microplate.jpg" alt="Revvity_ProxiPlate_384Plus" width="250"/> |
1 change: 1 addition & 0 deletions pylabrobot/resources/revvity/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .plates import *
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions pylabrobot/resources/revvity/plates.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
""" Revvity plates """

# pylint: disable=invalid-name

from pylabrobot.resources.plate import Plate
from pylabrobot.resources.well import Well, WellBottomType
from pylabrobot.resources.itemized_resource import create_equally_spaced


# TODO: update heights for volume calculations
def _compute_volume_from_height_Revvity_ProxiPlate_384Plus(h: float):
raise NotImplementedError("This function is not yet implemented")
# volume = min(h, 11.56)*12.2500
# if h > 11.56:
# raise ValueError(f"Height {h} is too large for Revvity_384Plus_ProxiPlate")
# return volume


#: Revvity_ProxiPlate_384Plus
def Revvity_ProxiPlate_384Plus(name: str, with_lid: bool = False) -> Plate:
return Plate(
name=name,
size_x=127.0,
size_y=86.0,
size_z=14.24,
with_lid=with_lid,
model="Revvity_ProxiPlate_384Plus",
lid_height=10,
items=create_equally_spaced(Well,
num_items_x=24,
num_items_y=16,
dx=9.5,
dy=7.0,
dz=4.5,
item_dx=4.5,
item_dy=4.5,
size_x=4.5,
size_y=4.5,
size_z=6.24,
bottom_type=WellBottomType.U,
compute_volume_from_height=_compute_volume_from_height_Revvity_ProxiPlate_384Plus,
),
)