def getScale(self): dir_path = self.fileMenuArea.getWorkDir() dirs_with_images = self.fileMenuArea.getCheckedPaths() if len(dirs_with_images) == 0 : return else: if (self.oldDirsWithImages == dirs_with_images) & (not(self.settingsChanged)): print "No changes in selection, setting values from previous calc" self.foci_rescale_min = self.oldFoci_rescale_min self.foci_rescale_max = self.oldFoci_rescale_max print "Foci rescale min max", self.foci_rescale_min, self.foci_rescale_max else: ### move to folderMenu widget? pre_image_dirs = [image_dir for image_dir in dirs_with_images if \ (os.path.isfile(os.path.join(image_dir,self.nuclei_name)) and os.path.isfile(os.path.join(image_dir, self.foci_name)))] image_dirs = [pic_an.image_dir(image_dir, self.nuclei_name, self.foci_name) for image_dir in pre_image_dirs] ######################### name = unicode(QtCore.QDir(dir_path).dirName()) cell_set = pic_an.cell_set(name=name, cells=[]) remained = len(image_dirs) if remained != 0: pbarval = 0 self.pbar.show() self.pbar.setValue(pbarval) pbarstep = (100 - 10 )/ remained print "We have", remained, 'images to load for', name print "Image loading have started for", name for image_dir in image_dirs: image_dir.load_separate_images(self.sensitivity, self.min_cell_size) pbarval +=pbarstep self.pbar.setValue(pbarval) remained -= 1 if remained == 0: print "Image loading have finished for", name else: print remained, 'images remained to load for', name cell_set.extend(image_dir) if len(cell_set.cells) == 0: print "There are no cells in the images from ", dir_path return print "We have", len(cell_set.cells), "cells to analyze for", name cell_set.rescale_foci((None, None)) self.foci_rescale_min, self.foci_rescale_max = cell_set.get_foci_rescale_values() self.oldFoci_rescale_min, self.oldFoci_rescale_max = self.foci_rescale_min, self.foci_rescale_max print "Foci rescale min max", self.foci_rescale_min, self.foci_rescale_max self.pbar.setValue(100) self.oldDirsWithImages = dirs_with_images self.lastCalc=False self.settingsChanged=False else: print "no images is dataset"
def runCalc(self): dir_path = self.fileMenuArea.getWorkDir() dirs_with_images = self.fileMenuArea.getCheckedPaths() if len(dirs_with_images) == 0 : return else: if (self.oldDirsWithImages == dirs_with_images) & self.lastCalc & (not(self.settingsChanged)): print "No changes in selection" else: pre_image_dirs = [image_dir for image_dir in dirs_with_images if \ (os.path.isfile(os.path.join(image_dir,self.nuclei_name)) and os.path.isfile(os.path.join(image_dir, self.foci_name)))] image_dirs = [pic_an.image_dir(image_dir, self.nuclei_name, self.foci_name) for image_dir in pre_image_dirs] name = unicode(QtCore.QDir(dir_path).dirName()) absoutfile = os.path.join(dir_path,unicode(self.outfile)) print absoutfile cell_set = pic_an.cell_set(name=name, cells=[]) remained = len(image_dirs) if remained != 0: pbarval = 0 self.pbar.show() self.pbar.setValue(pbarval) pbarstep = (100 - 10 )/ remained print "We have", remained, 'images to load for', name print "Image loading have started for", name for image_dir in image_dirs: image_dir.load_separate_images(self.sensitivity, self.min_cell_size) pbarval +=pbarstep self.pbar.setValue(pbarval) remained -= 1 if remained == 0: print "Image loading have finished for", name else: print remained, 'images remained to load for', name cell_set.extend(image_dir) if len(cell_set.cells) == 0: print "There are no cells in the images from ", dir_path return print "We have", len(cell_set.cells), "cells to analyze for", name cell_set.rescale_nuclei() cell_set.rescale_foci((self.foci_rescale_min, self.foci_rescale_max)) self.oldFoci_rescale_min, self.oldFoci_rescale_max = cell_set.get_foci_rescale_values() cell_set.calculate_foci(self.peak_min_val_perc, self.foci_min_val_perc, self.foci_radius, self.foci_min_level_on_bg) cell_set.calculate_foci_parameters() cell_set.write_parameters(absoutfile) params = cell_set.get_parameters() self.statusArea.hide() self.statusArea.setItem(0,0,QtGui.QTableWidgetItem(str(params[0]))) for i in xrange(1,13): self.statusArea.setItem((i+1)%2,(i+1)//2,QtGui.QTableWidgetItem(str(params[i]))) #self.update() for image_dir in image_dirs: image_dir.write_all_pic_files(self.nuclei_color, self.foci_color) self.statusArea.show() self.pbar.setValue(100) self.updateImages() self.fileMenuArea.updateWorkDir() self.fileMenuArea.setCheckedFromPaths(dirs_with_images) self.oldDirsWithImages = dirs_with_images self.lastCalc=True self.settingsChanged=False else: print "no images is dataset"
def openWorkDir(self,workdir=None): if not(workdir): workdir=QtGui.QFileDialog.getExistingDirectory(directory=self.workDir) if workdir != "": self.parent.workDir=unicode(workdir) if workdir != "": self.workDir=unicode(workdir) for i in reversed(range(self.folderLayout.count())): self.folderLayout.itemAt(i).widget().setParent(None) self.selectedImage="" self.selectedImageDir="" self.checkedPaths=[] self.nameList=[] folderIterator=QtCore.QDirIterator(self.workDir,QtCore.QDir.Dirs|QtCore.QDir.NoDotAndDotDot) while folderIterator.hasNext(): imageQDir=QtCore.QDir(folderIterator.next()) imageList= imageQDir.entryList(["*.TIF", "*.tif", "*.jpg", "*.JPG", "*.BMP", "*.bmp"]) for name in imageList: if not(name in self.nameList): self.nameList.append(unicode(name)) [self.parent.nuclNameComboBox.removeItem(0) for i in xrange(self.parent.nuclNameComboBox.count())] self.parent.nuclNameComboBox.addItems(self.nameList) if self.parent.settings.nuclei_name in self.nameList: #print self.parent.nuclNameComboBox.itemText(1) self.parent.nuclNameComboBox.setCurrentIndex(self.parent.nuclNameComboBox.findText(self.parent.settings.nuclei_name)) else: self.parent.nuclNameComboBox.setCurrentIndex(0) self.parent.settings.nuclei_name=self.nameList[0] [self.parent.fociNameComboBox.removeItem(1) for i in xrange(1,self.parent.fociNameComboBox.count())] self.parent.fociNameComboBox.addItems(self.nameList) if self.parent.settings.foci_name in self.nameList: self.parent.fociNameComboBox.setCurrentIndex(self.parent.fociNameComboBox.findText(self.parent.settings.foci_name)) else: self.parent.fociNameComboBox.setCurrentIndex(0) self.parent.settings.foci_name='--None--' self.checkAllBox = QtGui.QCheckBox('Check/Uncheck All', self) self.checkAllBox.setChecked(True) self.checkAllBox.stateChanged.connect(lambda: (self.checkAll() if self.checkAllBox.isChecked() else self.unCheckAll())) self.folderLayout.addWidget(self.checkAllBox) self.folderWidgets=[] self.imageDirs=[] self.cell_set = pic_an.cell_set(name=self.workDir, cells=[]) i=0 folderIterator=QtCore.QDirIterator(self.workDir,QtCore.QDir.Dirs|QtCore.QDir.NoDotAndDotDot) while folderIterator.hasNext(): imageQDir=QtCore.QDir(folderIterator.next()) nucleiPath=imageQDir.absolutePath() + QtCore.QDir.separator() + self.parent.settings.nuclei_name fociPath=imageQDir.absolutePath() + QtCore.QDir.separator() + self.parent.settings.foci_name if ((self.parent.settings.foci_name == '--None--')&(QtCore.QFile(nucleiPath).exists())): self.imageDirs.append(pic_an.image_dir(unicode(imageQDir.absolutePath()), unicode(self.parent.settings.nuclei_name))) self.folderWidgets.append(imageFolderWidget(imageQDir)) self.folderLayout.addWidget(self.folderWidgets[-1]) self.folderWidgets[-1].signal_hideall.connect(self.hideAllImageLabels) ############ self.folderWidgets[-1].signal_show_image.connect(lambda key=i: self.updateImage(key)) self.folderWidgets[-1].signal_show_all_images.connect(lambda key=i: self.updateImages(key)) ############ i+=1 elif ((QtCore.QFile(fociPath).exists())&(QtCore.QFile(nucleiPath).exists())): self.imageDirs.append(pic_an.image_dir(unicode(imageQDir.absolutePath()), unicode(self.parent.settings.nuclei_name), unicode(self.parent.settings.foci_name))) self.folderWidgets.append(imageFolderWidget(imageQDir)) self.folderLayout.addWidget(self.folderWidgets[-1]) self.folderWidgets[-1].signal_hideall.connect(self.hideAllImageLabels) ############ self.folderWidgets[-1].signal_show_image.connect(lambda key=i: self.updateImage(key)) self.folderWidgets[-1].signal_show_all_images.connect(lambda key=i: self.updateImages(key)) ############ i+=1 print str(len(self.imageDirs)) + ' dirs found in working directory' try: self.updateImages(0) except IndexError: self.signal_update_images.emit()