Hi,
I just made different tests with badly formated datasets.
With a dataset of this format :
res_number value error
running the jw_mapping using the sample script (slightly modified), I get
the following error :
Traceback (most recent call last):
File "/home/semor/packages/relax-1.2/relax", line 454, in ?
Relax()
File "/home/semor/packages/relax-1.2/relax", line 166, in __init__
self.interpreter.run()
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 213, in
run
run_script(intro=self.relax.intro_string, local=self.local,
script_file=self.relax.script_file, quit=1)
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 388, in
run_script
console.interact(intro, local, script_file, quit)
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 340, in
interact_script
execfile(script_file, local)
File "./jw_mapping_600.py", line 35, in ?
grace.write(name, y_data_type='j0', file='j0_600.agr', force=1)
File "/home/semor/packages/relax-1.2/prompt/grace.py", line 252, in write
self.__relax__.generic.grace.write(run=run,
x_data_type=x_data_type, y_data_type=y_data_type, res_num=res_num,
res_name=res_name, plot_data=plot_data, norm=norm, file=file, dir=dir,
force=force)
File "/home/semor/packages/relax-1.2/generic_fns/grace.py", line 256, in
write
len(self.data[0][2])
IndexError: list index out of range
The following error message arises if I turn off the options related to
grace plotting...
Traceback (most recent call last):
File "/home/semor/packages/relax-1.2/relax", line 454, in ?
Relax()
File "/home/semor/packages/relax-1.2/relax", line 166, in __init__
self.interpreter.run()
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 213, in
run
run_script(intro=self.relax.intro_string, local=self.local,
script_file=self.relax.script_file, quit=1)
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 388, in
run_script
console.interact(intro, local, script_file, quit)
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 340, in
interact_script
execfile(script_file, local)
File "./jw_mapping_600.py", line 45, in ?
results.write(run=name, file='results_600', force=1)
File "/home/semor/packages/relax-1.2/prompt/results.py", line 201, in
write
self.__relax__.generic.results.write(run=run,
file=file, directory=dir, force=force, format=format,
compress_type=compress_type)
File "/home/semor/packages/relax-1.2/generic_fns/results.py", line 166,
in write
self.write_function(results_file, run)
File "/home/semor/packages/relax-1.2/specific_fns/jw_mapping.py", line
661, in write_columnar_results
for j in xrange(data.num_ri):
AttributeError: Element instance has no attribute 'num_ri'
As you can see, I don't get any RelaxError, but harder-to-fix error
messages...
However, if a dataset of the following format is used :
res_type value error
the following error message arises :
RelaxError: The file contains no data.
which is what one should get.
With a dataset of the following format :
res_number value error res_type
the error message is again correct :
RelaxError: The relaxation data is invalid (num=1, name=0.798308,
data=0.00729703, error=trp).
Finally, with a dataset of the format :
res_number res_type value
the user still gets a strange error message :
Traceback (most recent call last):
File "/home/semor/packages/relax-1.2/relax", line 454, in ?
Relax()
File "/home/semor/packages/relax-1.2/relax", line 166, in __init__
self.interpreter.run()
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 213, in
run
run_script(intro=self.relax.intro_string, local=self.local,
script_file=self.relax.script_file, quit=1)
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 388, in
run_script
console.interact(intro, local, script_file, quit)
File "/home/semor/packages/relax-1.2/prompt/interpreter.py", line 340, in
interact_script
execfile(script_file, local)
File "./jw_mapping_600.py", line 35, in ?
grace.write(name, y_data_type='j0', file='j0_600.agr', force=1)
File "/home/semor/packages/relax-1.2/prompt/grace.py", line 252, in write
self.__relax__.generic.grace.write(run=run,
x_data_type=x_data_type, y_data_type=y_data_type, res_num=res_num,
res_name=res_name, plot_data=plot_data, norm=norm, file=file, dir=dir,
force=force)
File "/home/semor/packages/relax-1.2/generic_fns/grace.py", line 256, in
write
len(self.data[0][2])
IndexError: list index out of range
So, the problem seems to arise only in certain circumstances when a field
is missing in the dataset.
Maybe some error definitions should be added. This could be especially
useful for people used with ModelFree where input files are formatted as :
res_number value error
Cheers !
Sébastien :)
Edward d'Auvergne wrote:
Hi,
For the reading in of data, such as the R1 relaxation rates, the only
requirement for the format is that the data is in a column formatted
text file. The different columns can be changed by the num_col=0,
name_col=1, data_col=2, and error_col=3 arguments. The column
separator changed by the 'sep' argument. In the future, even more
diverse formats will be accepted as these arise and are reported on
the mailing lists.
With this in mind, coming up with a more descriptive error message
would be worthwhile. Currently you will get something such as:
RelaxError: "The relaxation data is invalid (num=" +
file_data[i][num_col] + ", name=" + file_data[i][name_col] + ", data="
+ file_data[i][data_col] + ", error=" + file_data[i][error_col] + ")."
This could probably be broken into simpler messages for different
types of error. The checks are currently for the residue number being
an integer, and the data and error being floating point numbers.
Would anyone have any suggestions or ideas for how this could be
better reported to the user? What tests and what types of messages
would you use? The system has to be flexible enough to handle
absolutely all rubbish thrown at it by a user ;)
Cheers,
Edward
On 8/21/07, Sebastien Morin <sebastien.morin.1@xxxxxxxxx> wrote:
Hi all !
I am now analysing data using relax (line 1.2, branch consistency-tests,
revision 3354).
I realized (when using the consistency tests function) that it could be
nice to check data set format and output a error message when the format
isn't like the one requested.
For example, a data set of the following format wouldn't work :
1 0.90 0.05
2 0.79 0.05
3 0.6 0.1
neither would it work with the following format :
Gly 1 0.90 0.05
Gly 2 0.79 0.05
Gly 3 0.6 0.1
However, a dataset of the following format would work as it is the
format required :
1 Gly 0.90 0.05
2 Gly 0.79 0.05
3 Gly 0.6 0.1
This type of error is long to find out for a standard user as the error
messages yielded are not very helpful.
So, would it be a good idea to add a kind of test for the data set
format ? Maybe this has been already proposed for the 1.3 line. If so,
sorry for the duplicate request...
Cheers !
Sébastien :)
--
______________________________________
_______________________________________________
| |
|| Sebastien Morin ||
||| Etudiant au PhD en biochimie |||
|||| Laboratoire de resonance magnetique nucleaire ||||
||||| Dr Stephane Gagne |||||
|||| CREFSIP (Universite Laval, Quebec, CANADA) ||||
||| 1-418-656-2131 #4530 |||
|| ||
|_______________________________________________|
______________________________________
_______________________________________________
relax (http://nmr-relax.com)
This is the relax-devel mailing list
relax-devel@xxxxxxx
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-devel
--
______________________________________
_______________________________________________
| |
|| Sebastien Morin ||
||| Etudiant au PhD en biochimie |||
|||| Laboratoire de resonance magnetique nucleaire ||||
||||| Dr Stephane Gagne |||||
|||| CREFSIP (Universite Laval, Quebec, CANADA) ||||
||| 1-418-656-2131 #4530 |||
|| ||
|_______________________________________________|
______________________________________