def testGenerator(self): # Test generator output from sans.models.SphereModel import SphereModel model = SphereModel() gen = sas.SASGenerator("sphere", model) for pname in model.params: defval = model.getParam(pname) par = gen.get(pname) self.assertEquals(defval, par.getValue()) # Test setting values par.setValue(1.0) self.assertEquals(1.0, par.getValue()) self.assertEquals(1.0, model.getParam(pname)) par.setValue(defval) self.assertEquals(defval, par.getValue()) self.assertEquals(defval, model.getParam(pname)) r = numpy.arange(1, 10, 0.1, dtype=float) y = gen(r) refy = model.evalDistribution(r) diff = y - refy res = numpy.dot(diff, diff) self.assertAlmostEqual(0, res) return
def testGenerator(self): # Test generator output from sans.models.SphereModel import SphereModel model = SphereModel() gen = sas.SASGenerator("sphere", model) for pname in model.params: defval = model.getParam(pname) par = gen.get(pname) self.assertEquals(defval, par.getValue()) # Test setting values par.setValue(1.0) self.assertEquals(1.0, par.getValue()) self.assertEquals(1.0, model.getParam(pname)) par.setValue(defval) self.assertEquals(defval, par.getValue()) self.assertEquals(defval, model.getParam(pname)) r = numpy.arange(1, 10, 0.1, dtype = float) y = gen(r) refy = model.evalDistribution(r) diff = y - refy res = numpy.dot(diff, diff) self.assertAlmostEqual(0, res) return
import cplugin #import pdb; pdb.set_trace() q = numpy.arange(1000) disp = {'npts':35, 'width':1, 'nsigmas':3} from sans.models.SphereModel import SphereModel from sans.models.dispersion_models import GaussianDispersion as GdOld oldsm = SphereModel() #oldsm.set_dispersion('radius', GdOld()) #oldsm.dispersion['radius']['npts'] = disp['npts'] #oldsm.dispersion['radius']['width'] = disp['width'] start=time.time() print "calc old"; sys.stdout.flush() Iq=oldsm.evalDistribution(q) #Iq=oldsm.run(q) dt = time.time()-start print "oldsm",dt,Iq[len(q)/2],len(q),disp['npts'] sys.stdout.flush() #NewSphere = cplugin.cplugin('SampleModel.dll') NewSphere = cplugin.cplugin('SampleModel.so') newsm = NewSphere newsm.params = oldsm.params #newsm.set_dispersion('radius', cplugin.GaussianDispersion(**disp)) start=time.time() Iq=newsm.evalDistribution(q) #Iq=newsm.run(q) dt = time.time()-start
'scale': 1.0, 'radius': 60.0, 'sldSph': 2.0, 'sldSolv': 1.0, 'background': 0.0 } from sans.models.SphereModel import SphereModel from sans.models.dispersion_models import GaussianDispersion oldsm = SphereModel() qlist3 = numpy.asarray([0.001, 0.002]) print "run", oldsm.run(0.001), oldsm.run(0.002) print "runXY", oldsm.runXY(0.001), oldsm.runXY(0.002) print "evalDist", oldsm.evalDistribution(qlist3) for k, v in sphere.items(): oldsm.setParam(k, v) gdisp = GaussianDispersion() oldsm.set_dispersion('radius', gdisp) for k, v in disp.items(): oldsm.dispersion['radius'][k] = v print "G run", oldsm.run(0.001), oldsm.run(0.002) print "G runXY", oldsm.runXY(0.001), oldsm.runXY(0.002) print "G evalDist", oldsm.evalDistribution(qlist3) start = time.time() print "calc old" sys.stdout.flush()
import cplugin #import pdb; pdb.set_trace() q = numpy.arange(1000,dtype='d') disp = {'npts':10, 'width':0.1666666667, 'nsigmas':2} sphere = {'scale':1.0, 'radius':60.0, 'sldSph': 2.0, 'sldSolv': 1.0, 'background': 0.0} from sans.models.SphereModel import SphereModel from sans.models.dispersion_models import GaussianDispersion oldsm = SphereModel() qlist3 = numpy.asarray([0.001, 0.002]) print "run", oldsm.run(0.001), oldsm.run(0.002) print "runXY", oldsm.runXY(0.001), oldsm.runXY(0.002) print "evalDist", oldsm.evalDistribution(qlist3) for k,v in sphere.items(): oldsm.setParam(k,v) gdisp = GaussianDispersion() oldsm.set_dispersion('radius', gdisp) for k,v in disp.items(): oldsm.dispersion['radius'][k] = v print "G run", oldsm.run(0.001), oldsm.run(0.002) print "G runXY", oldsm.runXY(0.001), oldsm.runXY(0.002) print "G evalDist", oldsm.evalDistribution(qlist3) start=time.time() print "calc old"; sys.stdout.flush() Iq=oldsm.evalDistribution(q) #Iq=oldsm.run(q) dt = time.time()-start