def get_pixel_register_objects(self, do_sort=None, reverse=False, **kwargs): """Generate register objects (list) from register name list Usage: get_pixel_register_objects(name = ["TDAC", "FDAC"]) Receives: keyword lists of register names, addresses,... Returns: list of register objects """ # speed up of the most often used keyword name try: names = iterable(kwargs.pop('name')) except KeyError: register_objects = [] else: register_objects = [self.pixel_registers[reg] for reg in names] for keyword in kwargs.iterkeys(): allowed_values = iterable(kwargs[keyword]) register_objects.extend( filter( lambda pixel_register: pixel_register[keyword] in allowed_values, self.pixel_registers.itervalues())) if not register_objects and filter(None, kwargs.itervalues()): raise ValueError('Pixel register objects empty') if do_sort: return sorted(register_objects, key=itemgetter(*do_sort), reverse=reverse) else: return register_objects
def get_global_register_objects(self, do_sort=None, reverse=False, **kwargs): """Generate register objects (list) from register name list Usage: get_global_register_objects(name = ["Amp2Vbn", "GateHitOr", "DisableColumnCnfg"], address = [2, 3]) Receives: keyword lists of register names, addresses,... for making cuts Returns: list of register objects """ # speed up of the most often used keyword name try: names = iterable(kwargs.pop('name')) except KeyError: register_objects = [] else: register_objects = [self.global_registers[reg] for reg in names] for keyword in kwargs.iterkeys(): allowed_values = iterable(kwargs[keyword]) register_objects.extend( filter( lambda global_register: set( iterable(global_register[keyword])). intersection(allowed_values), self.global_registers.itervalues())) if not register_objects and filter(None, kwargs.itervalues()): raise ValueError('Global register objects empty') if do_sort: return sorted(register_objects, key=itemgetter(*do_sort), reverse=reverse) else: return register_objects
def get_global_register_attributes(self, register_attribute, do_sort=True, **kwargs): """Calculating register numbers from register names. Usage: get_global_register_attributes("attribute_name", name = [regname_1, regname_2, ...], addresses = 2) Receives: attribute name to be returned, dictionaries (kwargs) of register attributes and values for making cuts Returns: list of attribute values that matches dictionaries of attributes """ # speed up of the most often used keyword name try: names = iterable(kwargs.pop('name')) except KeyError: register_attribute_list = [] else: register_attribute_list = [self.global_registers[reg][register_attribute] for reg in names] for keyword in kwargs.keys(): allowed_values = iterable(kwargs[keyword]) try: register_attribute_list.extend(map(itemgetter(register_attribute), filter(lambda global_register: set(iterable(global_register[keyword])).intersection(allowed_values), self.global_registers.itervalues()))) except AttributeError: pass if not register_attribute_list and filter(None, kwargs.itervalues()): raise ValueError('Global register attribute %s empty' % register_attribute) if do_sort: return sorted(set(flatten_iterable(register_attribute_list))) else: return flatten_iterable(register_attribute_list)
def get_pixel_register_objects(self, do_sort=None, reverse=False, **kwargs): """Generate register objects (list) from register name list Usage: get_pixel_register_objects(name = ["TDAC", "FDAC"]) Receives: keyword lists of register names, addresses,... Returns: list of register objects """ # speed up of the most often used keyword name try: names = iterable(kwargs.pop('name')) except KeyError: register_objects = [] else: register_objects = [self.pixel_registers[reg] for reg in names] for keyword in kwargs.iterkeys(): allowed_values = iterable(kwargs[keyword]) register_objects.extend(filter(lambda pixel_register: pixel_register[keyword] in allowed_values, self.pixel_registers.itervalues())) if not register_objects and filter(None, kwargs.itervalues()): raise ValueError('Pixel register objects empty') if do_sort: return sorted(register_objects, key=itemgetter(*do_sort), reverse=reverse) else: return register_objects
def get_global_register_objects(self, do_sort=None, reverse=False, **kwargs): """Generate register objects (list) from register name list Usage: get_global_register_objects(name = ["Amp2Vbn", "GateHitOr", "DisableColumnCnfg"], address = [2, 3]) Receives: keyword lists of register names, addresses,... for making cuts Returns: list of register objects """ # speed up of the most often used keyword name try: names = iterable(kwargs.pop('name')) except KeyError: register_objects = [] else: register_objects = [self.global_registers[reg] for reg in names] for keyword in kwargs.iterkeys(): allowed_values = iterable(kwargs[keyword]) register_objects.extend(filter(lambda global_register: set(iterable(global_register[keyword])).intersection(allowed_values), self.global_registers.itervalues())) if not register_objects and filter(None, kwargs.itervalues()): raise ValueError('Global register objects empty') if do_sort: return sorted(register_objects, key=itemgetter(*do_sort), reverse=reverse) else: return register_objects