![]() |
aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
|
Decorator of a MultiDimArray, using a bijection over the variables. More...
#include <agrum/base/multidim/multiDimBijArray.h>
Public Types | |
| using | VarBijection = Bijection< const DiscreteVariable*, const DiscreteVariable* > |
Public Member Functions | |
Constructors / Destructors | |
| MultiDimBijArray (const VarBijection &bijection, const MultiDimArray< GUM_SCALAR > &array) | |
| Class constructor. | |
| MultiDimBijArray (const VarBijection &bijection, const MultiDimBijArray< GUM_SCALAR > &array) | |
| Class constructor. | |
| MultiDimBijArray (const MultiDimBijArray< GUM_SCALAR > &from) | |
| Copy constructor. | |
| virtual | ~MultiDimBijArray () |
| Class destructor. | |
Modifiers – will raise OperationNotAllowed exceptions | |
| MultiDimBijArray< GUM_SCALAR > & | operator= (const MultiDimBijArray< GUM_SCALAR > &from) |
| virtual void | set (const Instantiation &i, const GUM_SCALAR &value) const |
| virtual void | add (const DiscreteVariable &v) |
| This will raise an exception: you can't change the variables in a MultiDimBijArray. | |
| virtual void | erase (const DiscreteVariable &v) |
| This will raise an exception: you can't change the variables in a MultiDimBijArray. | |
| virtual void | fill (const GUM_SCALAR &d) const |
| This will raise an exception: you can't change the data. | |
| virtual void | populate (const std::vector< GUM_SCALAR > &v) const |
| This will raise an exception: you can't change the variables in a MultiDimBijArray. | |
| virtual void | populate (std::initializer_list< GUM_SCALAR > l) const |
| This will raise an exception: you can't change the variables in a MultiDimBijArray. | |
Inherited methods | |
| virtual const std::string & | name () const |
| Returns the real name of the multiDim implementation. | |
| virtual GUM_SCALAR | get (const Instantiation &i) const |
| Returns the value pointed by i. | |
| virtual Size | realSize () const |
| Returns the real number of parameters used for this table. | |
| virtual MultiDimBijArray< GUM_SCALAR > * | newFactory () const |
| Class constructor. | |
Accessors and modifiers | |
| virtual std::string | toString (const Instantiation *i) const |
| Display the internal representation of i. | |
| virtual void | changeNotification (const Instantiation &i, const DiscreteVariable *const var, Idx oldval, Idx newval) |
| Listen to changes in a given Instantiation. | |
| virtual void | setChangeNotification (const Instantiation &i) |
| Listen to an assignment of a value in a Instantiation. | |
| virtual void | setFirstNotification (const Instantiation &i) |
| Listen to setFirst in a given Instantiation. | |
| virtual void | setLastNotification (const Instantiation &i) |
| Listen to setLast in a given Instantiation. | |
| void | setIncNotification (const Instantiation &i) |
| Listen to increment in a given Instantiation. | |
| void | setDecNotification (const Instantiation &i) |
| Listen to increment in each recorded Instantiation. | |
| virtual bool | registerSlave (Instantiation &i) |
| Register i as a slave of this MultiDimAdressable. | |
| virtual bool | unregisterSlave (Instantiation &i) |
| Unregister i as a slave of this MultiDimAdressable. | |
Various methods. | |
| virtual std::string | toString () const |
| Returns a representation of this MultiDimContainer. | |
| bool | operator== (const MultiDimContainer< GUM_SCALAR > &p) const |
| Test if this MultiDimContainer is equal to p. | |
| bool | operator!= (const MultiDimContainer< GUM_SCALAR > &p) const |
| Test if this MultiDimContainer is different of p. | |
| virtual void | apply (std::function< GUM_SCALAR(GUM_SCALAR) > f) const |
| Apply a function on every element of the container. | |
| virtual GUM_SCALAR | reduce (std::function< GUM_SCALAR(GUM_SCALAR, GUM_SCALAR) > f, GUM_SCALAR base) const |
| compute lfold for this container | |
Access to offset in MultiDimWithOffset | |
| Size | toOffset (const Instantiation &i) const |
| Compute offset from an Instantiation (in this array). | |
| Instantiation & | fromOffset (Instantiation &i, Size offset) const |
| Set the Instantiation to the values corresponding to the offset (in this array). | |
Accessors / Modifiers | |
| const std::string & | basename () const |
| Returns the base class name of this MultiDimImplementation. | |
| float | compressionRate () const |
| The compression ratio of the table (depending on the type of implementation). | |
MultiDimInterface implementation | |
| virtual Idx | nbrDim () const override |
| Returns the number of vars in the multidimensional container. | |
| virtual Size | domainSize () const override |
| Returns the product of the variables domain size. | |
| virtual const Sequence< const DiscreteVariable * > & | variablesSequence () const override |
| Returns a const ref to the sequence of DiscreteVariable*. | |
| const DiscreteVariable & | variable (Idx i) const override |
| Returns a const ref to the ith var. | |
| const DiscreteVariable & | variable (const std::string &name) const override |
| Returns the variable with the name. | |
| virtual Idx | pos (const DiscreteVariable &v) const override |
| Returns the index of a variable. | |
| virtual bool | contains (const DiscreteVariable &v) const override |
| Returns true if var is in *this. | |
| virtual bool | empty () const override |
| Returns true if no var is in *this. | |
MultiDimContainer implementation | |
| void | beginMultipleChanges () override |
| Call this method before doing important changes in this MultiDimContainer. | |
| void | endMultipleChanges () override |
| Call this method after doing important changes in this MultiDimContainer. | |
| void | endMultipleChanges (const GUM_SCALAR &) override |
| Call this method after doing important changes in this MultiDimContainer. | |
Accessors / Modifiers | |
| GUM_SCALAR | operator[] (const Instantiation &i) const |
| An [] operator using a Instantiation as argument. | |
Copy methods. | |
| virtual void | copyFrom (const MultiDimContainer< GUM_SCALAR > &src) const |
| Basic copy of a MultiDimContainer. | |
| virtual void | copyFrom (const MultiDimContainer< GUM_SCALAR > &src, Instantiation *p_i) const |
| Basic copy of a MultiDimContainer. | |
| virtual void | extractFrom (const MultiDimContainer< GUM_SCALAR > &src, const Instantiation &mask) |
| Basic extraction of a MultiDimContainer. | |
| virtual MultiDimAdressable & | getMasterRef () |
| In order to insure the dereference for decorators, we need to virtualize the access to master pointer. | |
| virtual const MultiDimAdressable & | getMasterRef () const |
| In order to insure the dereference for decorators, we need to virtualize the access to master pointer. | |
| virtual void | copy (const MultiDimContainer< GUM_SCALAR > &src) |
| Removes all variables in this MultiDimContainer and copy the content of src, variables included. | |
Accessors / Modifiers | |
| void | replace (const DiscreteVariable &x, const DiscreteVariable &y) |
| Replace variables in this multidim. | |
Protected Member Functions | |
| virtual GUM_SCALAR & | get_ (const Instantiation &i) const |
| Return a data, given a Instantiation. | |
| virtual void | commitMultipleChanges_ () |
| Synchronize content after MultipleChanges. | |
| virtual void | replace_ (const DiscreteVariable *x, const DiscreteVariable *y) |
| Replace variable x by y. | |
| Size | getOffs_ (const Instantiation &i) const |
| Compute the offset of a Instantiation. | |
| void | computeInstantiationValue_ (Instantiation &result, Size indice) const |
| For a given index of a value in the vector values, this method computes the corresponding instantiation. | |
| virtual const MultiDimImplementation< GUM_SCALAR > * | content () const final |
| Returns the implementation for this object (may be *this). | |
| virtual MultiDimImplementation< GUM_SCALAR > * | content () final |
| Returns the implementation for this object (may be *this). | |
Fast large modifications in structures | |
| virtual void | commitMultipleChanges_ (const GUM_SCALAR &value) |
| Synchronize content after MultipleChanges. | |
| bool | isInMultipleChangeMethod_ () const |
| Get the actual change method of this MultiDimImplementation. | |
| bool | isCommitNeeded_ () const |
| Get the actual state of *this. | |
| const List< Instantiation * > & | slaves_ () const |
| Returns a constant reference over the list of slaved instantiations. | |
| virtual void | invert_ (Idx p1, Idx p2) |
| Inverts variables at position p1 and p2. | |
Protected Attributes | |
| HashTable< const DiscreteVariable *, Size > | gaps_ |
| The gaps between consecutive values of a given variable. | |
| HashTable< const Instantiation *, Size > | offsets_ |
| The position in the array of each slave Instantiation. | |
Private Types | |
| enum class | _InternalChangeMethod_ : char { DIRECT_CHANGE , MULTIPLE_CHANGE } |
| Used to represent in which change method this MultiDimImplementation is. More... | |
| enum class | _InternalChangeState_ : char { NO_CHANGE , NOT_COMMITTED_CHANGE } |
| Used to represent in which change state this MultiDimImplementation is. More... | |
Private Member Functions | |
| void | _setNotCommitedChange_ () |
| Change the internalChangeState to NOT_COMMITTED_CHANGE. | |
Private Attributes | |
| const MultiDimArray< GUM_SCALAR > & | _array_ |
| The true data. | |
| std::string | _name_ |
| The class name. | |
| Sequence< const DiscreteVariable * > | _vars_ |
| List of discrete variables (dimensions). | |
| List< Instantiation * > | _slaveInstantiations_ |
| List of instantiations of the tuples (sequences) of variables. | |
| _InternalChangeMethod_ | _internalChangeMethod_ |
| The current change method. | |
| _InternalChangeState_ | _internalChangeState_ |
| The current change state. | |
| Size | _domainSize_ |
| This MultiDimImplementation domain size. | |
Decorator of a MultiDimArray, using a bijection over the variables.
| GUM_SCALAR | The type of scaler stored in this multidimensional table. |
Definition at line 71 of file multiDimBijArray.h.
| using gum::MultiDimBijArray< GUM_SCALAR >::VarBijection = Bijection< const DiscreteVariable*, const DiscreteVariable* > |
Definition at line 73 of file multiDimBijArray.h.
|
strongprivateinherited |
Used to represent in which change method this MultiDimImplementation is.
| Enumerator | |
|---|---|
| DIRECT_CHANGE | |
| MULTIPLE_CHANGE | |
Definition at line 295 of file multiDimImplementation.h.
|
strongprivateinherited |
Used to represent in which change state this MultiDimImplementation is.
| Enumerator | |
|---|---|
| NO_CHANGE | |
| NOT_COMMITTED_CHANGE | |
Definition at line 298 of file multiDimImplementation.h.
| gum::MultiDimBijArray< GUM_SCALAR >::MultiDimBijArray | ( | const VarBijection & | bijection, |
| const MultiDimArray< GUM_SCALAR > & | array ) |
Class constructor.
| bijection | The bijection between variables in array and variable in this. |
| array | The MultiDimArray decorated by this MultiDimBijArray. |
Definition at line 66 of file multiDimBijArray_tpl.h.
References MultiDimBijArray(), gum::MultiDimWithOffset< GUM_SCALAR >::MultiDimWithOffset(), _array_, _name_, gum::MultiDimWithOffset< GUM_SCALAR >::add(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::second(), and gum::MultiDimImplementation< GUM_SCALAR >::variablesSequence().
Referenced by MultiDimBijArray(), MultiDimBijArray(), MultiDimBijArray(), ~MultiDimBijArray(), newFactory(), and operator=().
| gum::MultiDimBijArray< GUM_SCALAR >::MultiDimBijArray | ( | const VarBijection & | bijection, |
| const MultiDimBijArray< GUM_SCALAR > & | array ) |
Class constructor.
| bijection | The bijection between variables in array and variable in this. |
| array | The MultiDimBijArray decorated by this MultiDimBijArray. |
Definition at line 77 of file multiDimBijArray_tpl.h.
References MultiDimBijArray(), gum::MultiDimWithOffset< GUM_SCALAR >::MultiDimWithOffset(), _array_, _name_, gum::MultiDimWithOffset< GUM_SCALAR >::add(), gum::BijectionImplementation< T1, T2, std::is_scalar< T1 >::value &&std::is_scalar< T2 >::value >::second(), and gum::MultiDimImplementation< GUM_SCALAR >::variablesSequence().
| gum::MultiDimBijArray< GUM_SCALAR >::MultiDimBijArray | ( | const MultiDimBijArray< GUM_SCALAR > & | from | ) |
Copy constructor.
The newly created matrix contains the same variables and the same values as from, but no instantiation is associated to it.
| from | The MultiDimBijArray to copy. |
Definition at line 56 of file multiDimBijArray_tpl.h.
References MultiDimBijArray(), gum::MultiDimWithOffset< GUM_SCALAR >::MultiDimWithOffset(), _array_, _name_, gum::MultiDimWithOffset< GUM_SCALAR >::add(), and gum::MultiDimImplementation< GUM_SCALAR >::variablesSequence().
|
virtual |
Class destructor.
Definition at line 88 of file multiDimBijArray_tpl.h.
References MultiDimBijArray().
|
privateinherited |
Change the internalChangeState to NOT_COMMITTED_CHANGE.
Definition at line 282 of file multiDimImplementation_tpl.h.
References _internalChangeState_, and NOT_COMMITTED_CHANGE.
|
virtual |
This will raise an exception: you can't change the variables in a MultiDimBijArray.
| v | The variable not added. |
| OperationNotAllowed | You can't add variable in a MultiDimBijArray. |
Reimplemented from gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 109 of file multiDimBijArray_tpl.h.
References GUM_ERROR.
|
virtualinherited |
Apply a function on every element of the container.
| f | the function to apply |
Reimplemented in gum::MultiDimArray< GUM_SCALAR >, and gum::MultiDimDecorator< GUM_SCALAR >.
Definition at line 205 of file multiDimContainer_tpl.h.
References gum::Instantiation::end(), get(), set(), and gum::Instantiation::setFirst().
|
inherited |
Returns the base class name of this MultiDimImplementation.
This method is used for chosing a proposer operator when no specialized operator have been defined.
Definition at line 294 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Call this method before doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 228 of file multiDimImplementation_tpl.h.
References _internalChangeMethod_, and MULTIPLE_CHANGE.
|
virtualinherited |
Listen to changes in a given Instantiation.
| i | The Instantiation to listen. |
| var | The changed dim. |
| oldval | The old value. |
| newval | The changed value. |
Implements gum::MultiDimAdressable.
Definition at line 126 of file multiDimWithOffset_tpl.h.
References gum::MultiDimImplementation< GUM_SCALAR >::domainSize(), gaps_, and offsets_.
|
protectedvirtual |
Synchronize content after MultipleChanges.
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 129 of file multiDimBijArray_tpl.h.
|
protectedvirtualinherited |
Synchronize content after MultipleChanges.
| value | Default value for uninitialized values. |
Reimplemented in gum::MultiDimArray< GUM_SCALAR >.
Definition at line 258 of file multiDimImplementation_tpl.h.
|
inherited |
The compression ratio of the table (depending on the type of implementation).
This method uses domainSize() and realSize() to compute the ratio, both methods are virtual and should be surcharge if a subclass has a special policies about memory management.
Definition at line 288 of file multiDimImplementation_tpl.h.
References domainSize(), and realSize().
|
protectedinherited |
For a given index of a value in the vector values, this method computes the corresponding instantiation.
| result | the result of this methods, we assume that the given instantiation already contains all the variables contained in the MultiDimArray (if V is the set of variables of this tab, V must be a subset of variables in result or the exact set) |
| indice | The index in the vector values |
| result | the result of this methods, we assume that the given instantiation already contains all the variables contained in the multidimarray (if V is the set of variables of this tab, V must be a subset of variables in result or the exact set) |
| indice | indice in the vector values_ |
Definition at line 256 of file multiDimWithOffset_tpl.h.
References gum::Instantiation::chgVal(), gum::DiscreteVariable::domainSize(), gum::MultiDimImplementation< GUM_SCALAR >::domainSize(), gum::MultiDimImplementation< GUM_SCALAR >::nbrDim(), and gum::MultiDimImplementation< GUM_SCALAR >::variable().
Referenced by fromOffset().
|
overridevirtualinherited |
Returns true if var is in *this.
| v | A DiscreteVariable. |
Implements gum::MultiDimInterface.
Reimplemented in gum::MultiDimBucket< GUM_SCALAR >.
Definition at line 208 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimICIModel< GUM_SCALAR >::causalWeight(), and gum::MultiDimBucket< GUM_SCALAR >::contains().
|
finalprotectedvirtualinherited |
Returns the implementation for this object (may be *this).
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 332 of file multiDimImplementation_tpl.h.
|
finalprotectedvirtualinherited |
Returns the implementation for this object (may be *this).
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 325 of file multiDimImplementation_tpl.h.
References MultiDimImplementation().
|
virtualinherited |
Removes all variables in this MultiDimContainer and copy the content of src, variables included.
| src | The MultiDimContainer to copy. |
Reimplemented in gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, gum::MultiDimFunctionGraph< bool >, gum::MultiDimFunctionGraph< bool, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< double >, gum::MultiDimFunctionGraph< double, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< gum::ActionSet, gum::SetTerminalNodePolicy >, gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >, gum::MultiDimFunctionGraph< Size >, and gum::MultiDimFunctionGraph< Size, ExactTerminalNodePolicy >.
Definition at line 288 of file multiDimContainer_tpl.h.
References MultiDimContainer(), beginMultipleChanges(), gum::MultiDimInterface::erase(), gum::MultiDimInterface::nbrDim(), and gum::MultiDimInterface::variable().
Referenced by gum::TreeRegress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::compute().
|
virtualinherited |
Basic copy of a MultiDimContainer.
This method is virtual because it should be optimized in certain MultiDimContainer.
| src | The MultiDimContainer src which values are copied. This is a full copy with no verification of dimensions. |
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Reimplemented in gum::aggregator::MultiDimAggregator< GUM_SCALAR >, gum::MultiDimArray< GUM_SCALAR >, and gum::MultiDimICIModel< GUM_SCALAR >.
Definition at line 271 of file multiDimContainer_tpl.h.
References MultiDimContainer(), gum::MultiDimInterface::domainSize(), and GUM_ERROR.
Referenced by gum::aggregator::MultiDimAggregator< GUM_SCALAR >::copyFrom(), gum::MultiDimArray< GUM_SCALAR >::copyFrom(), and gum::MultiDimICIModel< GUM_SCALAR >::copyFrom().
|
virtualinherited |
Basic copy of a MultiDimContainer.
This method is virtual because it should be optimized in certain MultiDimContainer.
| src | The MultiDimContainer src which values are copied. |
| p_i | Give the order to iterate in this MultiDimContainer during the copy (nullptr will correctly copy if this is a reorganization of src). |
| OperationNotAllowed | Raised if src does not have the same domain size than this MultiDimContainer. |
Reimplemented in gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >, and gum::MultiDimFunctionGraph< GUM_SCALAR, ExactTerminalNodePolicy >.
Definition at line 225 of file multiDimContainer_tpl.h.
References MultiDimContainer(), gum::MultiDimInterface::domainSize(), and GUM_ERROR.
|
overridevirtualinherited |
Returns the product of the variables domain size.
Implements gum::MultiDimInterface.
Definition at line 183 of file multiDimImplementation_tpl.h.
Referenced by gum::MultiDimArray< GUM_SCALAR >::add(), gum::MultiDimBucket< GUM_SCALAR >::add(), gum::MultiDimWithOffset< GUM_SCALAR >::add(), gum::MultiDimWithOffset< GUM_SCALAR >::changeNotification(), gum::MultiDimArray< GUM_SCALAR >::commitMultipleChanges_(), gum::MultiDimArray< GUM_SCALAR >::commitMultipleChanges_(), gum::MultiDimBucket< GUM_SCALAR >::commitMultipleChanges_(), compressionRate(), gum::MultiDimWithOffset< GUM_SCALAR >::computeInstantiationValue_(), gum::MultiDimArray< GUM_SCALAR >::erase(), gum::MultiDimBucket< GUM_SCALAR >::erase(), gum::aggregator::Sum< GUM_SCALAR >::fold_(), gum::MultiDimArray< GUM_SCALAR >::realSize(), gum::MultiDimBucket< GUM_SCALAR >::setBufferSize(), gum::MultiDimWithOffset< GUM_SCALAR >::setIncNotification(), and gum::MultiDimWithOffset< GUM_SCALAR >::setLastNotification().
|
overridevirtualinherited |
Returns true if no var is in *this.
Implements gum::MultiDimInterface.
Definition at line 222 of file multiDimImplementation_tpl.h.
References _vars_, and isCommitNeeded_().
Referenced by gum::MultiDimBucket< GUM_SCALAR >::_initializeBuffer_(), and gum::MultiDimArray< GUM_SCALAR >::fill().
|
overridevirtualinherited |
Call this method after doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 233 of file multiDimImplementation_tpl.h.
References _internalChangeState_, commitMultipleChanges_(), NO_CHANGE, and NOT_COMMITTED_CHANGE.
|
overridevirtualinherited |
Call this method after doing important changes in this MultiDimContainer.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 243 of file multiDimImplementation_tpl.h.
References _internalChangeMethod_, _internalChangeState_, commitMultipleChanges_(), DIRECT_CHANGE, NO_CHANGE, and NOT_COMMITTED_CHANGE.
|
virtual |
This will raise an exception: you can't change the variables in a MultiDimBijArray.
| v | The variable not added. |
| OperationNotAllowed | You can't add variable in a MultiDimBijArray. |
Reimplemented from gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 114 of file multiDimBijArray_tpl.h.
References GUM_ERROR.
|
virtualinherited |
Basic extraction of a MultiDimContainer.
This method is virtual because it should be optimized in certain MultiDimContainer.
| src | The MultiDimContainer src which datas are copied. |
| mask | partial instantiation of variables of the Tensor : the |
extraction will concern every variable not in the instantiation and the copy of data will use the (relevant) values in this instantiation.
Definition at line 247 of file multiDimContainer_tpl.h.
References MultiDimContainer(), and beginMultipleChanges().
|
virtual |
This will raise an exception: you can't change the data.
| d | the value changed |
| OperationNotAllowed | You can't change data. |
Implements gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 124 of file multiDimBijArray_tpl.h.
References GUM_ERROR.
|
inherited |
Set the Instantiation to the values corresponding to the offset (in this array).
We assume that the given instantiation already contains all the variables contained in the multidimarray (if V is the set of variables of this tab, V must be a subset of variables in result or the exact set).
| i | The instantiation i modified giving the offset. |
| offset | The offset used to compute the value of i. |
Definition at line 290 of file multiDimWithOffset_tpl.h.
References computeInstantiationValue_().
|
virtual |
Returns the value pointed by i.
| i | An Instantiation of this MultiDimContainer. |
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 134 of file multiDimBijArray_tpl.h.
References _array_, gum::MultiDimWithOffset< GUM_SCALAR >::getOffs_(), gum::Instantiation::isMaster(), and gum::MultiDimWithOffset< GUM_SCALAR >::offsets_.
|
protectedvirtual |
Return a data, given a Instantiation.
Note that get allows to change a value in the container. The method is tagged as const since a multidim is not const if its dimension changed.
| i | The instantiation used to find the data. |
Implements gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 160 of file multiDimBijArray_tpl.h.
References GUM_ERROR.
|
virtualinherited |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer.
Implements gum::MultiDimAdressable.
Reimplemented in gum::MultiDimBucket< GUM_SCALAR >.
Definition at line 306 of file multiDimContainer_tpl.h.
References gum::MultiDimAdressable::MultiDimAdressable(), and content().
|
virtualinherited |
In order to insure the dereference for decorators, we need to virtualize the access to master pointer.
Implements gum::MultiDimAdressable.
Reimplemented in gum::MultiDimBucket< GUM_SCALAR >.
Definition at line 311 of file multiDimContainer_tpl.h.
References gum::MultiDimAdressable::MultiDimAdressable(), and content().
|
protectedinherited |
Compute the offset of a Instantiation.
If the instantiation is not fully compatible with the MultiDimWithOffset, no exception thrown but 0 is assumed for dimensions not present in the instantiation.
If the instantiation is not fully compatible with the MultiDimWithOffset, no exception thrown but 0 is assumed for dimensions not present in the instantiation.
for instance : M<
for instance : M<
Definition at line 217 of file multiDimWithOffset_tpl.h.
References gum::Instantiation::contains(), gaps_, GUM_ERROR, and gum::Instantiation::valFromPtr().
Referenced by gum::MultiDimBijArray< GUM_SCALAR >::get(), gum::MultiDimSparse< GUM_SCALAR >::get(), gum::MultiDimArray< GUM_SCALAR >::get_(), registerSlave(), gum::MultiDimSparse< GUM_SCALAR >::set(), setChangeNotification(), and toOffset().
|
protectedvirtualinherited |
Inverts variables at position p1 and p2.
Call this from subclass when you want to invert position of two variables in the MultiDimImplementation.
| p1 | The first position. |
| p2 | The second position. |
Definition at line 312 of file multiDimImplementation_tpl.h.
|
protectedinherited |
Get the actual state of *this.
Definition at line 270 of file multiDimImplementation_tpl.h.
References _internalChangeState_, and NOT_COMMITTED_CHANGE.
Referenced by MultiDimImplementation(), and empty().
|
protectedinherited |
Get the actual change method of this MultiDimImplementation.
Definition at line 264 of file multiDimImplementation_tpl.h.
References _internalChangeMethod_, and MULTIPLE_CHANGE.
Referenced by gum::MultiDimArray< GUM_SCALAR >::add(), gum::MultiDimBucket< GUM_SCALAR >::add(), gum::MultiDimBucket< GUM_SCALAR >::add(), gum::MultiDimArray< GUM_SCALAR >::erase(), gum::MultiDimBucket< GUM_SCALAR >::erase(), and gum::MultiDimBucket< GUM_SCALAR >::erase().
|
virtual |
Returns the real name of the multiDim implementation.
In aGrUM, all the types of multi-dimensional arrays/functionals have a name that describes what they are in reality. For instance, a table stored in extension is a "MultiDimArray", one that stores only non zero elements is a "MultiDimSparseArray", and so on. These names are unique for each type of implementation and is used by the system to determine which is the best functions to use, say, when we wish to use operators such as operator+ on two MultiDimImplementations.
Implements gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 104 of file multiDimBijArray_tpl.h.
References _name_.
|
overridevirtualinherited |
Returns the number of vars in the multidimensional container.
Implements gum::MultiDimInterface.
Definition at line 178 of file multiDimImplementation_tpl.h.
Referenced by gum::aggregator::Amplitude< GUM_SCALAR >::buildValue_(), gum::aggregator::Median< GUM_SCALAR >::buildValue_(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::buildValue_(), gum::MultiDimWithOffset< GUM_SCALAR >::computeInstantiationValue_(), gum::MultiDimICIModel< GUM_SCALAR >::copyFrom(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::get(), gum::MultiDimLogit< GUM_SCALAR >::get(), gum::MultiDimNoisyAND< GUM_SCALAR >::get(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::get(), gum::MultiDimNoisyORNet< GUM_SCALAR >::get(), gum::MultiDimICIModel< GUM_SCALAR >::realSize(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::toString(), gum::MultiDimICIModel< GUM_SCALAR >::toString(), and gum::MultiDimLogit< GUM_SCALAR >::toString().
|
virtual |
Class constructor.
Implements gum::MultiDimWithOffset< GUM_SCALAR >.
Definition at line 99 of file multiDimBijArray_tpl.h.
References MultiDimBijArray().
|
inherited |
Test if this MultiDimContainer is different of p.
| p | The MultiDimContainer to test for inequality. |
Definition at line 171 of file multiDimContainer_tpl.h.
References MultiDimContainer().
| MultiDimBijArray< GUM_SCALAR > & gum::MultiDimBijArray< GUM_SCALAR >::operator= | ( | const MultiDimBijArray< GUM_SCALAR > & | from | ) |
| OperationNotAllowed | Raised since you can't change a readonly structure. |
Definition at line 94 of file multiDimBijArray_tpl.h.
References MultiDimBijArray(), and GUM_ERROR.
|
inherited |
Test if this MultiDimContainer is equal to p.
| p | The MultiDimContainer to test for equality. |
Definition at line 146 of file multiDimContainer_tpl.h.
References MultiDimContainer(), gum::MultiDimInterface::domainSize(), gum::MultiDimInterface::nbrDim(), and gum::MultiDimInterface::variablesSequence().
|
inherited |
An [] operator using a Instantiation as argument.
| i | An Instantiation. |
Definition at line 101 of file multiDimContainer_tpl.h.
References get().
|
virtual |
This will raise an exception: you can't change the variables in a MultiDimBijArray.
| v | The variable not added. |
| OperationNotAllowed | You can't add variable in a MultiDimBijArray. |
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 149 of file multiDimBijArray_tpl.h.
References GUM_ERROR.
|
virtual |
This will raise an exception: you can't change the variables in a MultiDimBijArray.
| l | The variable not added. |
| OperationNotAllowed | You can't add variable in a MultiDimBijArray. |
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 155 of file multiDimBijArray_tpl.h.
References GUM_ERROR.
|
overridevirtualinherited |
Returns the index of a variable.
| v | The variable for which the index is returned. |
| NotFound | Raised if v is not in this multidimensional matrix. |
Implements gum::MultiDimInterface.
Definition at line 203 of file multiDimImplementation_tpl.h.
References _vars_.
Referenced by gum::MultiDimArray< GUM_SCALAR >::erase(), and gum::MultiDimWithOffset< GUM_SCALAR >::erase().
|
virtual |
Returns the real number of parameters used for this table.
This function is used by the MultiDimImplementation::compressionRate() method.
Implements gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 119 of file multiDimBijArray_tpl.h.
|
virtualinherited |
compute lfold for this container
| f | the function to apply |
| base | the initial value |
Reimplemented in gum::MultiDimArray< GUM_SCALAR >, and gum::MultiDimDecorator< GUM_SCALAR >.
Definition at line 214 of file multiDimContainer_tpl.h.
References gum::Instantiation::end(), get(), and gum::Instantiation::setFirst().
|
virtualinherited |
Register i as a slave of this MultiDimAdressable.
| i | The Instantiation to enslave. |
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 189 of file multiDimWithOffset_tpl.h.
References getOffs_(), offsets_, and gum::MultiDimImplementation< GUM_SCALAR >::registerSlave().
|
inherited |
Replace variables in this multidim.
If x is in this MultiDim and y has the same domain size, then x will be replace by y in this MultiDim.
| x | The variable in this which will be replaced. |
| y | The variable replacing y. |
| NotFound | Raised if x does not belong to this MultiDim. |
| OperationNotAllowed | If y and x are not interchangeable. |
| DuplicateElement | If y is already in this MultiDim. |
Definition at line 56 of file multiDimInterface_inl.h.
References contains(), gum::DiscreteVariable::domainSize(), GUM_ERROR, and replace_().
|
protectedvirtual |
Replace variable x by y.
Technically this should be call by any subclass overloading this method to proceed with the changes in this class containers.
| x | The first variable to swap. |
| y | The second variable to swap. |
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 165 of file multiDimBijArray_tpl.h.
References gum::MultiDimImplementation< GUM_SCALAR >::replace_().
|
virtual |
| OperationNotAllowed | Raised since you can't change a readonly structure. |
Reimplemented from gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 143 of file multiDimBijArray_tpl.h.
References GUM_ERROR.
|
virtualinherited |
Listen to an assignment of a value in a Instantiation.
| i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 147 of file multiDimWithOffset_tpl.h.
References getOffs_(), and offsets_.
|
virtualinherited |
Listen to increment in each recorded Instantiation.
| i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 180 of file multiDimWithOffset_tpl.h.
References offsets_.
|
virtualinherited |
Listen to setFirst in a given Instantiation.
| i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 155 of file multiDimWithOffset_tpl.h.
References offsets_.
|
virtualinherited |
Listen to increment in a given Instantiation.
| i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 171 of file multiDimWithOffset_tpl.h.
References gum::MultiDimImplementation< GUM_SCALAR >::domainSize(), and offsets_.
|
virtualinherited |
Listen to setLast in a given Instantiation.
| i | The Instantiation to listen. |
Implements gum::MultiDimAdressable.
Definition at line 163 of file multiDimWithOffset_tpl.h.
References gum::MultiDimImplementation< GUM_SCALAR >::domainSize(), and offsets_.
|
protectedinherited |
Returns a constant reference over the list of slaved instantiations.
Definition at line 276 of file multiDimImplementation_tpl.h.
References _slaveInstantiations_.
Referenced by gum::MultiDimBucket< GUM_SCALAR >::_initializeBuffer_().
|
inherited |
Compute offset from an Instantiation (in this array).
If the instantiation is not fully compatible with the MultiDimWithOffset, no exception will be thrown but 0 is assumed for dimensions not present in the instantiation. for instance : M<
Definition at line 283 of file multiDimWithOffset_tpl.h.
References getOffs_().
|
virtualinherited |
Returns a representation of this MultiDimContainer.
Reimplemented in gum::aggregator::MultiDimAggregator< GUM_SCALAR >, gum::MultiDimDecorator< GUM_SCALAR >, gum::MultiDimICIModel< GUM_SCALAR >, gum::MultiDimLogit< GUM_SCALAR >, gum::MultiDimNoisyAND< GUM_SCALAR >, gum::MultiDimNoisyORCompound< GUM_SCALAR >, gum::MultiDimNoisyORNet< GUM_SCALAR >, and gum::Tensor< GUM_SCALAR >.
Definition at line 123 of file multiDimContainer_tpl.h.
Referenced by gum::operator<<().
|
virtualinherited |
Display the internal representation of i.
Implements gum::MultiDimContainer< GUM_SCALAR >.
Definition at line 270 of file multiDimWithOffset_tpl.h.
References gum::Instantiation::isMaster(), and offsets_.
|
virtualinherited |
Unregister i as a slave of this MultiDimAdressable.
| i | The Instantiation to free. |
Reimplemented from gum::MultiDimImplementation< GUM_SCALAR >.
Definition at line 202 of file multiDimWithOffset_tpl.h.
References offsets_, and gum::MultiDimImplementation< GUM_SCALAR >::unregisterSlave().
|
overridevirtualinherited |
Returns the variable with the name.
| name | The index of the variable |
| NotFound | Raised if the element cannot be found. |
Implements gum::MultiDimInterface.
Definition at line 194 of file multiDimImplementation_tpl.h.
|
overridevirtualinherited |
Returns a const ref to the ith var.
param i An index of this multidimensional matrix.
| NotFound | Raised if i does not reference a variable in this multidimensional matrix. |
Implements gum::MultiDimInterface.
Definition at line 188 of file multiDimImplementation_tpl.h.
References _vars_.
Referenced by gum::aggregator::MultiDimAggregator< GUM_SCALAR >::buildValue_(), gum::MultiDimWithOffset< GUM_SCALAR >::computeInstantiationValue_(), gum::MultiDimICIModel< GUM_SCALAR >::copyFrom(), gum::aggregator::Sum< GUM_SCALAR >::fold_(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::get(), gum::MultiDimLogit< GUM_SCALAR >::get(), gum::MultiDimNoisyAND< GUM_SCALAR >::get(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::get(), gum::MultiDimNoisyORNet< GUM_SCALAR >::get(), gum::aggregator::MultiDimAggregator< GUM_SCALAR >::toString(), gum::MultiDimICIModel< GUM_SCALAR >::toString(), gum::MultiDimLogit< GUM_SCALAR >::toString(), gum::MultiDimNoisyAND< GUM_SCALAR >::toString(), gum::MultiDimNoisyORCompound< GUM_SCALAR >::toString(), and gum::MultiDimNoisyORNet< GUM_SCALAR >::toString().
|
overridevirtualinherited |
Returns a const ref to the sequence of DiscreteVariable*.
Implements gum::MultiDimInterface.
Definition at line 216 of file multiDimImplementation_tpl.h.
References _vars_.
Referenced by gum::MultiDimBijArray< GUM_SCALAR >::MultiDimBijArray(), gum::MultiDimBijArray< GUM_SCALAR >::MultiDimBijArray(), gum::MultiDimBijArray< GUM_SCALAR >::MultiDimBijArray(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::_distance_(), gum::MultiDimFunctionGraphOperator< GUM_SCALAR, FUNCTOR, TerminalNodePolicy >::_findRetrogradeVariables_(), gum::Regress< GUM_SCALAR, COMBINEOPERATOR, PROJECTOPERATOR, TerminalNodePolicy >::_findRetrogradeVariables_(), gum::MultiDimBucket< GUM_SCALAR >::_initializeBuffer_(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::add(), gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::clear(), gum::prm::copyTensor(), gum::MultiDimArray< GUM_SCALAR >::erase(), gum::MultiDimWithOffset< GUM_SCALAR >::erase(), gum::MultiDimFunctionGraphGenerator::generate(), gum::MDDOperatorStrategy< GUM_SCALAR >::lastVar_(), gum::StructuredPlaner< GUM_SCALAR >::makeArgMax_(), gum::TreeOperatorStrategy< GUM_SCALAR >::regress(), and gum::MultiDimFunctionGraph< GUM_SCALAR, TerminalNodePolicy >::varNodeListe().
|
private |
The true data.
Definition at line 196 of file multiDimBijArray.h.
Referenced by MultiDimBijArray(), MultiDimBijArray(), MultiDimBijArray(), and get().
|
privateinherited |
This MultiDimImplementation domain size.
Definition at line 307 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), MultiDimImplementation(), and erase().
|
privateinherited |
The current change method.
Definition at line 301 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), MultiDimImplementation(), beginMultipleChanges(), endMultipleChanges(), and isInMultipleChangeMethod_().
|
privateinherited |
The current change state.
Definition at line 304 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), MultiDimImplementation(), _setNotCommitedChange_(), endMultipleChanges(), endMultipleChanges(), and isCommitNeeded_().
|
private |
The class name.
Definition at line 199 of file multiDimBijArray.h.
Referenced by MultiDimBijArray(), MultiDimBijArray(), MultiDimBijArray(), and name().
|
privateinherited |
List of instantiations of the tuples (sequences) of variables.
Definition at line 292 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), ~MultiDimImplementation(), erase(), replace_(), and slaves_().
|
privateinherited |
List of discrete variables (dimensions).
Definition at line 289 of file multiDimImplementation.h.
Referenced by MultiDimImplementation(), MultiDimImplementation(), empty(), erase(), pos(), registerSlave(), replace_(), variable(), and variablesSequence().
|
protectedinherited |
The gaps between consecutive values of a given variable.
For each variable, we keep track of the interval between two consecutive values of the variable in vector values. Thus, shifting from one value to the next one is equivalent to incrementing/decrementing by gaps the current offset w.r.t. vector values.
Definition at line 200 of file multiDimWithOffset.h.
Referenced by MultiDimWithOffset(), add(), changeNotification(), gum::MultiDimArray< GUM_SCALAR >::erase(), erase(), and getOffs_().
|
protectedinherited |
The position in the array of each slave Instantiation.
Definition at line 203 of file multiDimWithOffset.h.
Referenced by changeNotification(), gum::MultiDimBijArray< GUM_SCALAR >::get(), gum::MultiDimSparse< GUM_SCALAR >::get(), gum::MultiDimArray< GUM_SCALAR >::get_(), registerSlave(), gum::MultiDimSparse< GUM_SCALAR >::set(), setChangeNotification(), setDecNotification(), setFirstNotification(), setIncNotification(), setLastNotification(), toString(), and unregisterSlave().