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
'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
#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 print "oldsm",dt,Iq[len(q)/2],len(q),disp['npts'] sys.stdout.flush()