Author: bugman Date: Thu Mar 5 10:00:43 2009 New Revision: 8904 URL: http://svn.gna.org/viewcvs/relax?rev=8904&view=rev Log: Shifted the relaxation data saveframe generation code into generic_fns.relax_data.bmrb_write(). Modified: branches/bmrb/generic_fns/relax_data.py branches/bmrb/specific_fns/model_free/bmrb.py Modified: branches/bmrb/generic_fns/relax_data.py URL: http://svn.gna.org/viewcvs/relax/branches/bmrb/generic_fns/relax_data.py?rev=8904&r1=8903&r2=8904&view=diff ============================================================================== --- branches/bmrb/generic_fns/relax_data.py (original) +++ branches/bmrb/generic_fns/relax_data.py Thu Mar 5 10:00:43 2009 @@ -203,6 +203,52 @@ # Update all data structures. update_data_structures_spin(spin, ri_label, frq_label, frq, value) + + +def bmrb_write(star): + """Generate the relaxation data saveframes for the NMR-STAR dictionary object. + + @param star: The NMR-STAR dictionary object. + @type star: NMR_STAR instance + """ + + # Get the current data pipe. + cdp = pipes.get_pipe() + + # Initialise the spin specific data lists. + res_num_list = [] + res_name_list = [] + atom_name_list = [] + relax_data_list = [] + relax_error_list = [] + for i in range(cdp.num_ri): + relax_data_list.append([]) + relax_error_list.append([]) + + # Store the spin specific data in lists for later use. + for spin, mol_name, res_num, res_name in spin_loop(full_info=True): + # Skip deselected spins. + if not spin.select: + continue + + # The molecule/R1residue/spin info. + res_num_list.append(str(res_num)) + res_name_list.append(str(res_name)) + atom_name_list.append(str(spin.name)) + + # The relaxation data. + for i in range(cdp.num_ri): + relax_data_list[i].append(str(spin.relax_data[i])) + relax_error_list[i].append(str(spin.relax_error[i])) + + # Add the relaxation data. + for i in range(cdp.num_ri): + if cdp.ri_labels[i] == 'R1': + star.heteronucl_T1_relaxation.add(frq=cdp.frq[cdp.remap_table[i]], res_nums=res_num_list, res_names=res_name_list, atom_names=atom_name_list, data=relax_data_list[i], errors=relax_error_list[i]) + elif cdp.ri_labels[i] == 'R2': + star.heteronucl_T2_relaxation.add(frq=cdp.frq[cdp.remap_table[i]], res_nums=res_num_list, res_names=res_name_list, atom_names=atom_name_list, data=relax_data_list[i], errors=relax_error_list[i]) + elif cdp.ri_labels[i] == 'NOE': + star.heteronucl_NOEs.add(frq=cdp.frq[cdp.remap_table[i]], res_nums=res_num_list, res_names=res_name_list, atom_names=atom_name_list, data=relax_data_list[i], errors=relax_error_list[i]) def copy(pipe_from=None, pipe_to=None, ri_label=None, frq_label=None): Modified: branches/bmrb/specific_fns/model_free/bmrb.py URL: http://svn.gna.org/viewcvs/relax/branches/bmrb/specific_fns/model_free/bmrb.py?rev=8904&r1=8903&r2=8904&view=diff ============================================================================== --- branches/bmrb/specific_fns/model_free/bmrb.py (original) +++ branches/bmrb/specific_fns/model_free/bmrb.py Thu Mar 5 10:00:43 2009 @@ -22,7 +22,7 @@ # relax module imports. from bmrblib.nmr_star_dict_v3_1 import NMR_STAR_v3_1 -from generic_fns import mol_res_spin +from generic_fns import mol_res_spin, relax_data from generic_fns.mol_res_spin import spin_loop from generic_fns.pipes import get_pipe @@ -60,40 +60,8 @@ # Generate the entity saveframe. mol_res_spin.bmrb_write_entity(star) - # Initialise the spin specific data lists. - res_num_list = [] - res_name_list = [] - atom_name_list = [] - relax_data_list = [] - relax_error_list = [] - for i in range(cdp.num_ri): - relax_data_list.append([]) - relax_error_list.append([]) - - # Store the spin specific data in lists for later use. - for spin, mol_name, res_num, res_name in spin_loop(full_info=True): - # Skip deselected spins. - if not spin.select: - continue - - # The molecule/R1residue/spin info. - res_num_list.append(str(res_num)) - res_name_list.append(str(res_name)) - atom_name_list.append(str(spin.name)) - - # The relaxation data. - for i in range(cdp.num_ri): - relax_data_list[i].append(str(spin.relax_data[i])) - relax_error_list[i].append(str(spin.relax_error[i])) - - # Add the relaxation data. - for i in range(cdp.num_ri): - if cdp.ri_labels[i] == 'R1': - star.heteronucl_T1_relaxation.add(frq=cdp.frq[cdp.remap_table[i]], res_nums=res_num_list, res_names=res_name_list, atom_names=atom_name_list, data=relax_data_list[i], errors=relax_error_list[i]) - elif cdp.ri_labels[i] == 'R2': - star.heteronucl_T2_relaxation.add(frq=cdp.frq[cdp.remap_table[i]], res_nums=res_num_list, res_names=res_name_list, atom_names=atom_name_list, data=relax_data_list[i], errors=relax_error_list[i]) - elif cdp.ri_labels[i] == 'NOE': - star.heteronucl_NOEs.add(frq=cdp.frq[cdp.remap_table[i]], res_nums=res_num_list, res_names=res_name_list, atom_names=atom_name_list, data=relax_data_list[i], errors=relax_error_list[i]) + # Generate the relaxation data saveframes. + relax_data.bmrb_write(star) # Write the contents to the STAR formatted file. star.write()