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-2005 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 # Grace string returning function. 128 if self.eqi == 'return_grace_string': 129 return self.relax.specific.model_free.return_grace_string 130 131 # Simulation parameter array returning function. 132 if self.eqi == 'return_sim_param': 133 return self.relax.specific.jw_mapping.sim_return_param 134 135 # String of the external parameter units returning function. 136 if self.eqi == 'return_units': 137 return self.relax.specific.model_free.return_units 138 139 # Value and error returning function. 140 if self.eqi == 'return_value': 141 return self.relax.specific.jw_mapping.return_value 142 143 # Set function. 144 if self.eqi == 'set': 145 return self.relax.specific.jw_mapping.set 146 147 # Set error function. 148 if self.eqi == 'set_error': 149 return self.relax.specific.jw_mapping.set_error 150 151 # Write results function (Columnar format). 152 if self.eqi == 'write_columnar_results': 153 return self.relax.specific.jw_mapping.write_columnar_results
154 155
156 - def mf_funcs(self):
157 """Model-free analysis specific functions.""" 158 159 # Back-calculate function. 160 if self.eqi == 'back_calc': 161 return self.relax.specific.model_free.back_calc 162 163 # Calculate function. 164 if self.eqi == 'calculate': 165 return self.relax.specific.model_free.calculate 166 167 # Copy function. 168 if self.eqi == 'copy': 169 return self.relax.specific.model_free.copy 170 171 # Create Monte Carlo data function. 172 if self.eqi == 'create_mc_data': 173 return self.relax.specific.model_free.create_mc_data 174 175 # Duplicate data function. 176 if self.eqi == 'duplicate_data': 177 return self.relax.specific.model_free.duplicate_data 178 179 # Eliminate models. 180 if self.eqi == 'eliminate': 181 return self.relax.specific.model_free.eliminate 182 183 # Grid search function. 184 if self.eqi == 'grid_search': 185 return self.relax.specific.model_free.grid_search 186 187 # Initial Monte Carlo parameter value search function. 188 if self.eqi == 'init_sim_values': 189 return self.relax.specific.model_free.sim_init_values 190 191 # Map bounds function. 192 if self.eqi == 'map_bounds': 193 return self.relax.specific.model_free.map_bounds 194 195 # Minimise function. 196 if self.eqi == 'minimise': 197 return self.relax.specific.model_free.minimise 198 199 # Model statistics. 200 if self.eqi == 'model_stats': 201 return self.relax.specific.model_free.model_statistics 202 203 # Number of instances. 204 if self.eqi == 'num_instances': 205 return self.relax.specific.model_free.num_instances 206 207 # Pack Monte Carlo simulation data function. 208 if self.eqi == 'pack_sim_data': 209 return self.relax.specific.model_free.sim_pack_data 210 211 # Parameter names function. 212 if self.eqi == 'param_names': 213 return self.relax.specific.model_free.get_param_names 214 215 # Parameter values function. 216 if self.eqi == 'param_values': 217 return self.relax.specific.model_free.get_param_values 218 219 # Read results file function (Columnar format). 220 if self.eqi == 'read_columnar_results': 221 return self.relax.specific.model_free.read_columnar_results 222 223 # Read results file function (XML format). 224 #if self.eqi == 'read_xml_results': 225 # return self.relax.specific.model_free.read_xml_results 226 227 # Data returning function. 228 if self.eqi == 'return_data': 229 return self.relax.specific.model_free.return_data 230 231 # Data or parameter name returning function. 232 if self.eqi == 'return_data_name': 233 return self.relax.specific.model_free.return_data_name 234 235 # Data error returning function. 236 if self.eqi == 'return_error': 237 return self.relax.specific.model_free.return_error 238 239 # Factor of conversion between different parameter units returning function. 240 if self.eqi == 'return_conversion_factor': 241 return self.relax.specific.model_free.return_conversion_factor 242 243 # Grace string returning function. 244 if self.eqi == 'return_grace_string': 245 return self.relax.specific.model_free.return_grace_string 246 247 # Selected simulation array returning function. 248 if self.eqi == 'return_selected_sim': 249 return self.relax.specific.model_free.sim_return_selected 250 251 # Simulation chi-squared array returning function. 252 if self.eqi == 'return_sim_chi2': 253 return self.relax.specific.model_free.sim_return_chi2 254 255 # Simulation parameter array returning function. 256 if self.eqi == 'return_sim_param': 257 return self.relax.specific.model_free.sim_return_param 258 259 # String of the external parameter units returning function. 260 if self.eqi == 'return_units': 261 return self.relax.specific.model_free.return_units 262 263 # Value and error returning function. 264 if self.eqi == 'return_value': 265 return self.relax.specific.model_free.return_value 266 267 # Set function. 268 if self.eqi == 'set': 269 return self.relax.specific.model_free.set 270 271 # Set error function. 272 if self.eqi == 'set_error': 273 return self.relax.specific.model_free.set_error 274 275 # Set the selected simulations array. 276 if self.eqi == 'set_selected_sim': 277 return self.relax.specific.model_free.sim_set_selected 278 279 # Skip function. 280 if self.eqi == 'skip_function': 281 return self.relax.specific.model_free.skip_function 282 283 # Unselect function. 284 if self.eqi == 'unselect': 285 return self.relax.specific.model_free.unselect 286 287 # Write results function (Columnar format). 288 if self.eqi == 'write_columnar_results': 289 return self.relax.specific.model_free.write_columnar_results
290 291 # Write results function (XML format). 292 #if self.eqi == 'write_xml_results': 293 # return self.relax.specific.model_free.write_xml_results 294 295
296 - def noe(self):
297 """NOE calculation functions.""" 298 299 # Calculate function. 300 if self.eqi == 'calculate': 301 return self.relax.specific.noe.calculate 302 303 # Read results file function (Columnar format). 304 if self.eqi == 'read_columnar_results': 305 return self.relax.specific.noe.read_columnar_results 306 307 # Value and error returning function. 308 if self.eqi == 'return_value': 309 return self.relax.specific.noe.return_value 310 311 # Write results function (Columnar format). 312 if self.eqi == 'write_columnar_results': 313 return self.relax.specific.noe.write_columnar_results
314 315
316 - def relax_funcs(self):
317 """Relaxation curve fitting functions.""" 318 319 # Value and error returning function. 320 if self.eqi == 'return_value': 321 return self.relax.specific.relax_data.return_value
322