Author: bugman Date: Thu May 30 14:37:16 2013 New Revision: 19792 URL: http://svn.gna.org/viewcvs/relax?rev=19792&view=rev Log: Shifted the core of the model_loop() dispersion method into its own function. The new function specific_analyses.relax_disp.disp_data.loop_cluster() can now be used by other parts of relax. The model_loop() method now yields the data that loop_cluster() yields. Modified: branches/relax_disp/specific_analyses/relax_disp/__init__.py branches/relax_disp/specific_analyses/relax_disp/disp_data.py Modified: branches/relax_disp/specific_analyses/relax_disp/__init__.py URL: http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/__init__.py?rev=19792&r1=19791&r2=19792&view=diff ============================================================================== --- branches/relax_disp/specific_analyses/relax_disp/__init__.py (original) +++ branches/relax_disp/specific_analyses/relax_disp/__init__.py Thu May 30 14:37:16 2013 @@ -56,7 +56,7 @@ from pipe_control.result_files import add_result_file from specific_analyses.api_base import API_base from specific_analyses.api_common import API_common -from specific_analyses.relax_disp.disp_data import average_intensity, find_intensity_keys, loop_frq, loop_frq_point, loop_frq_point_key, loop_frq_point_time, loop_point, loop_time, relax_time, return_cpmg_frqs, return_index_from_disp_point, return_index_from_frq, return_key_from_disp_point_index, return_param_key_from_data, return_r2eff_arrays, return_spin_lock_nu1 +from specific_analyses.relax_disp.disp_data import average_intensity, find_intensity_keys, loop_cluster, loop_frq, loop_frq_point, loop_frq_point_key, loop_frq_point_time, loop_point, loop_time, relax_time, return_cpmg_frqs, return_index_from_disp_point, return_index_from_frq, return_key_from_disp_point_index, return_param_key_from_data, return_r2eff_arrays, return_spin_lock_nu1 from specific_analyses.relax_disp.parameters import assemble_param_vector, assemble_scaling_matrix, disassemble_param_vector, linear_constraints, param_index_to_param_info, param_num from specific_analyses.relax_disp.variables import CPMG_EXP, FIXED_TIME_EXP, MODEL_R2EFF, MODEL_LM63, MODEL_CR72, R1RHO_EXP, VAR_TIME_EXP from target_functions.relax_disp import Dispersion @@ -1237,41 +1237,9 @@ @rtype: tuple of list of SpinContainer instances and list of spin IDs """ - # No clustering, so loop over the sequence. - if not hasattr(cdp, 'clustering'): - for spin, spin_id in spin_loop(return_id=True): - # Skip deselected spins. - if not spin.select: - continue - - # Return the spin container as a stop-gap measure. - yield [spin], [spin_id] - - # Loop over the clustering. - else: - # The clusters. - for key in cdp.clustering.keys(): - # Skip the free spins. - if key == 'free spins': - continue - - # Create the spin container and ID lists. - spin_list = [] - spin_id_list = [] - for spin_id in cdp.clustering[key]: - spin_list.append(return_spin(spin_id)) - spin_id_list.append(spin_id) - - # Yield the cluster. - yield spin_list, spin_id_list - - # The free spins. - for spin_id in cdp.clustering['free spins']: - # Get the spin container. - spin = return_spin(spin_id) - - # Yield each spin individually. - yield [spin], [spin_id] + # The cluster loop. + for info in loop_cluster(): + yield info def overfit_deselect(self, data_check=True, verbose=True): Modified: branches/relax_disp/specific_analyses/relax_disp/disp_data.py URL: http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/disp_data.py?rev=19792&r1=19791&r2=19792&view=diff ============================================================================== --- branches/relax_disp/specific_analyses/relax_disp/disp_data.py (original) +++ branches/relax_disp/specific_analyses/relax_disp/disp_data.py Thu May 30 14:37:16 2013 @@ -38,6 +38,7 @@ # relax module imports. from lib.errors import RelaxError, RelaxNoSpectraError from lib.list import count_unique_elements, unique_elements +from pipe_control.mol_res_spin import return_spin, spin_loop from specific_analyses.relax_disp.variables import CPMG_EXP, FIXED_TIME_EXP, R1RHO_EXP @@ -171,6 +172,50 @@ return ids +def loop_cluster(): + """Loop over the spin groupings for one model applied to multiple spins. + + @return: The list of spins per block will be yielded, as well as the list of spin IDs. + @rtype: tuple of list of SpinContainer instances and list of spin IDs + """ + + # No clustering, so loop over the sequence. + if not hasattr(cdp, 'clustering'): + for spin, spin_id in spin_loop(return_id=True): + # Skip deselected spins. + if not spin.select: + continue + + # Return the spin container as a stop-gap measure. + yield [spin], [spin_id] + + # Loop over the clustering. + else: + # The clusters. + for key in cdp.clustering.keys(): + # Skip the free spins. + if key == 'free spins': + continue + + # Create the spin container and ID lists. + spin_list = [] + spin_id_list = [] + for spin_id in cdp.clustering[key]: + spin_list.append(return_spin(spin_id)) + spin_id_list.append(spin_id) + + # Yield the cluster. + yield spin_list, spin_id_list + + # The free spins. + for spin_id in cdp.clustering['free spins']: + # Get the spin container. + spin = return_spin(spin_id) + + # Yield each spin individually. + yield [spin], [spin_id] + + def loop_frq(): """Generator method for looping over all spectrometer frequencies.