Changeset 6760 for branches/PersistenceSpeedUp/HeuristicLab.Analysis
- Timestamp:
- 09/14/11 13:59:25 (13 years ago)
- Location:
- branches/PersistenceSpeedUp
- Files:
-
- 10 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/PersistenceSpeedUp
- Property svn:ignore
-
old new 12 12 *.psess 13 13 *.vsp 14 *.docstates
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/PersistenceSpeedUp/HeuristicLab.Analysis
- Property svn:mergeinfo changed
-
branches/PersistenceSpeedUp/HeuristicLab.Analysis/3.3/DataVisualization/DataRow.cs
r5445 r6760 83 83 public DataRow(string name) 84 84 : base(name) { 85 VisualProperties = new DataRowVisualProperties( );85 VisualProperties = new DataRowVisualProperties(name); 86 86 values = new ObservableList<double>(); 87 87 } 88 88 public DataRow(string name, string description) 89 89 : base(name, description) { 90 VisualProperties = new DataRowVisualProperties( );90 VisualProperties = new DataRowVisualProperties(name); 91 91 values = new ObservableList<double>(); 92 92 } 93 93 public DataRow(string name, string description, IEnumerable<double> values) 94 94 : base(name, description) { 95 VisualProperties = new DataRowVisualProperties( );95 VisualProperties = new DataRowVisualProperties(name); 96 96 this.values = new ObservableList<double>(values); 97 97 } -
branches/PersistenceSpeedUp/HeuristicLab.Analysis/3.3/DataVisualization/DataRowVisualProperties.cs
r5445 r6760 20 20 #endregion 21 21 22 using System; 22 23 using System.ComponentModel; 23 24 using System.Drawing; … … 36 37 Columns, 37 38 Points, 38 Bars 39 Bars, 40 Histogram 41 } 42 #endregion 43 #region LineStyle 44 public enum DataRowLineStyle { 45 Dash, 46 DashDot, 47 DashDotDot, 48 Dot, 49 NotSet, 50 Solid 39 51 } 40 52 #endregion … … 60 72 } 61 73 } 74 private bool secondXAxis; 75 public bool SecondXAxis { 76 get { return secondXAxis; } 77 set { 78 if (secondXAxis != value) { 79 secondXAxis = value; 80 OnPropertyChanged("SecondXAxis"); 81 } 82 } 83 } 62 84 private Color color; 63 85 public Color Color { … … 70 92 } 71 93 } 94 private DataRowLineStyle lineStyle; 95 public DataRowLineStyle LineStyle { 96 get { return lineStyle; } 97 set { 98 if (lineStyle != value) { 99 lineStyle = value; 100 OnPropertyChanged("LineStyle"); 101 } 102 } 103 } 72 104 private bool startIndexZero; 73 105 public bool StartIndexZero { … … 77 109 startIndexZero = value; 78 110 OnPropertyChanged("StartIndexZero"); 111 } 112 } 113 } 114 private int lineWidth; 115 public int LineWidth { 116 get { return lineWidth; } 117 set { 118 if (lineWidth != value) { 119 lineWidth = value; 120 OnPropertyChanged("LineWidth"); 121 } 122 } 123 } 124 private int bins; 125 public int Bins { 126 get { return bins; } 127 set { 128 if (bins != value) { 129 bins = value; 130 OnPropertyChanged("Bins"); 131 } 132 } 133 } 134 private bool exactBins; 135 public bool ExactBins { 136 get { return exactBins; } 137 set { 138 if (exactBins != value) { 139 exactBins = value; 140 OnPropertyChanged("ExactBins"); 141 } 142 } 143 } 144 private string displayName; 145 public string DisplayName { 146 get { return displayName == null ? String.Empty : displayName; } 147 set { 148 if (displayName != value) { 149 if (value == null && displayName != String.Empty) { 150 displayName = String.Empty; 151 OnPropertyChanged("DisplayName"); 152 } else if (value != null) { 153 displayName = value; 154 OnPropertyChanged("DisplayName"); 155 } 79 156 } 80 157 } … … 92 169 set { secondYAxis = value; } 93 170 } 171 [Storable(Name = "SecondXAxis")] 172 private bool StorableSecondXAxis { 173 get { return secondXAxis; } 174 set { secondXAxis = value; } 175 } 94 176 [Storable(Name = "Color")] 95 177 private Color StorableColor { … … 97 179 set { color = value; } 98 180 } 181 [Storable(Name = "LineStyle")] 182 private DataRowLineStyle StorableLineStyle { 183 get { return lineStyle; } 184 set { lineStyle = value; } 185 } 99 186 [Storable(Name = "StartIndexZero")] 100 187 private bool StorableStartIndexZero { 101 188 get { return startIndexZero; } 102 189 set { startIndexZero = value; } 190 } 191 [Storable(Name = "LineWidth")] 192 private int StorableLineWidth { 193 get { return lineWidth; } 194 set { lineWidth = value; } 195 } 196 [Storable(Name = "Bins")] 197 private int StorableBins { 198 get { return bins; } 199 set { bins = value; } 200 } 201 [Storable(Name = "ExactBins")] 202 private bool StorableExactBins { 203 get { return exactBins; } 204 set { exactBins = value; } 205 } 206 [Storable(Name = "DisplayName")] 207 private string StorableDisplayName { 208 get { return displayName; } 209 set { displayName = value; } 103 210 } 104 211 #endregion … … 110 217 this.chartType = original.chartType; 111 218 this.secondYAxis = original.secondYAxis; 219 this.secondXAxis = original.secondXAxis; 112 220 this.color = original.color; 221 this.lineStyle = original.lineStyle; 113 222 this.startIndexZero = original.startIndexZero; 223 this.lineWidth = original.lineWidth; 224 this.bins = original.bins; 225 this.exactBins = original.exactBins; 226 this.displayName = original.displayName; 114 227 } 115 228 public DataRowVisualProperties() { 116 229 chartType = DataRowChartType.Line; 117 230 secondYAxis = false; 231 secondXAxis = false; 118 232 color = Color.Empty; 233 lineStyle = DataRowLineStyle.Solid; 119 234 startIndexZero = false; 235 lineWidth = 1; 236 bins = 10; 237 exactBins = false; 238 displayName = String.Empty; 239 } 240 public DataRowVisualProperties(string displayName) 241 : this() { 242 this.displayName = displayName; 120 243 } 121 244 … … 129 252 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 130 253 } 254 255 [StorableHook(HookType.AfterDeserialization)] 256 private void AfterDeserialization() { 257 // BackwardsCompatibility3.3 258 #region Backwards compatible code, remove with 3.4 259 if (secondXAxis == default(bool) 260 && lineStyle == default(DataRowLineStyle) 261 && lineWidth == default(int) && bins == default(int) && exactBins == default(bool) 262 && displayName == default(string)) { 263 secondXAxis = false; 264 lineStyle = DataRowLineStyle.Solid; 265 lineWidth = 1; 266 bins = 10; 267 exactBins = false; 268 displayName = String.Empty; 269 } 270 #endregion 271 } 131 272 } 132 273 } -
branches/PersistenceSpeedUp/HeuristicLab.Analysis/3.3/DataVisualization/DataTableVisualProperties.cs
r5445 r6760 21 21 22 22 using System.ComponentModel; 23 using System.Drawing; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 30 31 [StorableClass] 31 32 public class DataTableVisualProperties : DeepCloneable, INotifyPropertyChanged { 33 private Font titleFont; 34 public Font TitleFont { 35 get { return titleFont; } 36 set { 37 if (titleFont == null || value == null 38 || titleFont.Name != value.Name || titleFont.Size != value.Size || titleFont.Style != value.Style) { 39 titleFont = value; 40 OnPropertyChanged("TitleFont"); 41 } 42 } 43 } 44 private Color titleColor; 45 public Color TitleColor { 46 get { return titleColor; } 47 set { 48 if (titleColor != value) { 49 titleColor = value; 50 OnPropertyChanged("TitleFontColor"); 51 } 52 } 53 } 54 private Font axisTitleFont; 55 public Font AxisTitleFont { 56 get { return axisTitleFont; } 57 set { 58 if (axisTitleFont == null || axisTitleFont == null 59 || axisTitleFont.Name != value.Name || axisTitleFont.Size != value.Size || axisTitleFont.Style != value.Style) { 60 axisTitleFont = value; 61 OnPropertyChanged("AxisTitleFont"); 62 } 63 } 64 } 65 private Color axisTitleColor; 66 public Color AxisTitleColor { 67 get { return axisTitleColor; } 68 set { 69 if (axisTitleColor != value) { 70 axisTitleColor = value; 71 OnPropertyChanged("AxisTitleColor"); 72 } 73 } 74 } 32 75 private string xAxisTitle; 33 76 public string XAxisTitle { … … 54 97 } 55 98 99 private string secondXAxisTitle; 100 public string SecondXAxisTitle { 101 get { return secondXAxisTitle; } 102 set { 103 if (value == null) value = string.Empty; 104 if (secondXAxisTitle != value) { 105 secondXAxisTitle = value; 106 OnPropertyChanged("SecondXAxisTitle"); 107 } 108 } 109 } 110 56 111 private string secondYAxisTitle; 57 112 public string SecondYAxisTitle { … … 66 121 } 67 122 123 private bool xAxisMinimumAuto; 124 public bool XAxisMinimumAuto { 125 get { return xAxisMinimumAuto; } 126 set { 127 if (xAxisMinimumAuto != value) { 128 xAxisMinimumAuto = value; 129 if (value) xAxisMinimumFixedValue = double.NaN; 130 OnPropertyChanged("XAxisMinimumAuto"); 131 } 132 } 133 } 134 135 private bool xAxisMaximumAuto; 136 public bool XAxisMaximumAuto { 137 get { return xAxisMaximumAuto; } 138 set { 139 if (xAxisMaximumAuto != value) { 140 xAxisMaximumAuto = value; 141 if (value) xAxisMaximumFixedValue = double.NaN; 142 OnPropertyChanged("XAxisMaximumAuto"); 143 } 144 } 145 } 146 147 private double xAxisMinimumFixedValue; 148 public double XAxisMinimumFixedValue { 149 get { return xAxisMinimumFixedValue; } 150 set { 151 if (xAxisMinimumFixedValue != value) { 152 xAxisMinimumFixedValue = value; 153 OnPropertyChanged("XAxisMinimumFixedValue"); 154 } 155 } 156 } 157 158 private double xAxisMaximumFixedValue; 159 public double XAxisMaximumFixedValue { 160 get { return xAxisMaximumFixedValue; } 161 set { 162 if (xAxisMaximumFixedValue != value) { 163 xAxisMaximumFixedValue = value; 164 OnPropertyChanged("XAxisMaximumFixedValue"); 165 } 166 } 167 } 168 169 private bool secondXAxisMinimumAuto; 170 public bool SecondXAxisMinimumAuto { 171 get { return secondXAxisMinimumAuto; } 172 set { 173 if (secondXAxisMinimumAuto != value) { 174 secondXAxisMinimumAuto = value; 175 if (value) secondXAxisMinimumFixedValue = double.NaN; 176 OnPropertyChanged("SecondXAxisMinimumAuto"); 177 } 178 } 179 } 180 181 private bool secondXAxisMaximumAuto; 182 public bool SecondXAxisMaximumAuto { 183 get { return secondXAxisMaximumAuto; } 184 set { 185 if (secondXAxisMaximumAuto != value) { 186 secondXAxisMaximumAuto = value; 187 if (value) secondXAxisMaximumFixedValue = double.NaN; 188 OnPropertyChanged("SecondXAxisMaximumAuto"); 189 } 190 } 191 } 192 193 private double secondXAxisMinimumFixedValue; 194 public double SecondXAxisMinimumFixedValue { 195 get { return secondXAxisMinimumFixedValue; } 196 set { 197 if (secondXAxisMinimumFixedValue != value) { 198 secondXAxisMinimumFixedValue = value; 199 OnPropertyChanged("SecondXAxisMinimumFixedValue"); 200 } 201 } 202 } 203 204 private double secondXAxisMaximumFixedValue; 205 public double SecondXAxisMaximumFixedValue { 206 get { return secondXAxisMaximumFixedValue; } 207 set { 208 if (secondXAxisMaximumFixedValue != value) { 209 secondXAxisMaximumFixedValue = value; 210 OnPropertyChanged("SecondXAxisMaximumFixedValue"); 211 } 212 } 213 } 214 215 private bool yAxisMinimumAuto; 216 public bool YAxisMinimumAuto { 217 get { return yAxisMinimumAuto; } 218 set { 219 if (yAxisMinimumAuto != value) { 220 yAxisMinimumAuto = value; 221 if (value) yAxisMinimumFixedValue = double.NaN; 222 OnPropertyChanged("YAxisMinimumAuto"); 223 } 224 } 225 } 226 227 private bool yAxisMaximumAuto; 228 public bool YAxisMaximumAuto { 229 get { return yAxisMaximumAuto; } 230 set { 231 if (yAxisMaximumAuto != value) { 232 yAxisMaximumAuto = value; 233 if (value) yAxisMaximumFixedValue = double.NaN; 234 OnPropertyChanged("YAxisMaximumAuto"); 235 } 236 } 237 } 238 239 private double yAxisMinimumFixedValue; 240 public double YAxisMinimumFixedValue { 241 get { return yAxisMinimumFixedValue; } 242 set { 243 if (yAxisMinimumFixedValue != value) { 244 yAxisMinimumFixedValue = value; 245 OnPropertyChanged("YAxisMinimumFixedValue"); 246 } 247 } 248 } 249 250 private double yAxisMaximumFixedValue; 251 public double YAxisMaximumFixedValue { 252 get { return yAxisMaximumFixedValue; } 253 set { 254 if (yAxisMaximumFixedValue != value) { 255 yAxisMaximumFixedValue = value; 256 OnPropertyChanged("YAxisMaximumFixedValue"); 257 } 258 } 259 } 260 261 private bool secondYAxisMinimumAuto; 262 public bool SecondYAxisMinimumAuto { 263 get { return secondYAxisMinimumAuto; } 264 set { 265 if (secondYAxisMinimumAuto != value) { 266 secondYAxisMinimumAuto = value; 267 if (value) secondYAxisMinimumFixedValue = double.NaN; 268 OnPropertyChanged("SecondYAxisMinimumAuto"); 269 } 270 } 271 } 272 273 private bool secondYAxisMaximumAuto; 274 public bool SecondYAxisMaximumAuto { 275 get { return secondYAxisMaximumAuto; } 276 set { 277 if (secondYAxisMaximumAuto != value) { 278 secondYAxisMaximumAuto = value; 279 if (value) secondYAxisMaximumFixedValue = double.NaN; 280 OnPropertyChanged("SecondYAxisMaximumAuto"); 281 } 282 } 283 } 284 285 private double secondYAxisMinimumFixedValue; 286 public double SecondYAxisMinimumFixedValue { 287 get { return secondYAxisMinimumFixedValue; } 288 set { 289 if (secondYAxisMinimumFixedValue != value) { 290 secondYAxisMinimumFixedValue = value; 291 OnPropertyChanged("SecondYAxisMinimumFixedValue"); 292 } 293 } 294 } 295 296 private double secondYAxisMaximumFixedValue; 297 public double SecondYAxisMaximumFixedValue { 298 get { return secondYAxisMaximumFixedValue; } 299 set { 300 if (secondYAxisMaximumFixedValue != value) { 301 secondYAxisMaximumFixedValue = value; 302 OnPropertyChanged("SecondYAxisMaximumFixedValue"); 303 } 304 } 305 } 306 68 307 #region Persistence Properties 308 [Storable(Name = "TitleFont")] 309 private Font StorableTitleFont { 310 get { return titleFont; } 311 set { titleFont = value; } 312 } 313 [Storable(Name = "TitleColor")] 314 private Color StorableTitleColor { 315 get { return titleColor; } 316 set { titleColor = value; } 317 } 318 [Storable(Name = "AxisTitleFont")] 319 private Font StorableAxisTitleFont { 320 get { return axisTitleFont; } 321 set { axisTitleFont = value; } 322 } 323 [Storable(Name = "AxisTitleColor")] 324 private Color StorableAxisTitleColor { 325 get { return axisTitleColor; } 326 set { axisTitleColor = value; } 327 } 69 328 [Storable(Name = "XAxisTitle")] 70 329 private string StorableXAxisTitle { … … 77 336 set { yAxisTitle = value; } 78 337 } 338 [Storable(Name = "SecondXAxisTitle")] 339 private string StorableSecondXAxisTitle { 340 get { return secondXAxisTitle; } 341 set { secondXAxisTitle = value; } 342 } 79 343 [Storable(Name = "SecondYAxisTitle")] 80 344 private string StorableSecondYAxisTitle { … … 82 346 set { secondYAxisTitle = value; } 83 347 } 348 [Storable(Name = "XAxisMinimumAuto")] 349 private bool StorableXAxisMinimumAuto { 350 get { return xAxisMinimumAuto; } 351 set { xAxisMinimumAuto = value; } 352 } 353 [Storable(Name = "XAxisMaximumAuto")] 354 private bool StorableXAxisMaximumAuto { 355 get { return xAxisMaximumAuto; } 356 set { xAxisMaximumAuto = value; } 357 } 358 [Storable(Name = "XAxisMinimumFixedValue")] 359 private double StorableXAxisMinimumFixedValue { 360 get { return xAxisMinimumFixedValue; } 361 set { xAxisMinimumFixedValue = value; } 362 } 363 [Storable(Name = "XAxisMaximumFixedValue")] 364 private double StorableXAxisMaximumFixedValue { 365 get { return xAxisMaximumFixedValue; } 366 set { xAxisMaximumFixedValue = value; } 367 } 368 [Storable(Name = "SecondXAxisMinimumAuto")] 369 private bool StorableSecondXAxisMinimumAuto { 370 get { return secondXAxisMinimumAuto; } 371 set { secondXAxisMinimumAuto = value; } 372 } 373 [Storable(Name = "SecondXAxisMaximumAuto")] 374 private bool StorableSecondXAxisMaximumAuto { 375 get { return secondXAxisMaximumAuto; } 376 set { secondXAxisMaximumAuto = value; } 377 } 378 [Storable(Name = "SecondXAxisMinimumFixedValue")] 379 private double StorableSecondXAxisMinimumFixedValue { 380 get { return secondXAxisMinimumFixedValue; } 381 set { secondXAxisMinimumFixedValue = value; } 382 } 383 [Storable(Name = "SecondXAxisMaximumFixedValue")] 384 private double StorableSecondXAxisMaximumFixedValue { 385 get { return secondXAxisMaximumFixedValue; } 386 set { secondXAxisMaximumFixedValue = value; } 387 } 388 [Storable(Name = "YAxisMinimumAuto")] 389 private bool StorableYAxisMinimumAuto { 390 get { return yAxisMinimumAuto; } 391 set { yAxisMinimumAuto = value; } 392 } 393 [Storable(Name = "YAxisMaximumAuto")] 394 private bool StorableYAxisMaximumAuto { 395 get { return yAxisMaximumAuto; } 396 set { yAxisMaximumAuto = value; } 397 } 398 [Storable(Name = "YAxisMinimumFixedValue")] 399 private double StorableYAxisMinimumFixedValue { 400 get { return yAxisMinimumFixedValue; } 401 set { yAxisMinimumFixedValue = value; } 402 } 403 [Storable(Name = "YAxisMaximumFixedValue")] 404 private double StorableYAxisMaximumFixedValue { 405 get { return yAxisMaximumFixedValue; } 406 set { yAxisMaximumFixedValue = value; } 407 } 408 [Storable(Name = "SecondYAxisMinimumAuto")] 409 private bool StorableSecondYAxisMinimumAuto { 410 get { return secondYAxisMinimumAuto; } 411 set { secondYAxisMinimumAuto = value; } 412 } 413 [Storable(Name = "SecondYAxisMaximumAuto")] 414 private bool StorableSecondYAxisMaximumAuto { 415 get { return secondYAxisMaximumAuto; } 416 set { secondYAxisMaximumAuto = value; } 417 } 418 [Storable(Name = "SecondYAxisMinimumFixedValue")] 419 private double StorableSecondYAxisMinimumFixedValue { 420 get { return secondYAxisMinimumFixedValue; } 421 set { secondYAxisMinimumFixedValue = value; } 422 } 423 [Storable(Name = "SecondYAxisMaximumFixedValue")] 424 private double StorableSecondYAxisMaximumFixedValue { 425 get { return secondYAxisMaximumFixedValue; } 426 set { secondYAxisMaximumFixedValue = value; } 427 } 84 428 #endregion 85 429 … … 88 432 protected DataTableVisualProperties(DataTableVisualProperties original, Cloner cloner) 89 433 : base(original, cloner) { 434 if (original.titleFont != null) 435 this.titleFont = (Font)original.titleFont.Clone(); 436 if (original.axisTitleFont != null) 437 this.axisTitleFont = (Font)original.axisTitleFont.Clone(); 90 438 this.xAxisTitle = original.xAxisTitle; 91 439 this.yAxisTitle = original.yAxisTitle; 440 this.secondXAxisTitle = original.secondXAxisTitle; 92 441 this.secondYAxisTitle = original.secondYAxisTitle; 442 this.xAxisMinimumAuto = original.xAxisMinimumAuto; 443 this.xAxisMinimumFixedValue = original.xAxisMinimumFixedValue; 444 this.xAxisMaximumAuto = original.xAxisMaximumAuto; 445 this.xAxisMaximumFixedValue = original.xAxisMaximumFixedValue; 446 this.secondXAxisMinimumAuto = original.secondXAxisMinimumAuto; 447 this.secondXAxisMinimumFixedValue = original.secondXAxisMinimumFixedValue; 448 this.secondXAxisMaximumAuto = original.secondXAxisMaximumAuto; 449 this.secondXAxisMaximumFixedValue = original.secondXAxisMaximumFixedValue; 450 this.yAxisMinimumAuto = original.yAxisMinimumAuto; 451 this.yAxisMinimumFixedValue = original.yAxisMinimumFixedValue; 452 this.yAxisMaximumAuto = original.yAxisMaximumAuto; 453 this.yAxisMaximumFixedValue = original.yAxisMaximumFixedValue; 454 this.secondYAxisMinimumAuto = original.secondYAxisMinimumAuto; 455 this.secondYAxisMinimumFixedValue = original.secondYAxisMinimumFixedValue; 456 this.secondYAxisMaximumAuto = original.secondYAxisMaximumAuto; 457 this.secondYAxisMaximumFixedValue = original.secondYAxisMaximumFixedValue; 93 458 } 94 459 public DataTableVisualProperties() { 460 titleColor = Color.Black; 461 axisTitleColor = Color.Black; 95 462 this.xAxisTitle = string.Empty; 96 463 this.yAxisTitle = string.Empty; 464 this.secondXAxisTitle = string.Empty; 97 465 this.secondYAxisTitle = string.Empty; 466 this.xAxisMinimumAuto = true; 467 this.xAxisMinimumFixedValue = double.NaN; 468 this.xAxisMaximumAuto = true; 469 this.xAxisMaximumFixedValue = double.NaN; 470 this.secondXAxisMinimumAuto = true; 471 this.secondXAxisMinimumFixedValue = double.NaN; 472 this.secondXAxisMaximumAuto = true; 473 this.secondXAxisMaximumFixedValue = double.NaN; 474 this.yAxisMinimumAuto = true; 475 this.yAxisMinimumFixedValue = double.NaN; 476 this.yAxisMaximumAuto = true; 477 this.yAxisMaximumFixedValue = double.NaN; 478 this.secondYAxisMinimumAuto = true; 479 this.secondYAxisMinimumFixedValue = double.NaN; 480 this.secondYAxisMaximumAuto = true; 481 this.secondYAxisMaximumFixedValue = double.NaN; 98 482 } 99 483 … … 107 491 if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 108 492 } 493 494 [StorableHook(HookType.AfterDeserialization)] 495 private void AfterDeserialization() { 496 // BackwardsCompatibility3.3 497 #region Backwards compatible code, remove with 3.4 498 // check if most of the properties that were added in Mai'11 were set to their default values, then we want to reset them to our default values 499 if (xAxisMinimumAuto == default(bool) && xAxisMaximumAuto == default(bool) 500 && yAxisMinimumAuto == default(bool) && yAxisMaximumAuto == default(bool) 501 && secondXAxisMinimumAuto == default(bool) && secondXAxisMaximumAuto == default(bool) 502 && secondYAxisMinimumAuto == default(bool) && secondYAxisMaximumAuto == default(bool) 503 && titleColor == default(Color) && axisTitleColor == default(Color) 504 && secondXAxisTitle == default(string) 505 && xAxisMinimumFixedValue == default(double) && xAxisMaximumFixedValue == default(double) 506 && yAxisMinimumFixedValue == default(double) && yAxisMaximumFixedValue == default(double) 507 && secondXAxisMinimumFixedValue == default(double) && secondXAxisMaximumFixedValue == default(double) 508 && secondYAxisMinimumFixedValue == default(double) && secondYAxisMaximumFixedValue == default(double)) { 509 titleColor = Color.Black; 510 axisTitleColor = Color.Black; 511 this.secondXAxisTitle = string.Empty; 512 this.xAxisMinimumAuto = true; 513 this.xAxisMinimumFixedValue = double.NaN; 514 this.xAxisMaximumAuto = true; 515 this.xAxisMaximumFixedValue = double.NaN; 516 this.secondXAxisMinimumAuto = true; 517 this.secondXAxisMinimumFixedValue = double.NaN; 518 this.secondXAxisMaximumAuto = true; 519 this.secondXAxisMaximumFixedValue = double.NaN; 520 this.yAxisMinimumAuto = true; 521 this.yAxisMinimumFixedValue = double.NaN; 522 this.yAxisMaximumAuto = true; 523 this.yAxisMaximumFixedValue = double.NaN; 524 this.secondYAxisMinimumAuto = true; 525 this.secondYAxisMinimumFixedValue = double.NaN; 526 this.secondYAxisMaximumAuto = true; 527 this.secondYAxisMaximumFixedValue = double.NaN; 528 #endregion 529 } 530 } 109 531 } 110 532 } -
branches/PersistenceSpeedUp/HeuristicLab.Analysis/3.3/HeuristicLab.Analysis-3.3.csproj
r5933 r6760 138 138 <Compile Include="HeuristicLabAnalysisPlugin.cs" /> 139 139 <Compile Include="Properties\AssemblyInfo.cs" /> 140 <Compile Include="QualityAnalysis\QualityDistributionAnalyzer.cs" /> 141 <Compile Include="QualityAnalysis\ScaledQualityDifferenceAnalyzer.cs" /> 140 142 <Compile Include="ValueAnalysis\MinAverageMaxValueAnalyzer.cs" /> 141 143 <Compile Include="ValueAnalysis\MinAverageMaxValueCalculator.cs" /> -
branches/PersistenceSpeedUp/HeuristicLab.Analysis/3.3/HeuristicLabAnalysisPlugin.cs.frame
r6099 r6760 26 26 /// Plugin class for HeuristicLab.Analysis plugin. 27 27 /// </summary> 28 [Plugin("HeuristicLab.Analysis", "3.3. 4.$WCREV$")]28 [Plugin("HeuristicLab.Analysis", "3.3.5.$WCREV$")] 29 29 [PluginFile("HeuristicLab.Analysis-3.3.dll", PluginFileType.Assembly)] 30 30 [PluginDependency("HeuristicLab.ALGLIB", "3.1")] -
branches/PersistenceSpeedUp/HeuristicLab.Analysis/3.3/MultidimensionalScaling/MultidimensionalScaling.cs
r5933 r6760 68 68 /// In every iteration it tries to find the best location for every item.</param> 69 69 /// <returns>A Nx2 matrix where the first column represents the x- and the second column the y coordinates.</returns> 70 public static DoubleMatrix KruskalShepard(DoubleMatrix dissimilarities, DoubleMatrix coordinates, int maximumIterations = 20) {70 public static DoubleMatrix KruskalShepard(DoubleMatrix dissimilarities, DoubleMatrix coordinates, int maximumIterations = 10) { 71 71 int dimension = dissimilarities.Rows; 72 72 if (dimension != dissimilarities.Columns || coordinates.Rows != dimension) throw new ArgumentException("The number of coordinates and the number of rows and columns in the dissimilarities matrix do not match."); … … 75 75 double epsf = 0; 76 76 double epsx = 0; 77 int maxits = 100; 78 alglib.mincgstate state = null; 79 alglib.mincgreport rep; 77 int maxits = 0; 80 78 79 alglib.minlmstate state; 80 alglib.minlmreport rep; 81 81 for (int iterations = 0; iterations < maximumIterations; iterations++) { 82 82 bool changed = false; … … 85 85 86 86 try { 87 if ((iterations == 0 && i == 0)) { 88 alglib.mincgcreate(c, out state); 89 alglib.mincgsetcond(state, epsg, epsf, epsx, maxits); 90 } else { 91 alglib.mincgrestartfrom(state, c); 92 } 93 alglib.mincgoptimize(state, StressGradient, null, new Info(coordinates, dissimilarities, i)); 94 alglib.mincgresults(state, out c, out rep); 87 alglib.minlmcreatevj(dimension - 1, c, out state); 88 alglib.minlmsetcond(state, epsg, epsf, epsx, maxits); 89 alglib.minlmoptimize(state, StressFitness, StressJacobian, null, new Info(coordinates, dissimilarities, i)); 90 alglib.minlmresults(state, out c, out rep); 95 91 } catch (alglib.alglibexception) { } 96 92 if (!double.IsNaN(c[0]) && !double.IsNaN(c[1])) { … … 105 101 } 106 102 107 // computes the function and the gradient of the raw stress function. 108 private static void StressGradient(double[] x, ref double func, double[] grad, object obj) { 109 func = 0; grad[0] = 0; grad[1] = 0; 103 private static void StressFitness(double[] x, double[] fi, object obj) { 110 104 Info info = (obj as Info); 111 105 for (int i = 0; i < info.Coordinates.Rows; i++) { 112 double c = info.Dissimilarities[info.Row, i]; 106 double f = Stress(x, info.Dissimilarities[info.Row, i], info.Coordinates[i, 0], info.Coordinates[i, 1]); 107 if (i < info.Row) fi[i] = f; 108 else if (i > info.Row) fi[i - 1] = f; 109 } 110 } 111 112 private static void StressJacobian(double[] x, double[] fi, double[,] jac, object obj) { 113 Info info = (obj as Info); 114 int idx = 0; 115 for (int i = 0; i < info.Coordinates.Rows; i++) { 113 116 if (i != info.Row) { 117 double c = info.Dissimilarities[info.Row, i]; 114 118 double a = info.Coordinates[i, 0]; 115 119 double b = info.Coordinates[i, 1]; 116 func += Stress(x, c, a, b); 117 grad[0] += ((2 * x[0] - 2 * a) * Math.Sqrt(x[1] * x[1] - 2 * b * x[1] + x[0] * x[0] - 2 * a * x[0] + b * b + a * a) - 2 * c * x[0] + 2 * a * c) / Math.Sqrt(x[1] * x[1] - 2 * b * x[1] + x[0] * x[0] - 2 * a * x[0] + b * b + a * a); 118 grad[1] += ((2 * x[1] - 2 * b) * Math.Sqrt(x[1] * x[1] - 2 * b * x[1] + x[0] * x[0] - 2 * a * x[0] + b * b + a * a) - 2 * c * x[1] + 2 * b * c) / Math.Sqrt(x[1] * x[1] - 2 * b * x[1] + x[0] * x[0] - 2 * a * x[0] + b * b + a * a); 120 double f = Stress(x, c, a, b); 121 fi[idx] = f; 122 jac[idx, 0] = 2 * (x[0] - a) * (Math.Sqrt((a - x[0]) * (a - x[0]) + (b - x[1]) * (b - x[1])) - c) / Math.Sqrt((a - x[0]) * (a - x[0]) + (b - x[1]) * (b - x[1])); 123 jac[idx, 1] = 2 * (x[1] - b) * (Math.Sqrt((a - x[0]) * (a - x[0]) + (b - x[1]) * (b - x[1])) - c) / Math.Sqrt((a - x[0]) * (a - x[0]) + (b - x[1]) * (b - x[1])); 124 idx++; 119 125 } 120 126 } -
branches/PersistenceSpeedUp/HeuristicLab.Analysis/3.3/Properties/AssemblyInfo.frame
r6099 r6760 54 54 // by using the '*' as shown below: 55 55 [assembly: AssemblyVersion("3.3.0.0")] 56 [assembly: AssemblyFileVersion("3.3. 4.$WCREV$")]56 [assembly: AssemblyFileVersion("3.3.5.$WCREV$")] -
branches/PersistenceSpeedUp/HeuristicLab.Analysis/3.3/Tests/MultidimensionalScalingTest.cs
r5938 r6760 21 21 22 22 using System; 23 using System.Globalization; 23 24 using HeuristicLab.Data; 24 25 using Microsoft.VisualStudio.TestTools.UnitTesting; … … 42 43 distances3[0, 2] = distances3[2, 0] = 6.4; 43 44 distances3[1, 2] = distances3[2, 1] = 5; 44 stress = MultidimensionalScaling.CalculateNormalizedStress(distances3, 45 MultidimensionalScaling.KruskalShepard(distances3)); 45 DoubleMatrix coords3 = MultidimensionalScaling.KruskalShepard(distances3); 46 Console.WriteLine("Coordinates: "); 47 Console.WriteLine("A = ({0}, {1}), B = ({2}, {3}), C = ({4}, {5})", coords3[0, 0], coords3[0, 1], coords3[1, 0], coords3[1, 1], coords3[2, 0], coords3[2, 1]); 48 stress = MultidimensionalScaling.CalculateNormalizedStress(distances3, coords3); 49 Console.WriteLine("Stress = " + stress.ToString(CultureInfo.InvariantCulture.NumberFormat)); 46 50 Assert.IsTrue(stress < 0.1); 47 51 DoubleMatrix distances4 = new DoubleMatrix(4, 4);
Note: See TracChangeset
for help on using the changeset viewer.