bpp-phyl3  3.0.0
bpp::ShiftParameter Class Reference

shift param value = n * delta + x. More...

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

+ Inheritance diagram for bpp::ShiftParameter:
+ Collaboration diagram for bpp::ShiftParameter:

Public Types

using Self = ShiftParameter
 
using Target = Parameter
 

Public Member Functions

 ShiftParameter (const Context &context, NodeRefVec &&deps, const Parameter &parameter, int n)
 
 ShiftParameter (const Context &context, NodeRefVec &&deps, Parameter &&parameter, int n)
 
std::string description () const override
 Node pretty name (default = type name). More...
 
std::string color () const override
 
std::string debugInfo () const override
 Node debug info (default = ""): user defined detailed info for DF graph debug. More...
 
bool compareAdditionalArguments (const Node_DF &other) const final
 Compare node-specific configuration to another. More...
 
void setValue (double v) override
 
double getValue () const override
 Raw value access (const). More...
 
std::size_t hashAdditionalArguments () const final
 Return the hash of node-specific configuration. More...
 
NodeRef derive (Context &c, const Node_DF &node) final
 Returns a node computing d(this_node_expression)/d(node_expression). More...
 
NodeRef recreate (Context &c, NodeRefVec &&deps) final
 Recreate the node with different dependencies. More...
 
int getN () const
 
ConfiguredParameterclone () const override
 
NodeRef recreate (Context &c)
 
virtual void setName (const std::string &name)
 
void setPrecision (double precision)
 
virtual const std::string & getName () const
 
virtual double getPrecision () const
 
virtual std::shared_ptr< const ConstraintInterfacegetConstraint () const
 
virtual std::shared_ptr< ConstraintInterfacegetConstraint ()
 
virtual const ConstraintInterfaceconstraint () const
 
virtual ConstraintInterfaceconstraint ()
 
virtual bool hasConstraint () const
 
virtual std::shared_ptr< ConstraintInterfaceremoveConstraint ()
 
virtual void setConstraint (std::shared_ptr< ConstraintInterface > constraint)
 
virtual void addParameterListener (std::shared_ptr< ParameterListener > listener)
 
virtual void removeParameterListener (const std::string &listenerId)
 
virtual bool hasParameterListener (const std::string &listenerId)
 
const Parameter * & targetValue ()
 Access value, recompute if needed. More...
 
const Parameter * & accessValueConst () const noexcept
 Raw value access (const). More...
 
ValueRef< Parameter * > 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 NodeRefVecdependencies () const noexcept
 
const NodeRefdependency (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...
 
void computeRecursively ()
 Compute this node value, recomputing dependencies (transitively) as needed. More...
 

Static Public Member Functions

static std::shared_ptr< ConfiguredParametercreate (Context &c, NodeRefVec &&deps, Parameter &param, const int n)
 Build a new ShiftDelta node with the given output dimensions and shift number. More...
 
static std::shared_ptr< Selfcreate (Context &c, NodeRefVec &&deps, const Parameter &param)
 Build a new ConfiguredParameter node. More...
 
static std::shared_ptr< Selfcreate (Context &c, const Parameter &param)
 
static std::shared_ptr< SelfresetDependencies (Context &c, std::shared_ptr< Self > self, NodeRefVec &&deps)
 

Static Public Attributes

static const std::shared_ptr< IntervalConstraintR_PLUS
 
static const std::shared_ptr< IntervalConstraintR_PLUS_STAR
 
static const std::shared_ptr< IntervalConstraintR_MINUS
 
static const std::shared_ptr< IntervalConstraintR_MINUS_STAR
 
static const std::shared_ptr< IntervalConstraintPROP_CONSTRAINT_IN
 
static const std::shared_ptr< IntervalConstraintPROP_CONSTRAINT_EX
 

Protected Member Functions

void fireParameterNameChanged (ParameterEvent &event)
 
void fireParameterValueChanged (ParameterEvent &event)
 
void fireParameterConstraintChanged (ParameterEvent &event)
 
Parameter * & accessValueMutable () noexcept
 
void invalidateRecursively () noexcept
 Invalidate (transitively) dependent nodes from this one. More...
 
void makeInvalid () noexcept
 
void makeValid () noexcept
 
void resetDependencies_ (NodeRefVec &&dependenciesArg)
 

Protected Attributes

std::string name_
 
double value_
 
double precision_
 
std::shared_ptr< ConstraintInterfaceconstraint_
 
std::vector< std::shared_ptr< ParameterListener > > listeners_
 

Private Member Functions

void compute () final
 Computation implementation. More...
 
void registerNode (Node_DF *n)
 
void unregisterNode (const Node_DF *n)
 

Private Attributes

int n_
 
const Contextcontext_
 
NodeRefVec dependencyNodes_ {}
 
std::vector< Node_DF * > dependentNodes_ {}
 
bool isValid_ {false}
 

Detailed Description

shift param value = n * delta + x.

  • x, delta: double.
  • n: constant int.
  • order of dependencies: (x, delta).

Adds n * delta to value of x. Used to generate x +/- delta values for numerical derivation. Node construction should be done with the create static method.

Definition at line 130 of file Parameter.h.

Member Typedef Documentation

◆ Self

Definition at line 133 of file Parameter.h.

◆ Target

Definition at line 33 of file Parameter.h.

Constructor & Destructor Documentation

◆ ShiftParameter() [1/2]

bpp::ShiftParameter::ShiftParameter ( const Context context,
NodeRefVec &&  deps,
const Parameter parameter,
int  n 
)
inline

Definition at line 168 of file Parameter.h.

◆ ShiftParameter() [2/2]

bpp::ShiftParameter::ShiftParameter ( const Context context,
NodeRefVec &&  deps,
Parameter &&  parameter,
int  n 
)
inline

Definition at line 172 of file Parameter.h.

Member Function Documentation

◆ accessValueConst()

const Parameter * & bpp::Value< Parameter * >::accessValueConst ( ) const
inlinenoexceptinherited

Raw value access (const).

Value is not guaranteed to be valid (no recomputation).

Definition at line 385 of file DataFlow.h.

◆ accessValueMutable()

Parameter * & bpp::Value< Parameter * >::accessValueMutable ( )
inlineprotectednoexceptinherited

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

Definition at line 416 of file DataFlow.h.

◆ clone()

ConfiguredParameter* bpp::ConfiguredParameter::clone ( ) const
inlineoverridevirtualinherited

Reimplemented from bpp::Parameter.

Definition at line 71 of file Parameter.h.

References bpp::ConfiguredParameter::ConfiguredParameter().

◆ color()

std::string bpp::ShiftParameter::color ( ) const
inlineoverridevirtual

Reimplemented from bpp::ConfiguredParameter.

Definition at line 178 of file Parameter.h.

References bpp::Parameter::getName().

◆ compareAdditionalArguments()

bool bpp::ShiftParameter::compareAdditionalArguments ( const Node_DF other) const
inlinefinalvirtual

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::ConfiguredParameter.

Definition at line 195 of file Parameter.h.

References n_.

◆ compute()

void bpp::ShiftParameter::compute ( )
inlinefinalprivatevirtual

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.

Reimplemented from bpp::ConfiguredParameter.

Definition at line 253 of file Parameter.h.

References bpp::Value< Parameter * >::accessValueMutable(), bpp::Node_DF::dependency(), bpp::Parameter::getConstraint(), bpp::Parameter::hasConstraint(), and n_.

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

◆ create() [1/3]

static std::shared_ptr<Self> bpp::ConfiguredParameter::create ( Context c,
const Parameter param 
)
inlinestaticinherited

Definition at line 44 of file Parameter.h.

References bpp::NumericMutable< T >::create(), and bpp::Parameter::getValue().

◆ create() [2/3]

◆ create() [3/3]

static std::shared_ptr<ConfiguredParameter> bpp::ShiftParameter::create ( Context c,
NodeRefVec &&  deps,
Parameter param,
const int  n 
)
inlinestatic

Build a new ShiftDelta node with the given output dimensions and shift number.

Definition at line 136 of file Parameter.h.

References bpp::checkDependenciesNotNull(), bpp::checkDependencyVectorSize(), bpp::ConstantZero, and bpp::ConfiguredParameter::create().

Referenced by derive(), bpp::generateNumericalDerivative(), and recreate().

◆ debugInfo()

std::string bpp::ShiftParameter::debugInfo ( ) const
inlineoverridevirtual

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

Reimplemented from bpp::ConfiguredParameter.

Definition at line 188 of file Parameter.h.

References bpp::ConfiguredParameter::debugInfo(), n_, and bpp::to_string().

◆ 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(), 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(), 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::ShiftParameter::derive ( Context c,
const Node_DF node 
)
inlinefinalvirtual

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 from bpp::ConfiguredParameter.

Definition at line 228 of file Parameter.h.

References bpp::ConstantOne, bpp::ConstantZero, bpp::ConstantZero< T >::create(), bpp::ConstantOne< T >::create(), create(), bpp::Node_DF::dependency(), and n_.

◆ deriveAsValue()

ValueRef<Parameter * > bpp::Value< Parameter * >::deriveAsValue ( Context c,
const Node_DF node 
)
inlineinherited

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

Definition at line 389 of file DataFlow.h.

◆ description()

std::string bpp::ShiftParameter::description ( ) const
inlineoverridevirtual

Node pretty name (default = type name).

Reimplemented from bpp::ConfiguredParameter.

Definition at line 176 of file Parameter.h.

References bpp::ConfiguredParameter::description().

◆ getN()

int bpp::ShiftParameter::getN ( ) const
inline

Definition at line 250 of file Parameter.h.

References n_.

◆ getValue()

double bpp::ShiftParameter::getValue ( ) const
inlineoverridevirtual

Raw value access (const).

Value is not guaranteed to be valid (no recomputation).

Reimplemented from bpp::ConfiguredParameter.

Definition at line 216 of file Parameter.h.

References bpp::Parameter::getValue().

◆ hashAdditionalArguments()

std::size_t bpp::ShiftParameter::hashAdditionalArguments ( ) const
inlinefinalvirtual

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::ConfiguredParameter.

Definition at line 221 of file Parameter.h.

References bpp::combineHash(), and n_.

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

void bpp::Value< Parameter * >::modify ( Callable &&  modifier,
bool  makeValid 
)
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.

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.

◆ 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() [1/2]

NodeRef bpp::ConfiguredParameter::recreate ( Context c)
inherited

◆ recreate() [2/2]

NodeRef bpp::ShiftParameter::recreate ( Context c,
NodeRefVec &&  deps 
)
inlinefinalvirtual

Recreate the node with different dependencies.

Reimplemented from bpp::ConfiguredParameter.

Definition at line 245 of file Parameter.h.

References create(), and n_.

◆ registerNode()

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

Definition at line 240 of file DataFlow.cpp.

References bpp::Node_DF::dependentNodes_.

◆ resetDependencies()

static std::shared_ptr<Self> bpp::ConfiguredParameter::resetDependencies ( Context c,
std::shared_ptr< Self self,
NodeRefVec &&  deps 
)
inlinestaticinherited

◆ resetDependencies_()

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

◆ setValue()

void bpp::ShiftParameter::setValue ( double  v)
inlineoverridevirtual

Reimplemented from bpp::ConfiguredParameter.

Definition at line 206 of file Parameter.h.

◆ shape()

◆ targetValue()

const Parameter * & bpp::Value< Parameter * >::targetValue ( )
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.

◆ 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

◆ context_

const Context& bpp::ConfiguredParameter::context_
privateinherited

Definition at line 29 of file Parameter.h.

◆ dependencyNodes_

◆ dependentNodes_

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

◆ isValid_

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

◆ n_

int bpp::ShiftParameter::n_
private

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