docs: private ScalesResult run(Relation<? extends NumberVector> rel) {
      final int dim = RelationUtil.dimensionality(rel);
      LinearScale[] scales = new LinearScale[dim];
      if(minmax == null) {
        DoubleMinMax mm = new DoubleMinMax();
        for(DBIDIter iditer = rel.iterDBIDs(); iditer.valid(); iditer.advance()) {
          NumberVector vec = rel.get(iditer);
          for(int d = 0; d < dim; d++) {
            final double val = vec.doubleValue(d);
            if(val != val) {
              continue; // NaN
            }
            mm.put(val);
          }
        }
        LinearScale scale = new LinearScale(mm.getMin(), mm.getMax());
        for(int i = 0; i < dim; i++) {
          scales[i] = scale;
        }
      }
      else {
        // Use predefined.
        LinearScale scale = new LinearScale(minmax[0], minmax[1]);
        for(int i = 0; i < dim; i++) {
          scales[i] = scale;
        }
      }
      ScalesResult res = new ScalesResult(scales);
      return res;
    }