Hi Edward, thank you for the exhaustive answer. I have saved the script as a filename.py file in the /relax/Contents/Resources/user_functions directory and tried to run in from within relax using the menu user functions (n-z) -> script However, it does not appear to do anything. Any hint? Stefano On Mar 18, 2014, at 10:04 AM, Edward d'Auvergne wrote: # Python module imports. from numpy import float64, zeros # relax module imports. from lib.auto_relaxation.ri_comps import calc_fixed_csa, calc_fixed_dip, comp_csa_const_func, comp_dip_const_func from lib.physical_constants import h_bar, mu0, return_gyromagnetic_ratio class Data: """Dummy class for storing data.""" # Initialise the data container. data = Data() # The spectrometer frequency (Hz). frq = 500e6 # The dynamically averaged bond length (m) and chemical shift tensor anisotropy. r = 1.02e-10 csa = -172e-6 # Add the needed physical constants to the data storage. data.gx = return_gyromagnetic_ratio('15N') data.gh = return_gyromagnetic_ratio('1H') data.mu0 = mu0 data.h_bar = h_bar # The number of frequencies. data.num_frq = 1 # Initialise dipolar and CSA data structures. data.dip_const_fixed = 0.0 data.csa_const_fixed = [0.0] data.dip_const_func = 0.0 data.csa_const_func = zeros(1, float64) # Nuclear frequencies. frq = frq * 2 * pi frqX = frq * data.gx / data.gh # Calculate the five frequencies which cause R1, R2, and NOE relaxation. data.frq_list = zeros((1, 5), float64) data.frq_list[0, 1] = frqX data.frq_list[0, 2] = frq - frqX data.frq_list[0, 3] = frq data.frq_list[0, 4] = frq + frqX data.frq_sqrd_list = data.frq_list ** 2 # Calculate the fixed component of the dipolar and CSA constants. calc_fixed_dip(data) calc_fixed_csa(data) # Calculate the dipolar and CSA constants. comp_dip_const_func(data, r) comp_csa_const_func(data, csa) # Rename the dipolar and CSA constants. d = data.dip_const_func c = data.csa_const_func[0] # Printout. print("d: %s" % d) print("c: %s" % c)