Package target_functions :: Module jw_mapping
[hide private]
[frames] | no frames]

Source Code for Module target_functions.jw_mapping

  1  ############################################################################### 
  2  #                                                                             # 
  3  # Copyright (C) 2004-2013 Edward d'Auvergne                                   # 
  4  #                                                                             # 
  5  # This file is part of the program relax (http://www.nmr-relax.com).          # 
  6  #                                                                             # 
  7  # This program is free software: you can redistribute it and/or modify        # 
  8  # it under the terms of the GNU General Public License as published by        # 
  9  # the Free Software Foundation, either version 3 of the License, or           # 
 10  # (at your option) any later version.                                         # 
 11  #                                                                             # 
 12  # This program is distributed in the hope that it will be useful,             # 
 13  # but WITHOUT ANY WARRANTY; without even the implied warranty of              # 
 14  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               # 
 15  # GNU General Public License for more details.                                # 
 16  #                                                                             # 
 17  # You should have received a copy of the GNU General Public License           # 
 18  # along with this program.  If not, see <http://www.gnu.org/licenses/>.       # 
 19  #                                                                             # 
 20  ############################################################################### 
 21   
 22  # Python module imports. 
 23  from math import pi 
 24  from numpy import float64, zeros 
 25   
 26  # relax module imports. 
 27  from lib.auto_relaxation.ri_comps import calc_fixed_csa, calc_fixed_dip, comp_csa_const_func, comp_dip_const_func 
 28   
 29   
30 -class Mapping:
31 - def __init__(self, frq=None, gx=None, gh=None, mu0=None, h_bar=None):
32 """Reduced spectral density mapping.""" 33 34 # Initialise the data container. 35 self.data = Data() 36 37 # Add the initial data to self.data 38 self.data.gx = gx 39 self.data.gh = gh 40 self.data.mu0 = mu0 41 self.data.h_bar = h_bar 42 43 # The number of frequencies. 44 self.data.num_frq = 1 45 46 # Dipolar and CSA data structures. 47 self.data.dip_const_fixed = 0.0 48 self.data.csa_const_fixed = [0.0] 49 self.data.dip_const_func = 0.0 50 self.data.csa_const_func = zeros(1, float64) 51 52 # Nuclear frequencies. 53 frq = frq * 2 * pi 54 frqX = frq * self.data.gx / self.data.gh 55 56 # Calculate the five frequencies which cause R1, R2, and NOE relaxation. 57 self.data.frq_list = zeros((1, 5), float64) 58 self.data.frq_list[0, 1] = frqX 59 self.data.frq_list[0, 2] = frq - frqX 60 self.data.frq_list[0, 3] = frq 61 self.data.frq_list[0, 4] = frq + frqX 62 self.data.frq_sqrd_list = self.data.frq_list ** 2
63 64
65 - def calc_sigma_noe(self, noe, r1):
66 """Function for calculating the sigma NOE value.""" 67 68 return (noe - 1.0) * r1 * self.data.gx / self.data.gh
69 70
71 - def func(self, r=None, csa=None, r1=None, r2=None, noe=None):
72 """Function for calculating the three spectal density values. 73 74 Three values are returned, J(0), J(wX), and J(wH) (or J(0.87wH)). 75 """ 76 77 # Calculate the fixed component of the dipolar and CSA constants. 78 calc_fixed_dip(self.data) 79 calc_fixed_csa(self.data) 80 81 # Calculate the dipolar and CSA constants. 82 comp_dip_const_func(self.data, r) 83 comp_csa_const_func(self.data, csa) 84 85 # Rename the dipolar and CSA constants. 86 d = self.data.dip_const_func 87 c = self.data.csa_const_func[0] 88 89 # Calculate the sigma NOE value. 90 sigma_noe = self.calc_sigma_noe(noe, r1) 91 92 # Calculate J(0). 93 j0 = -1.5 / (3.0*d + c) * (0.5*r1 - r2 + 0.6*sigma_noe) 94 95 # Calculate J(wX). 96 jwx = 1.0 / (3.0*d + c) * (r1 - 1.4*sigma_noe) 97 98 # Calculate J(wH). 99 jwh = sigma_noe / (5.0*d) 100 101 # Return the three values. 102 return j0, jwx, jwh
103 104
105 -class Data:
106 - def __init__(self):
107 """Empty container for storing data."""
108