def core_helper(plate, settings_dict, imagecontainer, position, version, redirect=True, debug=False): """Embeds analysis of a positon in a single function""" # see http://stackoverflow.com/questions/3288595/ # multiprocessing-using-pool-map-on-a-function-defined-in-a-class logger = logging.getLogger(str(os.getpid())) import numpy reload(numpy.core._dotblas) try: settings = ConfigSettings() settings.from_dict(settings_dict) settings.set('General', 'constrain_positions', True) settings.set('General', 'positions', position) environ = CecogEnvironment(version, redirect=redirect, debug=debug) if debug: environ.pprint() analyzer = AnalyzerCore(plate, settings, imagecontainer) post_hdf5_link_list = analyzer.processPositions() return plate, position, copy.deepcopy(post_hdf5_link_list) except Exception as e: errortxt = "plate: %s, position: %s\n" % (plate, position) errortxt = "".join([errortxt] + \ traceback.format_exception(*sys.exc_info())) logger.error(errortxt) raise e.__class__(errortxt)
def __init__(self): RawConfigParser.__init__(self, allow_no_value=True) self.environ = CecogEnvironment(version) self._registry = OrderedDict() self._current_section = None self._old_file_format = False self._section_registry = SectionRegistry() for section_name in self._section_registry.section_names(): self.add_section(section_name) section = self._section_registry.get_section(section_name) for trait_name in section.get_trait_names(): trait = section.get_trait(trait_name) self.set(section_name, trait_name, trait.default_value)
def __init__(self, configfile, outdir, image1, image2=None, image3=None): super(CmdTool, self).__init__() self.environ = CecogEnvironment(version, redirect=False, debug=False) self.mapper = SettingsMapper(configfile) self.images = dict() names = [cl.NAME for cl in self.mapper.CHANNEL_CLASSES] for name, image in zip(names, (image1, image2, image3)): if image is not None: self.images[name] = image self.classifiers = dict() self.outdir = outdir self._setupClassifier()
def core_helper(plate, settings_dict, imagecontainer, position, version, mode="r+", redirect=True): """Embedds analysis of a positon in a single function""" # see http://stackoverflow.com/questions/3288595/ # multiprocessing-using-pool-map-on-a-function-defined-in-a-class logger = logging.getLogger(str(os.getpid())) try: # FIXME numpy 1.11 does not have ._dotblas import numpy.core._dotblas reload(numpy.core._dotblas) except ImportError as e: pass try: settings = ConfigSettings() settings.from_dict(settings_dict) settings.set('General', 'constrain_positions', True) settings.set('General', 'positions', position) environ = CecogEnvironment(version, redirect=redirect) analyzer = PlateAnalyzer(plate, settings, imagecontainer, mode=mode) analyzer() return plate, position except Exception as e: errortxt = "Plate: %s, Site: %s\n" % (plate, position) errortxt = "".join([errortxt] + \ traceback.format_exception(*sys.exc_info())) logger.error(errortxt) raise type(e)(errortxt)
def __init__(self, appname, version, redirect, debug=False, *args, **kw): super(CecogAnalyzer, self).__init__(*args, **kw) self.setWindowTitle("%s-%s" %(appname, version) + '[*]') self.setCentralWidget(QtGui.QFrame(self)) self.setObjectName(appname) self.version = version self.appname = appname self.debug = debug self.environ = CecogEnvironment(version, redirect=redirect, debug=debug) if debug: self.environ.pprint() self._is_initialized = False self._imagecontainer = None self._meta_data = None self._browser = None action_quit = self.create_action('&Quit', slot=self.close) action_pref = self.create_action('&Preferences', slot=self.open_preferences) action_open = self.create_action('&Open Settings...', shortcut=QtGui.QKeySequence.Open, slot=self._on_file_open) action_save = self.create_action('&Save Settings', shortcut=QtGui.QKeySequence.Save, slot=self._on_file_save) self.action_save = action_save action_save_as = self.create_action('&Save Settings As...', shortcut=QtGui.QKeySequence.SaveAs, slot=self._on_file_save_as) menu_file = self.menuBar().addMenu('&File') self.add_actions(menu_file, (action_pref, None, action_open, None, action_save, action_save_as, None, action_quit)) action_open = self.create_action('&Open Browser...', shortcut=QtGui.QKeySequence('CTRL+B'), slot=self._on_browser_open) menu_browser = self.menuBar().addMenu('&Browser') self.add_actions(menu_browser, (action_open, )) action_log = self.create_action('&Show Log Window...', shortcut=QtGui.QKeySequence(Qt.CTRL + Qt.Key_L), slot=self._on_show_log_window) menu_window = self.menuBar().addMenu('&Window') self.add_actions(menu_window, (action_log,)) action_help_startup = self.create_action('&Startup Help...', shortcut=QtGui.QKeySequence.HelpContents, slot=self._on_help_startup) action_about = self.create_action('&About', slot=self.on_about) menu_help = self.menuBar().addMenu('&Help') self.add_actions(menu_help, (action_help_startup, action_about)) qApp._main_window = self qApp._statusbar = QtGui.QStatusBar(self) self.setStatusBar(qApp._statusbar) self._selection = QtGui.QListWidget(self.centralWidget()) self._selection.setViewMode(QtGui.QListView.IconMode) self._selection.setIconSize(QtCore.QSize(35, 35)) self._selection.setGridSize(QtCore.QSize(140, 60)) self._selection.setMovement(QtGui.QListView.Static) self._selection.setMaximumWidth(self._selection.gridSize().width() + 5) self._selection.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self._selection.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Expanding)) self._pages = QtGui.QStackedWidget(self.centralWidget()) self._pages.main_window = self self._settings_filename = None self._settings = GuiConfigSettings(self, SECTION_REGISTRY) self._tab_lookup = OrderedDict() self._tabs = [GeneralFrame(self._settings, self._pages), ObjectDetectionFrame(self._settings, self._pages), FeatureExtractionFrame(self._settings, self._pages), ClassificationFrame(self._settings, self._pages), TrackingFrame(self._settings, self._pages), ErrorCorrectionFrame(self._settings, self._pages), PostProcessingFrame(self._settings, self._pages), OutputFrame(self._settings, self._pages), ProcessingFrame(self._settings, self._pages)] if self.environ.analyzer_config.get('Analyzer', 'cluster_support'): self._tabs.append(ClusterFrame(self._settings, self._pages, self._imagecontainer)) widths = [] for tab in self._tabs: size = self._add_page(tab) widths.append(size.width()) self.set_modules_active(state=False) self._pages.setMinimumWidth(max(widths) + 45) self._selection.currentItemChanged.connect(self._on_change_page) self._selection.setCurrentRow(0) w_logo = QtGui.QLabel(self.centralWidget()) w_logo.setPixmap(QtGui.QPixmap(':cecog_logo_w145')) layout = QtGui.QGridLayout(self.centralWidget()) layout.addWidget(self._selection, 0, 0) layout.addWidget(w_logo, 1, 0, Qt.AlignBottom | Qt.AlignHCenter) layout.addWidget(self._pages, 0, 1, 2, 1) layout.setContentsMargins(1, 1, 1, 1) handler = GuiLogHandler(self) handler.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s') handler.setFormatter(formatter) self.log_window = LogWindow(self, handler) self.log_window.setGeometry(50, 50, 600, 300) logger = logging.getLogger() logger.setLevel(logging.INFO) qApp._image_dialog = None qApp._graphics = None self.setGeometry(0, 0, 1200, 700) self.setMinimumSize(QtCore.QSize(700, 600)) self._is_initialized = True
(options, args) = parser.parse_args() logger = logging.getLogger() handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.INFO) formatter = logging.Formatter('%(asctime)s %(levelname)-6s %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.INFO) logger.info("*************************************************" + '*'*len(version)) logger.info("*** CellCognition - Batch Analyzer - Version %s ***" %version) logger.info("*************************************************" + '*'*len(version)) logger.info('argv: %s' % sys.argv) environ = CecogEnvironment(version) if options.settings is None: parser.error('Settings filename required.') environ = CecogEnvironment(version, redirect=False, debug=False) filename_settings = os.path.abspath(options.settings) # read the settings data from file settings = ConfigSettings() settings.read(filename_settings) settings.set_section(SECTION_NAME_GENERAL) index = options.cluster_index
def __init__(self, appname, version, redirect, settings=None, debug=False, *args, **kw): super(CecogAnalyzer, self).__init__(*args, **kw) self.setWindowTitle("%s-%s" % (appname, version) + '[*]') self.setAcceptDrops(True) self.setCentralWidget(QtWidgets.QFrame(self)) self.setObjectName(appname) self.version = version self.appname = appname self.debug = debug self.environ = CecogEnvironment(version=version, redirect=redirect, debug=debug) if debug: self.environ.pprint() self._is_initialized = False self._imagecontainer = None self._meta_data = None self._browser = None action_quit = self.create_action('&Quit', slot=self.close) action_pref = self.create_action('&Preferences', slot=self.open_preferences) action_load = self.create_action('&Load Settings...', shortcut=QtGui.QKeySequence.Open, slot=self._on_file_open) action_save = self.create_action('&Save Settings', shortcut=QtGui.QKeySequence.Save, slot=self._on_file_save) self.action_save = action_save action_save_as = self.create_action('&Save Settings As...', shortcut=QtGui.QKeySequence.SaveAs, slot=self._on_file_save_as) menu_file = self.menuBar().addMenu('&File') self.add_actions(menu_file, (action_pref, None, action_load, None, action_save, action_save_as, None, action_quit)) action_log = self.create_action('&Log window', shortcut=QtGui.QKeySequence(Qt.CTRL + Qt.Key_L), slot=self._on_show_log_window) action_open = self.create_action('&Browser', shortcut=QtGui.QKeySequence('CTRL+B'), slot=self._on_browser_open) menu_view = self.menuBar().addMenu('&View') self.add_actions(menu_view, (action_log, )) self.add_actions(menu_view, (action_open, )) action_assistant = self.create_action( '&Help', shortcut=QtGui.QKeySequence.HelpContents, slot=self.show_assistant) action_about = self.create_action('&About', slot=self.on_about) action_aboutQt = self.create_action('&About Qt', slot=self.about_qt) menu_help = self.menuBar().addMenu('&Help') self.add_actions(menu_help, (action_assistant, action_about, action_aboutQt)) self.setStatusBar(QtWidgets.QStatusBar(self)) self._selection = QtWidgets.QListWidget(self.centralWidget()) self._selection.setViewMode(QtWidgets.QListView.IconMode) self._selection.setIconSize(QtCore.QSize(35, 35)) self._selection.setGridSize(QtCore.QSize(140, 60)) self._selection.setMovement(QtWidgets.QListView.Static) self._selection.setMaximumWidth(self._selection.gridSize().width() + 5) self._selection.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self._selection.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)) self._pages = FrameStack(self) self._settings_filename = None self._settings = GuiConfigSettings(self) self._tab_lookup = OrderedDict() self._tabs = [ GeneralFrame(self._settings, self._pages, SECTION_NAME_GENERAL), ObjectDetectionFrame(self._settings, self._pages, SECTION_NAME_OBJECTDETECTION), FeatureExtractionFrame(self._settings, self._pages, SECTION_NAME_FEATURE_EXTRACTION), ClassificationFrame(self._settings, self._pages, SECTION_NAME_CLASSIFICATION), TrackingFrame(self._settings, self._pages, SECTION_NAME_TRACKING), EventSelectionFrame(self._settings, self._pages, SECTION_NAME_EVENT_SELECTION), ErrorCorrectionFrame(self._settings, self._pages, SECTION_NAME_ERRORCORRECTION), OutputFrame(self._settings, self._pages, SECTION_NAME_OUTPUT), ProcessingFrame(self._settings, self._pages, SECTION_NAME_PROCESSING) ] # connections for the section frames self._tabs[3].connect_browser_btn(self._on_browser_open) for frame in self._tabs: frame.status_message.connect(self.statusBar().showMessage) app = AppPreferences() if app.cluster_support: clusterframe = ClusterFrame(self._settings, self._pages, SECTION_NAME_CLUSTER) clusterframe.set_imagecontainer(self._imagecontainer) self._tabs.append(clusterframe) try: self.updateStyleSheet(loadStyle(app.stylesheet)) except Exception as e: # proceed with no stylesheet traceback.print_exc() widths = [] for tab in self._tabs: size = self._add_page(tab) widths.append(size.width()) self.set_modules_active(state=False) self._pages.setMinimumWidth(max(widths) + 45) self._selection.currentItemChanged.connect(self._on_change_page) self._selection.setCurrentRow(0) w_logo = QtWidgets.QLabel(self.centralWidget()) w_logo.setPixmap(QtGui.QPixmap(':cecog_logo_w145')) layout = QtWidgets.QGridLayout(self.centralWidget()) layout.addWidget(self._selection, 0, 0) layout.addWidget(w_logo, 1, 0, Qt.AlignBottom | Qt.AlignHCenter) layout.addWidget(self._pages, 0, 1, 2, 1) layout.setContentsMargins(1, 1, 1, 1) self.setGeometry(0, 0, 1250, 800) self.setMinimumSize(QtCore.QSize(700, 600)) self._is_initialized = True self._restore_geometry() self.show() # finally load (demo) - settings if settings is None: self.load_settings(self.environ.demo_settings) elif os.path.isfile(settings): self.load_settings(settings) else: QMessageBox.warning(self, "Warning", "File (%s) does not exist" % settings)
for idx, info in enumerate(import_iter): pass if len(imagecontainer.plates) > 0: plate = imagecontainer.plates[0] imagecontainer.set_plate(plate) return imagecontainer def load_settings(settings_file): settings = GuiConfigSettings(None) settings.read(settings_file) return settings if __name__ == "__main__": import sys from cecog.environment import CecogEnvironment from cecog.version import version environ = CecogEnvironment(version) app = QApplication(sys.argv) settings = load_settings((r'C:\Users\sommerc\data\cecog' '\Settings\exp911_version_150.conf')) imagecontainer = load_image_container_from_settings(settings) browser = Browser(settings, imagecontainer) browser.show() app.exec_()