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-2006 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 # Consistency testing. 41 if function_type == 'ct': 42 string = "consistency testing" 43 44 # NOE calculation. 45 if function_type == 'noe': 46 string = "NOE calculations" 47 48 # Relaxation curve fitting. 49 if function_type == 'relax_fit': 50 string = "relaxation curve fitting" 51 52 # Reduced spectral density mapping. 53 if function_type == 'jw': 54 string = "reduced spectral density mapping" 55 56 # Model-free analysis. 57 if function_type == 'mf': 58 string = "Model-free analysis" 59 60 # Hybrid models. 61 if function_type == 'hybrid': 62 string = "hybrid models" 63 64 return string
65 66
67 - def setup(self, eqi, function_type, raise_error=1):
68 """Setup function.""" 69 70 # Initialise. 71 self.eqi = eqi 72 function = None 73 74 # Get the function. 75 try: 76 # Consistency testing. 77 if function_type == 'ct': 78 function = self.ct_funcs() 79 80 # NOE calculation. 81 if function_type == 'noe': 82 function = self.noe() 83 84 # Relaxation curve fitting. 85 if function_type == 'relax_fit': 86 function = self.relax_fit() 87 88 # Reduced spectral density mapping. 89 if function_type == 'jw': 90 function = self.jw_funcs() 91 92 # Model-free analysis. 93 if function_type == 'mf': 94 function = self.mf_funcs() 95 96 # Hybrid models. 97 if function_type == 'hybrid': 98 function = self.hybrid_funcs() 99 100 # Catch all errors. 101 except: 102 function = None 103 104 # Raise an error if the function doesn't exist. 105 if raise_error and function == None: 106 # Some debugging output. 107 if Debug: 108 print "Function type: " + `function_type` 109 print "Eqi: " + `self.eqi` 110 111 # Raise the error. 112 raise RelaxFuncSetupError, self.get_string(function_type) 113 114 # Return the function. 115 return function
116 117
118 - def hybrid_funcs(self):
119 """Hybrid model specific functions.""" 120 121 # Duplicate data function. 122 if self.eqi == 'duplicate_data': 123 return self.relax.specific.hybrid.duplicate_data 124 125 # Model statistics. 126 if self.eqi == 'model_stats': 127 return self.relax.specific.hybrid.model_statistics 128 129 # Number of instances. 130 if self.eqi == 'num_instances': 131 return self.relax.specific.hybrid.num_instances 132 133 # Skip function. 134 if self.eqi == 'skip_function': 135 return self.relax.specific.hybrid.skip_function
136 137
138 - def jw_funcs(self):
139 """Reduced spectral density mapping specific functions.""" 140 141 # Calculate function. 142 if self.eqi == 'calculate': 143 return self.relax.specific.jw_mapping.calculate 144 145 # Copy function. 146 if self.eqi == 'copy': 147 return self.relax.specific.jw_mapping.copy 148 149 # Create Monte Carlo data function (same as data returning function). 150 if self.eqi == 'create_mc_data': 151 return self.relax.specific.jw_mapping.return_data 152 153 # Number of instances. 154 if self.eqi == 'num_instances': 155 return self.relax.specific.jw_mapping.num_instances 156 157 # Overfit deselect. 158 if self.eqi == 'overfit_deselect': 159 return self.relax.specific.jw_mapping.overfit_deselect 160 161 # Pack Monte Carlo simulation data function. 162 if self.eqi == 'pack_sim_data': 163 return self.relax.specific.jw_mapping.sim_pack_data 164 165 # Data returning function. 166 if self.eqi == 'return_data': 167 return self.relax.specific.jw_mapping.return_data 168 169 # Data or parameter name returning function. 170 if self.eqi == 'return_data_name': 171 return self.relax.specific.jw_mapping.return_data_name 172 173 # Factor of conversion between different parameter units returning function. 174 if self.eqi == 'return_conversion_factor': 175 return self.relax.specific.jw_mapping.return_conversion_factor 176 177 # Data error returning function. 178 if self.eqi == 'return_error': 179 return self.relax.specific.jw_mapping.return_error 180 181 # Grace string returning function. 182 if self.eqi == 'return_grace_string': 183 return self.relax.specific.jw_mapping.return_grace_string 184 185 # Simulation parameter array returning function. 186 if self.eqi == 'return_sim_param': 187 return self.relax.specific.jw_mapping.sim_return_param 188 189 # Simulation parameter array returning function. 190 if self.eqi == 'return_selected_sim': 191 return self.relax.specific.jw_mapping.sim_return_selected 192 193 # String of the external parameter units returning function. 194 if self.eqi == 'return_units': 195 return self.relax.specific.jw_mapping.return_units 196 197 # Value and error returning function. 198 if self.eqi == 'return_value': 199 return self.relax.specific.jw_mapping.return_value 200 201 # Set function. 202 if self.eqi == 'set': 203 return self.relax.specific.jw_mapping.set 204 205 # Set error function. 206 if self.eqi == 'set_error': 207 return self.relax.specific.jw_mapping.set_error 208 209 # Set error function. 210 if self.eqi == 'set_selected_sim': 211 return self.relax.specific.jw_mapping.set_selected_sim 212 213 # Write results function (Columnar format). 214 if self.eqi == 'write_columnar_results': 215 return self.relax.specific.jw_mapping.write_columnar_results
216 217
218 - def ct_funcs(self):
219 """Consistency testing functions.""" 220 221 # Calculate function. 222 if self.eqi == 'calculate': 223 return self.relax.specific.consistency_tests.calculate 224 225 # Copy function. 226 if self.eqi == 'copy': 227 return self.relax.specific.consistency_tests.copy 228 229 # Create Monte Carlo data function (same as data returning function). 230 if self.eqi == 'create_mc_data': 231 return self.relax.specific.consistency_tests.return_data 232 233 # Number of instances. 234 if self.eqi == 'num_instances': 235 return self.relax.specific.consistency_tests.num_instances 236 237 # Overfit deselect. 238 if self.eqi == 'overfit_deselect': 239 return self.relax.specific.consistency_tests.overfit_deselect 240 241 # Pack Monte Carlo simulation data function. 242 if self.eqi == 'pack_sim_data': 243 return self.relax.specific.consistency_tests.sim_pack_data 244 245 # Data returning function. 246 if self.eqi == 'return_data': 247 return self.relax.specific.consistency_tests.return_data 248 249 # Data or parameter name returning function. 250 if self.eqi == 'return_data_name': 251 return self.relax.specific.consistency_tests.return_data_name 252 253 # Factor of conversion between different parameter units returning function. 254 if self.eqi == 'return_conversion_factor': 255 return self.relax.specific.consistency_tests.return_conversion_factor 256 257 # Data error returning function. 258 if self.eqi == 'return_error': 259 return self.relax.specific.consistency_tests.return_error 260 261 # Grace string returning function. 262 if self.eqi == 'return_grace_string': 263 return self.relax.specific.consistency_tests.return_grace_string 264 265 # Simulation parameter array returning function. 266 if self.eqi == 'return_sim_param': 267 return self.relax.specific.consistency_tests.sim_return_param 268 269 # Simulation parameter array returning function. 270 if self.eqi == 'return_selected_sim': 271 return self.relax.specific.consistency_tests.sim_return_selected 272 273 # String of the external parameter units returning function. 274 if self.eqi == 'return_units': 275 return self.relax.specific.consistency_tests.return_units 276 277 # Value and error returning function. 278 if self.eqi == 'return_value': 279 return self.relax.specific.consistency_tests.return_value 280 281 # Set function. 282 if self.eqi == 'set': 283 return self.relax.specific.consistency_tests.set 284 285 # Set error function. 286 if self.eqi == 'set_error': 287 return self.relax.specific.consistency_tests.set_error 288 289 # Set error function. 290 if self.eqi == 'set_selected_sim': 291 return self.relax.specific.consistency_tests.set_selected_sim 292 293 # Write results function (Columnar format). 294 if self.eqi == 'write_columnar_results': 295 return self.relax.specific.consistency_tests.write_columnar_results
296 297
298 - def mf_funcs(self):
299 """Model-free analysis specific functions.""" 300 301 # Back-calculate function. 302 if self.eqi == 'back_calc': 303 return self.relax.specific.model_free.back_calc 304 305 # Calculate function. 306 if self.eqi == 'calculate': 307 return self.relax.specific.model_free.calculate 308 309 # Copy function. 310 if self.eqi == 'copy': 311 return self.relax.specific.model_free.copy 312 313 # Create Monte Carlo data function. 314 if self.eqi == 'create_mc_data': 315 return self.relax.specific.model_free.create_mc_data 316 317 # Duplicate data function. 318 if self.eqi == 'duplicate_data': 319 return self.relax.specific.model_free.duplicate_data 320 321 # Eliminate models. 322 if self.eqi == 'eliminate': 323 return self.relax.specific.model_free.eliminate 324 325 # Grid search function. 326 if self.eqi == 'grid_search': 327 return self.relax.specific.model_free.grid_search 328 329 # Initial Monte Carlo parameter value search function. 330 if self.eqi == 'init_sim_values': 331 return self.relax.specific.model_free.sim_init_values 332 333 # Map bounds function. 334 if self.eqi == 'map_bounds': 335 return self.relax.specific.model_free.map_bounds 336 337 # Minimise function. 338 if self.eqi == 'minimise': 339 return self.relax.specific.model_free.minimise 340 341 # Model statistics. 342 if self.eqi == 'model_stats': 343 return self.relax.specific.model_free.model_statistics 344 345 # Molmol macro creation. 346 if self.eqi == 'molmol_macro': 347 return self.relax.specific.model_free.molmol.macro 348 349 # Number of instances. 350 if self.eqi == 'num_instances': 351 return self.relax.specific.model_free.num_instances 352 353 # Overfit deselect. 354 if self.eqi == 'overfit_deselect': 355 return self.relax.specific.model_free.overfit_deselect 356 357 # Pack Monte Carlo simulation data function. 358 if self.eqi == 'pack_sim_data': 359 return self.relax.specific.model_free.sim_pack_data 360 361 # Parameter names function. 362 if self.eqi == 'param_names': 363 return self.relax.specific.model_free.get_param_names 364 365 # Parameter values function. 366 if self.eqi == 'param_values': 367 return self.relax.specific.model_free.get_param_values 368 369 # Read results file function (Columnar format). 370 if self.eqi == 'read_columnar_results': 371 return self.relax.specific.model_free.read_columnar_results 372 373 # Read results file function (XML format). 374 #if self.eqi == 'read_xml_results': 375 # return self.relax.specific.model_free.read_xml_results 376 377 # Data returning function. 378 if self.eqi == 'return_data': 379 return self.relax.specific.model_free.return_data 380 381 # Data or parameter name returning function. 382 if self.eqi == 'return_data_name': 383 return self.relax.specific.model_free.return_data_name 384 385 # Data error returning function. 386 if self.eqi == 'return_error': 387 return self.relax.specific.model_free.return_error 388 389 # Factor of conversion between different parameter units returning function. 390 if self.eqi == 'return_conversion_factor': 391 return self.relax.specific.model_free.return_conversion_factor 392 393 # Grace string returning function. 394 if self.eqi == 'return_grace_string': 395 return self.relax.specific.model_free.return_grace_string 396 397 # Selected simulation array returning function. 398 if self.eqi == 'return_selected_sim': 399 return self.relax.specific.model_free.sim_return_selected 400 401 # Simulation chi-squared array returning function. 402 if self.eqi == 'return_sim_chi2': 403 return self.relax.specific.model_free.sim_return_chi2 404 405 # Simulation parameter array returning function. 406 if self.eqi == 'return_sim_param': 407 return self.relax.specific.model_free.sim_return_param 408 409 # String of the external parameter units returning function. 410 if self.eqi == 'return_units': 411 return self.relax.specific.model_free.return_units 412 413 # Value and error returning function. 414 if self.eqi == 'return_value': 415 return self.relax.specific.model_free.return_value 416 417 # Set function. 418 if self.eqi == 'set': 419 return self.relax.specific.model_free.set 420 421 # Set error function. 422 if self.eqi == 'set_error': 423 return self.relax.specific.model_free.set_error 424 425 # Set the selected simulations array. 426 if self.eqi == 'set_selected_sim': 427 return self.relax.specific.model_free.set_selected_sim 428 429 # Skip function. 430 if self.eqi == 'skip_function': 431 return self.relax.specific.model_free.skip_function 432 433 # Unselect function. 434 if self.eqi == 'unselect': 435 return self.relax.specific.model_free.unselect 436 437 # Write results function (Columnar format). 438 if self.eqi == 'write_columnar_results': 439 return self.relax.specific.model_free.write_columnar_results
440 441 # Write results function (XML format). 442 #if self.eqi == 'write_xml_results': 443 # return self.relax.specific.model_free.write_xml_results 444 445
446 - def noe(self):
447 """NOE calculation functions.""" 448 449 # Calculate function. 450 if self.eqi == 'calculate': 451 return self.relax.specific.noe.calculate 452 453 # Overfit deselect. 454 if self.eqi == 'overfit_deselect': 455 return self.relax.specific.noe.overfit_deselect 456 457 # Read results file function (Columnar format). 458 if self.eqi == 'read_columnar_results': 459 return self.relax.specific.noe.read_columnar_results 460 461 # Factor of conversion between different parameter units returning function. 462 if self.eqi == 'return_conversion_factor': 463 return self.relax.specific.noe.return_conversion_factor 464 465 # Grace string returning function. 466 if self.eqi == 'return_grace_string': 467 return self.relax.specific.noe.return_grace_string 468 469 # Value and error returning function. 470 if self.eqi == 'return_value': 471 return self.relax.specific.noe.return_value 472 473 # String of the external parameter units returning function. 474 if self.eqi == 'return_units': 475 return self.relax.specific.noe.return_units 476 477 # Write results function (Columnar format). 478 if self.eqi == 'write_columnar_results': 479 return self.relax.specific.noe.write_columnar_results
480 481
482 - def relax_fit(self):
483 """Relaxation curve fitting functions.""" 484 485 # Create Monte Carlo data function. 486 if self.eqi == 'create_mc_data': 487 return self.relax.specific.relax_fit.create_mc_data 488 489 # Grid search function. 490 if self.eqi == 'grid_search': 491 return self.relax.specific.relax_fit.grid_search 492 493 # Initial Monte Carlo parameter value search function. 494 if self.eqi == 'init_sim_values': 495 return self.relax.specific.relax_fit.sim_init_values 496 497 # Minimise function. 498 if self.eqi == 'minimise': 499 return self.relax.specific.relax_fit.minimise 500 501 # Number of instances. 502 if self.eqi == 'num_instances': 503 return self.relax.specific.relax_fit.num_instances 504 505 # Overfit deselect. 506 if self.eqi == 'overfit_deselect': 507 return self.relax.specific.relax_fit.overfit_deselect 508 509 # Pack Monte Carlo simulation data function. 510 if self.eqi == 'pack_sim_data': 511 return self.relax.specific.relax_fit.sim_pack_data 512 513 # Factor of conversion between different parameter units returning function. 514 if self.eqi == 'return_conversion_factor': 515 return self.relax.specific.relax_fit.return_conversion_factor 516 517 # Data returning function. 518 if self.eqi == 'return_data': 519 return self.relax.specific.relax_fit.return_data 520 521 # Data or parameter name returning function. 522 if self.eqi == 'return_data_name': 523 return self.relax.specific.relax_fit.return_data_name 524 525 # Data error returning function. 526 if self.eqi == 'return_error': 527 return self.relax.specific.relax_fit.return_error 528 529 # Grace string returning function. 530 if self.eqi == 'return_grace_string': 531 return self.relax.specific.relax_fit.return_grace_string 532 533 # Selected simulation array returning function. 534 if self.eqi == 'return_selected_sim': 535 return self.relax.specific.relax_fit.sim_return_selected 536 537 # Simulation parameter array returning function. 538 if self.eqi == 'return_sim_param': 539 return self.relax.specific.relax_fit.sim_return_param 540 541 # Value and error returning function. 542 if self.eqi == 'return_value': 543 return self.relax.specific.relax_fit.return_value 544 545 # String of the external parameter units returning function. 546 if self.eqi == 'return_units': 547 return self.relax.specific.relax_fit.return_units 548 549 # Set function. 550 if self.eqi == 'set': 551 return self.relax.specific.relax_fit.set 552 553 # Set error function. 554 if self.eqi == 'set_error': 555 return self.relax.specific.relax_fit.set_error 556 557 # Set the selected simulations array. 558 if self.eqi == 'set_selected_sim': 559 return self.relax.specific.relax_fit.set_selected_sim
560