示例#1
0
 def __init__(self, cfg=None):
     super(ComputeNode, self).__init__(cfg)
     cfg = self.config()
     logger.info("ComputeNode[%s] proxying cameras %s",
                 self, cfg['cameras'])
     for i in xrange(len(cfg['cameras'])):
         cfg['cameras'][i]['index'] = i
     self.cameras = [base.proxy(c) for c in cfg['cameras']]
     self.frame_callbacks = []
     self.stats_callbacks = []
     self.frames = [None for _ in xrange(len(self.cameras))]
     self.stats = None
     # Setup callbacks
     for (i, c) in enumerate(self.cameras):
         callback = lambda im, index=i: self._receive_frame(im, index)
         stats_callback = lambda stats, index=i: \
             self._receive_stats(stats, index)
         c.new_image.connect(callback)
         c.new_stats.connect(stats_callback)
         self.frame_callbacks.append(callback)
         self.stats_callbacks.append(stats_callback)
     logger.info("ComputeNode[%s] proxying montager %s",
                 self, cfg['montager'])
     self.montager_node = base.proxy(cfg['montager'])
     self.montager_node.new_session.connect(lambda d: self.new_session(d))
     self.montager_node.new_tile.connect(lambda t: self._receive_tile(t))
     self.coarse_montager = None
     self.new_image = pizco.Signal(nargs=1)
     self.new_stats = pizco.Signal(nargs=1)
     self.new_tile = pizco.Signal(nargs=1)
     self.new_coarse_montage = pizco.Signal(nargs=1)
     self.mean_percentiles = None
示例#2
0
 def __init__(self, cfg=None):
     super(PiCameraNode, self).__init__(cfg)
     self.new_image = pizco.Signal(nargs=1)
     self.state = 'disconnected'
     self.streaming = False
     self.cam = None
     self.last_frame_time = time.time()
示例#3
0
 def __init__(self, node):
     self.node = node
     self._state = None
     self._override = False
     self._conditions = None
     #self._errors = []
     self._running = False
     self._future = None
     self.new_state = pizco.Signal(nargs=1)
示例#4
0
    def __init__(self, cfg=None):
        super(MontagerNode, self).__init__(cfg)
        cfg = self.config()
        logger.info("MontagerNode[%s] proxying motion %s", self, cfg['motion'])
        self.motion = base.proxy(cfg['motion'])
        logger.info("MontagerNode[%s] proxying cameras %s", self,
                    cfg['cameras'])
        for i in xrange(len(cfg['cameras'])):
            cfg['cameras'][i]['index'] = i  # to make this 0 based
        self.config(cfg)
        self.cameras = [base.proxy(c) for c in cfg['cameras']]
        self.new_position = pizco.Signal(nargs=1)
        self.position_callback = self.motion.new_position.connect(
            lambda p: self.new_position.emit(p))

        #self.tiles = []
        self.new_tile = pizco.Signal(nargs=1)
        self.new_session = pizco.Signal(nargs=1)
示例#5
0
 def __init__(self, cfg=None):
     base.IONode.__init__(self, cfg)
     cfg = self.config()
     #
     #logger.info("TapeNode[%s] proxying motion %s", self, cfg['motion'])
     self.cmd = None
     self._state = None
     self._barcodes = []
     self.new_state = pizco.Signal(nargs=1)
示例#6
0
 def __init__(self, cfg=None):
     base.IONode.__init__(self, cfg)
     self._locked = False  # software lock to prevent movement
     self._controller = None
     # setup axes (only on creation)
     self._axes = {}
     for chn in ('x', 'y'):
         if chn in cfg:
             self._axes[chn] = cfg[chn]['axis']
     self.new_position = pizco.Signal(nargs=1)
示例#7
0
    def __init__(self, cfg=None):
        super(ControlNode, self).__init__(cfg)
        cfg = self.config()
        # proxy child nodes
        logger.info("ControlNode[%s] proxying tapecamera %s", self,
                    cfg['tapecamera'])
        self.tapecamera = base.proxy(cfg['tapecamera'])
        logger.info("ControlNode[%s] proxying tape %s", self, cfg['tape'])
        self.tape = base.proxy(cfg['tape'])
        logger.info("ControlNode[%s] proxying motion %s", self, cfg['motion'])
        self.motion = base.proxy(cfg['motion'])
        logger.info("ControlNode[%s] proxying cameras %s", self,
                    cfg['cameras'])
        # index is necessary for filename formatting
        for i in xrange(len(cfg['cameras'])):
            #cfg['cameras'][i]['index'] = i + 1  # to make this 1 based
            cfg['cameras'][i]['index'] = i  # to make this 0 based
        self.cameras = [base.proxy(c) for c in cfg['cameras']]
        logger.info("ControlNode[%s] proxying montager %s", self,
                    cfg['montager'])
        if cfg['montager'].get('fake', False):
            logger.info("ControlNode[%s] making fake montager", self)
            self.montager = fakemontager.FakeMontager()
        else:
            self.montager = base.proxy(cfg['montager'])
        logger.info("ControlNode[%s] proxying compute %s", self,
                    cfg['compute'])
        self.compute = base.proxy(cfg['compute'])
        logger.info("ControlNode[%s] proxying scope %s", self, cfg['scope'])
        self.scope = base.proxy(cfg['scope'])

        # store current frames
        self.frame_stats = [None for _ in xrange(len(self.cameras))]
        self.frame_stats_callbacks = []
        for (i, c) in enumerate(self.cameras):
            scbf = lambda stats, index=i: self._receive_frame_stats(
                stats, index)
            c.new_stats.connect(scbf)
            self.frame_stats_callbacks.append(scbf)
        self.new_position = pizco.Signal(nargs=1)
        self.position_callback = self.motion.new_position.connect(
            lambda p: self.new_position.emit(p))

        # setup slot source
        self.slot_source = slotreader.SlotSource(cfg['slots']['source'])
        self._kill = False

        # setup all log levels
        if 'save' in cfg and 'log_level' in cfg['save']:
            # change log level of all nodes
            for n in (self.cameras + [
                    self.tape, self.tapecamera, self.scope, self.montager,
                    self.compute, self
            ]):
                n.set_log_level(cfg['save']['log_level'])
示例#8
0
    def __init__(self, cfg=None):
        base.IONode.__init__(self, cfg)
        self.cam = None
        self.streaming = False
        cfg = self.config()
        self.last_barcodes = None
        self._beam_slot = None
        self.new_image = pizco.Signal(nargs=1)
        self.new_barcodes = pizco.Signal(nargs=1)
        self.new_slot_image = pizco.Signal(nargs=1)
        self.new_beam_slot = pizco.Signal(nargs=1)
        self.last_frame_time = time.time()
        self._frame_count = 0
        self._save_next_frame = False
        self._processing = False
        self._bcf = None
        self._imf = None
        self._slot_list = None
        self.t_slot = pizco.Signal(nargs=1)

        self._build_reel()
示例#9
0
    def __init__(self, cfg=None):
        crop, n_words = utils.lookup_image_dimensions(cfg)
        cfg['crop'] = crop
        cfg['n_words'] = n_words
        base.IONode.__init__(self, cfg)
        self.pool = concurrent.futures.ThreadPoolExecutor(max_workers=1)

        self.new_image = pizco.Signal(nargs=1)
        self.new_stats = pizco.Signal(nargs=1)
        self.new_stats_future = None

        self.buffers = None
        self.camera = None
        self.frame = None
        self.norm = None
        self.analysis = None
        self.saver = None
        self.stats = None
        self.controller = None

        self.meta = {}  # non-grab meta
        self.mean_percentiles = None
        self._stream_cb = None
示例#10
0
 def __init__(self, cfg=None):
     cfg = config.parser.parse(cfg)
     if cfg is not None:
         if not isinstance(cfg, dict):
             raise TypeError("Config must be a dict not {}".format(
                 type(cfg)))
         self._config = cfg
     else:
         self._config = {}
     self.loop = None  # will be replaced with server ioloop
     self._server = None
     self._log_handler = None
     self.config_changed = pizco.Signal(nargs=1)
     logger.info("%s[%s] created", type(self), self)
示例#11
0
 def __init__(self, cfg=None):
     super(MyIONode, self).__init__(cfg)
     self.mysignal1 = pizco.Signal(nargs=1)
     self.mysignal2 = pizco.Signal(nargs=1)
     self._update_cb = None
     self.counter = 0
示例#12
0
 def __init__(self, cfg=None):
     super(StatefulIONode, self).__init__(cfg)
     self.statemachine = None
     self.new_state = pizco.Signal(nargs=1)
     self._state_cb = None
示例#13
0
 def __init__(self, cfg=None):
     base.IONode.__init__(self, cfg)
     self._scope = None
     self.response_signal = pizco.Signal(nargs=1)