def __init__( self, data, userParams=None, fitMethods=default_fitMethods, validateInput=True): # validate input if validateInput: try: val.validateData(data) if userParams: val.validate_userParams(userParams, self.IsothermFunc) except val.InputError as ie: print(ie) return None except Exception as inst: print(type(inst)) print(inst) return None # initiate lmfit's wrapper around the isotherm function isoModel = lmfit.Model(self.IsothermFunc) # replace inititial params with userParams if userParams: for key in userParams: isoModel.__dict__['def_vals'][key] = userParams[key] # fit models using given fitMethods isoModelResult = None for fit_method in fitMethods: if isoModelResult: isoModelResult = isoModel.fit( data=data[1], x=data[0], params=isoModelResult.params, # this is what's different method=fit_method, fit_kws=fitMethods[fit_method]) else: isoModelResult = isoModel.fit( data=data[1], x=data[0], method=fit_method, fit_kws=fitMethods[fit_method]) self.isoModelResult = isoModelResult # validate fit model against isotherm theory self.modelValidity = self.ValidateFit()