Author: bugman Date: Tue Oct 6 15:46:25 2009 New Revision: 9583 URL: http://svn.gna.org/viewcvs/relax?rev=9583&view=rev Log: The relax_io.read_spin_data_file() function now calls generic_fns.sequence.validate_sequence(). This is a more advanced check of the sequence information. The validate_sequence() function has also been modified to handle single data lines. Modified: 1.3/generic_fns/sequence.py 1.3/relax_io.py Modified: 1.3/generic_fns/sequence.py URL: http://svn.gna.org/viewcvs/relax/1.3/generic_fns/sequence.py?rev=9583&r1=9582&r2=9583&view=diff ============================================================================== --- 1.3/generic_fns/sequence.py (original) +++ 1.3/generic_fns/sequence.py Tue Oct 6 15:46:25 2009 @@ -323,7 +323,7 @@ def validate_sequence(data, mol_name_col=None, res_num_col=None, res_name_col=None, spin_num_col=None, spin_name_col=None): - """Function for testing if the sequence data is valid. + """Test if the sequence data is valid. The only function this performs is to raise a RelaxError if the data is invalid. @@ -342,56 +342,54 @@ @type spin_num_col: int or None """ - # Loop over the data. - for i in xrange(len(data)): - # Molecule name data. - if mol_name_col != None: - try: - data[i][mol_name_col] - except IndexError: - raise RelaxInvalidSeqError(data[i]) - - # Residue number data. - if res_num_col != None: - # No data in column. - try: - data[i][res_num_col] - except IndexError: - raise RelaxInvalidSeqError(data[i]) - - # Bad data in column. - try: - int(data[i][res_num_col]) - except ValueError: - raise RelaxInvalidSeqError(data[i]) - - # Residue name data. - if res_name_col != None: - try: - data[i][res_name_col] - except IndexError: - raise RelaxInvalidSeqError(data[i]) - - # Spin number data. - if spin_num_col != None: - # No data in column. - try: - data[i][spin_num_col] - except IndexError: - raise RelaxInvalidSeqError(data[i]) - - # Bad data in column. - try: - int(data[i][spin_num_col]) - except ValueError: - raise RelaxInvalidSeqError(data[i]) - - # Spin name data. - if spin_name_col != None: - try: - data[i][spin_name_col] - except IndexError: - raise RelaxInvalidSeqError(data[i]) + # Molecule name data. + if mol_name_col: + try: + data[mol_name_col] + except IndexError: + raise RelaxInvalidSeqError(data) + + # Residue number data. + if res_num_col: + # No data in column. + try: + data[res_num_col] + except IndexError: + raise RelaxInvalidSeqError(data) + + # Bad data in column. + try: + int(data[res_num_col]) + except ValueError: + raise RelaxInvalidSeqError(data) + + # Residue name data. + if res_name_col: + try: + data[res_name_col] + except IndexError: + raise RelaxInvalidSeqError(data) + + # Spin number data. + if spin_num_col: + # No data in column. + try: + data[spin_num_col] + except IndexError: + raise RelaxInvalidSeqError(data) + + # Bad data in column. + try: + int(data[spin_num_col]) + except ValueError: + raise RelaxInvalidSeqError(data) + + # Spin name data. + if spin_name_col: + try: + data[spin_name_col] + except IndexError: + raise RelaxInvalidSeqError(data) def write(file, dir=None, sep=None, mol_name_flag=False, res_num_flag=False, res_name_flag=False, spin_num_flag=False, spin_name_flag=False, force=False): Modified: 1.3/relax_io.py URL: http://svn.gna.org/viewcvs/relax/1.3/relax_io.py?rev=9583&r1=9582&r2=9583&view=diff ============================================================================== --- 1.3/relax_io.py (original) +++ 1.3/relax_io.py Tue Oct 6 15:46:25 2009 @@ -45,6 +45,7 @@ from sys import stdin, stdout, stderr # relax module imports. +import generic_fns from generic_fns.mol_res_spin import generate_spin_id_data_array from relax_errors import RelaxError, RelaxFileError, RelaxFileEmptyError, RelaxFileOverwriteError, RelaxMissingBinaryError, RelaxNoInPathError, RelaxNonExecError from relax_warnings import RelaxWarning @@ -544,27 +545,17 @@ # Test the validity of the data. if data_col or error_col: missing = True - for i in xrange(len(file_data)): + for line in file_data: # Skip missing data. - if len(file_data[i]) < min_col_num: + if len(line) < min_col_num: continue - elif data_col and file_data[i][data_col-1] == 'None': + elif data_col and line[data_col-1] == 'None': continue - elif error_col and file_data[i][error_col-1] == 'None': + elif error_col and line[error_col-1] == 'None': continue - # Test that the data are numbers. - try: - if res_num_col: - int(file_data[i][res_num_col-1]) - if spin_num_col: - int(file_data[i][spin_num_col-1]) - if data_col: - float(file_data[i][data_col-1]) - if error_col: - float(file_data[i][error_col-1]) - except ValueError: - raise RelaxError("The data in the line " + repr(file_data[i]) + " is invalid.") + # Validate the sequence. + generic_fns.sequence.validate_sequence(line, mol_name_col=mol_name_col, res_num_col=res_num_col, res_name_col=res_name_col, spin_num_col=spin_num_col, spin_name_col=spin_name_col) # Right, data is OK and exists. missing = False