public void TestHypergrid() { var dataDim1 = new object[] { "a", "b", false, 2, 5.8, "c " }; var dim0 = new CategoricalDimension("dim0", false, "a", "b", false, 2, 5.8, "c "); var dim1 = new ContinuousDimension("dim1", 0, 10.2, false, true); var hypergrid = new Hypergrid("hypergrid", dim0, dim1); var serialized = OptimizerServiceEncoder.EncodeHypergrid(hypergrid); var deserialized = OptimizerServiceDecoder.DecodeHypergrid(serialized); Assert.Equal(deserialized.Name, hypergrid.Name); Assert.True(deserialized.Dimensions[0] is CategoricalDimension); Assert.True(deserialized.Dimensions[1] is ContinuousDimension); Assert.True( ((CategoricalDimension)deserialized.Dimensions[0]).Values.SequenceEqual( ((CategoricalDimension)hypergrid.Dimensions[0]).Values)); Assert.Equal( ((ContinuousDimension)deserialized.Dimensions[1]).Name, dim1.Name); Assert.Equal( ((ContinuousDimension)deserialized.Dimensions[1]).Min, dim1.Min); Assert.Equal( ((ContinuousDimension)deserialized.Dimensions[1]).Max, dim1.Max); Assert.Equal( ((ContinuousDimension)deserialized.Dimensions[1]).IncludeMin, dim1.IncludeMin); Assert.Equal( ((ContinuousDimension)deserialized.Dimensions[1]).IncludeMax, dim1.IncludeMax); }
private IEnumerator LoadData(string dimensionName) { var dataRequestForm = new WWWForm(); dataRequestForm.AddField("dimension", dimensionName); var dataWebRequest = new WWW(String.Format("{0}:{1}/api/graph/data", Globals.SurfaceServerIp, Globals.SurfaceWebPort), dataRequestForm); yield return(dataWebRequest); var response = JsonUtility.FromJson <DataResponse>(dataWebRequest.text); Dimension dimension; if (response.isMetric) { var metricDimension = new MetricDimension(); metricDimension.PossibleTicks = response.ticks; metricDimension.IsTimeBased = response.isTimeBased; metricDimension.TimeFormat = response.timeFormat; dimension = metricDimension; } else { var catDimension = new CategoricalDimension(); foreach (var mapping in response.mappings) { catDimension.Mappings.Add(new Dimension.Mapping { Name = mapping.name, Value = mapping.value }); } dimension = catDimension; } var data = new Dimension.DimData[response.data.Length]; for (var i = 0; i < response.data.Length; i++) { // assuming ids are 0 - data.length data[i].Id = int.Parse(response.data[i].id); data[i].Value = response.data[i].value; data[i].IsNull = response.data[i].isNull; } dimension.Data = data; dimension.Name = response.name; dimension.DisplayName = response.displayName; dimension.DomainMin = response.domain.min; dimension.DomainMax = response.domain.max; dimension.HideTicks = response.hideTicks; dimension.RebuildData(); foreach (var onDataLoaded in _loadOperations[dimensionName]) { onDataLoaded(dimension); } _loadOperations.Remove(dimensionName); }
public void TestCategoricalDimension() { object[] data = { "str", string.Empty, "cat", false, 9.12 }; var dimension = new CategoricalDimension("Dimension test", data); var serialized = OptimizerServiceEncoder.EncodeCategoricalDimension(dimension); var deserialized = OptimizerServiceDecoder.DecodeCategoricalDimension(serialized); Assert.Equal(deserialized.Name, dimension.Name); Assert.True(deserialized.Values.SequenceEqual(data)); }
public TestSerializingAndDeserializing() { /* FIXME: This needs better cross-plat support and error handling. * - We should include C:\Python37 as another PYTHONHOME location to look for by default * - Currently this doesn't handle Linux very well * - On Ubuntu Python 3.7 needs to be installed from a separate * repo, which installs as libpython3.7m.so which fails tobe * found due to the trailing "m". */ string pathToVirtualEnv = Environment.GetEnvironmentVariable("PYTHONHOME"); if (string.IsNullOrEmpty(pathToVirtualEnv)) { pathToVirtualEnv = @"c:\ProgramData\Anaconda3"; } else { Environment.SetEnvironmentVariable("PYTHONHOME", pathToVirtualEnv, EnvironmentVariableTarget.Process); } string pathToPythonPkg = $"{pathToVirtualEnv}\\pkgs\\python-3.7.4-h5263a28_0"; Environment.SetEnvironmentVariable("PATH", $"{pathToVirtualEnv};{pathToPythonPkg}", EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("PYTHONPATH", $"{pathToVirtualEnv}\\Lib\\site-packages;{pathToVirtualEnv}\\Lib", EnvironmentVariableTarget.Process); continuous = new ContinuousDimension(name: "continuous", min: 1, max: 10); discrete = new DiscreteDimension(name: "discrete", min: 1, max: 10); ordinal = new OrdinalDimension(name: "ordinal", orderedValues: new List <object>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, ascending: true); categorical = new CategoricalDimension(name: "categorical", values: new List <object>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }); allKindsOfDimensions = new Hypergrid( name: "all_kinds_of_dimensions", dimensions: new IDimension[] { continuous, discrete, ordinal, categorical, }); }
public TestSerializingAndDeserializing() { string pathToVirtualEnv = Environment.GetEnvironmentVariable("PYTHONHOME"); if (string.IsNullOrEmpty(pathToVirtualEnv)) { pathToVirtualEnv = @"c:\ProgramData\Anaconda3"; } else { Environment.SetEnvironmentVariable("PYTHONHOME", pathToVirtualEnv, EnvironmentVariableTarget.Process); } string pathToPythonPkg = $"{pathToVirtualEnv}\\pkgs\\python-3.7.4-h5263a28_0"; Environment.SetEnvironmentVariable("PATH", $"{pathToVirtualEnv};{pathToPythonPkg}", EnvironmentVariableTarget.Process); Environment.SetEnvironmentVariable("PYTHONPATH", $"{pathToVirtualEnv}\\Lib\\site-packages;{pathToVirtualEnv}\\Lib", EnvironmentVariableTarget.Process); continuous = new ContinuousDimension(name: "continuous", min: 1, max: 10); discrete = new DiscreteDimension(name: "discrete", min: 1, max: 10); ordinal = new OrdinalDimension(name: "ordinal", orderedValues: new List <object>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, ascending: true); categorical = new CategoricalDimension(name: "categorical", values: new List <object>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }); allKindsOfDimensions = new SimpleHypergrid( name: "all_kinds_of_dimensions", dimensions: new List <IDimension>() { continuous, discrete, ordinal, categorical, }); }
public static OptimizerService.CategoricalDimension EncodeCategoricalDimension(CategoricalDimension dimension) { var instance = new OptimizerService.CategoricalDimension(); instance.Name = dimension.Name; instance.Values.AddRange(dimension.Values.Select(value => EncodePrimitiveValue(value))); return(instance); }