Oh, the 'ei', 'si', 'mi', etc. notation I used stands for experimental index, spin index, magnetic field strength index, etc. That is why I used NE, NS, NM, etc. for the total numbers, as these stand for number of experiments, number of spins, number of magnetic field strength index, etc. So ei is the index, and NE is the sum. To avoid confusion with the various indices, maybe your self.ei could be replaced with self.NE, self.ne, self.num_exp, or some other name. Regards, Edward On 11 June 2014 09:16, Edward d'Auvergne <edward@xxxxxxxxxxxxx> wrote:
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, <tlinnet@xxxxxxxxxxxxx> 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 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