Changeset b682c6a in sasview for src/sas/sascalc


Ignore:
Timestamp:
Aug 17, 2017 10:14:00 AM (7 years ago)
Author:
Paul Kienzle <pkienzle@…>
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, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
c9ecd1b
Parents:
ce2819b (diff), a06ee7e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into 4_1_issues

Location:
src/sas/sascalc
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sascalc/pr/c_extensions/Cinvertor.c

    r959eb01 rcb62bd5  
    294294} 
    295295 
    296 const char set_has_bck_doc[] = 
     296const char set_est_bck_doc[] = 
    297297        "Sets background flag\n"; 
    298298 
     
    300300 * Sets the maximum distance 
    301301 */ 
    302 static PyObject * set_has_bck(Cinvertor *self, PyObject *args) { 
    303         int has_bck; 
    304  
    305         if (!PyArg_ParseTuple(args, "i", &has_bck)) return NULL; 
    306         self->params.has_bck = has_bck; 
    307         return Py_BuildValue("i", self->params.has_bck); 
    308 } 
    309  
    310 const char get_has_bck_doc[] = 
     302static PyObject * set_est_bck(Cinvertor *self, PyObject *args) { 
     303        int est_bck; 
     304 
     305        if (!PyArg_ParseTuple(args, "i", &est_bck)) return NULL; 
     306        self->params.est_bck = est_bck; 
     307        return Py_BuildValue("i", self->params.est_bck); 
     308} 
     309 
     310const char get_est_bck_doc[] = 
    311311        "Gets background flag\n"; 
    312312 
     
    314314 * Gets the maximum distance 
    315315 */ 
    316 static PyObject * get_has_bck(Cinvertor *self, PyObject *args) { 
    317         return Py_BuildValue("i", self->params.has_bck); 
     316static PyObject * get_est_bck(Cinvertor *self, PyObject *args) { 
     317        return Py_BuildValue("i", self->params.est_bck); 
    318318} 
    319319 
     
    882882        sqrt_alpha = sqrt(self->params.alpha); 
    883883        pi = acos(-1.0); 
    884         offset = (self->params.has_bck==1) ? 0 : 1; 
     884        offset = (self->params.est_bck==1) ? 0 : 1; 
    885885 
    886886    for (j=0; j<nfunc; j++) { 
     
    892892            } 
    893893            if (accept_q(self, self->params.x[i])){ 
    894                 if (self->params.has_bck==1 && j==0) { 
     894                if (self->params.est_bck==1 && j==0) { 
    895895                    a[i*nfunc+j] = 1.0/self->params.err[i]; 
    896896                } else { 
     
    906906        } 
    907907        for (i_r=0; i_r<nr; i_r++){ 
    908             if (self->params.has_bck==1 && j==0) { 
     908            if (self->params.est_bck==1 && j==0) { 
    909909                a[(i_r+self->params.npoints)*nfunc+j] = 0.0; 
    910910            } else { 
     
    10291029                   {"set_slit_height", (PyCFunction)set_slit_height, METH_VARARGS, set_slit_height_doc}, 
    10301030                   {"get_slit_height", (PyCFunction)get_slit_height, METH_VARARGS, get_slit_height_doc}, 
    1031                    {"set_has_bck", (PyCFunction)set_has_bck, METH_VARARGS, set_has_bck_doc}, 
    1032                    {"get_has_bck", (PyCFunction)get_has_bck, METH_VARARGS, get_has_bck_doc}, 
     1031                   {"set_est_bck", (PyCFunction)set_est_bck, METH_VARARGS, set_est_bck_doc}, 
     1032                   {"get_est_bck", (PyCFunction)get_est_bck, METH_VARARGS, get_est_bck_doc}, 
    10331033                   {"get_nx", (PyCFunction)get_nx, METH_VARARGS, get_nx_doc}, 
    10341034                   {"get_ny", (PyCFunction)get_ny, METH_VARARGS, get_ny_doc}, 
  • src/sas/sascalc/pr/c_extensions/invertor.c

    r959eb01 rcb62bd5  
    2020        pars->q_min = -1.0; 
    2121        pars->q_max = -1.0; 
    22         pars->has_bck = 0; 
     22        pars->est_bck = 0; 
    2323} 
    2424 
     
    313313    return sqrt(sum_r2/(2.0*sum)); 
    314314} 
    315  
  • src/sas/sascalc/pr/c_extensions/invertor.h

    r959eb01 rcb62bd5  
    2727    double q_max; 
    2828    /// Flag for whether or not to evalute a constant background while inverting 
    29     int has_bck; 
     29    int est_bck; 
    3030    /// Slit height in units of q [A-1] 
    3131    double slit_height; 
  • src/sas/sascalc/pr/invertor.py

    r45dffa69 rcb62bd5  
    121121         self.q_min, self.q_max, 
    122122         self.x, self.y, 
    123          self.err, self.has_bck, 
     123         self.err, self.est_bck, 
    124124         self.slit_height, self.slit_width) = state 
    125125 
     
    133133                 self.q_min, self.q_max, 
    134134                 self.x, self.y, 
    135                  self.err, self.has_bck, 
     135                 self.err, self.est_bck, 
    136136                 self.slit_height, self.slit_width, 
    137137                ) 
     
    175175        elif name == 'slit_width': 
    176176            return self.set_slit_width(value) 
    177         elif name == 'has_bck': 
     177        elif name == 'est_bck': 
    178178            if value == True: 
    179                 return self.set_has_bck(1) 
     179                return self.set_est_bck(1) 
    180180            elif value == False: 
    181                 return self.set_has_bck(0) 
     181                return self.set_est_bck(0) 
    182182            else: 
    183                 raise ValueError, "Invertor: has_bck can only be True or False" 
     183                raise ValueError, "Invertor: est_bck can only be True or False" 
    184184 
    185185        return Cinvertor.__setattr__(self, name, value) 
     
    220220        elif name == 'slit_width': 
    221221            return self.get_slit_width() 
    222         elif name == 'has_bck': 
    223             value = self.get_has_bck() 
     222        elif name == 'est_bck': 
     223            value = self.get_est_bck() 
    224224            if value == 1: 
    225225                return True 
     
    248248        invertor.y = self.y 
    249249        invertor.err = self.err 
    250         invertor.has_bck = self.has_bck 
     250        invertor.est_bck = self.est_bck 
     251        invertor.background = self.background 
    251252        invertor.slit_height = self.slit_height 
    252253        invertor.slit_width = self.slit_width 
     
    290291        """ 
    291292        # Reset the background value before proceeding 
    292         self.background = 0.0 
    293         return self.lstsq(nfunc, nr=nr) 
     293        # self.background = 0.0 
     294        if not self.est_bck: 
     295            self.y -= self.background 
     296        out, cov = self.lstsq(nfunc, nr=nr) 
     297        if not self.est_bck: 
     298            self.y += self.background 
     299        return out, cov 
    294300 
    295301    def iq(self, out, q): 
     
    454460 
    455461        # If we need to fit the background, add a term 
    456         if self.has_bck == True: 
     462        if self.est_bck == True: 
    457463            nfunc_0 = nfunc 
    458464            nfunc += 1 
     
    500506 
    501507        # Keep a copy of the last output 
    502         if self.has_bck == False: 
    503             self.background = 0 
     508        if self.est_bck == False: 
    504509            self.out = c 
    505510            self.cov = err 
     
    653658        file.write("#slit_width=%g\n" % self.slit_width) 
    654659        file.write("#background=%g\n" % self.background) 
    655         if self.has_bck == True: 
     660        if self.est_bck == True: 
    656661            file.write("#has_bck=1\n") 
    657662        else: 
     
    734739                        toks = line.split('=') 
    735740                        if int(toks[1]) == 1: 
    736                             self.has_bck = True 
     741                            self.est_bck = True 
    737742                        else: 
    738                             self.has_bck = False 
     743                            self.est_bck = False 
    739744 
    740745                    # Now read in the parameters 
  • src/sas/sascalc/dataloader/readers/cansas_reader.py

    r7432acb r6a455cd3  
    158158                    # If the file does not match the schema, raise this error 
    159159                    invalid_xml = self.find_invalid_xml() 
    160                     invalid_xml = INVALID_XML.format(basename + extension) + invalid_xml 
    161                     self.errors.add(invalid_xml) 
     160                    if invalid_xml != "": 
     161                        invalid_xml = INVALID_XML.format(basename + extension) + invalid_xml 
     162                        self.errors.add(invalid_xml) 
    162163                    # Try again with an invalid CanSAS schema, that requires only a data set in each 
    163164                    base_name = xml_reader.__file__ 
     
    263264                # I and Q - 1D data 
    264265                elif tagname == 'I' and isinstance(self.current_dataset, plottable_1D): 
    265                     unit_list = unit.split("|") 
    266                     if len(unit_list) > 1: 
    267                         self.current_dataset.yaxis(unit_list[0].strip(), 
    268                                                    unit_list[1].strip()) 
    269                     else: 
    270                         self.current_dataset.yaxis("Intensity", unit) 
     266                    self.current_dataset.yaxis("Intensity", unit) 
    271267                    self.current_dataset.y = np.append(self.current_dataset.y, data_point) 
    272268                elif tagname == 'Idev' and isinstance(self.current_dataset, plottable_1D): 
    273269                    self.current_dataset.dy = np.append(self.current_dataset.dy, data_point) 
    274270                elif tagname == 'Q': 
    275                     unit_list = unit.split("|") 
    276                     if len(unit_list) > 1: 
    277                         self.current_dataset.xaxis(unit_list[0].strip(), 
    278                                                    unit_list[1].strip()) 
    279                     else: 
    280                         self.current_dataset.xaxis("Q", unit) 
     271                    self.current_dataset.xaxis("Q", unit) 
    281272                    self.current_dataset.x = np.append(self.current_dataset.x, data_point) 
    282273                elif tagname == 'Qdev': 
     
    292283                elif tagname == 'Sesans': 
    293284                    self.current_datainfo.isSesans = bool(data_point) 
     285                    self.current_dataset.xaxis(attr.get('x_axis'), 
     286                                                attr.get('x_unit')) 
     287                    self.current_dataset.yaxis(attr.get('y_axis'), 
     288                                                attr.get('y_unit')) 
    294289                elif tagname == 'yacceptance': 
    295290                    self.current_datainfo.sample.yacceptance = (data_point, unit) 
     
    785780                    value_unit = local_unit 
    786781            except KeyError: 
    787                 err_msg = "CanSAS reader: unexpected " 
    788                 err_msg += "\"{0}\" unit [{1}]; " 
    789                 err_msg = err_msg.format(tagname, local_unit) 
    790                 err_msg += "expecting [{0}]".format(default_unit) 
     782                # Do not throw an error for loading Sesans data in cansas xml 
     783                # This is a temporary fix. 
     784                if local_unit != "A" and local_unit != 'pol': 
     785                    err_msg = "CanSAS reader: unexpected " 
     786                    err_msg += "\"{0}\" unit [{1}]; " 
     787                    err_msg = err_msg.format(tagname, local_unit) 
     788                    err_msg += "expecting [{0}]".format(default_unit) 
    791789                value_unit = local_unit 
    792790            except: 
     
    10391037            node.append(point) 
    10401038            self.write_node(point, "Q", datainfo.x[i], 
    1041                             {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 
     1039                            {'unit': datainfo.x_unit}) 
    10421040            if len(datainfo.y) >= i: 
    10431041                self.write_node(point, "I", datainfo.y[i], 
    1044                                 {'unit': datainfo._yaxis + " | " + datainfo._yunit}) 
     1042                                {'unit': datainfo.y_unit}) 
    10451043            if datainfo.dy is not None and len(datainfo.dy) > i: 
    10461044                self.write_node(point, "Idev", datainfo.dy[i], 
    1047                                 {'unit': datainfo._yaxis + " | " + datainfo._yunit}) 
     1045                                {'unit': datainfo.y_unit}) 
    10481046            if datainfo.dx is not None and len(datainfo.dx) > i: 
    10491047                self.write_node(point, "Qdev", datainfo.dx[i], 
    1050                                 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 
     1048                                {'unit': datainfo.x_unit}) 
    10511049            if datainfo.dxw is not None and len(datainfo.dxw) > i: 
    10521050                self.write_node(point, "dQw", datainfo.dxw[i], 
    1053                                 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 
     1051                                {'unit': datainfo.x_unit}) 
    10541052            if datainfo.dxl is not None and len(datainfo.dxl) > i: 
    10551053                self.write_node(point, "dQl", datainfo.dxl[i], 
    1056                                 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 
     1054                                {'unit': datainfo.x_unit}) 
    10571055        if datainfo.isSesans: 
    1058             sesans = self.create_element("Sesans") 
     1056            sesans_attrib = {'x_axis': datainfo._xaxis, 
     1057                             'y_axis': datainfo._yaxis, 
     1058                             'x_unit': datainfo.x_unit, 
     1059                             'y_unit': datainfo.y_unit} 
     1060            sesans = self.create_element("Sesans", attrib=sesans_attrib) 
    10591061            sesans.text = str(datainfo.isSesans) 
    1060             node.append(sesans) 
    1061             self.write_node(node, "yacceptance", datainfo.sample.yacceptance[0], 
     1062            entry_node.append(sesans) 
     1063            self.write_node(entry_node, "yacceptance", datainfo.sample.yacceptance[0], 
    10621064                             {'unit': datainfo.sample.yacceptance[1]}) 
    1063             self.write_node(node, "zacceptance", datainfo.sample.zacceptance[0], 
     1065            self.write_node(entry_node, "zacceptance", datainfo.sample.zacceptance[0], 
    10641066                             {'unit': datainfo.sample.zacceptance[1]}) 
    10651067 
  • src/sas/sascalc/dataloader/readers/cansas_reader_HDF5.py

    rc94280c r7c24685  
    126126 
    127127            if isinstance(value, h5py.Group): 
     128                parent_class = class_name 
    128129                self.parent_class = class_name 
    129130                parent_list.append(key) 
     
    136137                # Recursion step to access data within the group 
    137138                self.read_children(value, parent_list) 
     139                self.parent_class = parent_class 
    138140                self.add_intermediate() 
    139141                parent_list.remove(key) 
  • src/sas/sascalc/dataloader/readers/xml_reader.py

    r235f514 r6a455cd3  
    130130            first_error = schema.assertValid(self.xmldoc) 
    131131        except etree.DocumentInvalid as err: 
     132            # Suppress errors for <'any'> elements 
     133            if "##other" in str(err): 
     134                return first_error 
    132135            first_error = str(err) 
    133136        return first_error 
Note: See TracChangeset for help on using the changeset viewer.