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 testSphere(self): radius = 25 # Calculate sphere cf from SphereModel from sans.models.SphereModel import SphereModel model = SphereModel() model.setParam("radius", radius) ff = cf.SASCF("sphere", model) r = numpy.arange(1, 60, 0.1, dtype = float) fr1 = ff(r) # Calculate sphere cf analytically fr2 = cf.sphericalCF(r, 2*radius) diff = fr1 - fr2 res = numpy.dot(diff, diff) res /= numpy.dot(fr2, fr2) self.assertAlmostEqual(0, res, 4) 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
#! /usr/bin/env python import sys import numpy import time 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))
#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)
import sys import os import numpy import time 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)