mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2026-02-04 13:25:13 +00:00
prcxi blending
This commit is contained in:
@@ -24,7 +24,7 @@ from pylabrobot.liquid_handling.standard import (
|
|||||||
ResourceMove,
|
ResourceMove,
|
||||||
ResourceDrop,
|
ResourceDrop,
|
||||||
)
|
)
|
||||||
from pylabrobot.resources import Tip, Deck, Plate, Well, TipRack, Resource, Container, Coordinate, TipSpot
|
from pylabrobot.resources import Tip, Deck, Plate, Well, TipRack, Resource, Container, Coordinate, TipSpot, Trash
|
||||||
|
|
||||||
from unilabos.devices.liquid_handling.liquid_handler_abstract import LiquidHandlerAbstract
|
from unilabos.devices.liquid_handling.liquid_handler_abstract import LiquidHandlerAbstract
|
||||||
|
|
||||||
@@ -260,7 +260,7 @@ class PRCXI9300Handler(LiquidHandlerAbstract):
|
|||||||
mix_rate: Optional[float] = None,
|
mix_rate: Optional[float] = None,
|
||||||
none_keys: List[str] = [],
|
none_keys: List[str] = [],
|
||||||
):
|
):
|
||||||
return await super().mix(targets, mix_time, mix_vol, height_to_bottom, offsets, mix_rate, none_keys)
|
return await self._unilabos_backend.mix(targets, mix_time, mix_vol, height_to_bottom, offsets, mix_rate, none_keys)
|
||||||
|
|
||||||
def iter_tips(self, tip_racks: Sequence[TipRack]) -> Iterator[Resource]:
|
def iter_tips(self, tip_racks: Sequence[TipRack]) -> Iterator[Resource]:
|
||||||
return super().iter_tips(tip_racks)
|
return super().iter_tips(tip_racks)
|
||||||
@@ -278,6 +278,11 @@ class PRCXI9300Handler(LiquidHandlerAbstract):
|
|||||||
return await super().aspirate(resources, vols, use_channels, flow_rates, offsets, liquid_height,
|
return await super().aspirate(resources, vols, use_channels, flow_rates, offsets, liquid_height,
|
||||||
blow_out_air_volume, spread, **backend_kwargs)
|
blow_out_air_volume, spread, **backend_kwargs)
|
||||||
|
|
||||||
|
async def drop_tips(self, tip_spots: Sequence[Union[TipSpot, Trash]], use_channels: Optional[List[int]] = None,
|
||||||
|
offsets: Optional[List[Coordinate]] = None, allow_nonzero_volume: bool = False,
|
||||||
|
**backend_kwargs):
|
||||||
|
return await super().drop_tips(tip_spots, use_channels, offsets, allow_nonzero_volume, **backend_kwargs)
|
||||||
|
|
||||||
async def dispense(self, resources: Sequence[Container], vols: List[float],
|
async def dispense(self, resources: Sequence[Container], vols: List[float],
|
||||||
use_channels: Optional[List[int]] = None, flow_rates: Optional[List[Optional[float]]] = None,
|
use_channels: Optional[List[int]] = None, flow_rates: Optional[List[Optional[float]]] = None,
|
||||||
offsets: Optional[List[Coordinate]] = None,
|
offsets: Optional[List[Coordinate]] = None,
|
||||||
@@ -439,6 +444,33 @@ class PRCXI9300Backend(LiquidHandlerBackend):
|
|||||||
raise ValueError("No matching Load step found for drop_tips.")
|
raise ValueError("No matching Load step found for drop_tips.")
|
||||||
print("PRCXI9300Backend drop_tips logged.")
|
print("PRCXI9300Backend drop_tips logged.")
|
||||||
|
|
||||||
|
async def mix(
|
||||||
|
self,
|
||||||
|
targets: Sequence[Container],
|
||||||
|
mix_time: int = None,
|
||||||
|
mix_vol: Optional[int] = None,
|
||||||
|
height_to_bottom: Optional[float] = None,
|
||||||
|
offsets: Optional[Coordinate] = None,
|
||||||
|
mix_rate: Optional[float] = None,
|
||||||
|
none_keys: List[str] = [],
|
||||||
|
):
|
||||||
|
volumes = [1]
|
||||||
|
PlateNo = 2
|
||||||
|
hole_col = 2
|
||||||
|
step = self.api_client.Blending(
|
||||||
|
"Left",
|
||||||
|
dosage=int(volumes[0]),
|
||||||
|
plate_no=PlateNo,
|
||||||
|
is_whole_plate=False,
|
||||||
|
hole_row=1,
|
||||||
|
hole_col=hole_col,
|
||||||
|
blending_times=0,
|
||||||
|
balance_height=0,
|
||||||
|
plate_or_hole=f"H{hole_col}-8,T{PlateNo}",
|
||||||
|
hole_numbers="1,2,3,4,5,6,7,8",
|
||||||
|
)
|
||||||
|
self.steps_todo_list.append(step)
|
||||||
|
|
||||||
async def aspirate(self, ops: List[SingleChannelAspiration], use_channels: List[int] = None):
|
async def aspirate(self, ops: List[SingleChannelAspiration], use_channels: List[int] = None):
|
||||||
volumes = [1]
|
volumes = [1]
|
||||||
# volumes = [op.volume for op in ops]
|
# volumes = [op.volume for op in ops]
|
||||||
@@ -893,6 +925,7 @@ if __name__ == "__main__":
|
|||||||
asyncio.run(handler.pick_up_tips([], [], []))
|
asyncio.run(handler.pick_up_tips([], [], []))
|
||||||
asyncio.run(handler.aspirate([], [], []))
|
asyncio.run(handler.aspirate([], [], []))
|
||||||
asyncio.run(handler.dispense([], [], []))
|
asyncio.run(handler.dispense([], [], []))
|
||||||
|
asyncio.run(handler.mix([], mix_time=3, mix_vol=10, height_to_bottom=0.5, offsets=Coordinate(0, 0, 0), mix_rate=100))
|
||||||
asyncio.run(handler.drop_tips([], [], []))
|
asyncio.run(handler.drop_tips([], [], []))
|
||||||
|
|
||||||
# asyncio.run(handler.add_liquid(
|
# asyncio.run(handler.add_liquid(
|
||||||
|
|||||||
Reference in New Issue
Block a user