Changeset 3740b11 in sasview for sansmodels


Ignore:
Timestamp:
Apr 10, 2009 7:32:51 PM (16 years ago)
Author:
Jae Cho <jhjcho@…>
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:
249bae9
Parents:
24276b6
Message:

Plug-In Cylinder (Ellips)Model times StructureModels?, yet needs to be checked very soon.

File:
1 edited

Legend:

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

    r24415e9 r3740b11  
    33import numpy, math 
    44import copy 
     5from sans.models.pluginmodel import Model1DPlugin 
     6from sans.models.DiamCylFunc import  DiamCylFunc 
     7from sans.models.DiamEllipFunc import  DiamEllipFunc 
    58class MultiplicationModel(BaseComponent): 
    69    """ 
     
    2629            self.name = model1.name 
    2730            self.description= model1.description 
    28    
    29          
     31                         
     32        #For virial coefficients for only two P(Q) models,"CylinderModel","EllipsoidModel". SphereModel works w/o it. 
     33        modelDiam = None 
     34        if model1.__class__.__name__ == "CylinderModel": 
     35            Model1DPlugin("DiamCylFunc") 
     36            modelDiam = DiamCylFunc() 
     37            para1 = 'radius' 
     38            para2 = 'length' 
     39             
     40        elif model1.__class__.__name__  == "EllipsoidModel": 
     41            Model1DPlugin("DiamEllipFunc") 
     42            modelDiam = DiamEllipFunc() 
     43            para1 = 'radius_a' 
     44            para2 = 'radius_b' 
     45             
     46        self.modelD = modelDiam 
     47         
     48        if model1.__class__.__name__ == "CylinderModel" \ 
     49            or model1.__class__.__name__  == "EllipsoidModel": 
     50           
     51            self.para1 = para1 
     52            self.para2 = para2 
     53 
    3054         
    3155        self.model1= model1 
    3256        self.model2= model2 
     57         
     58        #if modelDiam != None: 
     59           #self.model2.params["radius"]= DiamEllipFunc() 
     60         
     61           #print "self.modelD",self.modelD.params,self.model1.params,self.model2.params     
     62 
    3363        ## dispersion 
    3464        self._set_dispersion() 
     
    6393             
    6494        for name , value in self.model2.dispersion.iteritems(): 
    65             if not name in self.dispersion.keys(): 
     95            if not name in self.dispersion.keys()and name !='radius': 
    6696                self.dispersion[name]= value 
     97 
     98                     
    6799                 
    68100                 
     
    72104            this model parameters  
    73105        """ 
     106         
    74107        for name , value in self.model1.params.iteritems(): 
    75108            self.params[name]= value 
    76             if name in self.model2.getParamList(): 
     109             
     110            if self.modelD !=None: 
     111                if name == self.para1 or name == self.para2: 
     112                    self.modelD.params[name]= value 
     113                elif name in self.model2.getParamList() and name !='radius': 
     114                    self.model2.setParam( name, value) 
     115 
     116            elif name in self.model2.getParamList(): 
    77117                self.model2.setParam(name, value) 
     118        if self.modelD !=None: 
     119            self.model2.setParam('radius', self.modelD.run()) 
    78120             
    79121        for name , value in self.model2.params.iteritems(): 
    80             if not name in self.params.keys(): 
     122            if not name in self.params.keys()and name != 'radius': 
    81123                self.params[name]= value 
    82124             
     
    90132             
    91133        for name , detail in self.model2.details.iteritems(): 
    92             if not name in self.details.keys(): 
     134            if not name in self.details.keys()and name != 'radius': 
    93135                self.details[name]= detail 
    94136                 
     
    100142            @param value: value of the parameter 
    101143        """ 
    102          
     144 
     145        self._setParamHelper( name, value) 
     146 
    103147        if name in self.model1.getParamList(): 
    104148            self.model1.setParam( name, value) 
    105              
    106         if name in self.model2.getParamList(): 
     149 
     150         
     151        if self.modelD !=None: 
     152            if name == self.para1 or name == self.para2: 
     153                self.modelD.params[name]= value 
     154            elif name in self.model2.getParamList() and name != 'radius': 
     155                self.model2.setParam( name, value) 
     156        elif name in self.model2.getParamList()and name != 'radius': 
    107157            self.model2.setParam( name, value)  
     158             
    108159        
    109160        self._setParamHelper( name, value) 
     
    153204            @return: (DAB value) 
    154205        """ 
    155         
    156         return self.model1.run(x)* self.model2.run(x) 
     206        #MultiplicationModel(self.model1, self.model2 )       
     207            
     208        if self.modelD!=None: 
     209            value = self.modelD.run(x) 
     210            self.model2.setParam( "radius", value)         
     211                         
     212            print "self.model2.setParam( radius, value)",value  
     213        return self.model1.run(x)*self.model2.run(x) 
    157214    
    158215    def runXY(self, x = 0.0): 
Note: See TracChangeset for help on using the changeset viewer.