44
55import java .lang .invoke .MethodHandles ;
66import java .util .Arrays ;
7+ import java .util .Properties ;
78
8- import org .junit .jupiter .api .Disabled ;
99import org .junit .jupiter .api .Test ;
1010import org .mastodon .mamut .feature .dimensionalityreduction .DimensionalityReductionTestUtils ;
1111import org .mastodon .mamut .feature .dimensionalityreduction .RandomDataTools ;
1212import org .slf4j .Logger ;
1313import org .slf4j .LoggerFactory ;
1414
1515import smile .manifold .UMAP ;
16- import smile .math .MathEx ;
1716
1817class 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