示例#1
0
    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"
示例#2
0
    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"
示例#3
0
    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()