public async Task SavingDataSetReturnsImputationAndAggregationOnColumns()
        {
            var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "xray");

            var result = await fixture.Client.DataSets.Create(DataSet.From("mike", data));

            var dataSet = await fixture.Client.DataSets.Get(DataSet.Get("mike"));

            Assert.Equal(ImputationStrategy.Zeroes, dataSet.Columns["xray"].Imputation);
            Assert.Equal(AggregationStrategy.Sum, dataSet.Columns["xray"].Aggregation);
            await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria("mike"){ Options = DataSetDeleteOptions.CascadeAll });
        }
        public async Task StartingSessionWithMeasureDatatypeTargetStartsSession()
        {
            var dataSetName = $"testDataSet-{DateTime.Now:s}";
            var dataSet     = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances");

            await fixture.Client.DataSets.Create(DataSet.From(dataSetName, dataSet));

            var actual = await fixture.Client.Sessions.CreateForecast(Sessions.Forecast(dataSetName, DateTimeOffset.Parse("2017-03-26"), DateTimeOffset.Parse("2017-04-25"), ResultInterval.Day, "instances"));

            Assert.NotNull(actual.SessionId);
            await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria(dataSetName) { Options = DataSetDeleteOptions.CascadeAll });
        }
        public async Task CanGetDataSetThatHasBeenSaved()
        {
            var data = DataSetGenerator.Run(DateTimeOffset.Parse("2017-01-01 0:00 -0:00"), DateTimeOffset.Parse("2017-03-31 0:00 -0:00"), "india juliet");

            await fixture.Client.DataSets.Create(DataSet.From("zulu yankee", data));

            var result = await fixture.Client.DataSets.Get(DataSet.Get("zulu yankee"));

            Assert.Equal(DateTimeOffset.Parse("2017-01-01 0:00 -0:00"), DateTimeOffset.Parse(result.Data.First()["time"]));
            Assert.True(result.Data.First().ContainsKey("india juliet"));
            await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria("zulu yankee"){ Options = DataSetDeleteOptions.CascadeAll });
        }
        public async Task CanRemoveDataSet()
        {
            var id = Guid.NewGuid().ToString("N");

            var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "hotel");

            await fixture.Client.DataSets.Create(id, data);

            await fixture.Client.DataSets.Remove(id, DataSetDeleteOptions.None);

            var exception = await Assert.ThrowsAsync <NexosisClientException>(async() => await fixture.Client.DataSets.Get(id));

            Assert.Equal(HttpStatusCode.NotFound, exception.StatusCode);
        }
示例#5
0
        public async Task CheckingSessionStatusReturnsExpectedValue()
        {
            var dataSetName = $"testDataSet-{DateTime.Now:s}";
            var dataSet     = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances");

            await fixture.Client.DataSets.Create(dataSetName, dataSet);

            var actual = await fixture.Client.Sessions.EstimateImpact(dataSetName, $"charlie-delta-{DateTime.UtcNow:s}", "instances", DateTimeOffset.Parse("2016-11-26"), DateTimeOffset.Parse("2016-12-25"), ResultInterval.Day);

            var status = await fixture.Client.Sessions.GetStatus(actual.SessionId);

            Assert.Equal(actual.Status, status.Status);
            await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll);
        }
        public async Task SettingImputationAndAggregationExplicitlySetsCorrectValues()
        {
            var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "temp");

            data.Columns["temp"].Imputation  = ImputationStrategy.Mode;
            data.Columns["temp"].Aggregation = AggregationStrategy.Median;

            var result = await fixture.Client.DataSets.Create("agg", data);

            var dataSet = await fixture.Client.DataSets.Get("agg");

            Assert.Equal(ImputationStrategy.Mode, dataSet.Columns["temp"].Imputation);
            Assert.Equal(AggregationStrategy.Median, dataSet.Columns["temp"].Aggregation);
            await fixture.Client.DataSets.Remove("agg", DataSetDeleteOptions.CascadeAll);
        }
        public async Task MeasureDataTypeReturnsCorrectImputationAndAggregation()
        {
            var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "temp");

            data.Columns["temp"].DataType = ColumnType.NumericMeasure;

            var result = await fixture.Client.DataSets.Create("temps", data);

            var dataSet = await fixture.Client.DataSets.Get("temps");

            Assert.Equal(ImputationStrategy.Mean, dataSet.Columns["temp"].Imputation);
            Assert.Equal(AggregationStrategy.Mean, dataSet.Columns["temp"].Aggregation);

            await fixture.Client.DataSets.Remove("temps", DataSetDeleteOptions.CascadeAll);
        }
        public async Task CanPutMoreDataToSameDataSet()
        {
            var data = DataSetGenerator.Run(DateTimeOffset.Parse("2017-01-01 0:00 -0:00"), DateTimeOffset.Parse("2017-01-31 0:00 -0:00"), "golf hotel");
            await fixture.Client.DataSets.Create("alpha bravo", data);

            var moreData = DataSetGenerator.Run(DateTimeOffset.Parse("2017-02-01 0:00 -0:00"), DateTimeOffset.Parse("2017-03-01 0:00 -0:00"), "golf hotel");
            await fixture.Client.DataSets.Create("alpha bravo", moreData);

            var result = await fixture.Client.DataSets.Get("alpha bravo");

            var orderedData = result.Data.Select(d => DateTimeOffset.Parse(d["time"])).OrderBy(it => it);

            Assert.Equal(DateTimeOffset.Parse("2017-01-01 0:00 -0:00"), orderedData.First());
            Assert.Equal(DateTimeOffset.Parse("2017-02-28 0:00 -0:00"), orderedData.Last());
            await fixture.Client.DataSets.Remove("alpha bravo", DataSetDeleteOptions.CascadeAll);
        }
示例#9
0
        public async Task DeletingSessionThenQueryingReturns404()
        {
            var dataSetName = $"testDataSet-{DateTime.Now:s}";
            var dataSet     = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances");

            await fixture.Client.DataSets.Create(dataSetName, dataSet);

            var actual = await fixture.Client.Sessions.AnalyzeImpact(dataSetName, $"charlie-delta-{DateTime.UtcNow:s}", "instances", DateTimeOffset.Parse("2016-11-26"), DateTimeOffset.Parse("2016-12-25"), ResultInterval.Day);

            await fixture.Client.Sessions.Remove(actual.SessionId);

            var exception = await Assert.ThrowsAsync <NexosisClientException>(async() => await fixture.Client.Sessions.Get(actual.SessionId));

            Assert.Equal(exception.StatusCode, HttpStatusCode.NotFound);
            await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll);
        }
        public async Task CanSaveView()
        {
            //This test fails occassionally because dataset doesn't exist
            //adding within test to ensure success
            var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "xray");
            await fixture.Client.DataSets.Create(DataSet.From("forSaveView", data));

            var view = new ViewInfo()
            {
                DataSetName = "forSaveView"
            };

            var result = await fixture.Client.Views.Create("saveTestView", view);

            Assert.Equal("forSaveView", result.DataSetName);
            Assert.Equal("saveTestView", result.ViewName);
            await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria("forSaveView"){ Options = DataSetDeleteOptions.CascadeAll });
        }
        public async Task ListViews()
        {
            //This test fails occassionally because dataset doesn't exist
            //adding within test to ensure success
            var data = DataSetGenerator.Run(DateTime.Parse("2017-01-01"), DateTime.Parse("2017-03-31"), "xray");
            await fixture.Client.DataSets.Create(DataSet.From("forViewList", data));

            var view = new ViewInfo()
            {
                DataSetName = "forViewList"
            };

            var result = await fixture.Client.Views.Create("listTestView", view);

            var list = await fixture.Client.Views.List();

            Assert.True(list.Items.Count > 0);
            await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria("forViewList") { Options = DataSetDeleteOptions.CascadeAll });
        }
        public IntegrationTestFixture()
        {
            string baseUrl = "https://ml.nexosis.com/v1";

            baseUrl             = Environment.GetEnvironmentVariable(NexosisClient.NexosisApiUriEnvironmentVariable);
            ForecastDataSetName = "forecast.015ce681-ca24-449d-a673-699aff25a0cc";
            Client = new NexosisClient(Environment.GetEnvironmentVariable(NexosisClient.NexosisApiKeyEnvironmentVariable)
                                       , baseUrl
                                       , new ApiConnection.HttpClientFactory());

            var dataSetTask = Client.DataSets.Create(DataSet.From(ForecastDataSetName,
                                                                  DataSetGenerator.Run(DateTime.Parse("2016-01-01"), DateTime.Parse("2017-03-26"), "instances")));

            dataSetTask.GetAwaiter().GetResult();

            var keyedDatasetTask = Client.DataSets.Create(DataSet.From(ModelDataSetName,
                                                                       DataSetGenerator.Run(90, 10, "instances")));

            keyedDatasetTask.GetAwaiter().GetResult();
        }
        public async Task ModelStartsNewSession()
        {
            var dataSetName = $"testDataSet-{DateTime.Now:s}";
            var dataSet     = DataSetGenerator.Run(90, 10, "instances");
            await fixture.Client.DataSets.Create(DataSet.From(dataSetName, dataSet));

            var actual = await fixture.Client.Sessions.TrainModel(Sessions.TrainModel(dataSetName,
                                                                                      PredictionDomain.Regression,
                                                                                      options: new ModelSessionRequest
            {
                Columns = new Dictionary <string, ColumnMetadata>
                {
                    ["instances"] = new ColumnMetadata {
                        DataType = ColumnType.Numeric, Role = ColumnRole.Target
                    }
                }
            }));

            Assert.NotNull(actual.SessionId);
            await fixture.Client.DataSets.Remove(new DataSetRemoveCriteria(dataSetName) { Options = DataSetDeleteOptions.CascadeAll });
        }
示例#14
0
        public async Task CanRemoveMultipleSessions()
        {
            var dataSetName = $"testDataSet-{DateTime.Now:s}";
            var dataSet     = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances");

            await fixture.Client.DataSets.Create(dataSetName, dataSet);

            var first = await fixture.Client.Sessions.AnalyzeImpact(dataSetName, "juliet-juliet-echo-1", "instances", DateTimeOffset.Parse("2016-11-26"), DateTimeOffset.Parse("2016-12-25"), ResultInterval.Day);

            var second = await fixture.Client.Sessions.AnalyzeImpact(dataSetName, "juliet-juliet-echo-2", "instances", DateTimeOffset.Parse("2016-11-26"), DateTimeOffset.Parse("2016-12-25"), ResultInterval.Day);

            await fixture.Client.Sessions.Remove(null, "juliet-juliet-echo-", SessionType.Impact);

            var exceptionTheFirst = await Assert.ThrowsAsync <NexosisClientException>(async() => await fixture.Client.Sessions.Get(first.SessionId));

            var exceptionTheSecond = await Assert.ThrowsAsync <NexosisClientException>(async() => await fixture.Client.Sessions.Get(second.SessionId));

            Assert.Equal(exceptionTheFirst.StatusCode, HttpStatusCode.NotFound);
            Assert.Equal(exceptionTheSecond.StatusCode, HttpStatusCode.NotFound);
            await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll);
        }
示例#15
0
        public async Task ModelStartsNewSession()
        {
            var dataSetName = $"testDataSet-{DateTime.Now:s}";
            var dataSet     = DataSetGenerator.Run(90, 10, "instances");
            await fixture.Client.DataSets.Create(dataSetName, dataSet);

            var sessionRequest = new ModelSessionDetail()
            {
                DataSourceName   = dataSetName,
                PredictionDomain = PredictionDomain.Regression,
                Columns          = new Dictionary <string, ColumnMetadata>
                {
                    ["instances"] = new ColumnMetadata {
                        DataType = ColumnType.Numeric, Role = ColumnRole.Target
                    }
                }
            };

            var actual = await fixture.Client.Sessions.TrainModel(sessionRequest);

            Assert.NotNull(actual.SessionId);
            await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll);
        }
示例#16
0
        public async Task ForecastStartsNewSession()
        {
            var dataSetName = $"testDataSet-{DateTime.Now:s}";
            var dataSet     = DataSetGenerator.Run(DateTime.Parse("2016-08-01"), DateTime.Parse("2017-03-26"), "instances");
            await fixture.Client.DataSets.Create(dataSetName, dataSet);

            var sessionRequest = new SessionDetail()
            {
                DataSetName = dataSetName,
                Columns     = new Dictionary <string, ColumnMetadata>()
                {
                    ["instances"] =
                        new ColumnMetadata()
                    {
                        DataType = ColumnType.NumericMeasure, Role = ColumnRole.Target
                    }
                }
            };

            var actual = await fixture.Client.Sessions.CreateForecast(sessionRequest, DateTimeOffset.Parse("2017-03-26"), DateTimeOffset.Parse("2017-04-25"), ResultInterval.Day);

            Assert.NotNull(actual.SessionId);
            await fixture.Client.DataSets.Remove(dataSetName, DataSetDeleteOptions.CascadeAll);
        }