Skip to content

Commit b9ce720

Browse files
author
Stefan Hahmann
committed
Refactor UMAP test to use Properties for configuration and update parameter setup
1 parent 2482a0c commit b9ce720

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

src/main/java/org/mastodon/mamut/feature/dimensionalityreduction/tsne/feature/AbstractTSneFeatureComputer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030

3131
import java.lang.invoke.MethodHandles;
3232
import java.util.List;
33-
import java.util.Properties;
3433
import java.util.concurrent.locks.ReentrantReadWriteLock;
3534

3635
import org.mastodon.RefPool;

src/test/java/org/mastodon/mamut/feature/dimensionalityreduction/umap/UmapSmileTest.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,20 @@
44

55
import java.lang.invoke.MethodHandles;
66
import java.util.Arrays;
7+
import java.util.Properties;
78

8-
import org.junit.jupiter.api.Disabled;
99
import org.junit.jupiter.api.Test;
1010
import org.mastodon.mamut.feature.dimensionalityreduction.DimensionalityReductionTestUtils;
1111
import org.mastodon.mamut.feature.dimensionalityreduction.RandomDataTools;
1212
import org.slf4j.Logger;
1313
import org.slf4j.LoggerFactory;
1414

1515
import smile.manifold.UMAP;
16-
import smile.math.MathEx;
1716

1817
class UmapSmileTest
1918
{
2019
private static final Logger logger = LoggerFactory.getLogger( MethodHandles.lookup().lookupClass() );
2120

22-
/*
2321
@Test
2422
void test()
2523
{
@@ -29,11 +27,24 @@ void test()
2927
double[][] sampleData = RandomDataTools.generateSampleData( numCluster1, numCluster2 );
3028

3129
// Recommendations for UMAP defaults: https://github.com/lmcinnes/umap/blob/a012b9d8751d98b94935ca21f278a54b3c3e1b7f/umap/umap_.py#L1073
32-
int iterations = sampleData.length < 10_000 ? 500 : 200;
3330
double minDist = 0.1;
3431
int nNeighbors = 15;
32+
int d = 2;
33+
double learningRate = 1.0;
34+
double spread = 1.0;
35+
int negativeSampleRate = 5;
36+
double repulsionStrength = 1.0;
3537
long t0 = System.currentTimeMillis();
36-
double[][] umapResult = UMAP.of( sampleData, MathEx::distance, nNeighbors, 2, iterations, 1, minDist, 1.0, 5, 1 );
38+
Properties props = new Properties();
39+
props.setProperty( "smile.umap.k", String.valueOf( nNeighbors ) );
40+
props.setProperty( "smile.umap.d", String.valueOf( d ) );
41+
props.setProperty( "smile.umap.learning_rate", String.valueOf( learningRate ) );
42+
props.setProperty( "smile.umap.min_dist", String.valueOf( minDist ) );
43+
props.setProperty( "smile.umap.spread", String.valueOf( spread ) );
44+
props.setProperty( "smile.umap.negative_samples", String.valueOf( negativeSampleRate ) );
45+
props.setProperty( "smile.umap.repulsion_strength", String.valueOf( repulsionStrength ) );
46+
47+
double[][] umapResult = UMAP.fit( sampleData, UMAP.Options.of( props ) );
3748
logger.info( "UMAP took {} ms", System.currentTimeMillis() - t0 );
3849

3950
assertEquals( 2, umapResult[ 0 ].length );
@@ -44,6 +55,4 @@ void test()
4455

4556
DimensionalityReductionTestUtils.testNonOverlappingClusters( umapResult1, umapResult2 ); // should pass
4657
}
47-
48-
*/
4958
}

0 commit comments

Comments
 (0)