Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/09/09 18:05:03 (15 years ago)
Author:
gkronber
Message:

worked on presentation layer for CEDMA. Added a results view that displays data in a simple DataGrid. (#419)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CEDMA-Refactoring-Ticket419/HeuristicLab.CEDMA.Core/Results.cs

    r1075 r1106  
    3636
    3737namespace 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    }
    4046
    4147    private IStore store;
     
    4753    }
    4854
    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
    5596
    5697      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        //}
    78117      }
    79       FireChanged();
    80118    }
    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> Members
    155 
    156     public IEnumerator<Record> GetEnumerator() {
    157       throw new NotImplementedException();
    158     }
    159 
    160     #endregion
    161 
    162     #region IEnumerable Members
    163 
    164     IEnumerator IEnumerable.GetEnumerator() {
    165       return this.GetEnumerator();
    166     }
    167 
    168     #endregion
    169119  }
    170120}
Note: See TracChangeset for help on using the changeset viewer.