mailRe: r23955 - /branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on June 15, 2014 - 11:13:
Hi Troels,

Can this reshape happen in the target function __init__() method
instead, directly where M0 is initialised, i.e. "self.M0 = zeros((7,
1), float64)"?  That would be faster by avoiding this operation in the
target function calls, though considering how slow the rest of the
numeric model code is, you won't see a difference.  But it would be
cleaner, as M0 will remain in the same state throughout.

On a different note, you could initialise Mint storage outside of this
loop with "Mint = 1.0 * M0", and then use the numpy.dot() out argument
to replace:

Mint = t_mat.dot(Mint)

with:

dot(t_mat, Mint, Mint)

Though it looks like it is doing the same thing, the second option is
always faster.  In the first option, the dot product is more involved.
First it actually creates a completely new data structure for
"t_max.Mint", allocating new memory for it.  Then it replaces the
original Mint structure with the new structure (which are located in
different parts of the memory, this is just a pointer change), hence
the original Mint structure is garbage collected (the memory is
freed).  The second option with the out argument avoids the new memory
allocation and garbage collection by reusing the original Mint memory
allocation.

Regards,

Edward

On 15 June 2014 08:53,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Sun Jun 15 08:53:44 2014
New Revision: 23955

URL: http://svn.gna.org/viewcvs/relax?rev=23955&view=rev
Log:
Turned Mint vector into a 7,1 matrix, so dimensions fit with evolution 
matrix.

Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion 
models for Clustered analysis.

Modified:
    branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py

Modified: branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py?rev=23955&r1=23954&r2=23955&view=diff
==============================================================================
--- branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py (original)
+++ branches/disp_spin_speed/lib/dispersion/ns_cpmg_2site_3d.py Sun Jun 15 
08:53:44 2014
@@ -132,7 +132,7 @@
     # Loop over the time points, back calculating the R2eff values.
     for i in range(num_points):
         # Initial magnetisation.
-        Mint = M0
+        Mint = M0.reshape(7, 1)

         # This matrix is a propagator that will evolve the magnetization 
with the matrix R for a delay tcp.
         Rexpo = matrix_exponential(R*tcp[i])
@@ -145,7 +145,7 @@
             Mint = t_mat.dot(Mint)

         # The next lines calculate the R2eff using a two-point 
approximation, i.e. assuming that the decay is mono-exponential.
-        Mx = Mint[1] / pA
+        Mx = Mint[1][0] / pA
         if Mx <= 0.0 or isNaN(Mx):
             back_calc[i] = r20a
         else:


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
relax-commits@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits



Related Messages


Powered by MHonArc, Updated Sun Jun 15 15:40:13 2014