returns labels which have updated minima and maxima,
            depending on the kwargs supplied to this

def _get_constrained_labels(self,remove_dimensions=False,**kwargs):
        """
            returns labels which have updated minima and maxima,
            depending on the kwargs supplied to this
        """
        new_labels = []
        for label_no,label in enumerate(self.labels):
            new_label = LabelDimension(label)
            remove = False
            for k in kwargs:
                if k == label.name:
                    new_label.max = kwargs[k]
                    new_label.min = kwargs[k]
                    remove = True
                if k == label.name+'__lt':
                    if new_label.units == '1':
                        new_label.max = np.min([new_label.max,kwargs[k]-1]) # is this right?
                    else:
                        new_label.max = np.min([new_label.max,kwargs[k]])
                    #remove = True
                if k == label.name+'__lte':
                    new_label.max = np.min([new_label.max,kwargs[k]])
                    #remove = True
                if k == label.name+'__gt':
                    if new_label.units == '1':
                        new_label.min = np.max([new_label.min,kwargs[k]+1])
                    else:
                        new_label.min = np.max([new_label.min,kwargs[k]])
                    #remove = True
                if k == label.name+'__gte':
                    new_label.min = np.max([new_label.min,kwargs[k]])
                    #remove = True
                if k == label.name+'__evals':
                    remove = True
            if remove_dimensions:
                if remove:
                    # skipping removed labels
                    continue
            new_labels.append(new_label)
        return new_labels