private static int Run(CmdOptions opts) { var prescriptionPath = DatasetGeneratorPrescriptionPath(opts); if (!File.Exists(prescriptionPath)) { Console.WriteLine($"Dataset generator prescription file {prescriptionPath} does not exist."); return(1); } var prescription = JsonConvert.DeserializeObject <Prescription>( File.ReadAllText(prescriptionPath), new JsonSerializerSettings() { DefaultValueHandling = DefaultValueHandling.Populate }); var datasetsPath = Program.DatasetsPath(opts); if (!Directory.Exists(datasetsPath)) { Directory.CreateDirectory(datasetsPath); } var allDatasetGeneratorTypes = GetDatasetGeneratorTypes(); Type datasetGeneratorType; if (allDatasetGeneratorTypes.TryGetValue(prescription.DatasetGeneratorName, out datasetGeneratorType) == false) { Console.WriteLine($"Dataset generator {prescription.DatasetGeneratorName} does not exist."); return(1); } var datasetGenerator = (IDatasetGenerator)Activator.CreateInstance(datasetGeneratorType); var datasetName = Path.GetFileNameWithoutExtension(opts.PrescriptionFile); var datasetPath = Program.DatasetPath(opts, datasetName); if (Directory.Exists(datasetPath)) { Directory.Delete(datasetPath, true); } Directory.CreateDirectory(datasetPath); var instanceWriter = new JsonInputWriter(); var instanceIndex = 0; foreach (var instance in datasetGenerator.GenerateInstances(prescription, prescriptionPath)) { var instanceChecker = new InstanceChecker(); var instanceStatus = instanceChecker.Check(instance); if (instanceStatus != InstanceChecker.InstanceStatus.Ok) { Console.WriteLine($"Instance check: {instanceStatus}"); return(1); } instance.TimeForExtendedInstance = TimeForExtendedInstance(instance); instanceWriter.WriteToPath( instance, Path.Combine(datasetPath, $"{instanceIndex}.json")); instanceIndex++; } Console.WriteLine($"Dataset {opts.PrescriptionFile} generated."); return(0); }
public static string DatasetGeneratorPrescriptionPath(CmdOptions opts) { return(Path.Combine(Program.DatasetGeneratorsPrescriptionPath(opts), opts.PrescriptionFile)); }
public static string DatasetGeneratorsPrescriptionPath(CmdOptions opts) { return(Path.Combine(opts.DataRootPath, "dataset-generators-prescriptions")); }
public static string DatasetPath(CmdOptions opts, string datasetName) { return(Path.Combine(Program.DatasetsPath(opts), datasetName)); }
public static string DatasetsPath(CmdOptions opts) { return(Path.Combine(opts.DataRootPath, "datasets")); }