Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
                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);
                }
Esempio n. 3
0
                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);
                }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
 public void PaintSimulationZone(SimulationZone simulationZonePair)
 {
     simulationZonePair.visualElement.colour = Colour;
     simulationZonePair.visualElement.Line   = LineType;
     simulationZonePair.visualElement.Marker = MarkerType;
 }