Changeset 9363 for branches/OaaS/HeuristicLab.Analysis
- Timestamp:
- 04/16/13 13:13:41 (12 years ago)
- Location:
- branches/OaaS
- Files:
-
- 11 edited
- 5 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/OaaS
- Property svn:ignore
-
old new 21 21 protoc.exe 22 22 _ReSharper.HeuristicLab 3.3 Tests 23 Google.ProtocolBuffers-2.4.1.473.dll 23 24 packages
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/OaaS/HeuristicLab.Analysis
- Property svn:mergeinfo changed
-
branches/OaaS/HeuristicLab.Analysis/3.3/AlleleFrequencyAnalysis/AlleleFrequencyAnalyzer.cs
r7259 r9363 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 using System.Linq; … … 88 89 } 89 90 90 #region AlleleFrequencyIdEqualityComparer 91 #region Equality Comparers 92 private class AlleleIdEqualityComparer : IEqualityComparer<Allele> { 93 public bool Equals(Allele x, Allele y) { 94 return x.Id == y.Id; 95 } 96 public int GetHashCode(Allele obj) { 97 return obj.Id.GetHashCode(); 98 } 99 } 91 100 private class AlleleFrequencyIdEqualityComparer : IEqualityComparer<AlleleFrequency> { 92 101 public bool Equals(AlleleFrequency x, AlleleFrequency y) { … … 112 121 bool max = MaximizationParameter.ActualValue.Value; 113 122 ItemArray<T> solutions = SolutionParameter.ActualValue; 114 ItemArray<DoubleValue> qualities = QualityParameter.ActualValue;123 double[] qualities = QualityParameter.ActualValue.Select(x => x.Value).ToArray(); 115 124 T bestKnownSolution = BestKnownSolutionParameter.ActualValue; 116 125 bool storeHistory = StoreHistoryParameter.Value.Value; … … 120 129 if (!max) { 121 130 bestIndex = qualities 122 .Select((x, i ndex) => new { index, x.Value})131 .Select((x, i) => new { Index = i, Value = x }) 123 132 .OrderBy(x => x.Value) 124 .First(). index;133 .First().Index; 125 134 } else { 126 135 bestIndex = qualities 127 .Select((x, i ndex) => new { index, x.Value})136 .Select((x, i) => new { Index = i, Value = x }) 128 137 .OrderByDescending(x => x.Value) 129 .First(). index;138 .First().Index; 130 139 } 131 140 … … 142 151 x.Count() / ((double)solutions.Length), 143 152 x.Average(a => a.Allele.Impact), 144 x.Average(a => a.Quality .Value),153 x.Average(a => a.Quality), 145 154 bestKnownAlleles == null ? false : bestKnownAlleles.Any(a => a.Id == x.Key), 146 155 bestAlleles.Any(a => a.Id == x.Key))); … … 248 257 else 249 258 ((DoubleValue)results["Lost Alleles of Best Known Solution"].Value).Value = lostRelevantAllelesCount; 259 260 // calculate contained alleles of best known solution and relative quality 261 if (bestKnownAlleles != null) { 262 double qualityRange = Math.Abs(qualities.Max() - qualities.Min()); 263 var points = solutions.Select((s, index) => new Point2D<double>(CalculateAlleles(s).Intersect(bestKnownAlleles, new AlleleIdEqualityComparer()).Count(), 264 Math.Abs(qualities[index] - qualities[bestIndex]) / qualityRange)); 265 var avgContainedReleventAlleles = points.Select(x => x.X).Average(); 266 267 var plot = new ScatterPlot("Contained Alleles of Best Known Solution and Relative Solution Qualtiy", null); 268 plot.VisualProperties.XAxisTitle = "Contained Alleles of Best Known Solution"; 269 plot.VisualProperties.YAxisTitle = "Relative Solution Quality"; 270 plot.VisualProperties.XAxisMinimumAuto = false; 271 plot.VisualProperties.XAxisMinimumFixedValue = 0.0; 272 plot.VisualProperties.XAxisMaximumAuto = false; 273 plot.VisualProperties.XAxisMaximumFixedValue = bestKnownAlleles.Length; 274 plot.VisualProperties.YAxisMinimumAuto = false; 275 plot.VisualProperties.YAxisMinimumFixedValue = 0.0; 276 plot.VisualProperties.YAxisMaximumAuto = false; 277 plot.VisualProperties.YAxisMaximumFixedValue = 1.0; 278 var row = new ScatterPlotDataRow("Solutions of Current Generation", null, points); 279 row.VisualProperties.PointStyle = ScatterPlotDataRowVisualProperties.ScatterPlotDataRowPointStyle.Circle; 280 row.VisualProperties.PointSize = 5; 281 plot.Rows.Add(row); 282 283 if (!results.ContainsKey("Scatter Plot")) 284 results.Add(new Result("Scatter Plot", plot)); 285 else 286 results["Scatter Plot"].Value = plot; 287 if (storeHistory) { 288 if (!results.ContainsKey("Scatter Plot History")) { 289 results.Add(new Result("Scatter Plot History", new ScatterPlotHistory())); 290 } 291 ((ScatterPlotHistory)results["Scatter Plot History"].Value).Add(plot); 292 } 293 294 if (!allelesTable.Rows.ContainsKey("Average Contained Alleles of Best Known Solution")) { 295 allelesTable.Rows.Add(new DataRow("Average Contained Alleles of Best Known Solution", null)); 296 allelesTable.Rows["Average Contained Alleles of Best Known Solution"].VisualProperties.SecondYAxis = true; 297 allelesTable.Rows["Average Contained Alleles of Best Known Solution"].VisualProperties.StartIndexZero = true; 298 } 299 allelesTable.Rows["Average Contained Alleles of Best Known Solution"].Values.Add(avgContainedReleventAlleles); 300 301 if (!results.ContainsKey("Average Contained Alleles of Best Known Solution")) 302 results.Add(new Result("Average Contained Alleles of Best Known Solution", new DoubleValue(avgContainedReleventAlleles))); 303 else 304 ((DoubleValue)results["Average Contained Alleles of Best Known Solution"].Value).Value = avgContainedReleventAlleles; 305 } 250 306 } 251 307 return base.Apply(); -
branches/OaaS/HeuristicLab.Analysis/3.3/DataVisualization/DataTable.cs
r7259 r9363 59 59 public NamedItemCollection<DataRow> Rows { 60 60 get { return rows; } 61 private set { 62 if (rows != null) throw new InvalidOperationException("Rows already set"); 63 rows = value; 64 if (rows != null) RegisterRowsEvents(); 65 } 61 66 } 62 67 … … 73 78 private IEnumerable<DataRow> StorableRows { 74 79 get { return rows; } 75 set { rows = new NamedItemCollection<DataRow>(value); }80 set { Rows = new NamedItemCollection<DataRow>(value); } 76 81 } 77 82 #endregion … … 81 86 protected DataTable(DataTable original, Cloner cloner) 82 87 : base(original, cloner) { 83 this.VisualProperties = (DataTableVisualProperties)cloner.Clone(original.visualProperties); 84 this.rows = cloner.Clone(original.rows); 85 this.RegisterRowsEvents(); 88 VisualProperties = (DataTableVisualProperties)cloner.Clone(original.visualProperties); 89 Rows = cloner.Clone(original.rows); 86 90 } 87 91 public DataTable() 88 92 : base() { 89 93 VisualProperties = new DataTableVisualProperties(); 90 rows = new NamedItemCollection<DataRow>(); 91 this.RegisterRowsEvents(); 94 Rows = new NamedItemCollection<DataRow>(); 92 95 } 93 96 public DataTable(string name) 94 97 : base(name) { 95 98 VisualProperties = new DataTableVisualProperties(name); 96 rows = new NamedItemCollection<DataRow>(); 97 this.RegisterRowsEvents(); 99 Rows = new NamedItemCollection<DataRow>(); 98 100 } 99 101 public DataTable(string name, string description) 100 102 : base(name, description) { 101 103 VisualProperties = new DataTableVisualProperties(name); 102 rows = new NamedItemCollection<DataRow>(); 103 this.RegisterRowsEvents(); 104 Rows = new NamedItemCollection<DataRow>(); 104 105 } 105 106 … … 217 218 } 218 219 IEnumerable<string> IStringConvertibleMatrix.RowNames { 219 get { return new List<string>(); }220 get { return Enumerable.Empty<string>(); } 220 221 set { throw new NotSupportedException(); } 221 222 } -
branches/OaaS/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs
r7259 r9363 20 20 #endregion 21 21 22 using HeuristicLab.Common; 23 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 22 24 using System.ComponentModel; 23 25 using System.Drawing; 24 using HeuristicLab.Common;25 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;26 26 27 27 namespace HeuristicLab.Analysis { … … 315 315 } 316 316 317 private bool xAxisLogScale; 318 public bool XAxisLogScale { 319 get { return xAxisLogScale; } 320 set { 321 if (xAxisLogScale == value) return; 322 xAxisLogScale = value; 323 OnPropertyChanged("XAxisLogScale"); 324 } 325 } 326 327 private bool secondXAxisLogScale; 328 public bool SecondXAxisLogScale { 329 get { return secondXAxisLogScale; } 330 set { 331 if (secondXAxisLogScale == value) return; 332 secondXAxisLogScale = value; 333 OnPropertyChanged("SecondXAxisLogScale"); 334 } 335 } 336 337 private bool yAxisLogScale; 338 public bool YAxisLogScale { 339 get { return yAxisLogScale; } 340 set { 341 if (yAxisLogScale == value) return; 342 yAxisLogScale = value; 343 OnPropertyChanged("YAxisLogScale"); 344 } 345 } 346 347 private bool secondYAxisLogScale; 348 public bool SecondYAxisLogScale { 349 get { return secondYAxisLogScale; } 350 set { 351 if (secondYAxisLogScale == value) return; 352 secondYAxisLogScale = value; 353 OnPropertyChanged("SecondYAxisLogScale"); 354 } 355 } 356 317 357 #region Persistence Properties 318 358 [Storable(Name = "TitleFont")] … … 440 480 get { return secondYAxisMaximumFixedValue; } 441 481 set { secondYAxisMaximumFixedValue = value; } 482 } 483 [Storable(Name = "XAxisLogScale")] 484 private bool StorableXAxisLogScale { 485 get { return xAxisLogScale; } 486 set { xAxisLogScale = value; } 487 } 488 [Storable(Name = "SecondXAxisLogScale")] 489 private bool StorableSecondXAxisLogScale { 490 get { return secondXAxisLogScale; } 491 set { secondXAxisLogScale = value; } 492 } 493 [Storable(Name = "YAxisLogScale")] 494 private bool StorableYAxisLogScale { 495 get { return yAxisLogScale; } 496 set { yAxisLogScale = value; } 497 } 498 [Storable(Name = "SecondYAxisLogScale")] 499 private bool StorableSecondYAxisLogScale { 500 get { return secondYAxisLogScale; } 501 set { secondYAxisLogScale = value; } 442 502 } 443 503 #endregion … … 472 532 this.secondYAxisMaximumAuto = original.secondYAxisMaximumAuto; 473 533 this.secondYAxisMaximumFixedValue = original.secondYAxisMaximumFixedValue; 534 this.xAxisLogScale = original.xAxisLogScale; 535 this.secondXAxisLogScale = original.secondXAxisLogScale; 536 this.yAxisLogScale = original.yAxisLogScale; 537 this.secondYAxisLogScale = original.secondYAxisLogScale; 474 538 } 475 539 public DataTableVisualProperties() { … … 497 561 this.secondYAxisMaximumAuto = true; 498 562 this.secondYAxisMaximumFixedValue = double.NaN; 563 this.xAxisLogScale = false; 564 this.secondXAxisLogScale = false; 565 this.yAxisLogScale = false; 566 this.secondYAxisLogScale = false; 499 567 } 500 568 public DataTableVisualProperties(string title) … … 509 577 public event PropertyChangedEventHandler PropertyChanged; 510 578 protected virtual void OnPropertyChanged(string propertyName) { 511 PropertyChangedEventHandler handler = PropertyChanged;579 var handler = PropertyChanged; 512 580 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 513 581 } … … 547 615 this.secondYAxisMaximumAuto = true; 548 616 this.secondYAxisMaximumFixedValue = double.NaN; 617 } 549 618 #endregion 550 }551 619 } 552 620 } -
branches/OaaS/HeuristicLab.Analysis/3.3/DataVisualization/ScatterPlot.cs
r7829 r9363 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.ComponentModel; 24 25 using System.Drawing; 25 26 using System.Linq; … … 38 39 } 39 40 40 [Storable] 41 private ObservableList<PointF> points; 42 public ObservableList<PointF> Points { 43 get { return points; } 44 } 45 46 [Storable] 47 private string xAxisName; 48 public string XAxisName { 49 get { return xAxisName; } 41 private ScatterPlotVisualProperties visualProperties; 42 public ScatterPlotVisualProperties VisualProperties { 43 get { return visualProperties; } 50 44 set { 51 if (value == xAxisName) return; 52 xAxisName = value; 53 OnAxesNameChanged(); 45 if (visualProperties != value) { 46 if (value == null) throw new ArgumentNullException("VisualProperties"); 47 if (visualProperties != null) visualProperties.PropertyChanged -= new PropertyChangedEventHandler(VisualProperties_PropertyChanged); 48 visualProperties = value; 49 visualProperties.PropertyChanged += new PropertyChangedEventHandler(VisualProperties_PropertyChanged); 50 OnVisualPropertiesChanged(); 51 } 54 52 } 55 53 } 56 54 57 [Storable] 58 private string yAxisName; 59 public string YAxisName { 60 get { return yAxisName; } 55 private NamedItemCollection<ScatterPlotDataRow> rows; 56 public NamedItemCollection<ScatterPlotDataRow> Rows { 57 get { return rows; } 58 private set { 59 if (rows != null) throw new InvalidOperationException("Rows already set"); 60 rows = value; 61 if (rows != null) RegisterRowsEvents(); 62 } 63 } 64 65 #region Persistence Properties 66 [Storable(Name = "VisualProperties")] 67 private ScatterPlotVisualProperties StorableVisualProperties { 68 get { return visualProperties; } 61 69 set { 62 if (value == yAxisName) return; 63 yAxisName = value; 64 OnAxesNameChanged(); 70 visualProperties = value; 71 visualProperties.PropertyChanged += new PropertyChangedEventHandler(VisualProperties_PropertyChanged); 65 72 } 66 73 } 74 [Storable(Name = "Rows")] 75 private IEnumerable<ScatterPlotDataRow> StorableRows { 76 get { return rows; } 77 set { Rows = new NamedItemCollection<ScatterPlotDataRow>(value); } 78 } 79 #endregion 67 80 68 81 [StorableConstructor] … … 70 83 protected ScatterPlot(ScatterPlot original, Cloner cloner) 71 84 : base(original, cloner) { 72 points = new ObservableList<PointF>(original.points); 73 xAxisName = original.xAxisName; 74 yAxisName = original.yAxisName; 85 VisualProperties = cloner.Clone(original.visualProperties); 86 Rows = cloner.Clone(original.rows); 75 87 } 76 88 public ScatterPlot() 77 89 : base() { 78 this.points = new ObservableList<PointF>(); 79 } 80 public ScatterPlot(string name) 81 : base(name) { 82 this.points = new ObservableList<PointF>(); 90 VisualProperties = new ScatterPlotVisualProperties(); 91 Rows = new NamedItemCollection<ScatterPlotDataRow>(); 83 92 } 84 93 public ScatterPlot(string name, string description) 85 94 : base(name, description) { 86 this.points = new ObservableList<PointF>(); 87 } 88 public ScatterPlot(string name, string description, string xAxisName, string yAxisName) 95 VisualProperties = new ScatterPlotVisualProperties(name); 96 Rows = new NamedItemCollection<ScatterPlotDataRow>(); 97 } 98 public ScatterPlot(string name, string description, ScatterPlotVisualProperties visualProperties) 89 99 : base(name, description) { 90 this.points = new ObservableList<PointF>(); 91 this.xAxisName = xAxisName; 92 this.yAxisName = yAxisName; 93 } 94 public ScatterPlot(IEnumerable<PointF> points) 95 : base() { 96 this.points = new ObservableList<PointF>(points); 97 } 98 public ScatterPlot(IEnumerable<PointF> points, string name) 99 : base(name) { 100 this.points = new ObservableList<PointF>(points); 101 } 102 public ScatterPlot(IEnumerable<PointF> points, string name, string description) 103 : base(name, description) { 104 this.points = new ObservableList<PointF>(points); 105 } 106 public ScatterPlot(IEnumerable<PointF> points, string name, string description, string xAxisName, string yAxisName) 107 : base(name, description) { 108 this.points = new ObservableList<PointF>(points); 109 this.xAxisName = xAxisName; 110 this.yAxisName = yAxisName; 111 } 100 VisualProperties = visualProperties; 101 Rows = new NamedItemCollection<ScatterPlotDataRow>(); 102 } 103 104 // BackwardsCompatibility3.3 105 #region Backwards compatible code, remove with 3.4 106 private ObservableList<PointF> points; 107 [Storable(Name = "points", AllowOneWay = true)] 108 private ObservableList<PointF> StorablePoints { 109 set { points = value; } 110 } 111 private string xAxisName; 112 [Storable(Name = "xAxisName", AllowOneWay = true)] 113 private string StorableXAxisName { 114 set { xAxisName = value; } 115 } 116 private string yAxisName; 117 [Storable(Name = "yAxisName", AllowOneWay = true)] 118 private string StorableYAxisName { 119 set { yAxisName = value; } 120 } 121 [StorableHook(HookType.AfterDeserialization)] 122 private void AfterDeserialization() { 123 if (VisualProperties == null) VisualProperties = new ScatterPlotVisualProperties(name); 124 if (string.IsNullOrEmpty(VisualProperties.XAxisTitle) && !string.IsNullOrEmpty(xAxisName)) VisualProperties.XAxisTitle = xAxisName; 125 if (string.IsNullOrEmpty(VisualProperties.YAxisTitle) && !string.IsNullOrEmpty(yAxisName)) VisualProperties.YAxisTitle = yAxisName; 126 if (rows == null) Rows = new NamedItemCollection<ScatterPlotDataRow>(); 127 if ((Rows.Count == 0) && (points != null)) Rows.Add(new ScatterPlotDataRow(name, null, points.Select(p => new Point2D<double>(p.X, p.Y)))); 128 } 129 #endregion 112 130 113 131 public override IDeepCloneable Clone(Cloner cloner) { … … 115 133 } 116 134 117 public event EventHandler AxisNameChanged; 118 protected virtual void OnAxesNameChanged() { 119 EventHandler handler = AxisNameChanged; 120 if (handler != null) 121 handler(this, EventArgs.Empty); 135 public event EventHandler VisualPropertiesChanged; 136 protected virtual void OnVisualPropertiesChanged() { 137 EventHandler handler = VisualPropertiesChanged; 138 if (handler != null) handler(this, EventArgs.Empty); 139 } 140 141 private void VisualProperties_PropertyChanged(object sender, PropertyChangedEventArgs e) { 142 OnVisualPropertiesChanged(); 143 } 144 145 protected virtual void RegisterRowsEvents() { 146 rows.ItemsAdded += new CollectionItemsChangedEventHandler<ScatterPlotDataRow>(rows_ItemsAdded); 147 rows.ItemsRemoved += new CollectionItemsChangedEventHandler<ScatterPlotDataRow>(rows_ItemsRemoved); 148 rows.ItemsReplaced += new CollectionItemsChangedEventHandler<ScatterPlotDataRow>(rows_ItemsReplaced); 149 rows.CollectionReset += new CollectionItemsChangedEventHandler<ScatterPlotDataRow>(rows_CollectionReset); 150 } 151 private void rows_ItemsAdded(object sender, CollectionItemsChangedEventArgs<ScatterPlotDataRow> e) { 152 foreach (ScatterPlotDataRow row in e.Items) 153 this.RegisterRowEvents(row); 154 155 this.OnColumnsChanged(); 156 this.OnColumnNamesChanged(); 157 this.OnReset(); 158 } 159 private void rows_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<ScatterPlotDataRow> e) { 160 foreach (ScatterPlotDataRow row in e.Items) 161 this.DeregisterRowEvents(row); 162 163 this.OnColumnsChanged(); 164 this.OnColumnNamesChanged(); 165 this.OnReset(); 166 } 167 private void rows_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<ScatterPlotDataRow> e) { 168 foreach (ScatterPlotDataRow row in e.OldItems) 169 this.DeregisterRowEvents(row); 170 foreach (ScatterPlotDataRow row in e.Items) 171 this.RegisterRowEvents(row); 172 173 this.OnColumnsChanged(); 174 this.OnColumnNamesChanged(); 175 this.OnReset(); 176 } 177 private void rows_CollectionReset(object sender, CollectionItemsChangedEventArgs<ScatterPlotDataRow> e) { 178 foreach (ScatterPlotDataRow row in e.OldItems) 179 this.DeregisterRowEvents(row); 180 foreach (ScatterPlotDataRow row in e.Items) 181 this.RegisterRowEvents(row); 182 183 if (e.OldItems.Count() != e.Items.Count()) 184 this.OnColumnsChanged(); 185 this.OnColumnNamesChanged(); 186 this.OnReset(); 187 } 188 189 protected virtual void RegisterRowEvents(ScatterPlotDataRow row) { 190 row.Points.ItemsAdded += new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_ItemsAdded); 191 row.Points.ItemsMoved += new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_ItemsMoved); 192 row.Points.ItemsRemoved += new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_ItemsRemoved); 193 row.Points.ItemsReplaced += new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_ItemsReplaced); 194 row.Points.CollectionReset += new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_CollectionReset); 195 } 196 protected virtual void DeregisterRowEvents(ScatterPlotDataRow row) { 197 row.Points.ItemsAdded -= new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_ItemsAdded); 198 row.Points.ItemsMoved -= new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_ItemsMoved); 199 row.Points.ItemsRemoved -= new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_ItemsRemoved); 200 row.Points.ItemsReplaced -= new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_ItemsReplaced); 201 row.Points.CollectionReset -= new CollectionItemsChangedEventHandler<IndexedItem<Point2D<double>>>(Points_CollectionReset); 202 } 203 204 private void Points_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IndexedItem<Point2D<double>>> e) { 205 this.OnReset(); 206 } 207 private void Points_ItemsMoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Point2D<double>>> e) { 208 this.OnReset(); 209 } 210 private void Points_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IndexedItem<Point2D<double>>> e) { 211 this.OnReset(); 212 } 213 private void Points_ItemsReplaced(object sender, CollectionItemsChangedEventArgs<IndexedItem<Point2D<double>>> e) { 214 this.OnReset(); 215 } 216 private void Points_CollectionReset(object sender, CollectionItemsChangedEventArgs<IndexedItem<Point2D<double>>> e) { 217 this.OnReset(); 122 218 } 123 219 124 220 #region IStringConvertibleMatrix Members 125 126 221 int IStringConvertibleMatrix.Rows { 127 get { return points.Count; }222 get { return rows.Count == 0 ? 0 : rows.Max(r => r.Points.Count); } 128 223 set { throw new NotSupportedException(); } 129 224 } 130 225 int IStringConvertibleMatrix.Columns { 131 get { return 2; }226 get { return rows.Count; } 132 227 set { throw new NotSupportedException(); } 133 228 } 134 229 IEnumerable<string> IStringConvertibleMatrix.ColumnNames { 135 get { return new string[] { xAxisName, yAxisName }; }230 get { return rows.Select(r => r.Name); } 136 231 set { throw new NotSupportedException(); } 137 232 } … … 142 237 143 238 bool IStringConvertibleMatrix.SortableView { 144 get { return false; }239 get { return true; } 145 240 set { throw new NotSupportedException(); } 146 241 } … … 150 245 151 246 string IStringConvertibleMatrix.GetValue(int rowIndex, int columnIndex) { 152 if (rowIndex < points.Count && columnIndex < 2) { 153 return columnIndex == 0 ? points[rowIndex].X.ToString() : points[rowIndex].Y.ToString(); 247 if (columnIndex < rows.Count) { 248 string columnName = ((IStringConvertibleMatrix)this).ColumnNames.ElementAt(columnIndex); 249 if (rows.ContainsKey(columnName) && rowIndex < rows[columnName].Points.Count) 250 return string.Format("{0};{1}", rows[columnName].Points[rowIndex].X, rows[columnName].Points[rowIndex].Y); 154 251 } 155 252 return string.Empty; -
branches/OaaS/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj
r8016 r9363 99 99 </PropertyGroup> 100 100 <ItemGroup> 101 <Reference Include="ALGLIB-3. 5.0, Version=3.5.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">102 <HintPath>..\..\bin\ALGLIB-3. 5.0.dll</HintPath>101 <Reference Include="ALGLIB-3.7.0, Version=3.7.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 102 <HintPath>..\..\bin\ALGLIB-3.7.0.dll</HintPath> 103 103 <Private>False</Private> 104 104 </Reference> … … 125 125 <Compile Include="AlleleFrequencyAnalysis\AlleleFrequencyCollectionHistory.cs" /> 126 126 <Compile Include="BestScopeSolutionAnalyzer.cs" /> 127 <Compile Include="DataVisualization\ScatterPlotDataRowVisualProperties.cs" /> 128 <Compile Include="DataVisualization\ScatterPlotDataRow.cs" /> 129 <Compile Include="DataVisualization\ScatterPlotVisualProperties.cs" /> 130 <Compile Include="DataVisualization\ScatterPlotHistory.cs" /> 127 131 <Compile Include="DataVisualization\DataRow.cs" /> 128 132 <Compile Include="DataVisualization\DataRowVisualProperties.cs" /> … … 139 143 <Compile Include="Plugin.cs" /> 140 144 <Compile Include="PopulationDiversityAnalysis\PopulationDiversityAnalyzer.cs" /> 145 <Compile Include="PopulationDiversityAnalysis\SingleObjectivePopulationDiversityAnalyzer.cs" /> 141 146 <Compile Include="QualityAnalysis\BestAverageWorstQualityAnalyzer.cs" /> 142 147 <Compile Include="QualityAnalysis\BestAverageWorstQualityCalculator.cs" /> … … 240 245 --> 241 246 <PropertyGroup> 242 <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)247 <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir) 243 248 set ProjectDir=$(ProjectDir) 244 249 set SolutionDir=$(SolutionDir) … … 247 252 call PreBuildEvent.cmd 248 253 </PreBuildEvent> 254 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' "> 255 export ProjectDir=$(ProjectDir) 256 export SolutionDir=$(SolutionDir) 257 258 $SolutionDir/PreBuildEvent.sh 259 </PreBuildEvent> 249 260 </PropertyGroup> 250 261 </Project> -
branches/OaaS/HeuristicLab.Analysis/3.3/MultiObjective/ParetoFrontAnalyzer.cs
r7172 r9363 1 using HeuristicLab.Common; 1 #region License Information 2 /* HeuristicLab 3 * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 * 5 * This file is part of HeuristicLab. 6 * 7 * HeuristicLab is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * HeuristicLab is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 #endregion 21 22 using HeuristicLab.Common; 2 23 using HeuristicLab.Core; 3 24 using HeuristicLab.Data; -
branches/OaaS/HeuristicLab.Analysis/3.3/Plugin.cs.frame
r7675 r9363 26 26 /// Plugin class for HeuristicLab.Analysis plugin. 27 27 /// </summary> 28 [Plugin("HeuristicLab.Analysis", "3.3. 6.$WCREV$")]28 [Plugin("HeuristicLab.Analysis", "3.3.7.$WCREV$")] 29 29 [PluginFile("HeuristicLab.Analysis-3.3.dll", PluginFileType.Assembly)] 30 [PluginDependency("HeuristicLab.ALGLIB", "3. 5")]30 [PluginDependency("HeuristicLab.ALGLIB", "3.7.0")] 31 31 [PluginDependency("HeuristicLab.Collections", "3.3")] 32 32 [PluginDependency("HeuristicLab.Common", "3.3")] -
branches/OaaS/HeuristicLab.Analysis/3.3/PopulationDiversityAnalysis/PopulationDiversityAnalyzer.cs
r7259 r9363 31 31 32 32 namespace HeuristicLab.Analysis { 33 // use HeuristicLab.Analysis.SingleObjectivePopulationDiversityAnalyzer instead 34 // BackwardsCompatibility3.3 35 #region Backwards compatible code, remove with 3.4 33 36 /// <summary> 34 37 /// An operator for analyzing the solution diversity in a population. 35 38 /// </summary> 39 [Obsolete] 36 40 [Item("PopulationDiversityAnalyzer", "An operator for analyzing the solution diversity in a population.")] 37 41 [StorableClass] … … 245 249 protected abstract double[,] CalculateSimilarities(T[] solutions); 246 250 } 251 #endregion 247 252 } -
branches/OaaS/HeuristicLab.Analysis/3.3/Properties/AssemblyInfo.cs.frame
r7259 r9363 54 54 // by using the '*' as shown below: 55 55 [assembly: AssemblyVersion("3.3.0.0")] 56 [assembly: AssemblyFileVersion("3.3. 6.$WCREV$")]56 [assembly: AssemblyFileVersion("3.3.7.$WCREV$")]
Note: See TracChangeset
for help on using the changeset viewer.