public void ExportResultsToCSV(SimulationResults simulationResults, IModelCoreSimulation simulation, string csvFile) { if (simulationResults.IsNull() || simulationResults.Count == 0) { _logger.AddWarning(Error.NoResultsAvailableForExportToCSV); return; } var dataTable = _simulationResultsToDataTableConverter.ResultsToDataTable(simulationResults, simulation); dataTable.ExportToCSV(csvFile); }
public void should_return_false_if_the_simulaton_is_defined() { var res = new SimulationResults(); res.IsNull().ShouldBeFalse(); }
public void should_return_null_if_the_simulation_result_is_null() { SimulationResults res = null; res.IsNull().ShouldBeTrue(); }
public DataTable ResultsToDataTable(SimulationResults simulationResults, IModelCoreSimulation simulation) { //Id Time Output1 Output2 ... OutputN var dataTable = new DataTable(); var allQuantities = _quantityRetriever.QuantitiesFrom(simulation); var timeColumnName = Constants.NameWithUnitFor(TIME, _timeDimension.BaseUnit); var quantityPathCache = new Cache <string, string>(); dataTable.AddColumn <int>(INDIVIDUAL_ID); dataTable.AddColumn <string>(timeColumnName); if (simulationResults.IsNull()) { return(dataTable); } var allQuantityPaths = simulationResults.AllQuantityPaths(); foreach (var quantityPath in allQuantityPaths) { var quantity = allQuantities[quantityPath]; if (quantity == null) { continue; } //export results in base unit so that they can be computed automatically from matlab scripts quantityPathCache[quantityPath] = Constants.NameWithUnitFor(quantityPath, quantity.Dimension.BaseUnit); dataTable.AddColumn <string>(quantityPathCache[quantityPath]); } dataTable.BeginLoadData(); int numberOfValues = simulationResults.Time.Length; foreach (var individualResults in simulationResults.OrderBy(x => x.IndividualId)) { var allQuantitiesCache = new Cache <string, QuantityValues>(x => x.QuantityPath); allQuantitiesCache.AddRange(individualResults); for (int i = 0; i < numberOfValues; i++) { var row = dataTable.NewRow(); row[INDIVIDUAL_ID] = individualResults.IndividualId; row[timeColumnName] = simulationResults.Time[i].ConvertedTo <string>(); foreach (var quantityPath in allQuantityPaths) { var quantity = allQuantities[quantityPath]; if (quantity == null) { continue; } row[quantityPathCache[quantityPath]] = allQuantitiesCache[quantityPath][i].ConvertedTo <string>(); } dataTable.Rows.Add(row); } } dataTable.EndLoadData(); return(dataTable); }