Ignore:
Timestamp:
Jun 7, 2010 10:26:43 AM (14 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:
b94945d
Parents:
79ac6f8
Message:

working on documentation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansview/perspectives/fitting/fitpage.py

    rcb190a19 r5062bbf  
    3333class FitPage(BasicPage): 
    3434    """ 
    35         FitPanel class contains fields allowing to display results when 
    36         fitting  a model and one data 
    37         @note: For Fit to be performed the user should check at least one parameter 
     35    FitPanel class contains fields allowing to display results when 
     36    fitting  a model and one data 
     37     
     38    :note: For Fit to be performed the user should check at least one parameter 
    3839        on fit Panel window. 
    39    
    4040    """ 
    4141     
    4242    def __init__(self,parent, page_info): 
     43        """  
     44        Initialization of the Panel 
     45        """ 
    4346        BasicPage.__init__(self, parent, page_info) 
    44  
    45         """  
    46             Initialization of the Panel 
    47         """ 
    4847        ## total number of point: float 
    4948        self.npts=None 
     
    9897    def _on_fit_complete(self, event): 
    9998        """ 
    100             When fit is complete ,reset the fit button label. 
     99        When fit is complete ,reset the fit button label. 
    101100        """ 
    102101        #self.btFit.SetLabel("Fit") 
     
    107106    def _is_2D(self): 
    108107        """ 
    109             Check if data_name is Data2D 
    110             @return: True or False 
     108        Check if data_name is Data2D 
     109         
     110        :return: True or False 
     111         
    111112        """ 
    112113         
     
    117118    def _on_engine_change(self, event): 
    118119        """ 
    119             get an event containing the current name of the fit engine type 
    120             @param event: FitterTypeEvent containing  the name of the current engine 
     120        get an event containing the current name of the fit engine type 
     121         
     122        :param event: FitterTypeEvent containing  the name of the current engine 
     123         
    121124        """ 
    122125        self.engine_type = event.type 
     
    186189    def _fill_range_sizer(self): 
    187190        """ 
    188             Fill the sizer containing the plotting range 
    189             add  access to npts 
     191        Fill the sizer containing the plotting range 
     192        add  access to npts 
    190193        """ 
    191194        is_2Ddata = False 
     
    231234        self.smear_accuracy.SetToolTipString("'Higher' uses more Gaussian points for smearing computation.") 
    232235                    
    233          
    234               
    235236        wx.EVT_COMBOBOX(self.smear_accuracy,-1, self._on_select_accuracy) 
    236237 
     
    390391    def _fill_datainfo_sizer(self): 
    391392        """ 
    392             fill sizer 0 with data info 
     393        fill sizer 0 with data info 
    393394        """ 
    394395        ## no loaded data , don't fill the sizer 
     
    455456    def _fill_model_sizer(self, sizer): 
    456457        """ 
    457             fill sizer containing model info 
     458        fill sizer containing model info 
    458459        """ 
    459460        ##Add model function Details button in fitpanel. 
     
    470471        ## class base method  to add view 2d button     
    471472        self._set_model_sizer(sizer=sizer, box_sizer=boxsizer1, title="Model",object=self.model_help )    
    472  
    473      
     473         
    474474    def _set_sizer_dispersion(self, dispersity): 
    475475        """ 
    476             draw sizer with gaussian dispersity parameters 
     476        draw sizer with gaussian dispersity parameters 
    477477        """ 
    478478        self.fittable_param=[] 
     
    749749                                                     ,None,None, None, None,None]) 
    750750        
    751  
    752751        self.state.disp_cb_dict = copy.deepcopy(self.disp_cb_dict)   
    753752           
     
    769768        self.Layout() 
    770769 
    771  
    772770    def _onFit(self, event):      
    773771        """ 
    774             Allow to fit 
     772        Allow to fit 
    775773        """ 
    776774        #make sure all parameter values are updated. 
     
    796794            return  
    797795       
    798  
    799796        self.select_param(event =None) 
    800797         
     
    820817        #    self.btFit.Bind(event= wx.EVT_BUTTON, handler=self._onFit, id=self.btFit.GetId()) 
    821818            
    822  
    823          
    824819    def _StopFit(self, event): 
    825820        """ 
    826             Stop fit  
     821        Stop fit  
    827822        """ 
    828823        self.btFit.SetLabel("Fit") 
     
    835830    def _on_select_model(self, event):  
    836831        """ 
    837              call back for model selection 
     832        call back for model selection 
    838833        """   
    839834        self._on_select_model_helper()  
     
    879874            event = PageInfoEvent(page = self) 
    880875            wx.PostEvent(self.parent, event)  
    881       
    882                  
     876       
    883877    def _onparamEnter(self,event): 
    884878        """  
    885             when enter value on panel redraw model according to changed 
     879        when enter value on panel redraw model according to changed 
    886880        """ 
    887881        if self.model ==None: 
     
    941935    def _onparamRangeEnter(self, event): 
    942936        """ 
    943             Check validity of value enter in the parameters range field 
     937        Check validity of value enter in the parameters range field 
    944938        """ 
    945939        if self.check_invalid_panel(): 
     
    974968    def _onQrangeEnter(self, event): 
    975969        """ 
    976             Check validity of value enter in the Q range field 
     970        Check validity of value enter in the Q range field 
    977971        """ 
    978972        if self.check_invalid_panel(): 
     
    10401034        wx.PostEvent(self.parent, event) 
    10411035        self.state_change= False 
    1042  
    10431036        return 
     1037     
    10441038    def _clear_Err_on_Fit(self): 
    10451039        """ 
    1046             hide the error text control shown  
    1047             after fitting 
     1040        hide the error text control shown  
     1041        after fitting 
    10481042        """ 
    10491043         
     
    10841078    def _get_defult_custom_smear(self): 
    10851079        """ 
    1086            Get the defult values for custum smearing. 
    1087         """ 
    1088  
     1080        Get the defult values for custum smearing. 
     1081        """ 
    10891082        # get the default values 
    10901083        if self.dxl == None: self.dxl = 0.0 
     
    10951088    def _get_smear_info(self): 
    10961089        """ 
    1097            Get the smear info from data. 
    1098            @return: self.smear_type, self.dq_l and self.dq_r,  
     1090        Get the smear info from data. 
     1091        
     1092        :return: self.smear_type, self.dq_l and self.dq_r,  
    10991093            respectively the type of the smear, dq_min and dq_max for pinhole smear data  
    11001094            while dxl and dxw for slit smear 
     1095             
    11011096        """ 
    11021097 
     
    11181113            else:  
    11191114                return 
    1120  
    1121         
    1122  
    11231115        # check if it is pinhole smear and get min max if it is. 
    11241116        if data.dx != None and all(data.dx !=0):  
     
    11331125                self.dq_l = data.dxl[0] 
    11341126            if data.dxw != None and all(data.dxw !=0):  
    1135                 self.dq_r = data.dxw[0] 
    1136                  
     1127                self.dq_r = data.dxw[0]     
    11371128        #return self.smear_type,self.dq_l,self.dq_r        
    11381129     
    11391130    def _show_smear_sizer(self):     
    11401131        """ 
    1141             Show only the sizers depending on smear selection 
     1132        Show only the sizers depending on smear selection 
    11421133        """ 
    11431134        # smear disabled 
     
    11901181    def _hide_all_smear_info(self): 
    11911182        """ 
    1192            Hide all smearing messages in the set_smearer sizer 
     1183        Hide all smearing messages in the set_smearer sizer 
    11931184        """ 
    11941185        self.smear_description_none.Hide() 
     
    12171208    def _set_accuracy_list(self): 
    12181209        """ 
    1219             Set the list of an accuracy in 2D custum smear: Xhigh, High, Med, or Low 
     1210        Set the list of an accuracy in 2D custum smear: Xhigh, High, Med, or Low 
    12201211        """ 
    12211212        # list of accuracy choices 
     
    12261217    def _on_select_accuracy(self,event): 
    12271218        """ 
    1228             Select an accuracy in 2D custom smear: Xhigh, High, Med, or Low 
     1219        Select an accuracy in 2D custom smear: Xhigh, High, Med, or Low 
    12291220        """ 
    12301221        #event.Skip() 
    1231          
    12321222        # Check if the accuracy is same as before 
    1233          
    12341223        #self.smear2d_accuracy = event.GetEventObject().GetValue() 
    12351224        self.smear2d_accuracy = self.smear_accuracy.GetValue() 
     
    12391228            self.onSmear(event=None) 
    12401229            if self.current_smearer != None: 
    1241                 self.current_smearer.set_accuracy(accuracy = self.smear2d_accuracy) 
    1242                 
     1230                self.current_smearer.set_accuracy(accuracy = self.smear2d_accuracy)  
    12431231        event.Skip() 
    12441232         
    12451233    def _onMask(self, event):      
    12461234        """ 
    1247             Build a panel to allow to edit Mask 
     1235        Build a panel to allow to edit Mask 
    12481236        """ 
    12491237         
     
    12791267    def set_data(self, data): 
    12801268        """ 
    1281             reset the current data  
     1269        reset the current data  
    12821270        """ 
    12831271        self.data = data 
    1284  
    1285          
    12861272        if self.data is None: 
    12871273            data_min = "" 
     
    13021288                self.slit_smearer.Disable() 
    13031289                self.default_mask = copy.deepcopy(self.data.mask) 
    1304                  
    13051290                 
    13061291            self.formfactorbox.Enable() 
     
    13321317                self.btEditMask.Enable()   
    13331318                self.EditMask_title.Enable()  
    1334  
    1335              
    13361319        self.dataSource.SetValue(data_name) 
    13371320        self.qmin_x = data_min 
     
    13471330        self.state.qmax = self.qmax_x 
    13481331         
    1349  
    13501332    def reset_page(self, state,first=False): 
    13511333        """ 
    1352             reset the state 
     1334        reset the state 
    13531335        """ 
    13541336        self.reset_page_helper(state) 
     
    13681350    def get_range(self): 
    13691351        """ 
    1370             return the fitting range 
     1352        return the fitting range 
    13711353        """ 
    13721354        return float(self.qmin_x) , float(self.qmax_x) 
     
    13741356    def get_npts2fit(self): 
    13751357        """ 
    1376             return numbers of data points within qrange 
    1377             Note: This is for Park where chi2 is not normalized by Npts of fit 
     1358        return numbers of data points within qrange 
     1359         
     1360        :Note: This is for Park where chi2 is not normalized by Npts of fit 
     1361         
    13781362        """ 
    13791363        npts2fit = 0 
     
    13931377    def set_npts2fit(self): 
    13941378        """ 
    1395             setValue Npts for fitting  
     1379        setValue Npts for fitting  
    13961380        """ 
    13971381        self.Npts_fit.SetValue(str(self.get_npts2fit())) 
    13981382         
    1399          
    14001383    def get_chi2(self): 
    14011384        """ 
    1402             return the current chi2 
     1385        return the current chi2 
    14031386        """ 
    14041387        return self.tcChi.GetValue() 
     
    14061389    def get_param_list(self): 
    14071390        """ 
    1408             @return self.param_toFit: list containing  references to TextCtrl 
     1391        :return self.param_toFit: list containing  references to TextCtrl 
    14091392            checked.Theses TextCtrl will allow reference to parameters to fit. 
    1410             @raise: if return an empty list of parameter fit will nnote work  
     1393         
     1394        :raise: if return an empty list of parameter fit will nnote work  
    14111395            properly so raise ValueError,"missing parameter to fit" 
    14121396        """ 
     
    14181402    def onsetValues(self,chisqr,p_name, out,cov): 
    14191403        """ 
    1420             Build the panel from the fit result 
    1421             @param chisqr:Value of the goodness of fit metric 
    1422             @p_name: the name of parameters 
    1423             @param out:list of parameter with the best value found during fitting 
    1424             @param cov:Covariance matrix 
    1425         
     1404        Build the panel from the fit result 
     1405         
     1406        :param chisqr: Value of the goodness of fit metric 
     1407        :param p_name: the name of parameters 
     1408        :param out: list of parameter with the best value found during fitting 
     1409        :param cov: Covariance matrix 
     1410    
    14261411        """ 
    14271412        if out == None or not numpy.isfinite(chisqr): 
     
    15451530    def onPinholeSmear(self, event): 
    15461531        """ 
    1547             Create a custom pinhole smear object that will change the way residuals 
    1548             are compute when fitting 
    1549             @ accuracy: given by strings'High','Med', 'Low' FOR 2d,  None for 1D 
     1532        Create a custom pinhole smear object that will change the way residuals 
     1533        are compute when fitting 
     1534         
     1535        :Note: accuracy is given by strings'High','Med', 'Low' FOR 2d, 
     1536                     None for 1D 
     1537                      
    15501538        """ 
    15511539 
     
    16011589    def _is_changed_pinhole(self):   
    16021590        """ 
    1603             check if any of pinhole smear is changed 
    1604             return: True or False 
     1591        check if any of pinhole smear is changed 
     1592         
     1593        :return: True or False 
     1594         
    16051595        """ 
    16061596        # get the values 
     
    16271617    def _set_pinhole_smear(self): 
    16281618        """ 
    1629             Set custom pinhole smear 
    1630             return: msg 
     1619        Set custom pinhole smear 
     1620         
     1621        :return: msg 
     1622         
    16311623        """ 
    16321624        # copy data 
     
    16951687    def update_pinhole_smear(self): 
    16961688        """ 
    1697             called by kill_focus on pinhole TextCntrl 
    1698             to update the changes  
    1699             return: msg: False when wrong value was entered 
     1689        called by kill_focus on pinhole TextCntrl 
     1690        to update the changes  
     1691         
     1692        :return: False when wrong value was entered 
     1693         
    17001694        """ 
    17011695        # msg default 
     
    17141708    def onSlitSmear(self, event): 
    17151709        """ 
    1716             Create a custom slit smear object that will change the way residuals 
    1717             are compute when fitting 
     1710        Create a custom slit smear object that will change the way residuals 
     1711        are compute when fitting 
    17181712        """ 
    17191713  
     
    17701764            wx.PostEvent(self.manager.parent, StatusEvent(status = msg)) 
    17711765 
    1772  
    17731766    def _is_changed_slit(self):   
    17741767        """ 
    1775             check if any of slit lengths is changed 
    1776             return: True or False 
    1777         """ 
    1778          
     1768        check if any of slit lengths is changed 
     1769         
     1770        :return: True or False 
     1771         
     1772        """ 
    17791773        # get the values 
    17801774        width = self.smear_slit_width.GetValue() 
     
    18141808    def _set_slit_smear(self): 
    18151809        """ 
    1816             Set custom slit smear 
    1817             return: msg 
     1810        Set custom slit smear 
     1811         
     1812        :return: message to inform the user about the validity 
     1813            of the values entered for slit smear 
    18181814        """ 
    18191815        temp_smearer = None 
     
    18531849        ## set smearing value whether or not the data contain the smearing info 
    18541850        self.manager.set_smearer(smearer=self.current_smearer, qmin= float(self.qmin_x), qmax= float(self.qmax_x))  
    1855  
    18561851        return msg 
    18571852     
    1858      
    18591853    def update_slit_smear(self): 
    18601854        """ 
    1861             called by kill_focus on pinhole TextCntrl 
    1862             to update the changes  
    1863             return: msg: False when wrong value was entered 
     1855        called by kill_focus on pinhole TextCntrl 
     1856        to update the changes  
     1857         
     1858        :return: False when wrong value was entered 
     1859         
    18641860        """              
    18651861        # msg default 
     
    18761872            return True 
    18771873                             
    1878      
    18791874    def onSmear(self, event): 
    18801875        """ 
    1881             Create a smear object that will change the way residuals 
    1882             are compute when fitting 
     1876        Create a smear object that will change the way residuals 
     1877        are compute when fitting 
    18831878        """ 
    18841879        if event != None:  
     
    19501945    def on_complete_chisqr(self, event):   
    19511946        """ 
    1952             print result chisqr  
    1953             @event: activated by fitting/ complete after draw 
     1947        print result chisqr  
     1948         
     1949        :event: activated by fitting/ complete after draw 
     1950         
    19541951        """ 
    19551952        try: 
     
    19641961            pass   
    19651962             
    1966      
     1963 
    19671964    def select_all_param(self,event):  
    19681965        """ 
    1969              set to true or false all checkBox given the main checkbox value cb1 
     1966        set to true or false all checkBox given the main checkbox value cb1 
    19701967        """             
    1971  
    19721968        self.param_toFit=[] 
    19731969        if  self.parameters !=[]: 
     
    20082004            wx.PostEvent(self.parent, event)  
    20092005      
    2010                  
    2011                  
    20122006    def select_param(self,event): 
    20132007        """  
    2014             Select TextCtrl  checked for fitting purpose and stores them 
    2015             in  self.param_toFit=[] list 
     2008        Select TextCtrl  checked for fitting purpose and stores them 
     2009        in  self.param_toFit=[] list 
    20162010        """ 
    20172011        self.param_toFit=[] 
     
    20632057            event = PageInfoEvent(page = self) 
    20642058            wx.PostEvent(self.parent, event)  
    2065       
    20662059     
    2067          
    20682060    def set_model_param_sizer(self, model): 
    20692061        """ 
    2070             Build the panel from the model content 
    2071             @param model: the model selected in combo box for fitting purpose 
     2062        Build the panel from the model content 
     2063         
     2064        :param model: the model selected in combo box for fitting purpose 
     2065         
    20722066        """ 
    20732067        self.sizer3.Clear(True) 
     
    20872081            self.engine_type= self.manager._return_engine_type() 
    20882082 
    2089              
    20902083        box_description= wx.StaticBox(self, -1,str("Model Parameters")) 
    20912084        boxsizer1 = wx.StaticBoxSizer(box_description, wx.VERTICAL) 
     
    23262319        self.Refresh() 
    23272320        self.SetScrollbars(20,20,25,65) 
     2321         
    23282322 
    23292323class BGTextCtrl(wx.TextCtrl): 
    23302324    """ 
    2331         Text control used to display outputs. 
    2332         No editing allowed. The background is  
    2333         grayed out. User can't select text. 
     2325    Text control used to display outputs. 
     2326    No editing allowed. The background is  
     2327    grayed out. User can't select text. 
    23342328    """ 
    23352329    def __init__(self, *args, **kwds): 
     
    23452339    def _click(self, event): 
    23462340        """ 
    2347             Prevent further handling of the mouse event 
    2348             by not calling Skip(). 
     2341        Prevent further handling of the mouse event 
     2342        by not calling Skip(). 
    23492343        """  
    23502344        pass 
    2351          
    2352 class HelpWindow(wx.Frame): 
    2353     def __init__(self, parent, id, title): 
    2354         wx.Frame.__init__(self, parent, id, title, size=(570, 400)) 
    2355         
    2356         from sans.models.CylinderModel import CylinderModel 
    2357         model = CylinderModel() 
    2358         
    2359         from danse.common.plottools.plottables import Data1D 
    2360         data= Data1D(x=[1,2], y=[3,4], dy=[0.1, 0,1]) 
     2345  
     2346""" 
     2347Example: ::    
    23612348     
    2362         from fitpanel import PageInfo 
    2363         myinfo = PageInfo(self,  model, data=data ) 
    2364          
    2365         ## add data 
    2366          
    2367         from models import ModelList 
    2368         mylist= ModelList() 
    2369  
    2370         from sans.models.SphereModel import SphereModel 
    2371         from sans.models.SquareWellStructure import SquareWellStructure 
    2372         from sans.models.DebyeModel import DebyeModel 
    2373         from sans.models.LineModel import LineModel 
    2374         name= "shapes" 
    2375         list1= [SphereModel] 
    2376         mylist.set_list( name, list1) 
    2377          
    2378         name= "Shape-independent" 
    2379         list1= [DebyeModel] 
    2380         mylist.set_list( name, list1) 
    2381          
    2382         name= "Structure Factors" 
    2383         list1= [SquareWellStructure] 
    2384         mylist.set_list( name, list1) 
    2385          
    2386         name= "Added models" 
    2387         list1= [LineModel] 
    2388         mylist.set_list( name, list1) 
    2389          
    2390         myinfo.model_list_box = mylist.get_list() 
    2391          
    2392         self.page = FitPage(self, myinfo)  
    2393          
    2394         self.Centre() 
    2395         self.Show(True) 
    2396   
    2397 if __name__=="__main__": 
    2398     app = wx.App() 
    2399     HelpWindow(None, -1, 'HelpWindow') 
    2400     app.MainLoop() 
    2401                  
     2349    class HelpWindow(wx.Frame): 
     2350        def __init__(self, parent, id, title): 
     2351            wx.Frame.__init__(self, parent, id, title, size=(570, 400)) 
     2352            
     2353            from sans.models.CylinderModel import CylinderModel 
     2354            model = CylinderModel() 
     2355            
     2356            from danse.common.plottools.plottables import Data1D 
     2357            data= Data1D(x=[1,2], y=[3,4], dy=[0.1, 0,1]) 
     2358         
     2359            from fitpanel import PageInfo 
     2360            myinfo = PageInfo(self,  model, data=data ) 
     2361             
     2362            ## add data 
     2363             
     2364            from models import ModelList 
     2365            mylist= ModelList() 
     2366     
     2367            from sans.models.SphereModel import SphereModel 
     2368            from sans.models.SquareWellStructure import SquareWellStructure 
     2369            from sans.models.DebyeModel import DebyeModel 
     2370            from sans.models.LineModel import LineModel 
     2371            name= "shapes" 
     2372            list1= [SphereModel] 
     2373            mylist.set_list( name, list1) 
     2374             
     2375            name= "Shape-independent" 
     2376            list1= [DebyeModel] 
     2377            mylist.set_list( name, list1) 
     2378             
     2379            name= "Structure Factors" 
     2380            list1= [SquareWellStructure] 
     2381            mylist.set_list( name, list1) 
     2382             
     2383            name= "Added models" 
     2384            list1= [LineModel] 
     2385            mylist.set_list( name, list1) 
     2386             
     2387            myinfo.model_list_box = mylist.get_list() 
     2388             
     2389            self.page = FitPage(self, myinfo)  
     2390             
     2391            self.Centre() 
     2392            self.Show(True) 
     2393      
     2394    if __name__=="__main__": 
     2395        app = wx.App() 
     2396        HelpWindow(None, -1, 'HelpWindow') 
     2397        app.MainLoop() 
     2398""" 
     2399             
Note: See TracChangeset for help on using the changeset viewer.