Hi, It is the first - relax is simply storing the R1rho values in the data structure called r2eff. One day we might discover a name that would encompass both data types, and then we can change r2eff to that name (and add backwards compatibility hooks into the code in the 'data_store' package). I think the unit test is a good idea to understand this function, and you should then see how you can use it to obtain the values you need. If there is no data input needed, then modifying return_offset_data() to calculate and return omega_eff and then using that data where you need it will be the simplest, safest and cleanest implementation. Regards, Edward On 6 March 2014 14:43, Troels Emtekær Linnet <tlinnet@xxxxxxxxxxxxx> wrote:
Dear Edward. A little note on the naming of r2eff for an R1rho analysis with DPL94. http://wiki.nmr-relax.com/DPL94 Does r2eff here means: r2eff = R1rho = R1*cos(t)*2 + (R1rho' + P_ex*k_ex/(k_ex^2 + w_e^2) ) * sin(t) *2 or is it: R2,eff = (R1rho - R1*cos(t)*2) / sin(t) *2 I guess it must reflect the first? I think I am a little lost matching different conventions about the terminology for naming equations and parts of them. :-) I do not have an interest in loading in omega_eff values. It is rather the writing out of them, which I then could manually compare to values in a spreadsheet or similar. I am writing up a unit test, to get the values return_offset_data(). That should probably help me in understanding the data structure. Thanks Troels 2014-03-06 14:10 GMT+01:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:Hi, One more point:A desired functionality, would be to implement a user function. Maybe - relax_disp.return_offset_data - relax_data.return_offset_data or add the functionality to - relax_data.back_calc The user function should create parameters as a dictionary: The dictionary keys could be the same as r2eff cdp.mol[0].res[7].spin[0].r2eff {'r1rho_799.77739910_118.078_800.500': 9.84888500988483, 'r1rho_799.77739910_142.754_1341.110': 4.9805363953113471, 'r1rho_799.77739910_130.416_1341.110': 9.1530088665806915, 'r1rho_799.77739910_130.416_800.500': 7.3650924682616958, 'r1rho_799.77739910_118.078_984.000': 9.9513756586716013, 'r1rho_799.77739910_118.078_651.200': 9.4610010912607088, 'r1rho_799.77739910_241.459_1341.110': 1.2925550460815427, 'r1rho_799.77739910_118.078_431.000': 8.0090052925282862, 'r1rho_799.77739910_118.078_1648.500': 10.202945137023924, 'r1rho_799.77739910_179.768_1341.110': 1.8836588047273142, 'r1rho_799.77739910_118.078_1341.110': 10.31096739492439, 'r1rho_799.77739910_130.416_1648.500': 9.3622346598033772, 'r1rho_799.77739910_124.247_1341.110': 10.835446929931628, 'r1rho_799.77739910_142.754_800.500': 3.1304734741765006} And the writing out of the values could be: value.write(param='r2eff', file='r2eff.out', dir=None, scaling=1.0, comment=None, bc=False, force=False) value.write(param='theta', file='theta.out', dir=None, scaling=1.0, comment=None, bc=False, force=False) For generating plots, grace.write will complain with: grace.write(x_data_type='spin_lock_nu1', y_data_type='r2eff', spin_id=':13@N', plot_data='value', file='/sbinlab2/tlinnet/test/test.agr', dir=None, force=True, norm=False) raise RelaxError("The series data %s does not have the same number of elements as %s." % (x_val, y_val)) Therefore the relax_disp.plot_disp_curves should be able to chose between, taking x and y arguments as: y : r2eff, r1rho x : spin_lock strength, theta, Omega_eff If theta, Omega_eff does not exists, it should call the above user function to create the data.A user function is not needed, as this is happening in the relax backend. The specific_analyses.relax_disp.disp_data.return_offset_data() function can return the values in the data matrix form (lists of lists) as it currently does. But just modify that function to return omega_eff as well. The options for the X-axis are perfect. But the options for the Y-axis are not needed as r1rho and r2eff are stored as the same data (in the spin container r2eff dictionary). Regards, Edward