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="" 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="", 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 ||| || || |_______________________________________________| ______________________________________ |