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
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 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