Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Defines the following shortcuts:
# signal.name -> return the shortname
# signal -> display nicely the content of the signal
# signal(3) -> recompute the signal at time 3, and display nicely
# signal +1 -> increment the signal time of 1, recompute, and display.
# signal.deps -> display the graph dependancy up to the default value (3)
# signal.deps(6) -> same, but with depth = 6.
# entity -> same as print(entity)
# change the prompt to be '%'
from dynamic_graph.signal_base import *
from dynamic_graph.entity import *
from matlab import matlab
# Enables shortcut "name"
def sig_short_name(self):
return self.getName().split(':')[-1]
setattr(SignalBase,'name',property(sig_short_name))
# Enables shortcuts "m"
# This code implements a pseudo function 'm' in the class signal_base,
# with no args, or optional args. Three calls can be made:
# - sig.m : print the current value.
# - sig.m(time): recompute at given <time>, and display the current value
# - sig.m +time: recompute at <time> after current time, and display.
class PrettySignalPrint:
sig = None
def __init__(self,sig):
self.sig = sig
def __repr__(self):
return str(matlab(self.sig.value))
def __call__(self,iter):
self.sig.recompute(iter)
return self
def __add__(self,iter):
self.sig.recompute( self.sig.time+iter )
return self
def sigMatPrint(sig):
return PrettySignalPrint(sig)
setattr(SignalBase,'m',property(PrettySignalPrint))
print('Pretty matlab print set')
# Enable the same as 'm', but directly on the signal object.
def sigRepr( self ):
return self.name+' = '+str(matlab(self.value))
def sigCall( sig,iter ):
sig.recompute(iter)
print sigRepr(sig)
def sigTimeIncr( sig,iter ):
sig.recompute(sig.time+iter)
print sigRepr(sig)
setattr(SignalBase,'__repr__',sigRepr)
setattr(SignalBase,'__call__',sigCall)
setattr(SignalBase,'__add__',sigTimeIncr)
# Enables shortcut "deps"
# Implements the peudo function 'deps', that can be called without arg,
# or specifying a specific depth to be printed.
class SignalDepPrint:
defaultDepth = 2
sig = None
def __init__(self,sig):
self.sig=sig
def __repr__(self):
return self.sig.displayDependencies(self.defaultDepth)
def __call__(self,depth):
self.defaultDepth = depth
return self
setattr(SignalBase,'deps',property(SignalDepPrint))
setattr(Entity,'__repr__',Entity.__str__)
# Changing prompt
import sys
sys.ps1 = '% '