You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The framework shall have an option to emit an algorithm's configuration schema in human-readable form.
979
979
980
-
- See :numref:`ch_conceptual_design/user_configuration:Semantic structure of the configuration`
980
+
- See :numref:`ch_subsystem_design/configuration:Semantic structure of the configuration`
981
981
982
982
.. req:: Eager validation of algorithm configuration
983
983
:collapse:
@@ -990,7 +990,7 @@ Supporting requirements
990
990
991
991
The framework shall validate the configuration of each algorithm before that algorithm processes data.
992
992
993
-
- See :numref:`ch_conceptual_design/user_configuration:Mechanics of configuration specification`, :numref:`ch_conceptual_design/user_configuration:Semantic structure of the configuration`.
993
+
- See :numref:`ch_subsystem_design/configuration:Mechanics of Configuration Specification`, :numref:`ch_subsystem_design/configuration:Semantic structure of the configuration`.
994
994
995
995
.. req:: I/O backend for ROOT
996
996
:collapse:
@@ -1143,7 +1143,7 @@ Supporting requirements
1143
1143
1144
1144
The framework shall provide an option to persist the configuration of each framework execution to the output of that execution.
1145
1145
1146
-
- See :numref:`ch_conceptual_design/user_configuration:Mechanics of configuration specification`
1146
+
- See :numref:`ch_subsystem_design/configuration:Mechanics of Configuration Specification`
1147
1147
1148
1148
.. req:: Independence from unique hardware characteristics
1149
1149
:collapse:
@@ -1166,7 +1166,7 @@ Supporting requirements
1166
1166
1167
1167
The framework shall provide a command-line interface that allows the setting of configuration parameters.
1168
1168
1169
-
- See :numref:`ch_conceptual_design/user_configuration:Mechanics of configuration specification`
1169
+
- See :numref:`ch_subsystem_design/configuration:Mechanics of Configuration Specification`
1170
1170
1171
1171
.. req:: Support local configuration changes
1172
1172
:collapse:
@@ -1177,7 +1177,7 @@ Supporting requirements
1177
1177
1178
1178
The framework shall support the use of local configuration changes with respect to a separate complete configuration to modify the execution of a program.
1179
1179
1180
-
- See :numref:`ch_conceptual_design/user_configuration:Mechanics of configuration specification`
1180
+
- See :numref:`ch_subsystem_design/configuration:Mechanics of Configuration Specification`
1181
1181
1182
1182
.. req:: Configuration tracing
1183
1183
:collapse:
@@ -1188,7 +1188,7 @@ Supporting requirements
1188
1188
1189
1189
The framework configuration system shall have an option to provide diagnostic information for an evaluated configuration, including origins of final parameter values.
1190
1190
1191
-
- See :numref:`ch_conceptual_design/user_configuration:Mechanics of configuration specification`
1191
+
- See :numref:`ch_subsystem_design/configuration:Mechanics of Configuration Specification`
1192
1192
1193
1193
.. req:: Configuration language single point of maintenance
1194
1194
:collapse:
@@ -1200,7 +1200,7 @@ Supporting requirements
1200
1200
1201
1201
The language used for configuring a framework program shall include features for maintaining hierarchical configurations from a single point of maintenance.
1202
1202
1203
-
- See :numref:`ch_conceptual_design/user_configuration:Mechanics of configuration specification`
1203
+
- See :numref:`ch_subsystem_design/configuration:Mechanics of Configuration Specification`
1204
1204
1205
1205
.. req:: Enable identification of data sets containing chunked data products
Copy file name to clipboardExpand all lines: doc/ch_conceptual_design/algorithms.rst
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -74,7 +74,7 @@ When member functions are required, the qualifier :cpp:`const` should be specifi
74
74
75
75
.. rubric:: Footnotes
76
76
77
-
.. [#f1] In C++, the function signature corresponds to the function *declaration* [CppFunctionDecl]_, for which the type :cpp:`P` and :cpp:`P const` are treated identically by the compiler.
77
+
.. [#f1] In C++, the function signature corresponds to the function *declaration* [Cpp-Function]_, for which the type :cpp:`P` and :cpp:`P const` are treated identically by the compiler.
78
78
However, for the function implementation or *definition*, algorithm authors are encouraged to use :cpp:`P const` to help guarantee the immutability of data.
79
79
.. [#f2] Phlex permits the registration of member functions that do not use the :cpp:`const` qualifier.
80
80
However, using such functions is highly discouraged as it indicates a class instance is modifiable during member-function execution, which is at odds with Phlex's functional-programming paradigm.
@@ -83,4 +83,4 @@ When member functions are required, the qualifier :cpp:`const` should be specifi
Copy file name to clipboardExpand all lines: doc/ch_conceptual_design/hofs/partitioned_folds.rst
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -54,7 +54,7 @@ where
54
54
Partitions
55
55
^^^^^^^^^^
56
56
57
-
Factorizing a set of data into non-overlapping subsets that collectively span the entire set is called creating a set *partition* [Wiki-partition]_.
57
+
Factorizing a set of data into non-overlapping subsets that collectively span the entire set is called creating a set *partition* [Wiki-Partition]_.
58
58
Each subset of the partition is called a *cell*.
59
59
In the above example, the role of the :math:`\textit{into\_spills}` operation is to partition the input sequence into `Spill`\ s so that there is one fold result per `Spill`.
60
60
In general, however, the partitioning function is of the form :math:`\textit{part}: \{\iset{c}\} \rightarrow\mathbb{P}(\iset{c})`, where:
@@ -157,4 +157,4 @@ Possible solutions include using :cpp:`std::atomic_ref<double>` [#fatomicref]_,
As discussed in :numref:`ch_preliminaries/functional_programming:Sequences of Data and Higher-Order Functions`, the opposite of a fold is an *unfold*, where a sequence of objects is generated from a single object.
16
-
The example given in :numref:`ch_preliminaries/data_flow:Data Flow with Sequences` is :math:`\textit{iota}`, which generates a sequence of contiguous integers given one input number:
16
+
The example given in :numref:`ch_preliminaries/data_flow:Data Flow with Sequences` is :math:`\text{iota}`, which generates a sequence of contiguous integers given one input number:
17
17
18
18
.. math::
19
19
20
-
c = [1,\ 2,\ 3,\ \dots,\ n] = \textit{iota}\ n = \unfold{\gt0}{\textit{decrement}}\ n
20
+
c = [1,\ 2,\ 3,\ \dots,\ n] = \text{iota}\ n = \unfold{greater\_than\_zero}{decrement}\ n
21
21
22
-
where :math:`\textit{iota}` has been expressed in terms of an unfold HOF that receives the predicate :math:`\gt0` and a generator called :math:`\textit{decrement}`.
22
+
where :math:`\text{iota}` has been expressed in terms of an unfold HOF that receives the predicate :math:`greater\_than\_zero` and a generator called :math:`decrement`.
23
23
24
-
The unfold operation is recursively called until the predicate returns `false`, whereby it emits an empty list :math:`[\ ]`:
24
+
The unfold operation is repeatedly called until the predicate returns `false`, whereby it emits an empty list :math:`[\ ]`:
where the user supplies the :py:`predicate` (:math:`p`) and :py:`generator` (:math:`\textit{gen}`) algorithms.
@@ -66,7 +66,7 @@ Next Type
66
66
67
67
The signatures for the operators :math:`p` and :math:`\textit{gen}` have the curious type :math:`N`, which seems unrelated to the input sequence :math:`d`, whose elements are of type :math:`D`, or the output sequence :math:`c`, whose elements are of type :math:`C`.
68
68
The type :math:`N` refers to the type of the *next* value on which the unfold operates.
69
-
In the :math:`\textit{iota}` example above, the type :math:`N` is the same as the input argument :math:`n`, which is an integer, and it is the same as that of the output sequence elements, which are also integers.
69
+
In the :math:`\text{iota}` example above, the type :math:`N` is the same as the input argument :math:`n`, which is an integer, and it is the same as that of the output sequence elements, which are also integers.
70
70
71
71
The unfold in :numref:`workflow`, however, demonstrates an example where :math:`N` is equal to neither :math:`D` nor :math:`C`.
72
72
Whereas the input type :math:`D` corresponds to the :cpp:`"SimDepos"` data product in each `Spill`, the output type :math:`C` represents the :cpp:`"Waveforms"` data products produced for each `APA`.
The data products corresponding to windows :math:`a` through :math:`m` are grouped into pairs and presented to the :cpp:`make_tracks` algorithm, which has the signature :math:`\text{Hits} \times\text{Hits} \rightarrow\text{Tracks}`.
35
-
There are, at most, :math:`n-1` unique pairs that can be presented to the function :cpp:`make_tracks` such that:
34
+
The data products corresponding to windows :math:`a` through :math:`m` are grouped into pairs and presented to an algorithm :math:`make\_tracks'`, which has the signature :math:`\text{Hits} \times\text{Hits} \rightarrow\text{Tracks}`.
35
+
There are, at most, :math:`n-1` unique pairs that can be presented to the function :math:`make\_tracks'` such that:
where :math:`\boldsymbol{+}` is the list-concatenation operator, and :math:`()` is the unit element.
63
-
Phlex supports the function signature whose second argument is an optional type :math:`\opt{X}`; the prime following the function name (e.g. :math:`f'`) is a reminder that the second argument is an optional type.
63
+
where :math:`label` returns the value of `APA`, :math:`\boldsymbol{+}` is the list-concatenation operator, and :math:`()` is the null value.
64
+
Phlex supports the function signature whose second argument is an optional type :math:`\opt{X}`.
The :cpp:`return_type` must model the created data-product type described in :numref:`ch_conceptual_design/algorithms:Return Types`.
79
-
The algorithm :math:`f'` may also create multiple data products by returning a :cpp:`std::tuple<T1, ..., Tn>` where each of the types :cpp:`T1, ..., Tn` models a created data-product type.
80
+
The algorithm :math:`f` may also create multiple data products by returning a :cpp:`std::tuple<T1, ..., Tn>` where each of the types :cpp:`T1, ..., Tn` models a created data-product type.
80
81
81
-
The second argument :cpp:`P2*` indicates that an optional type is passed to the algorithm.
82
-
It is permitted to use resources (i.e. :cpp:`Rm...`) in the function :math:`f'`.
82
+
The second argument :cpp:`Opt<P2>` indicates that an optional type is passed to the algorithm.
83
+
It is permitted to use resources (i.e. :cpp:`Rm...`) in the function :math:`f`.
83
84
The data-product set identifers of :cpp:`P1` and :cpp:`P2` are used to determine whether two data-products reside in adjacent data-product sets.
84
85
85
86
Registration Interface
@@ -91,15 +92,16 @@ The :math:`\textit{window(make\_tracks)}` node in :numref:`workflow` would be re
bool are_adjacent(id const& left, id const& right) { ... }
96
98
97
99
PHLEX_REGISTER_ALGORITHMS(config)
98
100
{
99
101
products("GoodTracks") =
100
102
window(
101
103
"track_maker", // <= Node name for framework
102
-
make_tracks, // <= Window algorithm (f')
104
+
make_tracks, // <= Window algorithm (f)
103
105
are_adjacent // <= Adjacency criterion
104
106
"APA", // <= Output data-product category
105
107
concurrency::unlimited // <= Allowed concurrency
@@ -108,7 +110,7 @@ The :math:`\textit{window(make\_tracks)}` node in :numref:`workflow` would be re
108
110
}
109
111
110
112
Note that the second input parameter for :cpp:`make_tracks` is an optional type.
111
-
The type :cpp:`phlex::id` is a putative type that enables the comparison of data-product set identifiers for establishing adjacency.
113
+
The type :cpp:`id` is a metadata type (possibly defined by the experiment) that enables the comparison of data-product identifiers for establishing adjacency.
0 commit comments