def _res_assignments_new(self, o, **kwargs): removed = [] for assignment in list(o.assignments): fixed_value = self.visit(assignment.rhs_map) if fixed_value: removed.extend([assignment, assignment.lhs]) # Replace the 'Assigned' object with a 'SymbolicConst' in the tree: sym_node = ast.SymbolicConstant(symbol=assignment.lhs.symbol, value=fixed_value) #ReplaceNode(assignment.lhs, sym_node).visit(o) ReplaceNode.replace_and_check(srcObj=assignment.lhs, dstObj=sym_node, root = o) # Remove the Assignment equation: o._eqn_assignment._objs.remove(assignment) o._symbolicconstants._add_item(sym_node) for a in removed: nc = EqnsetVisitorNodeCollector(o) assert not a in nc.all(), 'Did not fully remove: %s' % a
def _res_assignments(self, o, **kwargs): removed = [] for aKey in o._eqn_assignment.keys(): a = o._eqn_assignment[aKey] alhs = a.lhs fixed_value = self.visit(a.rhs_map) if fixed_value: sym_suffix = '_as_symconst' sym_suffix = '' s = ast.SymbolicConstant(symbol=aKey.symbol + sym_suffix, value=fixed_value) #ReplaceNode(a.lhs, s).visit(o) ReplaceNode.replace_and_check(srcObj=a.lhs, dstObj=s, root = o) o._symbolicconstants[aKey.symbol] = s from neurounits.misc import SeqUtils old_ass = SeqUtils.filter_expect_single( o._eqn_assignment, lambda o:o.symbol == aKey.symbol ) del o._eqn_assignment[ old_ass ] #o.get_terminal_obj(aKey.symbol) ] #del o._eqn_assignment[ o.get_terminal_obj(aKey.symbol) ] removed.append(alhs) # Double check they have gone: for a in removed: nc = EqnsetVisitorNodeCollector() nc.visit(o) assert not a in nc.all()
def VisitLibrary(self, o, **kwargs): removed = [] for aKey in o._eqn_assignment.keys(): a = o._eqn_assignment[aKey] alhs = a.lhs fixed_value = self.visit(a.rhs) if fixed_value: sym_suffix = '_as_symconst' sym_suffix = '' s = ast.SymbolicConstant(symbol=aKey.symbol + sym_suffix, value=fixed_value) #assert False #print 'Replacing Node:', a.lhs.symbol ReplaceNode(a.lhs, s).visit(o) #o._cache_nodes() #print 'Done replacing symbol' o._symbolicconstants[aKey.symbol] = s del o._eqn_assignment[aKey] removed.append(alhs) # Double check they have gone: for a in removed: nc = EqnsetVisitorNodeCollector() nc.visit(o) assert not a in nc.all() # Should be no more assignments: assert len(o._eqn_assignment) == 0
def SymbolicConstant(cls, srcObj, dst_symbol=None): dst_symbol = dst_symbol or srcObj.symbol return ast.SymbolicConstant(symbol=dst_symbol, value=srcObj.value)
def VisitSymbolicConstant(self, o, **kwargs): return ast.SymbolicConstant(symbol=o.symbol, value=o.value)
def VisitSymbolicConstant(self, o, **kwargs): new = ast.SymbolicConstant(symbol=o.symbol, value=o.value) return copy_std( o, new, )