opentrons 8.4.0a3__py2.py3-none-any.whl → 8.4.0a4__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- opentrons/legacy_commands/commands.py +83 -2
- opentrons/legacy_commands/helpers.py +59 -1
- opentrons/legacy_commands/types.py +30 -0
- opentrons/protocol_api/core/engine/instrument.py +154 -83
- opentrons/protocol_api/core/engine/pipette_movement_conflict.py +6 -14
- opentrons/protocol_api/core/engine/transfer_components_executor.py +12 -23
- opentrons/protocol_api/core/instrument.py +4 -1
- opentrons/protocol_api/core/legacy/legacy_instrument_core.py +4 -27
- opentrons/protocol_api/core/legacy_simulator/legacy_instrument_core.py +4 -1
- opentrons/protocol_api/core/well.py +1 -1
- opentrons/protocol_api/instrument_context.py +116 -60
- opentrons/protocol_api/labware.py +7 -6
- opentrons/protocol_api/protocol_context.py +18 -16
- opentrons/protocol_engine/commands/__init__.py +38 -38
- opentrons/protocol_engine/commands/aspirate_while_tracking.py +0 -6
- opentrons/protocol_engine/commands/command_unions.py +33 -33
- opentrons/protocol_engine/commands/dispense_while_tracking.py +1 -6
- opentrons/protocol_engine/commands/labware_handling_common.py +6 -1
- opentrons/protocol_engine/commands/liquid_probe.py +1 -2
- opentrons/protocol_engine/commands/move_to_well.py +5 -11
- opentrons/protocol_engine/commands/{evotip_dispense.py → pressure_dispense.py} +27 -27
- opentrons/protocol_engine/commands/{evotip_seal_pipette.py → seal_pipette_to_tip.py} +32 -27
- opentrons/protocol_engine/commands/{evotip_unseal_pipette.py → unseal_pipette_from_tip.py} +22 -22
- opentrons/protocol_engine/labware_offset_standardization.py +22 -1
- opentrons/protocol_engine/resources/deck_configuration_provider.py +8 -4
- opentrons/protocol_engine/state/frustum_helpers.py +12 -4
- opentrons/protocol_engine/state/geometry.py +121 -72
- opentrons/protocol_engine/state/update_types.py +1 -1
- opentrons/protocol_engine/state/wells.py +1 -1
- opentrons/protocol_engine/types/__init__.py +6 -0
- opentrons/protocol_engine/types/well_position.py +18 -1
- opentrons/protocols/advanced_control/transfers/transfer_liquid_utils.py +1 -1
- opentrons/protocols/labware.py +23 -18
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a4.dist-info}/METADATA +4 -4
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a4.dist-info}/RECORD +39 -39
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a4.dist-info}/LICENSE +0 -0
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a4.dist-info}/WHEEL +0 -0
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a4.dist-info}/entry_points.txt +0 -0
- {opentrons-8.4.0a3.dist-info → opentrons-8.4.0a4.dist-info}/top_level.txt +0 -0
|
@@ -11,7 +11,7 @@ from opentrons.protocols.api_support.util import FlowRates
|
|
|
11
11
|
from opentrons.protocols.advanced_control.transfers.common import TransferTipPolicyV2
|
|
12
12
|
from opentrons.protocol_api._nozzle_layout import NozzleLayout
|
|
13
13
|
from opentrons.protocol_api._liquid import LiquidClass
|
|
14
|
-
from opentrons.protocol_engine.types
|
|
14
|
+
from opentrons.protocol_engine.types import LiquidTrackingType
|
|
15
15
|
|
|
16
16
|
from ..disposal_locations import TrashBin, WasteChute
|
|
17
17
|
from .well import WellCoreType
|
|
@@ -367,6 +367,7 @@ class AbstractInstrument(ABC, Generic[WellCoreType, LabwareCoreType]):
|
|
|
367
367
|
dest: List[Tuple[types.Location, WellCoreType]],
|
|
368
368
|
new_tip: TransferTipPolicyV2,
|
|
369
369
|
tip_racks: List[Tuple[types.Location, LabwareCoreType]],
|
|
370
|
+
starting_tip: Optional[WellCoreType],
|
|
370
371
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
371
372
|
return_tip: bool,
|
|
372
373
|
) -> None:
|
|
@@ -382,6 +383,7 @@ class AbstractInstrument(ABC, Generic[WellCoreType, LabwareCoreType]):
|
|
|
382
383
|
dest: List[Tuple[types.Location, WellCoreType]],
|
|
383
384
|
new_tip: TransferTipPolicyV2,
|
|
384
385
|
tip_racks: List[Tuple[types.Location, LabwareCoreType]],
|
|
386
|
+
starting_tip: Optional[WellCoreType],
|
|
385
387
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
386
388
|
return_tip: bool,
|
|
387
389
|
) -> None:
|
|
@@ -400,6 +402,7 @@ class AbstractInstrument(ABC, Generic[WellCoreType, LabwareCoreType]):
|
|
|
400
402
|
dest: Tuple[types.Location, WellCoreType],
|
|
401
403
|
new_tip: TransferTipPolicyV2,
|
|
402
404
|
tip_racks: List[Tuple[types.Location, LabwareCoreType]],
|
|
405
|
+
starting_tip: Optional[WellCoreType],
|
|
403
406
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
404
407
|
return_tip: bool,
|
|
405
408
|
) -> None:
|
|
@@ -22,7 +22,7 @@ from opentrons.protocols.geometry import planning
|
|
|
22
22
|
from opentrons.protocol_api._nozzle_layout import NozzleLayout
|
|
23
23
|
from opentrons.protocol_api._liquid import LiquidClass
|
|
24
24
|
|
|
25
|
-
from opentrons.protocol_engine.types
|
|
25
|
+
from opentrons.protocol_engine.types import LiquidTrackingType
|
|
26
26
|
|
|
27
27
|
from ...disposal_locations import TrashBin, WasteChute
|
|
28
28
|
from ..instrument import AbstractInstrument
|
|
@@ -438,32 +438,6 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
438
438
|
location=location, mount=location_cache_mount
|
|
439
439
|
)
|
|
440
440
|
|
|
441
|
-
def evotip_seal(
|
|
442
|
-
self,
|
|
443
|
-
location: types.Location,
|
|
444
|
-
well_core: LegacyWellCore,
|
|
445
|
-
in_place: Optional[bool] = False,
|
|
446
|
-
) -> None:
|
|
447
|
-
"""This will never be called because it was added in API 2.22."""
|
|
448
|
-
assert False, "evotip_seal only supported in API 2.22 & later"
|
|
449
|
-
|
|
450
|
-
def evotip_unseal(
|
|
451
|
-
self, location: types.Location, well_core: WellCore, home_after: Optional[bool]
|
|
452
|
-
) -> None:
|
|
453
|
-
"""This will never be called because it was added in API 2.22."""
|
|
454
|
-
assert False, "evotip_unseal only supported in API 2.22 & later"
|
|
455
|
-
|
|
456
|
-
def evotip_dispense(
|
|
457
|
-
self,
|
|
458
|
-
location: types.Location,
|
|
459
|
-
well_core: WellCore,
|
|
460
|
-
volume: Optional[float] = None,
|
|
461
|
-
flow_rate: Optional[float] = None,
|
|
462
|
-
push_out: Optional[float] = None,
|
|
463
|
-
) -> None:
|
|
464
|
-
"""This will never be called because it was added in API 2.22."""
|
|
465
|
-
assert False, "evotip_dispense only supported in API 2.22 & later"
|
|
466
|
-
|
|
467
441
|
def get_mount(self) -> types.Mount:
|
|
468
442
|
"""Get the mount this pipette is attached to."""
|
|
469
443
|
return self._mount
|
|
@@ -632,6 +606,7 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
632
606
|
dest: List[Tuple[types.Location, LegacyWellCore]],
|
|
633
607
|
new_tip: TransferTipPolicyV2,
|
|
634
608
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
609
|
+
starting_tip: Optional[LegacyWellCore],
|
|
635
610
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
636
611
|
return_tip: bool,
|
|
637
612
|
) -> None:
|
|
@@ -646,6 +621,7 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
646
621
|
dest: List[Tuple[types.Location, LegacyWellCore]],
|
|
647
622
|
new_tip: TransferTipPolicyV2,
|
|
648
623
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
624
|
+
starting_tip: Optional[LegacyWellCore],
|
|
649
625
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
650
626
|
return_tip: bool,
|
|
651
627
|
) -> None:
|
|
@@ -660,6 +636,7 @@ class LegacyInstrumentCore(AbstractInstrument[LegacyWellCore, LegacyLabwareCore]
|
|
|
660
636
|
dest: Tuple[types.Location, LegacyWellCore],
|
|
661
637
|
new_tip: TransferTipPolicyV2,
|
|
662
638
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
639
|
+
starting_tip: Optional[LegacyWellCore],
|
|
663
640
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
664
641
|
return_tip: bool,
|
|
665
642
|
) -> None:
|
|
@@ -23,7 +23,7 @@ from opentrons_shared_data.errors.exceptions import (
|
|
|
23
23
|
UnexpectedTipAttachError,
|
|
24
24
|
)
|
|
25
25
|
|
|
26
|
-
from opentrons.protocol_engine.types
|
|
26
|
+
from opentrons.protocol_engine.types import LiquidTrackingType
|
|
27
27
|
|
|
28
28
|
from ..legacy.legacy_labware_core import LegacyLabwareCore
|
|
29
29
|
from ...disposal_locations import TrashBin, WasteChute
|
|
@@ -521,6 +521,7 @@ class LegacyInstrumentCoreSimulator(
|
|
|
521
521
|
dest: List[Tuple[types.Location, LegacyWellCore]],
|
|
522
522
|
new_tip: TransferTipPolicyV2,
|
|
523
523
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
524
|
+
starting_tip: Optional[LegacyWellCore],
|
|
524
525
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
525
526
|
return_tip: bool,
|
|
526
527
|
) -> None:
|
|
@@ -535,6 +536,7 @@ class LegacyInstrumentCoreSimulator(
|
|
|
535
536
|
dest: List[Tuple[types.Location, LegacyWellCore]],
|
|
536
537
|
new_tip: TransferTipPolicyV2,
|
|
537
538
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
539
|
+
starting_tip: Optional[LegacyWellCore],
|
|
538
540
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
539
541
|
return_tip: bool,
|
|
540
542
|
) -> None:
|
|
@@ -549,6 +551,7 @@ class LegacyInstrumentCoreSimulator(
|
|
|
549
551
|
dest: Tuple[types.Location, LegacyWellCore],
|
|
550
552
|
new_tip: TransferTipPolicyV2,
|
|
551
553
|
tip_racks: List[Tuple[types.Location, LegacyLabwareCore]],
|
|
554
|
+
starting_tip: Optional[LegacyWellCore],
|
|
552
555
|
trash_location: Union[types.Location, TrashBin, WasteChute],
|
|
553
556
|
return_tip: bool,
|
|
554
557
|
) -> None:
|
|
@@ -4,7 +4,7 @@ from abc import ABC, abstractmethod
|
|
|
4
4
|
from typing import TypeVar, Optional, Union
|
|
5
5
|
|
|
6
6
|
from opentrons.types import Point
|
|
7
|
-
from opentrons.protocol_engine.types
|
|
7
|
+
from opentrons.protocol_engine.types import LiquidTrackingType
|
|
8
8
|
|
|
9
9
|
from .._liquid import Liquid
|
|
10
10
|
|
|
@@ -42,7 +42,7 @@ from ..protocols.advanced_control.transfers.common import (
|
|
|
42
42
|
TransferTipPolicyV2,
|
|
43
43
|
TransferTipPolicyV2Type,
|
|
44
44
|
)
|
|
45
|
-
from ..protocol_engine.types
|
|
45
|
+
from ..protocol_engine.types import LiquidTrackingType
|
|
46
46
|
|
|
47
47
|
_DEFAULT_ASPIRATE_CLEARANCE = 1.0
|
|
48
48
|
_DEFAULT_DISPENSE_CLEARANCE = 1.0
|
|
@@ -1553,6 +1553,13 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1553
1553
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1554
1554
|
in the tip rack, instead of the trash.
|
|
1555
1555
|
"""
|
|
1556
|
+
if volume == 0.0:
|
|
1557
|
+
_log.info(
|
|
1558
|
+
f"Transfer of {liquid_class.name} specified with a volume of 0uL."
|
|
1559
|
+
f" Skipping."
|
|
1560
|
+
)
|
|
1561
|
+
return self
|
|
1562
|
+
|
|
1556
1563
|
transfer_args = verify_and_normalize_transfer_args(
|
|
1557
1564
|
source=source,
|
|
1558
1565
|
dest=dest,
|
|
@@ -1573,25 +1580,38 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1573
1580
|
" to transfer liquid onto one destinations from many sources, use 'consolidate_liquid'."
|
|
1574
1581
|
)
|
|
1575
1582
|
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1583
|
+
with publisher.publish_context(
|
|
1584
|
+
broker=self.broker,
|
|
1585
|
+
command=cmds.transfer_with_liquid_class(
|
|
1586
|
+
instrument=self,
|
|
1587
|
+
liquid_class=liquid_class,
|
|
1588
|
+
volume=volume,
|
|
1589
|
+
source=source,
|
|
1590
|
+
destination=dest,
|
|
1591
|
+
),
|
|
1592
|
+
):
|
|
1593
|
+
self._core.transfer_with_liquid_class(
|
|
1594
|
+
liquid_class=liquid_class,
|
|
1595
|
+
volume=volume,
|
|
1596
|
+
source=[
|
|
1597
|
+
(types.Location(types.Point(), labware=well), well._core)
|
|
1598
|
+
for well in transfer_args.sources_list
|
|
1599
|
+
],
|
|
1600
|
+
dest=[
|
|
1601
|
+
(types.Location(types.Point(), labware=well), well._core)
|
|
1602
|
+
for well in transfer_args.destinations_list
|
|
1603
|
+
],
|
|
1604
|
+
new_tip=transfer_args.tip_policy,
|
|
1605
|
+
tip_racks=[
|
|
1606
|
+
(types.Location(types.Point(), labware=rack), rack._core)
|
|
1607
|
+
for rack in transfer_args.tip_racks
|
|
1608
|
+
],
|
|
1609
|
+
starting_tip=self.starting_tip._core
|
|
1610
|
+
if self.starting_tip is not None
|
|
1611
|
+
else None,
|
|
1612
|
+
trash_location=transfer_args.trash_location,
|
|
1613
|
+
return_tip=return_tip,
|
|
1614
|
+
)
|
|
1595
1615
|
return self
|
|
1596
1616
|
|
|
1597
1617
|
@requires_version(2, 23)
|
|
@@ -1636,6 +1656,13 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1636
1656
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1637
1657
|
in the tip rack, instead of the trash.
|
|
1638
1658
|
"""
|
|
1659
|
+
if volume == 0.0:
|
|
1660
|
+
_log.info(
|
|
1661
|
+
f"Distribution of {liquid_class.name} specified with a volume of 0uL."
|
|
1662
|
+
f" Skipping."
|
|
1663
|
+
)
|
|
1664
|
+
return self
|
|
1665
|
+
|
|
1639
1666
|
transfer_args = verify_and_normalize_transfer_args(
|
|
1640
1667
|
source=source,
|
|
1641
1668
|
dest=dest,
|
|
@@ -1660,25 +1687,38 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1660
1687
|
)
|
|
1661
1688
|
|
|
1662
1689
|
verified_source = transfer_args.sources_list[0]
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1690
|
+
with publisher.publish_context(
|
|
1691
|
+
broker=self.broker,
|
|
1692
|
+
command=cmds.distribute_with_liquid_class(
|
|
1693
|
+
instrument=self,
|
|
1694
|
+
liquid_class=liquid_class,
|
|
1695
|
+
volume=volume,
|
|
1696
|
+
source=source,
|
|
1697
|
+
destination=dest,
|
|
1669
1698
|
),
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1699
|
+
):
|
|
1700
|
+
self._core.distribute_with_liquid_class(
|
|
1701
|
+
liquid_class=liquid_class,
|
|
1702
|
+
volume=volume,
|
|
1703
|
+
source=(
|
|
1704
|
+
types.Location(types.Point(), labware=verified_source),
|
|
1705
|
+
verified_source._core,
|
|
1706
|
+
),
|
|
1707
|
+
dest=[
|
|
1708
|
+
(types.Location(types.Point(), labware=well), well._core)
|
|
1709
|
+
for well in transfer_args.destinations_list
|
|
1710
|
+
],
|
|
1711
|
+
new_tip=transfer_args.tip_policy,
|
|
1712
|
+
tip_racks=[
|
|
1713
|
+
(types.Location(types.Point(), labware=rack), rack._core)
|
|
1714
|
+
for rack in transfer_args.tip_racks
|
|
1715
|
+
],
|
|
1716
|
+
starting_tip=self.starting_tip._core
|
|
1717
|
+
if self.starting_tip is not None
|
|
1718
|
+
else None,
|
|
1719
|
+
trash_location=transfer_args.trash_location,
|
|
1720
|
+
return_tip=return_tip,
|
|
1721
|
+
)
|
|
1682
1722
|
return self
|
|
1683
1723
|
|
|
1684
1724
|
@requires_version(2, 23)
|
|
@@ -1724,6 +1764,13 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1724
1764
|
:param return_tip: Whether to drop used tips in their original locations
|
|
1725
1765
|
in the tip rack, instead of the trash.
|
|
1726
1766
|
"""
|
|
1767
|
+
if volume == 0.0:
|
|
1768
|
+
_log.info(
|
|
1769
|
+
f"Consolidation of {liquid_class.name} specified with a volume of 0uL."
|
|
1770
|
+
f" Skipping."
|
|
1771
|
+
)
|
|
1772
|
+
return self
|
|
1773
|
+
|
|
1727
1774
|
transfer_args = verify_and_normalize_transfer_args(
|
|
1728
1775
|
source=source,
|
|
1729
1776
|
dest=dest,
|
|
@@ -1748,25 +1795,38 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
1748
1795
|
)
|
|
1749
1796
|
|
|
1750
1797
|
verified_dest = transfer_args.destinations_list[0]
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
types.Location(types.Point(), labware=verified_dest),
|
|
1760
|
-
verified_dest._core,
|
|
1798
|
+
with publisher.publish_context(
|
|
1799
|
+
broker=self.broker,
|
|
1800
|
+
command=cmds.consolidate_with_liquid_class(
|
|
1801
|
+
instrument=self,
|
|
1802
|
+
liquid_class=liquid_class,
|
|
1803
|
+
volume=volume,
|
|
1804
|
+
source=source,
|
|
1805
|
+
destination=dest,
|
|
1761
1806
|
),
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1807
|
+
):
|
|
1808
|
+
self._core.consolidate_with_liquid_class(
|
|
1809
|
+
liquid_class=liquid_class,
|
|
1810
|
+
volume=volume,
|
|
1811
|
+
source=[
|
|
1812
|
+
(types.Location(types.Point(), labware=well), well._core)
|
|
1813
|
+
for well in transfer_args.sources_list
|
|
1814
|
+
],
|
|
1815
|
+
dest=(
|
|
1816
|
+
types.Location(types.Point(), labware=verified_dest),
|
|
1817
|
+
verified_dest._core,
|
|
1818
|
+
),
|
|
1819
|
+
new_tip=transfer_args.tip_policy,
|
|
1820
|
+
tip_racks=[
|
|
1821
|
+
(types.Location(types.Point(), labware=rack), rack._core)
|
|
1822
|
+
for rack in transfer_args.tip_racks
|
|
1823
|
+
],
|
|
1824
|
+
starting_tip=self.starting_tip._core
|
|
1825
|
+
if self.starting_tip is not None
|
|
1826
|
+
else None,
|
|
1827
|
+
trash_location=transfer_args.trash_location,
|
|
1828
|
+
return_tip=return_tip,
|
|
1829
|
+
)
|
|
1770
1830
|
return self
|
|
1771
1831
|
|
|
1772
1832
|
@requires_version(2, 0)
|
|
@@ -2580,10 +2640,6 @@ class InstrumentContext(publisher.CommandPublisher):
|
|
|
2580
2640
|
"""Check the height of the liquid within a well.
|
|
2581
2641
|
|
|
2582
2642
|
:returns: The height, in mm, of the liquid from the deck.
|
|
2583
|
-
|
|
2584
|
-
:meta private:
|
|
2585
|
-
|
|
2586
|
-
This is intended for Opentrons internal use only and is not a guaranteed API.
|
|
2587
2643
|
"""
|
|
2588
2644
|
self._raise_if_pressure_not_supported_by_pipette()
|
|
2589
2645
|
loc = well.top()
|
|
@@ -46,7 +46,7 @@ from opentrons.protocols.api_support.util import (
|
|
|
46
46
|
APIVersionError,
|
|
47
47
|
UnsupportedAPIError,
|
|
48
48
|
)
|
|
49
|
-
from opentrons.protocol_engine.types
|
|
49
|
+
from opentrons.protocol_engine.types import LiquidTrackingType
|
|
50
50
|
|
|
51
51
|
# TODO(mc, 2022-09-02): re-exports provided for backwards compatibility
|
|
52
52
|
# remove when their usage is no longer needed
|
|
@@ -684,7 +684,7 @@ class Labware:
|
|
|
684
684
|
version: Optional[int] = None,
|
|
685
685
|
) -> Labware:
|
|
686
686
|
"""
|
|
687
|
-
Load a stack of Lids onto a valid
|
|
687
|
+
Load a stack of Opentrons Tough Auto-Sealing Lids onto a valid deck location or adapter.
|
|
688
688
|
|
|
689
689
|
:param str load_name: A string to use for looking up a lid definition.
|
|
690
690
|
You can find the ``load_name`` for any standard lid on the Opentrons
|
|
@@ -705,9 +705,7 @@ class Labware:
|
|
|
705
705
|
leave this unspecified to let ``load_lid_stack()`` choose a version
|
|
706
706
|
automatically.
|
|
707
707
|
|
|
708
|
-
:return:
|
|
709
|
-
|
|
710
|
-
:meta private:
|
|
708
|
+
:return: The initialized and loaded labware object representing the lid stack.
|
|
711
709
|
"""
|
|
712
710
|
if self._api_version < validation.LID_STACK_VERSION_GATE:
|
|
713
711
|
raise APIVersionError(
|
|
@@ -773,11 +771,14 @@ class Labware:
|
|
|
773
771
|
you must either use ``set_offset()`` on all of them or none of them.
|
|
774
772
|
* - 2.14–2.17
|
|
775
773
|
- ``set_offset()`` is not available, and the API raises an error.
|
|
776
|
-
* - 2.18
|
|
774
|
+
* - 2.18--2.22
|
|
777
775
|
-
|
|
778
776
|
- Offsets apply to any labware of the same type, in the same on-deck location.
|
|
779
777
|
- Offsets can't be set on labware that is currently off-deck.
|
|
780
778
|
- Offsets do not follow a labware instance when using :py:meth:`.move_labware`.
|
|
779
|
+
* - 2.23 and newer
|
|
780
|
+
-
|
|
781
|
+
On Flex, offsets can apply to all labware of the same type, regardless of their on-deck location.
|
|
781
782
|
|
|
782
783
|
.. note::
|
|
783
784
|
|
|
@@ -451,14 +451,14 @@ class ProtocolContext(CommandPublisher):
|
|
|
451
451
|
choose the adapter's version automatically.
|
|
452
452
|
|
|
453
453
|
.. versionadded:: 2.15
|
|
454
|
+
:param lid: A lid to load on the top of the main labware. Accepts the same
|
|
455
|
+
values as the ``load_name`` parameter of :py:meth:`.load_lid_stack`. The
|
|
456
|
+
lid will use the same namespace as the labware, and the API will
|
|
457
|
+
choose the adapter's version automatically.
|
|
458
|
+
|
|
459
|
+
.. versionadded:: 2.23
|
|
454
460
|
"""
|
|
455
|
-
|
|
456
|
-
# :param lid: A lid to load the on top of the main labware. Accepts the same
|
|
457
|
-
# values as the ``load_name`` parameter of :py:meth:`.load_lid_stack`. The
|
|
458
|
-
# lid will use the same namespace as the labware, and the API will
|
|
459
|
-
# choose the lid's version automatically.
|
|
460
|
-
#
|
|
461
|
-
# .. versionadded:: 2.23
|
|
461
|
+
|
|
462
462
|
if isinstance(location, OffDeckType) and self._api_version < APIVersion(2, 15):
|
|
463
463
|
raise APIVersionError(
|
|
464
464
|
api_element="Loading a labware off-deck",
|
|
@@ -1391,13 +1391,13 @@ class ProtocolContext(CommandPublisher):
|
|
|
1391
1391
|
version: Optional[int] = None,
|
|
1392
1392
|
) -> Labware:
|
|
1393
1393
|
"""
|
|
1394
|
-
Load a stack of Lids onto a valid
|
|
1394
|
+
Load a stack of Opentrons Tough Auto-Sealing Lids onto a valid deck location or adapter.
|
|
1395
1395
|
|
|
1396
1396
|
:param str load_name: A string to use for looking up a lid definition.
|
|
1397
|
-
You can find the ``load_name`` for any
|
|
1397
|
+
You can find the ``load_name`` for any compatible lid on the Opentrons
|
|
1398
1398
|
`Labware Library <https://labware.opentrons.com>`_.
|
|
1399
1399
|
:param location: Either a :ref:`deck slot <deck-slots>`,
|
|
1400
|
-
like ``1``, ``"1"``, or ``"D1"``, or
|
|
1400
|
+
like ``1``, ``"1"``, or ``"D1"``, or a valid Opentrons Adapter.
|
|
1401
1401
|
:param int quantity: The quantity of lids to be loaded in the stack.
|
|
1402
1402
|
:param adapter: An adapter to load the lid stack on top of. Accepts the same
|
|
1403
1403
|
values as the ``load_name`` parameter of :py:meth:`.load_adapter`. The
|
|
@@ -1418,9 +1418,10 @@ class ProtocolContext(CommandPublisher):
|
|
|
1418
1418
|
leave this unspecified to let ``load_lid_stack()`` choose a version
|
|
1419
1419
|
automatically.
|
|
1420
1420
|
|
|
1421
|
-
:return: The initialized and loaded labware object representing the
|
|
1421
|
+
:return: The initialized and loaded labware object representing the lid stack.
|
|
1422
|
+
|
|
1423
|
+
.. versionadded:: 2.23
|
|
1422
1424
|
|
|
1423
|
-
:meta private:
|
|
1424
1425
|
"""
|
|
1425
1426
|
if self._api_version < validation.LID_STACK_VERSION_GATE:
|
|
1426
1427
|
raise APIVersionError(
|
|
@@ -1479,9 +1480,9 @@ class ProtocolContext(CommandPublisher):
|
|
|
1479
1480
|
pick_up_offset: Optional[Mapping[str, float]] = None,
|
|
1480
1481
|
drop_offset: Optional[Mapping[str, float]] = None,
|
|
1481
1482
|
) -> Labware | None:
|
|
1482
|
-
"""Move a lid from a valid source to a new location. Can return a
|
|
1483
|
+
"""Move a compatible lid from a valid source to a new location. Can return a lid stack if one is created.
|
|
1483
1484
|
|
|
1484
|
-
:param source_location:
|
|
1485
|
+
:param source_location: The lid's starting location. This is either:
|
|
1485
1486
|
|
|
1486
1487
|
* A deck slot like ``1``, ``"1"``, or ``"D1"``. See :ref:`deck-slots`.
|
|
1487
1488
|
* A labware or adapter that's already been loaded on the deck
|
|
@@ -1498,7 +1499,7 @@ class ProtocolContext(CommandPublisher):
|
|
|
1498
1499
|
with :py:meth:`load_labware` or :py:meth:`load_adapter`.
|
|
1499
1500
|
* The special constant :py:obj:`OFF_DECK`.
|
|
1500
1501
|
|
|
1501
|
-
:param use_gripper: Whether to use the Flex Gripper
|
|
1502
|
+
:param use_gripper: Whether to use the Flex Gripper to move the lid.
|
|
1502
1503
|
|
|
1503
1504
|
* If ``True``, use the gripper to perform an automatic
|
|
1504
1505
|
movement. This will raise an error in an OT-2 protocol.
|
|
@@ -1515,7 +1516,8 @@ class ProtocolContext(CommandPublisher):
|
|
|
1515
1516
|
labware's current and new locations are accessible, i.e., open the Thermocycler lid
|
|
1516
1517
|
or open the Heater-Shaker's labware latch.
|
|
1517
1518
|
|
|
1518
|
-
|
|
1519
|
+
.. versionadded:: 2.23
|
|
1520
|
+
|
|
1519
1521
|
"""
|
|
1520
1522
|
source: Union[LabwareCore, DeckSlotName, StagingSlotName]
|
|
1521
1523
|
if isinstance(source_location, Labware):
|
|
@@ -397,26 +397,26 @@ from .liquid_probe import (
|
|
|
397
397
|
TryLiquidProbeCommandType,
|
|
398
398
|
)
|
|
399
399
|
|
|
400
|
-
from .
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
)
|
|
407
|
-
from .
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
)
|
|
414
|
-
from .
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
400
|
+
from .seal_pipette_to_tip import (
|
|
401
|
+
SealPipetteToTip,
|
|
402
|
+
SealPipetteToTipParams,
|
|
403
|
+
SealPipetteToTipCreate,
|
|
404
|
+
SealPipetteToTipResult,
|
|
405
|
+
SealPipetteToTipCommandType,
|
|
406
|
+
)
|
|
407
|
+
from .unseal_pipette_from_tip import (
|
|
408
|
+
UnsealPipetteFromTip,
|
|
409
|
+
UnsealPipetteFromTipParams,
|
|
410
|
+
UnsealPipetteFromTipCreate,
|
|
411
|
+
UnsealPipetteFromTipResult,
|
|
412
|
+
UnsealPipetteFromTipCommandType,
|
|
413
|
+
)
|
|
414
|
+
from .pressure_dispense import (
|
|
415
|
+
PressureDispense,
|
|
416
|
+
PressureDispenseParams,
|
|
417
|
+
PressureDispenseCreate,
|
|
418
|
+
PressureDispenseResult,
|
|
419
|
+
PressureDispenseCommandType,
|
|
420
420
|
)
|
|
421
421
|
|
|
422
422
|
__all__ = [
|
|
@@ -722,22 +722,22 @@ __all__ = [
|
|
|
722
722
|
"TryLiquidProbeCreate",
|
|
723
723
|
"TryLiquidProbeResult",
|
|
724
724
|
"TryLiquidProbeCommandType",
|
|
725
|
-
#
|
|
726
|
-
"
|
|
727
|
-
"
|
|
728
|
-
"
|
|
729
|
-
"
|
|
730
|
-
"
|
|
731
|
-
#
|
|
732
|
-
"
|
|
733
|
-
"
|
|
734
|
-
"
|
|
735
|
-
"
|
|
736
|
-
"
|
|
737
|
-
#
|
|
738
|
-
"
|
|
739
|
-
"
|
|
740
|
-
"
|
|
741
|
-
"
|
|
742
|
-
"
|
|
725
|
+
# seal command bundle
|
|
726
|
+
"SealPipetteToTip",
|
|
727
|
+
"SealPipetteToTipParams",
|
|
728
|
+
"SealPipetteToTipCreate",
|
|
729
|
+
"SealPipetteToTipResult",
|
|
730
|
+
"SealPipetteToTipCommandType",
|
|
731
|
+
# unseal command bundle
|
|
732
|
+
"UnsealPipetteFromTip",
|
|
733
|
+
"UnsealPipetteFromTipParams",
|
|
734
|
+
"UnsealPipetteFromTipCreate",
|
|
735
|
+
"UnsealPipetteFromTipResult",
|
|
736
|
+
"UnsealPipetteFromTipCommandType",
|
|
737
|
+
# pressure dispense command bundle
|
|
738
|
+
"PressureDispense",
|
|
739
|
+
"PressureDispenseParams",
|
|
740
|
+
"PressureDispenseCreate",
|
|
741
|
+
"PressureDispenseResult",
|
|
742
|
+
"PressureDispenseCommandType",
|
|
743
743
|
]
|
|
@@ -109,11 +109,6 @@ class AspirateWhileTrackingImplementation(
|
|
|
109
109
|
current_location = self._state_view.pipettes.get_current_location()
|
|
110
110
|
|
|
111
111
|
state_update = StateUpdate()
|
|
112
|
-
current_well = CurrentWell(
|
|
113
|
-
pipette_id=params.pipetteId,
|
|
114
|
-
labware_id=params.labwareId,
|
|
115
|
-
well_name=params.wellName,
|
|
116
|
-
)
|
|
117
112
|
move_result = await move_to_well(
|
|
118
113
|
movement=self._movement,
|
|
119
114
|
model_utils=self._model_utils,
|
|
@@ -121,7 +116,6 @@ class AspirateWhileTrackingImplementation(
|
|
|
121
116
|
labware_id=params.labwareId,
|
|
122
117
|
well_name=params.wellName,
|
|
123
118
|
well_location=params.wellLocation,
|
|
124
|
-
current_well=current_well,
|
|
125
119
|
operation_volume=-params.volume,
|
|
126
120
|
)
|
|
127
121
|
state_update.append(move_result.state_update)
|