Exemplo n.º 1
0
    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()