Beispiel #1
0
        public async Task MlProcessing_ModelTraining_AllGenericEntities()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            foreach (var modelId in models)
            {
                var model = await Session.Get <Model>(modelId);

                model.Should().NotBeNull();
                model.Status.Should().Be(ModelStatus.Processed);

                var responseSetPublic = JohnApi.SetPublicModelsEntity(modelId, true).GetAwaiter().GetResult();
                Harness.WaitWhileModelShared(modelId);
                responseSetPublic.EnsureSuccessStatusCode();
            }

            var response = await JohnApi.GetPublicEntity("models");

            var nodesContent = await response.Content.ReadAsStringAsync();

            var entities = JToken.Parse(nodesContent);

            entities.Should().HaveCount(1);

            await Task.CompletedTask;
        }
        public async Task MlProcessing_ModelTraining_ModelDependentFilesAndReportBelongToUserWhichStartedTraining()
        {
            var  models  = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);
            Guid modelId = models.Single();

            modelId.Should().NotBeEmpty();

            var dependentFiles = Harness.GetDependentFiles(modelId, FileType.Image, FileType.Tabular, FileType.Pdf);

            foreach (var fileId in dependentFiles)
            {
                var file = await Harness.Session.Get <File>(fileId);

                var fileEntity = Files.Find(new BsonDocument("_id", fileId)).FirstOrDefault() as IDictionary <string, object>;

                fileEntity["OwnedBy"].ShouldBeEquivalentTo(JohnId);
            }

            var reportFiles = Harness.GetDependentFiles(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            foreach (var fileId in reportFiles)
            {
                var file = await Harness.Session.Get <File>(fileId);

                var fileEntity = Files.Find(new BsonDocument("_id", fileId)).FirstOrDefault() as IDictionary <string, object>;

                fileEntity["OwnedBy"].ShouldBeEquivalentTo(JohnId);
            }
        }
        public async Task MlProcessing_TrainOneModelAndFailDuringTheReportGeneration_WaitsWhileAllAssociatedGenericFilesProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            var modelId = models.Single();

            var model = await Session.Get <Model>(modelId);

            model.Should().NotBeNull();
            model.Status.Should().Be(ModelStatus.Processed);
            model.Images.Should().HaveCount(3);
            var files = Harness.GetDependentFiles(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            files.Should().HaveCount(2);
            foreach (var fileId in files)
            {
                var file = await Session.Get <File>(fileId);

                file.Should().NotBeNull();
                file.Status.Should().Be(FileStatus.Processed);
            }
            ;

            await Task.CompletedTask;
        }
Beispiel #4
0
        public async Task MlProcessing_ModelTraining_WaitsWhileAllAssociatedGenericFilesProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            var modelId           = models.Single();
            var modelGenericFiles = Harness.GetDependentFiles(modelId, FileType.Image, FileType.Tabular, FileType.Pdf);

            modelGenericFiles.Should().HaveCount(5);

            foreach (var fileId in modelGenericFiles)
            {
                var file = await Session.Get <File>(fileId);

                file.Should().NotBeNull();
                file.Status.Should().Be(FileStatus.Processed);
            }
            ;

            var reportFiles = Harness.GetDependentFiles(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            reportFiles.Should().HaveCount(3);

            foreach (var id in reportFiles)
            {
                var file = await Session.Get <File>(id);

                file.Should().NotBeNull();
                file.Status.Should().Be(FileStatus.Processed);
            }
            ;

            await Task.CompletedTask;
        }
Beispiel #5
0
        public async Task MlProcessing_ModelTraining_WaitsWhileAllAssociatedGenericFilesProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            foreach (var modelId in models)
            {
                var modelGenericFiles = Harness.GetDependentFiles(modelId, FileType.Image, FileType.Tabular, FileType.Pdf);
                modelGenericFiles.Should().HaveCount(5);

                modelGenericFiles.ToList().ForEach(async fileId =>
                {
                    var file = await Session.Get <File>(modelId);
                    file.Should().NotBeNull();
                    file.Status.Should().Be(FileStatus.Processed);
                });
            }

            var reportFiles = Harness.GetDependentFiles(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            reportFiles.Should().HaveCount(3);

            reportFiles.ToList().ForEach(async id =>
            {
                var fileResponse = await JohnApi.GetFileEntityById(id);
                fileResponse.EnsureSuccessStatusCode();

                var jsonFile = JToken.Parse(await fileResponse.Content.ReadAsStringAsync());
                jsonFile["status"].Should().BeEquivalentTo("Processed");
            });

            await Task.CompletedTask;
        }
Beispiel #6
0
        public async Task MlProcessing_ModelTraining_ModelPersisted()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            var modelResponse = await JohnApi.GetModelEntityById(models.First());

            modelResponse.EnsureSuccessStatusCode();
            var modelJson = JToken.Parse(await modelResponse.Content.ReadAsStringAsync());

            modelJson.Should().ContainsJson($@"
            {{
                'id': '{modelJson["id"].ToObject<Guid>()}',
                'blob': *EXIST*,
                'ownedBy': '{JohnId}',
                'createdBy': '{JohnId}',
                'createdDateTime': *EXIST*,
                'updatedBy': '{JohnId}',
                'updatedDateTime': *EXIST*,
                'parentId': '{FolderId}',
                'name': 'Naive Bayes',
                'status': 'Processed',
                'version': 11,
                'method': 'NaiveBayes',
                'className': 'ClassName',
                'subSampleSize': '0.2',
                'kFold': 4,
                'fingerprints': [
                {{
                    'type': '1',
                    'size': 1024,
                    'radius': 3
                }}],
                'images': *EXIST*
                
            }}", new List <string> {
                "testDatasetSize"
            });

            var modelNodeResponse = await JohnApi.GetNodeById(models.First());

            modelNodeResponse.EnsureSuccessStatusCode();
            var nodeJson = JToken.Parse(await modelNodeResponse.Content.ReadAsStringAsync());

            nodeJson.Should().ContainsJson($@"
            {{
                'id': '{modelJson["id"].ToObject<Guid>()}',
                'blob': *EXIST*,
                'type': 'Model',
                'ownedBy': '{JohnId}',
                'createdBy': '{JohnId}',
                'createdDateTime': *EXIST*,
                'updatedBy': '{JohnId}',
                'updatedDateTime': *EXIST*,
                'parentId': '{FolderId}',
                'name': 'Naive Bayes',
                'status': 'Processed',
                'version': 11,
                'images': *EXIST*
            }}");
        }
Beispiel #7
0
        public async Task MlProcessing_ModelTraining_AllGenericFilesProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            var modelId = models.Single();

            var model = await Session.Get <Model>(modelId);

            model.Should().NotBeNull();
            model.Status.Should().Be(ModelStatus.Processed);
            model.Images.Should().HaveCount(3);
            var files = Harness.GetDependentFiles(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            files.Should().HaveCount(3);
            models.ToList().ForEach(async fileId =>
            {
                var file = await Session.Get <File>(modelId);
                file.Should().NotBeNull();
                file.Status.Should().Be(FileStatus.Processed);
            });

            await Task.CompletedTask;
        }
        public async Task MlProcessing_ModelTraining_ModelProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            var modelResponse = await JohnApi.GetModelEntityById(models.First());

            modelResponse.EnsureSuccessStatusCode();
            var modelJson = JToken.Parse(await modelResponse.Content.ReadAsStringAsync());

            modelJson["status"].ToObject <string>().ShouldBeEquivalentTo("Processed");
        }
Beispiel #9
0
        public async Task MlProcessing_InvalidModelTraining_DidNotGenerateAnyGenericFiles()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            var files = Harness.GetDependentFiles(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            files.Should().HaveCount(0);

            await Task.CompletedTask;
        }
Beispiel #10
0
        public async Task MlProcessing_ModelTraining_ModelProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            var model = await Harness.Session.Get <Model>(models.First());

            model.Images.Should().HaveCount(3);

            model.Status.Should().Be(ModelStatus.Processed);
        }
Beispiel #11
0
        public async Task MlProcessing_ModelTraining_GeneratesOneModel()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            var modelId = models.Single();

            var model = await Session.Get <Model>(modelId);

            model.Should().NotBeNull();
            model.Status.Should().Be(ModelStatus.Processed);
        }
Beispiel #12
0
        public async Task MlProcessing_ModelTraining_ModelPersisted()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            var model = await Harness.Session.Get <Model>(models.First());

            var modelNode = Nodes.Find(new BsonDocument("_id", model.Id)).FirstOrDefault() as IDictionary <string, object>;

            modelNode.Should().NotBeNull();
            modelNode.Should().ModelNodeShouldBeEquivalentTo(model);

            var modelEntity = Models.Find(new BsonDocument("_id", model.Id)).FirstOrDefault() as IDictionary <string, object>;

            modelEntity.Should().NotBeNull();
            modelEntity.Should().ModelEntityShouldBeEquivalentTo(model);
        }
        public async Task MlProcessing_TrainOneModelAndFailDuringTheReportGeneration_WaitsWhileAllAssociatedGenericFilesProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            foreach (var modelId in models)
            {
                var model = await Session.Get <Model>(modelId);

                model.Should().NotBeNull();
                model.Status.Should().Be(ModelStatus.Processed);
                model.Images.Should().HaveCount(3);
            }

            var files = (Harness.GetDependentFiles(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf)).ToList();

            files.Should().HaveCount(2);
            files.ToList().ForEach(async fileId =>
            {
                var fileResponse = await JohnApi.GetFileEntityById(fileId);
                fileResponse.EnsureSuccessStatusCode();

                var jsonFile = JToken.Parse(await fileResponse.Content.ReadAsStringAsync());
                jsonFile["status"].Should().BeEquivalentTo("Processed");
            });

            await Task.CompletedTask;


            //var files = Fixture.GetDependentFiles(FolderId).ToList();
            //files.Should().HaveCount(5);

            //files.ForEach(async id =>
            //{
            //    var fileResponse = await Api.GetFileEntityById(id);
            //    fileResponse.EnsureSuccessStatusCode();

            //    var jsonFile = JToken.Parse(await fileResponse.Content.ReadAsStringAsync());
            //    jsonFile["status"].Should().BeEquivalentTo("Processed");
            //});

            //await Task.CompletedTask;
        }
        public async Task MlProcessing_ModelTraining_AllGenericFilesProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(2);
            int i = 0;

            foreach (var modelId in models)
            {
                Log.Information(i.ToString());
                var model = await Session.Get <Model>(modelId);

                model.Should().NotBeNull();
                model.Status.Should().Be(ModelStatus.Processed);
                model.Images.Should().HaveCount(3);
                var files = Harness.GetDependentFiles(modelId, FileType.Image, FileType.Tabular, FileType.Pdf);

                foreach (var fileId in files)
                {
                    var file = await Session.Get <File>(fileId);

                    file.Should().NotBeNull();
                    file.Status.Should().Be(FileStatus.Processed);
                }
                ;
            }

            var reportFiles = Harness.GetDependentFiles(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            reportFiles.Should().HaveCount(3);
            foreach (var fileId in reportFiles)
            {
                var file = await Session.Get <File>(fileId);

                file.Should().NotBeNull();
                file.Status.Should().Be(FileStatus.Processed);
            }
            ;

            await Task.CompletedTask;
        }
Beispiel #15
0
        public async Task MlProcessing_InvalidModelTraining_WaitsWhileAllAssociatedGenericFilesProcessed()
        {
            var modelId = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Pdf, FileType.Tabular);

            modelId.Should().HaveCount(1);
            modelId.SingleOrDefault().Should().NotBeEmpty();

            var dependentFiles = Harness.GetDependentFiles(modelId.Single()).ToList();

            dependentFiles.Should().HaveCount(2);

            dependentFiles.ToList().ForEach(async id =>
            {
                var fileResponse = await JohnApi.GetFileEntityById(id);
                fileResponse.EnsureSuccessStatusCode();

                var jsonFile = JToken.Parse(await fileResponse.Content.ReadAsStringAsync());
                jsonFile["status"].Should().BeEquivalentTo("Processed");
            });

            await Task.CompletedTask;
        }
Beispiel #16
0
        public async Task MlProcessing_ModelTraining_GeneratesOneTabular()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);

            var modelId  = models.Single();
            var tabulars = Harness.GetDependentFiles(modelId, FileType.Tabular);

            tabulars.Should().NotBeNullOrEmpty();
            tabulars.Should().HaveCount(2);

            foreach (var tabularId in tabulars)
            {
                var tabular = await Harness.Session.Get <TabularFile>(tabularId);

                var tabularEntity = Files.Find(new BsonDocument("_id", tabularId)).FirstOrDefault() as IDictionary <string, object>;

                tabularEntity.Should().TabularEntityShouldBeEquivalentTo(tabular);
            }

            await Task.CompletedTask;
        }
Beispiel #17
0
        public async Task MlProcessing_ModelTraining_AllGenericFilesProcessed()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            foreach (var modelId in models)
            {
                var model = await Session.Get <Model>(modelId);

                model.Should().NotBeNull();
                model.Status.Should().Be(ModelStatus.Processed);

                await JohnApi.SetPublicModelsEntity(modelId, true);

                Harness.WaitWhileModelShared(modelId);

                var responseSSP = await JohnApi.CreateSingleStructurePridiction(new RunSingleStructurePrediction
                {
                    Format   = "SMILES",
                    ModelIds = new List <Guid> {
                        modelId
                    },
                    PropertyName = "name",
                    Structure    = "C1C=CC=C1C1C=CC=C1"
                });

                var predictionId = JToken.Parse(await responseSSP.Content.ReadAsStringAsync())["predictionId"].ToObject <Guid>();
                responseSSP.EnsureSuccessStatusCode();

                var responseStatus = await JohnApi.GetPredictionStatus(predictionId);

                var status = JToken.Parse(await responseStatus.Content.ReadAsStringAsync());
                status["id"].ToObject <Guid>().ShouldBeEquivalentTo(predictionId);
//                status["status"].ToObject<string>().ShouldAllBeEquivalentTo("CALCULATING");
            }

            await Task.CompletedTask;
        }
        public void MlProcessing_ModelTraining_GeneratesOneModel()
        {
            var models = Harness.GetDependentFilesExcept(FolderId, FileType.Image, FileType.Tabular, FileType.Pdf);

            models.Should().HaveCount(1);
        }