public DataTable PKAnalysesToDataTable(PopulationSimulationPKAnalyses pkAnalyses, IModelCoreSimulation simulation) { var dataTable = new DataTable(simulation.Name); dataTable.AddColumn <int>(INDIVIDUAL_ID); dataTable.AddColumn <string>(QUANTITY_PATH); dataTable.AddColumn <string>(PARAMETER); dataTable.AddColumn <string>(VALUE); dataTable.AddColumn <string>(UNIT); dataTable.BeginLoadData(); foreach (var quantityPKParameter in pkAnalyses.All()) { var quantityPath = quantityPKParameter.QuantityPath; var molWeight = simulation.MolWeightFor(quantityPath); var pkParameter = _pkParameterRepository.FindByName(quantityPKParameter.Name); var quantityPKParameterContext = new QuantityPKParameterContext(quantityPKParameter, molWeight); var mergedDimension = _dimensionFactory.MergedDimensionFor(quantityPKParameterContext); var unit = mergedDimension.UnitOrDefault(pkParameter.DisplayUnit); quantityPKParameter.ValueCache.KeyValues.Each(kv => { var row = dataTable.NewRow(); row[INDIVIDUAL_ID] = kv.Key; row[QUANTITY_PATH] = inQuote(quantityPath); row[PARAMETER] = inQuote(pkParameter.Name); row[VALUE] = mergedDimension.BaseUnitValueToUnitValue(unit, kv.Value).ConvertedTo <string>(); row[UNIT] = unit.Name; dataTable.Rows.Add(row); }); } dataTable.EndLoadData(); return(dataTable); }
private IDimensionConverter createQuantityPKParameterConverter(QuantityPKParameterContext quantityPKParameterContext, IDimension sourceDimension, IDimension targetDimension) { switch (sourceDimension.Name) { case Constants.Dimension.MOLAR_AMOUNT: case Constants.Dimension.MOLAR_CONCENTRATION: case Constants.Dimension.MOLAR_AUC: return(new QuantityPKParameterMolarToMassConverter(quantityPKParameterContext, sourceDimension, targetDimension)); case Constants.Dimension.MASS_AMOUNT: case Constants.Dimension.MASS_CONCENTRATION: case Constants.Dimension.MASS_AUC: return(new QuantityPKParameterMassToMolarConverter(quantityPKParameterContext, sourceDimension, targetDimension)); } return(null); }