Example #1
0
 def __init__(self, *args, **kwargs):
     super(Model, self).__init__(*args, **kwargs)
     bricks = [get_brick(var) for var
               in self.variables + self.scan_variables if get_brick(var)]
     children = set(chain(*(brick.children for brick in bricks)))
     # Quadratic complexity: we should not have thousands of
     # top-level bricks.
     self.top_bricks = []
     for brick in bricks:
         if brick not in children and brick not in self.top_bricks:
             self.top_bricks.append(brick)
     names = Counter([brick.name for brick in self.top_bricks])
     repeated_names = [name for name, count in names.items() if count > 1]
     if repeated_names:
         raise ValueError("top bricks with the same name:"
                          " {}".format(', '.join(repeated_names)))
     brick_parameter_names = {
         v: k for k, v in Selector(
             self.top_bricks).get_parameters().items()}
     parameter_list = []
     for parameter in self.parameters:
         if parameter in brick_parameter_names:
             parameter_list.append((brick_parameter_names[parameter],
                                    parameter))
         else:
             parameter_list.append((parameter.name, parameter))
     self._parameter_dict = OrderedDict(parameter_list)
Example #2
0
 def __call__(self, obj):
     if isinstance(obj, SharedVariable):
         super(PersistentParameterID, self).__call__(obj)
         if hasattr(obj.tag, 'annotations'):
             name = '{}.{}'.format(
                 BRICK_DELIMITER.join([brick.name for brick in
                                       get_brick(obj).get_unique_path()]),
                 obj.name
             )
         else:
             name = obj.name
         self.ndarray_names[id(obj.container.storage[0])] = name
     if id(obj) in self.ndarray_names:
         PersistentCudaNdarrayID.__call__(self, obj)
Example #3
0
 def __call__(self, obj):
     if isinstance(obj, SharedVariable):
         super(PersistentParameterID, self).__call__(obj)
         if hasattr(obj.tag, 'annotations'):
             name = '{}.{}'.format(
                 BRICK_DELIMITER.join([
                     brick.name
                     for brick in get_brick(obj).get_unique_path()
                 ]), obj.name)
         else:
             name = obj.name
         self.ndarray_names[id(obj.container.storage[0])] = name
     if id(obj) in self.ndarray_names:
         PersistentCudaNdarrayID.__call__(self, obj)