- Timestamp:
- 01/09/09 18:05:03 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CEDMA-Refactoring-Ticket419/HeuristicLab.CEDMA.Core/Results.cs
r1075 r1106 36 36 37 37 namespace HeuristicLab.CEDMA.Core { 38 public class Results : IViewable, IEnumerable<Record> { 39 private Dictionary<Record, Dataset> datasets; 38 public class Results { 39 public static string[] CategoricalVariables { 40 get { return new string[] { "TargetVariable" }; } 41 } 42 43 public static string[] OrdinalVariables { 44 get { return new string[] { "ValidationMeanAbsolutePercentageError" }; } 45 } 40 46 41 47 private IStore store; … … 47 53 } 48 54 49 private void ReloadList() { 50 var results = store.Select(new Statement(Ontology.AnyEntity, Ontology.PredicateInstanceOf, Ontology.TypeGeneticProgrammingFunctionTree)) 51 .Select(x => store.Select(new SelectFilter( 52 new Entity[] { new Entity(x.Subject.Uri) }, 53 new Entity[] { Ontology.PredicateModelAttribute }, 54 new Resource[] { Ontology.AnyEntity }))); 55 private Entity dataSetEntity; 56 57 public Results(IStore store) { 58 this.store = store; 59 } 60 61 internal void FilterDataSet(Entity entity) { 62 this.dataSetEntity = entity; 63 } 64 65 internal IEnumerable<object[]> SelectRows(List<string> columnNames) { 66 if (store == null) yield return null; 67 68 Resource[] columnNamesRes = columnNames.Select(x => new Literal(x)).ToArray(); 69 70 var results = store.Select(new Statement(dataSetEntity, Ontology.PredicateHasModel, Ontology.AnyEntity)) 71 .SelectMany(x => store.Select(new SelectFilter( 72 new Entity[] { (Entity)x.Property }, 73 new Entity[] { Ontology.PredicateModelAttribute }, 74 new Resource[] { Ontology.AnyEntity }))) 75 .SelectMany(x => 76 store.Select( 77 new SelectFilter( 78 new Entity[] { (Entity)x.Property }, 79 new Entity[] { Ontology.PredicateModelAttributeName }, 80 columnNamesRes)).Select(y => 81 new { 82 Model = x.Subject, 83 Attribute = (Entity)x.Property, 84 AttributeName = (Literal)y.Property 85 })) 86 .SelectMany(x => 87 store.Select( 88 new Statement(x.Attribute, Ontology.PredicateModelAttributeValue, Ontology.AnyEntity)) 89 .Select(y => 90 new { 91 Model = x.Model.Uri, 92 AttributeName = x.AttributeName.Value, 93 AttributeValue = ((Literal)y.Property).Value 94 })).GroupBy(x=>x.Model); 95 55 96 56 97 Random random = new Random(); 57 foreach(Statement[] ss in results) { 58 if(ss.Length > 0) { 59 Record r = new Record(this, ss[0].Subject.Uri); 60 r.Set(Record.X_JITTER, random.NextDouble() * 2.0 - 1.0); 61 r.Set(Record.Y_JITTER, random.NextDouble() * 2.0 - 1.0); 62 foreach(Statement s in ss) { 63 string varName; 64 predicateToVariableName.TryGetValue(s.Predicate, out varName); 65 if(varName != null) { 66 if(varName == Record.TREE_HEIGHT || varName == Record.TREE_SIZE || varName == Record.TARGET_VARIABLE) { 67 r.Set(varName, (double)(int)((Literal)s.Property).Value); 68 } else { 69 r.Set(varName, (double)((Literal)s.Property).Value); 70 } 71 } 72 } 73 lock(records) { 74 records.Add(r); 75 } 76 FireRecordAdded(r); 77 } 98 foreach (var row in results) { 99 100 yield return row.Select(x => x.AttributeValue).ToArray(); 101 //if (ss.Length > 0) { 102 // Record r = new Record(this, ss[0].Subject.Uri); 103 // r.Set(Record.X_JITTER, random.NextDouble() * 2.0 - 1.0); 104 // r.Set(Record.Y_JITTER, random.NextDouble() * 2.0 - 1.0); 105 // foreach (Statement s in ss) { 106 // string varName; 107 // predicateToVariableName.TryGetValue(s.Predicate, out varName); 108 // if (varName != null) { 109 // if (varName == Record.TREE_HEIGHT || varName == Record.TREE_SIZE || varName == Record.TARGET_VARIABLE) { 110 // r.Set(varName, (double)(int)((Literal)s.Property).Value); 111 // } else { 112 // r.Set(varName, (double)((Literal)s.Property).Value); 113 // } 114 // } 115 // } 116 //} 78 117 } 79 FireChanged();80 118 } 81 82 public Results(IStore store)83 : base() {84 this.store = store;85 records = new List<Record>();86 datasets = new Dictionary<Record, Dataset>();87 //predicateToVariableName = new Dictionary<Entity, string>();88 //predicateToVariableName[targetVariablePredicate] = Record.TARGET_VARIABLE;89 //predicateToVariableName[treeSizePredicate] = Record.TREE_SIZE;90 //predicateToVariableName[treeHeightPredicate] = Record.TREE_HEIGHT;91 //predicateToVariableName[selectionPressurePredicate] = Record.SELECTIONPRESSURE;92 //predicateToVariableName[trainingMAPEPredicate] = Record.MAPE_TRAINING;93 //predicateToVariableName[validationMAPEPredicate] = Record.MAPE_VALIDATION;94 //predicateToVariableName[testMAPEPredicate] = Record.MAPE_TEST;95 //predicateToVariableName[trainingR2Predicate] = Record.R2_TRAINING;96 //predicateToVariableName[validationR2Predicate] = Record.R2_VALIDATION;97 //predicateToVariableName[testR2Predicate] = Record.R2_TEST;98 }99 100 public override IView CreateView() {101 return new ResultsView(this);102 }103 104 //internal void OpenModel(Record record) {105 // IList<Statement> modelResults = store.Select(new Statement(new Entity(record.Uri), Ontology.PredicateSerializedData, Ontology.AnyEntity));106 // if(modelResults.Count == 1) {107 // string rawData = ((SerializedLiteral)modelResults[0].Property).RawData;108 // XmlDocument doc = new XmlDocument();109 // doc.LoadXml(rawData);110 // IFunctionTree tree = (IFunctionTree)PersistenceManager.Restore(doc.ChildNodes[1], new Dictionary<Guid, IStorable>());111 // int targetVariable = (int)record.Get(Record.TARGET_VARIABLE);112 // Dataset dataset = GetDataset(record);113 114 // ModelView modelView = new ModelView(record, dataset, tree, targetVariable);115 // PluginManager.ControlManager.ShowControl(modelView);116 // }117 //}118 119 //private Dataset GetDataset(Record record) {120 // if(!datasets.ContainsKey(record)) {121 // IList<Statement> result = store.Select(new Statement(Ontology.AnyEntity, Ontology.PredicateHasModel, new Entity(record.Uri)));122 // if(result.Count == 1) {123 // IList<Statement> datasetResult = store.Select(new Statement(result[0].Subject, Ontology.PredicateSerializedData, Ontology.AnyEntity));124 // if(datasetResult.Count == 1) {125 // string rawData = ((SerializedLiteral)datasetResult[0].Property).RawData;126 // XmlDocument doc = new XmlDocument();127 // doc.LoadXml(rawData);128 // Dataset dataset = (Dataset)PersistenceManager.Restore(doc.ChildNodes[1], new Dictionary<Guid, IStorable>());129 // datasets.Add(record, dataset);130 // }131 // }132 // }133 // return datasets[record];134 //}135 136 //internal void OpenAlgorithm(Record record) {137 // IList<Statement> generatedBy = store.Select(new Statement(new Entity(record.Uri), Ontology.PredicateGeneratedBy, Ontology.AnyEntity));138 // if(generatedBy.Count == 1) {139 // IList<Statement> algoResult = store.Select(new Statement((Entity)generatedBy[0].Property, Ontology.PredicateSerializedData, Ontology.AnyEntity));140 // if(algoResult.Count == 1) {141 // string rawData = ((SerializedLiteral)algoResult[0].Property).RawData;142 // XmlDocument doc = new XmlDocument();143 // doc.LoadXml(rawData);144 // IItem algo = (IItem)PersistenceManager.Restore(doc.ChildNodes[1], new Dictionary<Guid, IStorable>());145 // PluginManager.ControlManager.ShowControl(algo.CreateView());146 // }147 // }148 //}149 150 internal void FilterDataSet(Entity entity) {151 152 }153 154 #region IEnumerable<Record> Members155 156 public IEnumerator<Record> GetEnumerator() {157 throw new NotImplementedException();158 }159 160 #endregion161 162 #region IEnumerable Members163 164 IEnumerator IEnumerable.GetEnumerator() {165 return this.GetEnumerator();166 }167 168 #endregion169 119 } 170 120 }
Note: See TracChangeset
for help on using the changeset viewer.