Esempio n. 1
0
    def _load_predefined_templates(self):
        self.debug('load predefined templates')
        templates = []
        user_templates = []

        for temp in list_directory2(paths.pipeline_template_dir, extension='.yaml',
                                    remove_extension=True):
            templates.append(temp)
        self.debug('loaded {} pychron templates'.format(len(templates)))

        for temp in list_directory2(paths.user_pipeline_template_dir, extension='.yaml',
                                    remove_extension=True):
            user_templates.append(temp)
        self.debug('loaded {} user templates'.format(len(user_templates)))

        def formatter(t):
            return ' '.join(map(str.capitalize, t.split('_')))

        templates = map(formatter, templates)
        user_templates = map(formatter, user_templates)

        with open(paths.pipeline_template_file, 'r') as rfile:
            tnames = yaml.load(rfile)

        ns = [pt for pt in tnames if pt in templates]
        ns.extend(user_templates)

        self.available_pipeline_templates = ns
Esempio n. 2
0
    def _load_predefined_templates(self):
        self.debug('load predefined templates')
        templates = []
        user_templates = []

        for temp in list_directory2(paths.pipeline_template_dir,
                                    extension='.yaml',
                                    remove_extension=True):
            templates.append(temp)
        self.debug('loaded {} pychron templates'.format(len(templates)))

        for temp in list_directory2(paths.user_pipeline_template_dir,
                                    extension='.yaml',
                                    remove_extension=True):
            user_templates.append(temp)
        self.debug('loaded {} user templates'.format(len(user_templates)))

        def formatter(t):
            return ' '.join(map(str.capitalize, t.split('_')))

        templates = map(formatter, templates)
        user_templates = map(formatter, user_templates)

        with open(paths.pipeline_template_file, 'r') as rfile:
            tnames = yaml.load(rfile)

        ns = [pt for pt in tnames if pt in templates]
        ns.extend(user_templates)

        self.available_pipeline_templates = ns
Esempio n. 3
0
    def refresh_stage_map_names(self):
        sms = list_directory2(self.root, '.txt', remove_extension=True)

        us = list_directory2(paths.user_points_dir, '.yaml', remove_extension=True)
        if us:
            sms.extend(us)

        self.stage_map_names = sms
Esempio n. 4
0
    def refresh_stage_map_names(self):
        sms = list_directory2(self.root, '.txt', remove_extension=True)

        us = list_directory2(paths.user_points_dir,
                             '.yaml',
                             remove_extension=True)
        if us:
            sms.extend(us)

        self.stage_map_names = sms
Esempio n. 5
0
    def _task_extensions_default(self):
        def efactory():
            return SMenu(id='laser.menu', name='Laser')

        actions = [SchemaAddition(id='Laser',
                                  factory=efactory,
                                  path='MenuBar',
                                  before='tools.menu',
                                  after='view.menu')]

        exts = [TaskExtension(actions=actions)]

        actions = [SchemaAddition(factory=ShowMotionConfigureAction,
                                  path='MenuBar/laser.menu')]
        for f in list_directory2(paths.pattern_dir, extension='.lp', remove_extension=True):
            actions.append(SchemaAddition(id='pattern.{}'.format(f),
                                          factory=pattern_action(f, self.application, self.name),
                                          path='MenuBar/laser.menu/patterns.menu'))

        if actions:
            actions.insert(0, SchemaAddition(id='patterns.menu',
                                             factory=lambda: SMenu(name='Execute Patterns', id='patterns.menu'),
                                             path='MenuBar/laser.menu'))

            exts.append(TaskExtension(actions=actions))
        else:
            self.warning('no patterns scripts located in "{}"'.format(paths.pattern_dir))

        return exts
Esempio n. 6
0
    def _task_extensions_default(self):
        def efactory():
            return SMenu(id='laser.menu', name='Laser')

        actions = [
            SchemaAddition(id='Laser',
                           factory=efactory,
                           path='MenuBar',
                           before='tools.menu',
                           after='view.menu')
        ]

        exts = [TaskExtension(actions=actions)]

        actions = [
            SchemaAddition(factory=ShowMotionConfigureAction,
                           path='MenuBar/laser.menu')
        ]
        lactions = []
        for f in list_directory2(paths.pattern_dir,
                                 extension='.lp',
                                 remove_extension=True):
            actions.append(
                SchemaAddition(id='pattern.{}'.format(f),
                               factory=pattern_action(f, self.application,
                                                      self.name),
                               path='MenuBar/laser.menu/patterns.menu'))
            lactions.append(
                SchemaAddition(id='pattern.lase.{}'.format(f),
                               factory=pattern_action(f,
                                                      self.application,
                                                      self.name,
                                                      lase=True),
                               path='MenuBar/laser.menu/patterns.lase.menu'))

        if actions:

            actions.insert(
                0,
                SchemaAddition(id='patterns.menu',
                               factory=lambda: SMenu(name='Execute Patterns',
                                                     id='patterns.menu'),
                               path='MenuBar/laser.menu'))

            lactions.insert(
                0,
                SchemaAddition(
                    id='patterns.lase.menu',
                    factory=lambda: SMenu(name='Execute and Lase Patterns',
                                          id='patterns.lase.menu'),
                    path='MenuBar/laser.menu'))

            exts.append(TaskExtension(actions=lactions))
            exts.append(TaskExtension(actions=actions))
        else:
            self.warning('no patterns scripts located in "{}"'.format(
                paths.pattern_dir))

        return exts
Esempio n. 7
0
    def load(self, **kw):
        names = list_directory2(paths.peak_center_config_dir, remove_extension=True, extension='.p')
        if 'Default' not in names:
            item = self.item_klass()
            item.name = 'Default'
            self.dump_item(item)
            names = list_directory2(paths.peak_center_config_dir, remove_extension=True, extension='.p')

        name = 'Default'
        p = os.path.join(paths.hidden_dir, add_extension('config', '.p'))
        if os.path.isfile(p):
            with open(p, 'rb') as rfile:
                obj = pickle.load(rfile)
                name = obj.get('name', 'Default')

        self.names = names
        self.active_name = name

        self.active_item.trait_set(**kw)
Esempio n. 8
0
    def load(self):
        """
        load detectors
        load setupfiles/spectrometer/config.cfg file
        load magnet
        load deflections coefficients
        :return:
        """
        self.load_detectors()

        # load local configurations
        self.spectrometer_configurations = list_directory2(paths.spectrometer_config_dir,
                                                           remove_extension=True,
                                                           extension='.cfg')

        name = get_spectrometer_config_name()
        sc, _ = os.path.splitext(name)
        self.spectrometer_configuration = sc

        p = get_spectrometer_config_path(name)
        config = self.get_configuration_writer(p)
        pd = 'Protection'

        if config.has_section(pd):

            self.magnet.use_beam_blank = self.config_get(config, pd, 'use_beam_blank',
                                                         cast='boolean', default=False)
            self.magnet.use_detector_protection = self.config_get(config, pd,
                                                                  'use_detector_protection',
                                                                  cast='boolean', default=False)
            self.magnet.beam_blank_threshold = self.config_get(config, pd,
                                                               'beam_blank_threshold', cast='float', default=0.1)

            # self.magnet.detector_protection_threshold = self.config_get(config, pd,
            # 'detector_protection_threshold',
            # cast='float', default=0.1)
            ds = self.config_get(config, pd, 'detectors')
            if ds:
                ds = ds.split(',')
                self.magnet.protected_detectors = ds
                for di in ds:
                    self.info('Making protection available for detector "{}"'.format(di))

        if config.has_section('Deflections'):
            if config.has_option('Deflections', 'max'):
                v = config.getint('Deflections', 'max')
                if v:
                    self.max_deflection = v

        self.magnet.load()

        self.debug('Detectors {}'.format(self.detectors))
        for d in self.detectors:
            d.load_deflection_coefficients()
Esempio n. 9
0
    def load(self, **kw):
        names = list_directory2(paths.peak_center_config_dir,
                                remove_extension=True,
                                extension='.p')
        if 'Default' not in names:
            item = self.item_klass()
            item.name = 'Default'
            self.dump_item(item)
            names = list_directory2(paths.peak_center_config_dir,
                                    remove_extension=True,
                                    extension='.p')

        name = 'Default'
        p = os.path.join(paths.hidden_dir, add_extension('config', '.p'))
        if os.path.isfile(p):
            with open(p, 'rb') as rfile:
                obj = pickle.load(rfile)
                name = obj.get('name', 'Default')

        self.names = names
        self.active_name = name

        self.active_item.trait_set(**kw)
Esempio n. 10
0
    def _get_nanalyses(self):
        return len(list_directory2(self.path, extension='.yaml'))

        # ============= EOF =============================================
        # def schema_diff(self, attrs):
        # """
        # show the diff for the given schema keyword `attr` between the working and master
        # """
        # repo = self._repo
        # master_commit = repo.heads.master.commit
        # working_commit = repo.heads.working.commit
        #
        #     ds = working_commit.diff(master_commit, create_patch=True)
        #     # ds = working_commit.diff(master_commit)
        #
        #     if not isinstance(attrs, (tuple, list)):
        #         attrs = (attrs, )
        #
        #     attr_diff = {}
        #     for ci in ds.iter_change_type('M'):
        #         a = ci.a_blob.data_stream
        #
        #         ayd = yaml.load(a)
        #         # print 'a', a.read()
        #         b = ci.b_blob.data_stream
        #
        #         byd = yaml.load(b)
        #         for attr in attrs:
        #
        #             try:
        #                 av = ayd[attr]
        #             except KeyError:
        #                 av = None
        #
        #             try:
        #                 bv = byd[attr]
        #             except KeyError:
        #                 bv = None
        #
        #             attr_diff[attr] = av == bv, av, bv
        #
        #     return attr_diff
    def _my_task_extensions_default(self):
        ex = [TaskExtension(actions=[SchemaAddition(id='refresh_canvas',
                                                    factory=RefreshCanvasAction,
                                                    path='MenuBar/tools.menu')])]

        if self.application.get_plugin('pychron.pyscript.plugin'):
            actions = []
            for f in list_directory2(paths.procedures_dir, extension='.py', remove_extension=True):
                actions.append(SchemaAddition(id='procedure.{}'.format(f),
                                              factory=procedure_action(f, self.application),
                                              path='MenuBar/procedures.menu'))

            if actions:
                actions.insert(0, SchemaAddition(id='procedures.menu',
                                                 before='window.menu',
                                                 after='tools.menu',
                                                 factory=lambda: SMenu(name='Procedures', id='procedures.menu'),
                                                 path='MenuBar'))

                ex.append(TaskExtension(actions=actions))
            else:
                logger.warning('no procedure scripts located in "{}"'.format(paths.procedures_dir))
        return ex
    def _task_extensions_default(self):
        ex = [
            TaskExtension(actions=[
                SchemaAddition(id='refresh_canvas',
                               factory=RefreshCanvasAction,
                               path='MenuBar/tools.menu')
            ])
        ]

        if self.application.get_plugin('pychron.pyscript.plugin'):

            actions = []
            for f in list_directory2(paths.procedures_dir,
                                     extension='.py',
                                     remove_extension=True):
                actions.append(
                    SchemaAddition(id='procedure.{}'.format(f),
                                   factory=procedure_action(
                                       f, self.application),
                                   path='MenuBar/procedures.menu'))

            if actions:
                actions.insert(
                    0,
                    SchemaAddition(id='procedures.menu',
                                   before='window.menu',
                                   after='tools.menu',
                                   factory=lambda: SMenu(name='Procedures',
                                                         id='procedures.menu'),
                                   path='MenuBar'))

                ex.append(TaskExtension(actions=actions))
            else:
                self.warning('no procedure scripts located in "{}"'.format(
                    paths.procedures_dir))
        return ex
Esempio n. 13
0
 def _load_queue_conditionals(self):
     root = paths.queue_conditionals_dir
     cs = list_directory2(root, remove_extension=True)
     self.available_conditionals = [NULL_STR] + cs
Esempio n. 14
0
 def _load_names(self):
     names = list_directory2(paths.peak_center_config_dir,
                             remove_extension=True,
                             extension='.p')
     self.names = names
Esempio n. 15
0
 def _load_names(self):
     names = list_directory2(paths.peak_center_config_dir, remove_extension=True, extension='.p')
     self.names = names
 def _load_available_names(self):
     ps = list_directory2(paths.fits_dir, extension='.yaml', remove_extension=True)
     self.available_names = ps
 def _get_available_default_fits(self):
     return list_directory2(paths.fits_dir, extension='.yaml', remove_extension=True)
Esempio n. 18
0
 def _load_queue_conditionals(self):
     root = paths.queue_conditionals_dir
     cs = list_directory2(root, remove_extension=True)
     self.available_conditionals = [NULL_STR] + cs
Esempio n. 19
0
 def _get_nanalyses(self):
     return len(list_directory2(self.path, extension='.yaml'))
Esempio n. 20
0
 def get_irradiation_holder_names(self):
     return list_directory2(os.path.join(paths.meta_root,
                                         'irradiation_holders'),
                            extension='.txt',
                            remove_extension=True)
Esempio n. 21
0
 def _load_blocks(self):
     p = paths.run_block_dir
     blocks = list_directory2(p, '.txt', remove_extension=True)
     self.blocks = blocks
 def _get_available_hops(self):
     return list_directory2(os.path.join(paths.measurement_dir, 'hops'),
                            extension='.txt', remove_extension=True)
Esempio n. 23
0
 def get_irradiation_holder_names(self):
     return list_directory2(os.path.join(paths.meta_dir, 'irradiation_holders'),
                            extension='.txt',
                            remove_extension=True)
 def _get_available_hops(self):
     return list_directory2(os.path.join(paths.measurement_dir, 'hops'),
                            extension='.txt',
                            remove_extension=True)
 def _load_available_names(self):
     ps = list_directory2(paths.fits_dir,
                          extension='.yaml',
                          remove_extension=True)
     self.available_names = ps
Esempio n. 26
0
    def load(self):
        """
        load detectors
        load setupfiles/spectrometer/config.cfg file
        load magnet
        load deflections coefficients

        :return:
        """
        self.load_detectors()

        # load local configurations
        self.spectrometer_configurations = list_directory2(
            paths.spectrometer_config_dir,
            remove_extension=True,
            extension='.cfg')

        name = get_spectrometer_config_name()
        sc, _ = os.path.splitext(name)
        self.spectrometer_configuration = sc

        p = get_spectrometer_config_path(name)
        config = self.get_configuration_writer(p)
        pd = 'Protection'

        if config.has_section(pd):

            self.magnet.use_beam_blank = self.config_get(config, pd,
                                                         'use_beam_blank',
                                                         cast='boolean',
                                                         default=False)
            self.magnet.use_detector_protection = self.config_get(config, pd,
                                                                  'use_detector_protection',
                                                                  cast='boolean',
                                                                  default=False)
            self.magnet.beam_blank_threshold = self.config_get(config, pd,
                                                               'beam_blank_threshold',
                                                               cast='float',
                                                               default=0.1)

            # self.magnet.detector_protection_threshold = self.config_get(config, pd,
            # 'detector_protection_threshold',
            # cast='float', default=0.1)
            ds = self.config_get(config, pd, 'detectors')
            if ds:
                ds = ds.split(',')
                self.magnet.protected_detectors = ds
                for di in ds:
                    self.info(
                        'Making protection available for detector "{}"'.format(
                            di))

        if config.has_section('Deflections'):
            if config.has_option('Deflections', 'max'):
                v = config.getint('Deflections', 'max')
                if v:
                    self.max_deflection = v

        self.magnet.load()

        self.debug('Detectors {}'.format(self.detectors))
        for d in self.detectors:
            d.load_deflection_coefficients()
Esempio n. 27
0
 def _load_names(self):
     self.names = [
         n for n in list_directory2(
             self.persistence_root, extension='.p', remove_extension=True)
         if n != 'selected'
     ]
Esempio n. 28
0
 def _load_names(self):
     self.names = [n for n in list_directory2(self.persistence_root,
                                              extension='.p',
                                              remove_extension=True) if n != 'selected']
Esempio n. 29
0
 def _load_blocks(self):
     p = paths.run_block_dir
     blocks = list_directory2(p, '.txt', remove_extension=True)
     self.blocks = blocks
 def _get_available_default_fits(self):
     return list_directory2(paths.fits_dir,
                            extension='.yaml',
                            remove_extension=True)