code: def ranges(self):
          
          steps = []
          for p in self._parameters:
              # inclusive range
              if p['parameter'] == 'filename':
                  steps.append(p['names'])
              else:
                  if p['step'] > 0:
                      start = p['start']
                      stop = p['stop']
                      if start > stop:
                          step = p['step']*-1
                      else:
                          step = p['step']
                      # nsteps = np.ceil(np.around(abs(start - stop), 4) / p['step'])
                      nsteps = self.nStepsForParam(p)
                      # print 'nsteps', np.around(abs(start - stop), 4), p['step']
                      # print 'start, stop, steps', start, stop, nsteps
                      step_tmp = np.linspace(start, start+step*(nsteps-2), nsteps-1)
                      # print 'step_tmp', step_tmp
  
                      # if step_tmp[-1] != stop:
                      step_tmp = np.append(step_tmp,stop)
                      # print 'step range', step_tmp
  
                      steps.append(np.around(step_tmp,4))
                  else:
                      assert p['start'] == p['stop']
                      steps.append([p['start']])
          return steps
docs: The expanded lists of values generated from the parameter fields
  
          :returns: list<list>, outer list is for each parameter, inner loops are that
          parameter's values to loop through