class LabPis: """ Point in Lab Space | e.g. Point of a pipette tip""" default_x = 0 default_y = 0 default_z = 0 default_e = 0 # e.g piston position default_id = 0 def __init__(self, x=default_x,y=default_y,z=default_z,id=default_id,e=default_e): self.x = x self.y = y self.z = z self.e = e self.id = id def __str__(self) -> str: return(f'') class LabPip(LabPis): default_vol = 1000 # pipette volume default_top = 20 # piston top position default_hub = 10 # piston max hub default_fe = 2000 # speed piston def __init__(self, x=LabPis.default_x, y=LabPis.default_y, z=LabPis.default_z, id=LabPis.default_id, e=LabPis.default_e, vol=default_vol,hub=default_hub,fe=default_fe,top=default_top): super().__init__(x=x, y=y, z=z, id=id, e=e) self.vol = vol self.fe = fe self.hub = hub self.top = top def __str__(self) -> str: return super().__str__()[:-1]+f'|top={self.top}|hub={self.hub}|vol={self.vol}|fe={self.fe}>' def sendE(self): return f'\n' def sendXYZ(self): return f'\n' def go_top(self): self.e=self.top return self.sendE() def get_tip(self,l): self.x = l[0] self.y = l[1] self.z = l[2] return self.go_top() + self.sendXYZ() def up(self): self.z = 0 return self.sendXYZ() class LabPipBlock(): """ Pipettenblock description""" def __init__(self,xoffset,yoffset,z,anz,rows,deltax,deltay): self.xoffset = xoffset self.yoffset = yoffset self.anz = anz self.rows = rows self.deltax = deltax self.deltay = deltay self.z = z self.akt = 0 def next(self): if self.akt == self.anz: return f'No more tips !!' else : r = self.anz / self.rows m = self.akt % r # column c = self.akt // r # row self.akt += 1 x = self.xoffset - (m * self.deltax) y = self.yoffset - (c * self.deltax) return x,y,self.z #Job 100myl of A in Vial 1 v1 = LabPis(200,200,100,21) a1 = LabPis(100,100,100,1) p1 = LabPis() lpb = LabPipBlock(200,200,100,20,5,8,10) #for n in range(22): # print (lpb.next()) pip = LabPip(vol=500) pip.fe =5000 #print(pip) print(pip.get_tip(lpb.next())) #print(pip.up()) print(pip)