Skip to content

Commit 192aa13

Browse files
committed
[CM-1580]: Implemented utility to convert Curve into standard Asset. Implemented related test case.
1 parent 4b9adbd commit 192aa13

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

comet-java-client/src/main/java/ml/comet/experiment/impl/utils/AssetUtils.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,22 @@
77
import ml.comet.experiment.impl.asset.AssetImpl;
88
import ml.comet.experiment.impl.asset.AssetType;
99
import ml.comet.experiment.impl.asset.RemoteAssetImpl;
10+
import ml.comet.experiment.impl.rest.CurveData;
11+
import ml.comet.experiment.model.Curve;
1012
import org.apache.commons.io.FilenameUtils;
1113
import org.apache.commons.lang3.StringUtils;
1214

1315
import java.io.File;
1416
import java.io.IOException;
1517
import java.net.URI;
18+
import java.nio.charset.StandardCharsets;
1619
import java.nio.file.Path;
1720
import java.util.Locale;
1821
import java.util.Map;
1922
import java.util.Optional;
2023
import java.util.stream.Stream;
2124

25+
import static ml.comet.experiment.impl.asset.AssetType.CURVE;
2226
import static ml.comet.experiment.impl.asset.AssetType.POINTS_3D;
2327
import static ml.comet.experiment.impl.asset.AssetType.UNKNOWN;
2428

@@ -128,6 +132,20 @@ public static AssetImpl createAssetFromData(byte[] data, @NonNull String logical
128132
return updateAsset(asset, overwrite, metadata, type);
129133
}
130134

135+
/**
136+
* Creates {@code Asset} from provided {@code Curve} instance.
137+
*
138+
* @param curve the {@code Curve} instance with data points.
139+
* @param overwrite if {@code true} mark as override
140+
* @return the instance of the {@link AssetImpl} with file-like data.
141+
*/
142+
public static AssetImpl createAssetFromCurve(@NonNull Curve curve, boolean overwrite) {
143+
CurveData data = CurveData.from(curve);
144+
String json = JsonUtils.toJson(data);
145+
return createAssetFromData(json.getBytes(StandardCharsets.UTF_8), curve.getName(), overwrite,
146+
Optional.empty(), Optional.of(CURVE.type()));
147+
}
148+
131149
/**
132150
* Updates provided {@link AssetImpl} with values from optionals or with defaults.
133151
*

comet-java-client/src/test/java/ml/comet/experiment/impl/utils/AssetUtilsTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import ml.comet.experiment.impl.TestUtils;
66
import ml.comet.experiment.impl.asset.AssetImpl;
77
import ml.comet.experiment.impl.asset.AssetType;
8+
import ml.comet.experiment.model.Curve;
9+
import ml.comet.experiment.model.DataPoint;
810
import org.apache.commons.io.FilenameUtils;
911
import org.apache.commons.io.file.PathUtils;
1012
import org.apache.commons.lang3.StringUtils;
@@ -34,13 +36,16 @@
3436
import static java.util.Optional.empty;
3537
import static java.util.Optional.ofNullable;
3638
import static ml.comet.experiment.impl.asset.AssetType.ASSET;
39+
import static ml.comet.experiment.impl.asset.AssetType.CURVE;
3740
import static ml.comet.experiment.impl.asset.AssetType.NOTEBOOK;
3841
import static ml.comet.experiment.impl.asset.AssetType.SOURCE_CODE;
3942
import static ml.comet.experiment.impl.utils.AssetUtils.REMOTE_FILE_NAME_DEFAULT;
43+
import static ml.comet.experiment.impl.utils.AssetUtils.createAssetFromCurve;
4044
import static ml.comet.experiment.impl.utils.AssetUtils.createAssetFromData;
4145
import static ml.comet.experiment.impl.utils.AssetUtils.createAssetFromFile;
4246
import static ml.comet.experiment.impl.utils.AssetUtils.createRemoteAsset;
4347
import static ml.comet.experiment.impl.utils.AssetUtils.updateAsset;
48+
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4449
import static org.junit.jupiter.api.Assertions.assertEquals;
4550
import static org.junit.jupiter.api.Assertions.assertFalse;
4651
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -215,6 +220,26 @@ public void testCreateAssetFromData() {
215220
assertEquals(expected, asset.getType());
216221
}
217222

223+
@Test
224+
public void testCreateAssetFromCurve() {
225+
String json = "{\"name\":\"someCurve\",\"x\":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0],\"y\":[0.0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0]}";
226+
byte []data = json.getBytes(StandardCharsets.UTF_8);
227+
int count = 10;
228+
DataPoint[] dataPoints = new DataPoint[count];
229+
for (int i = 0; i < count; i++) {
230+
dataPoints[i] = DataPoint.of(i, i * 10);
231+
}
232+
String fileName = "someCurve";
233+
Curve curve = new Curve(dataPoints, fileName);
234+
235+
AssetImpl asset = createAssetFromCurve(curve, true);
236+
assertNotNull(asset);
237+
assertArrayEquals(data, asset.getFileLikeData().orElse(null));
238+
assertEquals(fileName, asset.getLogicalPath());
239+
assertEquals(CURVE.type(), asset.getType());
240+
assertTrue(asset.getOverwrite());
241+
}
242+
218243
@Test
219244
public void testUpdateAsset() {
220245
boolean overwrite = true;

0 commit comments

Comments
 (0)