def runOnFile(self, afile, show = True, jobnr = None): afile = str(afile) if afile == '' or afile is None: od = OpenDialog("Choose image file", None) if od.getFileName() == None: return afile = os.path.join(od.getDirectory(), od.getFileName()) if '.log' in afile: return try: zk = ZeissKeys() msg = Message() print "Hi" if self.jobs is None: IJ.showMessage("You need to first set the parameters") if all([job['pip']=='None' for job in self.jobs]): IJ.showMessage("Nothing to do! At least on job different than None") return 0 #create a copy otherwise self.jobs gets overwritten jobs = copy.deepcopy(self.jobs) random.seed() #create a roiManager in case one is missing and reset it roim = RoiManager.getInstance() if roim == None: roim = RoiManager() roim.runCommand("reset") for i, job in enumerate(self.jobs): jobl = job #not really necessary if jobl['pip'] == 'None': continue self.JOBS_DICT[jobl['pip']] + jobl['task'] + "_" if jobnr is not None: if jobnr == i: #force opening imageDef = self.openFile(afile, self.getPrefix(self.JOBS_DICT[jobl['pip']], jobl['task']), 1) else: continue else: imageDef = self.openFile(afile, self.getPrefix(self.JOBS_DICT[jobl['pip']], jobl['task'])) print imageDef jobl['channel'] = int(jobl['channel']) if imageDef is None: continue #clean up registry for errors IJ.log("Clean up errorMsg registry") IJ.run("Read Write Windows Registry", "action=write location=[HKCU\\"+zk.regkey+"] key="+zk.subkey_errormsg+" value=[""] windows=REG_SZ") [imageC, pixelSize, filepath, filename] = imageDef if jobl['channel'] > len(imageC): raise IOError('Expecting at least ' + str(jobl['channel']) + ' channels. Image has only ' + str(len(imageC)) + ' channel(s)') self.rois = [None]*self.nrOfJobs self.Segs = [None]*self.nrOfJobs self.Procs = [None]*self.nrOfJobs #switch color to Cyan for better visibility IJ.run(imageC[jobl['channel']-1], "Cyan", "") #segment self.Procs[i], self.Segs[i], validParticles, self.rois[i] = segmentChannel_Weka(imageC, **jobl) if validParticles is None: IJ.run("Read Write Windows Registry", "action=write location=[HKCU\\"+zk.regkey+"] key="+zk.subkey_codemic+" value=["+msg.CODE_NOTHING+"] windows=REG_SZ") #write values to registry try: executeTask_Weka(validParticles, **jobl) except Exception, err: self.exitWithError(str(err)) return if self.rois[i] is None: imageC[jobl['channel']-1].show() self.Segs[i].show() self.Procs[i].show() continue if validParticles is None: particle = [] else: particle = [part[0] for part in validParticles] imgOut = autTool.createOutputImg(imageC[jobl['channel']-1], self.rois[i], particle) imgOut.show() self.saveOutputImg(imgOut, filepath, i+1) IJ.run("Collect Garbage", "")
return validParticles test = 0 if test ==0: locDialogParameters('Weka_Metaphase_Detection') if test ==1 : IJ.run("Close All", ""); roim = RoiManager.getInstance() if roim == None: roim = RoiManager() roim.runCommand("reset"); imagePath = r"C:\Users\toni\Code\AutomatedMicroscopy\IJMacros\WekaPipeline\TestImage_1024.tif" imp = IJ.openImage(imagePath) imp.show() kwargs={'pip':'Default', 'task':1, 'channel':1, 'command':"trigger1", 'clspath':"C:\\Users\\toni\\Code\\AutomatedMicroscopy\\IJMacros\\WekaPipeline\\classifier.model", 'nrPart':3, 'Min Intensity':0.8, 'maxCirc': 0.8, 'probThr':0.6} procs, segs, validParticles, rois = segmentChannel_Weka([imp], **kwargs) executeTask_Weka(validParticles, **kwargs) particle = [part[0] for part in validParticles] print particle imgOut = autTool.createOutputImg(imp, rois, particle)