Example #1
0
 def test_array(self):
     """
         Perform complete rotational average and
         compare to 1D
     """
     from sas.models.dispersion_models import ArrayDispersion
     disp_ph = ArrayDispersion()
     disp_th = ArrayDispersion()
     disp_ps = ArrayDispersion()
     
     values_ph = numpy.zeros(100)
     values_th = numpy.zeros(100)
     values_ps = numpy.zeros(100)
     weights   = numpy.zeros(100)
     for i in range(100):
         values_ps[i]=(360/99.0*i)
         values_ph[i]=(360/99.0*i)
         values_th[i]=(180/99.0*i)
         weights[i]=(1.0)
     
     disp_ph.set_weights(values_ph, weights)
     disp_th.set_weights(values_th, weights)
     disp_ps.set_weights(values_ps, weights)
     
     self.model.set_dispersion('cyl_theta', disp_th)
     self.model.set_dispersion('cyl_phi', disp_ph)
     self.model.set_dispersion('cyl_psi', disp_ps)
     
     val_1d = self.model.run(math.sqrt(0.0002))
     val_2d = self.model.runXY([0.01,0.01]) 
     
     self.assertTrue(math.fabs(val_1d-val_2d)/val_1d < 0.02)
    def testMultiplicationParam(self):
        """ Test Multiplication """
        ## test details dictionary

        ## test parameters list
        list3= self.model3.getParamList()

        for item in self.model.getParamList():
            #model3 parameters should not include scale*
            if not 'scale' in item: 
                self.assert_(item in list3)
        for item in self.model2.getParamList():
            #model3 parameters should not include effect_radius*
            if not 'effect_radius' in item:  
                self.assert_(item in list3)
            
        ## test set value for parameters and get paramaters
        #self.model3.setParam("scale", 15)
        #self.assertEqual(self.model3.getParam("scale"), 15)
        self.model3.setParam("scale_factor", 0.1)
        self.assertEqual(self.model3.getParam("scale_factor"), 0.1)
        self.model3.setParam("radius", 20)
        self.assertEqual(self.model3.getParam("radius"), 20)
        self.model3.setParam("radius.width", 15)
        self.assertEqual(self.model3.getParam("radius.width"), 15)
        self.model3.setParam("scale_factor", 15)
        self.assertEqual(self.model3.getParam("scale_factor"), 15)
        self.assertEqual(self.model3.getParam("volfraction"), self.model.getParam("scale"))
        
        ## Dispersity 
        list3= self.model3.getDispParamList()
        self.assertEqual(list3, ['radius.npts', 'radius.nsigmas', 'radius.width', 'length.npts', \
         'length.nsigmas', 'length.width', 'cyl_theta.npts', 'cyl_theta.nsigmas', 'cyl_theta.width',\
          'cyl_phi.npts', 'cyl_phi.nsigmas', 'cyl_phi.width'])
        
        from sas.models.dispersion_models import ArrayDispersion
        disp_th = ArrayDispersion()
        
        values_th = numpy.zeros(100)
        weights   = numpy.zeros(100)
        for i in range(100):
            values_th[i]=(math.pi/99.0*i)
            weights[i]=(1.0)
    
        disp_th.set_weights(values_th, weights)
        
        self.model3.set_dispersion('radius', disp_th)
        

        model4= self.model3.clone()
        self.assertEqual(model4.getParam("radius"), 20)
    def testMultiplicationParam(self):
        """ Test Multiplication """
        ## test details dictionary

        ## test parameters list
        list3= self.model3.getParamList()

        for item in self.model.getParamList():
            #model3 parameters should not include scale*
            if not 'scale' in item: 
                self.assert_(item in list3)
        for item in self.model2.getParamList():
            #model3 parameters should not include effect_radius*
            if not 'effect_radius' in item:  
                self.assert_(item in list3)
            
        ## test set value for parameters and get paramaters
        #self.model3.setParam("scale", 15)
        #self.assertEqual(self.model3.getParam("scale"), 15)
        self.model3.setParam("scale_factor", 0.1)
        self.assertEqual(self.model3.getParam("scale_factor"), 0.1)
        self.model3.setParam("radius", 20)
        self.assertEqual(self.model3.getParam("radius"), 20)
        self.model3.setParam("radius.width", 15)
        self.assertEqual(self.model3.getParam("radius.width"), 15)
        self.model3.setParam("scale_factor", 15)
        self.assertEqual(self.model3.getParam("scale_factor"), 15)
        self.assertEqual(self.model3.getParam("volfraction"), self.model.getParam("scale"))
        
        ## Dispersity 
        list3= self.model3.getDispParamList()
        self.assertEqual(list3, ['radius.npts', 'radius.nsigmas', 'radius.width', 'length.npts', \
         'length.nsigmas', 'length.width', 'cyl_theta.npts', 'cyl_theta.nsigmas', 'cyl_theta.width',\
          'cyl_phi.npts', 'cyl_phi.nsigmas', 'cyl_phi.width'])
        
        from sas.models.dispersion_models import ArrayDispersion
        disp_th = ArrayDispersion()
        
        values_th = numpy.zeros(100)
        weights   = numpy.zeros(100)
        for i in range(100):
            values_th[i]=(math.pi/99.0*i)
            weights[i]=(1.0)
    
        disp_th.set_weights(values_th, weights)
        
        self.model3.set_dispersion('radius', disp_th)
        

        model4= self.model3.clone()
        self.assertEqual(model4.getParam("radius"), 20)
Example #4
0
 def test_array(self):
     """
         Perform complete rotational average and
         compare to 1D
     """
     from sas.models.dispersion_models import ArrayDispersion
     disp_ph = ArrayDispersion()
     disp_th = ArrayDispersion()
     
     values_ph = numpy.zeros(100)
     values_th = numpy.zeros(100)
     weights   = numpy.zeros(100)
     for i in range(100):
         values_ph[i]=(360/99.0*i)
         values_th[i]=(180/99.0*i)
         weights[i]=(1.0)
     
     disp_ph.set_weights(values_ph, weights)
     disp_th.set_weights(values_th, weights)
     
     self.model.set_dispersion('cyl_theta', disp_th)
     self.model.set_dispersion('cyl_phi', disp_ph)
     
     val_1d = self.model.run(math.sqrt(0.0002))
     val_2d = self.model.runXY([0.01,0.01]) 
     
     self.assertTrue(math.fabs(val_1d-val_2d)/val_1d < 0.02)
    def testMultiplicationParam(self):
        """ Test Multiplication  (check the parameters)"""
        ## test details dictionary

        ## test parameters list
        list3= self.model3.getParamList()

        for item in self.model.getParamList():
            if not 'scale' in item: 
                self.assert_(item in list3)
        for item in self.model2.getParamList():
            #model3 parameters should not include effect_radius*
            if not 'effect_radius' in item:  
                self.assert_(item in list3)
            
        ## test set value for parameters and get paramaters
        self.model3.setParam("scale_factor", 15)
        self.assertEqual(self.model3.getParam("scale_factor"), 15)
        self.model3.setParam("radius", 20)
        self.assertEqual(self.model3.getParam("radius"), 20)
        self.model3.setParam("radius.width", 15)
        self.assertEqual(self.model3.getParam("radius.width"), 15)
        self.model3.setParam("scale_factor", 15)
        self.assertEqual(self.model3.getParam("scale_factor"), 15)
        self.assertEqual(self.model3.getParam("volfraction"), self.model.getParam("scale"))
        
        ## Dispersity 
        list3= self.model3.getDispParamList()
        self.assertEqual(list3, ['radius.npts', 'radius.nsigmas', 'radius.width'])
        
        from sas.models.dispersion_models import ArrayDispersion
        disp_th = ArrayDispersion()
        
        values_th = numpy.zeros(100)
        weights   = numpy.zeros(100)
        for i in range(100):
            values_th[i]=(math.pi/99.0*i)
            weights[i]=(1.0)
    
        disp_th.set_weights(values_th, weights)
        
        self.model3.set_dispersion('radius', disp_th)
        
        val_1d = self.model3.run(math.sqrt(0.0002))
        val_2d = self.model3.runXY([0.01,0.01]) 

        self.assertTrue(math.fabs(val_1d-val_2d)/val_1d < 0.02)

        model4= self.model3.clone()
        self.assertEqual(model4.getParam("radius"), 20)      
    def testMultiplicationParam(self):
        """ Test Multiplication  (check the parameters)"""
        ## test details dictionary

        ## test parameters list
        list3= self.model3.getParamList()

        for item in self.model.getParamList():
            if not 'scale' in item: 
                self.assert_(item in list3)
        for item in self.model2.getParamList():
            #model3 parameters should not include effect_radius*
            if not 'effect_radius' in item:  
                self.assert_(item in list3)
            
        ## test set value for parameters and get paramaters
        self.model3.setParam("scale_factor", 15)
        self.assertEqual(self.model3.getParam("scale_factor"), 15)
        self.model3.setParam("radius", 20)
        self.assertEqual(self.model3.getParam("radius"), 20)
        self.model3.setParam("radius.width", 15)
        self.assertEqual(self.model3.getParam("radius.width"), 15)
        self.model3.setParam("scale_factor", 15)
        self.assertEqual(self.model3.getParam("scale_factor"), 15)
        self.assertEqual(self.model3.getParam("volfraction"), self.model.getParam("scale"))
        
        ## Dispersity 
        list3= self.model3.getDispParamList()
        self.assertEqual(list3, ['radius.npts', 'radius.nsigmas', 'radius.width'])
        
        from sas.models.dispersion_models import ArrayDispersion
        disp_th = ArrayDispersion()
        
        values_th = numpy.zeros(100)
        weights   = numpy.zeros(100)
        for i in range(100):
            values_th[i]=(math.pi/99.0*i)
            weights[i]=(1.0)
    
        disp_th.set_weights(values_th, weights)
        
        self.model3.set_dispersion('radius', disp_th)
        
        val_1d = self.model3.run(math.sqrt(0.0002))
        val_2d = self.model3.runXY([0.01,0.01]) 

        self.assertTrue(math.fabs(val_1d-val_2d)/val_1d < 0.02)

        model4= self.model3.clone()
        self.assertEqual(model4.getParam("radius"), 20)