예제 #1
0
def get_stage_map_names(root=None):
    if root is None:
        root = paths.map_dir

    sms = glob_list_directory(root, '.txt', remove_extension=True)
    print(root, sms)
    sms = [si for si in sms if not si.endswith('.center')]
    us = glob_list_directory(paths.user_points_dir, '.yaml', remove_extension=True)
    if us:
        sms.extend(us)
    return sms
예제 #2
0
def get_stage_map_names(root=None):
    if root is None:
        root = paths.map_dir

    sms = glob_list_directory(root, '.txt', remove_extension=True)
    print(root, sms)
    sms = [si for si in sms if not si.endswith('.center')]
    us = glob_list_directory(paths.user_points_dir,
                             '.yaml',
                             remove_extension=True)
    if us:
        sms.extend(us)
    return sms
    def _hops_ext(self):
        def hop_action(name):
            def func():
                return HopsAction(name=name, hop_name=name)

            return func

        actions = []

        for f in glob_list_directory(paths.hops_dir, extension='.yaml', remove_extension=True):
            actions.append(SchemaAddition(id='procedure.{}'.format(f),
                                          factory=hop_action(f),
                                          path='MenuBar/procedures.menu/hops.group'))

        if actions:
            m = SchemaAddition(id='procedures.menu',
                               before='window.menu',
                               after='tools.menu',
                               factory=lambda: SMenu(name='Procedures', id='procedures.menu'),
                               path='MenuBar')
            g = SchemaAddition(id='hops.group',
                               factory=lambda: SGroup(name='Hops', id='hops.group'),
                               path='MenuBar/procedures.menu')
            actions.insert(0, g)
            actions.insert(0, m)

            ext = TaskExtension(actions=actions)
            return ext
    def _scripts_ext(self):
        def script_action(name):
            def func():
                p = os.path.join(paths.spectrometer_scripts_dir, '{}.py'.format(name))
                return SpectrometerScriptAction(name=name, script_path=p)

            return func

        actions = []

        for f in glob_list_directory(paths.spectrometer_scripts_dir, extension='.py', remove_extension=True):
            actions.append(SchemaAddition(id='spectrometer_script.{}'.format(f),
                                          factory=script_action(f),
                                          path='MenuBar/procedures.menu/spectrometer_script.group'))
        if actions:
            m = SchemaAddition(id='procedures.menu',
                               before='window.menu',
                               after='tools.menu',
                               factory=lambda: SMenu(name='Procedures', id='procedures.menu'),
                               path='MenuBar')
            g = SchemaAddition(id='spectrometer_script.group',
                               factory=lambda: SGroup(name='Spectrometer',
                                                      id='spectrometer_script.group'),
                               path='MenuBar/procedures.menu')

            actions.insert(0, g)
            actions.insert(0, m)

            ext = TaskExtension(actions=actions)
            return ext
예제 #5
0
    def _scripts_ext(self):
        def script_action(name):
            def func():
                p = os.path.join(paths.spectrometer_scripts_dir, '{}.py'.format(name))
                return SpectrometerScriptAction(name=name, script_path=p)

            return func

        actions = []

        for f in glob_list_directory(paths.spectrometer_scripts_dir, extension='.py', remove_extension=True):
            actions.append(SchemaAddition(id='spectrometer_script.{}'.format(f),
                                          factory=script_action(f),
                                          path='MenuBar/procedures.menu/spectrometer_script.group'))
        if actions:
            m = SchemaAddition(id='procedures.menu',
                               before='window.menu',
                               after='tools.menu',
                               factory=lambda: SMenu(name='Procedures', id='procedures.menu'),
                               path='MenuBar')
            g = SchemaAddition(id='spectrometer_script.group',
                               factory=lambda: SGroup(name='Spectrometer',
                                                      id='spectrometer_script.group'),
                               path='MenuBar/procedures.menu')

            actions.insert(0, g)
            actions.insert(0, m)

            ext = TaskExtension(actions=actions)
            return ext
예제 #6
0
    def _hops_ext(self):
        def hop_action(name):
            def func():
                return HopsAction(name=name, hop_name=name)

            return func

        actions = []

        for f in glob_list_directory(paths.hops_dir, extension='.yaml', remove_extension=True):
            actions.append(SchemaAddition(id='procedure.{}'.format(f),
                                          factory=hop_action(f),
                                          path='MenuBar/procedures.menu/hops.group'))

        if actions:
            m = SchemaAddition(id='procedures.menu',
                               before='window.menu',
                               after='tools.menu',
                               factory=lambda: SMenu(name='Procedures', id='procedures.menu'),
                               path='MenuBar')
            g = SchemaAddition(id='hops.group',
                               factory=lambda: SGroup(name='Hops', id='hops.group'),
                               path='MenuBar/procedures.menu')
            actions.insert(0, g)
            actions.insert(0, m)

            ext = TaskExtension(actions=actions)
            return ext
예제 #7
0
    def _setup_pattern_extensions(self, exts, actions=None):
        if actions is None:
            actions = []

        lactions = []
        for f in glob_list_directory(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))
예제 #8
0
    def _task_extensions_default(self):
        ex = [TaskExtension(actions=[SchemaAddition(id='refresh_canvas',
                                                    factory=RefreshCanvasAction,
                                                    path='MenuBar/tools.menu'),
                                     SchemaAddition(id='stopwatch',
                                                    factory=StopWatchAction,
                                                    path='MenuBar/tools.menu')])]

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

            actions = []
            for f in glob_list_directory(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/extraction_line.group'))

            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'))

                actions.insert(1, SchemaAddition(id='extraction_line.group',
                                                 factory=lambda: SGroup(name='ExtractionLine',
                                                                        id='extraction_line.group'),
                                                 path='MenuBar/procedures.menu'))
                ex.append(TaskExtension(actions=actions))
            else:
                self.warning('no procedure scripts located in "{}"'.format(paths.procedures_dir))
        return ex
예제 #9
0
    def load(self, **kw):
        names = glob_list_directory(self.root, remove_extension=True, extension='.p')
        if 'Default' not in names:
            item = self.item_klass()
            item.name = 'Default'
            self.dump_item(item)
            names = glob_list_directory(self.root, 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)
예제 #10
0
    def load(self, **kw):
        names = glob_list_directory(self.root, remove_extension=True, extension='.p')
        if 'Default' not in names:
            item = self.item_klass()
            item.name = 'Default'
            self.dump_item(item)
            names = glob_list_directory(self.root, 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)
예제 #11
0
    def load(self):
        self.load_molecular_weights()
        self.load_detectors()
        self.magnet.load()
        # load local configurations
        self.spectrometer_configurations = glob_list_directory(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)

        return config
예제 #12
0
    def _task_extensions_default(self):
        ex = [
            TaskExtension(actions=[
                SchemaAddition(id='refresh_canvas',
                               factory=RefreshCanvasAction,
                               path='MenuBar/tools.menu'),
                SchemaAddition(id='stopwatch',
                               factory=StopWatchAction,
                               path='MenuBar/tools.menu')
            ])
        ]

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

            actions = []
            for f in glob_list_directory(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/extraction_line.group'))

            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'))

                actions.insert(
                    1,
                    SchemaAddition(
                        id='extraction_line.group',
                        factory=lambda: SGroup(name='ExtractionLine',
                                               id='extraction_line.group'),
                        path='MenuBar/procedures.menu'))
                ex.append(TaskExtension(actions=actions))
            else:
                self.warning('no procedure scripts located in "{}"'.format(
                    paths.procedures_dir))
        return ex
예제 #13
0
    def load(self):
        self.load_molecular_weights()
        self.load_detectors()
        self.magnet.load()
        # load local configurations
        self.spectrometer_configurations = glob_list_directory(
            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)

        return config
예제 #14
0
    def _setup_pattern_extensions(self, exts, actions=None):
        if actions is None:
            actions = []

        lactions = []
        for f in glob_list_directory(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))
예제 #15
0
 def _load_available_names(self):
     ps = glob_list_directory(paths.fits_dir, extension='.yaml', remove_extension=True)
     self.available_names = ps
 def _get_available_default_fits(self):
     return glob_list_directory(paths.fits_dir, extension='.yaml', remove_extension=True)
 def _get_available_hops(self):
     return glob_list_directory(os.path.join(paths.measurement_dir, 'hops'),
                                extension='.txt', remove_extension=True)
예제 #18
0
 def _load_names(self):
     names = glob_list_directory(self.root, remove_extension=True, extension='.p')
     self.names = names
예제 #19
0
 def get_irradiation_holder_names(self):
     return glob_list_directory(os.path.join(paths.meta_root,
                                             'irradiation_holders'),
                                extension='.txt',
                                remove_extension=True)
예제 #20
0
 def _load_names(self):
     self.names = [
         n for n in glob_list_directory(
             self.persistence_root, extension='.p', remove_extension=True)
         if n != 'selected'
     ]
예제 #21
0
    def load_predefined_templates(self):
        self.debug('load predefined templates')

        root = PipelineTemplateRoot()
        nodes = {n.__name__: n for n in self.nodes}
        node_factories = {v.name: v for v in self.node_factories}
        groups = []

        default = [
            ('Fit',
             (('Define Equilibration', DEFINE_EQUILIBRATION),
              ('Iso Evo', ISOEVO), ('Blanks', BLANKS), ('IC Factor', ICFACTOR),
              ('Flux', FLUX), ('Ca Correction Factors', CA_CORRECTION_FACTORS),
              ('K Correction Factors', K_CORRECTION_FACTORS), ('Audit',
                                                               AUDIT))),
            ('Edit', (('Bulk Edit', BULK_EDIT), )),
            ('Plot',
             (('Ideogram', IDEO), ('CSV Ideogram', CSV_IDEO),
              ('Interpreted Age Ideogram',
               INTERPRETED_AGE_IDEOGRAM), ('Hybrid Ideogram', HYBRID_IDEOGRAM),
              ('SubGroup Ideogram', SUBGROUP_IDEOGRAM), ('Spectrum', SPEC),
              ('Spectrum/Isochron', COMPOSITE), ('Series', SERIES),
              ('InverseIsochron', INVERSE_ISOCHRON),
              ('XY Scatter', XY_SCATTER), ('Regression', REGRESSION_SERIES),
              ('Flux Visualization', FLUX_VISUALIZATION), ('Vertical Flux',
                                                           VERTICAL_FLUX))),
            ('Table',
             (('SubGrouped Analyses', ANALYSIS_TABLE), ('Grouped Analyses',
                                                        SIMPLE_ANALYSIS_TABLE),
              ('Interpreted Age', INTERPRETED_AGE_TABLE), ('Report', REPORT))),
            ('History', (('Ideogram', HISTORY_IDEOGRAM), ('Spectrum',
                                                          HISTORY_SPECTRUM))),
            ('Share', (('CSV Analyses Export', CSV_ANALYSES_EXPORT),
                       ('CSV Raw Data Export', CSV_RAW_DATA_EXPORT))),
            ('Transfer', (('Mass Spec Reduced', MASSSPEC_REDUCED),
                          ('Mass Spec Flux', MASS_SPEC_FLUX)))
        ]

        # predefined_templates contributed to by other plugins
        for name, gs in groupby_key(default + self.predefined_templates,
                                    key=itemgetter(0)):
            grp = PipelineTemplateGroup(name=name)

            templates = [
                PipelineTemplate(n, t, nodes, node_factories) for nn, gg in gs
                for n, t in gg
            ]

            pp = os.path.join(paths.user_pipeline_template_dir, name.lower())
            # add templates from named user directory
            for temp in glob_list_directory(pp,
                                            extension='.yaml',
                                            remove_extension=True):
                path = os.path.join(pp, '{}.yaml'.format(temp))
                templates.append(
                    PipelineTemplate(temp, path, nodes, node_factories))

            grp.templates = templates
            groups.append(grp)

        # add user templates from user directory
        grp = PipelineTemplateGroup(name='User')
        user_templates = []
        for temp in glob_list_directory(paths.user_pipeline_template_dir,
                                        extension='.yaml',
                                        remove_extension=True):
            path = os.path.join(paths.user_pipeline_template_dir,
                                '{}.yaml'.format(temp))
            user_templates.append(
                PipelineTemplate(temp, path, nodes, node_factories))

        grp.templates = user_templates
        groups.append(grp)

        # reorder groups
        ngroups = []
        for gi in DEFAULT_PIPELINE_ROOTS:  # ('Fit', 'Plot', 'Table',...)
            g = next((gii for gii in groups if gii.name == gi), None)
            if g is not None:
                ngroups.append(g)

        # add in groups contributed to by plugins or from users template directories
        for gi in groups:
            if gi.name not in DEFAULT_PIPELINE_ROOTS:
                ngroups.append(gi)

        self.debug('loaded {} user templates'.format(len(user_templates)))

        root.groups = ngroups
        self.pipeline_template_root = root
예제 #22
0
파일: meta_repo.py 프로젝트: NMGRL/pychron
 def get_irradiation_holder_names(self):
     return glob_list_directory(os.path.join(paths.meta_root, 'irradiation_holders'),
                                extension='.txt',
                                remove_extension=True)
예제 #23
0
 def _load_names(self):
     self.names = [n for n in glob_list_directory(self.persistence_root,
                                                  extension='.p',
                                                  remove_extension=True) if n != 'selected']
예제 #24
0
def get_run_blocks():
    p = paths.run_block_dir
    blocks = glob_list_directory(p, '.txt', remove_extension=True)
    return ['RunBlock', LINE_STR] + blocks
예제 #25
0
 def _load_names(self):
     names = glob_list_directory(self.root, remove_extension=True, extension='.p')
     self.names = names
예제 #26
0
 def _load_pattern_names(self):
     self.patterns = glob_list_directory(paths.pattern_dir, extension='.lp', remove_extension=True)
예제 #27
0
파일: engine.py 프로젝트: NMGRL/pychron
    def load_predefined_templates(self):
        self.debug('load predefined templates')

        root = PipelineTemplateRoot()
        nodes = {n.__name__: n for n in self.nodes}
        node_factories = {v.name: v for v in self.node_factories}
        groups = []

        default = [('Fit', (('Define Equilibration', DEFINE_EQUILIBRATION),
                            ('Iso Evo', ISOEVO),
                            ('Blanks', BLANKS),
                            ('IC Factor', ICFACTOR),
                            ('Flux', FLUX),
                            ('Ca Correction Factors', CA_CORRECTION_FACTORS),
                            ('K Correction Factors', K_CORRECTION_FACTORS),
                            ('Bulk Edit', BULK_EDIT),
                            ('Audit', AUDIT))),
                   ('Plot', (('Ideogram', IDEO),
                             ('CSV Ideogram', CSV_IDEO),
                             ('Interpreted Age Ideogram', INTERPRETED_AGE_IDEOGRAM),
                             ('Hybrid Ideogram', HYBRID_IDEOGRAM),
                             ('SubGroup Ideogram', SUBGROUP_IDEOGRAM),
                             ('Spectrum', SPEC),
                             ('Series', SERIES),
                             ('InverseIsochron', INVERSE_ISOCHRON),
                             ('XY Scatter', XY_SCATTER),
                             ('Regression', REGRESSION_SERIES),
                             ('Flux Visualization', FLUX_VISUALIZATION),
                             ('Vertical Flux', VERTICAL_FLUX))),
                   ('Table', (('Analysis', ANALYSIS_TABLE),
                              ('Analysis w/Set IA', ANALYSIS_TABLE_W_IA),
                              ('Interpreted Age', INTERPRETED_AGE_TABLE),
                              ('Report', REPORT))),
                   ('History', (('Ideogram', HISTORY_IDEOGRAM),
                                ('Spectrum', HISTORY_SPECTRUM))),
                   ('Share', (('CSV Analyses Export', CSV_ANALYSES_EXPORT),)),
                   ('Transfer', (('Mass Spec Reduced', MASSSPEC_REDUCED),))]

        # predefined_templates contributed to by other plugins
        for name, gs in groupby_key(default + self.predefined_templates, key=itemgetter(0)):
            grp = PipelineTemplateGroup(name=name)

            templates = [PipelineTemplate(n, t, nodes, node_factories) for nn, gg in gs for n, t in gg]

            pp = os.path.join(paths.user_pipeline_template_dir, name.lower())
            # add templates from named user directory
            for temp in glob_list_directory(pp, extension='.yaml', remove_extension=True):
                path = os.path.join(pp, '{}.yaml'.format(temp))
                templates.append(PipelineTemplate(temp, path, nodes, node_factories))

            grp.templates = templates
            groups.append(grp)

        # add user templates from user directory
        grp = PipelineTemplateGroup(name='User')
        user_templates = []
        for temp in glob_list_directory(paths.user_pipeline_template_dir, extension='.yaml', remove_extension=True):
            path = os.path.join(paths.user_pipeline_template_dir, '{}.yaml'.format(temp))
            user_templates.append(PipelineTemplate(temp, path, nodes, node_factories))

        grp.templates = user_templates
        groups.append(grp)

        # reorder groups
        ngroups = []
        for gi in DEFAULT_PIPELINE_ROOTS:  #('Fit', 'Plot', 'Table',...)
            g = next((gii for gii in groups if gii.name == gi), None)
            if g is not None:
                ngroups.append(g)

        # add in groups contributed to by plugins or from users template directories
        for gi in groups:
            if gi.name not in DEFAULT_PIPELINE_ROOTS:
                ngroups.append(gi)

        self.debug('loaded {} user templates'.format(len(user_templates)))

        root.groups = ngroups
        self.pipeline_template_root = root
예제 #28
0
파일: factory.py 프로젝트: NMGRL/pychron
 def _load_queue_conditionals(self):
     root = paths.queue_conditionals_dir
     cs = glob_list_directory(root, remove_extension=True)
     self.available_conditionals = [NULL_STR] + cs
 def _load_available_names(self):
     ps = glob_list_directory(paths.fits_dir, extension='.yaml', remove_extension=True)
     self.available_names = ps
예제 #30
0
 def _load_queue_conditionals(self):
     root = paths.queue_conditionals_dir
     cs = glob_list_directory(root, remove_extension=True)
     self.available_conditionals = [NULL_STR] + cs
예제 #31
0
 def _load_blocks(self):
     p = paths.run_block_dir
     blocks = glob_list_directory(p, '.txt', remove_extension=True)
     self.blocks = blocks