source: sasview/src/sas/sascalc/dataloader/readers/cansas_constants.py @ b204004

magnetic_scattrelease-4.2.2ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249unittest-saveload
Last change on this file since b204004 was 63d773c, checked in by Adam Washington <adam.washington@…>, 8 years ago

Add yacceptance

Needed to correspond to zacceptance for 2D sesans

  • Property mode set to 100644
File size: 20.2 KB
RevLine 
[682c432]1"""
2Information relating to the CanSAS data format. These constants are used in
3the cansas_reader.py file to read in any version of the cansas format.
4"""
5class CansasConstants(object):
6    """
7    The base class to define where all of the data is to be saved by
8    cansas_reader.py.
9    """
10    names = ''
11    format = ''
12
13    def __init__(self):
14        self.names = self.CANSAS_NS
15        self.format = self.CANSAS_FORMAT
16
17    def iterate_namespace(self, namespace):
18        """
19        Method to iterate through a cansas constants tree based on a list of
20        names
21
22        :param namespace: A list of names that match the tree structure of
23            cansas_constants
24        """
25        # The current level to look through in cansas_constants.
26        return_me = CurrentLevel()
27        return_me.current_level = self.CANSAS_FORMAT.get("SASentry")
28        # Defaults for variable and datatype
29        return_me.ns_datatype = "content"
30        return_me.ns_optional = True
31        for name in namespace:
32            try:
33                if name != "SASentry":
34                    return_me.current_level = \
35                        return_me.current_level.get("children").get(name, "")
36                    if return_me.current_level == "":
37                        return_me.current_level = \
38                                return_me.current_level.get("<any>", "")
39                    cl_datatype = return_me.current_level.get("storeas", "")
40                    cl_units_optional = \
[250fec92]41                             return_me.current_level.get("units_optional", "")
[682c432]42                    # Where are how to store the variable for the given
43                    # namespace CANSAS_CONSTANTS tree is hierarchical, so
44                    # is no value, inherit
45                    return_me.ns_datatype = cl_datatype if cl_datatype != "" \
46                        else return_me.ns_datatype
47                    return_me.ns_optional = cl_units_optional if \
48                        cl_units_optional != return_me.ns_optional \
49                                        else return_me.ns_optional
50            except AttributeError:
51                return_me.ns_datatype = "content"
52                return_me.ns_optional = True
53        return return_me
54
55    def get_namespace_map(self):
56        """
57        Helper method to get the names namespace list
58        """
59        return self.names
60
61    # CANSAS_NS holds the base namespace and default schema file information
62    CANSAS_NS = {"1.0" : {"ns" : "cansas1d/1.0",
63                          "schema" : "cansas1d_v1_0.xsd"
64                         },
65                 "1.1" : {"ns" : "urn:cansas1d:1.1",
66                          "schema" : "cansas1d_v1_1.xsd"
67                         }
68                }
69
70    # The constants below hold information on where to store the CanSAS data
71    # when loaded in using sasview
[250fec92]72    ANY = {"storeas" : "content"}
73    TITLE = {}
74    SASNOTE = {}
75    SASPROCESS_TERM = {"attributes" : {"unit" : {}, "name" : {}}}
76    SASPROCESS_SASPROCESSNOTE = {"children" : {"<any>" : ANY}}
77    SASPROCESS = {"children" : {"name" : {},
78                                "date" : {},
79                                "description" : {},
[682c432]80                                "term" : SASPROCESS_TERM,
81                                "SASprocessnote" : SASPROCESS_SASPROCESSNOTE,
82                                "<any>" : ANY
83                               },
84                 }
[250fec92]85    RUN = {"attributes" : {"name" :{}}}
86    SASDATA_IDATA_Q = {"units_optional" : False,
87                       "storeas" : "float",
88                        "unit" : "x_unit",
89                       "attributes" : {"unit" : {"storeas" : "content"}},
[682c432]90                      }
[250fec92]91    SASDATA_IDATA_I = {"units_optional" : False,
92                       "storeas" : "float",
93                        "unit" : "y_unit",
94                       "attributes" : {"unit" : {"storeas" : "content"}},
[682c432]95                      }
[250fec92]96    SASDATA_IDATA_IDEV = {"units_optional" : False,
97                          "storeas" : "float",
[682c432]98                          "unit" : "y_unit",
[250fec92]99                          "attributes" : {"unit" : {"storeas" : "content"}},
[682c432]100                         }
[250fec92]101    SASDATA_IDATA_QDEV = {"units_optional" : False,
102                          "storeas" : "float",
[682c432]103                          "unit" : "x_unit",
[250fec92]104                          "attributes" : {"unit" : {"storeas" : "content"}},
[682c432]105                         }
[250fec92]106    SASDATA_IDATA_DQL = {"units_optional" : False,
107                         "storeas" : "float",
[682c432]108                         "unit" : "x_unit",
[250fec92]109                         "attributes" : {"unit" : {"storeas" : "content"}},
[682c432]110                        }
[250fec92]111    SASDATA_IDATA_DQW = {"units_optional" : False,
112                         "storeas" : "float",
[682c432]113                         "unit" : "x_unit",
[250fec92]114                         "attributes" : {"unit" : {"storeas" : "content"}},
[682c432]115                        }
[250fec92]116    SASDATA_IDATA_QMEAN = {"unit" : "x_unit",
117                           "attributes" : {"unit" : {}},
[682c432]118                          }
[250fec92]119    SASDATA_IDATA_SHADOWFACTOR = {}
120    SASDATA_IDATA = {"attributes" : {"name" : {},"timestamp" : {"storeas" : "timestamp"}},
[682c432]121                     "children" : {"Q" : SASDATA_IDATA_Q,
122                                   "I" : SASDATA_IDATA_I,
123                                   "Idev" : SASDATA_IDATA_IDEV,
124                                   "Qdev" : SASDATA_IDATA_QDEV,
125                                   "dQw" : SASDATA_IDATA_DQW,
126                                   "dQl" : SASDATA_IDATA_DQL,
127                                   "Qmean" : SASDATA_IDATA_QMEAN,
128                                   "Shadowfactor" : SASDATA_IDATA_SHADOWFACTOR,
129                                   "<any>" : ANY
130                                  }
131                    }
[250fec92]132    SASDATA = {"attributes" : {"name" : {}},
[682c432]133               "variable" : None,
134               "children" : {"Idata" : SASDATA_IDATA,
[ad4632c]135                             "Sesans": {"storeas": "content"},
136                             "zacceptance": {"storeas": "float"},
[63d773c]137                             "yacceptance": {"storeas": "float"},
[682c432]138                             "<any>" : ANY
139                            }
140              }
[250fec92]141    SASTRANSSPEC_TDATA_LAMDBA = {"storeas" : "float",
[682c432]142                                 "unit" : "wavelength_unit",
[250fec92]143                                 "attributes" : {"unit" : {"storeas" : "content"}}
[682c432]144                                }
[250fec92]145    SASTRANSSPEC_TDATA_T = {"storeas" : "float",
[682c432]146                            "unit" : "transmission_unit",
[250fec92]147                            "attributes" : {"unit" : {"storeas" : "content"}}
[682c432]148                           }
[250fec92]149    SASTRANSSPEC_TDATA_TDEV = {"storeas" : "float",
[682c432]150                               "unit" : "transmission_deviation_unit",
[250fec92]151                               "attributes" : {"unit" :{"storeas" : "content"}}
[682c432]152                              }
[250fec92]153    SASTRANSSPEC_TDATA = {"children" : {"Lambda" : SASTRANSSPEC_TDATA_LAMDBA,
[682c432]154                                        "T" : SASTRANSSPEC_TDATA_T,
155                                        "Tdev" : SASTRANSSPEC_TDATA_TDEV,
156                                        "<any>" : ANY,
157                                       }
158                         }
[250fec92]159    SASTRANSSPEC = {"children" : {"Tdata" : SASTRANSSPEC_TDATA,
[682c432]160                                  "<any>" : ANY,
161                                 },
[250fec92]162                    "attributes" : {"name" :{}, "timestamp" : {},}
[682c432]163                   }
[250fec92]164    SASSAMPLE_THICK = {"unit" : "thickness_unit",
[682c432]165                       "storeas" : "float",
[250fec92]166                       "attributes" : {"unit" :{}},
[682c432]167                      }
[250fec92]168    SASSAMPLE_TRANS = {"storeas" : "float",}
169    SASSAMPLE_TEMP = {"unit" : "temperature_unit",
[682c432]170                      "storeas" : "float",
[250fec92]171                      "attributes" :{"unit" :{}},
[682c432]172                     }
[250fec92]173    SASSAMPLE_POS_ATTR = {"unit" : {}}
174    SASSAMPLE_POS_X = {"unit" : "position_unit",
[682c432]175                       "storeas" : "float",
176                       "attributes" : SASSAMPLE_POS_ATTR
177                      }
[250fec92]178    SASSAMPLE_POS_Y = {"unit" : "position_unit",
[682c432]179                       "storeas" : "float",
180                       "attributes" : SASSAMPLE_POS_ATTR
181                      }
[250fec92]182    SASSAMPLE_POS_Z = {"unit" : "position_unit",
[682c432]183                       "storeas" : "float",
184                       "attributes" : SASSAMPLE_POS_ATTR
185                      }
[250fec92]186    SASSAMPLE_POS = {"children" : {"x" : SASSAMPLE_POS_X,
[682c432]187                                   "y" : SASSAMPLE_POS_Y,
188                                   "z" : SASSAMPLE_POS_Z,
189                                  },
190                    }
[250fec92]191    SASSAMPLE_ORIENT_ATTR = {"unit" :{}}
192    SASSAMPLE_ORIENT_ROLL = {"unit" : "orientation_unit",
[682c432]193                             "storeas" : "float",
194                             "attributes" : SASSAMPLE_ORIENT_ATTR
195                            }
[250fec92]196    SASSAMPLE_ORIENT_PITCH = {"unit" : "orientation_unit",
[682c432]197                              "storeas" : "float",
198                              "attributes" : SASSAMPLE_ORIENT_ATTR
199                             }
[250fec92]200    SASSAMPLE_ORIENT_YAW = {"unit" : "orientation_unit",
[682c432]201                            "storeas" : "float",
202                            "attributes" : SASSAMPLE_ORIENT_ATTR
203                           }
[250fec92]204    SASSAMPLE_ORIENT = {"children" : {"roll" : SASSAMPLE_ORIENT_ROLL,
[682c432]205                                      "pitch" : SASSAMPLE_ORIENT_PITCH,
206                                      "yaw" : SASSAMPLE_ORIENT_YAW,
207                                     },
208                       }
209    SASSAMPLE = {"attributes" :
[250fec92]210                 {"name" : {},},
211                 "children" : {"ID" : {},
[682c432]212                               "thickness" : SASSAMPLE_THICK,
213                               "transmission" : SASSAMPLE_TRANS,
214                               "temperature" : SASSAMPLE_TEMP,
215                               "position" : SASSAMPLE_POS,
216                               "orientation" : SASSAMPLE_ORIENT,
[250fec92]217                               "details" : {},
[682c432]218                               "<any>" : ANY
219                              },
220                }
[250fec92]221    SASINSTR_SRC_BEAMSIZE_ATTR = {"unit" : ""}
222    SASINSTR_SRC_BEAMSIZE_X = {"unit" : "beam_size_unit",
[682c432]223                               "storeas" : "float",
224                               "attributes" : SASINSTR_SRC_BEAMSIZE_ATTR
225                              }
[250fec92]226    SASINSTR_SRC_BEAMSIZE_Y = {"unit" : "beam_size_unit",
[682c432]227                               "storeas" : "float",
228                               "attributes" : SASINSTR_SRC_BEAMSIZE_ATTR
229                              }
[250fec92]230    SASINSTR_SRC_BEAMSIZE_Z = {"unit" : "beam_size_unit",
[682c432]231                               "storeas" : "float",
232                               "attributes" : SASINSTR_SRC_BEAMSIZE_ATTR
233                              }
[250fec92]234    SASINSTR_SRC_BEAMSIZE = {"attributes" : {"name" : {}},
[682c432]235                             "children" : {"x" : SASINSTR_SRC_BEAMSIZE_X,
236                                           "y" : SASINSTR_SRC_BEAMSIZE_Y,
237                                           "z" : SASINSTR_SRC_BEAMSIZE_Z,
238                                          }
239                            }
[250fec92]240    SASINSTR_SRC_WL = {"unit" : "wavelength_unit",
[682c432]241                       "storeas" : "float",
[250fec92]242                       "attributes" : {"unit" :{},
[682c432]243                       }
244                      }
[250fec92]245    SASINSTR_SRC_WL_MIN = {"unit" : "wavelength_min_unit",
[682c432]246                           "storeas" : "float",
[250fec92]247                           "attributes" : {"unit" :{"storeas" : "content"},}
[682c432]248                          }
[250fec92]249    SASINSTR_SRC_WL_MAX = {"unit" : "wavelength_max_unit",
[682c432]250                           "storeas" : "float",
[250fec92]251                           "attributes" : {"unit" :{"storeas" : "content"},}
[682c432]252                          }
[250fec92]253    SASINSTR_SRC_WL_SPR = {"unit" : "wavelength_spread_unit",
[682c432]254                           "storeas" : "float",
[250fec92]255                           "attributes" : {"unit" : {"storeas" : "content"},}
[682c432]256                          }
[250fec92]257    SASINSTR_SRC = {"attributes" : {"name" : {}},
258                    "children" : {"radiation" : {},
[682c432]259                                  "beam_size" : SASINSTR_SRC_BEAMSIZE,
[250fec92]260                                  "beam_shape" : {},
[682c432]261                                  "wavelength" : SASINSTR_SRC_WL,
262                                  "wavelength_min" : SASINSTR_SRC_WL_MIN,
263                                  "wavelength_max" : SASINSTR_SRC_WL_MAX,
264                                  "wavelength_spread" : SASINSTR_SRC_WL_SPR,
265                                 },
266                   }
[250fec92]267    SASINSTR_COLL_APER_ATTR = {"unit" : {}}
268    SASINSTR_COLL_APER_X = {"unit" : "size_unit",
[682c432]269                            "storeas" : "float",
270                            "attributes" : SASINSTR_COLL_APER_ATTR
271                           }
[250fec92]272    SASINSTR_COLL_APER_Y = {"unit" : "size_unit",
[682c432]273                            "storeas" : "float",
274                            "attributes" : SASINSTR_COLL_APER_ATTR
275                           }
[250fec92]276    SASINSTR_COLL_APER_Z = {"unit" : "size_unit",
[682c432]277                            "storeas" : "float",
278                            "attributes" : SASINSTR_COLL_APER_ATTR
279                           }
[250fec92]280    SASINSTR_COLL_APER_SIZE = {"attributes" : {"unit" : {}},
[682c432]281                               "children" : {"storeas" : "float",
282                                             "x" : SASINSTR_COLL_APER_X,
283                                             "y" : SASINSTR_COLL_APER_Y,
284                                             "z" : SASINSTR_COLL_APER_Z,
285                                            }
286                              }
287    SASINSTR_COLL_APER_DIST = {"storeas" : "float",
[250fec92]288                               "attributes" : {"unit" : {}},
[682c432]289                               "unit" : "distance_unit",
290                              }
[250fec92]291    SASINSTR_COLL_APER = {"attributes" : {"name" : {}, "type" : {}, },
[682c432]292                          "children" : {"size" : SASINSTR_COLL_APER_SIZE,
293                                        "distance" : SASINSTR_COLL_APER_DIST
294                                       }
295                         }
[250fec92]296    SASINSTR_COLL = {"attributes" : {"name" : {}},
[682c432]297                     "children" :
[250fec92]298                         {"length" :
299                          {"unit" : "length_unit",
300                           "storeas" : "float",
301                           "attributes" : {"storeas" : "content", "unit" : {}},
302                          },
303                          "aperture" : SASINSTR_COLL_APER,
304                         },
[682c432]305                    }
[250fec92]306    SASINSTR_DET_SDD = {"storeas" : "float",
[682c432]307                        "unit" : "distance_unit",
[250fec92]308                        "attributes" : {"unit" :{}},
[682c432]309                       }
[250fec92]310    SASINSTR_DET_OFF_ATTR = {"unit" : {"storeas" : "content" }}
311    SASINSTR_DET_OFF_X = {"storeas" : "float",
[682c432]312                          "unit" : "offset_unit",
313                          "attributes" : SASINSTR_DET_OFF_ATTR
314                         }
[250fec92]315    SASINSTR_DET_OFF_Y = {"storeas" : "float",
[682c432]316                          "unit" : "offset_unit",
317                          "attributes" : SASINSTR_DET_OFF_ATTR
318                         }
[250fec92]319    SASINSTR_DET_OFF_Z = {"storeas" : "float",
[682c432]320                          "unit" : "offset_unit",
321                          "attributes" : SASINSTR_DET_OFF_ATTR
322                         }
[250fec92]323    SASINSTR_DET_OFF = {"children" : {"x" : SASINSTR_DET_OFF_X,
[682c432]324                                      "y" : SASINSTR_DET_OFF_Y,
325                                      "z" : SASINSTR_DET_OFF_Z,
326                                     }
327                       }
[250fec92]328    SASINSTR_DET_OR_ATTR = {}
329    SASINSTR_DET_OR_ROLL = {"storeas" : "float",
[682c432]330                            "unit" : "orientation_unit",
331                            "attributes" : SASINSTR_DET_OR_ATTR
332                           }
[250fec92]333    SASINSTR_DET_OR_PITCH = {"storeas" : "float",
[682c432]334                             "unit" : "orientation_unit",
335                             "attributes" : SASINSTR_DET_OR_ATTR
336                            }
[250fec92]337    SASINSTR_DET_OR_YAW = {"storeas" : "float",
[682c432]338                           "unit" : "orientation_unit",
339                           "attributes" : SASINSTR_DET_OR_ATTR
340                          }
[250fec92]341    SASINSTR_DET_OR = {"children" : {"roll" : SASINSTR_DET_OR_ROLL,
[682c432]342                                     "pitch" : SASINSTR_DET_OR_PITCH,
343                                     "yaw" : SASINSTR_DET_OR_YAW,
344                                    }
345                      }
[250fec92]346    SASINSTR_DET_BC_X = {"storeas" : "float",
[682c432]347                         "unit" : "beam_center_unit",
[250fec92]348                         "attributes" : {"storeas" : "content"}
[682c432]349                        }
[250fec92]350    SASINSTR_DET_BC_Y = {"storeas" : "float",
[682c432]351                         "unit" : "beam_center_unit",
[250fec92]352                         "attributes" : {"storeas" : "content"}
[682c432]353                        }
[250fec92]354    SASINSTR_DET_BC_Z = {"storeas" : "float",
[682c432]355                         "unit" : "beam_center_unit",
[250fec92]356                         "attributes" : {"storeas" : "content"}
[682c432]357                        }
[250fec92]358    SASINSTR_DET_BC = {"children" : {"x" : SASINSTR_DET_BC_X,
[682c432]359                                     "y" : SASINSTR_DET_BC_Y,
[250fec92]360                                     "z" : SASINSTR_DET_BC_Z,}
[682c432]361                      }
[250fec92]362    SASINSTR_DET_PIXEL_X = {"storeas" : "float",
[682c432]363                            "unit" : "pixel_size_unit",
[250fec92]364                            "attributes" : {"storeas" : "content" }
[682c432]365                           }
[250fec92]366    SASINSTR_DET_PIXEL_Y = {"storeas" : "float",
[682c432]367                            "unit" : "pixel_size_unit",
[250fec92]368                            "attributes" : {"storeas" : "content"}
[682c432]369                           }
[250fec92]370    SASINSTR_DET_PIXEL_Z = {"storeas" : "float",
[682c432]371                            "unit" : "pixel_size_unit",
[250fec92]372                            "attributes" : {"storeas" : "content"}
[682c432]373                           }
[250fec92]374    SASINSTR_DET_PIXEL = {"children" : {"x" : SASINSTR_DET_PIXEL_X,
[682c432]375                                        "y" : SASINSTR_DET_PIXEL_Y,
376                                        "z" : SASINSTR_DET_PIXEL_Z,
377                                       }
378                         }
[250fec92]379    SASINSTR_DET_SLIT = {"storeas" : "float",
[682c432]380                         "unit" : "slit_length_unit",
[250fec92]381                         "attributes" : {"unit" : {}}
[682c432]382                        }
[250fec92]383    SASINSTR_DET = {"attributes" : {"name" : {"storeas" : "content"}},
384                    "children" : {"name" : {"storeas" : "content"},
[682c432]385                                  "SDD" : SASINSTR_DET_SDD,
386                                  "offset" : SASINSTR_DET_OFF,
387                                  "orientation" : SASINSTR_DET_OR,
388                                  "beam_center" : SASINSTR_DET_BC,
389                                  "pixel_size" : SASINSTR_DET_PIXEL,
390                                  "slit_length" : SASINSTR_DET_SLIT,
391                                 }
392                   }
[250fec92]393    SASINSTR = {"children" :
394                {"name" : {},
[682c432]395                 "SASsource" : SASINSTR_SRC,
396                 "SAScollimation" : SASINSTR_COLL,
397                 "SASdetector" : SASINSTR_DET,
398                },
399               }
400    CANSAS_FORMAT = {"SASentry" :
401                     {"units_optional" : True,
402                      "storeas" : "content",
[250fec92]403                      "attributes" : {"name" : {}},
[682c432]404                      "children" : {"Title" : TITLE,
405                                    "Run" : RUN,
406                                    "SASdata" : SASDATA,
407                                    "SAStransmission_spectrum" : SASTRANSSPEC,
408                                    "SASsample" : SASSAMPLE,
409                                    "SASinstrument" : SASINSTR,
410                                    "SASprocess" : SASPROCESS,
411                                    "SASnote" : SASNOTE,
412                                    "<any>" : ANY,
413                                   }
414                     }
415                    }
416
417
418class CurrentLevel(object):
419    """
420    A helper class to hold information on where you are in the constants tree
421    """
422
423    current_level = ''
424    ns_datatype = ''
425    ns_optional = True
426
427    def __init__(self):
428        self.current_level = {}
429        self.ns_datatype = "content"
430        self.ns_optional = True
431
432    def get_current_level(self):
433        """
434        Helper method to get the current_level map
435        """
436        return self.current_level
437
438    def get_data_type(self):
439        """
440        Helper method to get the ns_datatype label
441        """
442        return self.ns_datatype
443
444    def get_variable(self):
445        """
446        Helper method to get the ns_variable label
447        """
448        return self.ns_variable
Note: See TracBrowser for help on using the repository browser.