def traits_view(self): egrp = VGroup(HGroup(Item('ex'), Item('ey')), BorderHGroup(icon_button_editor('increment_down_x', 'arrow_left'), icon_button_editor('increment_up_x', 'arrow_right'), UItem('x_magnitude'), label='X'), BorderHGroup(icon_button_editor('increment_up_y', 'arrow_up'), icon_button_editor('increment_down_y', 'arrow_down'), UItem('y_magnitude'), label='Y'), BorderHGroup(UItem('width'), icon_button_editor('width_increment_minus_button', 'delete'), icon_button_editor('width_increment_plus_button', 'add'), label='Width'), BorderHGroup(UItem('height'), icon_button_editor('height_increment_minus_button', 'delete'), icon_button_editor('height_increment_plus_button', 'add'), label='Height'), UItem('save_button')) g = VGroup(UItem('groups', style='custom', editor=ListEditor(use_notebook=True, page_name='.name', selected='selected_group', editor=InstanceEditor()))) v = View(VGroup(g, egrp)) return v
def traits_view(self): rgrp = BorderHGroup( UItem('selected_reactor_name', editor=EnumEditor(name='reactor_names')), icon_button_editor( 'add_reactor_button', 'add', tooltip='Add Default Production for the selected ' 'Reactor to this Irradiation level'), icon_button_editor('update_reactor_default_button', 'arrow_up', tooltip='Set current as the reactor default'), label='Available Default Productions') pgrp = BorderHGroup( UItem('selected_production_name', editor=EnumEditor(name='production_names')), icon_button_editor('apply_selected_production', 'arrow_left', tooltip='Apply selection'), icon_button_editor('add_production_button', 'database_add', tooltip='Add a Production Ratio'), icon_button_editor('edit_production_button', 'database_edit', enabled_when='selected_production', tooltip='Edit Production Ratio'), label='Production'), pr_group = VGroup(rgrp, pgrp, UItem('selected_production', style='custom'), label='Production Ratios') editor = TabularEditor(adapter=TrayAdapter(), editable=False, selected='selected_tray') tray_grp = VGroup(HGroup( icon_button_editor('add_tray_button', 'add', tooltip='Add a tray from file')), HSplit( UItem('trays', editor=editor, width=0.25), UItem('canvas', editor=ComponentEditor(), width=0.75)), label='Tray') v = okcancel_view(VGroup( HGroup(Item('name'), Item('z')), VGroup(UItem('level_note', style='custom'), label='Level Note', show_border=True), Group(pr_group, tray_grp, layout='tabbed')), width=550, height=650, title=self.title) return v
def _get_edit_group(self): cnt_grp = self._get_cnt_grp() cmp_grp = self._get_cmp_grp() opt_grp = self._get_opt_grp() atype_grp = self._get_atype_grp() act_grp = BorderVGroup( HGroup( Item('action'), Item('nskip', enabled_when='action=="Skip N Runs"', label='N')), HGroup(Item('use_truncation', label='Truncate'), Item('use_termination', label='Terminate')), BorderHGroup(UItem( 'extraction_str', tooltip='''modify extract value for associated runs. e.g. 1. 1,2,3 (increase step i by 1W, step i+1 by 2W, step i+2 by 3W) 2. 10%,50% (increase step i by 10%, step i+1 by 50%)'''), visible_when='action=="Set Extract"', label='Extraction'), label='Modification') edit_grp = VGroup( Item('attr', label='Attribute', editor=myEnumEditor(name='available_attrs')), VGroup(opt_grp, cmp_grp, cnt_grp, atype_grp, act_grp, enabled_when='attr')) return edit_grp
def traits_view(self): v = okcancel_view( BorderHGroup(UItem('delayed_start_enabled'), UItem('start_date', enabled_when='delayed_start_enabled'), UItem('start_time', enabled_when='delayed_start_enabled'), label='Start'), BorderHGroup(UItem('scheduled_stop_enabled'), UItem('stop_date', enabled_when='scheduled_stop_enabled'), UItem('stop_time', enabled_when='scheduled_stop_enabled'), label='Stop'), title='Configure Scheduler') return v
def _get_edit_view(self): tooltip = """'Omit analyses based on the provided criteria. For example x>10 will omit any analysis greater than 10. The value of x depends on the Auxiliary plot e.g. x is age for Analysis Number or K/Ca for KCa. x is simply a placeholder and can be replaced by any letter or word except for a few exceptions (i.e and, or, is, on, if, not...). To filter based on error or %error use "error" and "percent_error". Multiple predicates may be combined with "and", "or". Valid comparators are "<,<=,>,>=,==,!=". "==" means "equals" and "!=" means "not equal". Additional examples 1. x<10 2. age<10 or age>100 3. age<10 or error>1 4. x<=10 or percent_error>50 5. xyz<=10 and error>=0.1""" sigma_tooltip = """Omit analyses greater the N sigma from the arithmetic mean""" fgrp = BorderVGroup(HGroup( Item('filter_str', tooltip=tooltip, label='Filter'), UItem('filter_str_tag')), HGroup( Item('sigma_filter_n', label='Sigma Filter N', tooltip=sigma_tooltip), UItem('sigma_filter_tag')), label='Filtering') v = View( VGroup(HGroup( Item('name', editor=EnumEditor(name='names')), Item('scale', editor=EnumEditor(values=['linear', 'log']))), Item('height'), self._get_yticks_grp(), BorderHGroup(UItem('marker', editor=EnumEditor(values=marker_names)), Item('marker_size', label='Size'), label='Marker'), BorderHGroup(Item('ymin', label='Min'), Item('ymax', label='Max'), label='Y Limits'), fgrp, show_border=True)) return v
def _get_truncate_group(self): grp = VGroup( HGroup( run_factory_item('use_simple_truncation', label='Use Simple'), icon_button_editor( run_factory_name('clear_conditionals'), 'delete', tooltip='Clear Conditionals from selected runs')), BorderHGroup(run_factory_uitem( 'trunc_attr', editor=myEnumEditor(name=run_factory_name('trunc_attrs'))), run_factory_uitem('trunc_comp'), run_factory_uitem('trunc_crit'), spacer(-10), run_factory_item('trunc_start', label='Start Count'), label='Simple'), BorderHGroup( run_factory_item( 'conditionals_path', editor=myEnumEditor(name=run_factory_name('conditionals')), label='Path'), icon_button_editor( run_factory_name('edit_conditionals_button'), 'table_edit', enabled_when=run_factory_name('conditionals_path'), tooltip='Edit the selected conditionals file'), icon_button_editor( run_factory_name('new_conditionals_button'), 'table_add', tooltip='Add a new conditionals file. Duplicated currently ' 'selected file if applicable'), icon_button_editor( run_factory_name('apply_conditionals_button'), 'arrow_left', tooltip='Apply conditionals file to selected analyses'), label='File'), enabled_when=queue_factory_name('ok_make'), label='Run Conditionals') return grp
def _get_global_group(self): g = BorderHGroup( Item('controller.save_enabled', label='Enabled'), Item('controller.fit'), UItem('controller.error_type', width=-75), Item('controller.filter_outliers', label='Filter Outliers'), Item('show_sniff')) gg = BorderVGroup( Item('controller.goodness_threshold', label='Intercept Goodness', tooltip='If % error is greater than "Goodness Threshold" ' 'mark regression as "Bad"'), HGroup( Item( 'controller.slope_goodness', label='Slope Goodness', tooltip='If slope of regression is positive and the isotope ' 'intensity is greater than "Slope Goodness Intensity" ' 'then mark regression as "Bad"'), Item('controller.slope_goodness_intensity', label='Intensity')), Item( 'controller.outlier_goodness', label='Outlier Goodness', tooltip= 'If more than "Outlier Goodness" points are identified as outliers' 'then mark regression as "Bad"'), HGroup(Item('controller.curvature_goodness'), Item('controller.curvature_goodness_at')), HGroup( Item( 'controller.rsquared_goodness', tooltip= 'If R-squared is less than threshold mark regression as "Bad"' )), HGroup( Item( 'controller.signal_to_blank_goodness', tooltip= 'If Blank/Signal*100 greater than threshold mark regression as "Bad"' ))) agrp = self._get_analysis_group() return VGroup( agrp, Item('controller.global_goodness_visible', label='Global Edit Visible'), BorderVGroup(g, gg, label='Global', visible_when='controller.global_goodness_visible'))
def traits_view(self): mi = BorderHGroup(UItem('mean_indicator_fontname'), UItem('mean_indicator_fontsize'), label='Mean Indicator') ee = BorderHGroup(UItem('error_info_fontname'), UItem('error_info_fontsize'), label='Error Info') ll = BorderHGroup(UItem('label_fontname'), UItem('label_fontsize'), label='Labels') fgrp = BorderVGroup(BorderHGroup(UItem('fontname'), label='Change All'), HGroup(mi, ee), ll, HGroup(self._get_xfont_group(), self._get_yfont_group()), label='Fonts') g = VGroup(self._get_nominal_group(), self._get_layout_group(), self._get_padding_group(), fgrp) return self._make_view(g)
def traits_view(self): load_grp = BorderHGroup( UItem('load_name', editor=EnumEditor(name='display_loads')), Item('limit_to_analysis_loads', tooltip='Limit Loads based on the selected analyses', label='Limit Loads by Analyses'), label='Load') inst_grp = BorderVGroup( HGroup( UItem('use_extract_device'), Item('extract_device', enabled_when='enable_extract_device', editor=EnumEditor(name='extract_devices'), label='Extract Device')), HGroup( UItem('use_mass_spectrometer'), Item('mass_spectrometer', label='Mass Spectrometer', enabled_when='enable_mass_spectrometer', editor=EnumEditor(name='mass_spectrometers'))), label='Instruments') filter_grp = BorderVGroup( Item('threshold', tooltip= 'Maximum difference between references and unknowns in hours', enabled_when='threshold_enabled', label='Threshold (Hrs)'), Item('use_graphical_filter', label='Graphical Selection'), VGroup(UItem('analysis_types', style='custom', editor=CheckListEditor( name='available_analysis_types', cols=2)), show_border=True, label='Analysis Types'), label='Filtering') v = self._view_factory(VGroup(load_grp, filter_grp, inst_grp)) return v
def traits_view(self): plat_grp = BorderHGroup( VGroup( Item('omit_non_plateau', label='Omit Non Plateau Steps'), Item('exclude_non_plateau', label='Exclude Non Plateau Steps')), HGroup(Item('plateau_method', tooltip='Fleck 1977={}\n' 'Mahon 1996={}'.format(FLECK_PLATEAU_DEFINITION, MAHON_PLATEAU_DEFINITION), label='Method'), icon_button_editor('edit_plateau_criteria', 'cog', tooltip='Edit Plateau Criteria'), visible_when='omit_non_plateau'), label='Plateau') g = Group(Item('error_calc_method', width=-150, label='Error Calculation Method'), Item('regressor_kind', label='Method'), plat_grp, show_border=True, label='Calculations') info_grp = HGroup( Item('show_info', label='Info'), BorderHGroup(UItem('info_fontname'), UItem('info_fontsize'))) results_grp = HGroup( Item('show_results_info', label='Results'), VGroup( BorderVGroup( HGroup( Item('nsigma', label='NSigma'), Item('results_info_spacing', editor=RangeEditor(mode='spinner', low=2, high=20, is_float=False), label='Spacing')), HGroup(UItem('results_fontname'), UItem('results_fontsize'))), BorderHGroup(Item('age_sig_figs', label='Age'), Item('yintercept_sig_figs', label='Y-Int.'), label='SigFigs'), BorderVGroup(Item('include_4036_mse', label='Ar40/Ar36'), Item('include_age_mse', label='Age'), Item('include_percent_error', label='%Error'), label='Include'))) ellipse_grp = BorderHGroup(Item('fill_ellipses', label='fill'), Item('ellipse_kind', label='Kind'), label='Error Ellipse') label_grp = BorderVGroup(Item('show_labels'), HGroup(Item('label_box'), UItem('label_fontname'), UItem('label_fontsize'), enabled_when='show_labels'), label='Labels') marker_grp = BorderHGroup(Item('marker_size', label='Size'), Item('marker', label='Marker'), label='Marker') g2 = Group( self._get_title_group(), BorderVGroup(info_grp, results_grp, label='Info'), Item('include_error_envelope'), marker_grp, ellipse_grp, label_grp, BorderVGroup(Item('show_nominal_intercept'), HGroup( Item('nominal_intercept_label', label='Label', enabled_when='show_nominal_intercept'), Item('nominal_intercept_value', label='Value', enabled_when='show_nominal_intercept')), label='Nominal Intercept'), BorderVGroup(Item('display_inset'), Item('inset_location'), HGroup(Item('inset_marker_size', label='Marker Size')), HGroup(Item('inset_width', label='Width'), Item('inset_height', label='Height')), label='Inset'), show_border=True, label='Display') return self._make_view(VGroup(g, g2))
def traits_view(self): class VBorder(VGroup): show_border = True class UUItem(UCustom): height = -50 unknown_grp = VGroup( Item('unknown_title', label='Table Heading', springy=True), VBorder(VBorder(UItem( 'unknown_note_name', editor=EnumEditor(name='available_unknown_note_names')), UItem('unknown_notes', style='custom'), label='Main'), VBorder(UUItem('unknown_corrected_note'), label='Corrected'), VBorder(UUItem('unknown_intercept_note'), label='Intercept'), VBorder(UUItem('unknown_time_note'), label='Time'), VBorder(UUItem('unknown_x_note'), label='X'), VBorder(UUItem('unknown_px_note'), label='pX'), label='Notes'), label='Unknowns Cont.') def note(name): tag = '{}s'.format(name.capitalize()) return VGroup(Item('{}_title'.format(name), label='Table Heading'), VBorder(UItem('{}_notes'.format(name), style='custom'), label='Notes'), label=tag) air_grp = note('air') blank_grp = note('blank') monitor_grp = note('monitor') grp = BorderVGroup(Item('name', label='Filename'), Item('root_directory'), Item('root_name', editor=ComboboxEditor(name='root_names'), enabled_when='not root_directory'), Item('auto_view', label='Open in Excel'), label='Save') units_grp = BorderVGroup( HGroup(Item('power_units', label='Power Units'), Item('age_units', label='Age Units')), HGroup(Item('intensity_units', label='Intensity Units'), Item('sensitivity_units', label='Sensitivity Units')), label='Units') sigma_grp = BorderHGroup(Item('asummary_kca_nsigma', label='K/Ca'), Item('asummary_age_nsigma', label='Age'), Item('asummary_trapped_ratio_nsigma', label='Trapped'), label='N. Sigma') sort_grp = BorderVGroup(HGroup( Item('group_age_sorting', label='Group'), Item('subgroup_age_sorting', label='SubGroup')), Item('individual_age_sorting', label='Individual'), label='Sorting') appearence_grp = BorderVGroup( HGroup(Item('hide_gridlines', label='Hide Gridlines'), Item('repeat_header', label='Repeat Header')), units_grp, sigma_grp, sort_grp, HGroup( Item('highlight_non_plateau'), UItem('highlight_color', enabled_when='highlight_non_plateau')), label='Appearance') def sigfig(k): return '{}_sig_figs'.format(k) def isigfig(k, label, **kw): return Item(sigfig(k), width=-40, label=label, **kw) sig_figs_grp = BorderVGroup( Item('sig_figs', label='Default'), HGroup(isigfig('age', 'Age'), isigfig('summary_age', 'Summary Age')), HGroup(isigfig('kca', 'K/Ca'), isigfig('summary_kca', 'Summary K/Ca')), HGroup(isigfig('radiogenic_yield', '%40Ar*'), isigfig('cumulative_ar39', 'Cum. %39Ar')), HGroup(isigfig('signal', 'Signal'), isigfig('j', 'Flux')), HGroup(isigfig('ic', 'IC'), isigfig('disc', 'Disc.')), HGroup(isigfig('decay', 'Decay'), isigfig('correction', 'Correction Factors')), HGroup(isigfig('sens', 'Sensitivity'), isigfig('k2o', 'K2O')), Item('ensure_trailing_zeros', label='Ensure Trailing Zeros'), label='Significant Figures') def inc(k): return 'include_{}'.format(k) def iinc(k, label, **kw): return Item(inc(k), label=label, **kw) arar_col_grp = VGroup(iinc('F', '40Ar*/39ArK'), iinc('percent_ar39', 'Cumulative %39Ar'), iinc('radiogenic_yield', '%40Ar*'), iinc('sensitivity', 'Sensitivity'), iinc('k2o', 'K2O wt. %'), iinc('production_ratios', 'Production Ratios'), iinc('isochron_ratios', 'Isochron Ratios'), iinc('time_delta', 'Time since Irradiation'), iinc('kca', 'K/Ca'), iinc('kcl', 'K/Cl'), Item('invert_kca_kcl', label='Invert K/Ca,K/Cl'), VGroup(iinc('lambda_k', 'Lambda K'), iinc('monitor_age', 'Age'), iinc('monitor_name', 'Name'), iinc('monitor_material', 'Material'), label='Flux Monitor'), label='Ar/Ar') general_col_grp = VGroup(Item('status_enabled', label='Status'), Item('analysis_label_enabled', label='Analysis Label'), Item('tag_enabled', label='Tag'), iinc('rundate', 'Analysis RunDate'), iinc('blanks', 'Applied Blank'), iinc('intercepts', 'Intercepts'), iinc('icfactors', 'ICFactors'), iinc('discrimination', 'Discrimination'), label='General') summary_rows_grp = BorderVGroup(iinc('summary_kca', 'Integrated K/Ca'), iinc('plateau_age', 'Plateau Age'), iinc('integrated_age', 'Total Integrated Age'), iinc('isochron_age', 'Isochron Age'), iinc('trapped_ratio', 'Trapped (40/36)atm'), label='Summary Rows') columns_grp = BorderHGroup(general_col_grp, arar_col_grp, label='Columns') unk_columns_grp = VGroup(HGroup(columns_grp, sig_figs_grp), summary_rows_grp, label='Unknowns') g1 = VGroup(HGroup(grp, appearence_grp), label='Main') def isum(k): return inc('summary_{}'.format(k)) def iisum(k, label, **kw): return Item(isum(k), label=label, **kw) summary_grp = VGroup( iisum('sheet', 'Summary Sheet'), VGroup(iisum('sample', 'Sample'), iisum('identifier', 'Identifier'), iisum('unit', 'Unit'), iisum('location', 'Location'), iisum('material', 'Material'), iisum('irradiation', 'Irradiation'), iisum('age_type', 'Age Type'), iisum('n', 'N'), iisum('percent_ar39', '%39Ar'), iisum('mswd', 'MSWD'), HGroup(iisum('kca', 'KCA'), Item('summary_kca_nsigma', label=SIGMA)), HGroup(iisum('age', 'Age'), Item('summary_age_nsigma', label=SIGMA)), iisum('comments', 'Comments'), enabled_when=isum('sheet'), label='Columns', show_border=True), VGroup(UItem('summary_notes', style='custom'), show_border=True, label='Notes'), label='Summary') calc_grp = VGroup(J_ERROR_GROUP, label='Calc.') v = okcancel_view(Tabbed(g1, unk_columns_grp, unknown_grp, calc_grp, blank_grp, air_grp, monitor_grp, summary_grp), resizable=True, width=775, height=0.75, title='XLSX Analysis Table Options', scrollable=True) return v
def traits_view(self): add_button = icon_button_editor( 'add_button', 'add', # enabled_when='ok_add', tooltip='Add run') save_button = icon_button_editor('save_button', 'disk', tooltip='Save queue to file') edit_button = icon_button_editor('edit_mode_button', 'table_edit', enabled_when='edit_enabled', tooltip='Toggle edit mode') clear_button = icon_button_editor( 'clear_button', 'table_row_delete', tooltip='Clear all runs added using "frequency"') email_grp = BorderVGroup(HGroup( queue_factory_item('use_email', label='Use Email', tooltip='Send email notifications'), queue_factory_item('use_group_email', tooltip='Email a group of users', label='Email Group'), icon_button_editor(queue_factory_name('edit_emails'), 'cog', tooltip='Edit user group')), queue_factory_uitem('email', springy=True), label='Email') user_grp = BorderHGroup( UItem(queue_factory_name('username'), editor=ComboboxEditor(name=queue_factory_name('usernames'))), icon_button_editor(queue_factory_name('edit_user'), 'database_edit'), label='User') load_select = BorderHGroup( queue_factory_uitem('load_name', width=150), queue_factory_item( 'tray', editor=EnumEditor(name=queue_factory_name('trays'))), icon_button_editor( queue_factory_name('select_existing_load_name_button'), 'database_go', tooltip='Get Load from Database'), label='Load') generate_queue = BorderHGroup( icon_button_editor( 'generate_queue_button', 'brick-go', tooltip='Generate a experiment queue from the selected load', enabled_when='load_name'), icon_button_editor( 'edit_queue_config_button', 'cog', tooltip='Configure experiment queue generation'), label='Generate Queue') lgrp = VGroup(load_select, generate_queue) ms_ed_grp = BorderVGroup(HGroup( queue_factory_uitem( 'mass_spectrometer', editor=myEnumEditor( name=queue_factory_name('mass_spectrometers'))), queue_factory_uitem( 'extract_device', editor=myEnumEditor( name=queue_factory_name('extract_devices')))), lgrp, queue_factory_item('default_lighting'), label='Spectrometer/Extract Device') name = queue_factory_name('available_conditionals') queue_cond_grp = BorderHGroup(queue_factory_uitem( 'queue_conditionals_name', label='Queue Conditionals', editor=myEnumEditor(name=name)), label='Queue Conditionals') delay_grp = BorderVGroup( queue_factory_item('delay_before_analyses', label='Before Analyses (s)'), queue_factory_item('delay_between_analyses', label='Between Analyses (s)'), queue_factory_item('delay_after_blank', label='After Blank (s)'), queue_factory_item('delay_after_air', label='After Air (s)'), label='Delays') note_grp = BorderVGroup(queue_factory_uitem('note', style='custom', height=150), label='Note') queue_grp = VGroup(user_grp, email_grp, ms_ed_grp, queue_cond_grp, delay_grp, note_grp, label='Queue') button_bar = HGroup( save_button, add_button, clear_button, edit_button, CustomLabel(run_factory_name('edit_mode_label'), color='red', width=40), spring) button_bar2 = HGroup( Item('auto_increment_id', label='Auto Increment L#'), Item('auto_increment_position', label='Position'), ) edit_grp = VFold( queue_grp, VGroup(self._get_info_group(), self._get_extract_group(), enabled_when=queue_factory_name('ok_make'), label='General'), self._get_script_group(), self._get_truncate_group()) v = View(VGroup(button_bar, button_bar2, UItem('pane.info_label', style='readonly'), edit_grp, enabled_when='edit_enabled'), kind='live', width=225) return v