Package specific_fns :: Module specific_setup
[hide private]
[frames] | no frames]

Source Code for Module specific_fns.specific_setup

  1  ############################################################################### 
  2  #                                                                             # 
  3  # Copyright (C) 2003, 2004 Edward d'Auvergne                                  # 
  4  #                                                                             # 
  5  # This file is part of the program relax.                                     # 
  6  #                                                                             # 
  7  # relax 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 2 of the License, or           # 
 10  # (at your option) any later version.                                         # 
 11  #                                                                             # 
 12  # relax 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 relax; if not, write to the Free Software                        # 
 19  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA   # 
 20  #                                                                             # 
 21  ############################################################################### 
 22   
 23   
 24  from re import match 
 25   
 26   
27 -class Specific_setup:
28 - def __init__(self, relax):
29 """Class for equation type specific function setup.""" 30 31 self.relax = relax
32 33
34 - def get_string(self, function_type):
35 """Function for returning a string corresponding to the function type.""" 36 37 # Initialise. 38 string = "this analysis" 39 40 # NOE calculation. 41 if function_type == 'noe': 42 string = "NOE calculations" 43 44 # Relaxation curve fitting. 45 if function_type == 'relax_fit': 46 string = "relaxation curve fitting" 47 48 # Reduced spectral density mapping. 49 if function_type == 'jw': 50 string = "reduced spectral density mapping" 51 52 # Model-free analysis. 53 if function_type == 'mf': 54 string = "Model-free analysis" 55 56 return string
57 58
59 - def setup(self, eqi, function_type, raise_error=1):
60 """Setup function.""" 61 62 # Initialise. 63 self.eqi = eqi 64 function = None 65 66 # Get the function. 67 try: 68 # NOE calculation. 69 if function_type == 'noe': 70 function = self.noe() 71 72 # Relaxation curve fitting. 73 if function_type == 'relax_fit': 74 function = self.relax_funcs() 75 76 # Reduced spectral density mapping. 77 if function_type == 'jw': 78 function = self.jw_funcs() 79 80 # Model-free analysis. 81 if function_type == 'mf': 82 function = self.mf_funcs() 83 84 # Catch all errors. 85 except: 86 function = None 87 88 # Raise an error if the function doesn't exist. 89 if raise_error and function == None: 90 raise RelaxFuncSetupError, self.get_string(function_type) 91 92 # Return the function. 93 return function
94 95
96 - def jw_funcs(self):
97 """Model-free analysis specific functions.""" 98 99 # Calculate function. 100 if self.eqi == 'calculate': 101 return self.relax.specific.jw_mapping.calculate 102 103 # Copy function. 104 if self.eqi == 'copy': 105 return self.relax.specific.jw_mapping.copy 106 107 # Create Monte Carlo data function (same as data returning function). 108 if self.eqi == 'create_mc_data': 109 return self.relax.specific.jw_mapping.return_data 110 111 # Number of instances. 112 if self.eqi == 'num_instances': 113 return self.relax.specific.jw_mapping.num_instances 114 115 # Pack Monte Carlo simulation data function. 116 if self.eqi == 'pack_sim_data': 117 return self.relax.specific.jw_mapping.sim_pack_data 118 119 # Data returning function. 120 if self.eqi == 'return_data': 121 return self.relax.specific.jw_mapping.return_data 122 123 # Data error returning function. 124 if self.eqi == 'return_error': 125 return self.relax.specific.jw_mapping.return_error 126 127 # Simulation parameter array returning function. 128 if self.eqi == 'return_sim_param': 129 return self.relax.specific.jw_mapping.sim_return_param 130 131 # Value and error returning function. 132 if self.eqi == 'return_value': 133 return self.relax.specific.jw_mapping.return_value 134 135 # Set function. 136 if self.eqi == 'set': 137 return self.relax.specific.jw_mapping.set 138 139 # Set error function. 140 if self.eqi == 'set_error': 141 return self.relax.specific.jw_mapping.set_error 142 143 # Write results function (Columnar format). 144 if self.eqi == 'write_columnar_results': 145 return self.relax.specific.jw_mapping.write_columnar_results
146 147
148 - def mf_funcs(self):
149 """Model-free analysis specific functions.""" 150 151 # Back-calculate function. 152 if self.eqi == 'back_calc': 153 return self.relax.specific.model_free.back_calc 154 155 # Calculate function. 156 if self.eqi == 'calculate': 157 return self.relax.specific.model_free.calculate 158 159 # Copy function. 160 if self.eqi == 'copy': 161 return self.relax.specific.model_free.copy 162 163 # Create Monte Carlo data function. 164 if self.eqi == 'create_mc_data': 165 return self.relax.specific.model_free.create_mc_data 166 167 # Duplicate data function. 168 if self.eqi == 'duplicate_data': 169 return self.relax.specific.model_free.duplicate_data 170 171 # Eliminate models. 172 if self.eqi == 'eliminate': 173 return self.relax.specific.model_free.eliminate 174 175 # Grid search function. 176 if self.eqi == 'grid_search': 177 return self.relax.specific.model_free.grid_search 178 179 # Initial Monte Carlo parameter value search function. 180 if self.eqi == 'init_sim_values': 181 return self.relax.specific.model_free.sim_init_values 182 183 # Map labels. 184 if self.eqi == 'map_labels': 185 return self.relax.specific.model_free.map_labels 186 187 # Map bounds function. 188 if self.eqi == 'map_bounds': 189 return self.relax.specific.model_free.map_bounds 190 191 # Minimise function. 192 if self.eqi == 'minimise': 193 return self.relax.specific.model_free.minimise 194 195 # Model statistics. 196 if self.eqi == 'model_stats': 197 return self.relax.specific.model_free.model_statistics 198 199 # Number of instances. 200 if self.eqi == 'num_instances': 201 return self.relax.specific.model_free.num_instances 202 203 # Pack Monte Carlo simulation data function. 204 if self.eqi == 'pack_sim_data': 205 return self.relax.specific.model_free.sim_pack_data 206 207 # Parameter names function. 208 if self.eqi == 'param_names': 209 return self.relax.specific.model_free.get_param_names 210 211 # Parameter values function. 212 if self.eqi == 'param_values': 213 return self.relax.specific.model_free.get_param_values 214 215 # Read results file function (Columnar format). 216 if self.eqi == 'read_columnar_results': 217 return self.relax.specific.model_free.read_columnar_results 218 219 # Read results file function (XML format). 220 #if self.eqi == 'read_xml_results': 221 # return self.relax.specific.model_free.read_xml_results 222 223 # Data returning function. 224 if self.eqi == 'return_data': 225 return self.relax.specific.model_free.return_data 226 227 # Data error returning function. 228 if self.eqi == 'return_error': 229 return self.relax.specific.model_free.return_error 230 231 # Value and error returning function. 232 if self.eqi == 'return_value': 233 return self.relax.specific.model_free.return_value 234 235 # Simulation chi-squared array returning function. 236 if self.eqi == 'return_sim_chi2': 237 return self.relax.specific.model_free.sim_return_chi2 238 239 # Simulation parameter array returning function. 240 if self.eqi == 'return_sim_param': 241 return self.relax.specific.model_free.sim_return_param 242 243 # Set function. 244 if self.eqi == 'set': 245 return self.relax.specific.model_free.set 246 247 # Set error function. 248 if self.eqi == 'set_error': 249 return self.relax.specific.model_free.set_error 250 251 # Skip function. 252 if self.eqi == 'skip_function': 253 return self.relax.specific.model_free.skip_function 254 255 # Unselect function. 256 if self.eqi == 'unselect': 257 return self.relax.specific.model_free.unselect 258 259 # Write results function (Columnar format). 260 if self.eqi == 'write_columnar_results': 261 return self.relax.specific.model_free.write_columnar_results
262 263 # Write results function (XML format). 264 #if self.eqi == 'write_xml_results': 265 # return self.relax.specific.model_free.write_xml_results 266 267
268 - def noe(self):
269 """NOE calculation functions.""" 270 271 # Calculate function. 272 if self.eqi == 'calculate': 273 return self.relax.specific.noe.calculate 274 275 # Read results file function (Columnar format). 276 if self.eqi == 'read_columnar_results': 277 return self.relax.specific.noe.read_columnar_results 278 279 # Value and error returning function. 280 if self.eqi == 'return_value': 281 return self.relax.specific.noe.return_value 282 283 # Write results function (Columnar format). 284 if self.eqi == 'write_columnar_results': 285 return self.relax.specific.noe.write_columnar_results
286 287
288 - def relax_funcs(self):
289 """Relaxation curve fitting functions.""" 290 291 # Value and error returning function. 292 if self.eqi == 'return_value': 293 return self.relax.specific.relax_data.return_value
294