bpp-phyl3
3.0.0
|
Data flow node representing a Frequencies Set configured with parameter values. More...
#include <Bpp/Phyl/Likelihood/DataFlow/Simplex_DF.h>
Public Types | |
using | Self = ConfiguredSimplex |
using | Target = Simplex |
Public Member Functions | |
ConfiguredSimplex (const Context &context, NodeRefVec &&deps, std::unique_ptr< Simplex > &&simplex) | |
~ConfiguredSimplex () | |
ConfiguredSimplex * | clone () const |
std::string | description () const final |
Node pretty name (default = type name). More... | |
std::string | debugInfo () const final |
Node debug info (default = ""): user defined detailed info for DF graph debug. More... | |
std::string | color () const final |
bool | compareAdditionalArguments (const Node_DF &other) const |
Compare node-specific configuration to another. More... | |
std::size_t | hashAdditionalArguments () const |
Return the hash of node-specific configuration. More... | |
NodeRef | recreate (Context &c, NodeRefVec &&deps) final |
Recreate the node with different dependencies. More... | |
const ConfiguredParameter & | getConfiguredParameter (const std::string &name) |
const const Simplex * & | targetValue () |
Access value, recompute if needed. More... | |
const const Simplex * & | accessValueConst () const noexcept |
Raw value access (const). More... | |
ValueRef< const Simplex * > | deriveAsValue (Context &c, const Node_DF &node) |
void | modify (Callable &&modifier, bool makeValid) |
General case for modification of the T object. More... | |
bool | isValid () const noexcept |
std::size_t | nbDependentNodes () const noexcept |
Number of dependent nodes (ie nodes that depend on this) More... | |
const std::vector< Node_DF * > & | dependentNodes () const noexcept |
std::size_t | nbDependencies () const noexcept |
Number of dependencies (ie nodes we depend on) More... | |
const NodeRefVec & | dependencies () const noexcept |
const NodeRef & | dependency (std::size_t i) const noexcept |
virtual std::string | shape () const |
virtual bool | hasNumericalProperty (NumericalProperty prop) const |
Test if the node has the given numerical property. More... | |
virtual NodeRef | derive (Context &c, const Node_DF &node) |
Returns a node computing d(this_node_expression)/d(node_expression). More... | |
void | computeRecursively () |
Compute this node value, recomputing dependencies (transitively) as needed. More... | |
bool | hasParameter (const std::string &name) const override |
const ParameterList & | getParameters () const override |
const Parameter & | parameter (const std::string &name) const override |
const std::shared_ptr< Parameter > & | getParameter (const std::string &name) const |
double | getParameterValue (const std::string &name) const override |
void | setAllParametersValues (const ParameterList ¶meters) override |
void | setParameterValue (const std::string &name, double value) override |
void | setParametersValues (const ParameterList ¶meters) override |
bool | matchParametersValues (const ParameterList ¶meters) override |
void | removeConstraint (const std::string &name) override |
void | setConstraint (const std::string &name, std::shared_ptr< ConstraintInterface > constraint) override |
size_t | getNumberOfParameters () const override |
void | setNamespace (const std::string &prefix) override |
std::string | getNamespace () const override |
std::string | getParameterNameWithoutNamespace (const std::string &name) const override |
virtual void | fireParameterChanged (const ParameterList ¶meters) |
Public Attributes | |
NumericalDerivativeConfiguration | config |
Configuration for numerical derivation of computation nodes using this Simplex. More... | |
Protected Member Functions | |
const Simplex * & | accessValueMutable () noexcept |
void | invalidateRecursively () noexcept |
Invalidate (transitively) dependent nodes from this one. More... | |
void | makeInvalid () noexcept |
void | makeValid () noexcept |
void | resetDependencies_ (NodeRefVec &&dependenciesArg) |
const std::shared_ptr< Parameter > & | getParameter (size_t i) const |
std::shared_ptr< Parameter > & | getParameter (size_t i) |
virtual void | addParameter_ (Parameter *parameter) |
virtual void | addParameters_ (const ParameterList ¶meters) |
virtual void | shareParameter_ (const std::shared_ptr< Parameter > ¶meter) |
virtual void | shareParameters_ (const ParameterList ¶meters) |
virtual void | includeParameters_ (const ParameterList ¶meters) |
virtual void | deleteParameter_ (size_t index) |
virtual void | deleteParameter_ (std::string &name) |
virtual void | deleteParameters_ (const std::vector< std::string > &names) |
void | resetParameters_ () |
Parameter & | getParameter_ (const std::string &name) |
Parameter & | getParameter_ (size_t index) |
const Parameter & | getParameter_ (size_t index) const |
Parameter & | getParameterWithNamespace_ (const std::string &name) |
const Parameter & | getParameterWithNamespace_ (const std::string &name) const |
ParameterList & | getParameters_ () override |
Private Member Functions | |
void | compute () |
Computation implementation. More... | |
void | registerNode (Node_DF *n) |
void | unregisterNode (const Node_DF *n) |
Private Attributes | |
std::unique_ptr< Simplex > | simplex_ |
const Simplex * | value_ |
NodeRefVec | dependencyNodes_ {} |
std::vector< Node_DF * > | dependentNodes_ {} |
bool | isValid_ {false} |
ParameterList | parameters_ |
std::string | prefix_ |
Data flow node representing a Frequencies Set configured with parameter values.
This class wraps a bpp::Simplex as a data flow node.
It depends on Value<double> nodes (one for each parameter declared in the freq set). It provides a dummy value representing the "frequencies set configured by its parameters".
The dummy value is implemented as a pointer to the internal frequencies set for simplicity.
Definition at line 35 of file Simplex_DF.h.
Definition at line 43 of file Simplex_DF.h.
Definition at line 44 of file Simplex_DF.h.
bpp::ConfiguredSimplex::ConfiguredSimplex | ( | const Context & | context, |
NodeRefVec && | deps, | ||
std::unique_ptr< Simplex > && | simplex | ||
) |
Definition at line 16 of file Simplex_DF.cpp.
References bpp::Node_DF::dependencies(), and bpp::AbstractParametrizable::shareParameter_().
|
default |
|
inlinenoexceptinherited |
Raw value access (const).
Value is not guaranteed to be valid (no recomputation).
Definition at line 385 of file DataFlow.h.
|
inlineprotectednoexceptinherited |
Raw value access (mutable). Should only be used by subclasses to implement compute().
Definition at line 416 of file DataFlow.h.
|
inlinevirtual |
Implements bpp::AbstractParametrizable.
Definition at line 49 of file Simplex_DF.h.
|
inlinefinalvirtual |
Reimplemented from bpp::Node_DF.
Definition at line 56 of file Simplex_DF.h.
|
virtual |
Compare node-specific configuration to another.
Required by Context for merging. It must compare everything in the node configuration except its type and dependencies. See DataFlowNumeric for examples. The default returns false, so nodes are considered different and not merged.
Reimplemented from bpp::Node_DF.
Definition at line 39 of file Simplex_DF.cpp.
References simplex_.
|
inlineprivatevirtual |
Computation implementation.
This functions is defined by derived classes. It should compute the new node value from dependency node values. When called, dependency node are guaranteed to have valid values.
This function is private to prevent use for invalid dependencies. Higher level functions like computeRecursively call it while ensuring dependency validity.
Compute has access to dependencies as a NodeRefVec (base Node_DF classes only). The recommended usage is to check dependency types at Node construction. Then use static_cast to access derived classes efficiently from the NodeRefVec. See DataFlowNumeric.h for examples.
Implements bpp::Node_DF.
Definition at line 76 of file Simplex_DF.h.
References bpp::AbstractParametrizable::getParameters(), and simplex_.
|
inherited |
Compute this node value, recomputing dependencies (transitively) as needed.
Not thread safe !
Definition at line 183 of file DataFlow.cpp.
References bpp::Node_DF::isValid().
Referenced by bpp::Value< T >::targetValue().
|
finalvirtual |
Node debug info (default = ""): user defined detailed info for DF graph debug.
Reimplemented from bpp::Node_DF.
Definition at line 31 of file Simplex_DF.cpp.
References simplex_, and bpp::to_string().
|
inlinenoexceptinherited |
Definition at line 183 of file DataFlow.h.
References bpp::Node_DF::dependencyNodes_.
Referenced by bpp::CWiseAdd< R, ReductionOf< T > >::compute(), bpp::CombineDeltaShifted< T >::compute(), bpp::CWiseMul< R, ReductionOf< T > >::compute(), bpp::ConfiguredDistribution::ConfiguredDistribution(), bpp::ConfiguredFrequencySet::ConfiguredFrequencySet(), bpp::ConfiguredModel::ConfiguredModel(), ConfiguredSimplex(), bpp::ConfiguredTransitionMatrix::ConfiguredTransitionMatrix(), bpp::CWiseMul< R, std::tuple< T0, T1 > >::derive(), and bpp::CWiseMul< R, ReductionOf< T > >::derive().
|
inlinenoexceptinherited |
Definition at line 185 of file DataFlow.h.
References bpp::Node_DF::dependencyNodes_.
Referenced by bpp::BackwardHmmLikelihood_DF::BackwardHmmLikelihood_DF(), bpp::ForwardHmmLikelihood_DF::build(), bpp::ValueFromConfiguredParameter::color(), bpp::CWiseFill< R, T >::compute(), bpp::CWiseApply< R, T, F >::compute(), bpp::CWiseAdd< R, std::tuple< T0, T1 > >::compute(), bpp::CWiseAdd< R, T >::compute(), bpp::CWiseMul< R, std::tuple< T0, T1 > >::compute(), bpp::CWiseDiv< R, std::tuple< T0, T1 > >::compute(), bpp::SumOfLogarithms< F >::compute(), bpp::CombineDeltaShifted< T >::compute(), bpp::CWiseSub< R, std::tuple< T0, T1 > >::compute(), bpp::CWiseMean< R, ReductionOf< T >, ReductionOf< P > >::compute(), bpp::CWiseMean< R, ReductionOf< T >, P >::compute(), bpp::CWiseNegate< T >::compute(), bpp::CWiseInverse< T >::compute(), bpp::CWiseLog< T >::compute(), bpp::CWiseExp< T >::compute(), bpp::CWiseConstantPow< T >::compute(), bpp::ScalarProduct< R, T0, T1 >::compute(), bpp::LogSumExp< R, T0, T1 >::compute(), bpp::MatrixProduct< R, T0, T1 >::compute(), bpp::ShiftDelta< T >::compute(), bpp::Convert< R, F >::compute(), bpp::Identity< R >::compute(), bpp::ProbabilitiesFromDiscreteDistribution::compute(), bpp::ProbabilityFromDiscreteDistribution::compute(), bpp::CategoryFromDiscreteDistribution::compute(), bpp::FrequenciesFromFrequencySet::compute(), bpp::EquilibriumFrequenciesFromModel::compute(), bpp::TransitionMatrixFromModel::compute(), bpp::TransitionFunctionFromModel::compute(), bpp::ProbabilitiesFromMixedModel::compute(), bpp::ProbabilityFromMixedModel::compute(), bpp::ShiftParameter::compute(), bpp::ValueFromConfiguredParameter::compute(), bpp::FrequenciesFromSimplex::compute(), bpp::EquilibriumFrequenciesFromTransitionMatrix::compute(), bpp::TransitionMatrixFromTransitionMatrix::compute(), bpp::CWisePattern< R >::compute(), bpp::CWiseMatching< R, ReductionOf< T > >::compute(), bpp::CWiseCompound< R, ReductionOf< T > >::compute(), bpp::ConfiguredParameter::compute(), bpp::CombineDeltaShifted< T >::create(), bpp::TransitionMatrixFromModel::debugInfo(), bpp::TransitionFunctionFromModel::debugInfo(), bpp::ValueFromConfiguredParameter::debugInfo(), bpp::CondLikelihood::debugInfo(), bpp::CWiseFill< R, T >::derive(), bpp::CWisePattern< R >::derive(), bpp::CWiseMatching< R, ReductionOf< T > >::derive(), bpp::CWiseCompound< R, ReductionOf< T > >::derive(), bpp::CWiseApply< R, T, F >::derive(), bpp::CWiseAdd< R, std::tuple< T0, T1 > >::derive(), bpp::CWiseSub< R, std::tuple< T0, T1 > >::derive(), bpp::CWiseAdd< R, ReductionOf< T > >::derive(), bpp::CWiseAdd< R, T >::derive(), bpp::CWiseMean< R, ReductionOf< T >, ReductionOf< P > >::derive(), bpp::CWiseMean< R, ReductionOf< T >, P >::derive(), bpp::CWiseMul< R, std::tuple< T0, T1 > >::derive(), bpp::CWiseMul< R, ReductionOf< T > >::derive(), bpp::CWiseDiv< R, std::tuple< T0, T1 > >::derive(), bpp::CWiseNegate< T >::derive(), bpp::CWiseInverse< T >::derive(), bpp::CWiseLog< T >::derive(), bpp::CWiseExp< T >::derive(), bpp::CWiseConstantPow< T >::derive(), bpp::ScalarProduct< R, T0, T1 >::derive(), bpp::SumOfLogarithms< F >::derive(), bpp::LogSumExp< R, T0, T1 >::derive(), bpp::MatrixProduct< R, T0, T1 >::derive(), bpp::ShiftDelta< T >::derive(), bpp::CombineDeltaShifted< T >::derive(), bpp::Convert< R, F >::derive(), bpp::Identity< R >::derive(), bpp::ProbabilitiesFromDiscreteDistribution::derive(), bpp::ProbabilityFromDiscreteDistribution::derive(), bpp::CategoryFromDiscreteDistribution::derive(), bpp::FrequenciesFromFrequencySet::derive(), bpp::EquilibriumFrequenciesFromModel::derive(), bpp::TransitionMatrixFromModel::derive(), bpp::TransitionFunctionFromModel::derive(), bpp::ProbabilitiesFromMixedModel::derive(), bpp::ProbabilityFromMixedModel::derive(), bpp::ShiftParameter::derive(), bpp::ValueFromConfiguredParameter::derive(), bpp::FrequenciesFromSimplex::derive(), bpp::EquilibriumFrequenciesFromTransitionMatrix::derive(), bpp::TransitionMatrixFromTransitionMatrix::derive(), bpp::BackwardHmmLikelihood_DF::derive(), bpp::ConfiguredParameter::derive(), bpp::ValueFromConfiguredParameter::description(), bpp::ConfiguredParameter::getValue(), bpp::ConfiguredParameter::recreate(), bpp::ConfiguredParameter::setValue(), and bpp::writeDotEdge().
|
inlinenoexceptinherited |
Definition at line 175 of file DataFlow.h.
References bpp::Node_DF::dependentNodes_.
Returns a node computing d(this_node_expression)/d(node_expression).
The expression represented by 'node' is considered as a variable. Event if 'node' is a constant value node, d(node)/d(node) == 1. The derivative of a matrix is the matrix of the derivatives. Derivation is undefined by default, and this function will throw an exception. Implementations will usually recursively derive sub-expressions and combine them.
Reimplemented in bpp::ConfiguredParameter, bpp::BackwardHmmLikelihood_DF, bpp::ForwardHmmD2Likelihood_DF, bpp::ForwardHmmDLikelihood_DF, bpp::ForwardHmmLikelihood_DF, bpp::CondLikelihood, bpp::TransitionMatrixFromTransitionMatrix, bpp::EquilibriumFrequenciesFromTransitionMatrix, bpp::FrequenciesFromSimplex, bpp::Sequence_DF, bpp::ValueFromConfiguredParameter, bpp::ShiftParameter, bpp::ProbabilityFromMixedModel, bpp::ProbabilitiesFromMixedModel, bpp::TransitionFunctionFromModel, bpp::TransitionMatrixFromModel, bpp::EquilibriumFrequenciesFromModel, bpp::FrequenciesFromFrequencySet, bpp::CategoryFromDiscreteDistribution, bpp::ProbabilityFromDiscreteDistribution, bpp::ProbabilitiesFromDiscreteDistribution, bpp::Identity< R >, bpp::Convert< R, F >, bpp::NumericMutable< T >, bpp::NumericConstant< T >, bpp::ConstantOne< T >, bpp::ConstantZero< T >, bpp::CombineDeltaShifted< T >, bpp::ShiftDelta< T >, bpp::MatrixProduct< R, T0, T1 >, bpp::LogSumExp< R, T0, T1 >, bpp::SumOfLogarithms< F >, bpp::ScalarProduct< R, T0, T1 >, bpp::CWiseConstantPow< T >, bpp::CWiseExp< T >, bpp::CWiseLog< T >, bpp::CWiseInverse< T >, bpp::CWiseNegate< T >, bpp::CWiseDiv< R, std::tuple< T0, T1 > >, bpp::CWiseMul< R, ReductionOf< T > >, bpp::CWiseMul< R, std::tuple< T0, T1 > >, bpp::CWiseMean< R, ReductionOf< T >, P >, bpp::CWiseMean< R, ReductionOf< T >, ReductionOf< P > >, bpp::CWiseAdd< R, T >, bpp::CWiseAdd< R, ReductionOf< T > >, bpp::CWiseSub< R, std::tuple< T0, T1 > >, bpp::CWiseAdd< R, std::tuple< T0, T1 > >, bpp::CWiseApply< R, T, F >, bpp::CWiseCompound< R, ReductionOf< T > >, bpp::CWiseMatching< R, ReductionOf< T > >, bpp::CWisePattern< R >, and bpp::CWiseFill< R, T >.
Definition at line 173 of file DataFlow.cpp.
References bpp::Node_DF::description().
Referenced by bpp::Value< T >::deriveAsValue().
|
inlineinherited |
Derive and cast result as Value<T> (most nodes derive to the same value type).
Definition at line 389 of file DataFlow.h.
|
finalvirtual |
Node pretty name (default = type name).
Reimplemented from bpp::Node_DF.
Definition at line 29 of file Simplex_DF.cpp.
|
inline |
Definition at line 70 of file Simplex_DF.h.
References bpp::AbstractParametrizable::parameter().
|
virtual |
Return the hash of node-specific configuration.
Compute a hash from additional arguments of the node. The hashed values must the same as the ones compared by compareAdditionalArguments. The default returns 0, which is ok if there are no additional arguments.
Reimplemented from bpp::Node_DF.
Definition at line 54 of file Simplex_DF.cpp.
References simplex_.
|
virtualinherited |
Test if the node has the given numerical property.
This is an optional indication only, used for optimisations. If unsure, leave it to always false (the default implementation). This should be non recursive, to ensure a constant time check.
Reimplemented in bpp::NumericConstant< T >, bpp::ConstantOne< T >, and bpp::ConstantZero< T >.
Definition at line 168 of file DataFlow.cpp.
Referenced by bpp::ScalarProduct< R, T0, T1 >::create(), bpp::CWisePattern< R >::create(), bpp::CWiseAdd< R, T >::create(), bpp::CWiseMean< R, ReductionOf< T >, ReductionOf< P > >::create(), bpp::CWiseDiv< R, std::tuple< T0, T1 > >::create(), bpp::CWiseNegate< T >::create(), bpp::CWiseInverse< T >::create(), bpp::CWiseLog< T >::create(), bpp::CWiseExp< T >::create(), bpp::CWiseConstantPow< T >::create(), and bpp::CombineDeltaShifted< T >::create().
|
protectednoexceptinherited |
Invalidate (transitively) dependent nodes from this one.
Not thread safe !
Definition at line 219 of file DataFlow.cpp.
References bpp::Node_DF::isValid().
Referenced by bpp::Value< T >::modify(), and bpp::Node_DF::resetDependencies_().
|
inlinenoexceptinherited |
Definition at line 166 of file DataFlow.h.
References bpp::Node_DF::isValid_.
Referenced by bpp::Node_DF::computeRecursively(), bpp::Node_DF::invalidateRecursively(), and bpp::writeDotNode().
|
inlineprotectednoexceptinherited |
Definition at line 270 of file DataFlow.h.
References bpp::Node_DF::isValid_.
Referenced by bpp::Node_DF::resetDependencies_().
|
inlineprotectednoexceptinherited |
Definition at line 271 of file DataFlow.h.
References bpp::Node_DF::isValid_.
Referenced by bpp::Value< T >::modify(), bpp::NumericConstant< T >::NumericConstant(), bpp::NumericMutable< T >::NumericMutable(), and bpp::Sequence_DF::Sequence_DF().
|
inlineinherited |
General case for modification of the T object.
Takes a callable object (lambda, function pointer) that performs the modification. It must take a single T& as argument, which will refer to the T object to modify. The callable is called exactly once.
modifier | callable to modify this object |
makeValid | boolean if this object is valid after modification (which means no call to this->compute() |
Definition at line 405 of file DataFlow.h.
|
inlinenoexceptinherited |
Number of dependencies (ie nodes we depend on)
Definition at line 181 of file DataFlow.h.
References bpp::Node_DF::dependencyNodes_.
Referenced by bpp::SumOfLogarithms< F >::compute(), bpp::CWiseMean< R, ReductionOf< T >, ReductionOf< P > >::compute(), bpp::CWiseMean< R, ReductionOf< T >, P >::compute(), bpp::EquilibriumFrequenciesFromModel::compute(), bpp::TransitionMatrixFromModel::compute(), bpp::CWiseMatching< R, ReductionOf< T > >::compute(), bpp::CWiseCompound< R, ReductionOf< T > >::compute(), bpp::CWiseMatching< R, ReductionOf< T > >::derive(), bpp::CWiseCompound< R, ReductionOf< T > >::derive(), bpp::CWiseAdd< R, ReductionOf< T > >::derive(), bpp::CWiseMean< R, ReductionOf< T >, ReductionOf< P > >::derive(), bpp::CWiseMean< R, ReductionOf< T >, P >::derive(), bpp::CWiseMul< R, ReductionOf< T > >::derive(), bpp::SumOfLogarithms< F >::derive(), bpp::CombineDeltaShifted< T >::derive(), bpp::EquilibriumFrequenciesFromModel::derive(), and bpp::TransitionMatrixFromModel::derive().
|
inlinenoexceptinherited |
Number of dependent nodes (ie nodes that depend on this)
Definition at line 172 of file DataFlow.h.
References bpp::Node_DF::dependentNodes_.
|
finalvirtual |
Recreate the node with different dependencies.
Reimplemented from bpp::Node_DF.
Definition at line 60 of file Simplex_DF.cpp.
|
privateinherited |
Definition at line 240 of file DataFlow.cpp.
References bpp::Node_DF::dependentNodes_.
|
inlineprotectedinherited |
Definition at line 288 of file DataFlow.h.
References bpp::Node_DF::dependencyNodes_, bpp::Node_DF::invalidateRecursively(), and bpp::Node_DF::makeInvalid().
|
inlinevirtualinherited |
Reimplemented in bpp::MatrixProduct< R, T0, T1 >, bpp::CWiseDiv< R, std::tuple< T0, T1 > >, bpp::CWiseMul< R, std::tuple< T0, T1 > >, bpp::CWiseMean< R, ReductionOf< T >, P >, bpp::CWiseMean< R, ReductionOf< T >, ReductionOf< P > >, bpp::CWiseAdd< R, std::tuple< T0, T1 > >, bpp::CWiseApply< R, T, F >, bpp::TransitionMatrixFromTransitionMatrix, bpp::TransitionFunctionFromModel, and bpp::TransitionMatrixFromModel.
Definition at line 195 of file DataFlow.h.
Referenced by bpp::writeDotNode().
|
inlineinherited |
Access value, recompute if needed.
Recompute the value if it is not up to date. Then access it as const. Recomputation is single threaded and not thread safe.
Definition at line 374 of file DataFlow.h.
|
privateinherited |
Definition at line 245 of file DataFlow.cpp.
References bpp::Node_DF::dependentNodes_.
NumericalDerivativeConfiguration bpp::ConfiguredSimplex::config |
Configuration for numerical derivation of computation nodes using this Simplex.
Definition at line 66 of file Simplex_DF.h.
Referenced by recreate().
|
privateinherited |
Definition at line 312 of file DataFlow.h.
Referenced by bpp::Node_DF::dependencies(), bpp::Node_DF::dependency(), bpp::Node_DF::nbDependencies(), bpp::Node_DF::Node_DF(), bpp::Node_DF::resetDependencies_(), and bpp::Node_DF::~Node_DF().
|
privateinherited |
Definition at line 313 of file DataFlow.h.
Referenced by bpp::Node_DF::dependentNodes(), bpp::Node_DF::nbDependentNodes(), bpp::Node_DF::registerNode(), and bpp::Node_DF::unregisterNode().
|
privateinherited |
Definition at line 314 of file DataFlow.h.
Referenced by bpp::Node_DF::isValid(), bpp::Node_DF::makeInvalid(), and bpp::Node_DF::makeValid().
|
private |
Definition at line 82 of file Simplex_DF.h.
Referenced by compareAdditionalArguments(), compute(), debugInfo(), hashAdditionalArguments(), and recreate().
|
privateinherited |
Definition at line 419 of file DataFlow.h.