protected double inverseTransform()

in Java/parkservices/src/main/java/com/amazon/randomcutforest/parkservices/preprocessor/Preprocessor.java [506:531]


    protected double inverseTransform(double value, int index, int relativeBlockIndex) {
        if (transformMethod == TransformMethod.NONE) {
            return value;
        }
        if (!requireInitialSegment(false, transformMethod)) {
            if (transformMethod == TransformMethod.WEIGHTED) {
                return (weights[index] == 0) ? 0 : value / weights[index];
            } else if (transformMethod == TransformMethod.SUBTRACT_MA) {
                return (weights[index] == 0) ? 0 : (value + deviationList[index].getMean()) / weights[index];
            }
            double[] difference = getShingledInput(shingleSize - 1 + relativeBlockIndex);
            checkArgument(transformMethod == TransformMethod.DIFFERENCE, "incorrect configuration");
            return (weights[index] == 0) ? 0 : (value + difference[index]) / weights[index];
        } else {
            if (transformMethod == TransformMethod.NORMALIZE) {
                double newValue = deviationList[index].getMean()
                        + 2 * value * (deviationList[index].getDeviation() + DEFAULT_NORMALIZATION_PRECISION);
                return (weights[index] == 0) ? 0 : newValue / weights[index];
            }
            checkArgument(transformMethod == TransformMethod.NORMALIZE_DIFFERENCE, "incorrect configuration");
            double[] difference = getShingledInput(shingleSize - 1 + relativeBlockIndex);
            double newValue = difference[index] + deviationList[index].getMean()
                    + 2 * value * (deviationList[index].getDeviation() + DEFAULT_NORMALIZATION_PRECISION);
            return (weights[index] == 0) ? 0 : newValue / weights[index];
        }
    }