Changeset 9130227 in sasview for sansguiframe


Ignore:
Timestamp:
Apr 19, 2012 5:26:54 PM (13 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:
11857f7
Parents:
b716dd8
Message:

Added dy selection for error bar

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansguiframe/src/sans/guiframe/data_processor.py

    ra5e749f r9130227  
    779779        self.x = [] 
    780780        self.y  = [] 
     781        self.dy  = [] 
    781782        self.x_axis_label = None 
    782783        self.y_axis_label = None 
     784        self.dy_axis_label = None 
    783785        self.x_axis_title = None 
    784786        self.y_axis_title = None 
     
    811813        self.y_axis_title.SetValue(str(label)) 
    812814         
     815    def set_dyaxis(self, label="", dy=None): 
     816        """ 
     817        """ 
     818        if dy is None: 
     819            dy = [] 
     820        self.dy = dy 
     821        self.dy_axis_label.SetValue("%s[:]" % str(label)) 
     822                 
    813823    def get_plot_axis(self, col, list): 
    814824        """ 
     
    959969 
    960970        dict = parse_string(sentence, column_names.keys()) 
    961         for tok, (col_name, list) in dict.iteritems(): 
    962             col = column_names[col_name] 
    963             xaxis = self.get_plot_axis(col, list) 
    964             sentence = sentence.replace(tok,  
    965                                         "numpy.array(%s)" % str(xaxis)) 
    966         for key, value in FUNC_DICT.iteritems(): 
    967             sentence = sentence.replace(key.lower(), value) 
    968         x = eval(sentence) 
     971        sentence = self.get_sentence(dict, sentence, column_names) 
     972        try: 
     973            x = eval(sentence) 
     974        except: 
     975            msg = "Need a proper x-range." 
     976            wx.PostEvent(self.parent.parent,  
     977                             StatusEvent(status=msg, info="error"))  
     978            return 
    969979        #evaluate y 
    970980        sentence = self.y_axis_label.GetValue() 
     
    973983            raise ValueError, msg 
    974984        dict = parse_string(sentence, column_names.keys()) 
    975         for tok, (col_name, list) in dict.iteritems(): 
    976             col = column_names[col_name] 
    977             yaxis = self.get_plot_axis(col, list) 
    978             sentence = sentence.replace(tok,  
    979                                         "numpy.array(%s)" % str(yaxis)) 
    980         for key, value in FUNC_DICT.iteritems(): 
    981             sentence = sentence.replace(key, value) 
    982         y = eval(sentence) 
    983         if len(x) != len(y) and (len(x) == 0 or len(y) == 0): 
     985        sentence = self.get_sentence(dict, sentence, column_names) 
     986        try: 
     987            y = eval(sentence) 
     988        except: 
     989            msg = "Need a proper y-range." 
     990            wx.PostEvent(self.parent.parent,  
     991                             StatusEvent(status=msg, info="error"))  
     992            return 
     993        #evaluate y 
     994        sentence = self.dy_axis_label.GetValue() 
     995        dy = None 
     996        if sentence.strip() != "": 
     997            dict = parse_string(sentence, column_names.keys()) 
     998            sentence = self.get_sentence(dict, sentence, column_names) 
     999            try: 
     1000                dy = eval(sentence) 
     1001            except: 
     1002                msg = "Need a proper dy-range." 
     1003                wx.PostEvent(self.parent.parent,  
     1004                                 StatusEvent(status=msg, info="error"))  
     1005                return 
     1006        if len(x) != len(y) or (len(x) == 0 or len(y) == 0): 
    9841007            msg = "Need same length for X and Y axis and both greater than 0" 
    9851008            msg += " to plot.\n" 
     
    9891012                             StatusEvent(status=msg, info="error"))  
    9901013            return 
    991              
     1014        if dy != None and (len(y) != len(dy)):   
     1015            msg = "Need same length for Y and dY axis and both greater than 0" 
     1016            msg += " to plot.\n" 
     1017            msg += "Got Y length = %s, dY length = %s" % (str(len(y)), 
     1018                                                          str(len(dy))) 
     1019            wx.PostEvent(self.parent.parent,  
     1020                             StatusEvent(status=msg, info="error"))  
     1021            return 
    9921022        #plotting 
    993         new_plot = Data1D(x=x, y=y) 
     1023        new_plot = Data1D(x=x, y=y, dy=dy) 
    9941024        new_plot.id =  wx.NewId() 
    9951025        new_plot.group_id = wx.NewId() 
     
    10141044             wx.PostEvent(self.parent.parent,  
    10151045                             StatusEvent(status=msg, info="error"))  
    1016  
     1046     
     1047    def get_sentence(self, dict, sentence, column_names): 
     1048        """ 
     1049        Get sentence from dict 
     1050        """ 
     1051        for tok, (col_name, list) in dict.iteritems(): 
     1052            col = column_names[col_name] 
     1053            axis = self.get_plot_axis(col, list) 
     1054            sentence = sentence.replace(tok,  
     1055                                        "numpy.array(%s)" % str(axis)) 
     1056        for key, value in FUNC_DICT.iteritems(): 
     1057            sentence = sentence.replace(key.lower(), value) 
     1058        return sentence 
     1059             
    10171060    def layout_grid(self): 
    10181061        """ 
     
    10321075        self.x_axis_label = wx.TextCtrl(self, -1, size=(200, -1)) 
    10331076        self.y_axis_label = wx.TextCtrl(self, -1, size=(200, -1)) 
     1077        self.dy_axis_label = wx.TextCtrl(self, -1, size=(200, -1)) 
    10341078        self.x_axis_add = wx.Button(self, -1, "Add") 
    10351079        self.x_axis_add.Bind(event=wx.EVT_BUTTON, handler=self.on_edit_axis,  
     
    10381082        self.y_axis_add.Bind(event=wx.EVT_BUTTON, handler=self.on_edit_axis,  
    10391083                            id=self.y_axis_add.GetId()) 
     1084        self.dy_axis_add = wx.Button(self, -1, "Add") 
     1085        self.dy_axis_add.Bind(event=wx.EVT_BUTTON, handler=self.on_edit_axis,  
     1086                            id=self.dy_axis_add.GetId()) 
    10401087        self.x_axis_unit = wx.TextCtrl(self, -1) 
    10411088        self.y_axis_unit = wx.TextCtrl(self, -1) 
     
    10751122                    (wx.StaticText(self, -1 , "Y-axis Unit"), 1, wx.BOTTOM, 10), 
    10761123                    (self.y_axis_unit, 1, wx.BOTTOM, 10), 
     1124                    (wx.StaticText(self, -1,  
     1125                                   "dY Label (Optional)\nSelection Range"), 1,  
     1126                     wx.BOTTOM|wx.LEFT, 10), 
     1127                    (self.dy_axis_label, wx.BOTTOM, 10), 
     1128                    (self.dy_axis_add, 1, wx.BOTTOM|wx.RIGHT, 10), 
    10771129                      (-1, -1), 
    10781130                      (-1, -1), 
     
    11021154            self.edit_axis_helper(self.y_axis_label, self.y_axis_title, 
    11031155                                   label, title) 
     1156        elif tcrtl == self.dy_axis_add: 
     1157            self.edit_axis_helper(self.dy_axis_label, None, 
     1158                                   label, None) 
    11041159             
    11051160    def create_axis_label(self, cell_list): 
     
    11171172        get controls to modify 
    11181173        """ 
    1119         tcrtl_label.SetValue(str(label)) 
    1120         tcrtl_title.SetValue(str(title)) 
     1174        if label != None: 
     1175            tcrtl_label.SetValue(str(label)) 
     1176        if title != None: 
     1177            tcrtl_title.SetValue(str(title)) 
    11211178         
    11221179    def add_column(self): 
Note: See TracChangeset for help on using the changeset viewer.