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 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
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
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 _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))
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
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)
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)
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
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
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
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))
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)
def _load_names(self): names = glob_list_directory(self.root, remove_extension=True, extension='.p') self.names = names
def get_irradiation_holder_names(self): return glob_list_directory(os.path.join(paths.meta_root, 'irradiation_holders'), extension='.txt', remove_extension=True)
def _load_names(self): self.names = [ n for n in glob_list_directory( self.persistence_root, extension='.p', remove_extension=True) if n != 'selected' ]
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
def get_irradiation_holder_names(self): return glob_list_directory(os.path.join(paths.meta_root, 'irradiation_holders'), extension='.txt', remove_extension=True)
def _load_names(self): self.names = [n for n in glob_list_directory(self.persistence_root, extension='.p', remove_extension=True) if n != 'selected']
def get_run_blocks(): p = paths.run_block_dir blocks = glob_list_directory(p, '.txt', remove_extension=True) return ['RunBlock', LINE_STR] + blocks
def _load_names(self): names = glob_list_directory(self.root, remove_extension=True, extension='.p') self.names = names
def _load_pattern_names(self): self.patterns = glob_list_directory(paths.pattern_dir, extension='.lp', remove_extension=True)
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
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
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_blocks(self): p = paths.run_block_dir blocks = glob_list_directory(p, '.txt', remove_extension=True) self.blocks = blocks