def _reflamp(self): #calc_q = self.probe.calc_Q #return calc_q,calc_q key = 'calc_r' if key not in self._cache: slabs = self._render_slabs() w = slabs.w rho,irho = slabs.rho, slabs.irho sigma = slabs.sigma #sigma = slabs.sigma calc_q = self.probe.calc_Q #print("calc Q", self.probe.calc_Q) if slabs.ismagnetic: rhoM, thetaM = slabs.rhoM, slabs.thetaM Aguide = self.probe.Aguide calc_r = reflmag(-calc_q/2, depth=w, rho=rho[0], irho=irho[0], rhoM=rhoM, thetaM=thetaM, Aguide=Aguide) else: calc_r = reflamp(-calc_q/2, depth=w, rho=rho, irho=irho, sigma=sigma) if False and numpy.isnan(calc_r).any(): print("w %s",w) print("rho",rho) print("irho",irho) print("sigma",sigma) print("kz",self.probe.calc_Q/2) print("R",abs(calc_r**2)) pars = parameter.unique(self.parameters()) fitted = parameter.varying(pars) print(parameter.summarize(fitted)) print("===") self._cache[key] = calc_q,calc_r #if numpy.isnan(calc_q).any(): print("calc_Q contains NaN") #if numpy.isnan(calc_r).any(): print("calc_r contains NaN") return self._cache[key]
def save(self, basename): import json pars = [(p.name,p.value) for p in varying(self.parameters())] out = json.dumps(dict(theory=self.theory().tolist(), data=self.data.tolist(), err=self.err.tolist(), X = self.X.tolist(), Y = self.Y.tolist(), pars = pars)) open(basename+".json","w").write(out)
def save(self, basename): import json pars = [(p.name, p.value) for p in varying(self.parameters())] out = json.dumps( dict(theory=self.theory().tolist(), data=self.data.tolist(), err=self.err.tolist(), X=self.X.tolist(), Y=self.Y.tolist(), pars=pars)) open(basename + ".json", "w").write(out)
def _reflamp(self): #calc_q = self.probe.calc_Q #return calc_q, calc_q key = 'calc_r' if key not in self._cache: slabs = self._render_slabs() w = slabs.w rho, irho = slabs.rho, slabs.irho sigma = slabs.sigma #sigma = slabs.sigma calc_q = self.probe.calc_Q #print("calc Q", self.probe.calc_Q) if slabs.ismagnetic: rhoM, thetaM = slabs.rhoM, slabs.thetaM Aguide = self.probe.Aguide.value H = self.probe.H.value calc_r = reflmag(-calc_q / 2, depth=w, rho=rho[0], irho=irho[0], rhoM=rhoM, thetaM=thetaM, Aguide=Aguide, H=H, sigma=sigma) else: calc_r = reflamp(-calc_q / 2, depth=w, rho=rho, irho=irho, sigma=sigma) if False and np.isnan(calc_r).any(): print("w", w) print("rho", rho) print("irho", irho) if slabs.ismagnetic: print("rhoM", rhoM) print("thetaM", thetaM) print("Aguide", Aguide, "H", H) print("sigma", sigma) print("kz", self.probe.calc_Q / 2) print("R", abs(np.asarray(calc_r)**2)) pars = parameter.unique(self.parameters()) fitted = parameter.varying(pars) print(parameter.summarize(fitted)) print("===") self._cache[key] = calc_q, calc_r #if np.isnan(calc_q).any(): print("calc_Q contains NaN") #if np.isnan(calc_r).any(): print("calc_r contains NaN") return self._cache[key]