Hello, I recently acquired a Tecan EVO from another group in my company but the computer that was attached to the machine is missing. When I tried to install evoware on another computer, the computer doesnt detect the machine and I am assuming I need a dongle for the software to work. Thank you so much for making this, so I can get around using evoware. Unfortunately, not having evoware makes development hard since I dont have access to log files from EVO.
I have a few questions. First, this machine uses liquid pumps for aspirating and dispensing instead of a plunger with air. Are there maintenance scripts for priming the system and controlling the MPO unit under the deck? Does someone have a log file for this from evoware?
I would also like to slow down the flow rate, but that argument doesnt seem to change anything when aspirating or dispensing.
Finally, I would like to add a tube holder and trough holder. I copied over the code from Hamilton resources and tried to modify that. I can get the resources on the deck in the simulation mode, but I am running into errors with z_travel not set in parent when trying to aspirate from the tubes.
from typing import Dict, Optional
from pylabrobot.resources.carrier import (
Coordinate,
ResourceHolder,
TubeCarrier,
create_homogeneous_resources,
)
from pylabrobot.resources.tecan.tecan_resource import TecanResource
class TecanTubeCarrier(TubeCarrier, TecanResource):
"""Base class for Tecan tube carriers."""
def __init__(
self,
name: str,
size_x: float,
size_y: float,
size_z: float,
off_x: float,
off_y: float,
z_travel: float,
roma_x: Optional[float] = None,
roma_y: Optional[float] = None,
roma_z_safe: Optional[float] = None,
roma_z_travel: Optional[float] = None,
roma_z_end: Optional[float] = None,
sites: Optional[Dict[int, ResourceHolder]] = None,
category="tecan_trough_carrier",
model: Optional[str] = None,
):
super().__init__(
name,
size_x,
size_y,
size_z,
sites,
category=category,
model=model,
)
self.off_x: float = off_x
self.off_y: float = off_y
self.roma_x = roma_x
self.roma_y = roma_y
self.roma_z_safe = roma_z_safe
self.roma_z_travel = roma_z_travel
self.roma_z_end = roma_z_end
def Tube_CAR_16(name: str) -> TecanTubeCarrier:
"""Tecan cat. no.:
'Sample' carrier for 24 tubes sizes 14.5x60 – 18x120mm.
1 track(T) wide.
"""
return TecanTubeCarrier(
name=name,
size_x=25,
size_y=318.0,
size_z=71.5,
off_x=12.5,
off_y=15,
z_travel=1938,
roma_x=1876,
roma_y=423,
roma_z_safe=946,
roma_z_travel=1938,
roma_z_end=2566,
sites=create_homogeneous_resources(
klass=ResourceHolder,
locations=[
Coordinate(3.0, 7.5 + x * 18.5, 5.75) for x in range(16)
], # TODO: +1.2 to account for the Tube.material_z_thickness, fix container
resource_size_x=18.0,
resource_size_y=18.0,
name_prefix=name,
),
model="Tube_CAR_16",
)