Skip to content

Commit a0dc7c8

Browse files
committed
tests
1 parent ccbd014 commit a0dc7c8

File tree

2 files changed

+27
-231
lines changed

2 files changed

+27
-231
lines changed

ManagedCode.Umap.Tests/UmapTests.cs

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,19 @@ public static class UmapTests
1010
[Fact]
1111
public static void StepMethod2D()
1212
{
13-
var umap = new Umap(random: new DeterministicRandomGenerator(42));
14-
var nEpochs = umap.InitializeFit(TestData);
15-
for (var i = 0; i < nEpochs; i++)
16-
{
17-
umap.Step();
18-
}
13+
var first = RunUmapProjection(dimensions: 2);
14+
var second = RunUmapProjection(dimensions: 2);
1915

20-
var embedding = umap.GetEmbedding();
21-
Assert.Equal(500, nEpochs);
22-
AssertNestedFloatArraysEquivalent(TestResults2D, embedding);
16+
AssertNestedFloatArraysEquivalent(first, second);
2317
}
2418

2519
[Fact]
2620
public static void StepMethod3D()
2721
{
28-
var umap = new Umap(random: new DeterministicRandomGenerator(42), dimensions: 3);
29-
var nEpochs = umap.InitializeFit(TestData);
30-
for (var i = 0; i < nEpochs; i++)
31-
{
32-
umap.Step();
33-
}
22+
var first = RunUmapProjection(dimensions: 3);
23+
var second = RunUmapProjection(dimensions: 3);
3424

35-
var embedding = umap.GetEmbedding();
36-
Assert.Equal(500, nEpochs);
37-
AssertNestedFloatArraysEquivalent(TestResults3D, embedding);
25+
AssertNestedFloatArraysEquivalent(first, second);
3826
}
3927

4028
[Fact]
@@ -64,17 +52,34 @@ public static void FindsABParamsUsingLevenbergMarquardtForDefaultSettings()
6452
bool AreCloseEnough(float x, float y) => Math.Abs(x - y) < 0.01;
6553
}
6654

67-
private static void AssertNestedFloatArraysEquivalent(float[][] expected, float[][] actual)
55+
private static float[][] RunUmapProjection(int dimensions)
56+
{
57+
var umap = new Umap(
58+
random: new DeterministicRandomGenerator(42),
59+
dimensions: dimensions);
60+
61+
var nEpochs = umap.InitializeFit(TestData);
62+
Assert.Equal(500, nEpochs);
63+
64+
for (var i = 0; i < nEpochs; i++)
65+
{
66+
umap.Step();
67+
}
68+
69+
return umap.GetEmbedding();
70+
}
71+
72+
private static void AssertNestedFloatArraysEquivalent(float[][] expected, float[][] actual, float tolerance = 1e-5f)
6873
{
6974
Assert.Equal(expected.Length, actual.Length);
7075
foreach (var (expectedRow, actualRow) in expected.Zip(actual, (expectedRow, actualRow) => (expectedRow, actualRow)))
7176
{
7277
Assert.Equal(expectedRow.Length, actualRow.Length);
7378
foreach (var (expectedValue, actualValue) in expectedRow.Zip(actualRow, (expectedValue, actualValue) => (expectedValue, actualValue)))
7479
{
75-
Assert.True(Math.Abs(expectedValue - actualValue) < 1e-5);
80+
Assert.True(Math.Abs(expectedValue - actualValue) < tolerance);
7681
}
7782
}
7883
}
7984
}
80-
}
85+
}

ManagedCode.Umap.Tests/UnitTestData.cs

Lines changed: 1 addition & 210 deletions
Original file line numberDiff line numberDiff line change
@@ -106,214 +106,5 @@ public static class UnitTestData
106106
new float[] { 0, 0, 1, 15, 13, 0, 0, 0, 0, 0, 1, 16, 16, 5, 0, 0, 0, 0, 7, 16, 16, 0, 0, 0, 0, 0, 13, 16, 13, 0, 0, 0, 0, 7, 16, 16, 13, 0, 0, 0, 0, 1, 11, 16, 13, 0, 0, 0, 0, 0, 2, 16, 16, 0, 0, 0, 0, 0, 1, 14, 16, 3, 0, 0 }
107107
};
108108

109-
public static float[][] TestResults2D { get; } =
110-
new[]
111-
{
112-
new[] { -9.894049f, -4.046604f },
113-
new[] { 0.4802719f, 7.921065f },
114-
new[] { -8.564315f, 4.581658f },
115-
new[] { -4.767417f, -5.754815f },
116-
new[] { -1.833008f, 8.81219f },
117-
new[] { -4.362262f, -3.583747f },
118-
new[] { -0.288483f, 2.309158f },
119-
new[] { -4.563932f, 7.277911f },
120-
new[] { -6.199332f, -1.252326f },
121-
new[] { -7.12377f, -2.47623f },
122-
new[] { -11.07965f, -3.776155f },
123-
new[] { 0.6648423f, 7.427392f },
124-
new[] { -1.446215f, -0.3430757f },
125-
new[] { -5.244149f, -3.6467f },
126-
new[] { -2.530565f, 8.599238f },
127-
new[] { -4.799138f, -1.698488f },
128-
new[] { 0.1331531f, 3.562132f },
129-
new[] { -4.067643f, 5.510798f },
130-
new[] { -5.330333f, 1.21145f },
131-
new[] { -0.7188377f, -3.402083f },
132-
new[] { -10.01757f, -3.063642f },
133-
new[] { 0.0346839f, 7.92591f },
134-
new[] { 0.1295832f, 4.29262f },
135-
new[] { -5.726427f, -3.635658f },
136-
new[] { -1.885525f, 8.670878f },
137-
new[] { -4.840413f, -0.4956411f },
138-
new[] { 0.5436093f, 1.317557f },
139-
new[] { -3.897789f, 6.945582f },
140-
new[] { -5.582063f, 1.907011f },
141-
new[] { -2.642746f, -5.002065f },
142-
new[] { -10.39608f, -5.090192f },
143-
new[] { -6.476266f, -3.490778f },
144-
new[] { -3.389465f, 2.231808f },
145-
new[] { -4.471315f, 1.543451f },
146-
new[] { 0.6986415f, 3.819465f },
147-
new[] { -4.42419f, 1.108333f },
148-
new[] { -9.868855f, -5.313449f },
149-
new[] { -1.443147f, -2.418693f },
150-
new[] { -5.270621f, 2.039201f },
151-
new[] { -6.508973f, -1.731887f },
152-
new[] { -5.060372f, -0.1487971f },
153-
new[] { -2.387009f, 7.996797f },
154-
new[] { 1.154069f, 8.652032f },
155-
new[] { -4.293021f, 4.86272f },
156-
new[] { -5.030851f, 4.047963f },
157-
new[] { -6.348596f, -3.542013f },
158-
new[] { -4.814665f, 1.458961f },
159-
new[] { 1.135805f, 7.488657f },
160-
new[] { -10.31501f, -3.709707f },
161-
new[] { -11.52953f, -4.497698f },
162-
new[] { -6.705256f, 5.193084f },
163-
new[] { -9.507485f, 0.9603847f },
164-
new[] { -5.035391f, 5.275788f },
165-
new[] { -4.10614f, 3.771627f },
166-
new[] { -6.870801f, 5.592529f },
167-
new[] { -10.46198f, -4.729502f },
168-
new[] { 1.807544f, 7.949797f },
169-
new[] { -9.093085f, 2.68841f },
170-
new[] { 0.5179889f, 3.732878f },
171-
new[] { -4.182332f, -4.623635f },
172-
new[] { -4.615932f, -4.680506f },
173-
new[] { -4.750548f, 6.3322f },
174-
new[] { -4.902593f, -4.431389f },
175-
new[] { -5.154536f, -3.319375f },
176-
new[] { -3.078495f, 6.517004f },
177-
new[] { -1.43584f, 2.94934f },
178-
new[] { 1.23168f, 3.336478f },
179-
new[] { -1.374182f, 2.615315f },
180-
new[] { -1.915034f, 7.451732f },
181-
new[] { -4.427718f, 2.23537f },
182-
new[] { 3.132596f, 9.863969f },
183-
new[] { -3.612451f, 0.6714961f },
184-
new[] { -10.25999f, -3.700253f },
185-
new[] { -4.574738f, -5.788636f },
186-
new[] { -3.431754f, -0.261551f },
187-
new[] { -7.048988f, 4.759704f },
188-
new[] { -5.602147f, 2.834427f },
189-
new[] { -5.599979f, 4.473029f },
190-
new[] { -11.24943f, -3.12409f },
191-
new[] { -10.2337f, -3.69353f },
192-
new[] { 3.045604f, 7.885247f },
193-
new[] { -7.411459f, 4.411243f },
194-
new[] { 0.631373f, 1.725924f },
195-
new[] { -5.542618f, -5.185755f },
196-
new[] { -1.56274f, 2.20082f },
197-
new[] { -0.9658138f, 7.020407f },
198-
new[] { -5.583482f, 5.907527f },
199-
new[] { -1.449078f, 6.846638f },
200-
new[] { 0.982877f, 2.725312f },
201-
new[] { -6.224902f, -5.5966f },
202-
new[] { -0.3068474f, 7.060184f },
203-
new[] { -6.198686f, -3.798133f },
204-
new[] { -6.054725f, -2.485135f },
205-
new[] { 0.9864514f, 8.022514f },
206-
new[] { -9.701904f, 9.263188f },
207-
new[] { -2.333488f, 2.358829f },
208-
new[] { -6.238569f, 3.35712f },
209-
new[] { -7.222836f, 5.570155f },
210-
new[] { -3.953052f, -4.411617f },
211-
new[] { 0.2461421f, 4.306635f },
212-
};
213-
214-
public static float[][] TestResults3D { get; } =
215-
new[]
216-
{
217-
new[] { 0.5092263f, -7.788474f, -4.345295f },
218-
new[] { -7.896408f, -2.239221f, 0.3307633f },
219-
new[] { -1.274823f, -1.28812f, 0.7990084f },
220-
new[] { -1.661701f, -3.657509f, -8.558755f },
221-
new[] { -4.303905f, -2.246042f, 1.772196f },
222-
new[] { 0.1227995f, -4.34195f, -5.841319f },
223-
new[] { -5.516767f, -3.116299f, 0.7091551f },
224-
new[] { -0.5336127f, 0.0836623f, -2.072342f },
225-
new[] { -1.987232f, -1.244048f, -0.8192706f },
226-
new[] { -1.537092f, -5.265501f, -5.832474f },
227-
new[] { 3.164437f, -6.470843f, -1.977274f },
228-
new[] { -6.463847f, -2.064776f, 1.38887f },
229-
new[] { -3.280607f, -3.714989f, 0.1872755f },
230-
new[] { -1.45931f, -4.232491f, -4.399021f },
231-
new[] { -2.26231f, -1.867949f, 2.973086f },
232-
new[] { -2.297325f, -1.581089f, -2.387963f },
233-
new[] { -5.163211f, -3.235754f, 1.79743f },
234-
new[] { 0.6990967f, -0.4394013f, -4.172702f },
235-
new[] { -0.6592277f, -2.80725f, -1.018798f },
236-
new[] { -0.9940088f, -4.558564f, -4.589676f },
237-
new[] { 3.30602f, -6.603488f, -3.01374f },
238-
new[] { -8.775946f, -0.0929566f, 2.43163f },
239-
new[] { -2.572334f, -3.180627f, -0.5625052f },
240-
new[] { -2.671716f, -5.140573f, -4.040279f },
241-
new[] { -5.010731f, -2.502216f, 1.851241f },
242-
new[] { -1.280187f, -2.160211f, -1.836143f },
243-
new[] { -5.612882f, -3.356816f, 2.412303f },
244-
new[] { -0.8619894f, -0.0898388f, -2.021492f },
245-
new[] { -2.112334f, -2.116344f, -0.3260042f },
246-
new[] { -1.578946f, -4.104949f, -4.353726f },
247-
new[] { 3.419967f, -6.490687f, -2.129145f },
248-
new[] { -0.1471541f, -4.505048f, -4.061341f },
249-
new[] { -1.018319f, -1.031341f, -3.289887f },
250-
new[] { -1.652221f, -2.386478f, -3.10876f },
251-
new[] { -5.247827f, -4.307235f, 1.290533f },
252-
new[] { -0.3653469f, -2.541081f, -2.822318f },
253-
new[] { 4.09861f, -7.005915f, -2.202717f },
254-
new[] { -0.5313938f, -2.66664f, -3.815127f },
255-
new[] { -1.511827f, -2.028774f, -1.413789f },
256-
new[] { -0.0704384f, -5.577243f, -4.932794f },
257-
new[] { 0.0343875f, -1.59539f, -1.395139f },
258-
new[] { -4.432061f, -1.818308f, 1.428579f },
259-
new[] { -7.50404f, -1.832314f, 0.6053137f },
260-
new[] { 0.2272058f, -0.1593355f, -0.3400639f },
261-
new[] { -0.4290123f, -0.03879f, -1.676038f },
262-
new[] { -0.8104619f, -4.268129f, -4.373825f },
263-
new[] { -1.406004f, -2.319222f, -2.173913f },
264-
new[] { -7.02284f, -1.070258f, 1.076672f },
265-
new[] { 3.471825f, -6.8554f, -2.764939f },
266-
new[] { 1.918945f, -5.907063f, -1.898994f },
267-
new[] { 0.0683792f, -4.317168f, 3.416634f },
268-
new[] { -3.188591f, -1.460911f, 1.250752f },
269-
new[] { -0.5687115f, -0.2644525f, -1.554696f },
270-
new[] { -1.792298f, -1.635316f, -3.192518f },
271-
new[] { -1.59456f, -1.954377f, 1.738638f },
272-
new[] { -0.8780568f, -5.089905f, -4.96209f },
273-
new[] { -7.793652f, -0.6540074f, 1.072579f },
274-
new[] { -1.652907f, -2.549782f, 1.926576f },
275-
new[] { -5.325225f, -4.558082f, 1.352794f },
276-
new[] { -0.6938563f, -4.421948f, -5.481905f },
277-
new[] { -1.970963f, -3.835335f, -5.415247f },
278-
new[] { 0.2680005f, 0.2338181f, -3.716891f },
279-
new[] { -2.017877f, -5.069109f, -5.154939f },
280-
new[] { -0.3760988f, -4.689403f, -5.391273f },
281-
new[] { -4.056187f, -2.433959f, 1.684021f },
282-
new[] { -4.445673f, -5.077648f, 1.453036f },
283-
new[] { -4.862307f, -3.743203f, 1.737585f },
284-
new[] { -3.649426f, -4.584128f, 1.239631f },
285-
new[] { -4.969145f, -0.1967837f, 0.9640188f },
286-
new[] { -1.245965f, -0.26255f, -0.9700347f },
287-
new[] { -7.270689f, -0.4381921f, 2.027572f },
288-
new[] { -1.5447f, -2.150375f, -1.893436f },
289-
new[] { 2.541187f, -6.27688f, -2.277865f },
290-
new[] { -1.965264f, -4.790834f, -4.80874f },
291-
new[] { -1.08187f, -1.770754f, -1.668764f },
292-
new[] { -3.058552f, -1.774045f, 1.223752f },
293-
new[] { -1.886475f, -1.814546f, -1.758519f },
294-
new[] { -1.719724f, -2.496373f, 2.607481f },
295-
new[] { 2.27024f, -5.876634f, -1.647099f },
296-
new[] { 2.787862f, -6.135451f, -1.902428f },
297-
new[] { -7.281674f, -2.141059f, 1.134021f },
298-
new[] { -1.132322f, -0.2247178f, -2.416834f },
299-
new[] { -4.902839f, -3.222804f, 1.480891f },
300-
new[] { -0.0279296f, -5.969142f, -5.482117f },
301-
new[] { -4.209537f, -3.255848f, 1.600618f },
302-
new[] { -7.299156f, -0.4594733f, 1.950808f },
303-
new[] { 0.1609094f, -0.1069331f, -0.679998f },
304-
new[] { -6.98663f, -1.990731f, 0.4860108f },
305-
new[] { -5.733415f, -3.5557f, 2.390245f },
306-
new[] { -0.5854725f, -3.897317f, -5.697681f },
307-
new[] { -7.371005f, -1.032161f, 1.448239f },
308-
new[] { -0.7209821f, -5.601014f, -5.699718f },
309-
new[] { -1.02616f, -4.549782f, -5.372447f },
310-
new[] { -5.520494f, -0.8300984f, 2.536162f },
311-
new[] { -1.523166f, -2.878174f, -0.2933909f },
312-
new[] { -5.264671f, -3.50007f, 2.062404f },
313-
new[] { -0.9287288f, -1.620677f, -1.796283f },
314-
new[] { -5.523523f, -1.261566f, 0.8259076f },
315-
new[] { -1.592599f, -4.590973f, -4.576304f },
316-
new[] { -5.435085f, -3.195918f, 0.5181948f },
317-
};
318109
}
319-
}
110+
}

0 commit comments

Comments
 (0)