Changeset 682c432 in sasview


Ignore:
Timestamp:
Mar 13, 2015 11:23:24 AM (9 years ago)
Author:
krzywon
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:
0ea31ca
Parents:
bb074b3
Message:

Fixed the focus bug associated with #275 where focus wasn't being set on
the fitting pages. Made some cahnges to the cansas reader to be more
explicit and (attempt to) lower the pylint scores.

Location:
src/sas
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/sas/dataloader/readers/cansas_constants.py

    rc43e875 r682c432  
    101101    RUN = {"variable" : "{0}.run.append(\"{1}\")", 
    102102           "attributes" : {"name" : 
    103                            {"variable" : "{0}.run_name[node_value] = \"{1}\""}} 
     103                           {"variable" : "{0}.run_name[\"{3}\"] = \"{1}\""}} 
    104104          } 
    105105    SASDATA_IDATA_Q = {"variable" : "{0}.x = numpy.append({0}.x, {1})", 
     
    623623                      "attributes" : {"name" : 
    624624                                      {"variable" : 
    625                                        "{0}.run_name[node_value] = \"{1}\""}}, 
     625                                       "{0}.run_name[\"{3}\"] = \"{1}\""}}, 
    626626                      "children" : {"Title" : TITLE, 
    627627                                    "Run" : RUN, 
  • src/sas/dataloader/readers/cansas_reader.py

    rd26dea0 r682c432  
    2626from sas.dataloader.data_info import Process 
    2727from sas.dataloader.data_info import Aperture 
    28 # Both imports used. Do not remove either. 
    29 from xml.dom.minidom import parseString 
    3028import sas.dataloader.readers.xml_reader as xml_reader 
    3129from sas.dataloader.readers.xml_reader import XMLreader 
    3230from sas.dataloader.readers.cansas_constants import CansasConstants 
     31 
     32# The following 2 imports *ARE* used. Do not remove either. 
     33import xml.dom.minidom 
     34from xml.dom.minidom import parseString 
    3335 
    3436_ZERO = 1e-16 
     
    4749ALLOW_ALL = True 
    4850 
    49 # DO NOT REMOVE 
    50 # Called by outside packages: 
     51# DO NOT REMOVE Called by outside packages: 
    5152#    sas.perspectives.invariant.invariant_state 
    5253#    sas.perspectives.fitting.pagestate 
     
    6263    nodes = node.xpath(location, 
    6364                       namespaces={'ns': CANSAS_NS.get("1.0").get("ns")}) 
    64  
    6565    if len(nodes) > 0: 
    6666        return nodes[0] 
     
    6868        return None 
    6969 
    70  
    71 # DO NOT REMOVE 
    72 # Called by outside packages: 
     70# DO NOT REMOVE Called by outside packages: 
    7371#    sas.perspectives.fitting.pagestate 
    7472def write_node(doc, parent, name, value, attr=None): 
     
    9391    return False 
    9492 
    95  
    9693class Reader(XMLreader): 
    9794    """ 
     
    104101    cansas_version = "1.0" 
    105102    base_ns = "{cansas1d/1.0}" 
    106  
    107103    logging = None 
    108104    errors = None 
    109  
    110105    type_name = "canSAS" 
    111106    ## Wildcards 
     
    113108    ## List of allowed extensions 
    114109    ext = ['.xml', '.XML', '.svs', '.SVS'] 
    115  
    116110    ## Flag to bypass extension check 
    117111    allow_all = True 
    118  
    119112 
    120113    def __init__(self): 
     
    123116        self.logging = [] 
    124117        self.encoding = None 
    125  
    126118 
    127119    def is_cansas(self, ext="xml"): 
     
    141133        return False 
    142134 
    143  
    144135    def load_file_and_schema(self, xml_file): 
    145136        """ 
     
    165156        return cansas_defaults 
    166157 
    167  
    168158    def read(self, xml_file): 
    169159        """ 
     
    172162        :param xml_file: A canSAS file path in proper XML format 
    173163        """ 
    174  
    175164        # output - Final list of Data1D objects 
    176165        output = [] 
     
    241230        return None 
    242231 
    243  
    244232    def _final_cleanup(self, data1d): 
    245233        """ 
     
    260248        size_dxl = data1d.dxl.size 
    261249        size_dxw = data1d.dxw.size 
     250        if data1d._xunit != data1d.x_unit: 
     251            data1d.x_unit = data1d._xunit 
     252        if data1d._yunit != data1d.y_unit: 
     253            data1d.y_unit = data1d._yunit 
    262254        if size_dxl == 0 and size_dxw == 0: 
    263255            data1d.dxl = None 
     
    287279        return name 
    288280 
    289  
    290281    def _unit_conversion(self, node, new_current_level, data1d, \ 
    291282                                                tagname, node_value): 
     
    303294        value_unit = '' 
    304295        err_msg = None 
     296        default_unit = None 
    305297        if 'unit' in attr and new_current_level.get('unit') is not None: 
    306298            try: 
     
    308300                if isinstance(node_value, float) is False: 
    309301                    exec("node_value = float({0})".format(node_value)) 
    310                 default_unit = None 
    311302                unitname = new_current_level.get("unit") 
    312303                exec "default_unit = data1d.{0}".format(unitname) 
     
    318309                        data_conv_q = Converter(local_unit) 
    319310                        value_unit = default_unit 
    320                         i_string = "node_value = data_conv_q" 
    321                         i_string += "(node_value, units=data1d.{0})" 
    322                         exec i_string.format(unitname) 
     311                        node_value = data_conv_q(node_value, units=default_unit) 
    323312                    else: 
    324313                        value_unit = local_unit 
     
    330319                err_msg += "\"{0}\" unit [{1}]; " 
    331320                err_msg = err_msg.format(tagname, local_unit) 
    332                 intermediate = "err_msg += " + \ 
    333                             "\"expecting [{1}]\"" + \ 
    334                             ".format(data1d.{0})" 
    335                 exec intermediate.format(unitname, "{0}", "{1}") 
     321                err_msg += "expecting [{0}]".format(default_unit) 
    336322                value_unit = local_unit 
    337323            except: 
     
    347333        node_value = "float({0})".format(node_value) 
    348334        return node_value, value_unit 
    349  
    350335 
    351336    def _check_for_empty_data(self, data1d): 
     
    475460                    else: 
    476461                        attrib_value = node.attrib[key] 
    477                     store_attr = attrib_variable.format("data1d", \ 
    478                                                     attrib_value, key) 
     462                    store_attr = attrib_variable.format("data1d", 
     463                                                        attrib_value, 
     464                                                        key, 
     465                                                        node_value) 
    479466                    exec store_attr 
    480467                except AttributeError: 
     
    698685            node.append(point) 
    699686            self.write_node(point, "Q", datainfo.x[i], 
    700                             {'unit': datainfo._xunit}) 
     687                            {'unit': datainfo.x_unit}) 
    701688            if len(datainfo.y) >= i: 
    702689                self.write_node(point, "I", datainfo.y[i], 
    703                                 {'unit': datainfo._yunit}) 
     690                                {'unit': datainfo.y_unit}) 
    704691            if datainfo.dy != None and len(datainfo.dy) > i: 
    705692                self.write_node(point, "Idev", datainfo.dy[i], 
    706                                 {'unit': datainfo._yunit}) 
     693                                {'unit': datainfo.y_unit}) 
    707694            if datainfo.dx != None and len(datainfo.dx) > i: 
    708695                self.write_node(point, "Qdev", datainfo.dx[i], 
    709                                 {'unit': datainfo._xunit}) 
     696                                {'unit': datainfo.x_unit}) 
    710697            if datainfo.dxw != None and len(datainfo.dxw) > i: 
    711698                self.write_node(point, "dQw", datainfo.dxw[i], 
    712                                 {'unit': datainfo._xunit}) 
     699                                {'unit': datainfo.x_unit}) 
    713700            if datainfo.dxl != None and len(datainfo.dxl) > i: 
    714701                self.write_node(point, "dQl", datainfo.dxl[i], 
    715                                 {'unit': datainfo._xunit}) 
     702                                {'unit': datainfo.x_unit}) 
    716703 
    717704    def _write_trans_spectrum(self, datainfo, entry_node): 
     
    895882                                {"unit": aperture.distance_unit}) 
    896883 
    897  
    898884    def _write_detectors(self, datainfo, instr): 
    899885        """ 
     
    10381024        # Get PIs and create root element 
    10391025        pi_string = self._get_pi_string() 
    1040  
    10411026        # Define namespaces and create SASroot object 
    10421027        main_node = self._create_main_node() 
    1043  
    10441028        # Create ElementTree, append SASroot and apply processing instructions 
    10451029        base_string = pi_string + self.to_string(main_node) 
    10461030        base_element = self.create_element_from_string(base_string) 
    10471031        doc = self.create_tree(base_element) 
    1048  
    10491032        # Create SASentry Element 
    10501033        entry_node = self.create_element("SASentry") 
     
    10541037        # Add Title to SASentry 
    10551038        self.write_node(entry_node, "Title", datainfo.title) 
    1056  
    10571039        # Add Run to SASentry 
    10581040        self._write_run_names(datainfo, entry_node) 
    1059  
    10601041        # Add Data info to SASEntry 
    10611042        self._write_data(datainfo, entry_node) 
    1062  
    10631043        # Transmission Spectrum Info 
    10641044        self._write_trans_spectrum(datainfo, entry_node) 
    1065  
    10661045        # Sample info 
    10671046        self._write_sample_info(datainfo, entry_node) 
    1068  
    10691047        # Instrument info 
    10701048        instr = self._write_instrument(datainfo, entry_node) 
    1071  
    10721049        #   Source 
    10731050        self._write_source(datainfo, instr) 
    1074  
    10751051        #   Collimation 
    10761052        self._write_collimation(datainfo, instr) 
    1077  
    10781053        #   Detectors 
    10791054        self._write_detectors(datainfo, instr) 
    1080  
    10811055        # Processes info 
    10821056        self._write_process_notes(datainfo, entry_node) 
    1083  
    10841057        # Note info 
    10851058        self._write_notes(datainfo, entry_node) 
    1086  
    10871059        # Return the document, and the SASentry node associated with 
    10881060        #      the data we just wrote 
     
    10901062        #      object rather than an lxml object. 
    10911063        entry_node = self._check_origin(entry_node, doc) 
    1092  
    10931064        return doc, entry_node 
    10941065 
  • src/sas/perspectives/fitting/fitpage.py

    r2f4b430 r682c432  
    6868        #create a default data for an empty panel 
    6969        self.create_default_data() 
    70         #self._manager.frame.Bind(wx.EVT_SET_FOCUS, self.on_set_focus) 
     70        self._manager.frame.Bind(wx.EVT_SET_FOCUS, self.on_set_focus) 
    7171 
    7272    def enable_fit_button(self): 
     
    7676        flag = check_data_validity(self.data) & (self.model is not None) 
    7777        self.btFit.Enable(flag) 
     78         
     79    def on_set_focus(self, event): 
     80        """ 
     81        Override the basepage focus method to ensure the save flag is set  
     82        properly when focusing on the fit page. 
     83        """ 
     84        flag = check_data_validity(self.data) & (self.model is not None) 
     85        self._set_save_flag(flag) 
     86        self.parent.on_set_focus(event) 
    7887 
    7988    def _fill_data_sizer(self): 
Note: See TracChangeset for help on using the changeset viewer.