Changeset 8cfdd5e in sasview for sansmodels/src/sans


Ignore:
Timestamp:
Mar 17, 2009 1:47:45 PM (15 years ago)
Author:
Gervaise Alina <gervyh@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
bb18ef1
Parents:
4d74a8f
Message:

fix setParam for modelMulplication, add 1 unittest

Location:
sansmodels/src/sans/models
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • sansmodels/src/sans/models/MultiplicationModel.py

    r996fd35 r8cfdd5e  
    1313 
    1414        
    15         ## Name of the model 
    16         self.name="" 
    17         ## model description 
     15        ## Setting  model name model description 
    1816        self.description="" 
    1917        if  model1.name != "NoStructure"and  model2.name != "NoStructure": 
     
    3432        self.model2= model2 
    3533        ## dispersion 
    36         self.dispersion = {} 
    3734        self._set_dispersion() 
    3835        ## Define parameters 
    39         self.params = {} 
    4036        self._set_params() 
    4137        ## Parameter details [units, min, max] 
    42         self.details = {} 
    4338        self._set_details() 
    4439        #list of parameter that can be fitted 
    45         self.fixed= []   
    4640        self._set_fixed_params()   
    4741         
     
    8377                self.details[name]= detail 
    8478                 
     79    def setParam(self, name, value): 
     80        """  
     81            Set the value of a model parameter 
     82         
     83            @param name: name of the parameter 
     84            @param value: value of the parameter 
     85        """ 
     86        self._setParamHelper( name, value) 
     87        if name in self.model1.getParamList(): 
     88            self.model1.setParam( name, value) 
     89             
     90        if name in self.model2.getParamList(): 
     91            self.model2.setParam( name, value)  
     92         
     93         
     94    def _setParamHelper(self, name, value): 
     95        """ 
     96            Helper function to setparam 
     97        """ 
     98        # Look for dispersion parameters 
     99        toks = name.split('.') 
     100        if len(toks)==2: 
     101            for item in self.dispersion.keys(): 
     102                if item.lower()==toks[0].lower(): 
     103                    for par in self.dispersion[item]: 
     104                        if par.lower() == toks[1].lower(): 
     105                            self.dispersion[item][par] = value 
     106                            return 
     107        else: 
     108            # Look for standard parameter 
     109            for item in self.params.keys(): 
     110                if item.lower()==name.lower(): 
     111                    self.params[item] = value 
     112                    return 
     113             
     114        raise ValueError, "Model does not contain parameter %s" % name 
     115     
     116         
     117    
     118              
     119    
    85120    def _set_fixed_params(self): 
    86121        """ 
  • sansmodels/src/sans/models/NoStructure.py

    r4ef9dff r8cfdd5e  
    2121        F(x)= 1 
    2222        """ 
    23         ## Parameter details [units, min, max] 
    24         self.details = {} 
    25         #list of parameter that cannot be fitted 
    26         self.fixed= [] 
     23        
    2724    def clone(self): 
    2825        """ Return a identical copy of self """ 
  • sansmodels/src/sans/models/test/utest_modelmultiplication.py

    rc9636f7 r8cfdd5e  
    2727    fixed=[] 
    2828    fixed=['radius.width'] 
     29     
     30     
     31    def test_multiplication(self): 
     32        """ test multiplication model""" 
     33        from sans.models.MultiplicationModel import MultiplicationModel 
     34        from sans.models.SphereModel import SphereModel 
     35        from sans.models.NoStructure import NoStructure 
     36        model1  =  MultiplicationModel(SphereModel(),NoStructure()) 
     37        model2 = SphereModel() 
     38        x= 2 
     39        a = model1.run(x) 
     40         
     41        b=  model2.run(x) 
     42        self.assertEqual(a, b) 
     43        model2.setParam("scale", 10) 
     44        c=  model2.run(x) 
     45        self.assertEqual(c, 10*b) 
     46        model1.setParam("scale", 10) 
     47        d=  model1.run(x) 
     48        self.assertEqual(d, 10*a) 
     49        self.assertEqual(model1.getParam("scale"), 10) 
     50         
     51         
    2952    def testMultiplicationModel(self): 
    3053        """ Test Multiplication  sphere with SquareWellStructure""" 
Note: See TracChangeset for help on using the changeset viewer.