/// <summary> /// Build a list of simulation / zone pairs from the specified experiment /// </summary> /// <param name="model"></param> /// <returns></returns> private List <SimulationZone> BuildListFromExperiment(IModel model) { List <SimulationZone> simulationZonePairs = new List <SimulationZone>(); foreach (SimulationZone simulationZonePair in BuildListFromSimulation((model as Experiment).BaseSimulation)) { foreach (List <FactorValue> combination in (model as Experiment).AllCombinations()) { string zoneName = simulationZonePair.factorNameValues.Find(factorValue => factorValue.Key == "Zone").Value; SimulationZone simulationZone = new SimulationZone(null, zoneName); string simulationName = model.Name; foreach (FactorValue value in combination) { simulationName += value.Name; string factorName = value.Factor.Name; if (value.Factor.Parent is Factor) { factorName = value.Factor.Parent.Name; } string factorValue = value.Name.Replace(factorName, ""); simulationZone.factorNameValues.Add(new KeyValuePair <string, string>(factorName, factorValue)); } simulationZone.factorNameValues.Add(new KeyValuePair <string, string>("Experiment", (model as Experiment).Name)); simulationZone.simulationNames.Add(simulationName); simulationZonePairs.Add(simulationZone); } } return(simulationZonePairs); }
public void PaintSimulationZone(SimulationZone simulationZonePair) { string factorValue1 = simulationZonePair.GetValueOf(FactorName1); string factorValue2 = simulationZonePair.GetValueOf(FactorName2); int index1 = values1.IndexOf(factorValue1); if (index1 == -1) { values1.Add(factorValue1); index1 = values1.Count - 1; } int index2 = values2.IndexOf(factorValue2); if (index2 == -1) { values2.Add(factorValue2); index2 = values2.Count - 1; } index1 = index1 % MaximumIndex1; index2 = index2 % MaximumIndex2; Setter1(simulationZonePair.visualElement, index1); Setter2(simulationZonePair.visualElement, index2); }
public void PaintSimulationZone(SimulationZone simulationZonePair) { string factorValue = simulationZonePair.GetValueOf(FactorName); int index = values.IndexOf(factorValue); if (index == -1) { values.Add(factorValue); index = values.Count - 1; } index = index % MaximumIndex; Setter(simulationZonePair.visualElement, index); }
/// <summary>Convert a simulation zone object into a series definition</summary> /// <param name="storage">Storage service</param> /// <param name="simulationZone">The object to convert</param> private SeriesDefinition ConvertToSeriesDefinition(IStorageReader storage, SimulationZone simulationZone) { SeriesDefinition seriesDefinition = new Models.Graph.SeriesDefinition(); seriesDefinition.type = Type; seriesDefinition.marker = simulationZone.visualElement.Marker; seriesDefinition.line = simulationZone.visualElement.Line; seriesDefinition.markerSize = simulationZone.visualElement.MarkerSize; seriesDefinition.lineThickness = simulationZone.visualElement.LineThickness; seriesDefinition.colour = simulationZone.visualElement.colour; seriesDefinition.xFieldName = XFieldName; seriesDefinition.yFieldName = YFieldName; seriesDefinition.xAxis = XAxis; seriesDefinition.yAxis = YAxis; if (simulationZone.simulationNames.Count > 0) { seriesDefinition.xFieldUnits = storage.GetUnits(TableName, XFieldName); seriesDefinition.yFieldUnits = storage.GetUnits(TableName, YFieldName); } seriesDefinition.showInLegend = ShowInLegend; seriesDefinition.title = simulationZone.GetSeriesTitle(); if (IncludeSeriesNameInLegend) { seriesDefinition.title += ": " + Name; } if (Checkpoint != "Current") { seriesDefinition.title += " (" + Checkpoint + ")"; } if (simulationZone.data.Count > 0) { seriesDefinition.data = simulationZone.data.ToTable(); seriesDefinition.x = GetDataFromTable(seriesDefinition.data, XFieldName); seriesDefinition.y = GetDataFromTable(seriesDefinition.data, YFieldName); seriesDefinition.x2 = GetDataFromTable(seriesDefinition.data, X2FieldName); seriesDefinition.y2 = GetDataFromTable(seriesDefinition.data, Y2FieldName); seriesDefinition.error = GetErrorDataFromTable(seriesDefinition.data, YFieldName); if (Cumulative) { seriesDefinition.y = MathUtilities.Cumulative(seriesDefinition.y as IEnumerable <double>); } if (CumulativeX) { seriesDefinition.x = MathUtilities.Cumulative(seriesDefinition.x as IEnumerable <double>); } } return(seriesDefinition); }
/// <summary>Convert a simulation zone object into a series definition</summary> /// <param name="simulationZone">The object to convert</param> /// <param name="dataStore">Datastore from which we are drawing data</param> private SeriesDefinition ConvertToSeriesDefinition(SimulationZone simulationZone, DataStore dataStore) { SeriesDefinition seriesDefinition = new Models.Graph.SeriesDefinition(); seriesDefinition.type = Type; seriesDefinition.marker = simulationZone.visualElement.Marker; seriesDefinition.line = simulationZone.visualElement.Line; seriesDefinition.markerSize = simulationZone.visualElement.MarkerSize; seriesDefinition.lineThickness = simulationZone.visualElement.LineThickness; seriesDefinition.colour = simulationZone.visualElement.colour; seriesDefinition.xFieldName = XFieldName; seriesDefinition.yFieldName = YFieldName; seriesDefinition.xAxis = XAxis; seriesDefinition.yAxis = YAxis; if (dataStore != null && simulationZone.simulationNames.Count > 0) { seriesDefinition.xFieldUnits = dataStore.GetUnits(simulationZone.simulationNames[0], TableName, XFieldName); seriesDefinition.yFieldUnits = dataStore.GetUnits(simulationZone.simulationNames[0], TableName, YFieldName); } seriesDefinition.showInLegend = ShowInLegend; seriesDefinition.title = simulationZone.GetSeriesTitle(); if (IncludeSeriesNameInLegend) { seriesDefinition.title += ": " + Name; } if (simulationZone.data.Count > 0) { seriesDefinition.data = simulationZone.data.ToTable(); seriesDefinition.x = GetDataFromTable(seriesDefinition.data, XFieldName); seriesDefinition.y = GetDataFromTable(seriesDefinition.data, YFieldName); seriesDefinition.x2 = GetDataFromTable(seriesDefinition.data, X2FieldName); seriesDefinition.y2 = GetDataFromTable(seriesDefinition.data, Y2FieldName); if (Cumulative) { seriesDefinition.y = MathUtilities.Cumulative(seriesDefinition.y as IEnumerable <double>); } if (CumulativeX) { seriesDefinition.x = MathUtilities.Cumulative(seriesDefinition.x as IEnumerable <double>); } } return(seriesDefinition); }
public void PaintSimulationZone(SimulationZone simulationZonePair) { simulationZonePair.visualElement.colour = Colour; simulationZonePair.visualElement.Line = LineType; simulationZonePair.visualElement.Marker = MarkerType; }