Author: bugman Date: Mon Jan 11 17:10:01 2010 New Revision: 10173 URL: http://svn.gna.org/viewcvs/relax?rev=10173&view=rev Log: Alphabetical ordering of methods. Modified: branches/multi_processor_merge/generic_fns/subdivide_grid.py Modified: branches/multi_processor_merge/generic_fns/subdivide_grid.py URL: http://svn.gna.org/viewcvs/relax/branches/multi_processor_merge/generic_fns/subdivide_grid.py?rev=10173&r1=10172&r2=10173&view=diff ============================================================================== --- branches/multi_processor_merge/generic_fns/subdivide_grid.py (original) +++ branches/multi_processor_merge/generic_fns/subdivide_grid.py Mon Jan 11 17:10:01 2010 @@ -76,31 +76,75 @@ self.range = range - def sub_grid(self, start, range): - return Grid_info(self.grid_ops, start=start, range=range) - - - def sub_divide(self, steps): - if steps > self.range: - steps = self.range - - increment = self.range/(steps * 1.0) - max_div_end = self.start + self.range - - divs = [] - last_div = self.start - for i in range(steps): - div_end = int(math.ceil(self.start + ((i+1) * increment))) - - # this garuntees completion in the face of roundoff errors - if div_end > max_div_end: - div_end = max_div_end - - div_range = div_end - last_div - divs.append(self.sub_grid(start= last_div, range=div_range)) - last_div = div_end - - return divs + def __iter__(self): + return Grid_info.Iterator(self, self.start, self.start+self.range) + + + def __str__(self): + message = '''\ + grid info: + + number of axes: %d + full number of steps: %d + sub range indices: %d - %d + + full grid range: + + ''' + message = dedent(message) + message = message % (self.n, self.steps, self.start, self.start+self.range) + + op_message_list = [] + for i, op in enumerate(self.grid_ops): + op_message = '%d. %f...[%d steps]...%f' + op_list = (i+1, op[GRID_LOWER], op[GRID_STEPS], op[GRID_UPPER]) + op_message_list .append(op_message % op_list) + + op_message = '\n'.join(op_message_list) + + message = message + op_message + + return message + + + def calc_grid_size(self): + """Calculate the total number of grid points. + + @return: The number of grid points. + @rtype: int + """ + + # Multiply the increments of all dimensions. + size = 1 + for inc in self.inc: + size = size * inc + + # Return the size. + return size + + + def calc_grid_values(self): + """Calculate the coordinates of all grid points. + + @return: A list of lists of coordinates for each grid point. The first index corresponds to the dimensionality of the grid and the second is the increment values. + @rtype: list of lists of float + """ + + # Initialise the coordinate list. + coords = [] + + # Loop over the dimensions. + for i in range(self.n): + # Initialise the list of values for the dimension and add it to the coordinate list. + values = [] + coords.append(values) + + # Loop over the increments. + for j in range(self.inc[i]): + values.append(self.lower[i] + j * (self.upper[i] - self.lower[i]) / (self.inc[i] - 1.0)) + + # Return the grid points. + return coords def calc_strides(self): @@ -121,90 +165,14 @@ return data - def calc_grid_size(self): - """Calculate the total number of grid points. - - @return: The number of grid points. - @rtype: int - """ - - # Multiply the increments of all dimensions. - size = 1 - for inc in self.inc: - size = size * inc - - # Return the size. - return size - - - def calc_grid_values(self): - """Calculate the coordinates of all grid points. - - @return: A list of lists of coordinates for each grid point. The first index corresponds to the dimensionality of the grid and the second is the increment values. - @rtype: list of lists of float - """ - - # Initialise the coordinate list. - coords = [] - - # Loop over the dimensions. - for i in range(self.n): - # Initialise the list of values for the dimension and add it to the coordinate list. - values = [] - coords.append(values) - - # Loop over the increments. - for j in range(self.inc[i]): - values.append(self.lower[i] + j * (self.upper[i] - self.lower[i]) / (self.inc[i] - 1.0)) - - # Return the grid points. - return coords - - - def __str__(self): - message = '''\ - grid info: - - number of axes: %d - full number of steps: %d - sub range indices: %d - %d - - full grid range: - - ''' - message = dedent(message) - message = message % (self.n, self.steps, self.start, self.start+self.range) - - op_message_list = [] - for i, op in enumerate(self.grid_ops): - op_message = '%d. %f...[%d steps]...%f' - op_list = (i+1, op[GRID_LOWER], op[GRID_STEPS], op[GRID_UPPER]) - op_message_list .append(op_message % op_list) - - op_message = '\n'.join(op_message_list) - - message = message + op_message - - return message - - - def print_steps(self): - offsets = self.get_step_offset(self.start) - #params = self.get_params(step_num) - #for op in self.grid_ops: - # params.append(op[GRID_LOWER]) - - for i in xrange(self.start, self.start+self.range): - - print `i+1` + '. ', self.get_params(offsets) - for j in range(self.n): - if offsets[j] < self.grid_ops[j][GRID_STEPS]-1: - offsets[j] = offsets[j] + 1 - - # Exit so that the other step numbers are not incremented. - break - else: - offsets[j] = 0 + def get_params(self, offsets, params=None): + if params == None: + params = ones(len(offsets), float) + + for i, offset in enumerate(offsets): + params[i] = self.values[i][offset] + + return params def get_step_offset(self, step): @@ -224,14 +192,50 @@ #return res_values - def get_params(self, offsets, params=None): - if params == None: - params = ones(len(offsets), float) - - for i, offset in enumerate(offsets): - params[i] = self.values[i][offset] - - return params + def print_steps(self): + offsets = self.get_step_offset(self.start) + #params = self.get_params(step_num) + #for op in self.grid_ops: + # params.append(op[GRID_LOWER]) + + for i in xrange(self.start, self.start+self.range): + + print `i+1` + '. ', self.get_params(offsets) + for j in range(self.n): + if offsets[j] < self.grid_ops[j][GRID_STEPS]-1: + offsets[j] = offsets[j] + 1 + + # Exit so that the other step numbers are not incremented. + break + else: + offsets[j] = 0 + + + def sub_divide(self, steps): + if steps > self.range: + steps = self.range + + increment = self.range/(steps * 1.0) + max_div_end = self.start + self.range + + divs = [] + last_div = self.start + for i in range(steps): + div_end = int(math.ceil(self.start + ((i+1) * increment))) + + # this garuntees completion in the face of roundoff errors + if div_end > max_div_end: + div_end = max_div_end + + div_range = div_end - last_div + divs.append(self.sub_grid(start= last_div, range=div_range)) + last_div = div_end + + return divs + + + def sub_grid(self, start, range): + return Grid_info(self.grid_ops, start=start, range=range) @@ -256,16 +260,21 @@ return self - def next(self): - if self.step >= self.end: - raise StopIteration() - - self.params = self.info.get_params(self.offsets, self.params) - - self.step = self.step + 1 - self.increment() - - return self.params + def __str__(self): + print type(self.start) + print type(self.end) + print type(self.step) + return ''' info: + + %s + + iter: + + start %d + end %d + step %d + offsets %s + params %s ''' % (`self.info`, self.start, self.end, self.step, `self.offsets`, `self.params`) def increment(self): @@ -280,22 +289,13 @@ self.offsets[j] = 0 - def __str__(self): - print type(self.start) - print type(self.end) - print type(self.step) - return ''' info: - - %s - - iter: - - start %d - end %d - step %d - offsets %s - params %s ''' % (`self.info`, self.start, self.end, self.step, `self.offsets`, `self.params`) - - - def __iter__(self): - return Grid_info.Iterator(self, self.start, self.start+self.range) + def next(self): + if self.step >= self.end: + raise StopIteration() + + self.params = self.info.get_params(self.offsets, self.params) + + self.step = self.step + 1 + self.increment() + + return self.params