def data(self, index, role=QtCore.Qt.DisplayRole):
        if not index.isValid():
            return False

        row = index.row()
        col = index.column()

        if not reflect.is_proper_abeles_input(curvefitter.values(self.params)):
            return None

        nlayers = int(self.params['nlayers'].value)

        if row == 0 and (col == 0 or col == 3):
            return None

        if row == nlayers + 1 and col == 0:
            return None

        name = self.rowcol_to_name(row, col, nlayers)

        if role == QtCore.Qt.DisplayRole:
            return str(self.params[name].value)

        if role == QtCore.Qt.CheckStateRole:
            if self.params[name].vary:
                return QtCore.Qt.Unchecked
            else:
                return QtCore.Qt.Checked
Example #2
0
    def flags(self, index, filterNormalRef=True):
        names = self.params_store.names
        params = self.params_store[names[index.row()]]

        if self.params_store.displayOtherThanReflect:
            return (QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable)
        else:
            values = curvefitter.values(params)
            if reflect.is_proper_abeles_input(values):
                return (QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable)
            else:
                return (QtCore.Qt.NoItemFlags)
Example #3
0
    def flags(self, index, filterNormalRef=True):
        names = self.params_store.names
        params = self.params_store[names[index.row()]]

        if self.params_store.displayOtherThanReflect:
            return (QtCore.Qt.ItemIsEnabled |
                    QtCore.Qt.ItemIsSelectable)
        else:
            values = curvefitter.values(params)
            if reflect.is_proper_abeles_input(values):
                return (QtCore.Qt.ItemIsEnabled |
                        QtCore.Qt.ItemIsSelectable)
            else:
                return (QtCore.Qt.NoItemFlags)
    def add_layer(self, insertpoint):
        params = self.params
        values = curvefitter.values(params)

        if not reflect.is_proper_abeles_input(values):
            raise ValueError('The size of the parameter array passed'
                             ' to reflectivity should be 4 * coefs[0] + 8')

        oldlayers = int(values[0])

        self.params['nlayers'].value = oldlayers + 1
        self.beginInsertRows(QtCore.QModelIndex(), insertpoint + 1,
                             insertpoint + 1)

        values = curvefitter.values(self.params)
        varys = curvefitter.varys(self.params)
        bounds = curvefitter.bounds(self.params)

        #do the insertion
        startP = 4 * insertpoint + 8

        values = np.insert(values, startP, [0] * 4)
        dummy = [varys.insert(startP, i) for i
                 in [True] * 4]
        dummy = [bounds.insert(startP, i) for i
                 in [(None, None)] * 4]

        bounds = np.array(bounds)
        names = ReflectivityFitFunction.parameter_names(nparams=values.size)

        #clear the parameters
        map(self.params.pop, self.params.keys())

        # reinsert parameters
        parlist = zip(names,
                      values,
                      varys,
                      bounds.T[0],
                      bounds.T[1],
                      [None] * values.size)

        for para in parlist:
            self.params.add(*para)

        self.endInsertRows()
    def remove_layer(self, which_layer):
        params = self.params
        values = curvefitter.values(params)
        if int(values[0]) == 0:
            return False

        if not reflect.is_proper_abeles_input(values):
            raise ValueError('The size of the parameter array passed'
                             ' to reflectivity should be 4 * coefs[0] + 8')

        oldlayers = int(values[0])

        self.beginRemoveRows(QtCore.QModelIndex(), which_layer, which_layer)

        self.params['nlayers'].value = oldlayers - 1

        startP = 4 * (which_layer - 1) + 8

        #get rid of parameters we don't need anymore
        names_lost = curvefitter.names(self.params)[startP: startP + 4]
        map(self.params.pop, names_lost)

        # but now we need to rejig parameters names
        # the only way to do this is to pop them all and readd
        values = curvefitter.values(self.params)
        varys = curvefitter.varys(self.params)
        bounds = np.array(curvefitter.bounds(self.params))
        names = ReflectivityFitFunction.parameter_names(values.size)
        map(self.params.pop, self.params.keys())

        parlist = zip(names,
                      values,
                      varys,
                      bounds.T[0],
                      bounds.T[1],
                      [None] * values.size)

        for para in parlist:
            self.params.add(*para)

        self.endRemoveRows()
    def data(self, index, role=QtCore.Qt.DisplayRole):
        if not index.isValid():
            return None
        values = curvefitter.values(self.params)

        if not reflect.is_proper_abeles_input(values):
            return None

        if index.row() != 0 or index.column() < 0 or index.column() > 1:
            return None

        coltopar = ['scale', 'bkg']

        if role == QtCore.Qt.DisplayRole:
            return str(self.params[coltopar[index.column()]].value)

        if role == QtCore.Qt.CheckStateRole:
            if self.params[coltopar[index.column()]].vary:
                return QtCore.Qt.Unchecked
            else:
                return QtCore.Qt.Checked