def waitpgm(self, sanitize=True): if not self.ptcrunning: return #print "* Wait for PTC to finish" if sanitize: self.sanitize() # Sanitize tips before waiting for this to be done worklist.comment("Wait for PTC") while self.pgmEndTime-clock.pipetting > 120: # Run any idle programs oldElapsed=clock.pipetting for ip in self.idlePgms: if self.pgmEndTime-clock.pipetting > 120: #print "Executing idle program with %.0f seconds"%(self.pgmEndTime-clock.pipetting) ip(self.pgmEndTime-clock.pipetting-120) if oldElapsed==clock.pipetting: # Nothing was done break worklist.flushQueue() # Just in case clock.pipandthermotime+=(clock.pipetting-self.pgmStartTime) clock.thermotime+=(self.pgmEndTime-clock.pipetting) clock.pipetting=self.pgmStartTime #print "Waiting for PTC with %.0f seconds expected to remain"%(self.pgmEndTime-clock.pipetting) self.lihahome() worklist.pyrun('PTC\\ptcwait.py') worklist.pyrun("PTC\\ptclid.py OPEN") # worklist.pyrun('PTC\\ptcrun.py %s CALC ON'%"COOLDOWN") # worklist.pyrun('PTC\\ptcwait.py') worklist.vector("PTC200lid",decklayout.PTCPOS,worklist.SAFETOEND,True,worklist.DONOTMOVE,worklist.CLOSE) worklist.vector("Hotel 1 Lid",decklayout.HOTELPOS,worklist.SAFETOEND,True,worklist.DONOTMOVE,worklist.OPEN) worklist.vector("PTC200WigglePos",decklayout.PTCPOS,worklist.SAFETOEND,False,worklist.DONOTMOVE,worklist.DONOTMOVE) worklist.vector("PTC200Wiggle",decklayout.PTCPOS,worklist.SAFETOEND,False,worklist.DONOTMOVE,worklist.CLOSE,True) worklist.vector("PTC200Wiggle",decklayout.PTCPOS,worklist.ENDTOSAFE,False,worklist.DONOTMOVE,worklist.OPEN,True) worklist.vector("PTC200WigglePos",decklayout.PTCPOS,worklist.ENDTOSAFE,False,worklist.DONOTMOVE,worklist.DONOTMOVE) worklist.vector("PTC200Wiggle2Pos",decklayout.PTCPOS,worklist.SAFETOEND,False,worklist.DONOTMOVE,worklist.DONOTMOVE) worklist.vector("PTC200Wiggle2",decklayout.PTCPOS,worklist.SAFETOEND,False,worklist.DONOTMOVE,worklist.CLOSE,True) worklist.vector("PTC200Wiggle2",decklayout.PTCPOS,worklist.ENDTOSAFE,False,worklist.DONOTMOVE,worklist.OPEN,True) worklist.vector("PTC200Wiggle2Pos",decklayout.PTCPOS,worklist.ENDTOSAFE,False,worklist.DONOTMOVE,worklist.DONOTMOVE) worklist.vector("PTC200WigglePos",decklayout.PTCPOS,worklist.SAFETOEND,False,worklist.DONOTMOVE,worklist.DONOTMOVE) worklist.vector("PTC200Wiggle",decklayout.PTCPOS,worklist.SAFETOEND,False,worklist.DONOTMOVE,worklist.CLOSE,True) worklist.vector("PTC200Wiggle",decklayout.PTCPOS,worklist.ENDTOSAFE,False,worklist.DONOTMOVE,worklist.OPEN,True) worklist.vector("PTC200WigglePos",decklayout.PTCPOS,worklist.ENDTOSAFE,False,worklist.DONOTMOVE,worklist.DONOTMOVE) self.ptcrunning=False self.moveplate(decklayout.SAMPLEPLATE,"Home") # Mark all samples on plate as unmixed (due to condensation) Sample.notMixed(decklayout.SAMPLEPLATE.name) # Verify plate is in place worklist.vector(decklayout.SAMPLEPLATE.vectorName,decklayout.SAMPLEPLATE,worklist.SAFETOEND,False,worklist.DONOTMOVE,worklist.CLOSE) worklist.vector(decklayout.SAMPLEPLATE.vectorName,decklayout.SAMPLEPLATE,worklist.ENDTOSAFE,False,worklist.OPEN,worklist.DONOTMOVE) worklist.romahome() #worklist.userprompt("Plate should be back on deck. Press return to continue") # Wash tips again to remove any drips that may have formed while waiting for PTC worklist.wash(15,1,5,True)
def sanitize(self,nmix=1,deepvol=20,force=False): 'Deep wash including RNase-Away treatment' fixedTips=(~self.DITIMASK)&15 worklist.flushQueue() if not force and fixedTips==self.cleanTips: # print no sanitize needed worklist.comment("Sanitize not needed cleanTips=%d"%self.cleanTips) return worklist.comment("Sanitize (cleanTips=%d)"%self.cleanTips) worklist.wash(15,1,2) fixedWells=[] if not self.overrideSanitize: for i in range(4): if (fixedTips & (1<<i)) != 0: fixedWells.append(i) decklayout.BLEACH.addhistory("SANITIZE",0,1<<i) worklist.mix(fixedTips,fixedWells,decklayout.BLEACH.mixLC,200,decklayout.BLEACH.plate,nmix,False) worklist.wash(fixedTips,1,deepvol,True) self.cleanTips|=fixedTips # print "* Sanitize" worklist.comment(clock.statusString())
def sanitize(self, nmix=1, deepvol=20, force=False): 'Deep wash including RNase-Away treatment' fixedTips = (~self.DITIMASK) & 15 worklist.flushQueue() if not force and fixedTips == self.cleanTips: # print no sanitize needed worklist.comment("Sanitize not needed cleanTips=%d" % self.cleanTips) return worklist.comment("Sanitize (cleanTips=%d)" % self.cleanTips) worklist.wash(15, 1, 2) fixedWells = [] if not self.overrideSanitize: for i in range(4): if (fixedTips & (1 << i)) != 0: fixedWells.append(i) decklayout.BLEACH.addhistory("SANITIZE", 0, 1 << i) worklist.mix(fixedTips, fixedWells, decklayout.BLEACH.mixLC, 200, decklayout.BLEACH.plate, nmix, False) worklist.wash(fixedTips, 1, deepvol, True) self.cleanTips |= fixedTips # print "* Sanitize" worklist.comment(clock.statusString())
def waitpgm(self, sanitize=True): if not self.ptcrunning: return #print "* Wait for PTC to finish" if sanitize: self.sanitize() # Sanitize tips before waiting for this to be done worklist.comment("Wait for PTC") while self.pgmEndTime - clock.pipetting > 120: # Run any idle programs oldElapsed = clock.pipetting for ip in self.idlePgms: if self.pgmEndTime - clock.pipetting > 120: #print "Executing idle program with %.0f seconds"%(self.pgmEndTime-clock.pipetting) ip(self.pgmEndTime - clock.pipetting - 120) if oldElapsed == clock.pipetting: # Nothing was done break worklist.flushQueue() # Just in case clock.pipandthermotime += (clock.pipetting - self.pgmStartTime) clock.thermotime += (self.pgmEndTime - clock.pipetting) clock.pipetting = self.pgmStartTime #print "Waiting for PTC with %.0f seconds expected to remain"%(self.pgmEndTime-clock.pipetting) worklist.pyrun('PTC\\ptcwait.py') worklist.pyrun("PTC\\ptclid.py OPEN") # worklist.pyrun('PTC\\ptcrun.py %s CALC ON'%"COOLDOWN") # worklist.pyrun('PTC\\ptcwait.py') worklist.vector("PTC200lid", decklayout.PTCPOS, worklist.SAFETOEND, True, worklist.DONOTMOVE, worklist.CLOSE) worklist.vector("Hotel 1 Lid", decklayout.HOTELPOS, worklist.SAFETOEND, True, worklist.DONOTMOVE, worklist.OPEN) worklist.vector("PTC200WigglePos", decklayout.PTCPOS, worklist.SAFETOEND, False, worklist.DONOTMOVE, worklist.DONOTMOVE) worklist.vector("PTC200Wiggle", decklayout.PTCPOS, worklist.SAFETOEND, False, worklist.DONOTMOVE, worklist.CLOSE, True) worklist.vector("PTC200Wiggle", decklayout.PTCPOS, worklist.ENDTOSAFE, False, worklist.DONOTMOVE, worklist.OPEN, True) worklist.vector("PTC200WigglePos", decklayout.PTCPOS, worklist.ENDTOSAFE, False, worklist.DONOTMOVE, worklist.DONOTMOVE) worklist.vector("PTC200Wiggle2Pos", decklayout.PTCPOS, worklist.SAFETOEND, False, worklist.DONOTMOVE, worklist.DONOTMOVE) worklist.vector("PTC200Wiggle2", decklayout.PTCPOS, worklist.SAFETOEND, False, worklist.DONOTMOVE, worklist.CLOSE, True) worklist.vector("PTC200Wiggle2", decklayout.PTCPOS, worklist.ENDTOSAFE, False, worklist.DONOTMOVE, worklist.OPEN, True) worklist.vector("PTC200Wiggle2Pos", decklayout.PTCPOS, worklist.ENDTOSAFE, False, worklist.DONOTMOVE, worklist.DONOTMOVE) worklist.vector("PTC200WigglePos", decklayout.PTCPOS, worklist.SAFETOEND, False, worklist.DONOTMOVE, worklist.DONOTMOVE) worklist.vector("PTC200Wiggle", decklayout.PTCPOS, worklist.SAFETOEND, False, worklist.DONOTMOVE, worklist.CLOSE, True) worklist.vector("PTC200Wiggle", decklayout.PTCPOS, worklist.ENDTOSAFE, False, worklist.DONOTMOVE, worklist.OPEN, True) worklist.vector("PTC200WigglePos", decklayout.PTCPOS, worklist.ENDTOSAFE, False, worklist.DONOTMOVE, worklist.DONOTMOVE) self.ptcrunning = False self.moveplate(decklayout.SAMPLEPLATE, "Home") # Mark all samples on plate as unmixed (due to condensation) Sample.notMixed(decklayout.SAMPLEPLATE.name) # Verify plate is in place worklist.vector(decklayout.SAMPLEPLATE.vectorName, decklayout.SAMPLEPLATE, worklist.SAFETOEND, False, worklist.DONOTMOVE, worklist.CLOSE) worklist.vector(decklayout.SAMPLEPLATE.vectorName, decklayout.SAMPLEPLATE, worklist.ENDTOSAFE, False, worklist.OPEN, worklist.DONOTMOVE) worklist.romahome() #worklist.userprompt("Plate should be back on deck. Press return to continue") # Wash tips again to remove any drips that may have formed while waiting for PTC worklist.wash(15, 1, 5, True)