private double[] getStatisticalSpectrumDescriptor(double[] dataRow) {
        int N = dataRow.length;
        double ssd[] = new double[N_STATISTICAL_DESCRIPTORS];

        ssd[0] = new Mean().evaluate(dataRow);
        ssd[1] = new Variance().evaluate(dataRow);
        ssd[2] = new Skewness().evaluate(dataRow);
        ssd[3] = new Kurtosis().evaluate(dataRow);

        // NOTE: be careful, sort changes data!
        // (as sonogram.getRow() above copies the data anyway, in this case there is no problem)
        // (otherwise, use dataRow.clone(); )
        Arrays.sort(dataRow);

        // median
        if (N % 2 == 0) {
            ssd[4] = (dataRow[(N / 2) - 1] + dataRow[(N / 2)]) / 2;
        } else {
            ssd[4] = dataRow[(N - 1) / 2];
        }

        ssd[5] = dataRow[0]; // min value
        ssd[6] = dataRow[N - 1]; // max value

        return ssd;
    }