Hi Troels,
If you construct the dw_mask structure here, you will need to include
the ei index, replacing:
self.dw_mask[si, :, si, mi] = self.frqs[ei][si][mi]
with:
self.dw_mask[si, ei, si, mi] = self.frqs[ei][si][mi]
It also seems strange to use a list for the numpy.zeros() function,
but it seems to work anyway. For safety though, in case older or
future versions do not support a list argument, maybe you could use
the Python tuple() function to convert to the correct argument form.
One last suggestion, as I made in my second code example at
http://thread.gmane.org/gmane.science.nmr.relax.devel/6135/focus=6157,
is that self.dw_temp can be created instead as:
self.dw_temp = zeros(self.numpy_array_shape, float64)
Then it doesn't use the [si] index in the target function. This makes
this temporary storage smaller.
Cheers,
Edward
On 11 June 2014 08:28, <[email protected]> wrote:
> Author: tlinnet
> Date: Wed Jun 11 08:28:25 2014
> New Revision: 23813
>
> URL: http://svn.gna.org/viewcvs/relax?rev=23813&view=rev
> Log:
> Made iinitialisation structures for dw.
>
> Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion
> models for Clustered analysis.
>
> Modified:
> branches/disp_spin_speed/target_functions/relax_disp.py
>
> Modified: branches/disp_spin_speed/target_functions/relax_disp.py
> URL:
> http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/target_functions/relax_disp.py?rev=23813&r1=23812&r2=23813&view=diff
> ==============================================================================
> --- branches/disp_spin_speed/target_functions/relax_disp.py (original)
> +++ branches/disp_spin_speed/target_functions/relax_disp.py Wed Jun 11
> 08:28:25 2014
> @@ -408,6 +408,13 @@
> # Define the shape of all the numpy arrays.
> self.numpy_array_shape = back_calc_shape +
> [self.max_num_disp_points]
>
> + # Set the dimensions to paramater.
> + self.ei = self.numpy_array_shape[0]
> + self.si = self.numpy_array_shape[1]
> + self.mi = self.numpy_array_shape[2]
> + self.oi = self.numpy_array_shape[3]
> + self.di = self.numpy_array_shape[4]
> +
> # Create zero and one numpy structure.
> zeros_a = zeros(self.numpy_array_shape, float64)
> ones_a = ones(self.numpy_array_shape, float64)
> @@ -427,12 +434,25 @@
> self.disp_struct = deepcopy(zeros_a)
> self.has_missing = False
>
> + # Create special numpy structures.
> + # Structure of dw.
> + self.dw_struct = deepcopy(zeros_a)
> +
> + # Temporary storage to avoid memory allocations and garbage
> collection.
> + self.dw_temp = zeros([self.si] + self.numpy_array_shape, float64)
> +
> + # The structure for multiplication with dw to piecewise build up
> the full dw structure.
> + self.dw_mask = deepcopy(self.dw_temp)
> +
> # Loop over the experiment types.
> for ei in range(self.num_exp):
> # Loop over the spins.
> for si in range(self.num_spins):
> # Loop over the spectrometer frequencies.
> for mi in range(self.num_frq):
> + # Fill dw_mask with frequencies.
> + self.dw_mask[si, :, si, mi] = self.frqs[ei][si][mi]
> +
> # Loop over the offsets.
> for oi in range(self.num_offsets[ei][si][mi]):
> # Extract number of dispersion points.
>
>
> _______________________________________________
> 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