Author: tlinnet Date: Fri Mar 7 14:52:09 2014 New Revision: 22444 URL: http://svn.gna.org/viewcvs/relax?rev=22444&view=rev Log: Modified calc_rotating_frame_params() to operate on the level of spin container and id. Regarding sr #3124, (https://gna.org/support/index.php?3124) - Grace graphs production for R1rho analysis with R2_eff as function of Omega_eff. Modified: trunk/specific_analyses/relax_disp/disp_data.py Modified: trunk/specific_analyses/relax_disp/disp_data.py URL: http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/disp_data.py?rev=22444&r1=22443&r2=22444&view=diff ============================================================================== --- trunk/specific_analyses/relax_disp/disp_data.py (original) +++ trunk/specific_analyses/relax_disp/disp_data.py Fri Mar 7 14:52:09 2014 @@ -156,18 +156,25 @@ return intensity -def calc_rotating_frame_params(): +def calc_rotating_frame_params(spin=None, spin_id=None): """Calculates and rotating frame parameters, calculated from: - The spectrometer frequency. - The spin-lock or hard pulse offset. - The dispersion point data (the spin-lock field strength in Hz). The return will be for each spin, + - Rotating frame tilt angle ( theta = arctan(w_1 / Omega) ) [rad] - The average resonance offset in the rotating frame ( Domega = w_{pop_ave} - w_rf ) [rad/s] - - Rotating frame tilt angle ( theta = arctan(w_1 / Omega) ) [rad] - Effective field in rotating frame ( w_eff = sqrt( Omega^2 + w_1^2 ) ) [rad/s] Calculations are mentioned in the U{manual<http://www.nmr-relax.com/manual/Dispersion_model_summary.html>} + + @keyword spin: The spin system specific data container + @type spin: SpinContainer instance + @keyword spin_id: The spin ID string. + @type spin_id: None or str + @return: List with dict() of theta, Domega, w_eff and list of dict() keys. + @rtype: List of dict() """ # Get the field count field_count = cdp.spectrometer_frq_count @@ -175,43 +182,32 @@ # Get the spin_lock_field points spin_lock_nu1 = return_spin_lock_nu1(ref_flag=False) - # Initialize data containers - all_spin_ids = get_spin_ids() - - # Containers for only selected spins - cur_spin_ids = [] - cur_spins = [] - for curspin_id in all_spin_ids: - # Get the spin - curspin = return_spin(curspin_id) - - # Check if is selected - if curspin.select == True: - cur_spin_ids.append(curspin_id) - cur_spins.append(curspin) - # The offset and R1 data. - chemical_shifts, offsets, tilt_angles, Delta_omega, w_eff = return_offset_data(spins=cur_spins, spin_ids=cur_spin_ids, field_count=field_count, fields=spin_lock_nu1) + chemical_shifts, offsets, tilt_angles, Delta_omega, w_eff = return_offset_data(spins=[spin], spin_ids=[spin_id], field_count=field_count, fields=spin_lock_nu1) # Loop over the index of spins, then exp_type, frq, offset print("Printing the following") - print("exp_type curspin_id frq offset{ppm} offsets[ei][si][mi][oi]{rad/s} ei mi oi si di cur_spin.chemical_shift{ppm} chemical_shifts[ei][si][mi]{rad/s} spin_lock_nu1{Hz} tilt_angles[ei][si][mi][oi]{rad}") - for si in range(len(cur_spin_ids)): - theta_spin_dic = dict() - curspin_id = cur_spin_ids[si] - cur_spin = cur_spins[si] - for exp_type, frq, offset, ei, mi, oi in loop_exp_frq_offset(return_indices=True): - # Loop over the dispersion points. - spin_lock_fields = spin_lock_nu1[ei][mi][oi] - for di in range(len(spin_lock_fields)): - print("%-8s %-10s %11.1f %8.4f %12.5f %i %i %i %i %i %7.3f %12.5f %12.5f %12.5f"%(exp_type, curspin_id, frq, offset, offsets[ei][si][mi][oi], ei, mi, oi, si, di, cur_spin.chemical_shift, chemical_shifts[ei][si][mi], spin_lock_fields[di], tilt_angles[ei][si][mi][oi][di])) - dic_key = return_param_key_from_data(exp_type=exp_type, frq=frq, offset=offset, point=spin_lock_fields[di]) - theta_spin_dic["%s"%(dic_key)] = tilt_angles[ei][si][mi][oi][di] - - print("\nThe theta data now resides in") - for curspin, mol_name, res_num, res_name, spin_id in spin_loop(full_info=True, return_id=True, skip_desel=True): - spin_index = find_index(selection=spin_id, global_index=False) - print("%s cdp.mol[%i].res[%i].spin[%i].theta"%(spin_id, spin_index[0], spin_index[1], spin_index[2])) + print("exp_type spin_id frq offset{ppm} offsets[ei][si][mi][oi]{rad/s} ei mi oi si di cur_spin.chemical_shift{ppm} chemical_shifts[ei][si][mi]{rad/s} spin_lock_nu1{Hz} tilt_angles[ei][si][mi][oi]{rad}") + + si = 0 + theta_spin_dic = dict() + Domega_spin_dic = dict() + w_eff_spin_dic = dict() + dic_key_list = [] + + for exp_type, frq, offset, ei, mi, oi in loop_exp_frq_offset(return_indices=True): + # Loop over the dispersion points. + spin_lock_fields = spin_lock_nu1[ei][mi][oi] + for di in range(len(spin_lock_fields)): + print("%-8s %-10s %11.1f %8.4f %12.5f %i %i %i %i %i %7.3f %12.5f %12.5f %12.5f"%(exp_type, spin_id, frq, offset, offsets[ei][si][mi][oi], ei, mi, oi, si, di, spin.chemical_shift, chemical_shifts[ei][si][mi], spin_lock_fields[di], tilt_angles[ei][si][mi][oi][di])) + dic_key = return_param_key_from_data(exp_type=exp_type, frq=frq, offset=offset, point=spin_lock_fields[di]) + dic_key_list.append(dic_key) + theta_spin_dic["%s"%(dic_key)] = tilt_angles[ei][si][mi][oi][di] + Domega_spin_dic["%s"%(dic_key)] = Delta_omega[ei][si][mi][oi][di] + w_eff_spin_dic["%s"%(dic_key)] = w_eff[ei][si][mi][oi][di] + + # Return the dic and list of keys + return [theta_spin_dic, Domega_spin_dic, w_eff_spin_dic, dic_key_list] def count_exp():