Calculate splitting (sparky script)

From NMR Wiki

Revision as of 04:44, 27 April 2008 by Evgeny Fadeev (Talk | contribs)
Jump to: navigation, search

Contents

Usage

Open some 2D or 3D data file in sparky, select two peaks, type 'pd'. Splittings in Hz will be shown in a pop up window.

Installation

  • install code below into <path_to_sparky>/python/sparky/coupling.py
  • register script with 'pd' hotkeys in the sparky_site.py file by adding line shown below to the peak_menu array
('pd', 'Calculate coupling',        ('coupling','show_dialog')),

Macintosh

On Mac's sparky's default installation directory is

/Applications/Sparky.app/Contents/Resources/

so the script should go to directory

/Applications/Sparky.app/Contents/Resources/python/sparky

Bugs

Looks like this macro does not account for splitting sign correctly, this is most likely sparky issue - not something that can be fixed in this script.

Info window won't go away when "ok" button is clicked.

Code

import string
import noesy
import pyutil
import sputil
import tkutil
 
def show_dialog(session):
    tk = session.tk
    window = Tkinter.Toplevel(tk)
    view = session.selected_view()
    spectrum = view.spectrum
    peaks = spectrum.selected_peaks()
    num_peaks = len(peaks)
 
    if num_peaks != 2:
        message = 'Select two peaks!'
    else:
        p1 = peaks[0]
        p2 = peaks[1]
        dim = len(p1.position)
        message = ''
 
        lbl = ('Delta W1:','Delta W2:','Delta W3:')
        for i in range(dim):
        #x y z must correspond to actual xyz (axis order!)
        #print hertz instead of ppms
            ppm = spectrum.hz_per_ppm[i]
            delta = (p1.position[i] - p2.position[i])*ppm
            delta = '%.2f' % delta
            message = message + lbl[i] + str(delta) + '\n'
    lbl = Tkinter.Label(window,text=message)
    lbl.pack()
 
    btn = Tkinter.Button(window,text='ok')
    btn.pack()
Personal tools