unitelabs.labware.liquids
Packages
Attributes
- Name
__all__
- Type
- Value
= [ "Mixture", "Ingredient", "Liquid", "Sample", "LiquidOverflowError", "LiquidUnderflowError", "Container", "Fillable", "Hole", "LiquidClass" ]
- Description
Classes
Container
Hold and manage liquids in a container.
Methods
__post_init__(self) -> None
@log()
add_liquid(self, liquid : Liquid, volume : Number) -> NoneAdd a certain volume of liquid into this container.
Parameters
- Name
self
- Type
- Default
- Description
- Name
liquid
- Type
- Liquid
- Default
- Description
The type of liquid to add.
- Name
volume
- Type
- Number
- Default
- Description
The volume of liquid in µl to add.
Exceptions
- Type
- LiquidOverflowError
- Description
- If the volume does not fit into the container anymore.
@log()
remove_liquid(self, volume : Number) -> list[tuple[Liquid, decimal.Decimal]]Remove a certain volume from this container.
Parameters
- Name
self
- Type
- Default
- Description
- Name
volume
- Type
- Number
- Default
- Description
The volume of liquid in µl to remove.
Response
- Type
- list[tuple[Liquid, decimal.Decimal]]
- Description
Exceptions
- Type
- LiquidUnderflowError
- Description
- If the container does not contain enough liquid to remove.
volume_for_height(self, height) -> None
Parameters
- Name
self
- Type
- Default
- Description
- Name
height
- Type
- Default
- Description
height_for_volume(self, volume) -> None
Parameters
- Name
self
- Type
- Default
- Description
- Name
volume
- Type
- Default
- Description
Attributes
- Name
max_volume
- Type
- Decimal
- Value
= Decimal()
- Description
- Name
liquids
- Type
- list[tuple[Liquid, decimal.Decimal]]
- Value
= dataclasses.field(default_factory=list)
- Description
- Name
height
- Type
- Decimal
- Value
= dataclasses.field(init=False)
- Description
- Name
_volume
- Type
- Value
= Decimal()
- Description
- Name
_liquid_level
- Type
- Value
= Decimal()
- Description
- Name
logger
- Type
- logging.Logger
- Value
= None
- Description
- Name
volume
- Type
- decimal.Decimal
- Value
= None
- Description
The current volume in µl of liquid filling the container.
- Name
free_volume
- Type
- decimal.Decimal
- Value
= None
- Description
The freely available volume in µl in the container.
- Name
liquid_level
- Type
- decimal.Decimal
- Value
= None
- Description
The height of the liquid in the container, in mm.
- Name
sections
- Type
- list[Shape]
- Value
= dataclasses.field(default_factory=list)
- Description
- Name
max_fitting_volume
- Type
- decimal.Decimal
- Value
= None
- Description
The maximum volume that fits into this shape.
Fillable
Methods
__post_init__(self, *kwargs) -> None
Parameters
- Name
self
- Type
- Default
- Description
- Name
*kwargs
- Type
- Default
- = ()
- Description
__init_subclass__(cls) -> None
Parameters
- Name
cls
- Type
- Default
- Description
@typing_extensions.override
rotate_by(self, angle : int) -> NoneParameters
- Name
self
- Type
- Default
- Description
- Name
angle
- Type
- int
- Default
- Description
find(self, identifier) -> None
Parameters
- Name
self
- Type
- Default
- Description
- Name
identifier
- Type
- Default
- Description
__contains__(self, item : typing.Any) -> bool
Parameters
- Name
self
- Type
- Default
- Description
- Name
item
- Type
- typing.Any
- Default
- Description
Response
- Type
- bool
- Description
__len__(self) -> int
The number of children in this group.
Response
- Type
- int
- Description
The number of children in this group.
_index(self, key : typing.Union[int, str, slice]) -> typing.Union[int, slice]
Parameters
- Name
self
- Type
- Default
- Description
- Name
key
- Type
- typing.Union[int, str, slice]
- Default
- Description
Response
- Type
- typing.Union[int, slice]
- Description
copy(self, **changes) -> None
Parameters
- Name
self
- Type
- Default
- Description
- Name
**changes
- Type
- Default
- = {}
- Description
@deprecation.deprecated(deprecated_in='0.1.20', removed_in='0.2.0', current_version=__version__, details='Use `rotate_by` instead.')
rotate(self, angle : int) -> NoneParameters
- Name
self
- Type
- Default
- Description
- Name
angle
- Type
- int
- Default
- Description
rotate_to(self, angle : int) -> None
Rotate to the given absolute angle in degrees.
Parameters
- Name
self
- Type
- Default
- Description
- Name
angle
- Type
- int
- Default
- Description
The angle in degrees to rotate the resource. Must be a multiple of 90°.
@classmethod
deserialize(cls, identifier : str, schema : JsonSchema) -> typing_extensions.SelfDeserialize a JSON-like dictionary to a resource.
Parameters
- Name
cls
- Type
- Default
- Description
- Name
identifier
- Type
- str
- Default
- Description
The identifier of the resource to deserialize.
- Name
schema
- Type
- JsonSchema
- Default
- Description
The JSON-like dictionary with the resource's data.
Response
- Type
- typing_extensions.Self
- Description
The newly created resource.
@classmethod
subclass_by_name(cls, name : str) -> typing.Optional[type[Resource]]Recursively find a resource subclass with the given name.
Parameters
- Name
cls
- Type
- Default
- Description
- Name
name
- Type
- str
- Default
- Description
The name of the class to find.
Response
- Type
- typing.Optional[type[Resource]]
- Description
The class with the given name, or `None` if no such class exists.
Exceptions
- Type
- TypeError
- Description
- If the name is not a valid class name.
Attributes
- Name
container
- Type
- Container
- Value
= dataclasses.field(default_factory=Container)
- Description
- Name
children
- Type
- collections.abc.Sequence[T]
- Value
= dataclasses.field(metadata={'marshmallow_field': marshmallow.fields.List(ChildrenField(Resource.Schema(), 'identifier'))}, repr=False, default_factory=list)
- Description
- Name
identifier
- Type
- str
- Value
= dataclasses.field(default_factory=lambda: str(uuid.uuid4().hex[:8]))
- Description
- Name
rotation
- Type
- int
- Value
= 0
- Description
- Name
dimensions
- Type
- Vector
- Value
= dataclasses.field(default_factory=Vector)
- Description
- Name
location
- Type
- typing.Optional[Vector]
- Value
= None
- Description
- Name
Schema
- Type
- type[marshmallow.Schema]
- Value
= marshmallow.Schema
- Description
- Name
name
- Type
- str
- Value
= None
- Description
A human readable name to identify resources.
- Name
absolute_location
- Type
- Vector
- Value
= None
- Description
The absolute location of this resource.
- Name
width
- Type
- decimal.Decimal
- Value
= None
- Description
The size of the resource along the x-axis.
- Name
depth
- Type
- decimal.Decimal
- Value
= None
- Description
The size of the resource along the y-axis.
- Name
height
- Type
- decimal.Decimal
- Value
= None
- Description
The size of the resource along the z-axis.
- Name
center
- Type
- Vector
- Value
= None
- Description
The center base of this resource.
Hole
Methods
__init__(self) -> None
__post_init__(self, *_kwargs) -> None
Parameters
- Name
self
- Type
- Default
- Description
- Name
*_kwargs
- Type
- Default
- = ()
- Description
__init_subclass__(cls) -> None
Parameters
- Name
cls
- Type
- Default
- Description
@deprecation.deprecated(deprecated_in='0.1.20', removed_in='0.2.0', current_version=__version__, details='Use `rotate_by` instead.')
rotate(self, angle : int) -> NoneParameters
- Name
self
- Type
- Default
- Description
- Name
angle
- Type
- int
- Default
- Description
rotate_by(self, angle : int) -> None
Rotate clockwise by the given angle in degrees. Use negative numbers for counter clockwise rotation.
Parameters
- Name
self
- Type
- Default
- Description
- Name
angle
- Type
- int
- Default
- Description
The angle in degrees to rotate the resource. Must be a multiple of 90°.
rotate_to(self, angle : int) -> None
Rotate to the given absolute angle in degrees.
Parameters
- Name
self
- Type
- Default
- Description
- Name
angle
- Type
- int
- Default
- Description
The angle in degrees to rotate the resource. Must be a multiple of 90°.
find(self, identifier : str) -> Resource
Find a resource by its identifier.
Parameters
- Name
self
- Type
- Default
- Description
- Name
identifier
- Type
- str
- Default
- Description
The resource's identifier to search for.
Response
- Type
- Resource
- Description
The resource with the corresponding identifier.
Exceptions
- Type
- TypeError
- Description
- If the identifier is a non string value.
- Type
- MissingResourceError
- Description
- If the resource could not be found.
__contains__(self, item : typing.Any) -> bool
Check whether a resource is assigned to this resource.
Parameters
- Name
self
- Type
- Default
- Description
- Name
item
- Type
- typing.Any
- Default
- Description
The resource to search for.
Response
- Type
- bool
- Description
True if the resource could be found, False otherwise.
copy(self, **changes) -> typing_extensions.Self
Return a copy of this resource.
Parameters
- Name
self
- Type
- Default
- Description
- Name
**changes
- Type
- Default
- = {}
- Description
Replace fields with values from `changes`.
Response
- Type
- typing_extensions.Self
- Description
A copy of this resource.
serialize(self) -> JsonSchema
Serialize this resource as a JSON-like dictionary.
Response
- Type
- JsonSchema
- Description
The JSON-like dictionary with the resource's data.
@classmethod
deserialize(cls, identifier : str, schema : JsonSchema) -> typing_extensions.SelfDeserialize a JSON-like dictionary to a resource.
Parameters
- Name
cls
- Type
- Default
- Description
- Name
identifier
- Type
- str
- Default
- Description
The identifier of the resource to deserialize.
- Name
schema
- Type
- JsonSchema
- Default
- Description
The JSON-like dictionary with the resource's data.
Response
- Type
- typing_extensions.Self
- Description
The newly created resource.
@classmethod
subclass_by_name(cls, name : str) -> typing.Optional[type[Resource]]Recursively find a resource subclass with the given name.
Parameters
- Name
cls
- Type
- Default
- Description
- Name
name
- Type
- str
- Default
- Description
The name of the class to find.
Response
- Type
- typing.Optional[type[Resource]]
- Description
The class with the given name, or `None` if no such class exists.
Exceptions
- Type
- TypeError
- Description
- If the name is not a valid class name.
Attributes
- Name
identifier
- Type
- str
- Value
= dataclasses.field(default_factory=lambda: str(uuid.uuid4().hex[:8]))
- Description
- Name
rotation
- Type
- int
- Value
= 0
- Description
- Name
dimensions
- Type
- Vector
- Value
= dataclasses.field(default_factory=Vector)
- Description
- Name
location
- Type
- typing.Optional[Vector]
- Value
= None
- Description
- Name
Schema
- Type
- type[marshmallow.Schema]
- Value
= marshmallow.Schema
- Description
- Name
name
- Type
- str
- Value
= None
- Description
A human readable name to identify resources.
- Name
absolute_location
- Type
- Vector
- Value
= None
- Description
The absolute location of this resource.
- Name
width
- Type
- decimal.Decimal
- Value
= None
- Description
The size of the resource along the x-axis.
- Name
depth
- Type
- decimal.Decimal
- Value
= None
- Description
The size of the resource along the y-axis.
- Name
height
- Type
- decimal.Decimal
- Value
= None
- Description
The size of the resource along the z-axis.
- Name
center
- Type
- Vector
- Value
= None
- Description
The center base of this resource.
Liquid
Common types of substances used in liquid handling.
- Bases
- enum.Enum
Methods
__str__(self) -> str
Response
- Type
- str
- Description
Attributes
- Name
ACETONITRILE
- Type
- Value
= 'Acetonitrile'
- Description
- Name
BLOOD
- Type
- Value
= 'Blood'
- Description
- Name
BRAIN_HOMOGENATE
- Type
- Value
= 'Brain-Homogenate'
- Description
- Name
CHLOROFORM
- Type
- Value
= 'Chloroform'
- Description
- Name
DIMETHYL_SULFOXIDE
- Type
- Value
= 'Dimethyl sulfoxide'
- Description
- Name
DMSO
- Type
- Value
= 'Dimethyl sulfoxide'
- Description
- Name
ETHANOL
- Type
- Value
= 'Ethanol'
- Description
- Name
EtOH
- Type
- Value
= 'Ethanol'
- Description
- Name
GLYCERIN
- Type
- Value
= 'Glycerin'
- Description
- Name
METHANOL
- Type
- Value
= 'Methanol'
- Description
- Name
MeOH
- Type
- Value
= 'Methanol'
- Description
- Name
OCTANOL
- Type
- Value
= 'Octanol'
- Description
- Name
PBS_BUFFER
- Type
- Value
= 'PBS Buffer'
- Description
- Name
PLASMA
- Type
- Value
= 'Plasma'
- Description
- Name
SERUM
- Type
- Value
= 'Serum'
- Description
- Name
TE_BUFFER
- Type
- Value
= 'Tris-EDTA buffer'
- Description
- Name
WATER
- Type
- Value
= 'Water'
- Description
LiquidClass
Liquid classes are global definitions for a liquid that can be used in any method. The liquid class provides detailed instructions for how a channel's plunger should manipulate a liquid. A liquid class needs to be selected for each aspiration and dispense step in a method, and that liquid class needs to match the tip type and mode. This means that the liquid class needs to be defined in detail ahead of time before the method can be built.
Methods
__str__(self) -> str
Response
- Type
- str
- Description
Attributes
LiquidOverflowError
Raised when a container is too full to add the specified volume of liquid.
- Bases
- Exception
LiquidUnderflowError
Raised when a container is too empty to remove the specified volume of liquid.
- Bases
- Exception
Ingredient
The liquid as part of a mixture with the given amount.
- Decorators
- dataclasses.dataclass
Methods
__str__(self) -> str
Response
- Type
- str
- Description
Attributes
- Name
amount
- Type
- Decimal
- Value
= Decimal(default=0)
- Description
Mixture
Combination of liquids mixed together.
- Bases
- collections.abc.MutableSequence[Ingredient]
Methods
__init__(self, ingredients : typing.Optional[collections.abc.Iterable[Ingredient]]) -> None
Parameters
- Name
self
- Type
- Default
- Description
- Name
ingredients
- Type
- typing.Optional[collections.abc.Iterable[Ingredient]]
- Default
- = None
- Description
__len__(self) -> int
Return len(self).
Response
- Type
- int
- Description
__getitem__(self, index : typing.Union[typing.SupportsIndex, slice]) -> typing.Union[Ingredient, list[Ingredient]]
x.__getitem__(y) <==> x[y]
Parameters
- Name
self
- Type
- Default
- Description
- Name
index
- Type
- typing.Union[typing.SupportsIndex, slice]
- Default
- Description
Response
- Type
- typing.Union[Ingredient, list[Ingredient]]
- Description
__setitem__(self, index : typing.Union[typing.SupportsIndex, slice], value : typing.Union[Ingredient, collections.abc.Iterable[Ingredient]]) -> None
Set self[key] to value.
Parameters
- Name
self
- Type
- Default
- Description
- Name
index
- Type
- typing.Union[typing.SupportsIndex, slice]
- Default
- Description
- Name
value
- Type
- typing.Union[Ingredient, collections.abc.Iterable[Ingredient]]
- Default
- Description
__delitem__(self, index : typing.Union[typing.SupportsIndex, slice]) -> None
Delete self[key].
Parameters
- Name
self
- Type
- Default
- Description
- Name
index
- Type
- typing.Union[typing.SupportsIndex, slice]
- Default
- Description
__iter__(self) -> collections.abc.Iterator[Ingredient]
Implement iter(self).
Response
- Type
- collections.abc.Iterator[Ingredient]
- Description
__reversed__(self) -> collections.abc.Iterator[Ingredient]
Return a reverse iterator over the list.
Response
- Type
- collections.abc.Iterator[Ingredient]
- Description
__add__(self, other : typing.Union[Mixture, collections.abc.Iterable[Ingredient], Ingredient]) -> Mixture
Return self+other.
Parameters
- Name
self
- Type
- Default
- Description
- Name
other
- Type
- typing.Union[Mixture, collections.abc.Iterable[Ingredient], Ingredient]
- Default
- Description
Response
- Type
- Mixture
- Description
__radd__(self, other : typing.Union[Mixture, collections.abc.Iterable[Ingredient], Ingredient]) -> Mixture
Return other+self.
Parameters
- Name
self
- Type
- Default
- Description
- Name
other
- Type
- typing.Union[Mixture, collections.abc.Iterable[Ingredient], Ingredient]
- Default
- Description
Response
- Type
- Mixture
- Description
__iadd__(self, other : typing.Union[Mixture, collections.abc.Iterable[Ingredient], Ingredient]) -> Mixture
Implement self+=value.
Parameters
- Name
self
- Type
- Default
- Description
- Name
other
- Type
- typing.Union[Mixture, collections.abc.Iterable[Ingredient], Ingredient]
- Default
- Description
Response
- Type
- Mixture
- Description
__str__(self) -> None
Return str(self).
__repr__(self) -> None
Return repr(self).
__eq__(self, value : typing.Union[Mixture, collections.abc.Iterable[Ingredient]]) -> bool
Return self==value.
Parameters
- Name
self
- Type
- Default
- Description
- Name
value
- Type
- typing.Union[Mixture, collections.abc.Iterable[Ingredient]]
- Default
- Description
Response
- Type
- bool
- Description
@log()
append(self, value : Ingredient) -> NoneAppend object to the end of the list.
Parameters
- Name
self
- Type
- Default
- Description
- Name
value
- Type
- Ingredient
- Default
- Description
@log()
extend(self, values : typing.Union[Mixture, collections.abc.Iterable[Ingredient]]) -> NoneExtend list by appending elements from the iterable.
Parameters
- Name
self
- Type
- Default
- Description
- Name
values
- Type
- typing.Union[Mixture, collections.abc.Iterable[Ingredient]]
- Default
- Description
@log()
insert(self, index : typing.SupportsIndex, value : Ingredient) -> NoneInsert value before index.
Parameters
- Name
self
- Type
- Default
- Description
- Name
index
- Type
- typing.SupportsIndex
- Default
- Description
- Name
value
- Type
- Ingredient
- Default
- Description
@log()
pop(self, index : typing.SupportsIndex) -> IngredientRemove and return item at index (default last).
Parameters
- Name
self
- Type
- Default
- Description
- Name
index
- Type
- typing.SupportsIndex
- Default
- Description
Response
- Type
- Ingredient
- Description
Exceptions
- Type
- IndexError
- Description
- if list is empty or index is out of range.
@log()
remove(self, volume : Number) -> MixtureRemove volume proportionally from mixture.
Parameters
- Name
self
- Type
- Default
- Description
- Name
volume
- Type
- Number
- Default
- Description
The volume of liquid in µl to remove.
Response
- Type
- Mixture
- Description
The removed mixture of liquid.
Exceptions
- Type
- ValueError
- Description
- If the volume to remove exceeds the current volume.
@log()
clear(self) -> NoneRemove all items from the mixture.
index(self, value : typing.Union[Liquid, Sample], start : typing.SupportsIndex, stop : typing.SupportsIndex) -> int
Return first index of value.
Parameters
- Name
self
- Type
- Default
- Description
- Name
start
- Type
- typing.SupportsIndex
- Default
- = 0
- Description
- Name
stop
- Type
- typing.SupportsIndex
- Default
- = sys.maxsize
- Description
Response
- Type
- int
- Description
Exceptions
- Type
- ValueError
- Description
- if the value is not present.
reverse(self) -> None
Reverse sequence in place.
Attributes
- Name
_ingredients
- Type
- list[Ingredient]
- Value
= list(ingredients) if ingredients is not None else []
- Description
- Name
_volume
- Type
- decimal.Decimal
- Value
= sum(v.amount for v in self._ingredients, start=decimal.Decimal(0))
- Description
- Name
logger
- Type
- logging.Logger
- Value
= None
- Description
- Name
volume
- Type
- decimal.Decimal
- Value
= None
- Description
The current volume in µl of liquid in this mixture.
- Name
ingredients
- Type
- list[Ingredient]
- Value
= None
- Description
The current ingredients in this mixture.
Sample
Traceable sample used in liquid handling.
- Decorators
- dataclasses.dataclass
Methods
__init__(self, identifier : str) -> None
Parameters
- Name
self
- Type
- Default
- Description
- Name
identifier
- Type
- str
- Default
- Description
__str__(self) -> str
Response
- Type
- str
- Description
Attributes
- Name
identifier
- Type
- str
- Value
= None
- Description