提交 2270a8be authored 作者: James Bergstra's avatar James Bergstra

added print_summary functions to optimizers so you can basically print all of…

added print_summary functions to optimizers so you can basically print all of FAST_RUN to the ipython console
上级 be9cff47
...@@ -73,6 +73,8 @@ class Optimizer(object): ...@@ -73,6 +73,8 @@ class Optimizer(object):
""" """
pass pass
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self))
class FromFunctionOptimizer(Optimizer): class FromFunctionOptimizer(Optimizer):
"""WRITEME""" """WRITEME"""
...@@ -81,6 +83,11 @@ class FromFunctionOptimizer(Optimizer): ...@@ -81,6 +83,11 @@ class FromFunctionOptimizer(Optimizer):
def add_requirements(self, env): def add_requirements(self, env):
env.extend(toolbox.ReplaceValidate()) env.extend(toolbox.ReplaceValidate())
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s id=%i" %(' '*level,
str(self.apply),
id(self))
def optimizer(f): def optimizer(f):
"""decorator for FromFunctionOptimizer""" """decorator for FromFunctionOptimizer"""
return FromFunctionOptimizer(f) return FromFunctionOptimizer(f)
...@@ -137,6 +144,12 @@ class SeqOptimizer(Optimizer, list): ...@@ -137,6 +144,12 @@ class SeqOptimizer(Optimizer, list):
def __repr__(self): def __repr__(self):
return list.__repr__(self) return list.__repr__(self)
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s (%i)" %(' '*level, self.__class__.__name__, id(self))
for opt in self:
opt.print_summary(stream, level=level+2)
class _metadict: class _metadict:
...@@ -354,6 +367,8 @@ class LocalOptimizer(object): ...@@ -354,6 +367,8 @@ class LocalOptimizer(object):
This is the place to do it.""" This is the place to do it."""
env.extend(toolbox.ReplaceValidate()) env.extend(toolbox.ReplaceValidate())
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self))
class FromFunctionLocalOptimizer(LocalOptimizer): class FromFunctionLocalOptimizer(LocalOptimizer):
"""WRITEME""" """WRITEME"""
...@@ -364,6 +379,10 @@ class FromFunctionLocalOptimizer(LocalOptimizer): ...@@ -364,6 +379,10 @@ class FromFunctionLocalOptimizer(LocalOptimizer):
return self._tracks return self._tracks
def __str__(self): def __str__(self):
return getattr(self, 'name', '<FromFunctionLocalOptimizer instance>') return getattr(self, 'name', '<FromFunctionLocalOptimizer instance>')
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s id=%i" %(' '*level,
str(self.transform),
id(self))
def local_optimizer(*tracks): def local_optimizer(*tracks):
def decorator(f): def decorator(f):
...@@ -388,6 +407,11 @@ class LocalOptGroup(LocalOptimizer): ...@@ -388,6 +407,11 @@ class LocalOptGroup(LocalOptimizer):
if repl: if repl:
return repl return repl
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self))
for lopt in self.opts:
lopt.print_summary(stream, level=level+2)
class _LocalOpKeyOptGroup(LocalOptGroup): class _LocalOpKeyOptGroup(LocalOptGroup):
"""WRITEME""" """WRITEME"""
...@@ -466,6 +490,12 @@ class OpRemove(LocalOptimizer): ...@@ -466,6 +490,12 @@ class OpRemove(LocalOptimizer):
def __str__(self): def __str__(self):
return "%s(x) -> x" % (self.op) return "%s(x) -> x" % (self.op)
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s(%s) id=%i" %(' '*level,
self.__class__.__name__,
str(self.op),
id(self))
class PatternSub(LocalOptimizer): class PatternSub(LocalOptimizer):
"""WRITEME """WRITEME
...@@ -618,6 +648,12 @@ class PatternSub(LocalOptimizer): ...@@ -618,6 +648,12 @@ class PatternSub(LocalOptimizer):
def __repr__(self): def __repr__(self):
return str(self) return str(self)
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s(%s, %s) id=%i" %(' '*level,
self.__class__.__name__,
str(self.in_pattern),
str(self.out_pattern),
id(self))
################## ##################
...@@ -772,6 +808,11 @@ class NavigatorOptimizer(Optimizer): ...@@ -772,6 +808,11 @@ class NavigatorOptimizer(Optimizer):
if self.local_opt: if self.local_opt:
self.local_opt.add_requirements(env) self.local_opt.add_requirements(env)
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s (%i)" %(' '*level, self.__class__.__name__, id(self))
self.local_opt.print_summary(stream, level=level+2)
class TopoOptimizer(NavigatorOptimizer): class TopoOptimizer(NavigatorOptimizer):
"""WRITEME""" """WRITEME"""
...@@ -807,6 +848,7 @@ class TopoOptimizer(NavigatorOptimizer): ...@@ -807,6 +848,7 @@ class TopoOptimizer(NavigatorOptimizer):
self.detach_updater(env, u) self.detach_updater(env, u)
class OpKeyOptimizer(NavigatorOptimizer): class OpKeyOptimizer(NavigatorOptimizer):
"""WRITEME""" """WRITEME"""
...@@ -919,6 +961,10 @@ class EquilibriumOptimizer(NavigatorOptimizer): ...@@ -919,6 +961,10 @@ class EquilibriumOptimizer(NavigatorOptimizer):
if max_use_abort: if max_use_abort:
print >> sys.stderr, "WARNING: EquilibriumOptimizer max'ed out" print >> sys.stderr, "WARNING: EquilibriumOptimizer max'ed out"
def print_summary(self, stream=sys.stdout, level=0):
print >> stream, "%s%s id=%i" %(' '*level, self.__class__.__name__, id(self))
for lopt in self.local_optimizers:
lopt.print_summary(stream, level=level+2)
################# #################
......
...@@ -95,6 +95,11 @@ class DB(object): ...@@ -95,6 +95,11 @@ class DB(object):
for variable in variables: for variable in variables:
return variable return variable
def print_summary(self, stream=sys.stdout):
print >> stream, "%s (id %i)"%(self.__class__.__name__, id(self))
print >> stream, " names", self._names
print >> stream, " db", self.__db__
class Query(object): class Query(object):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论