예제 #1
0
  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)
예제 #2
0
  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')
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
  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
예제 #6
0
    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
예제 #7
0
  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)
예제 #8
0
    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)
예제 #9
0
  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)