Module errors
[hide private]
[frames] | no frames]

Source Code for Module errors

  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  import __builtin__ 
 24  from re import match 
 25  from types import ClassType 
 26   
 27   
28 -class RelaxErrors:
29 - def __init__(self):
30 """Class for placing all the errors below into __builtin__""" 31 32 # Loop over all objects in 'self'. 33 for name in dir(self): 34 # Get the object. 35 object = getattr(self, name) 36 37 # Skip over all non error class objects. 38 if type(object) != ClassType or not match('Relax', name): 39 continue 40 41 # Place the exceptions into __builtin__ 42 __builtin__.__setattr__(name, object) 43 44 # Tuple of all the errors. 45 if hasattr(__builtin__, 'AllRelaxErrors'): 46 __builtin__.AllRelaxErrors = __builtin__.AllRelaxErrors, object 47 else: 48 __builtin__.AllRelaxErrors = object,
49 50 51 # Base class for all errors. 52 ############################ 53
54 - class BaseError(Exception):
55 - def __str__(self):
56 return ("RelaxError: " + self.text + "\n")
57 58 59 # Standard errors. 60 ################## 61
62 - class RelaxError(BaseError):
63 - def __init__(self, text):
64 self.text = text
65 66 67 # Program errors. 68 ################# 69
70 - class RelaxProgError(BaseError):
71 - def __init__(self, name):
72 self.text = "The program " + `name` + " cannot be found."
73
74 - class RelaxProgFailError(BaseError):
75 - def __init__(self, name):
76 self.text = "Execution of the program " + name + " has failed."
77 78 79 # PDB errors. 80 ############# 81 82 # PDB data corresponding to the run already exists.
83 - class RelaxPdbError(BaseError):
84 - def __init__(self, run):
85 self.text = "PDB data corresponding to the run " + `run` + " already exists."
86 87 # No PDB loaded.
88 - class RelaxNoPdbError(BaseError):
89 - def __init__(self, run):
90 self.text = "No PDB file has been loaded for the run " + `run` + "."
91 92 # Loading error.
93 - class RelaxPdbLoadError(BaseError):
94 - def __init__(self, name):
95 self.text = "The PDB file " + `name` + " could not be loaded properly, no proteins could be extracted."
96 97 # No unit vectors.
98 - class RelaxNoVectorsError(BaseError):
99 - def __init__(self, run):
100 self.text = "The unit XH bond vectors for the run " + `run` + " have not been calculated."
101 102 103 # Nuclear errors. 104 ################# 105 106 # Nucleus not set.
107 - class RelaxNucleusError(BaseError):
108 - def __init__(self):
109 self.text = "The type of nucleus has not yet been set."
110 111 112 # Argument errors. 113 ################## 114 115 # Invalid argument.
116 - class RelaxInvalidError(BaseError):
117 - def __init__(self, name, value):
118 self.text = "The " + name + " argument " + `value` + " is invalid."
119 120 # Argument not in the list.
121 - class RelaxArgNotInListError(BaseError):
122 - def __init__(self, name, value, list):
123 self.text = "The " + name + " argument " + `value` + " is neither " 124 for i in xrange(len(list)-1): 125 self.text = self.text + `list[i]` + ', ' 126 self.text = self.text + 'nor ' + `list[-1]` + "."
127 128 # Binary - integers 0 and 1.
129 - class RelaxBinError(BaseError):
130 - def __init__(self, name, value):
131 self.text = "The " + name + " argument " + `value` + " must either be the integer 0 or 1."
132 133 # Float.
134 - class RelaxFloatError(BaseError):
135 - def __init__(self, name, value):
136 self.text = "The " + name + " argument " + `value` + " must be a floating point number."
137 138 # Number.
139 - class RelaxNumError(BaseError):
140 - def __init__(self, name, value):
141 self.text = "The " + name + " argument " + `value` + " must be a number."
142 143 # Function.
144 - class RelaxFunctionError(BaseError):
145 - def __init__(self, name, value):
146 self.text = "The " + name + " argument " + `value` + " must be a function."
147 148 # Integer.
149 - class RelaxIntError(BaseError):
150 - def __init__(self, name, value):
151 self.text = "The " + name + " argument " + `value` + " must be an integer."
152 153 # Integer or list of integers.
154 - class RelaxIntListIntError(BaseError):
155 - def __init__(self, name, value):
156 self.text = "The " + name + " argument " + `value` + " must either be an integer or an array of integers."
157 158 # Integer or string
159 - class RelaxIntStrError(BaseError):
160 - def __init__(self, name, value):
161 self.text = "The " + name + " argument " + `value` + " must either be an integer or a string."
162 163 # Length of the list.
164 - class RelaxLenError(BaseError):
165 - def __init__(self, name, len):
166 self.text = "The " + name + " argument must be of length " + `len` + "."
167 168 # List.
169 - class RelaxListError(BaseError):
170 - def __init__(self, name, value):
171 self.text = "The " + name + " argument " + `value` + " must be an array."
172 173 # List of floating point numbers.
174 - class RelaxListFloatError(BaseError):
175 - def __init__(self, name, value):
176 self.text = "The " + name + " argument " + `value` + " must be an array of floating point numbers."
177 178 # List of integers.
179 - class RelaxListIntError(BaseError):
180 - def __init__(self, name, value):
181 self.text = "The " + name + " argument " + `value` + " must be an array of integers."
182 183 # List of numbers.
184 - class RelaxListNumError(BaseError):
185 - def __init__(self, name, value):
186 self.text = "The " + name + " argument " + `value` + " must be an array of numbers."
187 188 # List of strings.
189 - class RelaxListStrError(BaseError):
190 - def __init__(self, name, value):
191 self.text = "The " + name + " argument " + `value` + " must be an array of strings."
192 193 # Tuple.
194 - class RelaxTupleError(BaseError):
195 - def __init__(self, name, value):
196 self.text = "The " + name + " argument " + `value` + " must be a tuple."
197 198 # Tuple or number.
199 - class RelaxNumTupleError(BaseError):
200 - def __init__(self, name, value):
201 self.text = "The " + name + " argument " + `value` + " must either be a number or tuple of numbers."
202 203 # None.
204 - class RelaxNoneError(BaseError):
205 - def __init__(self, name):
206 self.text = "The " + name + " argument has not been supplied."
207 208 # None or float.
209 - class RelaxNoneFloatError(BaseError):
210 - def __init__(self, name, value):
211 self.text = "The " + name + " argument " + `value` + " must either be a floating point number or None."
212 213 # None, float, or list.
214 - class RelaxNoneFloatListError(BaseError):
215 - def __init__(self, name, value):
216 self.text = "The " + name + " argument " + `value` + " must either be a floating point number, a list, or None."
217 218 # None or integer.
219 - class RelaxNoneIntError(BaseError):
220 - def __init__(self, name, value):
221 self.text = "The " + name + " argument " + `value` + " must either be an integer or None."
222 223 # None, integer, or string.
224 - class RelaxNoneIntStrError(BaseError):
225 - def __init__(self, name, value):
226 self.text = "The " + name + " argument " + `value` + " must either be an integer, a string, or None."
227 228 # None or list.
229 - class RelaxNoneListError(BaseError):
230 - def __init__(self, name, value):
231 self.text = "The " + name + " argument " + `value` + " must either be an array or None."
232 233 # None or number.
234 - class RelaxNoneNumError(BaseError):
235 - def __init__(self, name, value):
236 self.text = "The " + name + " argument " + `value` + " must either be a number or None."
237 238 # None or string.
239 - class RelaxNoneStrError(BaseError):
240 - def __init__(self, name, value):
241 self.text = "The " + name + " argument " + `value` + " must either be a string or None."
242 243 # None, string, or list.
244 - class RelaxNoneStrListError(BaseError):
245 - def __init__(self, name, value):
246 self.text = "The " + name + " argument " + `value` + " must either be a string or None."
247 248 # None or tuple.
249 - class RelaxNoneTupleError(BaseError):
250 - def __init__(self, name, value):
251 self.text = "The " + name + " argument " + `value` + " must either be a tuple or None."
252 253 # String.
254 - class RelaxStrError(BaseError):
255 - def __init__(self, name, value):
256 self.text = "The " + name + " argument " + `value` + " must be a string."
257 258 # String or list of strings.
259 - class RelaxStrListStrError(BaseError):
260 - def __init__(self, name, value):
261 self.text = "The " + name + " argument " + `value` + " must either be an string or an array of strings."
262 263 264 # Sequence errors. 265 ################## 266 267 # No sequence loaded.
268 - class RelaxNoSequenceError(BaseError):
269 - def __init__(self, run):
270 self.text = "The sequence data for the run " + `run` + " does not exist."
271 272 # The sequence already exists.
273 - class RelaxSequenceError(BaseError):
274 - def __init__(self, run):
275 self.text = "The sequence data for the run " + `run` + " already exists."
276 277 # The two sequences are different.
278 - class RelaxDiffSeqError(BaseError):
279 - def __init__(self, run1, run2):
280 self.text = "The sequences for the runs " + `run1` + " and " + `run2` + " are not the same."
281 282 # Cannot find the residue in the sequence.
283 - class RelaxNoResError(BaseError):
284 - def __init__(self, number, name=None):
285 if name == None: 286 self.text = "The residue '" + `number` + "' cannot be found in the sequence." 287 else: 288 self.text = "The residue '" + `number` + " " + name + "' cannot be found in the sequence."
289 290 291 # Relaxation data errors. 292 ######################### 293 294 # No relaxation data.
295 - class RelaxNoRiError(BaseError):
296 - def __init__(self, ri_label, frq_label):
297 self.text = "Relaxation data corresponding to ri_label = " + `ri_label` + " and frq_label = " + `frq_label` + " does not exist."
298 299 # Relaxation data already exists.
300 - class RelaxRiError(BaseError):
301 - def __init__(self, ri_label, frq_label):
302 self.text = "Relaxation data corresponding to ri_label = " + `ri_label` + " and frq_label = " + `frq_label` + " already exists."
303 304 305 # Model-free errors. 306 #################### 307 308 # No model-free model.
309 - class RelaxNoMfModelError(BaseError):
310 - def __init__(self, run):
311 self.text = "The model-free models corresponding to the run " + `run` + " have not been setup."
312 313 # Model-free data already exists.
314 - class RelaxMfError(BaseError):
315 - def __init__(self, run):
316 self.text = "Model-free data corresponding to the run " + `run` + " already exists."
317 318 319 # Tensor errors. 320 ################ 321 322 # Diffusion tensor data corresponding to the run already exists.
323 - class RelaxTensorError(BaseError):
324 - def __init__(self, run):
325 self.text = "Diffusion tensor data corresponding to the run " + `run` + " already exists."
326 327 # No diffusion tensor data loaded.
328 - class RelaxNoTensorError(BaseError):
329 - def __init__(self, run):
330 self.text = "No diffusion tensor data is loaded for the run " + `run` + "."
331 332 333 # File errors. 334 ############## 335 336 # No directory.
337 - class RelaxDirError(BaseError):
338 - def __init__(self, name, dir):
339 if name == None: 340 self.text = "The directory " + `dir` + " does not exist." 341 else: 342 self.text = "The " + name + " directory " + `dir` + " does not exist."
343 344 # No file.
345 - class RelaxFileError(BaseError):
346 - def __init__(self, name, file_name=None):
347 if file_name == None: 348 self.text = "The file " + `name` + " does not exist." 349 else: 350 self.text = "The " + name + " file " + `file_name` + " does not exist."
351 352 # No data in file.
353 - class RelaxFileEmptyError(BaseError):
354 - def __init__(self):
355 self.text = "The file contains no data."
356 357 # Overwrite file.
358 - class RelaxFileOverwriteError(BaseError):
359 - def __init__(self, file_name, flag):
360 self.text = "The file " + `file_name` + " already exists. Set the " + flag + " to 1 to overwrite."
361 362 # Invalid data format.
363 - class RelaxInvalidDataError(BaseError):
364 - def __init__(self):
365 self.text = "The format of the data is invalid."
366 367 368 # Run errors. 369 ############# 370 371 # Run already exists.
372 - class RelaxRunError(BaseError):
373 - def __init__(self, run):
374 self.text = "The run " + `run` + " already exists."
375 376 # No run.
377 - class RelaxNoRunError(BaseError):
378 - def __init__(self, run):
379 self.text = "The run " + `run` + " has not been created yet."
380 381 382 # Setup errors. 383 ############### 384 385 # Cannot setup the functions.
386 - class RelaxFuncSetupError(BaseError):
387 - def __init__(self, string):
388 self.text = "This function is not available for " + string + "."
389 390 391 # Regular expression errors. 392 ############################ 393 394 # Bad regular expression.
395 - class RelaxRegExpError(BaseError):
396 - def __init__(self, name, value):
397 self.text = "The " + name + " argument " + `value` + " is not valid regular expression."
398 399 400 # Data type errors. 401 ################### 402 403 # Value already exists.
404 - class RelaxValueError(BaseError):
405 - def __init__(self, data_type, run):
406 self.text = "The data type " + `data_type` + " already exists for " + `run` + "."
407 408 # No data value.
409 - class RelaxNoValueError(BaseError):
410 - def __init__(self, name):
411 self.text = "The " + `name` + " value has not yet been set."
412 413 # Unknown parameter.
414 - class RelaxUnknownParamError(BaseError):
415 - def __init__(self, name, param_type=None):
416 if param_type: 417 self.text = "The " + param_type + " parameter " + `name` + " is unknown." 418 else: 419 self.text = "The parameter " + `name` + " is unknown."
420 421 # Unknown parameter combination.
422 - class RelaxUnknownParamCombError(BaseError):
423 - def __init__(self, name, data):
424 self.text = "The " + `name` + " argument " + `data` + " represents an unknown parameter combination."
425 426 427 # Simulation errors. 428 #################### 429 430 # No simulations.
431 - class RelaxNoSimError(BaseError):
432 - def __init__(self, run):
433 self.text = "Simulations for the run " + `run` + " have not been setup."
434