Ignore:
Timestamp:
Oct 7, 2016 12:21:40 PM (8 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, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
ff3f5821
Parents:
cb823f0
Message:

#189 #12 Saving and loading project now fully saves and loads a simultaneous fits. Loading a project will reset Sasview state to its base state (with a warning). One error on load to fix before calling this finished.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/perspectives/fitting/pagestate.py

    re89aed5 r998ca90  
    378378 
    379379        rep += "State created: %s\n" % time_str 
    380         rep += "State form factor combobox selection: %s\n" % self.formfactorcombobox 
    381         rep += "State structure factor combobox selection: %s\n" % self.structurecombobox 
     380        rep += "State form factor combobox selection: %s\n" % \ 
     381               self.formfactorcombobox 
     382        rep += "State structure factor combobox selection: %s\n" % \ 
     383               self.structurecombobox 
    382384        rep += "is data : %s\n" % self.is_data 
    383385        rep += "data's name : %s\n" % self.data_name 
     
    639641 
    640642        Compatible with standalone writing, or appending to an 
    641         already existing XML document. In that case, the XML document 
    642         is required. An optional entry node in the XML document may also be given. 
     643        already existing XML document. In that case, the XML document is 
     644        required. An optional entry node in the XML document may also be given. 
    643645 
    644646        :param file: file to write to 
    645647        :param doc: XML document object [optional] 
    646         :param entry_node: XML node within the XML document at which we will append the data [optional] 
    647  
     648        :param entry_node: XML node within the XML document at which we 
     649                           will append the data [optional] 
    648650        """ 
    649651        from xml.dom.minidom import getDOMImplementation 
     
    744746        for item in LIST_OF_STATE_PARAMETERS: 
    745747            element = newdoc.createElement(item[0]) 
    746             self._toXML_helper(thelist=getattr(self, item[1]), element=element, newdoc=newdoc) 
     748            self._toXML_helper(thelist=getattr(self, item[1]), 
     749                               element=element, newdoc=newdoc) 
    747750            inputs.appendChild(element) 
    748751 
     
    761764            batch_combo.appendChild(constraints) 
    762765            for constraint in batch_fit_state.constraints_list: 
    763                 # model_cbox, param_cbox, egal_txt, constraint, btRemove, sizer 
    764                 doc_cons = newdoc.createElement('constraint') 
    765                 doc_cons.setAttribute('model_cbox', 
    766                                       str(constraint.model_cbox.GetValue())) 
    767                 doc_cons.setAttribute('param_cbox', 
    768                                       str(constraint.param_cbox.GetValue())) 
    769                 doc_cons.setAttribute('egal_txt', 
    770                                       str(constraint.egal_txt.GetLabel())) 
    771                 doc_cons.setAttribute('constraint', 
    772                                       str(constraint.constraint.GetValue())) 
    773                 constraints.appendChild(doc_cons) 
     766                if constraint.model_cbox.GetValue() != "": 
     767                    # model_cbox, param_cbox, egal_txt, constraint, btRemove, sizer 
     768                    doc_cons = newdoc.createElement('constraint') 
     769                    doc_cons.setAttribute('model_cbox', 
     770                                          str(constraint.model_cbox.GetValue())) 
     771                    doc_cons.setAttribute('param_cbox', 
     772                                          str(constraint.param_cbox.GetValue())) 
     773                    doc_cons.setAttribute('egal_txt', 
     774                                          str(constraint.egal_txt.GetLabel())) 
     775                    doc_cons.setAttribute('constraint', 
     776                                          str(constraint.constraint.GetValue())) 
     777                    constraints.appendChild(doc_cons) 
    774778 
    775779            # Save all models 
     
    912916                                value = cls.type 
    913917                            except Exception: 
    914                                 logging.error("unable to load distribution %r for %s" 
    915                                               % (value, parameter)) 
     918                                base = "unable to load distribution %r for %s" 
     919                                logging.error(base % (value, parameter)) 
    916920                                continue 
    917921                        _disp_obj_dict = getattr(self, varname) 
     
    10361040            raise RuntimeError, "The cansas writer expects a Data2D instance" 
    10371041 
     1042        title = "cansas1d/%s" % self.version 
     1043        title += "http://svn.smallangles.net/svn/canSAS/1dwg/trunk/cansas1d.xsd" 
    10381044        doc = xml.dom.minidom.Document() 
    10391045        main_node = doc.createElement("SASroot") 
    10401046        main_node.setAttribute("version", self.version) 
    10411047        main_node.setAttribute("xmlns", "cansas1d/%s" % self.version) 
    1042         main_node.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance") 
    1043         main_node.setAttribute("xsi:schemaLocation", 
    1044                                "cansas1d/%s http://svn.smallangles.net/svn/canSAS/1dwg/trunk/cansas1d.xsd" % self.version) 
     1048        main_node.setAttribute("xmlns:xsi", 
     1049                               "http://www.w3.org/2001/XMLSchema-instance") 
     1050        main_node.setAttribute("xsi:schemaLocation", title) 
    10451051 
    10461052        doc.appendChild(main_node) 
     
    10511057        write_node(doc, entry_node, "Title", datainfo.title) 
    10521058        if datainfo is not None: 
    1053             write_node(doc, entry_node, "data_class", datainfo.__class__.__name__) 
     1059            write_node(doc, entry_node, "data_class", 
     1060                       datainfo.__class__.__name__) 
    10541061        for item in datainfo.run: 
    10551062            runname = {} 
    1056             if datainfo.run_name.has_key(item) and len(str(datainfo.run_name[item])) > 1: 
     1063            if datainfo.run_name.has_key(item) and \ 
     1064                            len(str(datainfo.run_name[item])) > 1: 
    10571065                runname = {'name': datainfo.run_name[item]} 
    10581066            write_node(doc, entry_node, "Run", item, runname) 
     
    13131321                                               namespaces={'ns': CANSAS_NS}) 
    13141322                model_list_items = model_list[0].xpath('ns:model_list_item', 
    1315                                                        namespaces={'ns': CANSAS_NS}) 
     1323                                                   namespaces={'ns': CANSAS_NS}) 
    13161324                for model in model_list_items: 
    13171325                    attrs = model.attrib 
    13181326                    sim_fit_state.model_list.append(attrs) 
     1327 
    13191328                constraints = simfitstate_0.xpath('ns:constraints', 
    13201329                                                namespaces={'ns': CANSAS_NS}) 
    13211330                constraint_list = constraints[0].xpath('ns:constraint', 
    1322                                                        namespaces={'ns': CANSAS_NS}) 
     1331                                               namespaces={'ns': CANSAS_NS}) 
    13231332                for constraint in constraint_list: 
    13241333                    attrs = constraint.attrib 
     
    13881397                        data_info.notes.append(note_value) 
    13891398            except Exception: 
    1390                 err_mess = "cansas_reader.read: error processing entry notes\n  %s" % sys.exc_value 
     1399                err_mess = "cansas_reader.read: error processing entry notes\n" 
     1400                err_mess += "  %s" % sys.exc_value 
    13911401                self.errors.append(err_mess) 
    13921402                logging.error(err_mess) 
     
    13981408 
    13991409        self._store_content('ns:SASsample/ns:ID', dom, 'ID', data_info.sample) 
    1400         self._store_float('ns:SASsample/ns:thickness', dom, 'thickness', data_info.sample) 
    1401         self._store_float('ns:SASsample/ns:transmission', dom, 'transmission', data_info.sample) 
    1402         self._store_float('ns:SASsample/ns:temperature', dom, 'temperature', data_info.sample) 
    1403  
    1404         nodes = dom.xpath('ns:SASsample/ns:details', namespaces={'ns': CANSAS_NS}) 
     1410        self._store_float('ns:SASsample/ns:thickness', dom, 'thickness', 
     1411                          data_info.sample) 
     1412        self._store_float('ns:SASsample/ns:transmission', dom, 'transmission', 
     1413                          data_info.sample) 
     1414        self._store_float('ns:SASsample/ns:temperature', dom, 'temperature', 
     1415                          data_info.sample) 
     1416 
     1417        nodes = dom.xpath('ns:SASsample/ns:details', 
     1418                          namespaces={'ns': CANSAS_NS}) 
    14051419        for item in nodes: 
    14061420            try: 
     
    14101424                        data_info.sample.details.append(detail_value) 
    14111425            except Exception: 
    1412                 err_mess = "cansas_reader.read: error processing sample details\n  %s" % sys.exc_value 
     1426                err_mess = "cansas_reader.read: error processing entry notes\n" 
     1427                err_mess += "  %s" % sys.exc_value 
    14131428                self.errors.append(err_mess) 
    14141429                logging.error(err_mess) 
    14151430 
    14161431        # Position (as a vector) 
    1417         self._store_float('ns:SASsample/ns:position/ns:x', dom, 'position.x', data_info.sample) 
    1418         self._store_float('ns:SASsample/ns:position/ns:y', dom, 'position.y', data_info.sample) 
    1419         self._store_float('ns:SASsample/ns:position/ns:z', dom, 'position.z', data_info.sample) 
     1432        self._store_float('ns:SASsample/ns:position/ns:x', dom, 'position.x', 
     1433                          data_info.sample) 
     1434        self._store_float('ns:SASsample/ns:position/ns:y', dom, 'position.y', 
     1435                          data_info.sample) 
     1436        self._store_float('ns:SASsample/ns:position/ns:z', dom, 'position.z', 
     1437                          data_info.sample) 
    14201438 
    14211439        # Orientation (as a vector) 
     
    15511569                        process.term.append(term_attr) 
    15521570                except: 
    1553                     err_mess = "cansas_reader.read: error processing process term\n  %s" % sys.exc_value 
     1571                    err_mess = "cansas_reader.read: error processing " 
     1572                    err_mess += "entry notes\n  %s" % sys.exc_value 
    15541573                    self.errors.append(err_mess) 
    15551574                    logging.error(err_mess) 
     
    15791598                value_list = [] 
    15801599                if field is not None: 
    1581                     value_list = [parse_entry_helper(node, item) for node in field] 
     1600                    value_list = \ 
     1601                        [parse_entry_helper(node, item) for node in field] 
    15821602                if len(value_list) < 2: 
    15831603                    setattr(data_info, item[0], None) 
     
    16131633                    entry_list = root.xpath('ns:SASentry', 
    16141634                                            namespaces={'ns': CANSAS_NS}) 
     1635                    name_map = {} 
    16151636                    for entry in entry_list: 
    16161637                        try: 
Note: See TracChangeset for help on using the changeset viewer.