private void validateImportedQuantities(SimulationResultsImport simulationResultsImport, IModelCoreSimulation simulation) { var allQuantities = _quantitiesRetriever.QuantitiesFrom(simulation); foreach (var quantityPath in simulationResultsImport.SimulationResults.AllQuantityPaths()) { var quantity = allQuantities[quantityPath]; if (quantity != null) { continue; } simulationResultsImport.AddError(Error.CouldNotFindQuantityWithPath(quantityPath)); } }
public DataTable PopulationTableFrom(IndividualValuesCache population, IModelCoreSimulation simulation = null) { var dataTable = new DataTable(); var allParameters = _entitiesInSimulationRetriever.QuantitiesFrom(simulation); dataTable.BeginLoadData(); //add individual ids column population.IndividualIds.Each(i => dataTable.Rows.Add(dataTable.NewRow())); addColumnValues(dataTable, Constants.Population.INDIVIDUAL_ID_COLUMN, population.IndividualIds); //Create one column for the parameter path addCovariates(population, dataTable); //add advanced parameters foreach (var parameterValues in population.AllParameterValues) { var parameterPathWithoutUnit = allParameters.Contains(parameterValues.ParameterPath) ? parameterValues.ParameterPath : parameterValues.ParameterPath.StripUnit(); addColumnValues(dataTable, parameterPathWithoutUnit, parameterValues.Values); } dataTable.EndLoadData(); return dataTable; }
public void UpdateSimulationPersistable(ISimulation simulation) { var allQuantities = _entitiesInSimulationRetriever.QuantitiesFrom(simulation); updatePersitable(allQuantities, simulation.OutputSelections); }
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); }