Package org.apache.sysds.runtime.transform.encode

## Class LegacyEncoder

- java.lang.Object
- - org.apache.sysds.runtime.transform.encode.LegacyEncoder

- All Implemented Interfaces:
    `Externalizable`, `Serializable`
  Direct Known Subclasses:
    `EncoderMVImpute`, `EncoderOmit`

      public abstract class LegacyEncoder
      extends Object
      implements Externalizable

  Base class for all transform encoders providing both a row and block interface for decoding frames to matrices.
  See Also:
    Serialized Form

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract MatrixBlock` | `apply​(FrameBlock in, MatrixBlock out)` | Encode input data blockwise according to existing transform meta data (transform apply).
    `abstract void` | `build​(FrameBlock in)` | Build the transform meta data for the given block input.
    `void` | `buildPartial​(FrameBlock in)` | Partial build of internal data structures (e.g., in distributed spark operations).
    `abstract MatrixBlock` | `encode​(FrameBlock in, MatrixBlock out)` | Block encode: build and apply (transform encode).
    `int[]` | `getColList()` |
    `MatrixBlock` | `getColMapping​(FrameBlock meta, MatrixBlock out)` | Obtain the column mapping of encoded frames based on the passed meta data frame.
    `abstract FrameBlock` | `getMetaData​(FrameBlock out)` | Construct a frame block out of the transform meta data.
    `int` | `initColList​(int[] colList)` |
    `int` | `initColList​(org.apache.wink.json4j.JSONArray attrs)` |
    `abstract void` | `initMetaData​(FrameBlock meta)` | Sets up the required meta data for a subsequent call to apply.
    `boolean` | `isApplicable()` | Indicates if this encoder is applicable, i.e, if there is at least one column to encode.
    `int` | `isApplicable​(int colID)` | Indicates if this encoder is applicable for the given column ID, i.e., if it is subject to this transformation.
    `void` | `mergeAt​(LegacyEncoder other, int row, int col)` | Merges another encoder, of a compatible type, in after a certain position.
    `void` | `prepareBuildPartial()` | Allocates internal data structures for partial build.
    `void` | `readExternal​(ObjectInput in)` | Redirects the default java serialization via externalizable to our default hadoop writable serialization for efficient broadcast/rdd deserialization.
    `void` | `setColList​(int[] colList)` |
    `void` | `shiftCols​(int offset)` |
    `LegacyEncoder` | `subRangeEncoder​(IndexRange ixRange)` | Returns a new Encoder that only handles a sub range of columns.
    `void` | `updateIndexRanges​(long[] beginDims, long[] endDims)` | Update index-ranges to after encoding.
    `void` | `writeExternal​(ObjectOutput os)` | Redirects the default java serialization via externalizable to our default hadoop writable serialization for efficient broadcast/rdd serialization.

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

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

- - ### Method Detail

    - #### getColList

          public int[] getColList()

    - #### setColList

          public void setColList​(int[] colList)

    - #### initColList

          public int initColList​(org.apache.wink.json4j.JSONArray attrs)

    - #### initColList

          public int initColList​(int[] colList)

    - #### isApplicable

          public boolean isApplicable()

      Indicates if this encoder is applicable, i.e, if there is at least one column to encode.
      Returns:
        true if at least one column to encode

    - #### isApplicable

          public int isApplicable​(int colID)

      Indicates if this encoder is applicable for the given column ID, i.e., if it is subject to this transformation.
      Parameters:
        `colID` - column ID
      Returns:
        true if encoder is applicable for given column

    - #### encode

          public abstract MatrixBlock encode​(FrameBlock in,
                                             MatrixBlock out)

      Block encode: build and apply (transform encode).
      Parameters:
        `in` - input frame block
        `out` - output matrix block
      Returns:
        output matrix block

    - #### build

          public abstract void build​(FrameBlock in)

      Build the transform meta data for the given block input. This call modifies and keeps meta data as encoder state.
      Parameters:
        `in` - input frame block

    - #### prepareBuildPartial

          public void prepareBuildPartial()

      Allocates internal data structures for partial build.

    - #### buildPartial

          public void buildPartial​(FrameBlock in)

      Partial build of internal data structures (e.g., in distributed spark operations).
      Parameters:
        `in` - input frame block

    - #### apply

          public abstract MatrixBlock apply​(FrameBlock in,
                                            MatrixBlock out)

      Encode input data blockwise according to existing transform meta data (transform apply).
      Parameters:
        `in` - input frame block
        `out` - output matrix block
      Returns:
        output matrix block

    - #### subRangeEncoder

          public LegacyEncoder subRangeEncoder​(IndexRange ixRange)

      Returns a new Encoder that only handles a sub range of columns.
      Parameters:
        `ixRange` - the range (1-based, begin inclusive, end exclusive)
      Returns:
        an encoder of the same type, just for the sub-range

    - #### mergeAt

          public void mergeAt​(LegacyEncoder other,
                              int row,
                              int col)

      Merges another encoder, of a compatible type, in after a certain position. Resizes as necessary. `Encoders` are compatible with themselves and `EncoderComposite` is compatible with every other `Encoder`.
      Parameters:
        `other` - the encoder that should be merged in
        `row` - the row where it should be placed (1-based)
        `col` - the col where it should be placed (1-based)

    - #### updateIndexRanges

          public void updateIndexRanges​(long[] beginDims,
                                        long[] endDims)

      Update index-ranges to after encoding. Note that only Dummycoding changes the ranges.
      Parameters:
        `beginDims` - begin dimensions of range
        `endDims` - end dimensions of range

    - #### getMetaData

          public abstract FrameBlock getMetaData​(FrameBlock out)

      Construct a frame block out of the transform meta data.
      Parameters:
        `out` - output frame block
      Returns:
        output frame block?

    - #### initMetaData

          public abstract void initMetaData​(FrameBlock meta)

      Sets up the required meta data for a subsequent call to apply.
      Parameters:
        `meta` - frame block

    - #### getColMapping

          public MatrixBlock getColMapping​(FrameBlock meta,
                                           MatrixBlock out)

      Obtain the column mapping of encoded frames based on the passed meta data frame.
      Parameters:
        `meta` - meta data frame block
        `out` - output matrix
      Returns:
        matrix with column mapping (one row per attribute)

    - #### writeExternal

          public void writeExternal​(ObjectOutput os)
                             throws IOException

      Redirects the default java serialization via externalizable to our default hadoop writable serialization for efficient broadcast/rdd serialization.
      Specified by:
        `writeExternal` in interface `Externalizable`
      Parameters:
        `os` - object output
      Throws:
        `IOException` - if IOException occurs

    - #### readExternal

          public void readExternal​(ObjectInput in)
                            throws IOException

      Redirects the default java serialization via externalizable to our default hadoop writable serialization for efficient broadcast/rdd deserialization.
      Specified by:
        `readExternal` in interface `Externalizable`
      Parameters:
        `in` - object input
      Throws:
        `IOException` - if IOException occur

    - #### shiftCols

          public void shiftCols​(int offset)