Author: tlinnet Date: Thu Dec 12 11:02:00 2013 New Revision: 21949 URL: http://svn.gna.org/viewcvs/relax?rev=21949&view=rev Log: Implemented to read spins from a SPARKY list, when no intensity column is present. Addition to Support Request #3044, (https://gna.org/support/index.php?3044) - Load spins from SPARKY list. Modified: trunk/lib/spectrum/sparky.py trunk/test_suite/system_tests/peak_lists.py Modified: trunk/lib/spectrum/sparky.py URL: http://svn.gna.org/viewcvs/relax/trunk/lib/spectrum/sparky.py?rev=21949&r1=21948&r2=21949&view=diff ============================================================================== --- trunk/lib/spectrum/sparky.py (original) +++ trunk/lib/spectrum/sparky.py Thu Dec 12 11:02:00 2013 @@ -204,15 +204,29 @@ except ValueError: raise RelaxError("The peak intensity value from the line %s is invalid." % line) - # Add the assignment to the peak list object. - if dim == 1: - peak_list.add(res_nums=[res_num1], res_names=[res_name1], spin_names=[name1], shifts=[w1], intensity=intensity) - elif dim == 2: - peak_list.add(res_nums=[res_num1, res_num2], res_names=[res_name1, res_name2], spin_names=[name1, name2], shifts=[w1, w2], intensity=intensity) - elif dim == 3: - peak_list.add(res_nums=[res_num1, res_num2, res_num1], res_names=[res_name1, res_name2, res_name1], spin_names=[name1, name2, name3], shifts=[w1, w2, w3], intensity=intensity) - elif dim == 4: - peak_list.add(res_nums=[res_num1, res_num2, res_num1, res_num1], res_names=[res_name1, res_name2, res_name1, res_name1], spin_names=[name1, name2, name3, name4], shifts=[w1, w2, w3, w4], intensity=intensity) + # Add the assignment to the peak list object. + if dim == 1: + peak_list.add(res_nums=[res_num1], res_names=[res_name1], spin_names=[name1], shifts=[w1], intensity=intensity) + elif dim == 2: + peak_list.add(res_nums=[res_num1, res_num2], res_names=[res_name1, res_name2], spin_names=[name1, name2], shifts=[w1, w2], intensity=intensity) + elif dim == 3: + peak_list.add(res_nums=[res_num1, res_num2, res_num1], res_names=[res_name1, res_name2, res_name1], spin_names=[name1, name2, name3], shifts=[w1, w2, w3], intensity=intensity) + elif dim == 4: + peak_list.add(res_nums=[res_num1, res_num2, res_num1, res_num1], res_names=[res_name1, res_name2, res_name1, res_name1], spin_names=[name1, name2, name3, name4], shifts=[w1, w2, w3, w4], intensity=intensity) + + # If no intensity column, for example when reading spins from a spectrum list. + elif int_col == None: + warn(RelaxWarning(("The peak intensity value from the line %s is invalid. The return value will be without intensity." % line))) + + # Add the assignment to the peak list object. + if dim == 1: + peak_list.add(res_nums=[res_num1], res_names=[res_name1], spin_names=[name1], shifts=[w1]) + elif dim == 2: + peak_list.add(res_nums=[res_num1, res_num2], res_names=[res_name1, res_name2], spin_names=[name1, name2], shifts=[w1, w2]) + elif dim == 3: + peak_list.add(res_nums=[res_num1, res_num2, res_num1], res_names=[res_name1, res_name2, res_name1], spin_names=[name1, name2, name3], shifts=[w1, w2, w3]) + elif dim == 4: + peak_list.add(res_nums=[res_num1, res_num2, res_num1, res_num1], res_names=[res_name1, res_name2, res_name1, res_name1], spin_names=[name1, name2, name3, name4], shifts=[w1, w2, w3, w4]) def write_list(file_prefix=None, dir=None, res_names=None, res_nums=None, atom1_names=None, atom2_names=None, w1=None, w2=None, data_height=None, force=True): Modified: trunk/test_suite/system_tests/peak_lists.py URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/system_tests/peak_lists.py?rev=21949&r1=21948&r2=21949&view=diff ============================================================================== --- trunk/test_suite/system_tests/peak_lists.py (original) +++ trunk/test_suite/system_tests/peak_lists.py Thu Dec 12 11:02:00 2013 @@ -456,6 +456,76 @@ # Read the spins from peak list. self.interpreter.spectrum.read_spins(file="sparky2dim.list", dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'peak_lists', dim=1) self.interpreter.spectrum.read_spins(file="sparky2dim.list", dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'peak_lists', dim=2) + + # Test some of the sequence. + self.assertEqual(len(cdp.mol), 1) + self.assertEqual(cdp.mol[0].name, None) + self.assertEqual(len(cdp.mol[0].res), 7) + + # 1st residue. + self.assertEqual(cdp.mol[0].res[0].num, 62) + self.assertEqual(cdp.mol[0].res[0].name, 'W') + self.assertEqual(len(cdp.mol[0].res[0].spin), 2) + self.assertEqual(cdp.mol[0].res[0].spin[0].num, None) + self.assertEqual(cdp.mol[0].res[0].spin[0].name, 'NE1') + self.assertEqual(cdp.mol[0].res[0].spin[1].num, None) + self.assertEqual(cdp.mol[0].res[0].spin[1].name, 'HE1') + + # 2nd residue. + self.assertEqual(cdp.mol[0].res[1].num, 10) + self.assertEqual(cdp.mol[0].res[1].name, 'L') + self.assertEqual(len(cdp.mol[0].res[1].spin), 2) + self.assertEqual(cdp.mol[0].res[1].spin[0].num, None) + self.assertEqual(cdp.mol[0].res[1].spin[0].name, 'N') + self.assertEqual(cdp.mol[0].res[1].spin[1].num, None) + self.assertEqual(cdp.mol[0].res[1].spin[1].name, 'HN') + + # 3rd residue. + self.assertEqual(cdp.mol[0].res[2].num, 6) + self.assertEqual(cdp.mol[0].res[2].name, 'V') + self.assertEqual(len(cdp.mol[0].res[2].spin), 2) + self.assertEqual(cdp.mol[0].res[2].spin[0].num, None) + self.assertEqual(cdp.mol[0].res[2].spin[0].name, 'N') + self.assertEqual(cdp.mol[0].res[2].spin[1].num, None) + self.assertEqual(cdp.mol[0].res[2].spin[1].name, 'HN') + + # 4th residue. + self.assertEqual(cdp.mol[0].res[3].num, 2) + self.assertEqual(cdp.mol[0].res[3].name, 'T') + self.assertEqual(len(cdp.mol[0].res[3].spin), 2) + self.assertEqual(cdp.mol[0].res[3].spin[0].num, None) + self.assertEqual(cdp.mol[0].res[3].spin[0].name, 'N') + self.assertEqual(cdp.mol[0].res[3].spin[1].num, None) + self.assertEqual(cdp.mol[0].res[3].spin[1].name, 'HN') + + # 5th residue. + self.assertEqual(cdp.mol[0].res[4].num, 3) + self.assertEqual(cdp.mol[0].res[4].name, 'K') + self.assertEqual(len(cdp.mol[0].res[4].spin), 1) + self.assertEqual(cdp.mol[0].res[4].spin[0].num, None) + self.assertEqual(cdp.mol[0].res[4].spin[0].name, 'N') + + # 6th residue. + self.assertEqual(cdp.mol[0].res[5].num, 4) + self.assertEqual(cdp.mol[0].res[5].name, 'A') + self.assertEqual(len(cdp.mol[0].res[5].spin), 1) + self.assertEqual(cdp.mol[0].res[5].spin[0].num, None) + self.assertEqual(cdp.mol[0].res[5].spin[0].name, 'N') + + # 7th residue. + self.assertEqual(cdp.mol[0].res[6].num, 5) + self.assertEqual(cdp.mol[0].res[6].name, 'V') + self.assertEqual(len(cdp.mol[0].res[6].spin), 1) + self.assertEqual(cdp.mol[0].res[6].spin[0].num, None) + self.assertEqual(cdp.mol[0].res[6].spin[0].name, 'N') + + + def test_read_spins_peak_list_sparky_with_no_int_col(self): + """Test the reading of spins from a Sparky peak list with no intensity column.""" + + # Read the spins from peak list. + self.interpreter.spectrum.read_spins(file="sparky_wo_int.list", dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'peak_lists', dim=1) + self.interpreter.spectrum.read_spins(file="sparky_wo_int.list", dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'peak_lists', dim=2) # Test some of the sequence. self.assertEqual(len(cdp.mol), 1)