def pair_crossdiagonal_peaks(peaks, stoppable): assignment_to_peak = {} stoppable.stoppable_loop('finding crossdiagonal peaks', 200) for peak in peaks: stoppable.check_for_stop() r = noesy.proton_resonances(peak) assignment_to_peak[(r, peak.spectrum)] = peak plist = [] peak_used = {} stoppable.stoppable_loop('sorting crossdiagonal peaks', 200) for peak in peaks: stoppable.check_for_stop() if not peak_used.has_key(peak): plist.append(peak) peak_used[peak] = 1 r = noesy.proton_resonances(peak) if r: tr = (r[1], r[0]) if assignment_to_peak.has_key((tr, peak.spectrum)): tpeak = assignment_to_peak[(tr, peak.spectrum)] if not peak_used.has_key(tpeak): plist.append(tpeak) peak_used[tpeak] = 1 return plist
def distance_bounds(self, peak): if peak.is_assigned: res = noesy.proton_resonances(peak) translate = self.atom_translations return self.bounds(translate.resonance_number_atom(res[0]), translate.resonance_number_atom(res[1])) return None
def predicted_intensity(self, peak): if peak.is_assigned: res = noesy.proton_resonances(peak) translate = self.atom_translations return self.intensity(translate.resonance_number_atom(res[0]), translate.resonance_number_atom(res[1])) return None
def noesy_distance(self, peak): if peak.is_assigned: res = noesy.proton_resonances(peak) if res != None and len(res) == 2: mol = peak.spectrum.molecule return self.minimum_distance(res[0].atom, res[1].atom, mol) return None
def assignment(self, peak): if peak.is_assigned: if self.noesy: res = noesy.proton_resonances(peak) else: res = peak.resonances() return sputil.group_atom_assignment(res) return None
def peak_line(self, peak, bounds_text): r1, r2 = noesy.proton_resonances(peak) if r1 == None or r2 == None: return None if r1.group.number == None or r2.group.number == None: return None line = ('assign (residue %d and name %s) (residue %d and name %s) %s' % (r1.group.number, r1.atom.name, r2.group.number, r2.atom.name, bounds_text)) return line
def peak_line(self, peak, show_note): r1, r2 = noesy.proton_resonances(peak) if r1 == None or r2 == None: return '' if r1.group.number == None or r2.group.number == None: return '' volume = peak.volume if volume == None: volume = 0 line = "%-4.4s%3d %-4.4s%3d %11.4e" % (r1.atom.name, r1.group.number, r2.atom.name, r2.group.number, volume) if show_note and peak.note: line = line + ' # ' + peak.note return line