Changeset 2283 for trunk/sources/HeuristicLab.SparseMatrix
- Timestamp:
- 08/13/09 14:16:40 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.SparseMatrix/3.2
- Files:
-
- 1 added
- 2 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.SparseMatrix/3.2/HeuristicLab.SparseMatrix-3.2.csproj
r2280 r2283 82 82 <Compile Include="HeuristicLabSparseMatrixPlugin.cs" /> 83 83 <Compile Include="Properties\AssemblyInfo.cs" /> 84 <Compile Include="SparseMatrix.cs" /> 85 <Compile Include="SparseMatrixRow.cs" /> 84 86 </ItemGroup> 85 87 <ItemGroup> … … 88 90 </ItemGroup> 89 91 <ItemGroup> 92 <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj"> 93 <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project> 94 <Name>HeuristicLab.Core-3.2</Name> 95 </ProjectReference> 90 96 <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj"> 91 97 <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project> -
trunk/sources/HeuristicLab.SparseMatrix/3.2/HeuristicLabSparseMatrixPlugin.cs
r2280 r2283 29 29 [ClassInfo(Name = "HeuristicLab.SparseMatrix-3.2")] 30 30 [PluginFile(Filename = "HeuristicLab.SparseMatrix-3.2.dll", Filetype = PluginFileType.Assembly)] 31 [Dependency(Dependency = "HeuristicLab.Core-3.2")] 31 32 public class HeuristicLabSparseMatrixPlugin : PluginBase { 32 33 } -
trunk/sources/HeuristicLab.SparseMatrix/3.2/SparseMatrix.cs
r2279 r2283 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 24 using System.Linq; 25 using System.Text; 23 using System.Collections.ObjectModel; 26 24 using HeuristicLab.Core; 27 using System.Collections;28 using System.Xml;29 using System.Runtime.Serialization;30 using System.IO;31 using HeuristicLab.PluginInfrastructure;32 using HeuristicLab.Data;33 using HeuristicLab.DataAnalysis;34 using System.Drawing;35 using HeuristicLab.Modeling.Database;36 25 37 namespace HeuristicLab.CEDMA.Core { 38 public class Results : ItemBase { 39 private string[] categoricalVariables = null; 40 public string[] CategoricalVariables { 41 get { 42 if (categoricalVariables == null) { 43 LoadModelAttributes(); 44 } 45 return categoricalVariables; 46 } 26 namespace HeuristicLab.SparseMatrix { 27 public class SparseMatrix : ItemBase { 28 public SparseMatrix() { 29 this.rows = new List<SparseMatrixRow>(); 47 30 } 48 31 49 private string[] ordinalVariables = null; 50 public string[] OrdinalVariables { 51 get { 52 if (ordinalVariables == null) { 53 LoadModelAttributes(); 54 } 55 return ordinalVariables; 56 } 32 public SparseMatrix(IEnumerable<SparseMatrixRow> rows) 33 : this() { 34 this.rows.AddRange(rows); 57 35 } 58 36 59 private string[] multiDimensionalOrdinalVariables;60 public string[] MultiDimensionalOrdinalVariables{61 get { return multiDimensionalOrdinalVariables; }37 private List<SparseMatrixRow> rows; 38 public ReadOnlyCollection<SparseMatrixRow> GetRows() { 39 return rows.AsReadOnly(); 62 40 } 63 41 64 private string[] multiDimensionalCategoricalVariables = new string[] { "VariableImpacts: InputVariableName" }; 65 public string[] MultiDimensionalCategoricalVariables { 66 get { return multiDimensionalCategoricalVariables; } 42 public void AddRow(SparseMatrixRow row) { 43 this.rows.Add(row); 67 44 } 68 45 69 private IModelingDatabase database; 70 71 private Dictionary<string, Dictionary<object, double>> categoricalValueIndices = new Dictionary<string, Dictionary<object, double>>(); 72 73 public Results(IModelingDatabase database) { 74 this.database = database; 75 multiDimensionalOrdinalVariables = database.GetAllResultsForInputVariables().Select(x => "VariableImpacts: " + x.Name).ToArray(); 46 public void RemoveRow(SparseMatrixRow row) { 47 this.rows.Remove(row); 76 48 } 77 78 private List<ResultsEntry> entries = null; 79 private bool cached = false; 80 public IEnumerable<ResultsEntry> GetEntries() { 81 if (!cached) 82 return SelectRows(); 83 return entries.AsEnumerable(); 84 } 85 86 private IEnumerable<ResultsEntry> SelectRows() { 87 database.Connect(); 88 entries = new List<ResultsEntry>(); 89 foreach (var model in database.GetAllModels()) { 90 ResultsEntry modelEntry = new ResultsEntry(); 91 foreach (var modelResult in database.GetModelResults(model)) { 92 modelEntry.Set(modelResult.Result.Name, modelResult.Value); 93 } 94 modelEntry.Set("PersistedData", database.GetModelData(model)); 95 modelEntry.Set("TargetVariable", model.TargetVariable.Name); 96 modelEntry.Set("Algorithm", model.Algorithm.Name); 97 Dictionary<HeuristicLab.Modeling.Database.IVariable, ResultsEntry> inputVariableResultsEntries = 98 new Dictionary<HeuristicLab.Modeling.Database.IVariable, ResultsEntry>(); 99 100 foreach (IInputVariableResult inputVariableResult in database.GetInputVariableResults(model)) { 101 if (!inputVariableResultsEntries.ContainsKey(inputVariableResult.Variable)) { 102 inputVariableResultsEntries[inputVariableResult.Variable] = new ResultsEntry(); 103 inputVariableResultsEntries[inputVariableResult.Variable].Set("InputVariableName", inputVariableResult.Variable.Name); 104 } 105 inputVariableResultsEntries[inputVariableResult.Variable].Set(inputVariableResult.Result.Name, inputVariableResult.Value); 106 } 107 modelEntry.Set("VariableImpacts", inputVariableResultsEntries.Values); 108 entries.Add(modelEntry); 109 } 110 database.Disconnect(); 111 FireChanged(); 112 cached = true; 113 return entries; 114 } 115 116 private bool IsAlmost(double x, double y) { 117 return Math.Abs(x - y) < 1.0E-12; 118 } 119 120 internal IEnumerable<string> SelectModelAttributes() { 121 return CategoricalVariables.Concat(OrdinalVariables); 122 } 123 124 private void LoadModelAttributes() { 125 ordinalVariables = database.GetAllResults().Select(r => r.Name).ToArray(); 126 categoricalVariables = new string[] { "TargetVariable", "Algorithm" }; 127 } 128 129 public double IndexOfCategoricalValue(string variable, object value) { 130 if (value == null) return double.NaN; 131 Dictionary<object, double> valueToIndexMap; 132 if (categoricalValueIndices.ContainsKey(variable)) { 133 valueToIndexMap = categoricalValueIndices[variable]; 134 } else { 135 valueToIndexMap = new Dictionary<object, double>(); 136 categoricalValueIndices[variable] = valueToIndexMap; 137 } 138 if (!valueToIndexMap.ContainsKey(value)) { 139 if (valueToIndexMap.Values.Count == 0) valueToIndexMap[value] = 1.0; 140 else valueToIndexMap[value] = 1.0 + valueToIndexMap.Values.Max(); 141 } 142 return valueToIndexMap[value]; 143 } 49 144 50 } 145 51 }
Note: See TracChangeset
for help on using the changeset viewer.