bpp-phyl3  3.0.0
bpp::Value< T > Class Template Referenceabstract

Abstract Node storing a value of type T. More...

#include <Bpp/Phyl/Likelihood/DataFlow/DataFlow.h>

+ Inheritance diagram for bpp::Value< T >:
+ Collaboration diagram for bpp::Value< T >:

Public Member Functions

template<typename ... Args>
 Value (const NodeRefVec &deps, Args &&... args)
 
template<typename ... Args>
 Value (NodeRefVec &&deps, Args &&... args)
 
const T & targetValue ()
 Access value, recompute if needed. More...
 
const T & accessValueConst () const noexcept
 Raw value access (const). More...
 
ValueRef< T > deriveAsValue (Context &c, const Node_DF &node)
 
template<typename Callable >
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 NodeRefVecdependencies () const noexcept
 
const NodeRefdependency (std::size_t i) const noexcept
 
virtual std::string description () const
 Node pretty name (default = type name). More...
 
virtual std::string color () const
 
virtual std::string shape () const
 
virtual std::string debugInfo () const
 Node debug info (default = ""): user defined detailed info for DF graph debug. More...
 
virtual bool hasNumericalProperty (NumericalProperty prop) const
 Test if the node has the given numerical property. More...
 
virtual bool compareAdditionalArguments (const Node_DF &other) const
 Compare node-specific configuration to another. More...
 
virtual std::size_t hashAdditionalArguments () const
 Return the hash of node-specific configuration. More...
 
virtual NodeRef derive (Context &c, const Node_DF &node)
 Returns a node computing d(this_node_expression)/d(node_expression). More...
 
virtual NodeRef recreate (Context &c, NodeRefVec &&deps)
 Recreate the node with different dependencies. More...
 
void computeRecursively ()
 Compute this node value, recomputing dependencies (transitively) as needed. More...
 

Protected Member Functions

T & accessValueMutable () noexcept
 
virtual void compute ()=0
 Computation implementation. More...
 
void invalidateRecursively () noexcept
 Invalidate (transitively) dependent nodes from this one. More...
 
void makeInvalid () noexcept
 
void makeValid () noexcept
 
void resetDependencies_ (NodeRefVec &&dependenciesArg)
 

Private Member Functions

void registerNode (Node_DF *n)
 
void unregisterNode (const Node_DF *n)
 

Private Attributes

value_
 
NodeRefVec dependencyNodes_ {}
 
std::vector< Node_DF * > dependentNodes_ {}
 
bool isValid_ {false}
 

Detailed Description

template<typename T>
class bpp::Value< T >

Abstract Node storing a value of type T.

Represents a DataFlow node containing a T value, but still abstract (no compute()). This intermediate class is used everywhere to indicate a typed dependency to a T value.

For performance, the T value is stored directly in the node. Access to the value are made without any virtual call. Types can not be forward-declared.

accessValueConst() returns the current raw value, which may be invalid. getTargetValue() returns the value, recomputing it recursively if invalid.

The Value<T> constructor forwards dependencies to the base Node, and other arguments to the T value constructor.

Definition at line 351 of file DataFlow.h.

Constructor & Destructor Documentation

◆ Value() [1/2]

template<typename T >
template<typename ... Args>
bpp::Value< T >::Value ( const NodeRefVec deps,
Args &&...  args 
)
inline

Definition at line 356 of file DataFlow.h.

◆ Value() [2/2]

template<typename T >
template<typename ... Args>
bpp::Value< T >::Value ( NodeRefVec &&  deps,
Args &&...  args 
)
inline

Definition at line 362 of file DataFlow.h.

Member Function Documentation

◆ accessValueConst()

◆ accessValueMutable()

template<typename T >
T& bpp::Value< T >::accessValueMutable ( )
inlineprotectednoexcept

Raw value access (mutable). Should only be used by subclasses to implement compute().

Definition at line 416 of file DataFlow.h.

References bpp::Value< T >::value_.

Referenced by bpp::ConstantZero< T >::compute(), bpp::ConstantOne< T >::compute(), bpp::Convert< R, F >::compute(), bpp::Identity< R >::compute(), and bpp::Value< T >::modify().

◆ color()

◆ compareAdditionalArguments()

bool bpp::Node_DF::compareAdditionalArguments ( const Node_DF other) const
virtualinherited

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 in bpp::Sequence_DF, bpp::ConfiguredParameter, bpp::ConfiguredModel, bpp::NumericConstant< T >, bpp::BackwardHmmLikelihood_DF, bpp::ForwardHmmD2Likelihood_DF, bpp::ForwardHmmDLikelihood_DF, bpp::ForwardHmmLikelihood_DF, bpp::CondLikelihood, bpp::FrequenciesFromSimplex, bpp::ValueFromConfiguredParameter, bpp::ShiftParameter, bpp::ProbabilityFromMixedModel, bpp::ProbabilitiesFromMixedModel, bpp::FrequenciesFromFrequencySet, bpp::CategoryFromDiscreteDistribution, bpp::ProbabilityFromDiscreteDistribution, bpp::ProbabilitiesFromDiscreteDistribution, bpp::Identity< R >, bpp::Convert< R, F >, 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 >, bpp::CWiseFill< R, T >, bpp::TransitionMatrixFromTransitionMatrix, bpp::EquilibriumFrequenciesFromTransitionMatrix, bpp::ConfiguredTransitionMatrix, bpp::ConfiguredSimplex, bpp::TransitionFunctionFromModel, bpp::TransitionMatrixFromModel, bpp::EquilibriumFrequenciesFromModel, bpp::ConfiguredFrequencySet, and bpp::ConfiguredDistribution.

Definition at line 170 of file DataFlow.cpp.

◆ compute()

virtual void bpp::Node_DF::compute ( )
protectedpure virtualinherited

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.

Implemented in bpp::BackwardHmmLikelihood_DF, bpp::ForwardHmmD2Likelihood_DF, bpp::ForwardHmmDLikelihood_DF, bpp::ForwardHmmLikelihood_DF, bpp::CondLikelihood, bpp::ConfiguredParameter, bpp::ConfiguredModel, bpp::CombineDeltaShifted< T >, bpp::SumOfLogarithms< F >, bpp::CWiseDiv< R, std::tuple< T0, T1 > >, bpp::CWiseMul< R, std::tuple< T0, T1 > >, bpp::CWiseAdd< R, T >, bpp::CWiseAdd< R, ReductionOf< T > >, 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 >, bpp::CWiseFill< R, T >, 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::ShiftDelta< T >, bpp::MatrixProduct< R, T0, T1 >, bpp::LogSumExp< R, T0, T1 >, bpp::ScalarProduct< R, T0, T1 >, bpp::CWiseConstantPow< T >, bpp::CWiseExp< T >, bpp::CWiseLog< T >, bpp::CWiseInverse< T >, bpp::CWiseNegate< T >, bpp::CWiseMul< R, ReductionOf< T > >, bpp::CWiseMean< R, ReductionOf< T >, P >, bpp::CWiseMean< R, ReductionOf< T >, ReductionOf< P > >, bpp::CWiseSub< R, std::tuple< T0, T1 > >, bpp::ConfiguredTransitionMatrix, bpp::ConfiguredSimplex, bpp::ConfiguredFrequencySet, bpp::ConfiguredDistribution, bpp::CombineDeltaShifted< T >, bpp::CombineDeltaShifted< T >, bpp::SumOfLogarithms< F >, bpp::SumOfLogarithms< F >, bpp::CWiseDiv< R, std::tuple< T0, T1 > >, bpp::CWiseDiv< R, std::tuple< T0, T1 > >, bpp::CWiseDiv< R, std::tuple< T0, T1 > >, bpp::CWiseDiv< R, std::tuple< T0, T1 > >, bpp::CWiseMul< R, std::tuple< T0, T1 > >, bpp::CWiseMul< R, std::tuple< T0, T1 > >, bpp::CWiseMul< R, std::tuple< T0, T1 > >, bpp::CWiseMul< R, std::tuple< T0, T1 > >, bpp::CWiseAdd< R, T >, bpp::CWiseAdd< R, T >, bpp::CWiseAdd< R, T >, bpp::CWiseAdd< R, ReductionOf< T > >, bpp::CWiseAdd< R, ReductionOf< T > >, bpp::CWiseAdd< R, std::tuple< T0, T1 > >, bpp::CWiseAdd< R, std::tuple< T0, T1 > >, bpp::CWiseApply< R, T, F >, bpp::CWiseFill< R, T >, bpp::CWiseFill< R, T >, and bpp::CWiseFill< R, T >.

◆ computeRecursively()

void bpp::Node_DF::computeRecursively ( )
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().

◆ debugInfo()

std::string bpp::Node_DF::debugInfo ( ) const
virtualinherited

Node debug info (default = ""): user defined detailed info for DF graph debug.

Reimplemented in bpp::BackwardHmmLikelihood_DF, bpp::ForwardHmmD2Likelihood_DF, bpp::ForwardHmmDLikelihood_DF, bpp::ForwardHmmLikelihood_DF, bpp::CondLikelihood, bpp::ShiftParameter, bpp::ConfiguredParameter, 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 >, bpp::CWiseFill< R, T >, bpp::TransitionMatrixFromTransitionMatrix, bpp::EquilibriumFrequenciesFromTransitionMatrix, bpp::ConfiguredTransitionMatrix, bpp::FrequenciesFromSimplex, bpp::ConfiguredSimplex, bpp::Sequence_DF, bpp::ValueFromConfiguredParameter, bpp::ProbabilityFromMixedModel, bpp::ProbabilitiesFromMixedModel, bpp::TransitionFunctionFromModel, bpp::TransitionMatrixFromModel, bpp::EquilibriumFrequenciesFromModel, bpp::ConfiguredModel, bpp::FrequenciesFromFrequencySet, bpp::ConfiguredFrequencySet, bpp::CategoryFromDiscreteDistribution, bpp::ProbabilityFromDiscreteDistribution, bpp::ProbabilitiesFromDiscreteDistribution, and bpp::ConfiguredDistribution.

Definition at line 166 of file DataFlow.cpp.

Referenced by bpp::writeDotNode().

◆ dependencies()

◆ dependency()

const NodeRef& bpp::Node_DF::dependency ( std::size_t  i) const
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().

◆ dependentNodes()

const std::vector<Node_DF*>& bpp::Node_DF::dependentNodes ( ) const
inlinenoexceptinherited

Definition at line 175 of file DataFlow.h.

References bpp::Node_DF::dependentNodes_.

◆ derive()

NodeRef bpp::Node_DF::derive ( Context c,
const Node_DF node 
)
virtualinherited

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().

◆ deriveAsValue()

template<typename T >
ValueRef<T> bpp::Value< T >::deriveAsValue ( Context c,
const Node_DF node 
)
inline

Derive and cast result as Value<T> (most nodes derive to the same value type).

Definition at line 389 of file DataFlow.h.

References bpp::Node_DF::derive().

◆ description()

◆ hashAdditionalArguments()

std::size_t bpp::Node_DF::hashAdditionalArguments ( ) const
virtualinherited

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 in bpp::Sequence_DF, bpp::ConfiguredParameter, bpp::ConfiguredModel, bpp::NumericConstant< T >, bpp::ShiftParameter, bpp::ConstantOne< T >, bpp::ConstantZero< T >, bpp::CombineDeltaShifted< T >, bpp::ShiftDelta< T >, bpp::CWiseConstantPow< T >, bpp::ConfiguredTransitionMatrix, bpp::ConfiguredSimplex, bpp::ConfiguredFrequencySet, and bpp::ConfiguredDistribution.

Definition at line 171 of file DataFlow.cpp.

◆ hasNumericalProperty()

bool bpp::Node_DF::hasNumericalProperty ( NumericalProperty  prop) const
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().

◆ invalidateRecursively()

void bpp::Node_DF::invalidateRecursively ( )
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_().

◆ isValid()

bool bpp::Node_DF::isValid ( ) const
inlinenoexceptinherited

◆ makeInvalid()

void bpp::Node_DF::makeInvalid ( )
inlineprotectednoexceptinherited

Definition at line 270 of file DataFlow.h.

References bpp::Node_DF::isValid_.

Referenced by bpp::Node_DF::resetDependencies_().

◆ makeValid()

void bpp::Node_DF::makeValid ( )
inlineprotectednoexceptinherited

◆ modify()

template<typename T >
template<typename Callable >
void bpp::Value< T >::modify ( Callable &&  modifier,
bool  makeValid 
)
inline

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.

Parameters
modifiercallable to modify this object
makeValidboolean if this object is valid after modification (which means no call to this->compute()

Definition at line 405 of file DataFlow.h.

References bpp::Value< T >::accessValueMutable(), bpp::Node_DF::invalidateRecursively(), and bpp::Node_DF::makeValid().

Referenced by bpp::NumericMutable< T >::setValue().

◆ nbDependencies()

◆ nbDependentNodes()

std::size_t bpp::Node_DF::nbDependentNodes ( ) const
inlinenoexceptinherited

Number of dependent nodes (ie nodes that depend on this)

Definition at line 172 of file DataFlow.h.

References bpp::Node_DF::dependentNodes_.

◆ recreate()

NodeRef bpp::Node_DF::recreate ( Context c,
NodeRefVec &&  deps 
)
virtualinherited

Recreate the node with different dependencies.

Reimplemented in bpp::ConfiguredParameter, bpp::BackwardHmmLikelihood_DF, bpp::ForwardHmmD2Likelihood_DF, bpp::ForwardHmmDLikelihood_DF, bpp::ForwardHmmLikelihood_DF, bpp::CondLikelihood, bpp::TransitionMatrixFromTransitionMatrix, bpp::EquilibriumFrequenciesFromTransitionMatrix, bpp::ConfiguredTransitionMatrix, bpp::FrequenciesFromSimplex, bpp::ConfiguredSimplex, bpp::Sequence_DF, bpp::ValueFromConfiguredParameter, bpp::ShiftParameter, bpp::ProbabilityFromMixedModel, bpp::ProbabilitiesFromMixedModel, bpp::TransitionFunctionFromModel, bpp::TransitionMatrixFromModel, bpp::EquilibriumFrequenciesFromModel, bpp::ConfiguredModel, bpp::FrequenciesFromFrequencySet, bpp::ConfiguredFrequencySet, bpp::CategoryFromDiscreteDistribution, bpp::ProbabilityFromDiscreteDistribution, bpp::ProbabilitiesFromDiscreteDistribution, bpp::ConfiguredDistribution, bpp::Identity< R >, bpp::Convert< R, F >, 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 >, bpp::CWiseFill< R, T >, bpp::NumericConstant< T >, bpp::NumericMutable< T >, bpp::ConstantOne< T >, and bpp::ConstantZero< T >.

Definition at line 178 of file DataFlow.cpp.

References bpp::Node_DF::description().

◆ registerNode()

void bpp::Node_DF::registerNode ( Node_DF n)
privateinherited

Definition at line 240 of file DataFlow.cpp.

References bpp::Node_DF::dependentNodes_.

◆ resetDependencies_()

void bpp::Node_DF::resetDependencies_ ( NodeRefVec &&  dependenciesArg)
inlineprotectedinherited

◆ shape()

◆ targetValue()

template<typename T >
const T& bpp::Value< T >::targetValue ( )
inline

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.

References bpp::Value< T >::accessValueConst(), and bpp::Node_DF::computeRecursively().

◆ unregisterNode()

void bpp::Node_DF::unregisterNode ( const Node_DF n)
privateinherited

Definition at line 245 of file DataFlow.cpp.

References bpp::Node_DF::dependentNodes_.

Member Data Documentation

◆ dependencyNodes_

◆ dependentNodes_

std::vector<Node_DF*> bpp::Node_DF::dependentNodes_ {}
privateinherited

◆ isValid_

bool bpp::Node_DF::isValid_ {false}
privateinherited

◆ value_

template<typename T >
T bpp::Value< T >::value_
private

The documentation for this class was generated from the following file: