Author: bugman Date: Fri Dec 17 23:37:16 2010 New Revision: 11896 URL: http://svn.gna.org/viewcvs/relax?rev=11896&view=rev Log: Added support for CCPN Analysis 2.1 peak lists (exported in Sparky format). This is a fix for bug #17341 (https://gna.org/bugs/index.php?17341) reported by Madeleine Strickland <M dott Strickland att bristol dot ac dot uk>. Modified: 1.3/generic_fns/spectrum.py Modified: 1.3/generic_fns/spectrum.py URL: http://svn.gna.org/viewcvs/relax/1.3/generic_fns/spectrum.py?rev=11896&r1=11895&r2=11896&view=diff ============================================================================== --- 1.3/generic_fns/spectrum.py (original) +++ 1.3/generic_fns/spectrum.py Fri Dec 17 23:37:16 2010 @@ -576,9 +576,13 @@ @rtype: list of lists of str, str, str, float """ - # Assume the Sparky file has two header lines! - num = 2 - print(("Number of header lines found: " + repr(num))) + # The number of header lines. + num = 0 + if file_data[0][0] == 'Assignment': + num = num + 1 + if file_data[1] == '': + num = num + 1 + print("Number of header lines found: %s" % num) # Remove the header. file_data = file_data[num:] @@ -595,36 +599,36 @@ h_name = '' x_name = '' intensity = '' - if line[0]!='?-?': - assignment = split('([A-Z]+)', line[0]) - if assignment[0] == '': - assignment = assignment[1:] - if assignment[-1] == '': - assignment = assignment[:-1] - try: - int(assignment[0]) - except ValueError: - assignment = assignment[1:] - - # The residue number. - try: - res_num = int(assignment[0]) - except: - raise RelaxError("Improperly formatted Sparky file.") - - # Nuclei names. - x_name = assignment[1] - h_name = assignment[3] - - # The peak intensity column. - if int_col == None: - int_col = 3 - - # Intensity. - try: - intensity = float(line[int_col]) - except ValueError: - raise RelaxError("The peak intensity value " + repr(intensity) + " from the line " + repr(line) + " is invalid.") + + # Skip non-assigned peaks. + if line[0] == '?-?': + continue + + # First split by the 2D separator. + x_assign, h_assign = split('-', line[0]) + + # The proton info. + h_name = split('([A-Z]+)', h_assign)[-2] + + # The heteronucleus info. + x_row = split('([A-Z]+)', x_assign) + x_name = x_row[-2] + + # The residue number. + try: + res_num = int(x_row[-3]) + except: + raise RelaxError("Improperly formatted Sparky file.") + + # The peak intensity column. + if int_col == None: + int_col = 3 + + # Intensity. + try: + intensity = float(line[int_col]) + except ValueError: + raise RelaxError("The peak intensity value " + repr(intensity) + " from the line " + repr(line) + " is invalid.") # Generate the spin_id. spin_id = generate_spin_id(res_num=res_num, spin_name=x_name)