Hi, Where you have used the numpy.subtract() function, you should just before it use the numpy.multiply() function. In the line:
+ subtract(r20_kex, cpmg_frqs * arccosh( fact ), out=back_calc) You actually create a data structure "cpmg_frqs * arccosh( fact )" which is later destroyed. See http://thread.gmane.org/gmane.science.nmr.relax.devel/6159/focus=6171 for how to do this. Regards, Edward On 11 June 2014 15:25, <[email protected]> wrote: > Author: tlinnet > Date: Wed Jun 11 15:25:32 2014 > New Revision: 23839 > > URL: http://svn.gna.org/viewcvs/relax?rev=23839&view=rev > Log: > Replaced the temporary variable R2eff with back_calc, and used numpy subtract > to speed up. > > Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion > models for Clustered analysis. > > Modified: > branches/disp_spin_speed/lib/dispersion/cr72.py > > Modified: branches/disp_spin_speed/lib/dispersion/cr72.py > URL: > http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/lib/dispersion/cr72.py?rev=23839&r1=23838&r2=23839&view=diff > ============================================================================== > --- branches/disp_spin_speed/lib/dispersion/cr72.py (original) > +++ branches/disp_spin_speed/lib/dispersion/cr72.py Wed Jun 11 15:25:32 > 2014 > @@ -92,7 +92,7 @@ > """ > > # Python module imports. > -from numpy import arccosh, array, cos, cosh, isfinite, fabs, min, max, sqrt, > sum > +from numpy import arccosh, array, cos, cosh, isfinite, fabs, min, max, sqrt, > subtract, sum > from numpy.ma import fix_invalid, masked_greater_equal, masked_less, > masked_where > > # Repetitive calculations (to speed up calculations). > @@ -181,8 +181,8 @@ > back_calc[:] = r20_kex > return > > - # Calculate R2eff. > - R2eff = r20_kex - cpmg_frqs * arccosh( fact ) > + # Calculate R2eff. This uses the temporary buffer and fill directly to > back_calc. > + subtract(r20_kex, cpmg_frqs * arccosh( fact ), out=back_calc) > > # Replace data in array. > # If dw is zero. > @@ -191,7 +191,7 @@ > back_calc[:] = array([r20a]*num_points) > return > else: > - R2eff[mask_dw_zero.mask] = r20a[mask_dw_zero.mask] > + back_calc[mask_dw_zero.mask] = r20a[mask_dw_zero.mask] > > # If eta_pos above 700. > if t_max_etapos: > @@ -199,12 +199,10 @@ > back_calc[:] = array([r20a]*num_points) > return > else: > - R2eff[mask_max_etapos.mask] = r20a[mask_max_etapos.mask] > + back_calc[mask_max_etapos.mask] = r20a[mask_max_etapos.mask] > > # Catch errors, taking a sum over array is the fastest way to check for > # +/- inf (infinity) and nan (not a number). > - if not isfinite(sum(R2eff)): > + if not isfinite(sum(back_calc)): > # Replaces nan, inf, etc. with fill value. > - fix_invalid(R2eff, copy=False, fill_value=1e100) > - > - back_calc[:] = R2eff > + fix_invalid(back_calc, copy=False, fill_value=1e100) > > > _______________________________________________ > 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

