docs: public OutlierResult run(Relation<V> relation) {
      final DBIDs ids = relation.getDBIDs();
  
      ArrayList<ArrayDBIDs> subspaceIndex = buildOneDimIndexes(relation);
      Set<HiCSSubspace> subspaces = calculateSubspaces(relation, subspaceIndex, rnd.getSingleThreadedRandom());
  
      if(LOG.isVerbose()) {
        LOG.verbose("Number of high-contrast subspaces: " + subspaces.size());
      }
      List<DoubleRelation> results = new ArrayList<>();
      FiniteProgress prog = LOG.isVerbose() ? new FiniteProgress("Calculating Outlier scores for high Contrast subspaces", subspaces.size(), LOG) : null;
  
      // run outlier detection and collect the result
      // TODO extend so that any outlierAlgorithm can be used (use materialized
      // relation instead of SubspaceEuclideanDistanceFunction?)
      for(HiCSSubspace dimset : subspaces) {
        if(LOG.isVerbose()) {
          LOG.verbose("Performing outlier detection in subspace " + dimset);
        }
  
        ProxyDatabase pdb = new ProxyDatabase(ids);
        pdb.addRelation(new ProjectedView<>(relation, new NumericalFeatureSelection<V>(dimset)));
  
        // run LOF and collect the result
        OutlierResult result = outlierAlgorithm.run(pdb);
        results.add(result.getScores());
        LOG.incrementProcessed(prog);
      }
      LOG.ensureCompleted(prog);
  
      WritableDoubleDataStore scores = DataStoreUtil.makeDoubleStorage(relation.getDBIDs(), DataStoreFactory.HINT_STATIC);
      DoubleMinMax minmax = new DoubleMinMax();
  
      for(DBIDIter iditer = relation.iterDBIDs(); iditer.valid(); iditer.advance()) {
        double sum = 0.0;
        for(DoubleRelation r : results) {
          final double s = r.doubleValue(iditer);
          if(!Double.isNaN(s)) {
            sum += s;
          }
        }
        scores.putDouble(iditer, sum);
        minmax.put(sum);
      }
      OutlierScoreMeta meta = new BasicOutlierScoreMeta(minmax.getMin(), minmax.getMax());
      DoubleRelation scoreres = new MaterializedDoubleRelation("HiCS", "HiCS-outlier", scores, relation.getDBIDs());
  
      return new OutlierResult(meta, scoreres);
    }