def __init__(self, file_, *args, **kw): super(LoadClassifierDialog, self).__init__(*args, **kw) uifile = splitext(__file__)[0] + ".ui" loadUI(uifile, self) self.setResult(-1) self._file = file_ self.descriptions = dict() self.progressBar.hide() self.loadFileInfo(file_) self.classifier_name.currentIndexChanged[str].connect(self.onClassifierChanged)
def __init__(self, *args, **kw): super(SeededMaskWidget, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.norm.setText("Intesity Norm. ") self.mtype.addItems(SeededMask.masks()) self.mtype.currentTextChanged.connect( self.onMtypeChanged) self.onMtypeChanged(self.mtype.currentText()) self.inner.valueChanged.connect(self.onInnerValueChanged) self.outer.valueChanged.connect(self.onOuterValueChanged)
def __init__(self, file_, *args, **kw): super(LoadClassifierDialog, self).__init__(*args, **kw) uifile = splitext(__file__)[0] + ".ui" loadUI(uifile, self) self.setResult(-1) self._file = file_ self.descriptions = dict() self.progressBar.hide() self.loadFileInfo(file_) self.classifier_name.currentIndexChanged[str].connect( self.onClassifierChanged)
def __init__(self, classifier, labels, sample_info, description, *args, **kw): super(SaveClassifierDialog, self).__init__(*args, **kw) uifile = splitext(__file__)[0] + ".ui" loadUI(uifile, self) self._path = None self._description.setPlainText(description) self.classifier = classifier self.labels = labels self.sinfo = sample_info self.name = classifier.name.replace(" ", "_").lower() self._name.selectAll()
def __init__(self, *args, **kw): super(AtPreferencesDialog, self).__init__(*args, **kw) loadUI(splitext(__file__)[0] + '.ui', self) self.setWindowTitle("Preferences") self._compopts_old = dict() self.loadSettings() self.accepted.connect(self.saveSettings) self.hdf_compression.currentIndexChanged[str].connect( self.updateCompressionOptions) self.hdf_compopts.currentIndexChanged[str].connect( self.compoptsUpdated)
def __init__(self, *args, **kw): super(AtPreferencesDialog, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.setWindowTitle("Preferences") self._compopts_old = dict() self.loadSettings() self.accepted.connect(self.saveSettings) self.hdf_compression.currentIndexChanged[str].connect( self.updateCompressionOptions) self.hdf_compopts.currentIndexChanged[str].connect( self.compoptsUpdated)
def __init__(self, *args, **kw): super(ImportDialog, self).__init__(*args, **kw) loadUI(splitext(__file__)[0] + '.ui', self) for name, scn in FileScanner.iterclasses(): self.structType.addItem(scn.icon(), name) self.structType.setIconSize(QtCore.QSize(48, 24)) self.metadata = None self._files = None self.progressBar.hide() self.segdlg = SegmentationDialog(self) self.segdlg.hide() self.thread = AtThread(self) self.viewer.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding) self.cbar = ChannelBar(self, self.viewer) self.cbox.addWidget(self.cbar) self.cbar.newPixmap.connect(self.viewer.showPixmap, Qt.DirectConnection) self.cbar.newContourImage.connect(self.viewer.contourImage) self.dataFileBtn.clicked.connect(self.onOpenOutFile) self.imageDirBtn.clicked.connect(self.onOpenImageDir) self.startBtn.clicked.connect(self.raw2hdf) self.closeBtn.clicked.connect(self.close) self.closeBtn.clicked.connect(self.cbar.clear) self.segmentationBtn.clicked.connect(self.onSegmentationBtn) self.slider.newValue.connect(self.showObjects) self.slider.valueChanged.connect(self.showImage) self.slider.sliderReleased.connect(self.showObjects) self.slider.sliderPressed.connect(self.cbar.clearContours) self.contoursCb.stateChanged.connect(self.onContours) self.showBBoxes.stateChanged.connect(self.onBBoxes) self.showBBoxes.stateChanged.connect(self.showObjects) self.segdlg.paramsChanged.connect(self.showObjects) self.segdlg.refreshBtn.clicked.connect(self.showObjects) self.segdlg.imageUpdate.connect(self.showImage) self.segdlg.activateChannels.connect(self.cbar.activateChannels) self.segdlg.changeColor.connect(self.cbar.setColor) self.nextBtn.clicked.connect(self.onNextBtn) self.prevBtn.clicked.connect(self.onPrevBtn)
def __init__(self, *args, **kw): super(ImportDialog, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) for name, scn in FileScanner.iterclasses(): self.structType.addItem(scn.icon(), name) self.structType.setIconSize(QtCore.QSize(48, 24)) self.metadata = None self._files = None self.progressBar.hide() self.segdlg = SegmentationDialog(self) self.segdlg.hide() self.thread = AtThread(self) self.viewer.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding) self.cbar = ChannelBar(self, self.viewer) self.cbox.addWidget(self.cbar) self.cbar.newPixmap.connect(self.viewer.showPixmap, Qt.DirectConnection) self.cbar.newContourImage.connect(self.viewer.contourImage) self.dataFileBtn.clicked.connect(self.onOpenOutFile) self.imageDirBtn.clicked.connect(self.onOpenImageDir) self.startBtn.clicked.connect(self.raw2hdf) self.closeBtn.clicked.connect(self.close) self.closeBtn.clicked.connect(self.cbar.clear) self.segmentationBtn.clicked.connect(self.onSegmentationBtn) self.slider.newValue.connect(self.showObjects) self.slider.valueChanged.connect(self.showImage) self.slider.sliderReleased.connect(self.showObjects) self.slider.sliderPressed.connect(self.cbar.clearContours) self.contoursCb.stateChanged.connect(self.onContours) self.showBBoxes.stateChanged.connect(self.onBBoxes) self.showBBoxes.stateChanged.connect(self.showObjects) self.segdlg.paramsChanged.connect(self.showObjects) self.segdlg.refreshBtn.clicked.connect(self.showObjects) self.segdlg.imageUpdate.connect(self.showImage) self.segdlg.activateChannels.connect(self.cbar.activateChannels) self.segdlg.changeColor.connect(self.cbar.setColor) self.nextBtn.clicked.connect(self.onNextBtn) self.prevBtn.clicked.connect(self.onPrevBtn)
def __init__(self, *args, **kw): super(SegmentationDialog, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.setWindowFlags(Qt.Tool) # row count (rowCount from gridlayout is not reliable!) self._rcount = 1 self.pchannel.currentIndexChanged[str].connect(self.onChannelChanged) self.loadBtn.clicked.connect(self.onLoadBtn) self.saveBtn.clicked.connect(self.onSaveBtn) self.watershed.stateChanged.connect(self.emitParamsChanged) self.zsliceMethod.addItems(ZProject.names()) self.zsliceMethod.currentIndexChanged.connect( self.onZSliceMethodChanged) self.zslice.valueChanged.connect(self.emitImageUpdate)
def __init__(self, *args, **kw): super(AtSortWidget, self).__init__(*args, **kw) uifile = join(dirname(__file__), self.__class__.__name__ + ".ui") loadUI(uifile, self) self.treeview.activated.connect(self.onActivated) self.sortAlgorithm.addItems(Sorter.sorters()) self.model = AtSorterItemModel(self) self.treeview.setModel(self.model) self.setupToolBar() self.startSorting.connect( lambda: self.tileview.reorder(force_update=True)) self._channels = tuple()
def __init__(self, *args, **kw): super(AtFeatureSelectionDlg, self).__init__(*args, **kw) uifile = splitext(__file__)[0] + ".ui" loadUI(uifile, self) self.setWindowFlags(Qt.Window) self.regexLbl.setBuddy(self.regex) self.regex.textChanged.connect(self.filterChanged) self.proxyModel = AtSortFilterProxyModel() self.proxyModel.setDynamicSortFilter(False) self.view.setModel(self.proxyModel) self.model = AtFeatureModel(self) self.setSourceModel(self.model) self.selectAll.stateChanged.connect(self.toggleAll) self.selectedOnly.stateChanged.connect(self.view.model().setStateFilter) self.selectionChanged.connect(self.setSelectionByName)
def __init__(self, items, classes, exclude_training_data=True, *args, **kw): super(BarGraph, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.setWindowTitle("Counts grouped by Treatment") self._exclude_td = exclude_training_data self._items = items counter = lambda: defaultdict(lambda: 0) treatments = defaultdict(counter) class_counts = dict() for item in self._items: if self._exclude_td and item.isTrainingSample(): continue treatments[item.treatment][item.class_.name] += 1 class_counts[item.class_.label] = item.class_.name self._plot(class_counts, treatments, classes)
def __init__(self, *args, **kw): super(AtAnnotationWidget, self).__init__(*args, **kw) uifile = join(dirname(__file__), self.__class__.__name__ + ".ui") loadUI(uifile, self) self._classifier_is_valid = False self._prediction_is_valid = False self._modified = True self.saveBtn.clicked.connect(self.onSave) self.loadBtn.clicked.connect(self.onLoadAnnotations) self._setupClassifiers() self.classifiers.currentIndexChanged.connect( self.classifierChanged) self.tileview.emitSelectedItems.connect( self.selectByHashes)
def __init__(self, files, *args, **kw): super(ImageDims, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.files = files self.example.setText("Example: %s" %basename(files[0].file)) self.separator.returnPressed.connect(self.updateRegex) self.coord1.returnPressed.connect(self.updateRegex) self.coord2.returnPressed.connect(self.updateRegex) self.regex.returnPressed.connect(self.updateTree) self.coord1Cb.currentIndexChanged.connect(self.updateRegex) self.coord2Cb.currentIndexChanged.connect(self.updateRegex) self._restoreSettings() self.updateRegex()
def __init__(self, items, indices, classes, title="", exclude_training_data=True, *args, **kw): super(BoxPlot, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.setWindowTitle(title) self._exclude_td = exclude_training_data self._tabs = dict() self._items = items values = lambda: defaultdict(list) data = defaultdict(values) for ch, idx in indices.iteritems(): for item in self._items: if self._exclude_td and item.isTrainingSample(): continue value = item.features[idx] data[item.treatment][item.class_.name].append(value) self._plot(cn.from_abreviation(ch), title, data, classes)
def __init__(self, *args, **kw): super(AtAnnotationWidget, self).__init__(*args, **kw) uifile = join(dirname(__file__), self.__class__.__name__ + ".ui") loadUI(uifile, self) self._classifier_is_valid = False self.saveBtn.clicked.connect(self.onSave) self.loadBtn.clicked.connect(self.onLoadAnnotations) self._setupClassifiers() self.classifiers.currentIndexChanged.connect( self.classifierChanged) self.removeBtn.clicked.connect(self.removeSelected) self.removeAllBtn.clicked.connect(self.removeAll) self.predictBtn.clicked.connect(self.onPredict) self.predictBtn.setText('Predict') self.tileview.emitSelectedItems.connect( self.selectByHashes)
def __init__(self, *args, **kw): super(AtPreferencesDialog, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.setWindowTitle("Preferences") self._compopts_old = dict() for name, value in BatchSizes.iteritems(): self.batchsize.addItem(name, value) self.loadSettings() self.accepted.connect(self.saveSettings) validator = QtGui.QRegExpValidator(QtCore.QRegExp("^\d+(,\d+)*$")) self.haralickDist.setValidator(validator) self.granulometrySizes.setValidator(validator) self.hdf_compression.currentIndexChanged[str].connect( self.updateCompressionOptions) self.hdf_compopts.currentIndexChanged[str].connect( self.compoptsUpdated)
def __init__(self, parent, classifier, *args, **kw): super(CrossValidationDialog, self).__init__(parent=parent, *args, **kw) loadUI(splitext(__file__)[0] + '.ui', self) self.setWindowFlags(Qt.Window) self.classifier = classifier self._tabs = dict() self.applyBtn.clicked.connect(self.onApplyBtn) self.okBtn.clicked.connect(self.onOkBtn) self.crossValBtn.clicked.connect(self.onCrossValiation) self.gridSearchBtn.clicked.connect(self.onGridSearch) self.gridSearchFinished.connect(self.crossValidation) self.gridSearchFinished.connect(self.onApplyBtn) self.gridSearchFinished.connect(parent.predictionInvalid) self.requestDataUpdate.connect(self.updateData) self.features = None self.labels = None self.confusion_matrix = None self.onGridSearch()
def __init__(self, parent, classifier, *args, **kw): super(CrossValidationDialog, self).__init__(parent=parent, *args, **kw) loadUI(splitext(__file__)[0] + ".ui", self) self.setWindowFlags(Qt.Window) self.classifier = classifier self._tabs = dict() self.applyBtn.clicked.connect(self.onApplyBtn) self.okBtn.clicked.connect(self.onOkBtn) self.crossValBtn.clicked.connect(self.onCrossValiation) self.gridSearchBtn.clicked.connect(self.onGridSearch) self.gridSearchFinished.connect(self.crossValidation) self.gridSearchFinished.connect(self.onApplyBtn) self.gridSearchFinished.connect(parent.predictionInvalid) self.requestDataUpdate.connect(self.updateData) self.features = None self.labels = None self.confusion_matrix = None self.onGridSearch()
def __init__(self, parent, range_=(0, 256)): super(AtContrastSliderWidget, self).__init__(parent) loadUI(splitext(__file__)[0]+'.ui', self) self.settings = BaCCalculator(*range_) self.minimum.setRange(*range_) self.maximum.setRange(*range_) self.brightness.setRange(*range_) self.contrast.setRange(*range_) self.settings.valuesUpdated.connect(self.updateSliders) self.minMaxBtn.clicked.connect(self.settings.setImageToMinMax) self.resetBtn.clicked.connect(self.settings.reset) self.autoBtn.clicked.connect(self.settings.setAuto) self.autoBtn.setToolTip("Cuts of 1% of the histogram") self.minimum.valueChanged.connect(self.settings.setMinimum) self.maximum.valueChanged.connect(self.settings.setMaximum) self.contrast.valueChanged.connect(self.settings.setContrast) self.brightness.valueChanged.connect(self.settings.setBrightness) self.minimum.valueChanged.connect(self.valuesToolTip) self.maximum.valueChanged.connect(self.valuesToolTip) self.contrast.valueChanged.connect(self.valuesToolTip) self.brightness.valueChanged.connect(self.valuesToolTip) self.minimum.sliderReleased.connect(self.sliderReleased.emit) self.maximum.sliderReleased.connect(self.sliderReleased.emit) self.contrast.sliderReleased.connect(self.sliderReleased.emit) self.brightness.sliderReleased.connect(self.sliderReleased.emit) self.minMaxBtn.clicked.connect(self.buttonClicked.emit) self.resetBtn.clicked.connect(self.buttonClicked.emit) self.autoBtn.clicked.connect(self.buttonClicked.emit) self.buttonClicked.connect(self.valuesToolTip) self.updateSliders()
def __init__(self, *args, **kw): super(ExpansionWidget, self).__init__(*args, **kw) loadUI(join(dirname(__file__), "expansionregion.ui"), self)
def __init__(self, parent, *args, **kw): super(HoneyCombWidget, self).__init__(parent, *args, **kw) loadUI(splitext(__file__)[0]+'.ui', self)
def __init__(self, collections_file, *args, **kw): if not isfile(collections_file): collections_file = join("doc", basename(collections_file)) collections_file = create_temporary_copy(collections_file) if not isfile(collections_file): raise IOError("%s file not found" % (collections_file)) super(AtAssistant, self).__init__(*args, **kw) loadUI(join(dirname(__file__), "assistant.ui"), self) self.hengine = QtHelp.QHelpEngine(collections_file) self.hengine.setupData() self.hengine.registerDocumentation( collections_file.replace('.qhc', '.qch')) self.hengine.searchEngine().reindexDocumentation() self.hbrowser = AtHelpBrowser() self.hbrowser.setHelpEngine(self.hengine) self.setCentralWidget(self.hbrowser) self.hengine.contentWidget().linkActivated.connect( self.hbrowser.setSource) self._setupToolBar() self.queries = self.hengine.searchEngine().queryWidget() self.results = self.hengine.searchEngine().resultWidget() self.index = self.hengine.indexWidget() self.contents = self.hengine.contentWidget() self.tabifyDockWidget(self.contentDock, self.indexDock) self.tabifyDockWidget(self.contentDock, self.searchDock) self.searchDock.hide() # search dock (hidden) search = QtWidgets.QFrame(self) vbox = QtWidgets.QVBoxLayout(search) vbox.setContentsMargins(3, 3, 3, 3) vbox.addWidget(self.queries) vbox.addWidget(self.results) self.results.requestShowLink.connect(self.hbrowser.setSource) self.index.linkActivated.connect(self.hbrowser.setSource) self.queries.search.connect(self.search) # index dock index = QtWidgets.QFrame(self) filterEdit = AtLineEdit(self) vbox = QtWidgets.QVBoxLayout(index) vbox.setContentsMargins(3, 3, 3, 3) vbox.addWidget(QtWidgets.QLabel("Look for:")) vbox.addWidget(filterEdit) vbox.addWidget(self.index) filterEdit.textChanged.connect(self.filter) self.searchDock.setWidget(search) self.contentDock.setWidget(self.contents) self.indexDock.setWidget(index) self._restoreSettings() self.indexDock.show() self.contentDock.show()
def __init__(self, *args, **kw): super(SaveClassifierDialog, self).__init__(*args, **kw) uifile = splitext(__file__)[0] + ".ui" loadUI(uifile, self) self.pathBtn.clicked.connect(self.onPathBtn)
def __init__(self, collections_file, *args, **kw): if not isfile(collections_file): collections_file = join("doc", basename(collections_file)) collections_file = create_temporary_copy(collections_file) if not isfile(collections_file): raise IOError("%s file not found" %(collections_file)) super(AtAssistant, self).__init__(*args, **kw) loadUI(join(dirname(__file__), "assistant.ui"), self) self.hengine = QtHelp.QHelpEngine(collections_file) self.hengine.setupData() self.hengine.registerDocumentation( collections_file.replace('.qhc', '.qch')) self.hengine.searchEngine().reindexDocumentation() self.hbrowser = AtHelpBrowser() self.hbrowser.setHelpEngine(self.hengine) self.setCentralWidget(self.hbrowser) self.hengine.contentWidget().linkActivated.connect( self.hbrowser.setSource) self._setupToolBar() self.queries = self.hengine.searchEngine().queryWidget() self.results = self.hengine.searchEngine().resultWidget() self.index = self.hengine.indexWidget() self.contents = self.hengine.contentWidget() self.tabifyDockWidget(self.contentDock, self.indexDock) self.tabifyDockWidget(self.contentDock, self.searchDock) self.searchDock.hide() # search dock (hidden) search = QtWidgets.QFrame(self) vbox = QtWidgets.QVBoxLayout(search) vbox.setContentsMargins(3, 3, 3, 3) vbox.addWidget(self.queries) vbox.addWidget(self.results) self.results.requestShowLink.connect(self.hbrowser.setSource) self.index.linkActivated.connect(self.hbrowser.setSource) self.queries.search.connect(self.search) # index dock index = QtWidgets.QFrame(self) filterEdit = AtLineEdit(self) vbox = QtWidgets.QVBoxLayout(index) vbox.setContentsMargins(3, 3, 3, 3) vbox.addWidget(QtWidgets.QLabel("Look for:")) vbox.addWidget(filterEdit) vbox.addWidget(self.index) filterEdit.textChanged.connect(self.filter) self.searchDock.setWidget(search) self.contentDock.setWidget(self.contents) self.indexDock.setWidget(index) self._restoreSettings() self.indexDock.show() self.contentDock.show()
def __init__(self, parent, *args, **kw): super(AdaptiveThresholdWidget, self).__init__(parent, *args, **kw) loadUI(splitext(__file__)[0] + ".ui", self) # controls that trigger interactive image update self.watershed.stateChanged.connect(parent.emitParamsChanged)
def __init__(self, file_=None, *args, **kw): super(AtMainWindow, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.setWindowTitle(version.appstr) self.setAcceptDrops(True) self.featuredlg = AtFeatureSelectionDlg(self) self.featuredlg.hide() self.loaderThread = AtThread(self) self.loader = AtLoader() self._lastdir = expanduser("~") try: self.assistant = AtAssistant(MANUAL) self.assistant.hide() except IOError: QMessageBox.information(self, "Information", "Sorry help files are not installed") self.setupToolbar() self.tileview = AtGraphicsView( parent=self, gsize=self.navToolBar.galsize) self.toolBar.valueChanged.connect(self.tileview.zoom) self.toolBar.classification.stateChanged.connect( self.tileview.toggleClassIndicators, Qt.QueuedConnection) self.toolBar.masking.stateChanged.connect( self.tileview.toggleMasks, Qt.QueuedConnection) self.toolBar.outline.stateChanged.connect( self.tileview.toggleOutlines, Qt.QueuedConnection) self.toolBar.description.stateChanged.connect( self.tileview.toggleDescription, Qt.QueuedConnection) self.setCentralWidget(self.tileview) self.setupDock() self.setupProgressBar() self.loader.fileOpened.connect(self.updateToolbars) self.loader.progressUpdate.connect(self.updateProgressBar) self.loader.itemLoaded.connect(self.tileview.addItem) self.abort.connect(self.loader.abort) self.actionNewFile.triggered.connect(self.newDataFile) self.actionOpenHdf.triggered.connect(self.onFileOpen) self.actionCloseHdf.triggered.connect(self.onFileClose) self.actionPreferences.triggered.connect(self.onPreferences) self.actionExportViewPanel.triggered.connect(self.saveImage) self.actionSaveData2Csv.triggered.connect(self.saveData2Csv) self.actionSaveCountingStats.triggered.connect(self.saveCountingStats) self.actionAboutQt.triggered.connect(self.onAboutQt) self.actionAboutAnnotationTool.triggered.connect(self.onAbout) self.actionFeatureSelection.triggered.connect( self.showFeatureDlg) self.actionHelpManual.triggered.connect(self.onHelpManual) self.actionShortcuts.triggered.connect(self.onHelpShortcuts) self.actionRefresh.triggered.connect(self.refresh) self.actionSelectAll.triggered.connect( self.tileview.actionSelectAll.trigger) self.actionInvertSelection.triggered.connect( self.tileview.actionInvertSelection.trigger) self.tileview.zoomChanged.connect(self.updateZoomFactor) self.featuredlg.selectionChanged.connect( self.annotation.predictionInvalid) self.loader.started.connect(self.onLoadingStarted) self.zoom = QtWidgets.QLabel('100%') self.statusbar.insertPermanentWidget(0, self.zoom) self.statusbar.insertPermanentWidget(1, QtWidgets.QLabel('Number of items:')) self.nitems = QtWidgets.QLabel('0') self.statusbar.insertPermanentWidget(2, self.nitems) self._restoreSettings() self.navToolBar.hide() self.show() if file_ is not None: self.loader.openFile(file_) self.loadItems()
def __init__(self, *args, **kw): super(ImportDialog, self).__init__(*args, **kw) loadUI(splitext(__file__)[0] + ".ui", self) self.zsliceMethod.addItems(ZProject.names()) self.zsliceMethod.currentIndexChanged.connect(self.onZSliceMethodChanged) self.pool = None self._pool_running = False for name, scn in FileScanner.iterclasses(): self.structType.addItem(scn.icon(), name) self.structType.setIconSize(QtCore.QSize(48, 24)) self._files = None self._regex = None self.progressBar.hide() self.segdlg = SegmentationDialog(self) self.segdlg.hide() self.zslice.valueChanged.connect(self.segdlg.setZSlice) self.segdlg.zslice.valueChanged.connect(self.zslice.setValue) self.zsliceMethod.currentIndexChanged.connect(self.segdlg.zsliceMethod.setCurrentIndex) self.segdlg.zsliceMethod.currentIndexChanged.connect(self.zsliceMethod.setCurrentIndex) self.viewer.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding) self.cbar = ChannelBar(self, self.viewer) self.cbox.addWidget(self.cbar) self.cbar.newPixmap.connect(self.viewer.showPixmap, Qt.DirectConnection) self.cbar.newContourImage.connect(self.viewer.contourImage) self.cbar.colorsChanged.connect(self.segdlg.updateRowColors) self.dataFileBtn.clicked.connect(self.onOpenOutFile) self.imageDirBtn.clicked.connect(self.onOpenImageDir) self.startBtn.clicked.connect(self.raw2hdf) self.closeBtn.clicked.connect(self.close) self.closeBtn.clicked.connect(self.cbar.clear) self.segmentationBtn.clicked.connect(self.onSegmentationBtn) self.slider.newValue.connect(self.showObjects) self.slider.valueChanged.connect(self.showImage) self.slider.sliderReleased.connect(self.showObjects) self.slider.sliderPressed.connect(self.cbar.clearContours) self.contoursCb.stateChanged.connect(self.onContours) self.showBBoxes.stateChanged.connect(self.onBBoxes) self.showBBoxes.stateChanged.connect(self.showObjects) self.segdlg.paramsChanged.connect(self.showObjects) self.segdlg.refreshBtn.clicked.connect(self.showObjects) self.segdlg.imageUpdate.connect(self.showImage) self.segdlg.activateChannels.connect(self.cbar.activateChannels) self.segdlg.changeColor.connect(self.cbar.setColor) self.nextBtn.clicked.connect(self.onNextBtn) self.prevBtn.clicked.connect(self.onPrevBtn) self.reloadBtn.clicked.connect(self.onReloadBtn) self.setProgressRange.connect(self.progressBar.setRange) self.setProgress.connect(self.progressBar.setValue, Qt.DirectConnection)
def __init__(self, file_=None, *args, **kw): super(AtMainWindow, self).__init__(*args, **kw) loadUI(splitext(__file__)[0]+'.ui', self) self.setWindowTitle(version.appstr) self.setAcceptDrops(True) self.featuredlg = AtFeatureSelectionDlg(self) self.featuredlg.hide() self.loaderThread = AtThread(self) self.loader = AtLoader() self._lastdir = expanduser("~") try: self.assistant = AtAssistant(MANUAL) self.assistant.hide() except IOError: QMessageBox.information(self, "Information", "Sorry help files are not installed") self.setupToolbar() self.tileview = AtGraphicsView( parent=self, gsize=self.navToolBar.galsize) self.toolBar.valueChanged.connect(self.tileview.zoom) self.toolBar.flagsChanged.connect( self.tileview.setViewFlags, Qt.QueuedConnection) self.setCentralWidget(self.tileview) self.setupDock() self.setupProgressBar() self.loader.fileOpened.connect(self.updateToolbars) self.loader.progressUpdate.connect(self.updateProgressBar) self.loader.itemCountChanged.connect(self.batchToolBar.setItemCount) self.loader.itemLoaded.connect(self.tileview.addItem) self.abort.connect(self.loader.abort) self.actionNewFile.triggered.connect(self.newDataFile) self.actionOpenHdf.triggered.connect(self.onFileOpen) self.actionCloseHdf.triggered.connect(self.onFileClose) self.actionPreferences.triggered.connect(self.onPreferences) # Data Export self.actionExportViewPanel.triggered.connect(self.saveImage) self.actionSaveData2Csv.triggered.connect(self.saveData2Csv) self.actionSaveCountingStats.triggered.connect(self.saveCountingStats) # Plots self.actionGroupedByClass.triggered.connect(self.plotGroupedByClass) self.actionGroupedByTreatment.triggered.connect( self.plotGroupedByTreatment) self.actionIntensity.triggered.connect(self.plotIntesity) self.actionSize.triggered.connect(self.plotSize) self.actionStdDev.triggered.connect(self.plotStdDev) self.actionPlotAll.triggered.connect(self.plotAll) self.actionAboutQt.triggered.connect(self.onAboutQt) self.actionAboutAnnotationTool.triggered.connect(self.onAbout) self.actionFeatureSelection.triggered.connect( self.showFeatureDlg) self.actionHelpManual.triggered.connect(self.onHelpManual) self.actionShortcuts.triggered.connect(self.onHelpShortcuts) self.actionGettingStarted.triggered.connect(self.onHelpGettingStarted) self.actionRefresh.triggered.connect(self.refresh) self.actionSelectAll.triggered.connect( self.tileview.actionSelectAll.trigger) self.actionInvertSelection.triggered.connect( self.tileview.actionInvertSelection.trigger) self.actionSelectByTreatment.triggered.connect(self.selectByTreatment) self.tileview.zoomChanged.connect(self.updateZoomFactor) self.tileview.quickSort.connect(self.sortToolBar.quickSortBtn.toggle) self.tileview.quickSort.connect(self.onQuickSort) self.featuredlg.selectionChanged.connect( self.annotation.predictionInvalid) self.loader.started.connect(self.onLoadingStarted) self.zoom = QtWidgets.QLabel('100%') self.statusbar.insertPermanentWidget(0, self.zoom) self.statusbar.insertPermanentWidget(1, QtWidgets.QLabel('Number of items:')) self.nitems = QtWidgets.QLabel('0') self.statusbar.insertPermanentWidget(2, self.nitems) self._restoreSettings() self.navToolBar.hide() self.show() if file_ is not None: self.loader.openFile(file_) self.loadItems()