12
12
13
13
__all__ = ['issiso' , 'timebase' , 'common_timebase' , 'timebaseEqual' ,
14
14
'isdtime' , 'isctime' ]
15
+
15
16
# Define module default parameter values
16
17
_namedio_defaults = {
17
18
'namedio.state_name_delim' : '_' ,
20
21
'namedio.linearized_system_name_prefix' : '' ,
21
22
'namedio.linearized_system_name_suffix' : '$linearized' ,
22
23
'namedio.sampled_system_name_prefix' : '' ,
23
- 'namedio.sampled_system_name_suffix' : '$sampled'
24
+ 'namedio.sampled_system_name_suffix' : '$sampled' ,
25
+ 'namedio.converted_system_name_prefix' : '' ,
26
+ 'namedio.converted_system_name_suffix' : '$converted' ,
24
27
}
25
28
26
29
@@ -49,11 +52,15 @@ def __init__(
49
52
_idCounter = 0 # Counter for creating generic system name
50
53
51
54
# Return system name
52
- def _name_or_default (self , name = None ):
55
+ def _name_or_default (self , name = None , prefix_suffix_name = None ):
53
56
if name is None :
54
57
name = "sys[{}]" .format (NamedIOSystem ._idCounter )
55
58
NamedIOSystem ._idCounter += 1
56
- return name
59
+ prefix = "" if prefix_suffix_name is None else config .defaults [
60
+ 'namedio.' + prefix_suffix_name + '_system_name_prefix' ]
61
+ suffix = "" if prefix_suffix_name is None else config .defaults [
62
+ 'namedio.' + prefix_suffix_name + '_system_name_suffix' ]
63
+ return prefix + name + suffix
57
64
58
65
# Check if system name is generic
59
66
def _generic_name_check (self ):
@@ -99,16 +106,26 @@ def __str__(self):
99
106
def _find_signal (self , name , sigdict ):
100
107
return sigdict .get (name , None )
101
108
102
- def _copy_names (self , sys ):
109
+ def _copy_names (self , sys , prefix = "" , suffix = "" , prefix_suffix_name = None ):
103
110
"""copy the signal and system name of sys. Name is given as a keyword
104
111
in case a specific name (e.g. append 'linearized') is desired. """
105
- self .name = sys .name
112
+ # Figure out the system name and assign it
113
+ if prefix == "" and prefix_suffix_name is not None :
114
+ prefix = config .defaults [
115
+ 'namedio.' + prefix_suffix_name + '_system_name_prefix' ]
116
+ if suffix == "" and prefix_suffix_name is not None :
117
+ suffix = config .defaults [
118
+ 'namedio.' + prefix_suffix_name + '_system_name_suffix' ]
119
+ self .name = prefix + sys .name + suffix
120
+
121
+ # Name the inputs, outputs, and states
106
122
self .ninputs , self .input_index = \
107
123
sys .ninputs , sys .input_index .copy ()
108
124
self .noutputs , self .output_index = \
109
125
sys .noutputs , sys .output_index .copy ()
110
- self .nstates , self .state_index = \
111
- sys .nstates , sys .state_index .copy ()
126
+ if sys .nstates : # only copy for state space systems
127
+ self .nstates , self .state_index = \
128
+ sys .nstates , sys .state_index .copy ()
112
129
113
130
def copy (self , name = None , use_prefix_suffix = True ):
114
131
"""Make a copy of an input/output system
@@ -128,10 +145,8 @@ def copy(self, name=None, use_prefix_suffix=True):
128
145
# Update the system name
129
146
if name is None and use_prefix_suffix :
130
147
# Get the default prefix and suffix to use
131
- dup_prefix = config .defaults ['namedio.duplicate_system_name_prefix' ]
132
- dup_suffix = config .defaults ['namedio.duplicate_system_name_suffix' ]
133
148
newsys .name = self ._name_or_default (
134
- dup_prefix + self .name + dup_suffix )
149
+ self .name , prefix_suffix_name = 'duplicate' )
135
150
else :
136
151
newsys .name = self ._name_or_default (name )
137
152
0 commit comments