Package org.apache.sysds.runtime.compress.colgroup

## Class ColGroupDDCFOR

- java.lang.Object
- - org.apache.sysds.runtime.compress.colgroup.AColGroup
  - - org.apache.sysds.runtime.compress.colgroup.AColGroupCompressed
    - - org.apache.sysds.runtime.compress.colgroup.AColGroupValue
      - - org.apache.sysds.runtime.compress.colgroup.AMorphingMMColGroup
        - - org.apache.sysds.runtime.compress.colgroup.ColGroupDDCFOR

All Implemented Interfaces:
  `Serializable`, `Cloneable`

    public class ColGroupDDCFOR
    extends AMorphingMMColGroup

Class to encapsulate information about a column group that is encoded with dense dictionary encoding (DDC).

See Also:
  Serialized Form

### Nested Class Summary

### Nested classes/interfaces inherited from class org.apache.sysds.runtime.compress.colgroup.AColGroup

`AColGroup.CompressionType`

### Method Summary

All Methods Instance Methods Concrete Methods
`AColGroup` `binaryRowOpLeft​(BinaryOperator op, double[] v, boolean isRowSafe)` Perform a binary row operation.
`AColGroup` `binaryRowOpRight​(BinaryOperator op, double[] v, boolean isRowSafe)` Perform a binary row operation.
`CM_COV_Object` `centralMoment​(CMOperator op, int nRows)` Central Moment instruction executed on a column group.
`void` `computeColSums​(double[] c, int nRows)` Compute the column sum
`boolean` `containsValue​(double pattern)` Detect if the column group contains a specific value.
`long` `estimateInMemorySize()` Get the upper bound estimate of in memory allocation for the column group.
`AColGroup` `extractCommon​(double[] constV)`
`org.apache.sysds.runtime.compress.colgroup.AColGroup.ColGroupType` `getColGroupType()`
`AColGroup.CompressionType` `getCompType()` Obtain the compression type.
`double` `getCost​(ComputationCostEstimator e, int nRows)` Get the computation cost associated with this column group.
`int[]` `getCounts​(int[] counts)`
`long` `getExactSizeOnDisk()` Returns the exact serialized size of column group.
`double` `getIdx​(int r, int colIdx)` Get the value at a colGroup specific row/column index position.
`long` `getNumberNonZeros​(int nRows)` Get the number of nonZeros contained in this column group.
`void` `leftMultByMatrixNoPreAgg​(MatrixBlock matrix, MatrixBlock result, int rl, int ru, int cl, int cu)` Left multiply with this column group.
`void` `readFields​(DataInput in)` Deserialize column group from data input.
`AColGroup` `replace​(double pattern, double replace)` Make a copy of the column group values, and replace all values that match pattern with replacement value.
`AColGroup` `rexpandCols​(int max, boolean ignore, boolean cast, int nRows)` Expand the column group to multiple columns.
`AColGroup` `scalarOperation​(ScalarOperator op)` Perform the specified scalar operation directly on the compressed column group, without decompressing individual cells if possible.
`String` `toString()`
`AColGroup` `unaryOperation​(UnaryOperator op)`
`void` `write​(DataOutput out)` Serializes column group to data output.

### Methods inherited from class org.apache.sysds.runtime.compress.colgroup.AMorphingMMColGroup

`leftMultByAColGroup, tsmmAColGroup`

### Methods inherited from class org.apache.sysds.runtime.compress.colgroup.AColGroupValue

`copy, decompressToDenseBlock, decompressToSparseBlock, forceMatrixBlockDictionary, getCachedCounts, getCounts, getDictionary, getNumValues, rightMultByMatrix`

### Methods inherited from class org.apache.sysds.runtime.compress.colgroup.AColGroupCompressed

`getMax, getMin, preAggRows, tsmm, unaryAggregateOperations, unaryAggregateOperations`

### Methods inherited from class org.apache.sysds.runtime.compress.colgroup.AColGroup

`colSum, decompressToDenseBlock, decompressToSparseBlock, get, getColIndices, getNumCols, shiftColIndices, sliceColumn, sliceColumns`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Method Detail

#### getCompType

    public AColGroup.CompressionType getCompType()

Description copied from class: `AColGroup`
Obtain the compression type.

Specified by:
  `getCompType` in class `AColGroup`
Returns:
  How the elements of the column group are compressed.

#### getIdx

    public double getIdx​(int r,
                         int colIdx)

Description copied from class: `AColGroup`
Get the value at a colGroup specific row/column index position.

Specified by:
  `getIdx` in class `AColGroup`
Parameters:
  `r` - row
  `colIdx` - column index in the _colIndexes.
Returns:
  value at the row/column index position

#### getCounts

    public int[] getCounts​(int[] counts)

Specified by:
  `getCounts` in class `AColGroupValue`

#### leftMultByMatrixNoPreAgg

    public void leftMultByMatrixNoPreAgg​(MatrixBlock matrix,
                                         MatrixBlock result,
                                         int rl,
                                         int ru,
                                         int cl,
                                         int cu)

Description copied from class: `AColGroup`
Left multiply with this column group.

Overrides:
  `leftMultByMatrixNoPreAgg` in class `AMorphingMMColGroup`
Parameters:
  `matrix` - The matrix to multiply with on the left
  `result` - The result to output the values into, always dense for the purpose of the column groups parallelizing
  `rl` - The row to begin the multiplication from on the lhs matrix
  `ru` - The row to end the multiplication at on the lhs matrix
  `cl` - The column to begin the multiplication from on the lhs matrix
  `cu` - The column to end the multiplication at on the lhs matrix

#### getColGroupType

    public org.apache.sysds.runtime.compress.colgroup.AColGroup.ColGroupType getColGroupType()

#### estimateInMemorySize

    public long estimateInMemorySize()

Description copied from class: `AColGroup`
Get the upper bound estimate of in memory allocation for the column group.

Overrides:
  `estimateInMemorySize` in class `AColGroupValue`
Returns:
  an upper bound on the number of bytes used to store this ColGroup in memory.

#### scalarOperation

    public AColGroup scalarOperation​(ScalarOperator op)

Description copied from class: `AColGroup`
Perform the specified scalar operation directly on the compressed column group, without decompressing individual cells if possible.

Specified by:
  `scalarOperation` in class `AColGroup`
Parameters:
  `op` - operation to perform
Returns:
  version of this column group with the operation applied

#### unaryOperation

    public AColGroup unaryOperation​(UnaryOperator op)

Specified by:
  `unaryOperation` in class `AColGroup`

#### binaryRowOpLeft

    public AColGroup binaryRowOpLeft​(BinaryOperator op,
                                     double[] v,
                                     boolean isRowSafe)

Description copied from class: `AColGroup`
Perform a binary row operation.

Specified by:
  `binaryRowOpLeft` in class `AColGroup`
Parameters:
  `op` - The operation to execute
  `v` - The vector of values to apply, should be same length as dictionary length.
  `isRowSafe` - True if the binary op is applied to an entire zero row and all results are zero
Returns:
  A updated column group with the new values.

#### binaryRowOpRight

    public AColGroup binaryRowOpRight​(BinaryOperator op,
                                      double[] v,
                                      boolean isRowSafe)

Description copied from class: `AColGroup`
Perform a binary row operation.

Specified by:
  `binaryRowOpRight` in class `AColGroup`
Parameters:
  `op` - The operation to execute
  `v` - The vector of values to apply, should be same length as dictionary length.
  `isRowSafe` - True if the binary op is applied to an entire zero row and all results are zero
Returns:
  A updated column group with the new values.

#### write

    public void write​(DataOutput out)
               throws IOException

Description copied from class: `AColGroup`
Serializes column group to data output.

Overrides:
  `write` in class `AColGroupValue`
Parameters:
  `out` - data output
Throws:
  `IOException` - if IOException occurs

#### readFields

    public void readFields​(DataInput in)
                    throws IOException

Description copied from class: `AColGroup`
Deserialize column group from data input.

Overrides:
  `readFields` in class `AColGroupValue`
Parameters:
  `in` - data input
Throws:
  `IOException` - if IOException occurs

#### getExactSizeOnDisk

    public long getExactSizeOnDisk()

Description copied from class: `AColGroup`
Returns the exact serialized size of column group. This can be used for example for buffer preallocation.

Overrides:
  `getExactSizeOnDisk` in class `AColGroupValue`
Returns:
  exact serialized size for column group

#### getCost

    public double getCost​(ComputationCostEstimator e,
                          int nRows)

Description copied from class: `AColGroup`
Get the computation cost associated with this column group.

Specified by:
  `getCost` in class `AColGroup`
Parameters:
  `e` - The computation cost estimator
  `nRows` - the number of rows in the column group
Returns:
  The cost of this column group

#### replace

    public AColGroup replace​(double pattern,
                             double replace)

Description copied from class: `AColGroup`
Make a copy of the column group values, and replace all values that match pattern with replacement value.

Overrides:
  `replace` in class `AColGroupValue`
Parameters:
  `pattern` - The value to look for
  `replace` - The value to replace the other value with
Returns:
  A new Column Group, reusing the index structure but with new values.

#### computeColSums

    public void computeColSums​(double[] c,
                               int nRows)

Description copied from class: `AColGroup`
Compute the column sum

Overrides:
  `computeColSums` in class `AColGroupValue`
Parameters:
  `c` - The array to add the column sum to.
  `nRows` - The number of rows in the column group.

#### containsValue

    public boolean containsValue​(double pattern)

Description copied from class: `AColGroup`
Detect if the column group contains a specific value.

Overrides:
  `containsValue` in class `AColGroupValue`
Parameters:
  `pattern` - The value to look for.
Returns:
  boolean saying true if the value is contained.

#### getNumberNonZeros

    public long getNumberNonZeros​(int nRows)

Description copied from class: `AColGroup`
Get the number of nonZeros contained in this column group.

Overrides:
  `getNumberNonZeros` in class `AColGroupValue`
Parameters:
  `nRows` - The number of rows in the column group, this is used for groups that does not contain information about how many rows they have.
Returns:
  The nnz.

#### extractCommon

    public AColGroup extractCommon​(double[] constV)

Specified by:
  `extractCommon` in class `AMorphingMMColGroup`

#### rexpandCols

    public AColGroup rexpandCols​(int max,
                                 boolean ignore,
                                 boolean cast,
                                 int nRows)

Description copied from class: `AColGroup`
Expand the column group to multiple columns. (one hot encode the column group)

Overrides:
  `rexpandCols` in class `AColGroupValue`
Parameters:
  `max` - The number of columns to expand to and cutoff values at.
  `ignore` - If zero and negative values should be ignored.
  `cast` - If the double values contained should be cast to whole numbers.
  `nRows` - The number of rows in the column group.
Returns:
  A new column group containing max number of columns.

#### centralMoment

    public CM_COV_Object centralMoment​(CMOperator op,
                                       int nRows)

Description copied from class: `AColGroup`
Central Moment instruction executed on a column group.

Overrides:
  `centralMoment` in class `AColGroupValue`
Parameters:
  `op` - The Operator to use.
  `nRows` - The number of rows contained in the ColumnGroup.
Returns:
  A Central Moment object.

#### toString

    public String toString()

Overrides:
  `toString` in class `AColGroupValue`