@@ -165,6 +165,7 @@ class FixtureSettings:
165
165
scale_delay : int
166
166
blank_trials : int
167
167
submerge_depth : float
168
+ retracted_offset : float
168
169
isolate_volumes : bool
169
170
extra : bool
170
171
labware_on_scale : str
@@ -216,6 +217,9 @@ def lookup_key(key: str, csv: List[List[str]]) -> List[str]:
216
217
scale_delay = int (lookup_key ("scale_delay" , csv_params )[0 ])
217
218
blank_trials = int (lookup_key ("blank_trials" , csv_params )[0 ])
218
219
submerge_depth = float (lookup_key ("submerge_depth" , csv_params )[0 ])
220
+ retracted_offset = 5.0
221
+ # TODO maybe make this a CSV option
222
+ # retracted_offset = float(lookup_key("retracted_offset", csv_params)[0])
219
223
volumes_to_test_20ul = [
220
224
float (volume ) for volume in lookup_key ("volumes_to_test_20ul" , csv_params )
221
225
]
@@ -422,6 +426,7 @@ def lookup_key(key: str, csv: List[List[str]]) -> List[str]:
422
426
scale_delay = scale_delay ,
423
427
blank_trials = blank_trials ,
424
428
submerge_depth = submerge_depth ,
429
+ retracted_offset = retracted_offset ,
425
430
isolate_volumes = False ,
426
431
extra = extra ,
427
432
labware_on_scale = labware_on_scale ,
@@ -860,6 +865,7 @@ def aspirate_with_liquid_class(
860
865
transfer_properties : TransferProperties ,
861
866
) -> List [tx_comps_executor .LiquidAndAirGapPair ]:
862
867
"""Aspirate with liquid class."""
868
+ print_info (f"transfer props { transfer_properties } " )
863
869
fixture_settings .recorder .set_sample_tag (
864
870
create_measurement_tag ("aspirate" , volume , channel , trial )
865
871
)
@@ -1015,30 +1021,46 @@ def run_one_test(
1015
1021
transfer_properties = fixture_settings .liquid_class .get_for (
1016
1022
fixture_settings .pipette .name , tip_rack = tiprack_uri
1017
1023
)
1018
- asp_offset = _get_offset_for_channel (
1024
+
1025
+ submerged_offset = _get_offset_for_channel (
1019
1026
fixture_settings , channel , fixture_settings .submerge_depth
1020
1027
)
1021
- disp_offset = _get_offset_for_channel (
1022
- fixture_settings , channel , fixture_settings .submerge_depth
1028
+ retracted_offset = _get_offset_for_channel (
1029
+ fixture_settings , channel , fixture_settings .retracted_offset
1023
1030
)
1024
- disp_retract_offset = _get_offset_for_channel (
1025
- fixture_settings , channel , 5 + fixture_settings .submerge_depth
1031
+
1032
+ # aspirate and dispense submerge start offsets.
1033
+ transfer_properties .aspirate .submerge .start_position .position_reference = (
1034
+ PositionReference .LIQUID_MENISCUS
1026
1035
)
1027
- transfer_properties .aspirate .submerge .start_position .offset = asp_offset
1028
- transfer_properties .dispense .submerge .start_position .offset = disp_offset
1029
- transfer_properties .aspirate .aspirate_position .offset = asp_offset
1030
- transfer_properties .dispense .dispense_position .offset = disp_offset
1031
- transfer_properties .aspirate .retract .end_position .offset = disp_retract_offset
1032
- transfer_properties .dispense .retract .end_position .offset = disp_retract_offset
1036
+ transfer_properties .dispense .submerge .start_position .position_reference = (
1037
+ PositionReference .LIQUID_MENISCUS
1038
+ )
1039
+ transfer_properties .aspirate .submerge .start_position .offset = retracted_offset
1040
+ transfer_properties .dispense .submerge .start_position .offset = retracted_offset
1041
+
1042
+ # aspirate and dispense offsets
1033
1043
transfer_properties .aspirate .aspirate_position .position_reference = (
1034
1044
PositionReference .LIQUID_MENISCUS
1035
1045
)
1036
1046
transfer_properties .dispense .dispense_position .position_reference = (
1037
1047
PositionReference .LIQUID_MENISCUS
1038
1048
)
1049
+
1050
+ transfer_properties .aspirate .aspirate_position .offset = submerged_offset
1051
+ transfer_properties .dispense .dispense_position .offset = submerged_offset
1052
+
1053
+ # aspirate and dispense retract end offsets
1054
+
1055
+ transfer_properties .aspirate .retract .end_position .position_reference = (
1056
+ PositionReference .LIQUID_MENISCUS
1057
+ )
1039
1058
transfer_properties .dispense .retract .end_position .position_reference = (
1040
1059
PositionReference .LIQUID_MENISCUS
1041
1060
)
1061
+ transfer_properties .aspirate .retract .end_position .offset = retracted_offset
1062
+ transfer_properties .dispense .retract .end_position .offset = retracted_offset
1063
+
1042
1064
fixture_settings .pipette ._core .load_liquid_class ( # type: ignore [attr-defined]
1043
1065
name = fixture_settings .liquid_class .name ,
1044
1066
transfer_properties = transfer_properties ,
@@ -1055,7 +1077,7 @@ def run_one_test(
1055
1077
well_top = fixture_settings .liquid_source .top ().point
1056
1078
above_scale = Point (
1057
1079
well_top .x ,
1058
- well_top .y + asp_offset .y ,
1080
+ well_top .y + retracted_offset .y ,
1059
1081
fixture_settings .pipette ._get_last_location_by_api_version ().point .z , # type: ignore [union-attr]
1060
1082
)
1061
1083
fixture_settings .pipette .move_to (Location (above_scale , None ))
0 commit comments