def show_assignment_extension(self, extension): rshifts = extension.resonance_shifts rtext = self.resonances_text(rshifts) alist = extension.peak_assignments self.peak_list.append(rtext, alist) def assignment_sort(ed): return (ed[0].peak_set.spectrum.name, ed[0].assignment_text()) ualist = map(lambda epeak: (epeak, None), extension.unassigned_expected_peaks()) ed_list = pyutil.sort_by_function_value(alist + ualist, assignment_sort) prev_epeak = None for epeak, dpeak in ed_list: show_assignment = (epeak != prev_epeak) freq = extension.expected_peak_frequency(epeak) atext = self.assignment_text(epeak, dpeak, freq, show_assignment) if dpeak == None: list_data = (epeak.peak_set.spectrum, freq) else: list_data = (epeak, dpeak) self.peak_list.append(atext, list_data) prev_epeak = epeak self.peak_list.append('', None)
def __init__(self, session): tkutil.Settings_Dialog.__init__(self, session.tk, 'Relaxation Spectra') headings = ('Spectrum ', 'Time parameter') st = sputil.spectrum_table(session, self.top, headings, self.add_spectrum, self.remove_spectrum) st.frame.pack(side = 'top', anchor = 'w') self.spectrum_widgets = {} spectra = session.project.spectrum_list() def time_param(s, self=self): return pyutil.string_to_float(self.default_time_parameter(s), 0) spectra = pyutil.sort_by_function_value(spectra, time_param) for spectrum in spectra: st.add_spectrum(spectrum) e = tkutil.entry_field(self.top, 'Use ', '5', 3, ' random trials for error estimates.') e.frame.pack(side = 'top', anchor = 'w') self.trials = e br = tkutil.button_row(self.top, ('Ok', self.ok_cb), ('Apply', self.apply_cb), ('Close', self.close_cb), ('Help', sputil.help_cb(session, 'RelaxFit')), ) br.frame.pack(side = 'top', anchor = 'w')
def strip_cb(self): if self.extender == None or self.current_resonance == None: return strip_plot = strips.strip_dialog(self.session) epeaks = self.extender.connected_expected_peaks(self.current_resonance) strip_list = [] for epeak in epeaks: xyz_axes = self.strip_xyz_axes(epeak) if xyz_axes: center = self.strip_center(epeak, xyz_axes) label = self.strip_label(epeak, xyz_axes, center) spectrum = epeak.peak_set.spectrum strip = strip_plot.spectrum_strip(spectrum, xyz_axes, center, label) strip.group_number = epeak.resonances[xyz_axes[0]].number strip_list.append(strip) sort_key = lambda s: (s.group_number, s.spectrum.name) strip_list = pyutil.sort_by_function_value(strip_list, sort_key) strip_plot.show_window(1) strip_plot.delete_all_strips() strip_plot.add_strips(strip_list)
def show_assignments(self, resonance): self.extender = assignment_extender(self.assignments) extensions = self.extender.assignment_extensions(resonance, self) extensions = pyutil.sort_by_function_value(extensions, self.extension_sort_key) extensions.reverse() self.peak_list.clear() self.peak_list.heading['text'] = self.assignment_list_heading(resonance) for extension in extensions: self.show_assignment_extension(extension) self.current_resonance = resonance
def show_assignments(self, resonance): self.extender = assignment_extender(self.assignments) extensions = self.extender.assignment_extensions(resonance, self) extensions = pyutil.sort_by_function_value(extensions, self.extension_sort_key) extensions.reverse() self.peak_list.clear() self.peak_list.heading['text'] = self.assignment_list_heading( resonance) for extension in extensions: self.show_assignment_extension(extension) self.current_resonance = resonance
def shifts_cb(self): if self.read_range(): self.offset_list.clear() heading = 'Group Atom Shift Expected Dev Peaks' self.offset_list.heading['text'] = heading def nsa_value(r): return (r.group.number, r.group.symbol, r.atom.name) reslist = pyutil.sort_by_function_value(self.resonances, nsa_value) for r in reslist: stats = shiftstats.atom_statistics(r.group.symbol, r.atom.name) if stats: dev = abs(r.frequency - stats.average_shift) / stats.shift_deviation expected = '%6.4g %+6.1f' % (stats.average_shift, dev) else: expected = '' line = '%5s %5s %6.4g %14s %4d' % (r.group.name, r.atom.name, r.frequency, expected, r.peak_count) self.offset_list.append(line, r)