Hi Troels,
I have been looking at profiling the 'NS R1rho 2-site' model as I
would like to see what happens with the change:
Index: lib/dispersion/ns_r1rho_2site.py
===================================================================
--- lib/dispersion/ns_r1rho_2site.py (revision 25225)
+++ lib/dispersion/ns_r1rho_2site.py (working copy)
@@ -233,11 +233,8 @@
Rexpo_mat = matrix_exponential(R_mat)
# Magnetization evolution.
- Rexpo_M0_mat = einsum('...ij, ...jk', Rexpo_mat, M0)
+ MA_mat = einsum('...ij, ...jk, ...kl', M0_T, Rexpo_mat, M0)[:, :,
:, :, :, 0, 0]
- # Magnetization evolution, which include all dimensions.
- MA_mat = einsum('...ij, ...jk', M0_T, Rexpo_M0_mat)[:, :, :, :, :, 0, 0]
-
# Insert safe checks.
if min(MA_mat) < 0.0:
mask_min_MA_mat = masked_less(MA_mat, 0.0)
This change appears to work and might make things faster, but the
profiling scripts no longer work due to the relax_times data structure
changes. I don't know how we would fix this so that it continues to
run on older relax versions as well as the current version with the
relax_times structure updated. Maybe we could create 2 relax_times
data structures, and then decide which is best based on the
Dispersion.__init__.__doc__ contents. What do you think? I will
probably rerun the full profiling disp_profile_all.py script before
releasing relax 3.3.0, as the timings are now out of date.
Cheers,
Edward
P. S. I thought of this change while trying to work out why different
T_relax values cause this module to return different R1rho values!
Strange.