Example #1
0
    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)
Example #2
0
 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())
Example #3
0
 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())
Example #4
0
    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)