question: 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 ; 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 ) ) ) ; 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 ) ; }
target:  Perform HiCS on a given database.