docs: public OutlierResult run(Relation<? extends NumberVector> relation) {
      final DBIDs ids = relation.getDBIDs();
      WritableDoubleDataStore ranks = DataStoreUtil.makeDoubleStorage(ids, DataStoreFactory.HINT_STATIC);
      DoubleMinMax minmax = new DoubleMinMax();
  
      KernelDensityEstimator kernel = new KernelDensityEstimator(relation, eps);
      long[] subspace = BitsUtil.zero(kernel.dim);
  
      FiniteProgress progress = LOG.isVerbose() ? new FiniteProgress("OUTRES scores", ids.size(), LOG) : null;
  
      for(DBIDIter iditer = ids.iter(); iditer.valid(); iditer.advance()) {
        BitsUtil.zeroI(subspace);
        double score = outresScore(0, subspace, iditer, kernel, ids);
        ranks.putDouble(iditer, score);
        minmax.put(score);
        LOG.incrementProcessed(progress);
      }
      LOG.ensureCompleted(progress);
  
      OutlierScoreMeta meta = new InvertedOutlierScoreMeta(minmax.getMin(), minmax.getMax(), 0., 1., 1.);
      return new OutlierResult(meta, new MaterializedDoubleRelation("OUTRES", "outres-score", ranks, ids));
    }