If I can work out how to eliminate all looping in the numeric models, you might have to revert this ;)
Regards, Edward On 20 June 2014 08:37, <[email protected]> wrote: > Author: tlinnet > Date: Fri Jun 20 08:37:29 2014 > New Revision: 24186 > > URL: http://svn.gna.org/viewcvs/relax?rev=24186&view=rev > Log: > Simplified model CPMG 2site 3D. > > The expansion of matrixes to higher dimensionality is not neccessary. > > 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=24186&r1=24185&r2=24186&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 Fri Jun 20 > 08:37:29 2014 > @@ -134,16 +134,11 @@ > # This matrix is a propagator that will evolve the magnetization with > the matrix R for a delay tcp. > Rexpo_mat = matrix_exponential_rankN(R_mat) > > - # Initial magnetisation. > - # Expand axis, and tile up to dimensions. > - Mint_mat = tile(M0[newaxis, newaxis, newaxis, newaxis, newaxis, :, > newaxis], (NE, NS, NM, NO, ND, 1, 1) ) > - r180x_mat = tile(r180x[newaxis, newaxis, newaxis, newaxis, newaxis, > ...], (NE, NS, NM, NO, ND, 1, 1) ) > - > # The the essential evolution matrix. > - # This is a dot product of the outer [7][7] matrix of the Rexpo_mat and > r180x_mat matrixes, which > - # have the shape [NE][NS][NM][NO][ND][7][7]. > + # This is a dot product of the outer [7][7] matrix of the Rexpo_mat and > r180x matrixes, which > + # have the shape [NE][NS][NM][NO][ND][7][7] and [7][7]. > # This can be achieved by using numpy einsum, and where ellipsis > notation will use the last axis. > - evolution_matrix_mat = einsum('...ij,...jk', Rexpo_mat, r180x_mat) > + evolution_matrix_mat = einsum('...ij,...jk', Rexpo_mat, r180x) > evolution_matrix_mat = einsum('...ij,...jk', evolution_matrix_mat, > Rexpo_mat) > evolution_matrix_mat = einsum('...ij,...jk', evolution_matrix_mat, > evolution_matrix_mat) > > @@ -162,7 +157,7 @@ > r20a_si_mi_di = r20a[0, si, mi, 0, di] > > # Initial magnetisation. > - Mint_i = Mint_mat[0, si, mi, 0, di] > + Mint_i = M0 > > # This matrix is a propagator that will evolve the > magnetization with the matrix R for a delay tcp. > evolution_matrix_i = evolution_matrix_mat[0, si, mi, 0, di] > @@ -172,7 +167,7 @@ > Mint_i = dot(evolution_matrix_i, Mint_i) > > # The next lines calculate the R2eff using a two-point > approximation, i.e. assuming that the decay is mono-exponential. > - Mx = Mint_i[1][0] / pA > + Mx = Mint_i[1] / pA > if Mx <= 0.0 or isNaN(Mx): > back_calc[0, si, mi, 0, di] = r20a_si_mi_di > else: > > > _______________________________________________ > relax (http://www.nmr-relax.com) > > This is the relax-commits mailing list > [email protected] > > 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 _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list [email protected] 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-devel

