示例#1
0
 def do_asserts(self, repetitions, jobs_before, strict=True):
     table = self.data_listener.get_table()
     header = table.dtype.names
     # checking if all channels produced data
     for channel in self.channel_names:
         msg = 'data from channel %s were not acquired' % channel
         self.assertIn(channel, header, msg)
     # checking if data were acquired
     for ch_name in header:
         ch_data_len = len(table[ch_name])
         if strict:
             msg = ('length of data for channel %s is %d and should be '
                    '%d' % (ch_name, ch_data_len, repetitions))
             self.assertEqual(repetitions, ch_data_len, msg)
         else:
             msg = ('length of data for channel %s is %d and should <= '
                    '%d' % (ch_name, ch_data_len, repetitions))
             self.assertGreaterEqual(repetitions, ch_data_len, msg)
         for value in table[ch_name]:
             if (isinstance(value, numpy.ndarray)
                     or is_number(value)
                     or is_pure_str(value)):
                 break
         else:
             raise AssertionError('channel %s does not report any '
                                  'valid data')
     # checking if there are no pending jobs
     jobs_after = get_thread_pool().qsize
     msg = ('there are %d jobs pending to be done after the acquisition ' +
            '(before: %d)') % (jobs_after, jobs_before)
     self.assertEqual(jobs_before, jobs_after, msg)
示例#2
0
 def _preprocessParameters(self, parameters):
     if is_pure_str(parameters):
         inside_str = False
         pars = []
         par = ''
         for c in parameters:
             if c == '"':
                 if inside_str:
                     inside_str = False
                     pars.append(par)
                     par = ''
                 else:
                     inside_str = True
             elif c == ' ':
                 if inside_str:
                     par += c
                 else:
                     pars.append(par)
                     par = ''
             else:
                 par += c
         if par:
             pars.append(par)
         return pars
     elif is_non_str_seq(parameters):
         return parameters
示例#3
0
    def _writeRecord(self, record):
        if self.filename is None:
            return
        _meas = self.fd[posixpath.join(self.entryname, 'measurement')]

        for dd in self.datadesc:
            if dd.name in record.data:
                data = record.data[dd.name]
                _ds = _meas[dd.label]
                if data is None:
                    data = numpy.zeros(dd.shape, dtype=dd.dtype)
                # skip NaN if value reference is enabled
                if dd.value_ref_enabled and not is_pure_str(data):
                    continue
                elif not hasattr(data, 'shape'):
                    data = numpy.array([data], dtype=dd.dtype)
                elif dd.dtype != data.dtype.name:
                    self.debug('%s casted to %s (was %s)', dd.label, dd.dtype,
                               data.dtype.name)
                    data = data.astype(dd.dtype)

                # resize the dataset and add the latest chunk
                if _ds.shape[0] <= record.recordno:
                    _ds.resize(record.recordno + 1, axis=0)

                # write the slab of data
                _ds[record.recordno, ...] = data

            else:
                self.debug('missing data for label %r', dd.label)
        self.fd.flush()
示例#4
0
文件: spockms.py 项目: cmft/sardana
 def _preprocessParameters(self, parameters):
     if is_pure_str(parameters):
         inside_str = False
         pars = []
         par = ''
         for c in parameters:
             if c == '"':
                 if inside_str:
                     inside_str = False
                     pars.append(par)
                     par = ''
                 else:
                     inside_str = True
             elif c == ' ':
                 if inside_str:
                     par += c
                 else:
                     pars.append(par)
                     par = ''
             else:
                 par += c
         if par: pars.append(par)
         return pars
     elif is_non_str_seq(parameters):
         return parameters
示例#5
0
    def find_objects(self, param, type_class=All, subtype=All, pool=All):
        if is_pure_str(param):
            param = param,

        if type_class == MacroServer.All:
            type_name_list = self.get_data_type_names()
        else:
            if is_pure_str(type_class):
                type_name_list = type_class,
            else:
                type_name_list = type_class
        obj_set = set()
        param = ['^%s$' % x for x in param]
        re_objs = map(re.compile, param, len(param) * (re.IGNORECASE, ))
        re_subtype = re.compile(subtype, re.IGNORECASE)
        for type_name in type_name_list:
            type_class_name = type_name
            if type_class_name.endswith('*'):
                type_class_name = type_class_name[:-1]
            type_inst = self.get_data_type(type_class_name)
            if not type_inst.hasCapability(ParamType.ItemList):
                continue
            if self.is_macroserver_interface(type_class_name):
                for name, obj in type_inst.getObjDict(pool=pool).items():
                    for re_obj in re_objs:
                        if re_obj.match(name) is not None:
                            obj_type = ElementType[obj.get_type()]
                            if subtype is MacroServer.All or re_subtype.match(
                                    obj_type):
                                obj_set.add(obj)
            else:
                for name, obj in type_inst.getObjDict(pool=pool).items():
                    for re_obj in re_objs:
                        if re_obj.match(name) is not None:
                            obj_type = obj.getType()
                            if (subtype is MacroServer.All or
                                re_subtype.match(obj.getType())) and \
                               obj_type != "MotorGroup":
                                obj_set.add(obj)
        return list(obj_set)
示例#6
0
    def find_objects(self, param, type_class=All, subtype=All, pool=All):
        if is_pure_str(param):
            param = param,

        if type_class == MacroServer.All:
            type_name_list = self.get_data_type_names()
        else:
            if is_pure_str(type_class):
                type_name_list = type_class,
            else:
                type_name_list = type_class
        obj_set = set()
        param = ['^%s$' % x for x in param]
        re_objs = map(re.compile, param, len(param) * (re.IGNORECASE,))
        re_subtype = re.compile(subtype, re.IGNORECASE)
        for type_name in type_name_list:
            type_class_name = type_name
            if type_class_name.endswith('*'):
                type_class_name = type_class_name[:-1]
            type_inst = self.get_data_type(type_class_name)
            if not type_inst.hasCapability(ParamType.ItemList):
                continue
            if self.is_macroserver_interface(type_class_name):
                for name, obj in type_inst.getObjDict(pool=pool).items():
                    for re_obj in re_objs:
                        if re_obj.match(name) is not None:
                            obj_type = ElementType[obj.get_type()]
                            if subtype is MacroServer.All or re_subtype.match(obj_type):
                                obj_set.add(obj)
            else:
                for name, obj in type_inst.getObjDict(pool=pool).items():
                    for re_obj in re_objs:
                        if re_obj.match(name) is not None:
                            obj_type = obj.getType()
                            if (subtype is MacroServer.All or
                                re_subtype.match(obj.getType())) and \
                               obj_type != "MotorGroup":
                                obj_set.add(obj)
        return list(obj_set)
示例#7
0
    def get_elements_with_interface(self, interface):
        ret = CaselessDict()
        if is_pure_str(interface):
            interface_str = interface
            interface = Interface[interface_str]
        else:
            interface_str = Interface[interface]

        if self.is_macroserver_interface(interface):
            ret.update(self._LOCAL_INTERFACES.get(interface)(self))
        else:
            for pool in self.get_pools():
                ret.update(pool.getElementsWithInterface(interface_str))
        return ret
示例#8
0
    def get_elements_with_interface(self, interface):
        ret = CaselessDict()
        if is_pure_str(interface):
            interface_str = interface
            interface = Interface[interface_str]
        else:
            interface_str = Interface[interface]

        if self.is_macroserver_interface(interface):
            ret.update(self._LOCAL_INTERFACES.get(interface)(self))
        else:
            for pool in self.get_pools():
                ret.update(pool.getElementsWithInterface(interface_str))
        return ret
示例#9
0
 def test_value_ref_enabled(self):
     mg_name = str(uuid.uuid1())
     channel_name = "_test_2d_1_1"
     argin = [mg_name, channel_name]
     self.pool.CreateMeasurementGroup(argin)
     try:
         mg = Device(mg_name)
         channel = Device(channel_name)
         mg.setValueRefEnabled(True, channel_name)
         _, values = mg.count(.1)
         for channel_name, value in values.items():
             msg = "ValueRef (%s) for %s is not string" %\
                   (value, channel_name)
             self.assertTrue(is_pure_str(value), msg)
     finally:
         channel.cleanUp()
         mg.cleanUp()
         self.pool.DeleteElement(mg_name)
示例#10
0
 def is_macroserver_interface(self, interface):
     if is_pure_str(interface):
         interface = Interface[interface]
     return interface in self._LOCAL_INTERFACES
示例#11
0
 def is_macroserver_interface(self, interface):
     if is_pure_str(interface):
         interface = Interface[interface]
     return interface in self._LOCAL_INTERFACES