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
    Modifier and Type | Method | Description
    --- | --- | ---
    `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`