Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
#! /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))
Esempio n. 5
0
#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)
Esempio n. 6
0
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)