ENIF Plot
# Enif plot configuration generated on Fri Oct 29 11:32:40 2004
# File: /u/emme2/enif/conf/aggdeslin.e2p
#
# String Name: name of plot configuration (tr,subst)
Name = Display aggregated matrix expression
# Text Description: description of plot configuration (tr,subst)
Description = \
Display of aggregated desire lines - a proof-of-concept type implementation
\
This plot configuration tries to provide a "proof of concept" implementation of a plot which automatically aggregates a a matrix expression according to a zone group ensemble and displays the group-to-group demand as desire lines.\
\
The groups are represented (simplistically) as either the first or the last zone in the group\
of the representative ensemble. By default, the representative ensemble is the same\
as the aggregation ensemble. If using explicit representatives, make sure that each\
group of the representative ensemble contains only one zone which belongs to the corresponding group of the aggregation ensemble. All non-representative zones must be in a group for which the correponding aggregation group is empty.\
\
Note that if any change is made in the ensembles or the first/last parameter. it is necessary to reload the network in order to get the correct representation on screen.\
\
Note that the highest used zone group number in the ensembles used for aggregation and representation must not exceed the square root of the number of generic elements configured in your preference file. If necessary, adjust the number of generic network element in the network tab of the preferences.\
\
The implementation is essentially based on the following ideas:\
\
1) A local configurable attribute lca_repzone which computes the representative zone of a group to be either the first or last zone in the group, using the "first" or "last" aggregation operators.\
\
2) A local configurable attribute lca_aggvals which is aggregating the matrix expression to an array of generic elements which represent the group-to-group matrix.\
\
3) The matrix value mapper then accesses the aggregated values using the Pgen() intrinsic pointer function and displays them for those zones only which are the representatives of their respective zone groups\
\
\
This configuration is just a proof of concept which shows the mechanisms that can be used to implement matrix aggregation in Enif plots. It has not been tested - so any use is at your own risk!\
\
Heinz Spiess, 2004-10-29\
# Flags Flags: plot configuration flags
Flags = 0x2
# String Caption: caption that appears on window bar (tr,subst)
Caption = Display aggregated matrix expression
# Box FullViewAdjust: viewport relative box for mapping full view bounding box
FullViewAdjust = 0;0;0;0
# String Active: name of currently active mapper
Active = Aggregate matrix
[Configurable attribute list]
# String Name: name of attribute configurations (tr)
Name = q
# String IncomingGroups: regular expression to filter incoming group signals
IncomingGroups = .
# String OutgoingGroups: regular expression to filter outgoing group signals
OutgoingGroups = .
[Configurable attribute]
# String Name: configurable attribute name
Name = lca_maxgroup
# Text Description: description of configurable attribute (tr)
Description =
# Flags Flags: bit pattern containing object flags
Flags = 0x0
# String ExpressionType: network element type of expression
ExpressionType = nodes
# Expression Expression: expression for computing attribute values (tr,node,string)
Expression = int(sqrt(number(subst("%%"))-2))
# Selector Selector: selector used to compute attribute values (tr,node,unbuffered)
Selector =
# String AggregationPointer: pointer from expression to result element
AggregationPointer = Pconst
# String AggregationOperator: aggregation operator for computing result value
AggregationOperator = max
# Integer Decimals: number of decimals for default formatting
Decimals = 7
# Float DefaultValue: default value
DefaultValue = 0
# String DefaultString: default string used to display instead of default value
DefaultString =
[Configurable attribute]
# String Name: configurable attribute name
Name = lca_aggens
# Text Description: description of configurable attribute (tr)
Description =
# Flags Flags: bit pattern containing object flags
Flags = 0x1
# String ExpressionType: network element type of expression
ExpressionType = zones
# Expression Expression: expression for computing attribute values (tr,zone,string)
Expression : /ZoneGroupEnsemble
Expression = ga
# Selector Selector: selector used to compute attribute values (tr,zone,unbuffered)
Selector =
# String AggregationPointer: pointer from expression to result element
AggregationPointer =
# String AggregationOperator: aggregation operator for computing result value
AggregationOperator =
# Integer Decimals: number of decimals for default formatting
Decimals = 7
# Float DefaultValue: default value
DefaultValue = 0
# String DefaultString: default string used to display instead of default value
DefaultString =
[Configurable attribute]
# String Name: configurable attribute name
Name = lca_repens
# Text Description: description of configurable attribute (tr)
Description = ensemble containing zone group representatives
# Flags Flags: bit pattern containing object flags
Flags = 0x1
# String ExpressionType: network element type of expression
ExpressionType = zones
# Expression Expression: expression for computing attribute values (tr,zone,string)
Expression : @RepresentativeEnsemble
Expression = ga
# Selector Selector: selector used to compute attribute values (tr,zone,unbuffered)
Selector =
# String AggregationPointer: pointer from expression to result element
AggregationPointer =
# String AggregationOperator: aggregation operator for computing result value
AggregationOperator =
# Integer Decimals: number of decimals for default formatting
Decimals = 7
# Float DefaultValue: default value
DefaultValue = 0
# String DefaultString: default string used to display instead of default value
DefaultString =
[Configurable attribute]
# String Name: configurable attribute name
Name = lca_repzone
# Text Description: description of configurable attribute (tr)
Description = representative zone of group
# String ExpressionType: network element type of expression
ExpressionType = zones
# Expression Expression: expression for computing attribute values (tr,zone,string,max. 2 values)
Expression : //@Recompute
Expression = i,lca_repens+1
# String AggregationPointer: pointer from expression to result element
AggregationPointer = Pgen
# String AggregationOperator: aggregation operator for computing result value
AggregationOperator : @Representative/Representative
AggregationOperator[] = last
AggregationOperator[] = first
AggregationOperator[] = last
[Configurable attribute]
# String Name: configurable attribute name
Name = lca_aggvals
# Flags Flags: bit pattern containing object flags
Flags = 0x1
# String ExpressionType: network element type of expression
ExpressionType = O-D pairs
# Expression Expression: expression for computing attribute values (tr,o-d,string,max. 2 values)
Expression : /AggregationExpression/UpdateAggregation
Expression = mf1,Pp->Pi->(ga)*lca_maxgroup+Pq->Pi->(ga)+1
# String AggregationPointer: pointer from expression to result element
AggregationPointer = Pgen
# String AggregationOperator: aggregation operator for computing result value
AggregationOperator = +
[Background]
[Link base]
# Flags Flags: bit pattern containing mapper flags
Flags = 0xbc00000
# Float Offset: link offset (pixels)
Offset = 0
# Selector LinkSelector: expression for link selection [,link iterator] (tr,link)
LinkSelector = [no connectors] not(isConnector)
[Node box]
# Flags Flags: bit pattern containing mapper flags
Flags = 0xbc00000
# Float NodeBoxWidth: width of node box in pixels
NodeBoxWidth = 6
# Float NodeBoxHeight: height of node box in pixels
NodeBoxHeight = 6
# Selector NodeSelector: expression for node selection [,node iterator] (tr,node)
NodeSelector = isZone
# Bool NodeBoxes: display rectangular node boxes
NodeBoxes = 1
# Bool NodeNumbers: display node numbers in node box
NodeNumbers = 0
# Float YOffset: vertical offset of node box
YOffset = 0
# Stylus Stylus: stylus for node box outline, fill and text properties
Stylus : Stylus
Stylus[] = 0x20000000 0x01ff0000 0x00000000 0x20
Stylus[] = 0x20000000 0x0100ff00 0x00000000 0x0b
Stylus[] = 0x20000000 0x010000ff 0x00000000 0x08
Stylus[] = 0x20000000 0x0100ffff 0x00000000 0x3e
Stylus[] = 0x20000000 0x01ff00ff 0x00000000 0x16
Stylus[] = 0x20000000 0x01ffff00 0x00000000 0x15
Stylus[] = 0x20000000 0x01ff7f00 0x00000000 0x11
Stylus[] = 0x20000000 0x017f8000 0x00000000 0x1b
Stylus[] = 0x20000000 0x01008000 0x00000000 0x1e
Stylus[] = 0x20000000 0x01000080 0x00000000 0x16
Stylus[] = 0x20000000 0x018c00d3 0x00000000 0x0a
Stylus[] = 0x20000000 0x01ff008c 0x00000000 0x18
Stylus[] = 0x20000000 0x01545454 0x00000000 0x12
Stylus[] = 0x20000000 0x01ababab 0x00000000 0x16
# Expression StylusIndex: node expression for stylus index (tr,node)
StylusIndex : /ZoneGroupEnsemble
StylusIndex = ga
# Expression NodeValue: expression for node value (tr,node,string,max. 6 values)
NodeValue =
[Matrix value]
# Bool ShowValueStrings: display matrix values numerically on o-d bars
ShowValueStrings = 1
# Bool Intrazonals: display intrazonal values as circles
Intrazonals = 1
# Float HeadOffset: arrowhead offset (pixels)
HeadOffset = -0.01
# Float TailOffset: arrow tail offset (pixels)
TailOffset = 14
# Float Scale: value scale for proportional bars (units/pixel)
Scale : Scale/Scale/AutoScale
Scale = 120
# Stylus Stylus: stylus for bar outline, fill and text properties
Stylus : Stylus
Stylus[] = 0x20000000 0x01ff0000 0x00000000 0x20
Stylus[] = 0x20000000 0x0100ff00 0x00000000 0x0b
Stylus[] = 0x20000000 0x010000ff 0x00000000 0x08
Stylus[] = 0x20000000 0x0100ffff 0x00000000 0x3e
Stylus[] = 0x20000000 0x01ff00ff 0x00000000 0x16
Stylus[] = 0x20000000 0x01ffff00 0x00000000 0x15
Stylus[] = 0x20000000 0x01ff7f00 0x00000000 0x11
Stylus[] = 0x20000000 0x017f8000 0x00000000 0x1b
Stylus[] = 0x20000000 0x01008000 0x00000000 0x1e
Stylus[] = 0x20000000 0x01000080 0x00000000 0x16
Stylus[] = 0x20000000 0x018c00d3 0x00000000 0x0a
Stylus[] = 0x20000000 0x01ff008c 0x00000000 0x18
Stylus[] = 0x20000000 0x01545454 0x00000000 0x12
Stylus[] = 0x20000000 0x01ababab 0x00000000 0x16
# Float TextSize: text size for matrix values
TextSize = 12
# Expression MatrixValue: expression for matrix value (tr,o-d)
MatrixValue = Pgen(Pp->Pi->lca_aggens*lca_maxgroup+Pq->Pi->lca_aggens+1)->lca_aggvals
# Selector OriginSelector: expression for origin selection [,origin iterator] (tr,orig.)
OriginSelector = p==Pgen(Pi->lca_aggens+1)->lca_repzone,-p
# Selector DestinationSelector: expression for destination selection [,destination iterator] (tr,dest.)
DestinationSelector = q==Pgen(Pi->lca_aggens+1)->lca_repzone,-q
# Expression StylusIndex: Expression for stylus index (tr,o-d)
StylusIndex = Pq->Pi->lca_aggens
[Parameter conversion]
# Flags Flags: bit pattern containing mapper flags
Flags = 0xbfb0000
# String SA: string parameter SA (subst)
SA : /MatrixToAggregate
SA = mf1
# String SB: string parameter SB (subst)
SB : /ZoneGroupEnsemble
SB = ga
# String SC: string parameter SC (subst)
SC : /Representative
SC[] = last
SC[] = first
SC[] = last
# Expression Expression: expression for parameter conversion (tr,string,max. 12 values)
Expression = SA+",Pp->Pi->("+SB+")*lca_maxgroup+Pq->Pi->("+SB+")+1"
# String SR: string result
SR : AggregationExpression
SR = mf1,Pp->Pi->(ga)*lca_maxgroup+Pq->Pi->(ga)+1
# Bool SingleShotTimer: if set, timer stops after one signal
SingleShotTimer = 1
# Float Timer: timer interval in seconds (0=inactive)
Timer : //Representative
Timer = 0
# Click TimerSignal: parameter activated by timer signal
TimerSignal : UpdateAggregation/
[Configurable control]
# String Name: mapper name that appears on mapper control tab (tr,subst)
Name = Aggregate matrix
# String Layout: layout parameters (tr)
Layout[] = Expression0;Expression;O-D value:;matrix or OD expression to be aggregated and displayed;0;0;4;4;O-D pairs;1;0
Layout[] = String0;String combo;Representative:;zone in group which graphically represents the group (reload network to take effect);3;3;1;1;;
Layout[] = Float0;Scale;Scale:;Scale for aggregated desire lines;0;0;1;1;;;1
Layout[] = Expression1;Expression;Aggr. ensemble:;Zone group ensemble used for aggregation;2;2;4;4;zones;1;0
Layout[] = Expression2;Expression;Repr. ensemble:;Ensemble containing representative zones (def. = aggr. ensemble);3;3;4;4;zones;1;0
Layout[] = Bool0;Checkbox;When changing any parameters below you need to reload the network!;;2;2;0;1;;
Layout[] = Stylus0;Stylus;Stylus:;;1;1;1;1;;
# Bool Bool0
Bool0 = 1
# Float Float0: Scale for aggregated desire lines
Float0 : Scale
Float0 = 120
# String String0: zone in group which graphically represents the group (reload network to take effect)
String0 : (0x20) Representative/
String0[] = last
String0[] = first
String0[] = last
# String String1: string parameter String1
String1 : ZoneGroupEnsemble
String1 = ga
# Expression Expression0: matrix or OD expression to be aggregated and displayed (tr,o-d)
Expression0 : MatrixToAggregate
Expression0 = mf1
# Expression Expression1: Zone group ensemble used for aggregation (tr,zone)
Expression1 : ZoneGroupEnsemble
Expression1 = ga
# Expression Expression2: Ensemble containing representative zones (def. = aggr. ensemble) (tr,zone)
Expression2 : @RepresentativeEnsemble/ZoneGroupEnsemble
Expression2 = ga
# Stylus Stylus0
Stylus0 : Stylus
Stylus0[] = 0x20000000 0x01ff0000 0x00000000 0x20
Stylus0[] = 0x20000000 0x0100ff00 0x00000000 0x0b
Stylus0[] = 0x20000000 0x010000ff 0x00000000 0x08
Stylus0[] = 0x20000000 0x0100ffff 0x00000000 0x3e
Stylus0[] = 0x20000000 0x01ff00ff 0x00000000 0x16
Stylus0[] = 0x20000000 0x01ffff00 0x00000000 0x15
Stylus0[] = 0x20000000 0x01ff7f00 0x00000000 0x11
Stylus0[] = 0x20000000 0x017f8000 0x00000000 0x1b
Stylus0[] = 0x20000000 0x01008000 0x00000000 0x1e
Stylus0[] = 0x20000000 0x01000080 0x00000000 0x16
Stylus0[] = 0x20000000 0x018c00d3 0x00000000 0x0a
Stylus0[] = 0x20000000 0x01ff008c 0x00000000 0x18
Stylus0[] = 0x20000000 0x01545454 0x00000000 0x12
Stylus0[] = 0x20000000 0x01ababab 0x00000000 0x16
# Stylus Stylus1: stylus parameter Stylus1
Stylus1 = 0x00000000 0x00000000 0x00000000 0x00
# Stylus Stylus2: stylus parameter Stylus2
Stylus2 = 0x00000000 0x00000000 0x00000000 0x00
# Stylus Stylus3: stylus parameter Stylus3
Stylus3 = 0x00000000 0x00000000 0x00000000 0x00
# Stylus Stylus4: stylus parameter Stylus4
Stylus4 = 0x00000000 0x00000000 0x00000000 0x00
# Box BBox0: bounding box parameter BBox0
BBox0 = 1;1;0;0
# Box BBox1: bounding box parameter BBox1
BBox1 = 1;1;0;0
# Box BBox2: bounding box parameter BBox2
BBox2 = 1;1;0;0
# Box BBox3: bounding box parameter BBox3
BBox3 = 1;1;0;0
# Box BBox4: bounding box parameter BBox4
BBox4 = 1;1;0;0
# Click UpdatingFloat0: aux. parameter to catch update signal from Float0
UpdatingFloat0 : AutoScale/