Skip to content

Commit 8081ac3

Browse files
committed
add __repr__ for NamedSignal
1 parent e2a93dd commit 8081ac3

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

control/iosys.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,16 @@ def _parse_key(self, key, labels=None, level=0):
108108
def __getitem__(self, key):
109109
return super().__getitem__(self._parse_key(key))
110110

111+
def __repr__(self):
112+
out = "NamedSignal(\n"
113+
out += repr(np.array(self)) # NamedSignal -> array
114+
if self.signal_labels is not None:
115+
out += f",\nsignal_labels={self.signal_labels}"
116+
if self.trace_labels is not None:
117+
out += f",\ntrace_labels={self.trace_labels}"
118+
out += "\n)"
119+
return out
120+
111121

112122
class InputOutputSystem():
113123
"""Base class for input/output systems.

control/tests/namedio_test.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,3 +363,19 @@ def test_negative_system_spec():
363363
np.testing.assert_allclose(negfbk_negsig.B, negfbk_negsys.B)
364364
np.testing.assert_allclose(negfbk_negsig.C, negfbk_negsys.C)
365365
np.testing.assert_allclose(negfbk_negsig.D, negfbk_negsys.D)
366+
367+
368+
# Named signal representations
369+
def test_named_signal_repr():
370+
from numpy import array
371+
from ..iosys import NamedSignal
372+
sys = ct.rss(
373+
states=2, inputs=['u1', 'u2'], outputs=['y1', 'y2'],
374+
state_prefix='xi')
375+
resp = sys.step_response(np.linspace(0, 1, 3))
376+
377+
for signal in ['inputs', 'outputs', 'states']:
378+
sig_orig = getattr(resp, signal)
379+
sig_eval = eval(repr(sig_orig))
380+
assert sig_eval.signal_labels == sig_orig.signal_labels
381+
assert sig_eval.trace_labels == sig_orig.trace_labels

0 commit comments

Comments
 (0)